欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 035集——BOUNDARY获取图形外轮廓(CAD—C#二次开发入门)

035集——BOUNDARY获取图形外轮廓(CAD—C#二次开发入门)

2025/8/10 2:21:57 来源:https://blog.csdn.net/yongshiqq/article/details/143736669  浏览:    关键词:035集——BOUNDARY获取图形外轮廓(CAD—C#二次开发入门)

通过使用类似命令行输入boundary的方法获取图形外轮廓,使用函数如下:

var pls = Z.ed.TraceBoundary(new Point3d(box[0] - 100, box[1]-100,0),true);

效果如下:

 public void XX(){Point3d pt = new Point3d(0, 0, 0);List<Curve> ents = Z.db.SelectEntities<Curve>();//Z.DrawBigBox<Curve>(ents);List<double> box = Z.Getbox<Curve>(ents);if (ents == null || ents.Count == 0) return;Entity temp=  Z.DrawBigBoxAdd(ents);List<Entity> plr = new List<Entity>();  //   var pls = Z.ed.TraceBoundary(new Point3d(box[2]+ Math.Abs(box[2]), box[3] + Math.Abs(box[3]),0),true);//var pls = Z.ed.TraceBoundary(new Point3d(0,0, 0), true);foreach (Entity item in pls)//不能var,否则没bounds属性{//if (  Math.Abs( item.Bounds.Value.MinPoint.X - (box[0] - 2.0*Math.Abs(box[0]))) > 0.000001)//{item.Color = Color.FromRgb(255, 0, 0);plr.Add(item);//}}Z.db.AddEntityToModeSpace(plr.ToArray());foreach (var item in plr){Point3dCollection pos = new Point3dCollection();//创建点集合temp.IntersectWith(item, Intersect.OnBothOperands, pos, IntPtr.Zero, IntPtr.Zero);if (pos.Count>0){Z.db.Erase(item);}}Z.db.Erase(temp);}
   public static Entity DrawBigBoxAdd(List<Curve> entities){//传进来一个list,画list的总包围盒List<double> lis = new List<double>();if (entities.Count == 0){return null;}double minx = entities.Min(x => x.Bounds.Value.MinPoint.X - 2.0 * Math.Abs(x.Bounds.Value.MinPoint.X));double miny = entities.Min(x => x.Bounds.Value.MinPoint.Y - 2.0 * Math.Abs(x.Bounds.Value.MinPoint.Y));double maxx = entities.Max(x => x.Bounds.Value.MaxPoint.X + 2.0 * Math.Abs(x.Bounds.Value.MaxPoint.X));double maxy = entities.Max(x => x.Bounds.Value.MaxPoint.Y + 2.0 * Math.Abs(x.Bounds.Value.MaxPoint.Y));lis.Add(minx);lis.Add(miny);lis.Add(maxx);lis.Add(maxy);Autodesk.AutoCAD.DatabaseServices.Polyline pl = new Autodesk.AutoCAD.DatabaseServices.Polyline();pl.AddVertexAt(0, new Point2d(minx, miny), 0, 0, 0);pl.AddVertexAt(0, new Point2d(maxx, miny), 0, 0, 0);pl.AddVertexAt(0, new Point2d(maxx, maxy), 0, 0, 0);pl.AddVertexAt(0, new Point2d(minx, maxy), 0, 0, 0);pl.Closed = true;pl.ColorIndex = 1;db.AddEntityToModeSpace(pl);return pl;}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词