我使用的是C#的ActiveX方法操作AutoCAD的,同样的遍历实体方法,在AutoCAD之外与载入AutoCAD中有着天壤之别,当图元数多的时候非常慢。我的代码如下: foreach (dbx.AcadEntity acadBF in doc.ModelSpace) { if (acadBF.EntityName == "AcDbBlockReference") { dbx.AcadBlockReference blkRef = (dbx.AcadBlockReference)acadBF; if (blkRef.Name.ToUpper() == "BTL") { object[] atts = (object[])blkRef.GetAttributes(); //这锟梢匀〉锰崾咀侄?lt;/p> for (int i = 0; i < atts.Length; i++) { dbx.AcadAttributeReference realattr = (dbx.AcadAttributeReference)atts; if (realattr.TagString == attrstr) { realattr.TextString = valuestr; doc.Save(); doc.Close(true,false); //app.Quit(); MessageBox.Show("finish!"); return; } } } } } 我这样做是为了自动根据参数向一个图文件中填写块属性的,所以速度不能太慢。我现在正想做一个ARX命令作为填写属性的方法,在我的程序中调用。不知高手们还有没有更好的建议,比如能快速的找到图纸中的指定块(AcadBlockReference对象)。谢谢!
|