我使用 AutoLISP/CAD 已经有一段时间了,现在我想在所有打开的文件中添加一个带有我名字的标签。我已经设法遍历所有打开的文件,但文本命令只在第一个文件中运行。我认为 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)
)
)