@gile非常感谢2 match,感谢您的帮助,这已经解决了
- [CommandMethod("xx")]
- public static void xxCommand()
- {
- var doc = acApp.DocumentManager.MdiActiveDocument;
- var db = doc.Database;
- var ed = doc.Editor;
- //SELECT FOR BLOCK REFERENCE
- var pso = new PromptSelectionOptions();
- pso.MessageForAdding = "\nSelect Block Reference :";
- var filter = new SelectionFilter(new[] { new TypedValue(0, "INSERT") });
- var psr = ed.GetSelection(pso, filter);
- if (psr.Status != PromptStatus.OK)
- {
- acApp.ShowAlertDialog("None block reference selected !");
- return;
- }
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- var btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
- foreach (ObjectId id in psr.Value.GetObjectIds())
- {
- var br = (BlockReference)id.GetObject(OpenMode.ForRead);
- var objCol = new DBObjectCollection();
- br.Explode(objCol);
- objCol
- .Cast()
- .Select(p => ((Curve)tr.GetObject(p.ObjectId, OpenMode.ForRead)))
- .Where(x => x.Area > 0)
- .OrderByDescending(z => z.Area);
- var curve = objCol[0] as Curve;
- AddLayer("Layerhelper", 0, 82,false);
- curve.ColorIndex = 253;
- btr.AppendEntity(curve);
- tr.AddNewlyCreatedDBObject(curve, true);
- }
- tr.Commit();
- AddLayer("0", 0, 0, false);
- }
- }
|