Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lisp in Lisp

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:  Lisp in Lisp (2106 mal gelesen)
Emu1989
Mitglied
Elektroplaner


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 09. Feb. 2018 11:07    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 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




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Feb. 2018 11:37    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 Emu1989 10 Unities + Antwort hilfreich

(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")
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Emu1989
Mitglied
Elektroplaner


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 09. Feb. 2018 13:39    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

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




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Feb. 2018 13:57    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 Emu1989 10 Unities + Antwort hilfreich

ach ja ... command in mapcar geht nicht mehr ... muss command-s heißen

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Feb. 2018 13:57    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 Emu1989 10 Unities + Antwort hilfreich

ach ja ... command in mapcar geht nicht mehr ... muss command-s heißen

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Emu1989
Mitglied
Elektroplaner


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 09. Feb. 2018 15:07    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

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


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 09. Feb. 2018 15:28    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 Emu1989 10 Unities + Antwort hilfreich

Hallöle,
alternativ zu MAPCAR (wenn COMMAND's beinhaltet sind) kann FOREACH verwendet werden:

(foreach X '("A" "B" "C" "D" "E")
    (LeuBlo  X))

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Liniensignaturen Youtube

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

Emu1989
Mitglied
Elektroplaner


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 09. Feb. 2018 18:05    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

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


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 09. Feb. 2018 23:55    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 Emu1989 10 Unities + Antwort hilfreich

Hallo Emu,nur kurz vom Handy getippt: Nimm das MAPCAR weg und nur die Funktion FOREACH, dann klappt es bestimmt auch.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Liniensignaturen Youtube

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



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2020
Plateia, Canalis
Visual Basic

erstellt am: 10. Feb. 2018 09:39    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 Emu1989 10 Unities + Antwort hilfreich

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



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2020
Plateia, Canalis
Visual Basic

erstellt am: 10. Feb. 2018 10:00    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 Emu1989 10 Unities + Antwort hilfreich

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


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 12. Feb. 2018 08:20    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

Moin alle zusammen.
Super das String wars '=D.
Danke euch allen 1000mal für die super Hilfe, ihr seit echt die Besten.
Ich hoffe doch, dass ich auch mal helfen kann.

schöne Woche

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

Emu1989
Mitglied
Elektroplaner


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

Beiträge: 26
Registriert: 10.11.2015

AutoCAD 2018

erstellt am: 28. Jun. 2019 13:13    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

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

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