【发布时间】:2017-11-21 22:27:54
【问题描述】:
我有一个属性制表符分隔的文本文件,我想将其应用于多张图纸。为了不让 AutoCAD 弹出并说“找不到一个或多个块,您要以交互方式选择数据吗?” ,我必须使用块的 HANDLE 属性。在给定的绘图上,如果我使用 ATTOUT 查看块的句柄,我会得到一个值,例如 '8B3F。使用带有该句柄的 ATTIN 有效。将此应用于具有不同句柄的多个图形,如果每个图形,我必须获取每个块的句柄。这是我的代码 - 将句柄写入 excel 文档。
xlbook = xlapp.Workbooks.Open(attInText,, False)
xlsheet = xlbook.Worksheets(dwgName)
Dim Handle As String = ""
'get the handle to the CHS11x17TB title block
For Each blk As AutoCAD.AcadBlock In cadDOC.Blocks
If blk.Name.ToUpper = "CHS11X17TB" Then
Handle = blk.Handle
xlsheet.Cells(2, "A").value = Handle
Exit For
End If
Next
现在,问题是句柄与使用 ATTOUT 生成的句柄不同 - 我将使用代码得到类似 '75B0 的东西。为什么你认为 ATTOUT 给了我一个不同于循环遍历绘图块的句柄?我会注意到我的块在纸空间中,如果这有什么不同的话。如果无法回答这个问题,我对任何替代解决方案感兴趣,可以让我的块得到处理。
【问题讨论】:
-
您是要遍历块定义还是块引用?
AutoCAD.AcadBlock是定义。每个块将有一个定义,并且每个块可能有多个 BlockReference。
标签: vb.net autocad autocad-plugin