| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Как вставить описания всех блоков библиотеки блоков?

Lisp. Как вставить описания всех блоков библиотеки блоков?

Ответ
Поиск в этой теме
Непрочитано 10.04.2013, 18:53 #1
Lisp. Как вставить описания всех блоков библиотеки блоков?
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Добрый день. Точно была такая тема, но не могу ее найти.
Как мне загрузить описания всех блоков из dwg-файла библиотеки блоков.
При этом изначально не известно блоки с какими именами есть в библиотеке.
Надо закинуть все.
Я знаю, что если прервать команду _insert после того как она найдет блок, описание блока добавится к файлу.
А вот как вставлять блок не из отдельного файла, а из библиотеки я что-то не ссображу)

Последний раз редактировалось Kirill_Ja, 10.04.2013 в 23:00. Причина: Дополнение
Просмотров: 2552
 
Непрочитано 10.04.2013, 20:50
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Kirill_Ja Посмотреть сообщение
Точно была такая тема, но не могу ее найти.
http://forum.dwg.ru/showthread.php?t...EE%F2%E5%EA%E8
Do$ вне форума  
 
Непрочитано 10.04.2013, 21:59
#3
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Do$ Посмотреть сообщение
Там не о том. Вот как делаю внедрение библиотеки блоков:

Код:
[Выделить все]
 
(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 "Sanitary\\R2000_00000000" "НОМЕР_УЗЛА") 
;;; (ru-block-lib-insert "archit\\ru-lib-wood" "ru_wood_beam_unit") 
;;; (vl-filename-base "archit\\ru-lib-wood")
  (if (tblsearch "block" block_name)
    t
    (progn
      (setq block_lib_file_name (ru-string-replace (ru-file-block-lib block_lib_name) "/" "\\"))
      (if (findfile (strcat block_lib_file_name ".DWG"))
        (progn
          (princ "\nПодождите...")
          (setvar "CMDECHO" 0)
;;====================================================
          (vl-cmdf "_.INSERT" block_lib_file_name)
          (vl-cmdf)                                                     ; прерываем вставку, блок невидимый
;;====================================================
          ;; И надо удалить блок библиотеки. Если библиотека
          ;; пополняется, вставка библиотеки не производится
          ;;Однако выдает мусорное сообщение
          ;;(command "-PURGE" "_BLOCKS" block_lib_name "_N")
          (ru-block-purge (ru-obj-get-active-document) (vl-filename-base block_lib_name) )
          (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-alert
            (strcat "Библиотека блоков\n"
                    block_lib_file_name
                    " не установлена в составе версии \n'"
                    (ru-rucad-version)

                    "'\n"
                    "Комплект, в который она должна входить '"
                    (ru-packs-get-note-by-file block_lib_file_name)
                    "'\n"

            ) ;_ end of strcat
          ) ;_ end of ru-msg-alert
          NIL
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Это функция, которая при необходимости вставляет билиотеку блоков, в которой есть блок с заданным именем.
Функции с именами ru-* библиотечные, что делают понятно из названия. Внедрение именно библиотеки выделено.

(vl-cmdf "_.INSERT" block_lib_file_name) - начинаем вставку библиотеки
(vl-cmdf) - и сразу прерываем пустой командой.

Теперь все определения блоков из библиотечного файла внедрены в текщий файл, но невидимы, т.к. у них нет вставок.
ShaggyDoc вне форума  
 
Непрочитано 10.04.2013, 22:51
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@Kirill_Ja
Ты бы хоть язык программирования указал, на котором пишешь...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 11.04.2013, 10:16
#5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Offtop:
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Там не о том.
Если внимательно почитать эту тему, то ответ на вопрос найти можно.
В целом, конечно, тема не о том.
Do$ вне форума  
 
Автор темы   Непрочитано 11.04.2013, 10:22
#6
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Спасибо! Все получилось. Даже не мог представить, что так просто)))
Kirill_Ja вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Как вставить описания всех блоков библиотеки блоков?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение фильмов Perezz!! Разное 9560 28.03.2024 00:25
Библиотеки электронных книг Кочетков Андрей Поиск литературы, чертежей, моделей и прочих материалов 303 21.06.2023 08:35
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Тормозит команда расчленения набора блоков batmax Программирование 4 31.08.2010 17:37
Автокад в интернете, самое начало Mme St-Perle AutoCAD 86 12.05.2010 15:11