| | | 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: modemacro + getvar (1881 mal gelesen)
|
caddonner Mitglied
Beiträge: 166 Registriert: 24.05.2005 Windows 10 64bit Autocad 2015 C.A.T.S. AutoCAD 2017
|
erstellt am: 25. Sep. 2006 12:02 <-- editieren / zitieren --> Unities abgeben:
Folgender Code in meiner acad.lsp will nicht so recht funktionieren: (defun-q S::STARTUP ( ) (command "MODEMACRO" (strcat "$(if,$(getvar,mirrtext),Text gespiegelt,Text NICHT gespiegelt )" "$(if,$(getvar,psltscale),Psltscale EIN,Psltscale AUS )" " Einheit: $(if,$(eq,$(getvar,insunits),"6"),"Meter")" " Einheit: $(if,$(eq,$(getvar,insunits),"4"),"Millimeter")" " Einheit: $(if,$(eq,$(getvar,insunits),"0"),"keine Einheit")" )) (princ) ) Irgendwas mit dem --$(if,$(eq,$-- stimmt glaube ich nicht. Aber wenn ich händisch nach dem Befehl „modemacro“ die folgende „Wurscht“ einfüge funktioniert es. $(if,$(eq,$(getvar,insunits),"6"),"Meter") $(if,$(eq,$(getvar,insunits),"4"),"Millimeter") Hilfe wäre echt toll !
------------------ mfg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Sep. 2006 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für caddonner
Du mischt Diesel mit Lisp!! (dafür guck dir mal den Befehl menucmd an) im puren Lisp sollte das gehen: (ungetestet) (defun-q S::STARTUP ( ) (setvar "MODEMACRO" (strcat (if (=(getvar "mirrtext")0) "Text gespiegelt""Text NICHT gespiegelt") "/" (if(=(getvar "psltscale")1) "Psltscale EIN""Psltscale AUS") "/" (cond ((=(getvar "insunits")6) "EINHEIT: Meter") ((=(getvar "insunits")4) "EINHEIT: Millimeter") ((=(getvar "insunits")0) "EINHEIT: keine") ) ) ) (princ) ) ------------------ - 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 |
caddonner Mitglied
Beiträge: 166 Registriert: 24.05.2005
|
erstellt am: 25. Sep. 2006 12:39 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 25. Sep. 2006 12:46 <-- editieren / zitieren --> Unities abgeben: Nur für caddonner
was heißt es werden keine Änderungen übernommen? Die Anzeige wird nicht nachgeführt? Wenns das ist, ist das doch klar. Woher soll den Modemacro wissen, das du was verändert hast? Es bleibt dir übrig: - einsatz eines Reaktors, der dir die Anzeige bei einem Ereigniss nachführt, oder - ein erneutes manuelles Ausführen des Befehls, der die Anzeige nachführt. ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 25. Sep. 2006 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für caddonner
ne.. logisch... die Absicht hab ich übersehen, nimm (setvar "MODEMACRO" (strcat "$(if,$(getvar,mirrtext),Text gespiegelt,Text NICHT gespiegelt )" "$(if,$(getvar,psltscale),Psltscale EIN,Psltscale AUS )" "$(if,$(eq,$(getvar,insunits),6),Einheit: Meter)" "$(if,$(eq,$(getvar,insunits),4),Einheit: Millimeter)" "$(if,$(eq,$(getvar,insunits),0),keine Einheit)" )) stattdessen ------------------ - 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 |
caddonner Mitglied
Beiträge: 166 Registriert: 24.05.2005
|
erstellt am: 25. Sep. 2006 13:03 <-- editieren / zitieren --> Unities abgeben:
Thomas danke ! So geht's ! Hat bei mir nur die Reihenfolge nicht gestimmt ? Thomas: "$(if,$(eq,$(getvar,insunits),6),Einheit: Meter)" Peter: " Einheit: $(if,$(eq,$(getvar,insunits),"6"),"Meter")"
Tja bin halt blutiger Anfänger bei solchen Sachen. ------------------ mfg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
Beiträge: 698 Registriert: 08.09.2003 If you want to help and want to respect other people's questions, then, please: Please, ALWAYS assume that I already tried to search for an answer to my question. Thx. Also, please, DON'T ask me what the "actual" goal of my question is. Please, firstly just answer it directly as stated - if you know an answer and want to give it. Only secondly, add other commments. Many, many, many thanks in advance!
|
erstellt am: 29. Sep. 2006 22:33 <-- editieren / zitieren --> Unities abgeben: Nur für caddonner
Hallo Peter! Zur Erklärung für dich, den "blutigen" Anfänger. (Bin zwar selbst auch noch kein Voll-Profi, aber jedenfalls nicht mehr "blutig".): Mit der Reihenfolge ("Einheit" davor oder danach) hat das nichts zu tun. Die Anzeige wurde zuerst nicht nachgeführt, weil Thomas bei seinem ersten Beitrag zu viel in Lisp dachte. Er hat in Lisp alle gefragten Sys-Vars richtig ausgelesen und interpretiert, hat aber in die Variable "MODEMACRO" nur normalen Text hineinschreiben lassen. Der normale Text reagiert natürlich nicht auf Änderungen der Sysvars - genausowenig wie ein normaler Text im Modellbereich der Zeichnung. Damit "MODEMACRO" funzt, muss es schon mit Diesel "intelligent" gemacht werden, wie Thomas in seinem zweiten Beitrag richtigstellte. Der Grund, warum es bei dir ganz am Anfang nicht hinhaute, nehme ich an, könnte der sein, dass du ein "command" verwenden wolltest. Möglicherweise kann Autocad ein "command" während des Starts noch nicht verarbeiten. Das ist jedenfalls meine Vermutung. War denn damals deine Sysvar "MODEMACRO" nach dem Start leer (würde ich vermuten), oder ist da was dringestanden (wenn ja, was)? ------------------ Gruß und "have fun" schickt/wünscht Stephan "Don't assume, go as far as possible with the known facts, then ask." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
caddonner Mitglied
Beiträge: 166 Registriert: 24.05.2005
|
erstellt am: 02. Okt. 2006 12:14 <-- editieren / zitieren --> Unities abgeben:
Hi Stephan ! Der 1.Teil hat (auch mit "command") immer problemlos funktioniert: (defun-q S::STARTUP ( ) (command "MODEMACRO" (strcat "$(if,$(getvar,mirrtext),Text gespiegelt,Text NICHT gespiegelt )" "$(if,$(getvar,psltscale),Psltscale EIN,Psltscale AUS )" aber wenn ich den Rest dazugebe kam die Meldung "fehlerhafter Argumenttyp stringp 6" und in statusleiste stand nur "Befehlszeile" ------------------ mfg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 04. Okt. 2006 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für caddonner
|
caddonner Mitglied
Beiträge: 166 Registriert: 24.05.2005
|
erstellt am: 04. Okt. 2006 11:28 <-- editieren / zitieren --> Unities abgeben:
So hab jetzt versch. Varianten getestet. Es lag an den „Gänsefüßchen“: So geht’s nicht: "Einheit: $(if,$(eq,$(getvar,insunits),"6"), "Meter")" So geht’s: "Einheit: $(if,$(eq,$(getvar,insunits),6), Meter)" Nehme an CADchup hat genau das gemeint. Wie gesagt bin blutiger (aber interessierter) Lisp-Anfänger.
------------------ mfg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|