| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Laufenden AutoCAD-Befehl in Lisp beenden. (3937 mal gelesen)
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 12. Mrz. 2007 09:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mit der Suchfunktion nicht ganz das gewünschte Ergebnis erhalten, deshalb probiere ich es auf diesem Wege: Ich habe einen AutoCAD-Befehl in einem LISP-Programm gestartet, z.B. mit (vl-cmdf "_solidedit" "_face" "_color") Dann kann der User der Reihe nach die Flächen wählen. Leider geht das innerhalb von _solidedit nicht mit ssget, dann wäre das Problem schnell gelöst. Man muss den User in die Flächen des Volumenkörpers klicken lassen. Der Befehl _solidedit leuchtet die Flächen dann aus. Klar, auch getpoint kann man prüfen, ob ESC oder Enter oder linke Maustaste gedrückt wurde. Wie breche ich aber dann den laufenden Befehl _solidedit ab, vor allem, wenn der User bereits eine Fläche gewählt hat, dann aber unmotiviert die ESC-Taste drückt, um den Gesamtvorgang zu beenden? HINWEIS: Der Befehl muss laufen, damit die gewählten Flächen ausgeleuchtet werden! Hier gehts also nur um die Frage, wie ein laufender AutoCAD-Befehl über LISP beendet werden kann. VG, Fred
------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Mrz. 2007 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
keine Ahnung worauf das hinauslaufen soll, aber (progn (vl-cmdf "_solidedit" "_face" "_color") (while (/=(getvar "cmdactive")0)(command pause)) ) suchst du sowas? ..ein reines (command) statt (command pause) bricht ab .. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 12. Mrz. 2007 10:49 <-- editieren / zitieren --> Unities abgeben:
Hi cadmium, nein, nicht ganz. (while (/=(getvar "cmdactive")0)(command pause)) kenne ich. Diese Variante beendet das Programm, indem alle Eingaben mit Eingabe bestätigt werden. Und das ist das, was ich nicht unbedingt will. Konstruierter Fall: (vl-cmdf "_solidedit" "_face" "_color") der User pickt eine Fläche, nimmt dann die Option alle, stellt fest dass er doch nicht will und drückt ESC. Das fange ich ja ab bei getpoint. Mache ich dann wie von Dir beschrieben weiter, wird den gewählten Flächen eine andere Farbe zugewiesen (z.B. VonLayer oder die zuletzt verwendete Farbe). Das will ich ja nicht. Also müsste man ein ESC an den aktiven AutoCAD-Befehl senden. Zum Verständnis: Aus einem Dialog heraus kann man einen Volumenkörper zeichnen. Über eine weitere Schaltfläche soll der Befehl wie aus dem Menü Ändern > Volumenkörper bearbeiten > Flächen farbig auzsfüllen gestartet werden. Dabei müsste ich so oft pause in die Zeile (vl-cmdf "_solidedit" "_face" "_color" pause "" intFarbe "_X" "_X") schreiben, wie der User Volumenkörper-Flächen pickt. Das weiß ich aber nicht, deshalb fange ich das ab und frage auch die Farbe ab (sonst kommt nur die Befehlszeileneingabe). Wird an einer der beiden Stellen abgebrochen muss auch der begonnene Befehl abgebrochen werden. Ich hoffe, dass ich das einigermaßen erklären konnte. VG, Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Mrz. 2007 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
na dann hätte ich noch (defun DT:SENDKEYS (KEYS / WSCRIPT) (if(setq WSCRIPT (vlax-create-object "WScript.Shell")) (progn (vlax-invoke-method WSCRIPT 'sendkeys KEYS) (vlax-release-object WSCRIPT) ) ) (princ) ) und dann der Aufruf (DT:SENDKEYS "{ESC}") wenn du weißt, wann du ihn aufrufst.. ..wenn nicht, lad mal die Funktion und gib (DT:SENDKEYS "{F1}") in der Befehlszeile ein ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 12. Mrz. 2007 11:12 <-- editieren / zitieren --> Unities abgeben:
|
HofCAD Mitglied
Beiträge: 8 Registriert: 12.09.2006
|
erstellt am: 16. Mrz. 2007 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 16. Mrz. 2007 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für fred_tomke
Zitat: Original erstellt von HofCAD: Hi cadmium,Warum nicht (command) und (command "HELP")? VG HofCAD
Lies den gesamten Thread!! ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |