代码之家  ›  专栏  ›  技术社区  ›  Enriquev

AutoCAD 2011 VBA和外部参照

  •  0
  • Enriquev  · 技术社区  · 14 年前

    我将使用以下命令在另一个文件中插入外部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似乎没有和explode方法,只有acadblock引用。

    所以我寻找参考资料:

    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
    

    问题是

    块参考对象分解

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

    我调试了代码,认为问题在于acadBlockReference仍然是acadexInternalReference类型,并且不可能分解外部引用。

    如果我在返回到绘图后重新运行代码(函数调用已结束),并查找acadblockreference,它现在是acadblockreference类型,我可以正确地分解它。

    我只是不能像绑定它那样在同一个函数、同一个执行中执行它。

    1 回复  |  直到 14 年前
        1
  •  0
  •   SoftWorks    14 年前

    我不明白为什么你不从这个drawing.modelspace.insertblock开始? 这首先返回一个acadBlockReference对象!