using System; using Autodesk.AutoCAD.Interop; using dbx=Autodesk.AutoCAD.Interop.Common; namespace ConsoleApplication { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { using(AutoCADConnector connector=new AutoCADConnector()) { string progid="ObjectDBX.AxDbDocument.16"; AcadApplication acadApp=connector.Application; Autodesk.AutoCAD.Interop.Common.AxDbDocument dbxDoc; dbxDoc=(Autodesk.AutoCAD.Interop.Common.AxDbDocument)acadApp.GetInterfaceObject(progid); dbxDoc.Open(@"f:\Test.dwg",null); foreach(Autodesk.AutoCAD.Interop.Common.AcadEntity entity in dbxDoc.ModelSpace) { if(entity.EntityName=="AcDbBlockReference") {//判断实体是否是块参照 dbx.AcadBlockReference blkRef; blkRef=(dbx.AcadBlockReference)entity; //将是块参照的实体强制转换为块参照类型 object[] atts=(object[])blkRef.GetAttributes(); //获取块参照中的属性(为对象类型) for(int i=0;i<atts.Length;i++)//遍历块参照属性 { dbx.AcadAttributeReference att; //dbx.AcadAttributeReference att; att=(dbx.AcadAttributeReference)atts; //将块参照属性(对象类型)强制转换为块参照属性类型 Console.WriteLine("Tag:{0}\tValue:{1}\n",att.TagString,att.TextString); //显示块参照属性的Tag和Text的值 } } } Console.ReadLine(); } } } } 添加的应用为AUTOCAD 和AXDBLib 如果用断点察看entity.EntityName的值是不存在的 这是怎么回事啊? 另外用网上很多朋友介绍的方法无法用ilasm编译成Interop.AutoCAD.dll文件,有完整的程序给我发过来也行, 在此谢谢大家。我的邮箱:sgt24680@163.com |