| | | 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, eine Pressemitteilung
|
Autor
|
Thema: Diesel Ausdruck / Text ausgeben (7526 mal gelesen)
|
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 09. Okt. 2010 15:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, das folgende Makro soll im Modellbereich nur eine Meldung ausgeben und im Papierbereich einen Befehl ausführen: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),"Nur im Papierbereich benutzen",MVSETUP;'osmode 111;A;H;\\; ^Z Wie kann ich mit Diesel einfach nur eine stinknormale Meldung ausgeben??? Ist wahrscheinlich total simpel, aber ich komme einfach nicht darauf... ------------------ Gruß Markus 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 AutoCAD 2.5 - 2025, Civil 3D, MAP 3D, ACADM, ACA Inventor Prof. 2025, AIP 4-2025 Win 11
|
erstellt am: 09. Okt. 2010 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
|
Ex-Mitglied
|
erstellt am: 09. Okt. 2010 16:48 <-- editieren / zitieren -->
Hi, vielleicht ist >>>dieses<<< was für dich. [EDIT] Udo war schneller [/EDIT] - alfred ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 09. Okt. 2010 editiert.] |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 09. Okt. 2010 17:37 <-- editieren / zitieren --> Unities abgeben:
Die Frage bzw. Antworten habe ich auch schon gefunden. Das hat mich leider nicht weitergebracht. 1. Muss ich wirklich eine Variable erstellen und wieder auslesen, um einen simplen Text mit Diesel in der Befehlszeile wiederzugeben? 2. Ich habe etliche Versuche unternommen setenv und getenv in das Makro einzubauen: Ich bekomme es nicht hin :( Weiss jemand, wie ich die Befehle benutzen muss? Hier noch einmal der Ausdruck: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),"Hier steht der Text",MVSETUP;'osmode 111;A;H;\\;;)^Z ------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Okt. 2010 19:56 <-- editieren / zitieren -->
Hi, >> Die Frage bzw. Antworten habe ich auch schon gefunden Da hätte ein Hinweis in Deiner Frage geholfen, PLUS: eine Angabe, wieso dieses für Dich keine Lösung ist. >> Muss ich wirklich eine Variable erstellen und wieder auslesen
Guck mal die Anzahl der Reaktionen in dem genannten Thread an, nachdem keine anderen Lösungsvorschläge kamen, wird eine erneute gleichartige Frage (ohne Angabe der Gründe, wieso Du diese Lösung nicht möchtest) kaum Erfolg auf weitere Vorschläge bringen. >> Weiss jemand, wie ich die Befehle benutzen muss?
Dir Vorlage hast Du doch im anderen Thread 1:1 stehen. - alfred - ------------------ www.hollaus.at |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 09. Okt. 2010 20:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, bevor ich eine Frage ins Forum stelle, schaue ich grundsätzlich immer, ob nicht jemand schon eine Lösung für mein Problem hat - das sollte wohl auch selbstverständlich sein. Ich hatte mir eigentlich vorgestellt, dass ich irgendeinen Befehl wie bei LISP "princ" übersehen habe. Anscheinend gibt es so etwas aber nicht. Es ist nicht so, dass ich die Lösung in dem genannten Thread nicht akzeptiere. Du schreibst, dass es in dem genannten Thread eine 1:1-Vorlage gibt. Wie ich bereits geschrieben habe, habe ich etliche Versuche unternommen diesen Lösungsansatz in mein Makro einzubauen. Es gelingt mir aber nicht - egal ob ich die Ausdrücke in Klammern setze, mit oder ohne Anführungszeichen , mit oder ohne Dollarzeichen, mit oder ohne $M, (princ "Text") - nix funktioniert. Falls es so einfach sein sollte wie du schreibst, würde ich mich sehr darüber freuen, wenn jemand das Makro vervollständigen könnte. Falls es doch schwieriger sein sollte, akzeptiere ich natürlich auch, wenn ich keine weitere Hilfe bekomme. Danke trotzdem für den Versuch mir zu helfen ------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Okt. 2010 16:56 <-- editieren / zitieren -->
Hi, Code: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),$M=$(eval,"$(getvar,USERS1)")^C^C,MVSETUP;'osmode 111;A;H;\\;;)^Z
Gibt Dir den Wert aus, der zuvor in der Variable USERS1 gespeichert ist. Nur eines noch dazu: ich hab von Diesel keine Ahnung, obiges funktioniert, ob es ev. kürzer ginge, weiss ich nicht. HTH, - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 10. Okt. 2010 editiert.] |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 10. Okt. 2010 22:09 <-- editieren / zitieren --> Unities abgeben:
Vielen dank Alfred, das ist ein Teilerfolg. Ich konnte deinen Code sogar noch verkürzen: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),$(getvar,USERS1)^C^C,MVSETUP;'osmode 111;A;H;\\;;)^Z Ich habe jetzt noch versucht, "setvar" auch in den Code einzubauen. Leider funktioniert ^C^C$M=$(SETVAR,USERS1,Test123) nicht und ich bin mal wieder ratlos.
------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 11. Okt. 2010 07:33 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hallo Jonapap, probier mal folgendes: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),$(setvar,BEISPIELTEXT)$(getvar,BEISPIELTEXT),mvsetup;'osmode 111;A;H;\\;;)^Z mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 11. Okt. 2010 08:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Ingo, stehe ich jetzt auf dem Schlauch? Wenn ich eine Variable erstellen will, dann muss ich doch den Namen der Variablen und den Wert für die Variable angeben können. Mit Lisp (setvar "USERS1" "Beispieltext") klappt das. Bei $(setvar,Beispieltext) fehlt doch ein Argument ------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 11. Okt. 2010 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hallo Jonapap, Zitat: Wenn ich eine Variable erstellen will, dann muss ich doch den Namen der Variablen und den Wert für die Variable angeben können. Mit Lisp (setvar "USERS1" "Beispieltext") klappt das.
Mit DIESEL auch! $M=$(setvar,BEISPIELTEXT) und $M=$(getvar,BEISPIELTEXT) sind die jeweiligen Aufrufe dazu. In diesem Fall entspricht der Wert der Zeichenfolge des Namens. Aus diesem Grund kann man beliebigen Text als Zeichenfolge definieren und sich wieder ausgeben lassen. Hast Du das Makro mal getestet? mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 11. Okt. 2010 11:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Ingo, verstehen könnte ich setvar ohne Angabe des Variablenamens nur, wenn es nur eine Benutzerdefinierte Variable gäbe, die dann automatisch immer angesprochen wird. Da das aber wohl nicht der Fall ist - wie soll man denn auf diese Art nachträglich den Wert einer Variablen ändern??? *immernochaufdemschlauchsteh* Das von dir geänderte Makro habe ich getestet: Wenn ich im Modell-Bereich bin, wird der letzte Befehl wiederholt. Hier muss also irgendwo ein Syntaxfehler sein, den ich allerdings noch nicht gefunden habe. ------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 11. Okt. 2010 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hallo Jonapap, OK, mein Fehler, das Makro war unvollständig. Neuer Versuch: ^C^C$M=$(if,$(=,$(getvar,tilemode),1),$(setvar,VARIABLENNAME,BEISPIELTEXT)$(getvar,VARIABLENNAME),mvsetup;'osmode 111;A;H;\\; ^Z bzw. wenn vorher die Variable definiert wird mit: ^C^C_setvar;VARIABLENNAME;BEISPIELTEXT; ^C^C$M=$(if,$(=,$(getvar,tilemode),1),$(getvar,VARIABLENNAME),mvsetup;'osmode 111;A;H;\\; ^Z mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 11. Okt. 2010 16:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Ingo, hast du das Makro bei dir selbst mal probiert? Bei mir steht dann in der Befehlszeile nur "Befehl: LOGINITIALWORKSPACEESW". Diese Variante hatte ich auch schon getestet und bin beim gleichen Ergebnis gelandet. Falls du noch eine Idee haben solltest, hier mal dein, auf das Wesentliche verkürztes Makro: ^C^C$M=$(setvar,VARIABLENNAME,BEISPIELTEXT)$(getvar,VARIABLENNAME)^Z
------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 12. Okt. 2010 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hallo Jonapap, nein, das habe ich nicht, weil mein AutoCAD 2009 LT erstens den Befehl "mvsetup" nicht kennt und zweitens an Stelle des Befehls "getvar" meistens den Befehl "getenv" verwendet. Du hast aber recht, wir können uns herantasten und verschiedene Makros testweise auf einen Schalter legen. 1) Definition einer Variable mit dem Wert "Garfield" ^C^C_setvar;VARIABLENNAME;Garfield; 2) Aufruf des Wertes der Variable mit dem Namen VARIABLENNAME ^C^C_getvar;VARIABLENNAME; 3) Beide Schritte zusammen ^C^C_setvar;VARIABLENNAME;Garfield;_getvar;VARIABLENNAME; Wenn das in der Befehlszeile klappt, sollte dieseln auch gehen. mfg, Ingo ------------------ "Umwege erhöhen die Ortskenntnisse!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 12. Okt. 2010 09:04 <-- editieren / zitieren --> Unities abgeben:
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Okt. 2010 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Zitat: Original erstellt von Jonapap: das folgende Makro soll im Modellbereich nur eine Meldung ausgeben und im Papierbereich einen Befehl ausführen:
Wozu braucht man sowas??? Wenn das eine Befehl ist, der nur im Papierbereich aufgerufen werden darf, graut man den dementsprechenden Menüpunkt einfach aus. [$(if,$(eq,$(getvar,tilemode),1),~)Menüpunkt, der nur im Papierbereich funktionieren soll]^c^c^p.......
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 12. Okt. 2010 10:53 <-- editieren / zitieren --> Unities abgeben:
Hallo fuchsi, bei mir ist das aber kein Menüpunkt, sondern ein Button in der MFLeiste. Ich glaube der Austausch von den Icons (in ausgegraut) geht auch, ist mir aber zu aufwendig. Der Befehl richtet die Ansichten von Ansichtsfenstern gegeneinander aus und macht nur im Layoutbereich Sinn. Es wird auch selten vorkommen, das sich da jemand verklickt. Aber wenn, dann weiß derjenige wenigstens, warum im Modellbereich nichts passiert.
------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 12. Okt. 2010 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Wahrscheinlich hab ich nur nicht verstanden, warum Du das genau brauchst. Beim Aufruf von MVSETUP im Modellbereich kommt bereits von Hause aus die Abfrage, ob man vorher in den Papierbereich wechseln möchte. Code: Befehl: mvsetupStartet... Papierbereich aktivieren? [Nein/Ja] <J>:
Befehlszeile mitlesen hilft also. Wenn der user dort eh nicht mitliest, bringt doch auch eine Ausgabe á la ** Auf Registerkarte Modell nicht erlaubter Befehl ** nichts :ka Aber genau diese könnte man mit unsauberen Mitteln erzwingen: ^C^C^P$M=$(if,$(=,$(getvar,tilemode),1),_pspace,_line) Lösung paßt nur zu genau dieser Eingangsfrage, die Thematik "beliebigen String mit DIESEL ausgeben" ist nicht getroffen. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 12. Okt. 2010 12:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Runkelrübe, wenn man die Frage nach "Papierbereich aktivieren" bejaht, dann kann ich ja nicht beeinflussen, in welches Layout Acad wechselt. Und es macht auch gar keinen Sinn, mit diesem Befehl in den Papierbereich zu wechseln um dann Ansichtsfenster auszurichten. Außerdem werden dann die Optionen des Makros falsch abgearbeitet - was wiederum zu Irritationen führt (mir ist klar, dass man den Befehl auch verändert in die if-Abfrage einbauen kann). Deshalb möchte ich, für Benutzer die den Befehl nur mal durch anklicken ausprobieren wollen, einfach nur eine Meldung ausgeben. ------------------ Gruß Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Okt. 2010 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Dein Vorhaben könnte mit Hilfe von Lispunterstützung funktionieren eine kleine Lispfunktion Code: (defun c : Output (/) (setq text (getstring t)) (princ (strcat "\n" text)) (princ) )
und dazu der Dieselausdruck
Code: ^C^C^P$M=$(if,$(=,$(getvar,tilemode),1),output Ich bin im Modelspace,output Ich bin im Paperspace);
Tut bei mir genau das was ich so wollte.
[Diese Nachricht wurde von fuchsi am 12. Okt. 2010 editiert.] [Diese Nachricht wurde von fuchsi am 12. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|