Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Funktionen mit TAST belegung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Funktionen mit TAST belegung (906 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 05. Dez. 2012 16:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 05. Dez. 2012 19:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Hallo Dirk,

das funktioniert so nicht.
Vie mehr interessiert mich aber die Antwort zu der Frage: Welche sinnvolle Anwendung du damit realisieren möchtest?

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Geos
Mitglied
Vermessungstechniker i.R.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 06. Dez. 2012 08:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von neurosis an!   Senden Sie eine Private Message an neurosis  Schreiben Sie einen Gästebucheintrag für neurosis

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 06. Dez. 2012 08:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 06. Dez. 2012 08:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 06. Dez. 2012 09:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von neurosis an!   Senden Sie eine Private Message an neurosis  Schreiben Sie einen Gästebucheintrag für neurosis

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 06. Dez. 2012 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Funktioniert einwandfrei jetzt. Muss noch einiges durchgehen mit DCL vorlage usw. komme später darauf zurück. Grundprinzip läuft - vielen Dank

------------------
Gruss Dirk

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz