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

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

ID:51675122

大小:35.42 KB

页数:5页

时间:2020-03-14

CAD获取一个图形上所有直线的交点.docx_第1页
CAD获取一个图形上所有直线的交点.docx_第2页
CAD获取一个图形上所有直线的交点.docx_第3页
CAD获取一个图形上所有直线的交点.docx_第4页
CAD获取一个图形上所有直线的交点.docx_第5页
资源描述:

《CAD获取一个图形上所有直线的交点.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、CAD获取一个图形上所有直线的交点纯数学运算的方法做的通过构建二元一次方程然后判断相交点是否在线上...代码完全可行哈using (var tr = doc.TransactionManager.StartTransaction()) {  var lines = new List();  foreach(ObjectId id in res.Value.GetObjectIds())  {    lines.Add((Line)tr.GetObject(id, OpenMode.ForRead)); }   List pts = new Lis

2、t(); 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);           CurveCur

3、veIntersector3d cc3d = new CurveCurveIntersector3d(ls1, ls2, Vector3d.ZAxis);             if (cc3d.NumberOfIntersectionPoints == 1)                 {                     pts.Add(cc3d.GetIntersectionPoint(0));                    }        }  } BlockTable bt = tr.GetObject(db.BlockTableId, Ope

4、nMode.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.Com

5、mit();} }另一个可行切简洁的代码 [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 != 

6、PromptStatus.OK) return;using (var tr = doc.TransactionManager.StartTransaction()){  var lines = new List();  foreach(ObjectId id in res.Value.GetObjectIds())  {   lines.Add((Line)tr.GetObject(id, OpenMode.ForRead));  }List pts = new List();for (int m = 0; m < lines.

7、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 CurveCurv

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。