| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Layer ausschalten mit objektwahl (2392 mal gelesen)
|
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2006/2007 (Englisch)
|
erstellt am: 02. Mai. 2006 17:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe mir versucht eine kleine LSP datei zu basteln um einen Layer mit der objektwahl auszuschalten. aber es klappt einfach nicht. Kann mir jemand weiterhelfen (defun c:Layerhide () (command "-layer" "off" "_select" "") ) PS: Bin eine absollte beginnerin mit lsp Gruss Moni
------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 02. Mai. 2006 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
RoccoRalle Mitglied
Beiträge: 52 Registriert: 24.04.2006
|
erstellt am: 02. Mai. 2006 18:52 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi hier ein kleines Tool, wie ich es verwendet habe. Läuft auf Acad 14 bis 2007! (defun c:Laus ( / o_satz ent e txt text la i) (princ "\nLayer aus von Objekte: ") (setq o_satz (ssget)) (setq la (getvar "clayer")) (setq text "" i 0) (repeat (sslength o_satz) (setq ent (ssname o_satz i)) (setq e (entget ent)) (setq txt (cdr (assoc 8 e))) (if (/= txt la) (setq text (strcat text "," txt) ) ) (setq i (+ i 1)) ) (command "layer" "_off" text "") )) (princ) ) Viel Spaß damit!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 02. Mai. 2006 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Hi, was willste denn machen? # EIN Objekt anklicken der entsprechende Layer wird ausgeschaltet. Funktionsende. # Das o.g. in einer Schleife. (Immer weiter fragen und ausschalten) # Eine Anzahl Objekte wählen und danach werden alle korrespondierenden Layer ausgeschaltet. Da kann man durchaus unterschiedliche Ansätze haben... Grundsätzlich ist das zwar in den ETools schon drinnen aber als Übungsaufgabe schon mal ganz nett.
------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2006/2007 (Englisch)
|
erstellt am: 03. Mai. 2006 08:40 <-- editieren / zitieren --> Unities abgeben:
Hallo RoccoRalle danke für dein leines tool. prima genau das wollte ich machen. (linie anklicken und der Layer der linie wird ausgeblendet) Ja da hätte ich wohl noch lang mit meiner LSP üben können. Sieht so haus als wäre das nicht so einfach zu lernen. Eine frage noch. Ich habe bereits einen knopf mit dem ich einen bestimmten layer ausschalten kann. ^C^C-layer;off;"layername";y;; Wenn ich den layer wieder sichtbar machen will muss ich in meine layerliste und die lampe einschalten. nun zur frage: kann man den knopf so machen wie eine art EIN und AUS schalter?? Oder geht das nur mit LSP??? Gruss Moni
------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Mai. 2006 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
das würde u.a. mit folgenden gehen: (defun ToggleLayer(LAYERNAME / DATA) (and(=(type LAYERNAME)'STR) (setq DATA (tblobjname "LAYER" LAYERNAME)) (setq DATA (entget DATA)) (entmod(subst (cons 62 (*(cdr(assoc 62 DATA))-1))(assoc 62 DATA)DATA)) ) ) Aufruf ist dann z.B: (togglelayer "0") und der sollte sich dann auch auf einen Button legen lassen ( evtl mit (autoload..) vorher ------------------ - 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 |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Mai. 2006 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
@Moni, das ist nicht so einfach (zu verstehen), man müßte den aktuellen Status des Layers abfragen, dazu mußt du in TABLE LAYER rumwursteln usw. Schau dir mal 1. Expresstools - Menü LAYER an (gibt auch Werkzeugkasten) ab Acad2007 ist der in Acad enthalten und nennt sich "Layer II" Zudem gibt es seit Acad2002 einen Button bei dem Layer-Dropdown Menü mit dem Befehl "Layer vorher" - dahinter steckt der Acad Befehl "layerp" . Dieser stellt Änderungen an den Layereigenschaften wieder her - hast du zuletzt einen Layer ausgeschaltet, so schaltet er ihn wieder ein. Aber auch Farbänderungen an Layer sind Änderungen, also daran denken Eine "Toggle-Schaltung" würde man ggf. mit "IF" realisieren.
(if dashierderFallist Soll das hiergemachtwerden ansonstendashier ) (cdr(assoc 62 (entget(tblobjname "LAYER" "Layer1")))) Zeigt dir die Farbnummer des Layer "Layer1" , ist die kleiner als 0 (negativer Wert) so ist der Layer aUSgeschaltet. Dies ist in der Entwicklerhilfe unter "LAYER" erklärt. (Suchbegriff= LAYER DXF) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2006/2007 (Englisch)
|
erstellt am: 03. Mai. 2006 09:17 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium Danke für deine Antwort also ich habe die datei mit appload geladen und dann versucht den befehl togglelayer"Text__50" mein layer auszuschalten. (Text__50 ist der layer den ich ein und ausschalten will) Aber es geht irgenwie nicht. Muss ich der LSP auch noch irgendwo den layer hineinschreiben?? Gruss Moni
------------------ Moni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Mai. 2006 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
MonikaB Mitglied Metallbauzeichnerin
Beiträge: 198 Registriert: 28.04.2006 Windows XP (Englisch) AutoCAD 2006/2007 (Englisch)
|
erstellt am: 03. Mai. 2006 09:59 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Mai. 2006 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Zitat: Original erstellt von MonikaB: Ok das habe ich nicht gemacht!
Tja, Internet mit Fremdrechner-Log-Einsicht ist schon was feines ------------------ - 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 |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 23. Mai. 2006 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Als brauchbare Alternative geht auch der Befehl _LAYERP (rechts neben der Layerklappleiste im Werkzeugkasten LAYER) Zitat: aus der AutoCAD Hilfe: Befehlszeile: layerv Macht Änderungen rückgängig, die Sie an Layereigenschaften (beispielsweise Farbe oder Linientyp) vorgenommen haben. Wenn die Einstellungen wiederhergestellt werden, wird die folgende Meldung eingeblendet: „Status „Vorherige Layer“ wiederhergestellt“....
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Molzer Mitglied
Beiträge: 32 Registriert: 26.12.2006
|
erstellt am: 26. Dez. 2006 18:49 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 26. Dez. 2006 19:28 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Zitat: Original erstellt von Molzer: Hallo!!und wie würde es funktionieren wenn ich drei oder vier layer hätte?
1.Willkommen als Aktivposter! 2.Was willst du mit 3 oder 4 Layern machen ? Geinsam "an" und "Aus"-Schalten, egal ob unterschiedliche Anfangszustände ?.. oder 4 Layer, die entsprechend ihrem jeweiligen Stand umgeschaltet werden? Letzteres würde z.B. so funktionieren(ungetestet da so hier reingeschrieben): (defun ToggleLayers(LAYERLIST / DATA) (if(=(type LAYERLIST)'LIST) (foreach LAYERNAME LAYERLIST (and(=(type LAYERNAME)'STR) (setq DATA (tblobjname "LAYER" LAYERNAME)) (setq DATA (entget DATA)) (entmod(subst (cons 62 (*(cdr(assoc 62 DATA))-1))(assoc 62 DATA)DATA)) ) ) ) ) --> Aufruf (ToggleLayers '("0" "LAYER1" "LAYER2")) ------------------ - 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 |
Molzer Mitglied
Beiträge: 32 Registriert: 26.12.2006
|
erstellt am: 26. Dez. 2006 22:36 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
Molzer Mitglied
Beiträge: 32 Registriert: 26.12.2006 Autocad 2004
|
erstellt am: 26. Dez. 2006 22:41 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 27. Dez. 2006 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für MonikaB
Das ist kein Lisp-Thema und außerdem offtopic -> d.h. beim nächsten Mal: neue Frage = neuer Thread und in solchen Fall besser im "Rund um Autocad" Forum! Trotzdem: ... schon mal den Befehl _align probiert? ------------------ - 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 |