Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Ignoriere alles außer...

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:  Ignoriere alles außer... (1467 mal gelesen)
C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 07. Dez. 2018 16:33    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,

kann man in Lisp irgendwie sagen "ignoriere alles außer..."?

Hintergrund ist folgender: Das LISP schaltet mir in allen Layouts die Layer entsprechend der ersten zwei Zeichen des Layoutnamens (diese sind in der Regel bei Layout und Layernamen gleich).
Das Problem sind Layoutbezeichnungen zu denen es keine Layerentsprechung gibt. Im Fall dieses Codes wären das alle Layouts außer die mit "E_*" und "Sm_*" beginnen.
Ich will praktisch erreichen, dass der Code nicht nach Layernamen sucht, die nicht mit "E_*" oder "Sm_*" anfangen. Also "Ignoriere alle Layouts außer die mit E_* und Sm_* beginnen".
Kann mir jemand einen Tipp geben, welche Funktion ich mir mal anschauen sollte/kann?

Code:
(command "-layer" "se" "0" "neu" "E_, Sm_" "")
(setvar "CTAB"(car(layoutlist)))
(command "aflayer" "f" "E_*,Sm_*" "al" "")
(foreach layout (layoutlist)
  (setvar "ctab" layout)
  (setq Lay12 (strcat(substr (getvar "ctab") 1 2) "*"))
        (command "_.mspace")
                        (command "AFlayer" "ta" Lay12 "w" "alle" "" "")
        (command "_.pspace")
                        (command "AFlayer" "ta" "*" "k" "")
);foreach
(command "CTAB" "Modell")
(command "bereinig" "al" "*" "n")

P.S. Der Code ist noch nicht International, muss mir die Engl. Befehlsreferenz noch anschauen ;-)
Die erste Zeile kann ich mir Wahrscheinlich irgendwie sparen, hab aber noch nicht soviel Plan wie ich das bewerkstellige
Das mit setq ("(setq Lay12...")  ist auch überflüssig, weiß ich, war nur so ein Test ;-)
Hier hat es angefangen: http://ww3.cad.de/foren/ubb/Forum54/HTML/033855.shtml

Gruß und schönes WE
Jörg

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 08. Dez. 2018 00: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 C4DP4P57 10 Unities + Antwort hilfreich

mal sehen..

Ignoriere Layout deren Namen..
Mögliche Lösung: IF

(if (wcmatch (strcase LayoutName) "E_*,SM_*")
    (progn
        (setvar "CTAB" LayoutName)
        (alert "DoMyLayoutStuff")
    )
)


u

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

C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 10. Dez. 2018 10:47    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

Zitat:
Original erstellt von cadffm:
mal sehen..

Ignoriere Layout deren Namen..
Mögliche Lösung: IF

(if (wcmatch (strcase LayoutName) "E_*,SM_*")
    (progn
        (setvar "CTAB" LayoutName)
        (alert "DoMyLayoutStuff")
    )
)


u


Ok, das ist mir dann doch noch etwas zu Hoch. Ich habe zwar was zu den einzelnen Funktionen gelesen, aber ich wüsste jetzt gar nicht wo ich die Zeilen einsetzen sollte und ob das geht oder ich noch etwas dazu Tippen oder an meinem Code ändern muss.
Trotzdem vielen Dank, wenn ichs verstehe kann ichs brauchen 

Gruß
Jörg

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 10. Dez. 2018 11: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 C4DP4P57 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadffm:
mal sehen..

Ignoriere Layout deren Namen..
Mögliche Lösung: IF
IF solltest du schnell nachgelesen haben.. (IF (hiereinAusdruckalsBedingung)(fallsBedingungWAHRdanndashiermachen))

(if (wcmatch (strcase LayoutName) "E_*,SM_*") wcmatch&strcase  sollte auch schnell erklärt und leicht zu testen sein, ich prüfe hier ob der Layoutname dem Muster "E_*" oder "SM_*" entspricht
    (progn 
falls die Bedingung WAHR ist, führe diesen Ausdruck aus... // und da ich mehr wie einen Ausdruck brauche, fasse ich dies mit einem PROGN zusammen
        (setvar "CTAB" LayoutName)
setze das Layout mit dem Namen <wasauchimmersichhinterderVariable LayoutName verbirgt> aktuell
        (alert "DoMyLayoutStuff")
<- nur ein dummy Beispiel, hier kannst du dann deinen Code einsetzen der in jedem Layout ausgeführt werden soll das aktuell gesetzt wird
    )
)


u


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

C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 10. Dez. 2018 13:46    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

So ganz kapiere ich es nicht...um nicht zu sagen: Wo bin ich und was mach ich hier überhaupt :-D
Wie kann ich (if (wcmatch (strcase LayoutName) "E_*,SM_*") testen? Ich habe mal nur (wcmatch (strcase LayoutName) "E_*,SM_*") in einem Layout getestet (kann man das so?), aber es gibt immer T zurück, egal ob das Layout mit E_* oder Sm_* anfängt.

(setvar "CTAB" LayoutName) setze das Layout mit dem Namen <wasauchimmersichhinterderVariable LayoutName verbirgt> aktuell
Brauch ich dann das (foreach Layout... noch? Welches Layout setzt er Aktuell wenn beide vorhanden? Beide nacheinannder?

Ich hatte mal dies probiert, aber das ist irgendwie humbuck:
(command "-layer" "se" "0" "neu" "E_, Sm_" "")
(setvar "CTAB"(car(layoutlist)))
(command "aflayer" "f" "E_*,Sm_*" "al" "")
(foreach Layout (layoutlist)
(setvar "ctab" layout)
  (setq Lay12 (strcat(substr (getvar "ctab") 1 2) "*"))
      (if (wcmatch (strcase LayoutName) "E_*,SM_*")
        (progn
            (setvar "CTAB" LayoutName)
            (command "_.mspace")
                            (command "AFlayer" "ta" Lay12 "w" "alle" "" "")
            (command "_.pspace")
                            (command "AFlayer" "ta" "*" "k" "")
);foreach
(command "CTAB" "Modell")
(command "bereinig" "al" "*" "n")

...Ich lese mal weiter, nach dem 100sten mal, werrd auch ichs irgendwann kapieren haben ;D


------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 10. Dez. 2018 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 Nur für C4DP4P57 10 Unities + Antwort hilfreich

"...Ich lese mal weiter, nach dem 100sten mal, werrd auch ichs irgendwann kapieren haben "
Ja  - Vermutlich sollte man dir einfach Zeit geben an dieser Stelle


" aber es gibt immer T zurück, egal ob das Layout mit E_* oder Sm_* anfängt."
Wenn dich das überrascht dann hast du nicht wirklich nachgesehen und verstanden was wcmatch macht, bzw, mein verwendeter Filter
(obwohl ich ja den auch erklärt habe zuvor) Ich dachte bei E_* UND bei SM_* soll das Layout bearbeitet werden, nur bei allen anderen nicht?

"(setvar "CTAB" LayoutName) setze das Layout mit dem Namen <wasauchimmersichhinterderVariable LayoutName verbirgt> aktuell
Brauch ich dann das (foreach Layout... noch? Welches Layout setzt er Aktuell wenn beide vorhanden? Beide nacheinander?"
Das foreach hast du doch um "einmal für alle Layout(name)" zu realisieren. Du hast dir schon mal angesehen was FOREACH oder CTAB ist und was (layoutlist) zurück gibt?

Da kommt mir nur spontan ein Gedanke: AUTSCH, aber das wird schon.
Schau dir dieses Beispiel mal an, einfach ab in die Befehlszeile:
(foreach Buchstabe '("A" "B" "C" "D")(alert Buchstabe)(terpri)(princ Buchstabe))

Code:
"Ich hatte mal dies probiert, aber das ist irgendwie humbuck:"
(command "-layer" "se" "0" "neu" "E_, Sm_" "") ; vor dem setzen von Null sollte man Null TAUEN um sicher zustellen das man 0 aktuell setzen kann, aber ok.
(setvar "CTAB"(car(layoutlist))) ; wozu schon wieder oder auch immer noch das erste Layout aktuell setzen?
(command "aflayer" "f" "E_*,Sm_*" "al" "")
(foreach Layout (layoutlist)
(setvar "ctab" layout) ; Ich dachte du möchtest nur die Layouts welche mit "E_*" oder "SM_*" anfangen, warum also weiterhin jedes Layout aktuell setzen?
      (if (wcmatch (strcase Layout) "E_*,SM_*")
        (progn
            (setq Lay12 (strcat(substr (getvar "ctab") 1 2) "*")) ; Die Zeile habe ich nur der Ordnung wegen verschoben, rein technisch hätte es auch weiter oben funktioniert.
            (setvar "CTAB" LayoutName)
            (command "_.mspace") ; wozu?, fragte ich schon mal wenn ich mich recht erinnere.
                            (command "AFlayer" "ta" Lay12 "w" "alle" "" "")
            (command "_.pspace") ; auch wenn ich mspace entfernen würde, das pspace würde ich belassen, der Ordnung wegen falls jemand mal das Layout verlassen hat während mspace aktuell war
                            (command "AFlayer" "ta" "*" "k" "")
);foreach
(command "CTAB" "Modell")
(command "bereinig" "al" "*" "n")

Also:
Layer 0 tauen (fehlt dir noch), Layer0 aktuell setzen, Spontan mal Layer E_ und SM_ erstellen (falls nicht vorhanden) damit es nicht crashed / nette Idee.
Mache für alle <was auch immer, denn das ist dem foreach überhaupt nicht bekannt was da drin ist>
meiner Liste / deine Liste ist die Rückgabe des Ausdruckes (layoutlist)

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 10. Dez. 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 C4DP4P57 10 Unities + Antwort hilfreich

da habe ich wohl aus Versehen zu früh die Antwort gepostet:

Also:
1.0 Layer 0 tauen (fehlt dir noch), Layer0 aktuell setzen, Spontan mal Layer E_ und SM_ erstellen (falls nicht vorhanden) damit es nicht crashed / nette Idee.
2.0 Mache für alle <was auch immer, denn das ist dem foreach überhaupt nicht bekannt was da drin ist>
2.1 meiner Liste / deine Liste ist die Rückgabe des Ausdruckes (layoutlist)
3.0 (if ; WENN nachfolgende Bedingung wahr ist
4.0    (wcmatch (strcase LayoutName) "E_*,SM_*") ; Wenn der Layoutname also mit E_ oder SM_ anfängt..
5.0    dann führe alles aus diesen Ausdruck aus: (progn ...)
und in diesem progn hast du
6.0  Deinen "Layernamenfilter" bestimmen, also Lay12 definieren
7.0 Variable CTAB ändern, also das Layout dessen Name aktuell in der Variable "Layoutname" steckt, aktuell setzen.
8.0 deine mspace AFLAYER und pspace Geschichten..
);foreach ende
9.0 Das MODELL Register aktuell setzen, dafür würde es auch einen Befehl geben: _.MODEL oder auch auf deutsch: MODELL
10. Bereinigen

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

C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 11. Dez. 2018 12:02    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

...ich prüfe hier ob der Layoutname dem Muster "E_*" oder "SM_*" entspricht... Ich dachte bei E_* UND bei SM_* soll das Layout bearbeitet werden, nur bei allen anderen nicht?
Ja soll es, überrascht hat mich, das es auch bei Layouts die nicht mit "E_*" oder "SM_*" anfangen T zurück gibt. Nachgesehen Ja, verstanden anscheinend noch nicht.
Das foreach hast du doch um "einmal für alle Layout(name)" zu realisieren. Du hast dir schon mal angesehen was FOREACH oder CTAB ist und was (layoutlist) zurück gibt?
Foreach arbeitet Listen ab, in meinem Fall alle Layouts (layoutlist). CTAB setzt das Layout aktuell deren Namen ich mit der Variable Layout übergebe, also alle in meinem Fall. Soweit Richtig denke ich?
vor dem setzen von Null sollte man Null TAUEN
Ja, habe ich wohl vergessen
(setvar "CTAB"(car(layoutlist))) ; wozu schon wieder oder auch immer noch das erste Layout aktuell setzen?
Das habe ich drin um sicher zugehen, das ich mich auf einem Layout befinde, wenn ich mit (command "aflayer" "f" "E_*,Sm_*" "al" "") erstmal alle Layer Friere (vom Modell aus geht es nicht), um nur die relevanten Layer im nächsten Schritt zu tauen.
Ich dachte du möchtest nur die Layouts welche mit "E_*" oder "SM_*" anfangen, warum also weiterhin jedes Layout aktuell setzen?
Ja korrekt. Ich ging davon aus das er jedes Layout aktuell setzt und wenn es mit "E_*" oder "Sm_*" anfängt die Layer entsprechen schaltet und wenn nicht, nichts macht.
(command "_.mspace") ; wozu?, fragte ich schon mal wenn ich mich recht erinnere.
Frage ich mich auch grade, irgendwie bin ich beim testen nicht ins _.mspace gekommen, kanns aber nicht mehr reproduzieren...

2.0 Mache für alle <was auch immer, denn das ist dem foreach überhaupt nicht bekannt was da drin ist>
2.1 meiner Liste / deine Liste ist die Rückgabe des Ausdruckes (layoutlist)
Hier liegt glaube ich noch meine Problem... Von der Logik her (also meine Logik  ) müsste (foreach Layout (layoutlist) geändert werden, oder? Ich weiß nur noch nicht wie... Hatte mal Layout mit LayoutName ersetzt=falsch formatierte Liste.
Ich lese jetzt nochmal alles in Ruhe durch... gaaaannnz langsam für die D***en zum mitdenken. Wollte nur zwischendurch deine Fragen beantworten 

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 11. Dez. 2018 12:38    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 C4DP4P57 10 Unities + Antwort hilfreich

Danke für die Erklärung mit dem "ersten Layout aktuell setzen", das hatte ich nicht auf dem Schirm, jetzt verstehe ich es.

Und nun sehe ich auch "dein Problem", uff.


Ich habe dir gezeigt wie man die WENN,DANN Geschichte umsetzen kann:

Code:
(if (wcmatch (strcase LayoutName) "E_*,SM_*")
    (progn
        (setvar "CTAB" LayoutName)
        (alert "DoMyLayoutStuff")
    )
)

Dies hast du bei dir eingebaut:

Code:
(foreach Layout (layoutlist)
(setvar "ctab" layout)
  (setq Lay12 (strcat(substr (getvar "ctab") 1 2) "*"))
      (if (wcmatch (strcase LayoutName) "E_*,SM_*")
        (progn
            (setvar "CTAB" LayoutName)...


Aber "vergessen" den Variablenname anzupassen:

(foreach Layout (layoutlist)
Jeder Eintrag der Liste (layoutlist) wird einmal an die Variable "Layout" gebunden
(foreach LayoutName (layoutlist)
Jeder Eintrag der Liste (layoutlist) wird einmal an die Variable "LayoutName" gebunden
(foreach Lustig (layoutlist)
Jeder Eintrag der Liste (layoutlist) wird einmal an die Variable "Lustig" gebunden

Innerhalb von foreach prüfst du den Layoutnamen
(if (wcmatch (strcase LayoutName) "E_*,SM_*") <= Aber wo ist LayoutName definiert? Nirgends, also immer NIL.
Solltest du mal was anderes erhalten haben, so hattest du beim Test zufällig Layoutname irgendwas zugeordnet.

Da wcmatch den Layoutnamen prüfen soll der von foreach aus der Liste gezuppelt wurde, muß in wcmatch
natürlich auch die Variable genannt werden in der aktuell der Layoutname steht um den es geht.

Wieder mit möglichst wenig Änderungen

Code:

(progn
(command "-layer" "tauen" "0" "setzen" "0" "neu" "E_,Sm_" "")
(setvar "CTAB"(car(layoutlist)))
(command "aflayer" "f" "E_*,Sm_*" "al" "")
(foreach layoutName (layoutlist)
      (if (wcmatch (strcase LayoutName) "E_*,SM_*")
          (progn
            (setq Lay12 (strcat(substr LayoutName 1 2) "*"))
            (setvar "CTAB" LayoutName)
            (command "AFlayer" "ta" Lay12 "w" "alle" "" "")
            (command "PBEREICH")
            (command "AFlayer" "ta" "*" "k" "")
          )
      )
);foreach
(command "CTAB" "Modell")
(command "bereinig" "al" "*" "n")
)

Mir fiel eben auch noch ein anderer Fehler auf: (command "-layer" "se" "0" "neu" "E_, Sm_" "")
Dort erzeugst du einen Layer der mit einem Leerzeichen anfängt, was so sicher nicht gewollt war.

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

C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 11. Dez. 2018 16: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

Das ich es so schreiben muss (foreach LayoutName (layoutlist) habe ich mir gedacht, die Variable Layout hatte ja nirgens Verwendung.
Aber das(setq Lay12 (strcat(substr LayoutName 1 2) "*")) habe ich gar nicht auf dem Schirm gehabt. Vielen Dank!!!

Code:
(setvar "CTAB"(car(layoutlist)))
(command "aflayer" "f" "E_*,Sm_*" "al" "")

Das habe ich jetzt anders gelöst, das war noch so eine kleine Baustelle die ich später ändern wollte.
So bleiben in allen Layouts die nicht mit E_* oder Sm_* anfangen die Layer geschaltet wie sie sind.

Code:
(progn
(command "-layer" "tauen" "0" "setzen" "0" "neu" "E_,Sm_" "")
(foreach layoutName (layoutlist)
      (if (wcmatch (strcase LayoutName) "E_*,SM_*")
          (progn
            (setq Lay12 (strcat(substr LayoutName 1 2) "*"))
            (setvar "CTAB" LayoutName)
            (command "AFlayer" "f" "E_*,Sm_*" "w" "alle" "" "ta" Lay12 "w" "alle" "" "")
            (command "PBEREICH")
            (command "AFlayer" "ta" "*" "k" "")
          )
      )
);foreach
(command "CTAB" "Modell")
(command "bereinig" "al" "*" "n")
)


Mir fiel eben auch noch ein anderer Fehler auf: (command "-layer" "se" "0" "neu" "E_, Sm_" "")
Danke, habe ich nicht bemerkt.

Nochmals vielen Dank für deine Geduld und deine Erklärungen ohne die ich es nicht so schnell (oder gar nicht) hinbekommen hätte und vor allem nicht soviel gelernt hätte. Echt Klasse deine Hilfestellung 

Jetzt mach ich den Code noch International und gut ist!

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 11. Dez. 2018 21:54    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 C4DP4P57 10 Unities + Antwort hilfreich

Zitat:
Mir fiel eben auch noch ein anderer Fehler auf: (command "-layer" "se" "0" "neu" "E_, Sm_" "")


Merkwürdig, dieser "Fehler" erstellt überhaupt keinen Layernamen mit einem Leerzeichen am Anfang  
Mein Fehler: Leerzeichen am Anfang und am Ende ist kein güätiger Layername, Acad kappt selbstständig.
War mir so bisher nicht bewußt (und gerät sicher schnell wieder in Vergessenheit   )


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

C4DP4P57
Mitglied
Technischer Zeichner


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

Beiträge: 150
Registriert: 06.05.2009

erstellt am: 12. Dez. 2018 09:40    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

Als du mir das schriebst, hab ich mich schon gewundert das mein Lisp, sofern nur E_* und Sm_* Layouts vorhanden waren, ohne Probleme durch lief. Das erklärt es natürlich.
Aber der Form halber besser ohne Leerzeichen.
Ist bei Layoutbezeichnungen und Dateiamen übrigens der selbe Effekt, hab´s grade probiert.

------------------
Wer immer tut, was er schon kann, bleibt immer das, was er schon ist.

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