Я уже давно использую AutoLISP/CAD и теперь хочу добавить метку с моим именем ко всем открытым файлам. Мне удалось перебрать все открытые файлы, но текстовая команда запускается только в первом файле. Я думал, что это слишком быстро для правильной работы САПР, поэтому я добавил задержки, но это не сработало. Я проверил все открытые файлы, и переменные совместно используются и синхронизируются. Кстати, текст добавляется один раз на каждый открытый файл, но только в первый.
Вот мой код:
(defun c:labeling()
(vl-load-com)
(setq docs (vla-get-documents (vlax-get-acad-object)))
(setq top (vla-get-count docs))
(setq p1 (list 10 -10))
(setq p2 (list 95 -15))
(setq p3 (list 12 -14))
(setq c 0)
(vl-propagate 'docs)
(vl-propagate 'top)
(vl-propagate 'p1)
(vl-propagate 'p2)
(vl-propagate 'p3)
(vl-propagate 'c)
(while (< c top)
(vla-activate (vla-item docs c))
(command "_rectang" p1 p2)
(command "delay" 500)
(command "_text" p3 "3" 0 "My name - year" "" nil)
;(print c)
(setq c (+ c 1))
(vl-propagate 'c)
(command "delay" 1000)
)
)