| | | 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 und Makros - allgemeine (Anfänger) Fragen (7965 mal gelesen)
|
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2009
|
erstellt am: 17. Jun. 2009 10:29 <-- editieren / zitieren --> Unities abgeben:
Hallo! -- Wenn man in ACAD von Makros spricht spricht man dann von DIESEL?? Wie hängen diese Begriffe zusammen? -- Hab etwas in der Hilfe und auch auf Seiten wie: http://www.crlf.de/Dokumente/Diesel /Diesel.html herumgesucht. Wollte auch Befehle ausprobieren nur leider bekomme ich immer unkown command als Fehler zurück, auch wenn ich Befehle direkt aus der Hilfe verwende. Daher habe ich mir gedacht schaust du dir mal funktionierende Befehle an. Dazu habe ich mir mal z.b. den Befehl move im CUI angeschaut. Dort steht Makro:$M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_move,^C^C_move) Wenn ich diesen Befehl in die COMMANDO Zeile kopiere, bekomme ich aber leider ebenso unkown command zurück. Was mache ich nur falsch. -- in der Hilfe steht: The format is: $M=expression ein paar Zeilen drunter: ^C^C$M=$(if,$(=,$(getvar,tilemode),0),$S=mview _mspace )^Z Also gar nicht mehr das Format das oben angepriesen wird. Warum fängt der Befehl plötzlich mit ^C^C an, muss ja einen Grund haben. Weil bei der Suche hier im Forum fangen die meisten Befehle mit ^C^C an. Was bedeuten diese ^Cs? Irgendwie stehe ich glaube ich auf dem Schlauch . Wäre nett wenn jemand Licht ins Dunkel bringen könnte. LG THE_ONE
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Jun. 2009 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für THE_ONE
Makros sind zusammengefßte Befehle, die einem Schaltelement -> Buttonmakro zugewiesen werden können diese Makros können DIESEL Befehle enthalten .. um diese Dieselstrings in der Commandozeile zu testen gibt es die Lispfunktion MENUCMD --> z.B. (menucmd "M=$(edtime,$(getvar,date),DDDD\",\" D MONTH YYYY)") ^^C simmuliert im Buttonmakro die ESC-Taste, also den Abrruch des evtl. noch ktiven vorherigen Befehls / .. ist = warten auf Benutzereingabe ; oder Leerzeich ist = ENTER usw.
steht aber alles auch in der Hilfe ------------------ - 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 |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2009
|
erstellt am: 17. Jun. 2009 12:08 <-- editieren / zitieren --> Unities abgeben:
Danke das erklärt einiges! Was mal klar ist ist dass Makros und DIESEL eng verzahnt sind (man kann aber auch LSIP Befehle anstatt DIESEL verwenden). Habe mich schon gefragt warum das Makro vom Move Befehl nicht funktioniert:
Code: (menucmd "M=$(IF,$(EQ,$(SUBSTR,$(GETVAR,CMDNAMES),1,4),GRIP),_MOVE,^C^C_MOVE)")
Da bekomme ich nämlich nur ^C^C_MOVE zurück. Zitat: Makros sind zusammengefasste Befehle, die einem Schaltelement -> Buttonmakro zugewiesen werden können
D.h. Makrobefehle lassen sich nur per Button ausführen?? also nicht per Kommandozeile und daher funktioniert mein Befehl oben auch nicht, korrekt?Außerdem schreibst du: Zitat: / .. ist = warten auf Benutzereingabe
in der Hilfe steht aber (hab jetzt endlich diese Seite gefunden): Dass \ für eine Benutzereingabe steht.gibt es irgendwo ein vernünftiges Tutorial zu Makros (ohne Diesel)? oder eine Beginnersguide? Denn in der Hilfe wird immer abgeschweift auf DIESEL, die Hilfe scheint dazu etwas dürftig zu sein. Da ich oft etwas verschiebe denke ich schon seit geraumer Zeit darüber nach mir einen Spezial Schiebebefehl zu basteln. Der bei der der Auswahl der Zielposition immer m2p (Mittelpunkt zwischen 2 Punkten) ausführt Wie schaft man es z.b. nach der zweiten Benutzereingabe m2p automatisch einzugeben. Sollte ja eingentlich das hier sein:
Code: ^C^C_move \ \ m2p;
Leider bekomme ich dann immer m2p unkown command
oder das selbe bei rotate. Ich muss oft um 90 grad drehen.
Code: ^C^C_rotate \ \ 90;
-> macht auch nicht das was es soll. Einmal wenn ich genau ein Objekt auswähle dann verschwindet das Objekt und der Befehl wird neu gestarted. Wenn ich per Kreuzenfenster wähle, dann verschwindet zwar das Objekt nicht aber der Winkel wird nicht automatisch eingegeben. Als wie wenn das 90; nicht da wäre.Gibt sicher noch mehr einfache Beispiele, würde mich ja wundern wenn es dazu nichts geben würde im Internet. Leider bin ich beim googln gerade etwas ungeschickt bei der Begriffswahl Lg THE_ONE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 17. Jun. 2009 12:20 <-- editieren / zitieren -->
Hi, schon richtig, ein Leerschritt in Deinem Befehl ist gleichbedeutend mit <Enter>; ABER: Wenn Du schon durch '\' den Anwender zur Eingabe aufforderst, dann wartet AutoCAD, bis der Anwender <Enter> drückt, durch den nachfolgenden Leerschritt schiebst Du dann nochmals ein zusätzliches <Enter> nach. Also sollte z.B. so aussehen (ich mach immer ';' statt Leerschritte, denn dann kann ich leichter <Enter> zählen): ^C^C_rotate;\\90; - alfred - ------------------ www.hollaus.at |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 17. Jun. 2009 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für THE_ONE
Zitat: Da ich oft etwas verschiebe denke ich schon seit geraumer Zeit darüber nach mir einen Spezial Schiebebefehl zu basteln. Der bei der der Auswahl der Zielposition immer m2p (Mittelpunkt zwischen 2 Punkten) ausführt Wie schaft man es z.b. nach der zweiten Benutzereingabe m2p automatisch einzugeben. Sollte ja eingentlich das hier sein: Code:^C^C_move \ \ m2p; Leider bekomme ich dann immer m2p unkown command
m2p würd ich mal mit _m2p versuchen, wie eigentlich alles bei ACAD: immer international. desweiteren: was mach \ \ für einen Sinn? Ich würde es mal mit Code: _move;\;_m2p;\_m2p;\
versuchen. Oft schon vorgeschlagen für Herangehensweise an Makros: Geh es in der Befehlszeile Schrit für Schritt durch und notier Dir jeden Klick/Eingabe. Also in diesem Fall: Befehl _move Objekt wählen Basispunkt wählen über _m2p Zielpunkt wählen über _m2pIch hoffe, ich hab's richtig verstanden. Den FAQ-Beitrag zu Makros kennst Du schon? ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2009
|
erstellt am: 17. Jun. 2009 12:31 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von a.n.:
^C^C_rotate;\\90;
Danke für den Versuch. Funktioniert aber leider auch nicht! Einmal wenn ich das Objekt direkt wähle rotiert er mir automatisch um den 0 Punkt (0,0), und wenn ich über Kreuzenfenster wähle. Dann schreibt er mir das 90 dort rein wo ich eigentlich den Basispunkt fürs rotieren wählen müsste. -> hartnäckiges Problem *grrr*, das ganze scheint nicht wirklich trivial und einfach zu sein. LG THE_ONE
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Jun. 2009 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für THE_ONE
|
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2009
|
erstellt am: 17. Jun. 2009 12:50 <-- editieren / zitieren --> Unities abgeben:
Zitat:
Ich würde es mal mit Code: _move;\;_m2p;\_m2p;\
versuchen.
Also, funktioniert auch nicht. Code: _move;\;\_m2p;\
-> Das funktioniert (wenn man exakt ein Element auswählt), solange man nicht über Kreuzenfenster wählt. Weil dann geht es auch wieder nicht. Das heißt man müsste wahrscheinlich einen DIESEL (LISP) Befehl einbauen der abfragt wie die Objekte gewählt wurden. Zitat:
Den FAQ-Beitrag zu Makros kennst Du schon? [/B]
Ja kannte ich schon. Zitat:
Original erstellt von CADmium: (command "_rotate"(ssget)""(getpoint "\Drehpunkt wählen:")90)
Danke für deine Hilfe, aber das es in Lisp geht war mir eh klar. Ich wollte das aber mit Makros lösen. Dieser Thread soll nicht dazu da sein mir ein konkretes Beispiel zu lösen, obwohl ich dir dafür sehr dankbar bin, sondern Leuten helfen sich mit Makros auszukennen. \ bedeutet ja dass ich auf eine Benutzereingabe warte, muss ich diese mit; bzw Leerzeichen abschließen? Scheint ja auch nicht wirklich Konsens darüber zu herrschen, da wie man sieht es jeder anderes macht, und es auch was anderes bewirkt, obwohl alle das selbe wollen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Jun. 2009 14:31 <-- editieren / zitieren --> Unities abgeben: Nur für THE_ONE
Beim Makro mußt du bei den Parametern auch immer PICKFIRST, Elemente schon gewählt oder erst noch zu wählen , ect. berücksichtigen und entsprechend tatsächlich benötigter Parameter verzweigen .... evtl. also noch mit _select arbeiten .... dadurch verkompliziert sich aber alles, so daß ich die eine command-Zeile vorziehe. ------------------ - 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 |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 17. Jun. 2009 23:46 <-- editieren / zitieren --> Unities abgeben: Nur für THE_ONE
Wenn du den FAQ-Beitrag kennst, warum nimmst du dann die Sachen nicht einfach mal an die darin stehen !? Als allererstes Semikolon statts Leerzeichen für ein <Enter> Zum testen von Makros in der Befehlszeile nimmst du das dort gepostete Lisp, Befehlsaufruf ist dann "Diesel" und danach einfach deinen Dieselstring eingeben. <kommt Zeit kommt auch die Erweiterung dieses FAQ-Artikels..>\ bedeutet ja dass ich auf eine Benutzereingabe warte, muss ich diese mit; bzw Leerzeichen abschließen? Warum testest du es nicht einfach ? (Das ist erstens der schnellste und zweitens der beste Weg zu lernen) Schau dir auch einfach mal die tausend anderen Makros hier im Forum an. Scheint ja auch nicht wirklich Konsens darüber zu herrschen, da wie man sieht es jeder anderes macht, und es auch was anderes bewirkt, obwohl alle das selbe wollen.
Das stimmt nicht so ganz, erstens kann es ja mehrere Wege geben, zweitens ist auch nicht jeder gleich gut im erstellen von Makros und daher weichen auch die Wege/Lösungen ab. Ungetestete Makros sind natürlich sowieso immer "wackelig" auf den Beinen. Schau dir das mal an: ^C^C_select;\_.move;_p;;\_m2p ^C^C_.select;\_.rotate;_p;;\90 usw. Weil der Befehl WAHL (_select) Alle Objektwahlmöglichkeiten für ein Makro bereithält nimmt man diesen am besten vor dem Befehl und bei der Objektwahl des Befehles sagt man einfach nur VorherigerAuswahlsatz (V oder _P) - so kann ein oder mehrere Objekte gewählt werden. usw. Kannst ja uch mal über die alte Suchmaschine oder Google nach meine Posts suchen in denen es um Makros geht, da gibt es mitlerweile viele. ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|