| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: String als Command ausführen (1498 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Sep. 2011 12:59 <-- editieren / zitieren --> Unities abgeben:
Moin ! wenn man einen String hat mit einem Ausdruck wie ^C^C(if(not c:Plan_Loaded)(load"IdcDGPlanIni")) (defun c lan_cmd (/) (tpl_ins_element "SIT" "----" "SIT_BL69-1")) plan_cmd kann man diesen irgendwie an AutoCAD übergeben und ausführen lassen - mögliche Modifikationen sind durchaus möglich. Gruß Jan :-) ------------------ jan :-) 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: 26. Sep. 2011 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
hallo jan, meinst du sowas: funktionsdefinition (defun c:xxx () (print 1)) (defun yyy () (print 2)) aufruf mit ((eval (read "c:xxx"))) ((eval (read "yyy"))) gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 26. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Sep. 2011 15:36 <-- editieren / zitieren --> Unities abgeben:
hi ! danke für die Rückmeldung. Wenn ich Dich aber richtig verstehe dann ist das (defun c:xxx () (print 1)) hardcodiert vorhanden ?? Deshalb schreibe ich sicherheitshalber nochmal meine Zeile - um keine Missverständnisse aufkommen zu lassen: STRING = "^C^C(if(not c:Plan_Loaded)(load\"IdcDGPlanIni\")) (defun c lan_cmd (/) (tpl_ins_element \"SIT" \"----" \"SIT_BL69-1\")) plan_cmd" Dann aufrufen der Funktion über STRING. Gruß Jan :-)
------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 26. Sep. 2011 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 26. Sep. 2011 16:11 <-- editieren / zitieren --> Unities abgeben:
hi ! das ^C^C muss nicht zwingend sein. Wäre es denn möglich eine Funktion wie "plan_cmd" oder Ausdrücke wie (tpl_ins_element "SIT" "----" "SIT_BL69-1")), die über eine Zeichenvariable übergeben werden entsprechend auszuwerten ?? Gruß Jan :-) ------------------ jan :-) 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: 26. Sep. 2011 16:29 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
funktionsdefinition Code:
(setq str "(defun c:plan_cmd (/) (tpl_ins_element \"SIT\" \"----\" \"SIT_BL69-1\"))") (eval (read str))
aufruf mit ((eval (read "c:plan_cmd"))) oder in der konsole mit plan_cmd besser? den definitionsstring musste dir aber selber extrahieren. gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 26. Sep. 2011 18:00 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Dez. 2011 13:17 <-- editieren / zitieren --> Unities abgeben:
Moin ! ich muss den Fall nochmal aufnehmen. Man kann ja regulär mit if (not Funktionsname)(load ....)) bei Bedarf eine Funktion nachladen. Nun habe ich Code: (if (not foundfunction) (alert "Meldung") ((eval (read foundfunction))) )
erstellt - aber da kommt bei einer ungültigen Funktion keinem Meldung. Habe ich da einen Denkfehler ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 08. Dez. 2011 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Dez. 2011 15:08 <-- editieren / zitieren --> Unities abgeben:
Hi ! also (type foundfunction) liefert ein STR. Wenn ich (type (eval (read foundfunction)) bei einer existierenden Funktion abfrage, dann kommt SUBR. So habe ich mir folgende Abfrage überlegt: (if (/= (type (eval (read foundfunction))) 'SUBR) (alert "war wohl nichts !") (alert "es kann losgehen") ) Aber da kommt es schon zu einer Fehlermeldung, wenn keine Funktion vorliegt. Eine andere Idee ? Gruß Jan :-) ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 08. Dez. 2011 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|