| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Alias für eigene Befehlsfolgen erstellen (5535 mal gelesen)
|
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 11:13 <-- editieren / zitieren --> Unities abgeben:
Servus Forum, Servus Profis, Meine Frage kurz und knapp: Kann man für eigene Befehlsfolgen (Scripte, Makros oder wie sie sonst heißen) eigene Aliasnamen vergeben, die dann auch - wie ein Standardbefehl - über die Befehlszeile bzw. als Kurztastenbefehl über die PGP-Konfiguration aufgerufen werden können?? Für sachdienliche Hinweise bereits jetzt dankend E. Furtner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Mrz. 2010 12:15 <-- editieren / zitieren -->
Hi, leider nein, ABER: Du kannst Dir in AutoCAD eigene Befehle erstellen, die einfachste Form mittels LISP. (defun C:myCircle()(command "_circle" "2P")) und als Alias kannst Du definieren MC, *myCircle Das LISP muss in diesem Fall vorher geladen sein, sonst funkt auch der Befehl MC nicht. Oder Du definierst Dir gleich die Funktionen mit LISP
(defun C:MC()(command "_circle" "2P")) Dann brauchst Du nur das LISP laden und Dir steht in der Befehlszeile der Befehl MC zur Verfügung. Das LISP-Statement ist für einfache Befehlsfolgen sehr simple: defun C:MC() ==> steht für neuer Befehl namens 'MC' (command "_circle" "2P") ==> command bedeutet schlicht, folgendes einfach an die Befehlszeile senden, als würde es vom Anwender eingegeben. In diesem Fall Kreis mit Option 2-Punkte. HTH, - alfred -
------------------ www.hollaus.at |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2490 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 01. Mrz. 2010 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Erwin Furtner
Hi Erwin, und dann gäbe es noch die Lisp Funktion "Autoload". Nachzulesen in der AutoCAD Hilfe. Eingetragen in die acaddoc.lsp würde Autoload bei Aufruf eines mit defun c: definierten Befehls in einer Lisp Datei eben diese vorher automatisch laden. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fips Mitglied Lehrer
Beiträge: 544 Registriert: 22.05.2001
|
erstellt am: 01. Mrz. 2010 17:25 <-- editieren / zitieren --> Unities abgeben: Nur für Erwin Furtner
|
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 18:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe mir die Lisp-Geschichte mal angesehen, würde mir auch gefallen, klappt mir aber leider nicht bei längeren Befehlsreihen... Ausserdem arbeiten wir auf AutoCAD 2010 OEM welches APPLOAD, die ACAD.lsp sowie ACADdoc.lsp nicht unterstützt. Die Fragen, die sich nun stellen: - Gibt es eine Möglichkeit, auf die von Alfred beschriebene Weise auch längere Befehlsreihen aufzurufen? - Gibt es zudem die Möglichkeit, mehrerer solcher Befehle in einer Lisp-Datei zu definieren? (damit man nur eine Datei über einen, vom OEM-Partner bereitgestellten Umweg laden muss) Nachdem "längere Befehlsreihen" keine konkrete Angabe darstellt, ich aber aus rechtlichen Gründen die Originale nicht veröffentlichen kann, habe ich ein paar ähnlich komplexe Geschichten aus dem AutoCAD-Standard als Beispiel für die Komplexität der Befehlsreihen angefügt: Kreis über Tangente: ^C^C_circle _3p _tan \_tan \_tan \ Kopieren: $M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_copy,^C^C_copy) Strecken: $M=$(if,$(eq,$(substr,$(getvar,cmdnames),1,4),GRIP),_stretch,^C^C_stretch) In den von mir benötigten Befehlsreihen werden Befehle zudem mit Strichpunkt [;] getrennt hintereinander geschrieben. Nachdem ich in LISP noch keine Erfahrungen sammeln konnte, hoffe ich sehr, dass es eine Lösung gibt, die aktuell nur als Schaltfläche zur Verfügung stehenden Befehle - über Kurztasten bedienbar machen zu können... Am Rande: Kann mir jemand einen guten Link empfehlen, wo man mehr über die Grundlagen zu LISP erfahren und die Sprache ggf. sogar erlernen kann? Beste Grüße Erwin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Mrz. 2010 18:35 <-- editieren / zitieren -->
Hi, >> Ausserdem arbeiten wir auf AutoCAD 2010 OEM welches APPLOAD, die ACAD.lsp >> sowie ACADdoc.lsp nicht unterstützt. Wenn Deine OEM-Version das nicht kann, dann versuch mal: Parallel zu Deiner Menüdatei eine gleichnamige MNL-Datei zu legen (wird mit jedem Ladevorgang des Menüs mitgeladen), ist eigentlich eine Lisp-Datei mit anderer Extension. z.B. Dein Menü nennt sich 'myMEN.cuix', dann benennst Du Deine LISP-Datei 'myMEN.mnl' In dieser kannt Du Deine Definitionen 1:1 hintereinander schreiben, z.B. (defun C:MC1()(command "_circle" "2P")) (defun C:MC2()(command "_circle" "3P")) Du kannst ev. auch in der Hilfe nachsehen, mit welchen Methoden in der OEM-Version LISP-Dateien geladen werden können. ==> diese Info könnte auch für nachfolgende hilfreich sein! Siehe auch PM - alfred - ------------------ www.hollaus.at |
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 21:32 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, ich habe Deinen Tipp getestet, muss aber leider sagen, dass ich keinen Erfolg hatte! Eine Lisp-Datei mit einer Zeile kann ich über die Befehlszeile ohne weiteres laden und funktioniert auch... Auch die Datei, welche Deine beiden Beispiel-Codes enthält wurde geladen, beim Aufruf von MC1 oder MC2 bekomme ich aber die Meldung "Unbekannter Befehl"! Die Geschichte mit der MNL-Datei habe ich ebenfalls versucht... (> habe die LISP-Datei, die ich manuell laden und ausführen konnte, einfach umbenannt und zu den CUIx's gepackt) Der Befehlsaufruf wurde aber auch nur mit "Unbekannter Befehl" quittiert! (Weshalb ich davon ausgehe, dass die Datei nicht geladen wurde) Wenn ich die Geschichte mit den mehreren Befehlsdefinitionen in einer Datei sowie die Sache mit den umfangreichen Befehlsreihen nicht auf die Reihe bekomme, kann ich wahrscheinlich vergessen, die Funktionen über eine Kurztastenbelegung aufrufen zu können...! Oder? Gruß Erwin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 21:38 <-- editieren / zitieren --> Unities abgeben:
Nachtrag zur Hilfe, Es sieht so aus, als ob bei unserer OEM-Version die Hilfe der Vollversion beigefügt ist... Sämtliche Befehle, von denen ich bereits weiss, dass sie in der OEM nicht funktionieren (inkl. APPLOAD usw.) sind dort relativ umfassend (ohne Hinweise auf OEM) beschrieben! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Mrz. 2010 22:02 <-- editieren / zitieren -->
Hi, nur mal zur Klarheit bitte folgenden Versuch: Diesen Inhalt in der Datei C:\TEMP\ShortCuts.lsp speichern: (defun C:MC1()(command "_circle" "2P")) (defun C:MC2()(command "_circle" "3P")) Dann AutoCAD starten, in der Befehlszeile eingeben (Vorsicht auf die Art der Schrägstriche! Nicht Backslash verwenden!): (load "C:/TEMP/ShortCuts.lsp") Sollte zum einen mal in der Befehlszeile rückmelden: C:MC2 Zum anderen sollten jetzt beide Befehle verfügbar sein. Wenn das nicht der Fall ist, dann lass mich wissen, ab wo meine Beschreibung nicht mehr stimmt. - alfred - ------------------ www.hollaus.at |
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 22:33 <-- editieren / zitieren --> Unities abgeben:
Servus Alfred, 1) Die Zeilenschaltung der beiden Codezeilen kann auch in der Form in die Lisp-Datei übernommen werden! Oder? 2) Die Problematik beginnt (und endet) mit der Eingabe in der Befehlszeile: >> nach der Eingabe des Leerzeichens hinter "(load" erscheint die Meldung "(load LISP-Befehl ist nicht verfügbar." Die bisherige Variante, die LISP-Datei zu laden war folgende: Befehl: REVAL [Enter] Lisp Befehl: (<OEM-Partner>j em:load "c:/temp/shortcuts.lsp" nil) [Enter] C:MC2 [Enter] > Nun kann ich - wenn alles passt - den Befehl eingeben und er wird auch ausgeführt (wenn nur eine Zeile in der LISP-Datei enthalten ist. Wenn ich nun beide Varianten (frecherweise) kombiniere und folgenden Ablauf wähle: Befehl: REVAL [Enter] Lisp Befehl: (load "c:/temp/shortcuts.lsp") [Enter] erscheint: Fehler bei LOAD: "c:/temp/shortcuts.lsp" Ich hoffe, Du kannst Dir einen Reim daraus machen! Gruß Erwin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 22:38 <-- editieren / zitieren --> Unities abgeben:
OOps: Der Smily ist offenbar durch eine automatische Ersetzung dazwischen gerutscht! Anstelle des Smily stehen im Original noch ein Doppelpunkt [:] gefolgt von einem Leerzeichen und einem "O" für OEM... (wenn man sich schon Ausnahmsweise keine Vorschau anzeigen lässt...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Mrz. 2010 22:43 <-- editieren / zitieren -->
Hi Erwin, den Befehl REVAL kenne ich nicht und damit vermute ich mal, dass dies entweder ein nur in der OEM-Version definierter Befehl ist oder nur per Applikation (mit der Du die OEM-Version erworben hast) zur Verfügung steht. Dazu kommt, dass ich nicht's mit LISP am Hut habe. Ich kann Dir nur sagen, dass meine Vorgehensweise in normalem AutoCAD funkt. Ich würde es auch verstehen, wenn die OEM-Version Befehle blockiert, die eine Erweiterung von AutoCAD-OEM zulassen könnten, denn dann wärs ja nicht mehr applikationsgebunden und damit günstiger. Vielleicht kann noch jemand mit LISP-Kenntnissen was damit anfangen, ich fürchte, dass ich an dieser Stelle out bin, sorry! - alfred - ------------------ www.hollaus.at |
Erwin Furtner Mitglied Schreinermeister / techn. Administration
Beiträge: 71 Registriert: 12.01.2009 Betriebssystem: Windows XP / Windows Vista AutoCAD-Version: 2010/2011 (OEM)
|
erstellt am: 01. Mrz. 2010 23:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred, hilft leider nix! Ich hoffe, dass ich unseren OEM-Dealer noch davon überzeugen kann, dass eine Erweiterung um befehlszeilenfähige und somit PGP-taugliche Befehlsaufrufe für viele Kunden interessant sind, um die tägliche Arbeit mit der Applikation zu beschleunigen! (auch wenn manche Anwender lieber weiter bunte Bildchen klicken ;-)) Besten Dank trotzdem für Deine Mühe! Erwin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|