AutoLISP для проектировщика

Пронумеровать блоки по порядку щелчков

Массовые операции команда: НУМЕРwhile · entsel ~6 мин

Перенумеровать шестьдесят извещателей после правки — тоска и гарантированные дубли. Команда НУМЕР: щёлкаете блоки в нужном порядке, номер сам пишется в атрибут НОМЕР.

  • while + entsel = «пока пользователь щёлкает»: Enter завершает цикл, потому что entsel вернёт nil.
  • Запись в атрибут — приём из урока про префикс, только значение теперь — счётчик.

Код

(defun c:НУМЕР (/ n p a d)  (setq n 1)  (while (setq p (entsel (strcat "\nБлок для номера " (itoa n) " (Enter — стоп): ")))    (setq a (entnext (car p)))    (while (and a (= "ATTRIB" (cdr (assoc 0 (setq d (entget a))))))      (if (= "НОМЕР" (strcase (cdr (assoc 2 d))))        (progn          (entmod (subst (cons 1 (itoa n)) (assoc 1 d) d))          (entupd a)        )      )      (setq a (entnext a))    )    (setq n (1+ n))  )  (princ))
while (setq p (entsel
— хитрость: entsel и спрашивает объект, и служит условием цикла — Enter (nil) останавливает работу
(itoa n)
— номер-число превращаем в строку — в атрибут пишется текст
(setq n (1+ n))
— следующему блоку — следующий номер

Попробуйте сами

Секция сдаётся второй очередью: нумерация должна начинаться со 101. Поменяйте стартовый номер — подписи на сцене пересчитаются.

(setq n )
стартовый номер

Условный результат

1
2
3
4

порядок щелчков: слева направо

Чем завершается работа команды НУМЕР?

Как запустить у себя

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

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

Нумеровать по геометрии (змейкой по плану, без щелчков) умеет наш генератор «Нумерация и адресация датчиков» — он собирает готовый LISP под ваш чертёж.

Смежные инструменты сервиса:Нумерация и адресация датчиков (LISP)