Следующий фрагмент кода (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
Задачу вроде бы решила: получаю с помощью ПБЛОК блок (отдельно) во внешнем файле dwg (не выбранное, а только блок), затем выполняю вставку блока из этого внешнего файла.
ИМХО сложновато. Значительно проще было бы “типа вставить” файл библиотеки, а потом уже вставлять блок из библиотеки. Общими мазками, без конкретики и просмотра кода (на VBA у меня, можно сказать, аллергия ;)), алгоритм может быть такой:
Пройтись по таблице блоков на предмет “есть ли такой блок в чертеже”. Если есть - вставляем и на выход
Через метод .Insert пространства модели вставляем сторонний файл - весь, целиком. Запоминаем результат вставки
Удалить вставку блока “библиотеки”
См. первый шаг.
На лиспе я подобное делал, когда про ObjectDBX был ни сном ни духом. Если что, ObjectDBX в NC23/23.1 не поддерживается, насколько я знаю.