Zitat:
Original erstellt von JoBoCAD:
...ist es doch so, dass der command "script" Befehl erst am Ende der LISP-Routine gestartet werden kann.
Ich denke, Holger meinte das genau umgekehrt: Das Script startet die Lisp-Routine.
Außerdem bleiben noch weitere Möglichkeiten:
a) Das Lisp-Programm modifiziert vorübergehend die Acaddoc.lsp und trägt dort seinen eigenen Neustart für die 2. Zeichnung ein. Dort gestartet, entfernt es den Eintrag aus der acaddoc.lsp zuerst und führt dann seine Aufgaben aus.
b) Du trägst einen Stub-Loader in die Acaddoc.lsp ein, der immer vorhanden ist und dessen Aufgabe es ist, in einem festgelegten Ordner hinterlegte Aufgaben auszuführen. Bei jeder neu geöffneten Zeichnung wird das ausgeführt, was da als ToDo-Sammlung liegt, und alle Programme darin löschen sich selbst, nachdem sie erledigt sind (d.h, vor jedem Neu-Öffnen schiebst du Kopien rein).
c) Etwas härter ist dann die Methode 'Speichertransfer'. Man schreibt den gesamten Lisp-Speicher in eine Datei und lädt ihn dann in die nächste Zeichnung wieder rein. Im Prinzip ist das einfach, viel mehr als foreach und atoms-family braucht man zum Schreiben nicht. Eingelesen wird mit load, und die ganze Atomsippe wird gnadenlos überschrieben. Das kann man allerdings nur machen, wenn keine Handles und Entitynamen transferiert werden. Der Teufel steckt hier aber im Detail, nämlich in der Wahl zwischen print, princ, prin1 usw. Sonst passiert es leicht, dass aus langen Zeichenketten kurze Symbole werden, weil die Anführungs- und Steuerzeichen während des Transfers verdunsten.
Wenn du dich mal zum "Warum" äußerst, könnte man konkretere Tipps geben.
Grüße, Justus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP