これを使用して、外部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タイプになり、正しく展開できます。
バインドと同じ実行で、同じ関数でそれを実行できないようです。