首页 > 编程语言 >AutoCAD C# 判断多边形与点的位置关系

AutoCAD C# 判断多边形与点的位置关系

时间:2024-09-16 09:24:43浏览次数:1  
标签:AutoCAD 多边形 C# poly return ppr var new

书上说,射线法和叉乘法感觉都不完整

 

下面我分享我写的基于AutoCAD BREP算法

 

 var ed = acApp.Application.DocumentManager.MdiActiveDocument.Editor;
 var peo = new PromptEntityOptions("Select a PolyLine : ");
 peo.SetRejectMessage("Only PolyLine");
 peo.AddAllowedClass(typeof(Polyline), true);
 var per = ed.GetEntity(peo);
 if (per.Status != PromptStatus.OK) return;
 var ppo = new PromptPointOptions("指定测试点");
 var ppr = ed.GetPoint(ppo);
 if (ppr.Status != PromptStatus.OK) return;
 var rtn = "无法检测";
 using (var tr = per.ObjectId.Database.TransactionManager.StartTransaction())
 {
     var poly = tr.GetObject(per.ObjectId, OpenMode.ForRead) as Polyline;//一定要读,不要写
     //看点是否在曲线上/
     var ptOnPolyline = poly.GetClosestPointTo(ppr.Value, false);
     if (ptOnPolyline.DistanceTo(ppr.Value) < 0.001)
     {
         acApp.Application.ShowAlertDialog(PointContainment.OnBoundary.ToString());
         return;
     }
     var pts = Enumerable .Range(0, poly.NumberOfVertices) .Select(i => poly.GetPoint3dAt(i));
     if (!poly.Closed && ! pts.FirstOrDefault().IsEqualTo(pts.LastOrDefault(),new Tolerance(0.0001,0.0001)))
     {
         acApp.Application.ShowAlertDialog("多段线不封闭无法检测");
         return;
     }
     //转为面域
     var reg = Autodesk.AutoCAD.DatabaseServices.Region.CreateFromCurves(new DBObjectCollection { poly }).Cast<Autodesk.AutoCAD.DatabaseServices.Region>().FirstOrDefault();
     using (var brep = new Brep(reg))
     {
         if (brep != null)
         {
             using (var ent = brep.GetPointContainment(ppr.Value, out PointContainment resultt))
             {
                 rtn = ent is Autodesk.AutoCAD.BoundaryRepresentation.Face ? PointContainment.Inside.ToString() : resultt.ToString();
             }
         }
     }
 }
 acApp.Application.ShowAlertDialog(rtn);

 

标签:AutoCAD,多边形,C#,poly,return,ppr,var,new
From: https://www.cnblogs.com/NanShengBlogs/p/18415985

相关文章

  • C++ 左值和右值
    一般而言,一个左值表达式表示的是一个对象的身份,而一个右值表达式表示的是对象的值。我们不能将其绑定到要求转换的表达式、字面常量或是返回右值的表达式(参见2.3.1节,第46页)。右值引用有着完全相反的绑定特性:我们可以将一个右值引用绑定到这类表达式上,但不能将一个右值引用......
  • 常用的运维工具:文件传输工具详解(SCP, SFTP)
    在信息技术(IT)运维中,文件传输是日常工作中不可或缺的一部分。运维工程师需要高效、安全地在不同服务器之间传输文件,以确保系统的正常运行和数据的完整性。本文将详细介绍两种常用的文件传输工具——SCP(SecureCopyProtocol)和SFTP(SecureFileTransferProtocol),帮助读者更好......
  • Zero-Shot,One-Shot,Few-Shot,In-Context Learning
    Zero-Shot,One-Shot,Few-Shot,In-ContextLearninghttps://blog.csdn.net/weixin_44212848/article/details/139902394In-ContextLearning定义:In-contextlearning是一种在不显式微调模型权重的情况下,通过给模型提供相关的上下文信息(例如提示或样本)来实现模型性能提升的方法。GPT......
  • CTF——简单的《MICS》
    文章目录一、MICS1、MISC-LSB2、MISC-循环解压3、MISC-一个不同的压缩包4、MISC-异性相吸5、MISC-仔细找找6、MISC-再来一题隐写7、MISC-找找吧8、MISC-这是一张单纯的图片9、MISC-真假flag10、MISC-真正的黑客才可以看到本质11、MISC-追象者12、MICS-鸡蛋别放在一起......
  • ICM20948 DMP代码详解(24)
    接前一篇文章:ICM20948DMP代码详解(23) 上一回解析完了inv_icm20948_set_lowpower_or_highperformance函数,本回回到inv_icm20948_initialize_lower_driver函数中,继续往下解析。为了便于理解和回顾,再次贴出inv_icm20948_initialize_lower_driver函数源码,在EMD-Core\sources\Inv......
  • ICM20948 DMP代码详解(23)
    接前一篇文章:ICM20948DMP代码详解(22) 上一回解析完了inv_icm20948_wakeup_mems函数,本回回到inv_icm20948_initialize_lower_driver函数中,继续往下解析。为了便于理解和回顾,再次贴出inv_icm20948_initialize_lower_driver函数源码,在EMD-Core\sources\Invn\Devices\Drivers\IC......
  • VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Serve
    VMwareESXi7.0U3qmacOSUnlocker集成驱动版更新OEMBIOS2.7支持WindowsServer2025VMwareESXi7.0U3qmacOSUnlocker&OEMBIOS2.7集成网卡驱动和NVMe驱动(集成驱动版)ESXi7.0U3标准版集成Intel网卡、RealtekUSB网卡和NVMe驱动请访问原文链接:h......
  • [ACTF2020 新生赛]Upload
    启动靶机,发现有前端验证先绕过前端验证,在burp中尝试发现验证在文件名后缀,且会重命名文件名发现.ini能上传但是会被重命名,既然不像前端显示只有三种格式能上传,这里我们寻找能绕过的后缀尝试发现phtml能上传成功//PHTML扩展名是PHP的一个模块,它允许在HTML文件中使用PHP......
  • C++-练习-40
    题目:编写一个程序,她每次读取一个单词,知道用户只输入q。然后,该程序指出有多少个单词以元音大头,而多少个单词以辅音大头,还有多少个单词不属于着两类。源代码:#include<iostream>#include<cctype>//元音:A、E、I、O、Uintmain(){ usingnamespacestd; charword[20];......
  • Cisco Jabber 15.0 发布下载 - 面向企业的多合一通信工具
    CiscoJabber15.0(Andriod,iOS,macOS,Windows)-面向企业的多合一通信工具即时消息、语音和视频通话、语音邮件、桌面共享、会议和在线状态请访问原文链接:https://sysin.org/blog/cisco-jabber-15/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科Jabber......