Я вставляю внешний файл 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, и я могу правильно его взорвать.
Кажется, я просто не могу сделать это в той же функции, в том же исполнении, что и привязка.