| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Funktionen mit TAST belegung (979 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Dez. 2012 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo! Mein Vorhaben ist, das ich je nach Benutzung mir Funktionen auf die Tastatur legen will. Sprich sie einfach ansprechbar werden durch Eingabe 1 oder 2 oder 3.... a oder b oder c... Zunächst möchte ich dazu eine Setup funktion erstellen, die mir die jeweilige Buchstaben/Zahl Taste bestimmt (in "str") und die dazugehörige Funktion (in "com"). Ist das überhaupt so durchführbar ?
Code:
(defun c:setup () (setq str (getstring "\nEingabe [Buchstabe] für einen Befehl ")) (setq com (getstring "\nEingabe der zugehörigen [Funktion] ")) (defun str (c:com)) )
------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 05. Dez. 2012 19:36 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 05. Dez. 2012 19:51 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hab sowas noch nicht probiert, aber ich schätze Code: (defun str (c:com))
wird nicht wie gewünscht funktionieren, Du willst ja einen Befehl definieren, also (defun c:...). Und falls es nicht jemand besser weiß, würde ich einfach probieren - ev. unter Einbeziehung von set und read ...?
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 06. Dez. 2012 08:15 <-- editieren / zitieren --> Unities abgeben:
Zu der Frage, nicht immer ist alles sinnvoll, was einem einfällt. Jedoch bin ich angeregt immer mein Arbeitsset zu hinterfragen und evtl. zu verbessern. Die Idee jetzt einen Befehl nur durch drücken einer Taste auszuführen rührt von den Kurzcommandos der alias her. Da ich ein Fan von kürzeln bin, möchte ich die Sache noch erweitern: Ich habe eine Vorlage erzeugt, die die Tastatur darstellt und im Hintergrund Buttons installiert, die beim anklicken mit der Maus die Eingabe eines Befehls simmulieren sollen. Allerdings ist mein Frage an dem Beispiel (defun c:a () (c:MeinBefehl)), wie man das via LISP simmulieren kann, denn so kann ich bei einem häufig auftretenden Befehlsaufruf einfach nur die Taste "A" drücken. Wenn ich sage (setq str "A") (setq com "MeinBefehl") (strcat "(defun c:" str "() (c:" com "))") dann erhalte ich einen String "(defun c:A() (c:MeinBefehl))", den ich als Eingabe simmulieren möchte. Ist das machbar ? ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 06. Dez. 2012 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
hallo cadplayer, ich rate jetzt mal ins blaue (vielleicht meinst du ja sowas) 1. moeglichkeit in irgendeine lsp-datei funktionen schreiben, und diese dann laden
Code:
(setq dad (open (findfile "alias.lsp") "a")) (write-line (strcat "(defun c:" newAliasName " () " "(MachWasFunktion))") dad)
2. moeglichkeit
Code:
(setq string "(defun c:newAliasName() (vl-cmdf \"_line\"))") (eval (read string))
mit beiden moeglichkeiten wird eine neue funktion "newAliasName" definiert ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 06. Dez. 2012 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Ja ich rate auch mal so richtig klar ist es mir bis jetzt noch nicht. Aber hier mal was zum ausführen eines Befehls. Code: (defun c:ccc (/ adoc) (setq adoc (vla-get-activedocument (vlax-get-acad-object))) (vla-sendcommand adoc "(command \"_line\")\r") )
und hier noch ein Bsp. zum abfangen von Tastatureingaben. Code: (princ "\nWahl:Taste \"L\" oder \"B\"") (setq grread_Wert (vl-catch-all-apply 'grread)) (cond ((vl-catch-all-error-p grread_Wert) T) ((equal grread_Wert '(2 108));Taste L (progn (princ "\nTaste L gedrückt") (princ) ) ) ((equal grread_Wert '(2 98));Taste B (progn (princ "\nTaste B gedrückt") (princ) ) ) )
vielleicht hilft es ja. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 06. Dez. 2012 09:15 <-- editieren / zitieren --> Unities abgeben:
Marco, dein Beispiel funktionier aber nur bei von Autocad internen Befehlen, wenn ich allerdings eine Funktion (c:MeinBefehl) habe dann kommt "LISP command is not available" Meldin dein Beispiel gehe ich mal dem Mittag durch! Danke für die rege Beteiligung. ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 06. Dez. 2012 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Marco, dein Beispiel funktionier aber nur bei von Autocad internen Befehlen, wenn ich allerdings eine Funktion (c:MeinBefehl) habe dann kommt "LISP command is not available"
das bezweifel ich (wenn mans richtig macht). deine eigene funktion:
Code: (defun c:comfunc() (print "funktioniert"))
alias definieren
Code: (setq string "(defun c:bsp() (c:comfunc))")
alias bekannt geben:
Code: (eval (read string))
alias starten: Befehl: bsp "funktioniert" "funktioniert" gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 06. Dez. 2012 14:59 <-- editieren / zitieren --> Unities abgeben:
|