| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Linientyp in Layerdefinition ändern (2757 mal gelesen)
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 685 Registriert: 26.07.2005 AutoCAD 2021 Linear Building 18 Linear CAD Solutions 18 C.A.T.S. Windows 10 64bit
|
erstellt am: 12. Dez. 2016 09:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, folgendes Problem: Ich bekomme Dateien aus Microstation, die ihre eigenen Linientypen mitbringen. Diese möchte ich gerne durch ACAD-Linientypen ersetzen. Die Eigenschaften sind immer VONLAYER, ich brauche also "nur" den Layern in der Definition den neuen Linientyp zuweisen. Jetzt das Problem: Die Linientypen sind immer dieselben, die Layer aber nicht. Händisch ist das nicht weiter schwer, ich suche aber eine Lösung, mit der das automatisiert gelöst werden kann. Mit -layer brauche ich ja den konkreten Layernamen, und an der Stelle gehen mir die Ideen aus. Vielen Dank schon mal für Denkanstöße, Musicus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
csfalk Mitglied IT-Admin / CAD-Zeichner
Beiträge: 204 Registriert: 14.06.2012 AutoCad Civil 3D 2020-20223 Autoturn Rehm Wasserwirtschaft Fluss Flussplot Cross Graps Hykas Kanalplot W10 x64
|
erstellt am: 12. Dez. 2016 10:05 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 685 Registriert: 26.07.2005 AutoCAD 2021 Linear Building 18 Linear CAD Solutions 18 C.A.T.S. Windows 10 64bit
|
erstellt am: 12. Dez. 2016 10:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian, das habe ich schon geschrieben, wenn ich über die Layersteuerung gehe (-layer), muss ich den konkreten Layernamen eingeben. Da die in jedem Plan anders sein können, komme ich an der Stelle nicht weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 12. Dez. 2016 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Probiers mal hiermit (defun LTCHANGE ( LTYPES / LT NEWLT ITEM) (vl-load-com) (if(and(=(type LTYPES)'LIST) (vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES) ) (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (setq LT (vla-get-linetype ITEM)) (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES)))) (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-linetype (list ITEM NEWLT)))) ) ) ) ) Aufruf (LTCHANGE '(("Alter_LT1" "Neuer_LT1") (("Alter_LT2" "Neuer_LT2") (("Alter_LT3" "Neuer_LT3"))) z.B: (LTCHANGE '(("AM_DIN_G_W050" "HIDDEN") ("AM_ISO02W050" "CENTER")("Linie" "Continuous")))
------------------ 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 |
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 685 Registriert: 26.07.2005 AutoCAD 2021 Linear Building 18 Linear CAD Solutions 18 C.A.T.S. Windows 10 64bit
|
erstellt am: 12. Dez. 2016 11:23 <-- editieren / zitieren --> Unities abgeben:
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 23. Mrz. 2020 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!
Zitat: Original erstellt von CADmium: Probiers mal hiermit(defun LTCHANGE ( LTYPES / LT NEWLT ITEM) (vl-load-com) (if(and(=(type LTYPES)'LIST) (vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES) ) (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (setq LT (vla-get-linetype ITEM)) (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES)))) (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-linetype (list ITEM NEWLT)))) ) ) ) ) Aufruf (LTCHANGE '(("Alter_LT1" "Neuer_LT1") (("Alter_LT2" "Neuer_LT2") (("Alter_LT3" "Neuer_LT3"))) z.B: (LTCHANGE '(("AM_DIN_G_W050" "HIDDEN") ("AM_ISO02W050" "CENTER")("Linie" "Continuous")))
Ich habe jetzt eine LISP erstellt. Befehl: LTCHANGE Zu wenig Argumente Befehl: Das kommt dabei raus... Was mache ich denn falsch? Und mit dem Aufruf Befehl verstehe ich nicht. Muss ich das in die LISP integrieren oder ist das ein extra Befehl. Der Beitrag ist ja schon etwas älter, hoffe mir kann jemand helfen zu verstehen, was ich falsch mache. MFG Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Mrz. 2020 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Die Beschreibung des "Aufruf" zeigt dir im Detail wie du die Funktion nutzten kann. Da steht nicht LTCHANGE sondern (LTCHANGE '(("Alter_LT1" "Neuer_LT1")("Alter_LT2" "Neuer_LT2")("Alter_LT3" "Neuer_LT3"))) ; Zeile editiert Weiteres Beispiel (LTCHANGE '(("AUSGEZOGEN" "Continuous"))) Aber Achtung: Man kann nur Linientypen zuweisen wenn die auch existieren! Also muß dein Lisp/Script whatever zunächst alle benötigten Linientyp-Definitionen laden falls diese noch nicht in der DWG vorhanden sind.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 23. Mrz. 2020 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Ich verstehe immer noch nicht ob ich den "Aufruf" in die LISP packen muss oder extra. Allen Linientypen sind geladen. Nur nochmal zum Verständnis, was habe ich gemacht: Ich habe LTCHANGE.lsp erstellt, mit folgendem Inhalt: (defun LTCHANGE ( LTYPES / LT NEWLT ITEM) (vl-load-com) (if(and(=(type LTYPES)'LIST) (vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES) ) (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (setq LT (vla-get-linetype ITEM)) (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES)))) (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-linetype (list ITEM NEWLT)))) ) ) ) ) Ich lade diese LISP. Ich erstelle ein Werkzeug das (LTCHANGE '(("DGN Style 1" "VERDECKT2") (("DGN Style 2" "VERDECKT2") (("DGN Style 4" "STRICHPUNKT2") (("DGN Style 6" "GETRENNT2") (("DGN Style 7" "MITTE2"))) als Befehlsstring ausführt. Ergebnis: Befehl: (LTCHANGE '(("DGN Style 1" "VERDECKT2") (("DGN Style 2" "VERDECKT2") (("DGN Style 4" "STRICHPUNKT2") (("DGN Style 6" "GETRENNT2") (("DGN Style 7" "MITTE2")))) ('((_> *Abbruch* Funktion abgebrochen Das kommt dabei raus wenn ich den "Aufruf" ausführe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Mrz. 2020 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
1. Jetzt wolltest du es richtig anwenden, sehr gut. 2. Ach Mist, CADmium hatte einen Tipfehler im ersten Beispiel, das hatte ich dann noch einmal ungeprüft zitiert. Sein und mein zweites Beispiel sind aber korrekt - Das hast du natürlich nicht erkannt. Dumm gelaufen, aber warf dich jetzt nur eine Stunde nach hinten. 3. Die übergebene Liste muß so aussehen: (LTCHANGE '( ("ALT1" "NEU1") )) (LTCHANGE '( ("ALT1" "NEU1")("ALT2" "NEU2") )) (LTCHANGE '( ("ALT1" "NEU1")("ALT2" "NEU2")("ALT3" "NEU3") )) Siehst du den Aufbau?
Dann mal los: (LTCHANGE '(("DGN Style 1" "VERDECKT2")("DGN Style 2" "VERDECKT2")("DGN Style 4" "STRICHPUNKT2")("DGN Style 6" "GETRENNT2")("DGN Style 7" "MITTE2"))) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 24. Mrz. 2020 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Vielen dank, jetzt funktioniert es. Das schöne an dieser Methode ist das er einfach weiter läuft auch wenn ein Linientyp mal doch nicht mehr in der Zeichnung ist. Jetzt gibt es noch Linientypen die nicht auf "VON LAYER" stehen, sondern direkt einen Linientyp zugewiesen haben. Ich habe das dann so gelöst. (Ich weis, ist nicht gern gesehen mit dem Befehlsstring) ^C^C(sssetfirst nil (ssget "_X" '((6 . "DGN Style 1")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 2")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 4")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;STRICHPUNKT2;;(sssetfirst nil (ssget "_X" '((6 . "DGN Style 6")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;GETRENNT2;;(sssetfirst nil (ssget "_X" '((6 . "VERDECKT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;VERDECKT2;;(sssetfirst nil (ssget "_X" '((6 . "AM_DIN_F_W050x2")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;Continuous;;(sssetfirst nil (ssget "_X" '((6 . "DASHDOT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;STRICHPUNKT2;;(sssetfirst nil (ssget "_X" '((6 . "IMPORT")(410 . "Model"))));_CHANGE;EIgenschaften;LTYp;Continuous;; Wenn jetzt aber hier z.B. DGN Style 4 nicht in der Zeichnung ist, bricht er den Befehl dort ab... Gibts da ne Lösung? MFG Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 24. Mrz. 2020 21:26 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Ich sehe schon, weder die erste noch die jetzige Sache beschreiben die eigentliche Aufgabe! Daher ist es oft dennoch gut *alles* zu erzählen, auch wenn man selbst schonen einen Gedanken dazu hat. Richtige Frage/Aufgabenbeschreibung wäre wohl vermutlich gewesen: Ich möchte Linientypen austauschen/mischen, das ganze soll automatisiert ablaufen und Alle Vorkommen Linientyp"X" durch Linientyp"Y" ersetzen.
Aktuell hast du die Lösung für Linientypen in Layern und eine Lösung für Objekt-zugewiesene Linientypen. Dies funktioniert aber nicht wenn nicht mind ein Objekt i. Aktuellen Bereich vorhanden ist (andere Bereiche bearbeitet der Befehl Change nicht) und auch nur wenn diese Unverschachtelt vorliegen, also kein Atteibut, kein Blockinhalt. Man würde so allgemeingültige Tools finden, aber ich helfe mal nur in der aktuellen Frage: 1. Nicht gern gesehen in Makros und Scripten? Wenn es nicht anders geht, why not. 2. Soo lang würde ich aber doch fast eher ein Script empfehlen. 3.(if (ssget "_X" (list '(6 . "DGN 7")(cons 410 (getvar 'CTAB))))(command "_.chprop" "_p" "" "_LTYPE" "Continuous" "")) Oder so ähnlich. WENN du was gefunden hast, dann führe den Befehl aus.. Hilft das schon, oder brauchst du es genauer?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 11. Aug. 2020 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!
Zitat: Original erstellt von CADmium: Probiers mal hiermit(defun LTCHANGE ( LTYPES / LT NEWLT ITEM) (vl-load-com) (if(and(=(type LTYPES)'LIST) (vl-every '(lambda(X)(and(=(type X)'LIST)(=(type(car X))'STR)(=(type(cadr X))'STR)))LTYPES) ) (vlax-for ITEM (vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (setq LT (vla-get-linetype ITEM)) (if(setq NEWLT(cadr(assoc (strcase LT)(mapcar '(lambda(X)(list(strcase(car X)) (cadr X))) LTYPES)))) (not(vl-catch-all-error-p(vl-catch-all-apply 'vla-put-linetype (list ITEM NEWLT)))) ) ) ) ) Aufruf (LTCHANGE '(("Alter_LT1" "Neuer_LT1")("Alter_LT2" "Neuer_LT2")("Alter_LT3" "Neuer_LT3"))) z.B: (LTCHANGE '(("AM_DIN_G_W050" "HIDDEN")("AM_ISO02W050" "CENTER")("Linie" "Continuous")))
Wäre es möglich die LISP so zu schreiben das er * erkennt? Also das er alle Linientypen mit dem Inhalt *XYZ* Filtert. so z.B. (LTCHANGE '(("*STRICHPUNKT*" "STRICHPUNKT2"))) Suche nach Inhalt *STRICHPUNKT* und leg auf STRICHPUNKT2. [Diese Nachricht wurde von Manuel486 am 11. Aug. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 11. Aug. 2020 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Zitat: Original erstellt von Manuel486: Wäre es möglich die LISP so zu schreiben das er * erkennt?
Also die Frage kann auch ich beantworten: Ja Bin jetzt öfters beim Bäcker, die haben jetzt eine Klimaanlage im Verkaufsraum Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 12. Aug. 2020 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Moin Moin. Meine Eltern haben eine Bäckerei, aber leider keine Klimaanlage. Zitat: Wäre es möglich die LISP so zu schreiben das er * erkennt?
Ich stelle die frage mal anders: Welchen Zeitaufwand würde das mit sich bringen die LISP umzuschreiben? Würde das jemand hier hin bekommen? Wobei das wahrscheinlich auch mit Ja beantwortet werden kann. Ich weis dass es kein "bitte mach mir das mal (für umme)" Forum ist. Ich kann es auch nicht einschätzen wie lange ich dafür brauchen würde. Meine LISP Kenntnisse gehen gegen 0. LG Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 12. Aug. 2020 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Zitat: Original erstellt von Manuel486: Welchen Zeitaufwand würde das mit sich bringen die LISP umzuschreiben? Auf diesem Level? 2 Minuten +testen +im Forum antwortenWürde das jemand hier hin bekommen? Von denen die in Lisp programmieren und dabei nicht nur AutoCAD-Befehle steuern(command), Jeder.
Aber es ist nur ein Codebeispiel, kein fertiges Programm auf welches man einen User loslassen würde. Linientypen die nicht geladen sind? Linientypen die geladen werden können, ab in mehreren Definitionsdateien zu finden sind? Linientypen die nicht geladen werden können? Aufruf als Befehl? Optionen für Xref berücksichtigen Ja/Nein? Andere/Weitere Filterkriterien? Zb. Alle Layer mit Namen "*RAUM*" -> "Strichpunkt2".. Nicht nur Layer sondern auch Objekte berücksichtigen, Objekteigenschaft Linientyp? - auch verschachtelt in Blöcken? Grafische Benutzeroberfläche? usw. Es findet ja kein Ende und für jede einzelne Aufgabe ein neues Tool? eine neue Suche? Dann lieber einmal ein allgemeingültiges Werkzeug anschaffen mit dem man viele Dinge umsetzen kann und nicht nur eine spezifische Sache.
Da ist man schnell weg von "2 Minuten", hätte dann aber mind. ein Werkzeug welches man auch sorgenfrei einsetzen könnte und je nach Optionen auch noch viel mehr abdeckt. -
Hier mal eine reine AutoLISP Version welche ganz simple den -LAYER Befehl zum ändern nutzt, damit werden dann wenigstens die Standardlinientypen automatisch nachgeladen falls nötig. (aber ob das dann die Linientypdefinition ist welche man wollte? Besser ist vorab sicherzustellen die benötigten Linientypen geladen zu haben) Und du kannst es evtl. besser "lesen" und somit selbst anpassen. (defun LLTCHANGE (LTYPES / TND) ; LTypeSwap ohne XRef-Layer (while (setq TND (tblnext "LAYER" (not TND))) (if (wcmatch (cdr(assoc 2 TND)) "~*|*") (foreach LTYPE LTYPES (if (wcmatch (strcase (cdr(assoc 6 TND))) (strcase(car LTYPE))) (command "_.-LAYER" "_ltype" (cadr LTYPE) (cdr(assoc 2 TND)) "") ) ) ) ) (command "_.regenall") );_defun
(LLTCHANGE '(("Grenz*" "ZickZack")("Strichpunkt*" "Strichpunkt")))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 12. Aug. 2020 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
_.-LAYER Aktueller Layer: "0" Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]: _ltype Namen des geladenen Linientyps eingeben oder [?] <Continuous>: STRICHPUNKT2 Namensliste der/des Layer/s für Linientyp "STRICHPUNKT2" eingeben <0>: arc_SVL_Schnittverlauf Option eingeben [?/Machen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]: Befehl: _.-LAYER Der Befehl macht das was ich brauche. Warum habe ich hier jetzt eine Auflistung und bei dem LTCHANGE passiert nichts im Hintergrund. Denke ja mal das kommt vom _.-LAYER Befehl Habe mich etwas belesen, dass man das auch unterdrücken kann: Code: (defun LLTCHANGE (LTYPES / TND) ; LTypeSwap ohne XRef-Layer (while (setq TND (tblnext "LAYER" (not TND))) (if (wcmatch (cdr(assoc 2 TND)) "~*|*") (foreach LTYPE LTYPES (if (wcmatch (strcase (cdr(assoc 6 TND))) (strcase(car LTYPE))) (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.-LAYER" "_ltype" (cadr LTYPE) (cdr(assoc 2 TND)) "") (setvar "cmdecho" cmdecho) ) ) ) ) (command "_.regenall") );_defun
Raus kommt das hier: Befehl: (LOAD "G:/1000SONS/CAD/Faust/LISP/LLTCHANGE - Kopie.lsp") Syntaxfehler Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 12. Aug. 2020 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Für die Standard LTypes in der Acad(iso).pat Datei lädt er die nach, ja. Rückgabe im Textfenster kommt von dem Autocadbefehl, richtig. In CADmiums Version wird der Layer über die Programmierschnittstelle geändert, meine Version steuert einfach nur einen Autocadbefehl. CMDECHO ist korrekt! Freu!! Daher auch die Lösung: Schlage IF (AutoLISP) in der Hilfe nach, dort steht: IF erwartet einen Ausdruck, ist dieser wahr, dann wird der nächste Ausdruck (EINER) ausgewertet, optional der Zweite(wenn vorhanden).
Du hast nun aber 4 Ausdrücke welche alle ausgeführt werden sollen wenn die Bedingung wahr ist = Crash, weil max 2 erwartet werden. Einer für wahr, einer wenn nicht(optional). Die Lösung ist PROGN, siehe wieder [F1] (if (Bedingung)(progn(Ausdruck1)(Ausdruck2)(Ausdruck3)...)) Progn fasst mehrere zusammen, somit wird bei Wahr nur EINER übergeben, nämlich (progn .....) ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |