Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  BricsCAD
  Layer abfragen und reagieren

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
Autor Thema:   Layer abfragen und reagieren (1551 mal gelesen)
FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 22. Sep. 2017 07:34    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,

ich möchte Layer in vielen Dateien abgleichen
( anzeigen, einfrieren, Farbe ) und die Befehle
in einer LISP Datei zusammenfassen.
Ich habe im Netz schon gesucht,
aber nichts brauchbares gefunden.
Also ich suche folgendes:


- Wenn layer "Ort" angezeigt wird > dann > so bleiben

; wenn ? command "_.layer" "E" "Ort" "")
; dann  (command "_.layer" "E" "Ort" "")

- Wenn layer "Ort" NICHT angezeigt wird > dann > anzeigen

; wenn ? command "_.layer" "A" "Ort" "")
; dann  (command "_.layer" "E" "Ort" "")

- Wenn layer "Ort" aufgetaut ist > dann > so bleiben

; wenn ? command "_.layer" "T" "Ort" "")
; dann  (command "_.layer" "T" "Ort" "")

- Wenn layer "Ort" NICHT aufgetaut ist > dann > auftauen

; wenn ? command "_.layer" "FR" "Ort" "")
; dann  (command "_.layer" "T" "Ort" "")

- Wenn layer "Ort" die Farbe "255,0,0" hat > dann > so bleiben

; wenn ? command "_.layer" "F" "255,0,0" "Ort" "")
; dann  (command "_.layer" "F" "255,0,0" "Ort" "")

- Wenn layer "Ort" andere Farbe hat > dann > Farbe in "255,0,0" ändern

; wenn ? NICHT command "_.layer" "F" "255,0,0" "Ort" "")
; dann  (command "_.layer" "F" "255,0,0" "Ort" "")

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: 13435
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 22. Sep. 2017 08:17    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 FireBuff 10 Unities + Antwort hilfreich

Die Abfragen kannst du dir sparen, einfach setzen
(command "_-layer" "TA" "ORT" "EIN" "ORT" "FARBE" "T" "255,0,0" "ORT" "")

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 22. Sep. 2017 09:31    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

Oh - ich möchte mir die Abfrage nicht sparen,
weil ich die noch anderweitig nutzen möchte.

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1911
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 22. Sep. 2017 09:48    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 FireBuff 10 Unities + Antwort hilfreich

wenn fragen kannst du mit (if oder (cond stellen. Was soll deine Aussage
Zitat:
Wenn layer "Ort" angezeigt wird
bedeuten? Ist der Layer dann als Aktuell eingestellt? Oder ist er getaut, oder eingeschaltet?
Die Farbe eines Layers fragst du am Besten über die Layertabelle ab:
Code:
(cdr(assoc 62(entget(TBLOBJNAME "Layer""ORT"))))

Die Eigenschaft gefroren/getaut steht in dem GC 70
Die Eigenschaft an/aus steht im dem GC 62 (negativ)
...und los....

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 22. Sep. 2017 09: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

vielen Dank für die schnelle Hilfe und ein schönes Wochenende.

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 26. Sep. 2017 11:15    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 bis gestern versucht  ohne Erfolg  bin halt Anfänger

Ich dachte das geht so vielleicht:
( ich weis das ist vba oder anderes - aber vielleicht besser zu verstehen )

(If command "_.layer" "A" "Ort" "")
  (command "_.layer" "E" "Ort" "")
    else
  (command "_.layer" "E" "Ort" "")
endif)

(If command "_.layer" "F" "255,0,0" "Ort" "")
  (command "_.layer" "F" "255,0,0" "Ort" "")
    else
  (command "_.layer" "F" "255,0,0" "Ort" "")
endIF)

So würde ich es besser verstehen, wenn das iO ist - auch wenn das hier nicht gehen kann 

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1911
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 26. Sep. 2017 11: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 FireBuff 10 Unities + Antwort hilfreich

Wenn du mal meine Fragen beantwortest und nicht auf deiner immer gleichen commandzeile rumreitest, könnte das Thema in 10 min erledigt sein....

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 26. Sep. 2017 12: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

OK das mache ich doch gern.

Ich habe sehr viele Dateien die ich ständig bearbeite.
Alle haben die gleichen ! 127 Layer !
Zum Bearbeiten werden verschiedene Layer verändert ( eingefroren, ausgeblendet, Farbe verändert )
Jetzt möchte ich zu Beginn der Bearbeitung alles gleich einrichten bzw. abgleichen und das auch beim beenden der Dateibearbeitung
Jetzt habe ich mir ein Menü bzw. Werkzeug eingerichtet, welches eine LISP Datei startet.
Ich möchte nur eine Datei zum abgleichen starten.
Deshalb die Abfrage der einzelnen Layer und den daraus ergebenen Befehl.

Ich hab in meiner Anfrage im Forum nur das mir fehlende versucht zu erfragen ?!?

[Diese Nachricht wurde von FireBuff am 26. Sep. 2017 editiert.]

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: 2162
Registriert: 02.05.2006

BricsCAD V11 - V20 Pro
Visual Basic

erstellt am: 26. Sep. 2017 12:43    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 FireBuff 10 Unities + Antwort hilfreich

Ähm - ist das nicht genau das was der Layerstatus macht?
Exportieren aus Originalzeichnung - Importieren in die andere - fertig

Grüße
Klaus 

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 26. Sep. 2017 13: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

- das kann schon sein.

Ich möchte aber nicht alle Layer abgleichen ! Nur von mir festgelegte !

Das festlegen soll durch die LISP Datei gesteuert und übernommen werden.

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1911
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 27. Sep. 2017 11: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 Nur für FireBuff 10 Unities + Antwort hilfreich

meine Frage war
Zitat:
Was soll deine Aussage

    Zitat:Wenn layer "Ort" angezeigt wird

bedeuten? Ist der Layer dann als Aktuell eingestellt? Oder ist er getaut, oder eingeschaltet?


was sollte Deiner Meinuung nach passieren, wenn du z.b. diesen Befehl ausführst?

Code:
(command "_.layer" "E" "Ort" "")

Ist der Layer Ort eingeschaltet, oder ausgeschaltet? ist er gefrohren oder getaut? ist er aktuell oder nicht..

Um mal auf deine Beschreibung einzugehen...
du möchtest zu beginn der Sitzung bestimmte, namentlich bekannte Layer, die in der Zeichnung vorhanden sind in einen bestimmten Zustand versetzen? ist das so richtig?

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

FireBuff
Mitglied
EDV Admin , GIS Verantw.


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

Beiträge: 55
Registriert: 01.08.2013

BricsCad

erstellt am: 27. Sep. 2017 13:45    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

Ja - Abfragen über ein Menü-Punkt und dann soll der Befehl reagieren

Ich möchte nur "einen Punkt" für 2 Befehle ( Sichtbar / Unsichtbar )

Dafür die Abfrage und Reaktion

Es soll immer das Gegenteil des vorhandenen erreicht werden.

Wenn >> (command "_.layer" "E" "Ort" "")  >> dann >> (command "_.layer" "A" "Ort" "")
Wenn >> (command "_.layer" "A" "Ort" "")  >> dann >> (command "_.layer" "E" "Ort" "")


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

Fiedelzastrow
Mitglied
Architekt / Bauzeichner


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

Beiträge: 993
Registriert: 05.07.2007

Win XP
AutoCAD 2006
AutoCAD 2009
AutoCAD 2012 LT

erstellt am: 27. Sep. 2017 14:09    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 FireBuff 10 Unities + Antwort hilfreich

Hallo,

nachdem ich ein wenig mitgelesen haben, taucht bei mir die Frage auf, warum Du nicht Layer status verwendest? Es scheint für mich genau das zu machen, was Du suchst.

Beschreibung

Gruß
Robert

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: 13435
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 27. Sep. 2017 15: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 FireBuff 10 Unities + Antwort hilfreich

Probiers mal mit den Zeilen:

(mapcar
  '(Lambda(X / Y D)
      (if(and(=(type X)'STR)(setq Y(tblobjname "LAYER" X))(setq D(entget Y)))
        (entmod(subst (cons 62 (* -1(cdr(assoc 62 D))))(assoc 62 D)D))
      )
    )       
    '("ORT" "LAYER1" "LAYER2")
)

------------------
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: 13435
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 27. Sep. 2017 16:04    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 FireBuff 10 Unities + Antwort hilfreich

oder via ActiveX

(defun C:LAYPROPSWITCH()
  (vl-load-com)
  (mapcar
    '(lambda(X / Y)
        (if(and(=(type X)'STR)
              (not(vl-catch-all-error-p
                    (setq Y(vl-catch-all-apply
                              'vla-item
                              (list(vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))X)
                            )
                    )
                  )
              )
          )
          (mapcar
            '(lambda(PROP / A)
              (and(setq PROP(vl-princ-to-string PROP))
                  (vlax-property-available-p Y PROP)
                  (setq A (vlax-get-property Y PROP))
                  (setq A(cond ((= A :vlax-true):vlax-false)
                                ((= A :vlax-false):vlax-true)
                          )
                  )
                  (vl-catch-all-apply'vlax-put-property (list Y PROP A))
              )   
            )
            '("LayerOn" "Lock" "Plottable" "Freeze")
          ) 
        )       
      ) 
    '("ORT" "LAYER1" "LAYER2")
  )
  (princ)
)

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

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: 2162
Registriert: 02.05.2006

BricsCAD V11 - V20 Pro
Visual Basic

erstellt am: 27. Sep. 2017 19:34    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 FireBuff 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FireBuff:
- das kann schon sein.

Ich möchte aber nicht alle Layer abgleichen ! Nur von mir festgelegte !

Das festlegen soll durch die LISP Datei gesteuert und übernommen werden.



(Ginge auch ohne die vielen Ausrufezeichen)
Man kann einen Filter einstellen (Layer auswählen) und diesen Status dann speichern, dann hat man genau die Layer zum ändern die man möchte. Aber wer gerne programmiert .... (mir geht es ja manchmal auch so)

Grüße
Klaus 

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)2020 CAD.de | Impressum | Datenschutz