| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: _laymch, -layer (1921 mal gelesen)
|
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 4 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2009 - deutsch MS-Office Standard 2010
|
erstellt am: 04. Feb. 2010 09:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, zur Zeit versuche ich einen Button zu erstellen, der die Befehle "_-layer" und "_laymch" kombiniert.
Fall 1: Wenn keine Befehle aktiv und keine Objekte markiert sind, soll der Knopf einen bestmmten Layer (z.B. "Bemaßung") aktuell setzten. Das Makro hierzu lautet: "^C^C_-layer;se;bemaßung;;" Fall 2: Wenn Objekte markiert sind, sollen diese direkt auf den Layer Bemaßung wechseln. Das Makro hierzu lautet: "_-laymch;n;bemaßung;" Beide Einzelbefehle funktionieren, aber die Kombination in einem einzigen Button macht Schwierigkeiten. Hierzu habe ich mir folgendes Makro ausgedacht: "$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_-laymch;n;bemaßung,_-layer;se;bemaßung ;" Im ersten Fall kommt folgende Rückmeldung:
Befehl: *Abbruch* Befehl: $M= Eingabe: "$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_-laymch^Jn^Jbemaßung,_-layer^ Jse^Jbemaßung^J)^J" $M= Ausgabe: "_-layer^Jse^Jbemaßung^J^J" _-layer Aktueller Layer: "Bemaßung" Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIn/AUs/FArbe/Ltyp/LStärke/MATerial/Plot/FRieren /Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen]: se Namen des zu aktivierenden Layers eingeben oder <Objekt wählen>: bemaßung Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIn/AUs/FArbe/Ltyp/LStärke/MATerial/Plot/FRieren /Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen]: Dieser Zweig läuft also. Im zweiten Fall passiert jedoch folgendes: Befehl: *Abbruch* Befehl: Entgegengesetzte Ecke angeben: Befehl: $M= Eingabe: "$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_-laymch^Jn^Jbemaßung,_-layer^ Jse^Jbemaßung^J)^J" $M= Ausgabe: "_-layer^Jse^Jbemaßung^J^J" _-layer Aktueller Layer: "Bemaßung" Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIn/AUs/FArbe/Ltyp/LStärke/MATerial/Plot/FRieren /Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen]: se Namen des zu aktivierenden Layers eingeben oder <Objekt wählen>: bemaßung Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIn/AUs/FArbe/Ltyp/LStärke/MATerial/Plot/FRieren /Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen]: Hier waren vor Betätigung des Buttons 2 Objekte markiert, welche auf dem Layer "Rahmen" liegen. Warum wird trotz vorheriger Auswahl der Objekte über das "Kreuzen-Fenster" der zweite Weg eingeschlagen? Gruß, Ingo 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 4 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2009 - deutsch MS-Office Standard 2010
|
erstellt am: 20. Jul. 2010 08:19 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, Da sich diese Frage bisher nicht gelöst hat, möchte ich sie noch einmal neu stellen. Mir ist leider nicht klar, unter welchen Vorraussetzungen der Befehlsstreifen <$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP)> funktioniert. Vielleicht weiß einer von den DIESEL-Könnern genaueres. mfg, Ingo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jul. 2010 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Ingo Struck
Dann will ich doch mal Antworten, die Verwendung meiner ganz persönlichen Interpretation erfolgt jedoch auf eigene Gefahr CMDNAMES = Zeigt EIGENTLICH den Namen der aktiven und transparenten Befehle an. Jedoch geht es auch darüber hinaus, in diesem Fall wohl recht unkommentiert "GRIPS", dieses "Grips" wird jedoch nur in bestimmten Fällen weiter gegeben: und nochmal vorab: das ist eine nette Umschreibung mit der man es evtl. verstehen kann, technisch ist es jedoch erfunden und hätte eher per Zufall mit der Realität Gemeinsamkeiten 1. Der Status "Grips" wird erst von bestimmten Funktionen ausgelöst, nämlich von den Funktionen die wirklich markierte Objekte berücksichtigen. 2. Es müssen Objekte markiert sein (logisch) Wenn man also einen Menüeintrag mit einem Makro a´la $(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_copy... startet, dann geht es zunächst einmal um den Befehl "_copy" - dieser verwertet markierte Objekte und löst den Status "Grips" aus wenn Objekte markiert sind. :: Wenn kein Befehl aktiv ist, aber Objekte markiert sind und man startet den Befehl _Copy :: dann nimmt sich der Befehl die aktuell markierten Objekte als zu bearbeitenden Auswahlsatz.
Der Befehl _Line macht das zB. nicht, daher wird auch kein "Grips" gesendet und somit funktioniert ein Makro a´la $(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_Line... nicht. [EDIT] Ich füge hier wegen einer PM nochmal ausdrücklich hinzu: Nein, die Beschreibung zeigt keine technische Logik auf. "getvar" kann sich von der normalen Abarbeitsfolge her nicht auf das then oder else von der if-Anweisung beziehen - wie gesagt: keine technische Logik für mich erkennbar - aber in der Praxis ist das nunmal von den Befehlen bei then&else der if-Anweisung abhängig. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) 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 4 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2009 - deutsch MS-Office Standard 2010
|
erstellt am: 20. Jul. 2010 11:01 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, Zitat: 1. Der Status "Grips" wird erst von bestimmten Funktionen ausgelöst, nämlich von den Funktionen die wirklich markierte Objekte berücksichtigen.
Gehört der Befehl <_-laymch> nicht auch zu dieser Gruppe? Zitat: 2. Es müssen Objekte markiert sein (logisch)
Das ist klar. Der Befehl _copy ist interessant, den muss ich jedoch erst noch ausprobieren. Danke erstmal, Ingo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jul. 2010 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für Ingo Struck
Ich habe derzeit nur 2006 - somit auch nur laymch aus den ETools und diese sind mit dem 2009er-ACAD-laymch nicht identisch, somit kann ich nicht testen. Aber andersherum: Wenn es nicht geht, dann gehört der nicht dazu Alles was nachträglich kommt wird "gefrickelt" - Befehlszeilenversionen und die Möglichkeit zu Scripten und Makro vernachlässigt - mich würde es also auch in diesem Fall nicht wundern wenn es anders umgesetzt wurde wie die anderen Bearbeitungswerkzeuge (mode copy pedit etc.) ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) 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 4 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2009 - deutsch MS-Office Standard 2010
|
erstellt am: 20. Jul. 2010 14:42 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, das Originalmakro des Befehls <_copy> <$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_copy,^C^C_copy) > habe ich auf einen Testschalter gelegt. Im Original funktioniert es. Den "sonst-Zweig" <^C^C_copy> habe ich dann gegen <-layer;se;bemaßung;;> ausgetauscht. Dies hat zur Folge, dass immer der "sonst-Zweig" ausgegeben wird, egal, ob vorher Objekte markiert waren oder nicht. Genauso verhält es sich mit dem Befehl <_rotate>. Auch den Befehl _change habe ich erfolglos ausprobiert. Es liegt also nicht am Befehl <_laymch>. (<pickfirst> steht auf 1.) Bei allen Originalmakros ist mir noch aufgefallen, das sowohl im "dann-Zweig" als auch im "sonst-Zweig" immer der gleiche Befehl steht. Im "sonst-Zweig" befindet sich vor dem eigentlichen Befehl nur noch <^C^C> zusätzlich. Leider werde ich aus der ganzen Sache noch nicht schlau, aber vielleicht fällt der Groschen ja noch. Gruß, Ingo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Jul. 2010 14:57 <-- editieren / zitieren --> Unities abgeben: Nur für Ingo Struck
Da gibt es keinen Groschen, du mußt anfangen es zu akzeptieren ! Alle (zumindest alle alten) Änderungsbefehle welche auf markierte Objekte anspringen - damit funktioniert das [wie von Geisterhand]. Alles andere nicht, basta. Gerne füge ich noch hinzu: Befehl hinter then&else muß gleich sein. ;9 Ist einfach so, mienes Wissens nicht dokumentiert, fertig. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) 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 4 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2009 - deutsch MS-Office Standard 2010
|
erstellt am: 03. Aug. 2010 08:43 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|