0

これを使用して、外部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タイプになり、正しく展開できます。

バインドと同じ実行で、同じ関数でそれを実行できないようです。

4

1 に答える 1

0

thisdrawing.modelspace.insertblockを使用して開始しない理由がわかりませんか?これにより、最初にacadblockreferenceオブジェクトが返されます。

于 2010-11-28T09:28:11.677 に答える