Ich habe AutoLISP/CAD schon eine Weile benutzt und möchte jetzt ein Etikett mit meinem Namen zu allen geöffneten Dateien hinzufügen. Ich habe es geschafft, über alle geöffneten Dateien zu iterieren, aber der Textbefehl läuft nur in der ersten Datei. Ich dachte, es wäre zu schnell, damit CAD richtig funktioniert, also habe ich Verzögerungen hinzugefügt, aber es hat nicht funktioniert. Ich habe alle geöffneten Dateien eingecheckt und die Variablen werden geteilt und synchronisiert. Der Text wird übrigens einmal pro geöffneter Datei hinzugefügt, aber nur in der ersten.Element zu allen geöffneten Dateien hinzufügen
Hier ist mein Code:
(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)
)
)
Es funktioniert anscheinend alles, was mit Befehl startet nicht in VLA-Skripte verwendet werden – RemedialGuns
Ja, das ist wahr, aber gibt es nur kleine Anzahl von Befehlen, die von substituierten kann nicht sein VLA. Zusätzlich, wenn Sie VLA verwenden, können Sie leicht "Zeiger" zu erstellen Entität, die komplizierter ist, wenn Sie Befehle verwenden. –