不说了,直接上代码,参照kean的博客吗,这是添加边界的代码 https://www.keanw.com/2012/10/querying-for-xclip-information-inside-autocad-using-net.html
1 using Autodesk.AutoCAD.ApplicationServices.Core; 2 using Autodesk.AutoCAD.DatabaseServices; 3 using Autodesk.AutoCAD.DatabaseServices.Filters; 4 using Autodesk.AutoCAD.EditorInput; 5 using Autodesk.AutoCAD.Runtime; 6 using System; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System.Text; 10 using System.Threading.Tasks; 11 12 namespace ClassLibrary1 13 { 14 public class Class1 15 { 16 const string filterDictName = "ACAD_FILTER"; 17 const string spatialName = "SPATIAL"; 18 [CommandMethod("DXC")] 19 static public void DetectXClip() 20 { 21 var doc = Application.DocumentManager.MdiActiveDocument; 22 var ed = doc.Editor; 23 // Ask for an xclipped xref to be selected 24 var peo =new PromptEntityOptions( " Select xclipped block or xref" ); 25 peo.SetRejectMessage("Must be a block or xref."); 26 peo.AddAllowedClass(typeof(BlockReference), false); 27 var per = ed.GetEntity(peo); 28 if (per.Status != PromptStatus.OK)return; 29 var tr = doc.TransactionManager.StartTransaction(); 30 using (tr) 31 { 32 // Open the selected BlockReference 33 var br = tr.GetObject(per.ObjectId, OpenMode.ForRead) as BlockReference; 34 // To save multiple codepaths with the same message 35 // ("No clipping information found"), we'll use a flag to 36 // see whether we've found anything 37 // It should always be a block reference, but it might 38 // not have an extension dictionary 39 if ( br != null && br.ExtensionDictionary != ObjectId.Null) 40 { 41 // The extension dictionary needs to contain a nested 42 // dictionary called ACAD_FILTER 43 var extdict =tr.GetObject(br.ExtensionDictionary, OpenMode.ForRead) as DBDictionary; 44 if (extdict != null && extdict.Contains(filterDictName)) 45 { 46 var fildict =tr.GetObject(extdict.GetAt(filterDictName), OpenMode.ForWrite ) as DBDictionary; 47 if (fildict != null) fildict.Erase(); 48 } 49 } 50 tr.Commit(); 51 doc.Editor.Regen(); 52 } 53 54 } 55 56 } 57 }
执行前
执行后,相当于执行命令, xclip,选择外部参照,delete