Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  layer invertieren

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:  layer invertieren (3009 mal gelesen)
kikaz
Mitglied
Elektrotechniker

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

Beiträge: 3
Registriert: 13.03.2007

erstellt am: 16. Mrz. 2007 17:25    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 Lisp´er

Da ich in einem Planungsbüro tätig bin, und zZ oft mit Zeichenarbeit konfrontiert werde, möchte ich mir ein paar immer-wieder kehrende Abläufe vereinfachen.

z.B.: Alle Layer die gefroren sind einschalten - alle was eingeschalten sind frieren, dann das gezeigte löschen und wieder layer die aktiviert sind frieren und umgekehrt.
Dient zur Bereinigung von unseren Architekturplänen, da ich den "gefrorenen Inhalt" nimmer brauche.

Ich lese mich gerade in die große Welt der Auto-lisp durch, doch leider find ich keine Hindweise auf die Autocad befehle.
sprich: wie schreibt sich der befehl layer entfriern + frieren

2 frage.
kann man mit lisp auch datein : öffnen, (seite ist eingerichtet) plotten) + wieder schließen?
sozusagen ne schleife mit "x" datein im ordner?

so genug anfänger fragen...

schönen tag noch

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: 16. Mrz. 2007 18:41    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 kikaz 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von kikaz:

z.B.: Alle Layer die gefroren sind einschalten - alle was eingeschalten sind frieren, dann das gezeigte löschen und wieder layer die aktiviert sind frieren und umgekehrt.
Dient zur Bereinigung von unseren Architekturplänen, da ich den "gefrorenen Inhalt" nimmer brauche.


wie wäre es mit :
1.Layerliste erstellen mit allen Layern die gefroren sind.
2.durchlaufen der Zeichnungsdatenbank und löschen aller Objekte, die einen Layer aus der Layerliste als eigenschaft haben
3.Bereinigen der gefrorenen Layer
4. das ganze im Scriptbetrieb, das man gleich mehrere Zeichnungen in einem Rutsch aufräumen kann.
?

 

Zitat:
Original erstellt von kikaz:

Ich lese mich gerade in die große Welt der Auto-lisp durch, doch leider find ich keine Hindweise auf die Autocad befehle.
sprich: wie schreibt sich der befehl layer entfriern + frieren


-layer .. und dann den Optionen in der Kommandozeile folgen, aber wie gesagt, ich würde den anderen Weg favoritisieren.
 
Zitat:
Original erstellt von kikaz:

2 frage.
kann man mit lisp auch datein : öffnen, (seite ist eingerichtet) plotten) + wieder schließen?
sozusagen ne schleife mit "x" datein im ordner?

Auch hier heißt das Zauberwort : SCRIPT  ... such mal danach im Forum wegen meiner auch gleich im Zusammenhang mit "PLOTTEN".

Wenn man nicht selber ein Script generieren will... auch dafür gibts ne Menge Tools... z.B: bei www.cadwiesel.de

schönen tag noch

[/B][/QUOTE]

------------------
      - 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

Cadzia
Ehrenmitglied V.I.P. h.c.
CAD/Grafik-Dienstleister



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

Beiträge: 2912
Registriert: 02.07.2004

AutoCAD 2019 + MAP
AccuRender nXt,
Bricscad V18
SketchUp2015 pro,

erstellt am: 16. Mrz. 2007 21:12    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 kikaz 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kikaz:

z.B.: Alle Layer die gefroren sind einschalten - alle was eingeschalten sind frieren, dann das gezeigte löschen und wieder layer die aktiviert sind frieren und umgekehrt.

schau mal hier: vielleicht wäre das Tool 51 was für Dich.

------------------
Grüße Karin

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

kikaz
Mitglied
Elektrotechniker

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

Beiträge: 3
Registriert: 13.03.2007

erstellt am: 17. Mrz. 2007 11:32    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

CADmium
danke für dein leitfaden, werd mich mal weiter einlesen und probieren, bin mir sicher das die ein oder andere detail frage noch auftauchen wird..

Cadzia
super link, vielen dank!

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

criecky
Mitglied
MENSCH


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

Beiträge: 251
Registriert: 13.01.2004

ACAD 2011- 2020
www.cbyte.eu

erstellt am: 19. Mrz. 2007 20:27    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 kikaz 10 Unities + Antwort hilfreich

hallo,

das könnte dir weiter helfen: http://www.cbyte.de/tools.htm

Tool C- Layerverwaltung

gruss

------------------
   
Softlan macht das Netzwerk weich!

www.cbyte.de

[Diese Nachricht wurde von criecky am 19. Mrz. 2007 editiert.]

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

kikaz
Mitglied
Elektrotechniker

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

Beiträge: 3
Registriert: 13.03.2007

erstellt am: 21. Mrz. 2007 21:49    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 Leute.. hab da ja nun ein "lisp" ( von dem 1 Link)
ansich ist das ja genau was ich suche. nur schaltet der die layer aus / ein.  ich will das mit frieren.
Nun wollt ich in Eigeninitiative das mal umändern.

(quelltext)
(defun c:swi (/ lay layli)
  (while (setq lay (tblnext "LAYER" (not lay)))
    (setq layli (cons (cdr(assoc 2 lay)) layli))
    )
  (mapcar '(lambda (L / ld)
            (setq ld (entget (tblobjname "LAYER" L)))
            (entmod
              (subst
                (cons 62 (* -1 (cdr(assoc 62 ld))))
                (assoc 62 ld)
                ld
                )
              )
            )
          layli
          )
  )

Gut mal von vorne.
Startet das Lisp(hab ich mal mit Swi abgekürzt)
dann schon das erste /lay layi nahc dem defun ?!
Nächste Zeile if/ while anwendung.. sogut ok
vergibt der variablen "lay" layer.. wasn tablenext?
no lay für das deaktivieren?
dann wird wieder eine variable vergeben
das ganze auf einer constanten ? cdr liest einen wert aus?
(assoc 2 lay gibt mir NIL aus) und am schluss wieder die variable?

tjo ich glaub ich muss mich noch viel viel mehr einlesen.
vlt hat einer von euch noch ein paar Nerven, mit mir die ganze sache durchzukauen..

na dann ab in den donnerstag
lg kIkAz

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: 21. Mrz. 2007 22:14    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 kikaz 10 Unities + Antwort hilfreich

Eine gute Einführung bietet das demnächst auch hoffentlich als Buch erscheinende Tutorial von Mapcar und ein Lisp-Handbuch für R14 ... nicht zu vergessen die Onlinehilfe (aber da muß man ja erst wissen wonach man sucht  .
Wenn du im englischen Fit bist kann ich noch AFRALISP empfehlen.

Aber noch mal zu deinem Bsp:

(defun c:swi (/ lay layli) ... lay layli sind lokale Variablen
  (while (setq lay (tblnext "LAYER" (not lay)))
  ...solange mit der Funktion tblnext noch ein Layer in der Layertabelle gefunden wird, speicher ihn in LAY
    (setq layli (cons (cdr(assoc 2 lay)) layli))
    und füge den Layernamen (Gruppencode 2)der Layerliste hinzu
    )
  für alle Einträge in der Layerliste ..
  (mapcar '(lambda (L / ld)
            (setq ld (entget (tblobjname "LAYER" L))) .. lese den Layer mit allen eigenschaften (Gruppencodes) aus
            (entmod ...und  ändere
              (subst
                (cons 62 (* -1 (cdr(assoc 62 ld)))) die Farbe auf negativ= Layer aus /positiv = Layer an
                (assoc 62 ld)
                ld
                )
              )
            )
          layli
          )
  )

--------

ob ein Layer gefroren ist , wird im Bit 1 des Gruppencodes 70 festgelegt.

dafür könnte dein code beispielsweise so aussehen:

(defun c:swi (/ lay layli)
  (while (setq lay (tblnext "LAYER" (not lay)))
    (setq layli (cons (cdr(assoc 2 lay)) layli))
    )
  (mapcar '(lambda (L / ld F)
            (setq ld (entget (tblobjname "LAYER" L)))
            (entmod
              (subst
                (cons 70
                      (if(=(logand(cdr(assoc 70 ld))1)1)
                        (-(cdr(assoc 70 ld))1)
                        (+(cdr(assoc 70 ld))1)
                      )
                )
                (assoc 70 ld)
                ld
                )
              )
            )
          layli
          )
  )


..hoffe, ich hab jetzt keine Klammer vergessen, da mein acad schon down ist.

aber zurück zu deinem Toolwunsch .. nur die Layer schalten war das eigentlich nicht, oder?

------------------
  - 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

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