收藏 分销(赏)

CAD获取一个图形上所有直线的交点.docx

上传人:s4****5z 文档编号:8924426 上传时间:2025-03-08 格式:DOCX 页数:5 大小:47.71KB
下载 相关 举报
CAD获取一个图形上所有直线的交点.docx_第1页
第1页 / 共5页
CAD获取一个图形上所有直线的交点.docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述
CAD获取一个图形上所有直线的交点 纯数学运算的方法做的 通过构建二元一次方程 然后 判断相交点是否在线上...代码完全可行哈 using (var tr = doc.TransactionManager.StartTransaction())  {   var lines = new List<Line>();   foreach(ObjectId id in res.Value.GetObjectIds())   {     lines.Add((Line)tr.GetObject(id, OpenMode.ForRead));  }    List<Point3d> pts = new List<Point3d>();  for (int m = 0; m < lines.Count; m++) {    LineSegment3d ls1 = new LineSegment3d(lines[m].StartPoint, lines[m].EndPoint);     for (int n = m + 1; n < lines.Count; n++)       {          LineSegment3d ls2 = new LineSegment3d(lines[n].StartPoint, lines[n].EndPoint);            CurveCurveIntersector3d cc3d = new CurveCurveIntersector3d(ls1, ls2, Vector3d.ZAxis);              if (cc3d.NumberOfIntersectionPoints == 1)                  {                      pts.Add(cc3d.GetIntersectionPoint(0));                     }         }   }  BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;   BlockTableRecord btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;   foreach (var pt in pts)   {     Circle c = new Circle(pt, Vector3d.ZAxis, 1);         btr.AppendEntity(c);          tr.AddNewlyCreatedDBObject(c, true);      }     tr.Commit(); }  } 另一个可行切简洁的代码  [CommandMethod("tx1")] public static void CrossCAD() { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; var sf = new SelectionFilter(new TypedValue[]{ new TypedValue(0, "line")}); var res = ed.SelectAll(sf); if (res.Status != PromptStatus.OK) return; using (var tr = doc.TransactionManager.StartTransaction()) {   var lines = new List<Line>();   foreach(ObjectId id in res.Value.GetObjectIds())   {    lines.Add((Line)tr.GetObject(id, OpenMode.ForRead));   } List<Point3d> pts = new List<Point3d>(); for (int m = 0; m < lines.Count; m++) { LineSegment3d ls1 = new LineSegment3d(lines[m].StartPoint, lines[m].EndPoint); for (int n = m + 1; n < lines.Count; n++) { LineSegment3d ls2 = new LineSegment3d(lines[n].StartPoint, lines[n].EndPoint); CurveCurveIntersector3d cc3d = new CurveCurveIntersector3d(ls1, ls2, Vector3d.ZAxis); if (cc3d.NumberOfIntersectionPoints == 1)  {  pts.Add(cc3d.GetIntersectionPoint(0));  }  }  } BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord; foreach (var pt in pts) {  Circle c = new Circle(pt, Vector3d.ZAxis, 1); btr.AppendEntity(c);  tr.AddNewlyCreatedDBObject(c, true); } tr.Commit(); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服