0
저는 잠시 동안 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)
)
)
그것은 명령으로 시작 VLA 스크립트를 사용할 수 없습니다 분명히 아무것도 작동 – RemedialGuns
로 치환 할 수없는 명령의 적은 수의 예 즉, 사실이지만이 VLA. 추가적으로, VLA를 사용하면 생성 된 엔티티에 "포인터"를 쉽게 가져올 수 있습니다. 이는 명령을 사용할 때 더 복잡합니다. –