AutoLISP для проектировщика
Прочитать атрибуты блока
Блоки и атрибуты команда: АТРИБУТЫentnext · while ~5 мин
Вся «умная» информация проекта живёт в атрибутах блоков: маркировка, адреса, номера. Чтобы её автоматизировать, сначала нужно научиться до неё добираться.
- Атрибуты — это «прицепленные» к блоку объекты типа ATTRIB: entnext шагает по ним от самого блока, пока они не закончатся.
- У атрибута код 2 — имя (тег), код 1 — значение.
Код
(defun c:АТРИБУТЫ (/ p a d) (setq p (entsel "\nУкажите блок с атрибутами: ")) (if p (progn (setq a (entnext (car p))) (while (and a (= "ATTRIB" (cdr (assoc 0 (setq d (entget a)))))) (princ (strcat "\n" (cdr (assoc 2 d)) " = " (cdr (assoc 1 d)))) (setq a (entnext a)) ) ) ) (princ))
- entnext (car p)
- — первый «прицепленный» объект после блока — первый атрибут
- while (and a
- — идём, пока объекты есть и это всё ещё ATTRIB — дальше атрибуты закончились
- assoc 2 d
- — имя атрибута (тег), например МАРК
- assoc 1 d
- — значение атрибута — то, что видно на плане
Попробуйте сами
Щёлкните строку, которая переходит к следующему атрибуту (без неё цикл крутился бы на месте вечно).
В какой паре живёт ЗНАЧЕНИЕ атрибута — то, что написано на плане?
Как запустить у себя
- 1Скопируйте код кнопкой выше и сохраните в файл с расширением .lsp — в кодировке ANSI (Windows-1251), чтобы русский текст не превратился в «????».
- 2Загрузите файл: команда ЗАГПРИЛ (APPLOAD) или просто перетащите файл в окно чертежа.
- 3Введите в командной строке: АТРИБУТЫ
Пробуйте на копии чертежа. В AutoCAD LT работает начиная с LT 2024.