Вставить блок из внешнего dwg

Здравствуйте Уважаемые специалисты NanoCAD!

Подскажите пожалуйста, возможно ли с помощью vba-excel вставить в текущий чертеж блок из внешнего dwg, по аналогии, например, с lisp (см. вложение).

В vba-excel можно вставить блок “InsertBlock” (если он например был выгружен из чертежа командой пблок):

Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(InsPoint, Range(“A” & i).Value, Range(“D” & i).Value, Range(“D” & i).Value, Range(“D” & i).Value, Range(“E” & i).Value)

Но мне нужно вставить определенный блок (по имени) из внешнего dwg с несколькими вставленными в него блоками. Может через “WblockCloneObjects”?

Следующий фрагмент кода (vba-excel): найти файл dwg через окно - в этом файле после того как найден блок с нужным именем, запускается команда “пблок”, затем нужно как-то вставить из этого файла (WBlock_example.dwg) блок в текущий чертеж?

Dim myBlock As AcadBlockReference
Dim oEnt As AcadEntity
Dim sourceObj As Object
Dim Sset As nanoCAD.SelectionSet

Dim activeDoc As nanoCAD.Document
Set activeDoc = acadApp.ActiveDocument

StartF = “C:”
Set App = CreateObject(“Excel.Application”)
With App.FileDialog(3)
.AllowMultiSelect = False
.Title = “Выбрать файл с блоком”
.Filters.Clear
.Filters.Add “Файлы чертежей”, “.dwg;.dwt”, 1
.InitialFileName = StartF
.InitialView = 2

If .Show = 0 Then
MsgBox “Файл не выбран.”
Else
For lf = 1 To .SelectedItems.Count
Set awCopy = acadApp.Documents.Open(.SelectedItems(lf))

Set Sset = awCopy.SelectionSets.Add(“WBLOCKSET”)
Sset.AddItems sourceObj
awCopy.Wblock “C:\temp\WBlock_example.dwg”, Sset
Sset.DELETE

activeDoc.Activate

Задачу вроде бы решила: получаю с помощью ПБЛОК блок (отдельно) во внешнем файле dwg (не выбранное, а только блок), затем выполняю вставку блока из этого внешнего файла.

ИМХО сложновато. Значительно проще было бы “типа вставить” файл библиотеки, а потом уже вставлять блок из библиотеки. Общими мазками, без конкретики и просмотра кода (на VBA у меня, можно сказать, аллергия ;)), алгоритм может быть такой:

  • Пройтись по таблице блоков на предмет “есть ли такой блок в чертеже”. Если есть - вставляем и на выход
  • Через метод .Insert пространства модели вставляем сторонний файл - весь, целиком. Запоминаем результат вставки
  • Удалить вставку блока “библиотеки”
  • См. первый шаг.

На лиспе я подобное делал, когда про ObjectDBX был ни сном ни духом. Если что, ObjectDBX в NC23/23.1 не поддерживается, насколько я знаю.