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. 1Скопируйте код кнопкой выше и сохраните в файл с расширением .lsp — в кодировке ANSI (Windows-1251), чтобы русский текст не превратился в «????».
  2. 2Загрузите файл: команда ЗАГПРИЛ (APPLOAD) или просто перетащите файл в окно чертежа.
  3. 3Введите в командной строке: АТРИБУТЫ

Пробуйте на копии чертежа. В AutoCAD LT работает начиная с LT 2024.