Autocad 2011 vba和外部参照

时间:2010-11-24 17:41:37

标签: vba autocad

我使用以下方法在另一个中插入外部dwg文件:

Set xrefInserted = ThisDrawing.ModelSpace.AttachExternalReference(refDwgName, refDwgName, insertionPnt, 1, 1, 1, 0, False)
xrefInserted.Update

这是作为外部块插入的,所以我将它绑定到我的绘图:

        For Each tempBlock In ThisDrawing.Blocks
           If tempBlock.IsXRef Then
               If (InStr(1, UCase(tempBlock.name), "MAJ_MATRICE", vbTextCompare)) Then
                    tempBlock.Bind (False)
                   Exit For
               End If
            End If
        Next

现在我要爆炸它,首先是AcadBlock似乎没有和爆炸方法,只有AcadBlockReference。

所以我寻找参考:

Dim ent As AcadEntity
Dim blockRefObj As AcadBlockReference

    For Each ent In ThisDrawing.ModelSpace
       If TypeOf ent Is AcadBlockReference Then
           If (InStr(1, UCase(ent.name), "MAJ_MATRICE", vbTextCompare)) Then
                Set blockRefObj = ent
                blockRefObj.Explode
                Exit For
           End If
       End If
    Next

问题在于

  

blockRefObj.Explode

失败它告诉我“无效-2145386494”。

我调试了代码并且我相信问题是因为AcadBlockReference仍然是AcadExternalReference类型,并且不可能爆炸外部引用。

如果我在回到绘图后重新运行代码(函数调用已经结束)并且我查找了AcadBlockReference,它现在是AcadBlockReference类型,我可以正确地爆炸它。

我似乎无法在同一个函数中执行它,与绑定它的执行相同。

1 个答案:

答案 0 :(得分:0)

我不明白你为什么不开始使用thisdrawing.modelspace.insertblock? 这首先返回一个acadblockreference对象!