Тема: Вставка блока из DWG файла
Как вставить блок из внешнего dwg-файла, в котором имеется несколько блоков.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Вставка блока из DWG файла
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как вставить блок из внешнего dwg-файла, в котором имеется несколько блоков.
по-моему, сделать это средствами ЛИСПа проблематично
Проще сделать каждый блок отдельным файлом
Главная проблема на мой взгляд бутет если в текущем чертеже и во вставляемом есть блоки с одинак. именами. В этом случае приоритет будет за "местным" блоком, т.е. переопределения блока не произойдёт.
> LAA
Возможен такой вариант:(не очень хороший)
Вставить блок из внешнего файла командой insert.
Удалить его (entdel(entlast)).
В таблицу блоков текущего рисунка пропишется не только общий блок под именем внешнего файла ,но и все блоки которые были во внешнем
файле.После этого ненужные блоки удалить.
Блок, в котором есть другие блоки, обычно называется библиотекой блоков. Мы их делаем специально. Так удобнее. В библиотеке обычно маленькие блочишки по определенной теме. Внедрение библиотеки блоков в рисунок функцией
(defun ru-block-lib-insert (block_lib_name block_name / block_lib_file_name) ;;; Внедрение библиотечного блока block_lib_name в котором живет блок block_name ;;; Пример (ru-block-lib-insert "R2000_00000000" "НОМЕР_УЗЛА") > T ;;;Пример (ru-block-lib-insert "R2000_00000000" "_НОМЕР_УЗЛА") > nil (if (tblsearch "block" block_name) T (progn (setq block_lib_file_name (ru-file-block-lib block_lib_name)) (if (findfile (strcat block_lib_file_name ".DWG")) (progn (princ "\nПодождите...") (setvar "CMDECHO" 0) (command "_.INSERT" block_lib_file_name) (command) ; прерываем вставку, блок ; невидимый (if (tblsearch "block" block_name) ;;Проверим блок после внедрения T (progn (ru-msg-alert (strcat "ОШИБКА!\n Блок\n" block_name "\nотсутствует в библиотеке\n" block_lib_file_name "!\nОбратитесь к администратору системы!" ) ;_ end of strcat ) ;_ end of ru-msg-alert NIL ) ;_ end of progn ) ;_ end of if ) ;_ end of progn (progn (ru-msg-info (strcat "Не найден библиотечный блок\n" block_lib_file_name)) NIL ) ;_ end of progn ) ;_ end of if ) ;_ end of progn ) ;_ end of if ) ;_ end of defun
После отработки функции определение требуемого блока есть в рисунке и с ним можно делать что угодно. Если после чисток и будут удалены определения неиспользованных блоков, блоки вставятся заново, так как перед любыми операциями вставок библиотечных блоков всегда вызывается эта функция.
Из книги "САПР на базе AutoCAD. Как это делается"
Как выделить диапазон ячеек при помощи VBA, от активной до заданной
Для вставки блока из файла можно использовать внешнюю ссылку, с последующим использованием команды XBind.
Проблема в том, что изменяются имена блоков и слоев.
Я пробовал программно изменить имена слоев и блоков.
Получилось, но приочеродной вставке блока AutoCAD подвисал.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Вставка блока из DWG файла
Форум работает на PunBB, при поддержке Informer Technologies, Inc