AutoCAD 2011 VBA и внешние ссылки - PullRequest
0 голосов
/ 24 ноября 2010

Я вставляю внешний файл 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 голосов
/ 28 ноября 2010

Я не понимаю, почему вы не начали бы с использования thisdrawing.modelspace.insertblock? Это возвращает объект acadblockreference в первую очередь!

...