我对Delphi比较熟悉,但初学AutoCAD二次开发。 需求:提取CAD图纸中的标题栏。 开发环境:Delphi6.0 + AutoCAD2006 设计:1、创建块,在块中用程序自动绘制标题栏。将图号,图纸名等信息加入块的属 性。插入CAD中 2、遍历CAD模块空间的对象,找到“标题栏”块,读取或修改属性。 问题现象及处理过程: var TDoc_AutoCAD: acadDocument; varAttribute:Variant; objBlDef:AcadBlock; objRefBlDef:AcadBlockReference; i:integer; for i:=0 to TDoc_AutoCAD.ModelSpace.Count -1 do begin objRefBlDef:=TDoc_AutoCAD.ModelSpace.Item(i); objRefBlDef.GetAttributes; end; 编译时报错:Incompatible types: 'IAcadEntity' and 'IAcadBlockReference' ----------------------------------------------------------------------------------- 我估计时类型错误,所以改为强制转换 for i:=0 to TDoc_AutoCAD.ModelSpace.Count -1 do begin objRefBlDef:=TDoc_AutoCAD.ModelSpace.Item(i); objRefBlDef.GetAttributes; end; 编译通过,但系统运行到 objRefBlDef.GetAttributes;报错。 raised exception class EAccessViolation with message 'Access violation at address 7875512 in module 'RPCRT14.dll',Read of address 000000',Process Stopped.use step or Run to Continue. ---------------------------------------------------------------------------------- 如果将objRefBlDel定义改为AcadEntity类型,又没有GetAttributes方法, 也就是我没法获得参照块的属性。 ---------------------------------------------------------------------------------- 我改为VB6.0将上述代码改写 for each objRefBlDef in TDoc_AutoCAD.ModelSpace objRefBlDef.GetAttributes; next 运行正常。