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