| |
| 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: Lisp in Lisp (2233 / mal gelesen)
|
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 09. Feb. 2018 11:07 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr Lieben Ich hätte eine Frage zu "Lisp in Lisp ausführen" Ich habe eine kleine Lisp zusammen gestellt, welche den eingegeben Buchstabe markiert und diese in einem Block zusammenfasst: (defun C:LeuBlo (/ str ss) (setq str (getstring "\nBuchstabe: ")) (if (setq ss (ssget "_X" (list (cons 0 "*TEXT") (cons 1 str) (cons 410 (getvar 'ctab))))) (sssetfirst nil ss) ) (if (and (setq insertionpoint (list 0 0 0))) (progn (command "_.-Block" str insertionpoint ss "") (command "_.-insert" str insertionpoint "" "" "") ) (princ) ) (princ) ) Jetzt würde ich gerne diese mit den Buchstaben A, B, C... Z, im Plan durchlaufen lassen, sprich so, dass alle selben Buchstaben in Blöcke zusammen gefasst werden.
(defun c:LeGr() (command (C:Leublo) "A") (command (C:Leublo) "B") (command (C:Leublo) "C") (princ) ) Jedoch funktioniert dies mit dem "command-Befehl" nicht so wie gewünscht. Könnte mir vielleicht jemand in diesem Problem weiterhelfen, den ich habe schon ziemlich alles ausprobiernt. Gruss Emanuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Feb. 2018 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
|
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 09. Feb. 2018 13:39 <-- editieren / zitieren --> Unities abgeben:
Wow das ging schnell. Funktioniert leider jedoch nicht ich bekomme: "VVC: Internal Error". Ich finde den Fehler nicht, ich denke die Verweisung auf die mapcar ist fehlgeschlagen. Ich kenne den lambda-befehl nicht. =/ Lisp in Lisp funktioniert so nicht, wie ich das wollte, denke ich mal? Vielen Dank für deine Hilfe, du hast mir schon sehr viel Arbeit bei der Arbeit abgenommen!!=D Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Feb. 2018 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Feb. 2018 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
|
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 09. Feb. 2018 15:07 <-- editieren / zitieren --> Unities abgeben:
Ist das jetzt auf die Lisp/Lisp bezogen? (defun c:LeGr() (command-s (C:Leublo) "A") (princ) ) Du hast kein command-Befehl in deiner mapcar. Ich habe einige Variationen bei deiner Lisp ausprobiert, jedoch funktioniert keine davon. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 09. Feb. 2018 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
|
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 09. Feb. 2018 18:05 <-- editieren / zitieren --> Unities abgeben:
Dann würde die fertige Lisp so aussehen (welche bei mir jedoch nicht funktioniert?): (defun LeuBlo (STRING / str ss) (if(and(=(type STR)'STR) (setq ss (ssget "_X" (list (cons 0 "*TEXT") (cons 1 str) (cons 410 (getvar 'ctab)))))) (sssetfirst nil ss) ) (if (and (setq insertionpoint (list 0 0 0))) (progn (command "_.-Block" str insertionpoint ss "") (command "_.-insert" str insertionpoint "" "" "") ) (princ) ) (princ) ) (mapcar (foreach X '("A" "B" "C" "D" "E") (LeuBlo X)) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 09. Feb. 2018 23:55 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 10. Feb. 2018 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
Hi, Zitat: Original erstellt von CADmium: (defun LeuBlo (STRING / str ss) (if(and(=(type STR)'STR) (setq ss (ssget "_X" (list (cons 0 "*TEXT") (cons 1 str) (cons 410 (getvar 'ctab)))))) (sssetfirst nil ss) ) (if (and (setq insertionpoint (list 0 0 0))) (progn (command "_.-Block" str insertionpoint ss "") (command "_.-insert" str insertionpoint "" "" "") ) (princ) ) (princ) ) (mapcar '(Lambda(X)(LeuBlo X)) '("A" "B" "C" "D" "E") )
Schaut Euch doch mal die Variablenübergabe an, dann sieht man sofort dass das nicht funktionieren kann da STRING nirgends ausgewertet wird
Code:
(defun LeuBlo (str / ss)
und schon passt es Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 10. Feb. 2018 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für Emu1989
Zitat: Original erstellt von Emu1989: Ist das jetzt auf die Lisp/Lisp bezogen?(defun c:LeGr() (command-s (C:Leublo) "A") (princ) ) Du hast kein command-Befehl in deiner mapcar. Ich habe einige Variationen bei deiner Lisp ausprobiert, jedoch funktioniert keine davon.
Der Command ist ja auch in Deiner Ursprungsfunktion:
Code:
(progn (command "_.-Block" str insertionpoint ss "") (command "_.-insert" str insertionpoint "" "" "") )
Zu mapcar / lambda siehe hier Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 12. Feb. 2018 08:20 <-- editieren / zitieren --> Unities abgeben:
|
Emu1989 Mitglied Elektroplaner
Beiträge: 26 Registriert: 10.11.2015 AutoCAD 2018
|
erstellt am: 28. Jun. 2019 13:13 <-- editieren / zitieren --> Unities abgeben:
Für die die es interessiert, wie mehrere lisp mit einer ausgeführt werden: (defun c:serie ( / tag) (setq tag "") (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "lispbefehl1\r\r" tag "\r")) (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "lispbefehl2\r\r" tag "\r")) (princ) ) Gruss Emanuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |