CAD精简多段线顶点、优化、删除多余、重复顶点——CAD c#二次开发
附部分代码如下:
public static void Pl精简(){Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;Database db = doc.Database;Editor ed = doc.Editor;var plOrigon = db.SelectCurve("\n选择多段线:");if (plOrigon == null) return;else if (plOrigon is Polyline2d){Polyline pl = new Polyline();var pl2d = plOrigon.Clone() as Polyline2d;if (pl2d.PolyType != Poly2dType.SimplePoly) pl2d.PolyType = Poly2dType.SimplePoly; //将二维多段线转换为简单多段线pl.ConvertFrom(pl2d, false);pl.ColorIndex = 1;var plid = db.AddEntityToModeSpace(pl);var resultId = Simplify(plid, 0.1);//0.01List<ObjectId> 选中亮显s = new List<ObjectId>();if (resultId != null){选中亮显s.Add(resultId); }ed.SetImpliedSelection(选中亮显s.ToArray());db.Erase(pl);}else if (plOrigon is Polyline pl){ObjectId plid = pl.ObjectId;using (var tr = db.TransactionManager.StartTransaction()){ plid = pl.ObjectId; }var resultId = Simplify(plid, 0.1);//0.01List<ObjectId> 选中亮显s = new List<ObjectId>();if (resultId != null){ 选中亮显s.Add(resultId); }ed.SetImpliedSelection(选中亮显s.ToArray());}else{ed.WriteMessage("\n仅支持多段线或二维多段线");return;}}