Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  modemacro + getvar

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  modemacro + getvar (1813 mal gelesen)
caddonner
Mitglied



Sehen Sie sich das Profil von caddonner an!   Senden Sie eine Private Message an caddonner  Schreiben Sie einen Gästebucheintrag für caddonner

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Sep. 2006 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für caddonner 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von caddonner an!   Senden Sie eine Private Message an caddonner  Schreiben Sie einen Gästebucheintrag für caddonner

Beiträge: 166
Registriert: 24.05.2005

erstellt am: 25. Sep. 2006 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Thomas !

Dein Lisp funktioniert so weit, nur werden keine Änderungen übernommen wenn ich die Sysvars ändere.

------------------
mfg
Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




Sehen Sie sich das Profil von CADwiesel an!   Senden Sie eine Private Message an CADwiesel  Schreiben Sie einen Gästebucheintrag für CADwiesel

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 25. Sep. 2006 12:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für caddonner 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 25. Sep. 2006 12:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für caddonner 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von caddonner an!   Senden Sie eine Private Message an caddonner  Schreiben Sie einen Gästebucheintrag für caddonner

Beiträge: 166
Registriert: 24.05.2005

erstellt am: 25. Sep. 2006 13:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 29. Sep. 2006 22:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für caddonner 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von caddonner an!   Senden Sie eine Private Message an caddonner  Schreiben Sie einen Gästebucheintrag für caddonner

Beiträge: 166
Registriert: 24.05.2005

Windows 10 64bit
Autocad 2015 C.A.T.S.
AutoCAD 2017

erstellt am: 02. Okt. 2006 12:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 04. Okt. 2006 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für caddonner 10 Unities + Antwort hilfreich

Hi,

ohne den Code getestet zu haben:
Mir fiel auf, dass du mit

Code:
Einheit: $(if,$(eq,$(getvar,insunits),"6"),"Meter")

INSUNITS vom Typ INT mit dem String "6" vergleichst.
IMHO liegts daran.

Gruß
CADchup

------------------
CADmaro.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

caddonner
Mitglied



Sehen Sie sich das Profil von caddonner an!   Senden Sie eine Private Message an caddonner  Schreiben Sie einen Gästebucheintrag für caddonner

Beiträge: 166
Registriert: 24.05.2005

erstellt am: 04. Okt. 2006 11:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz