| 
|  |  |  |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |  |  |  |  |  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung 
 |  
| Autor | Thema:  modemacro + getvar  (1964 mal gelesen) |  | caddonner Mitglied
 
 
   
 
      Beiträge: 166Registriert: 24.05.2005
 Windows 10 64bitAutocad 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: 13533Registriert: 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: 166Registriert: 24.05.2005
 |    erstellt am: 25. Sep. 2006 12:39  <-- editieren / zitieren -->    Unities abgeben:            |  | CADwiesel Moderator
 CAD4FM UG
 
      
 
  
 
      Beiträge: 1999Registriert: 05.09.2000
 AutoCAD, BricscadWir 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: 13533Registriert: 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: 166Registriert: 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: 698Registriert: 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: 166Registriert: 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: 3338Registriert: 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: 166Registriert: 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 >>)
  |