| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Variablen zurück setzen (2364 mal gelesen)
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 11. Feb. 2007 11:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, Variablen beim Benutzer Abbruch zurücksetzen. 1. In einem Lispprogramm frage ich die eingestellten Sytem-Variablen ab und setze sie mit setq auf z.B. "Fang_Einst". 2. Danach setze ich meine eigene Einstellung. 3. Und am Schluss setze ich die vorhergehenden Systemvariablem wieder, den Wert, den der Anwender ursprünglich hatte. Dann danach ist alles wieder wie am Anfang und der Benutzer hat noch nicht einmal gemerkt, dass zwischendurch etwas umgestellt war. Wenn aber danach der Anwender den "Zurück-Befehl" verwendet und zufällig bis Punkt 2. zurück geht, ist meine Einstellung aktiv und er wundert sich, dass er jetzt seine Einstellung verändert ist, sein ACAD ist "verstellt". Je nach dem wie ein Lisp-Programm abgebrochen wird oder durch einen Fehler abstürzt, kann es auch vorkommen, dass die Systemvariablen von ACAD nicht zurück gesetzt werden. Wie könnte man das Problem lösen? Gruß Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 11. Feb. 2007 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 12. Feb. 2007 11:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, - Schreibe von Axel -, da geht es mir genau so wie Dir. Beim durchlesen habe ich gesehen, dass a) das Thema nicht einfach ist und b) das Problem mit - Variablen durch "Zurück-Befehl" verstellen - nicht behandelt wurde. Ich selbst verwende "Z" kaum, aber ein Freund von mir oft. Nun bin ich einen anderen Weg gegangen, ich lese die Variablen-Werte aus und schreibe sie in eine Script-Datei. Wenn dann der liebe Siegfried genug verbogen hat, kann er die Werte wieder auf "seine" Grundeinstellung zurücksetzen. Wenn jemand Interesse hat, kann ich meine "Hilfskonstruktion" listen. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 12. Feb. 2007 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Zitat: Original erstellt von Theodor Schoenwald: Hallo Udo,- Schreibe von Axel -, da geht es mir genau so wie Dir. Beim durchlesen habe ich gesehen, dass a) das Thema nicht einfach ist und b) das Problem mit - Variablen durch "Zurück-Befehl" verstellen - nicht behandelt wurde. Ich selbst verwende "Z" kaum, aber ein Freund von mir oft.
Das lässt sich einfach lösen: schreibe die zu sichernden Werte in ein Dictionary. Auch das Dictionary wird bei einem "Z" mit zurück gesetzt, so dass auch darin nach dem "Z" wieder die passende Variablenkonfiguration steht. Außerdem steht in jeder DWG dann auch immer der für diese geltende Zustand, und Du musst Dir keine Gedanken um mehrere offene Dateien machen. Tom
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 12. Feb. 2007 15:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Tom, so könnte es gehen, wenn Siegfried mit "Z" - weit genug zurück - geht. Ein "Z" mehr wäre gut und ein "Z" weniger auch, aber er trifft. Wenn er aber gerade da aufhört, wo die Variablen mit dem Lisp-Tool verändert wurden? Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 12. Feb. 2007 22:47 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Zitat: Original erstellt von Theodor Schoenwald: Hallo Tom,so könnte es gehen, wenn Siegfried mit "Z" - weit genug zurück - geht. Ein "Z" mehr wäre gut und ein "Z" weniger auch, aber er trifft. Wenn er aber gerade da aufhört, wo die Variablen mit dem Lisp-Tool verändert wurden?
Man muss natürlich eine UNDO-Gruppe auch abschließen, und das muss auch die Error-Routine machen, die beim Programmabbruch mit ESC einspringt. Dann springt jedes einzelne "Z" auch ganz korrekt zu seiner gespeicherten Variablengruppe zurück und das System ist an jedem Punkt konsistent. Tom
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 12. Feb. 2007 23:33 <-- editieren / zitieren --> Unities abgeben:
Danke Tom, für den Hinweis. Kannst Du ein kleines Beispiel listen, denn bei dem Beitrag auf den Udo hingewiesen hat, waren eine Menge Programmcode. Bei eine Abbruch mit ESC macht das Sinn, aber was ist, wenn nichts abgebrochen wurde und Siegfried einfach so zurück geht, weil Ihm gerade etwas an seinem Werk nicht gefällt. Beispiel: a) CMDECHO ist auf 1 b) Mein oder ein anderes Tool setzt CMDECHO auf 0 c) und am Tool-Ende wird CMDECHO wieder auf 1 gesetzt. d) Arbeit ist erledigt er zeichnet eine Linie. Wenn er danach ein Schritt zurück geht ist die Linie weg. CMDECHO ist 1. Noch einen zurück ist er bei c), CMDECHO ist immer noch 1. Einen weiteres "Z" und er ist bei b) CMDECHO ist 0. Ginge er noch eins zurück, dann wäre er bei a) CMDECHO ist 1. Aber er hat eine glückliche Hand und landet bei b) Gruß Theodor
[Diese Nachricht wurde von Theodor Schoenwald am 13. Feb. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 13. Feb. 2007 07:21 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hi Theodor Ich mach das so: Beispiel: a) CMDECHO ist auf 1
(command "_UNDO" "_END") (command "_UNDO" "_GROUP") b) Mein oder ein anderes Tool setzt CMDECHO auf 0 c) und am Tool-Ende wird CMDECHO wieder auf 1 gesetzt. d) Arbeit ist erledigt er zeichnet eine Linie. (command "_UNDO" "_END") Wenn er danach ein Schritt zurück geht, tut er das bis zum "Gruppenanfang". ------------------ Schöne Grüße Ernst Meine Homepage Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 13. Feb. 2007 07:56 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hallo Theodor, Ergänzung zu Ernst's Beispiel: in der Error-Routine könnte dann stehen: (command "_.undo" "_e") (command "_.undo" "1") Dann wird im Falle eines alles wieder auf den Beginn zurückgesetzt. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 13. Feb. 2007 12:59 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 14. Feb. 2007 01:52 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Zitat: Original erstellt von joern bosse: Hallo Theodor, Ergänzung zu Ernst's Beispiel: in der Error-Routine könnte dann stehen: (command "_.undo" "_e") (command "_.undo" "1") Dann wird im Falle eines alles wieder auf den Beginn zurückgesetzt.
Ja, genau so meinte ich das. Und als Grundprinzip: Eine UNDO Gruppe wird ausnahmslos in Lisp-Funktionen geöffnet, die als Befehl definiert sind (also mit (defun c:MeinBefehl ...) und nur in dieser Funktion auch wieder geschlossen. AutoCAD kennt leider keine Hierarchien bei UNDO Gruppen, so dass immer nur der letzte Gruppenbeginn relevant ist. Für UNDOs innerhalb der Gruppe kann man sich UNDO Markierungen setzen. Theodor, sind damit auch Deine Fragen beantwortet? Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 14. Feb. 2007 02:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Tom, ich habe die Vorschläge bei zwei Tools durchprobiert. Das was es, womit ich die Unarten beim "Z" Befehl abfangen kann. Zusätzlich benötigt man weniger Zs um den Zustand vor einer Tool Ausführung wieder her zu stellen. Beim einem Abbruch hatte ich in den Tools schon vorher alle Variablen zurück gesetzt. Deshalb gab es damit nie Probleme. Ich habe auch nicht gleich gemerkt, dass die Problem nur auftauchen wenn "Z" verwendet wird. Nun ist das bereinigt. Dank an Dich, Udo, Ernst und Joern. Gruß Theodor Schönwald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |