| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Layer toggeln? (1887 mal gelesen)
|
zorro Mitglied
Beiträge: 33 Registriert: 05.11.2001
|
erstellt am: 12. Sep. 2006 15:48 <-- editieren / zitieren --> Unities abgeben:
Hai zusammen, gibt es eine Möglichkeit zwischen 2 Layern mittels eines Buttens umzuschalten? Ich brauche zu 90% nur zwei Layer, und die Mausklicks auf den Werkzeugkasten ....umständlich. Villeicht hat ja jemand so etwas. Grüße Zorro 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: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 12. Sep. 2006 16:14 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Man könnte so etwas auf eine Schaltfläche legen: Code:
^C^C$M=$(if,$(eq,$(getvar,"clayer"),"1"),_-layer;_set;2;;;,_-layer;_set;1;;;)
Layer müssen vorhanden und aufgetaut sein. Ist der Layer "1" aktuell gesetzt, wird zu Layer "2" gewchselt, ansonsten wird immer Layer "1" aktuell gesetzt (egal welcher layer vorher aktiv war). ------------------ Mit freundlichem Gruß
Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 12. Sep. 2006 editiert.] [Diese Nachricht wurde von CAD-Huebner am 12. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zorro Mitglied
Beiträge: 33 Registriert: 05.11.2001
|
erstellt am: 12. Sep. 2006 16:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, sorry wenn ich noch mal nachhake, das mit dem erstellen des Buttens hab ich mir nun rausgefummelt, nur mit dem Lisp? Code hadere ich noch. Kannst du mir das noch mal ergänzen, wenn z.B. der eine Layer elek und der ander Layer fm heißt. Ich weiß ja das es viele Lisp tutorials gibt, aber solche Arbeiten sind bei mir im minimalbereich und da ist das lesen sehr mühsam... Danke im voraus. Gruß Uwe 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: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 12. Sep. 2006 17:41 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Zitat: Original erstellt von zorro: ... nur mit dem Lisp? Code hadere ich noch.... Gruß Uwe
Das ist kein Lisp, sondern Diesel - eine Menümakrosprache (allerdings Lisp-ähnlich), die auch in AutoCAD LT funktioniert. So, hier mit fm und elek
Code:
^C^C$M=$(if,$(eq,$(getvar,"clayer"),"elek"),_-layer;_set;fm;;;,_-layer;_set;elek;;;)
[Code] ------------------ Mit freundlichem Gruß Udo Hübner [Diese Nachricht wurde von CAD-Huebner am 12. Sep. 2006 editiert.] [Diese Nachricht wurde von CAD-Huebner am 12. Sep. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zorro Mitglied
Beiträge: 33 Registriert: 05.11.2001
|
erstellt am: 13. Sep. 2006 10:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, vielen Dank noch einmal, so habe ich es mir vorgestellt! 10 4 you Kann ich auch noch einen 3. Layer mit einbinden? Ich habe versucht es aus der Hilfe herauszulesen und rumgebastelt es aber nicht hin bekommen. Und die interessanten Infos im net waren alle nicht in meiner Muttersprache... Es grüßt herzlich zorro 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: 13. Sep. 2006 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
geht dann mit Lisp einfacher z.B. so (defun LAYERTOGGLE (LAYERLIST) (if(and(=(type LAYERLIST)'LIST) (setq LAYERLIST(vl-remove-if 'null (mapcar '(lambda(X)(if (=(type X)'STR)(strcase X)))LAYERLIST))) (>(length LAYERLIST)0) ) (if(or(setq CLAYER(cadr(member(strcase(getvar "CLAYER"))LAYERLIST))) (setq CLAYER(car LAYERLIST)) ) (command "-layer" "_m" CLAYER "") ) ) ) .. das in einem Supportpfad abspeichern und mit der mnl laden lassen. auf den Button kannst du dir dann z.B das legen (LAYERTOGGLE '("FM" "elek" "0")) geht auch mit mehr Layern, die nacheinander durchgeschaltet werden. ------------------ - 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 |
zorro Mitglied
Beiträge: 33 Registriert: 05.11.2001
|
erstellt am: 13. Sep. 2006 11:13 <-- editieren / zitieren --> Unities abgeben:
|
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 20. Okt. 2016 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo CAD-Huebner kannst du mir bitte helfen ein Makro zu erstellen Ziel: "layer123" mit einem Befehl an- und ausschalten (wenn an dann aus, wenn aus dann an) mit zwei befehlen habe ich es hinbekommen (würde es aber gerne zu einem befehl fusionieren): (command "_.layer" "_off" "layer123" "" "regen") (command "_.layer" "_on" "layer123" "" "regen") ich kann mit ^C^C$M=$(if,$(eq,$(getvar,"clayer")," nicht wirklich etwas anfangen ...
vielen Dank
Gruss fmfm 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: 9732 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 20. Okt. 2016 17:58 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Das könnte man über ein kleines Lisp Makro lösen. Code: (defun C:UHTOGGLELAYER123 ( / tlay) (setvar "cmdecho" 0) (setvar "expert" 1) ; bei aktuellem Layer nicht warnen (Setq tlay "layer123") (if (tblsearch "LAYER" tlay) (if (minusp (cdr (assoc 62 (tblsearch "LAYER" tlay))) ) (command "_.-layer" "_on" tlay "") (command "_.-layer" "_off" tlay "") ) ) (setvar "cmdecho" 1) (princ) )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de 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: 20. Okt. 2016 20:07 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
|
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 21. Okt. 2016 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Hallo erstmal vielen Dank an beide !!! ich habe einn Problem damit eine eigene Lisp in AutoCad einzufügen (deshalb arbeite ich mit direkten makros...) ich habe zuvor lips-dateien aus dem internet kopiert und diese in eingepflegt... diese funktionieren. wenn ich einen von diesen lispdateien kopiere sie umbennene in "layer123" bei meinem befehl in die makro trage ich folgendes ein ^C^Clayer123 dann geh ich zu appload bei datei such ich dann "layer123" klicke auf load suche unten noch den pfad und trag diesen auch ein dann kommt bei mir in der befehlszeile Command: _appload layer123.lsp successfully loaded. aber wenn ich dann den befehl anklicke kommt Command: layer123 Unknown command "LAYER123". (dieser layer ist in der zeichnung und existiert ist aber nicht aktiv ich habe natürlich beie inhalte für die lsp datei probiert sorry für die rechtschreibung und die vielen punkte und komma
vielen Dank für eure Zeit gruss Fmfm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 21. Okt. 2016 17:06 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Hallo Fmfm, ich vermute mal, Dir fehlt noch ein bisschen die Kenntnis zu den Lisp-Programmen. Bloß weil Du eine Lisp-Datei mit dem Namen "layer123.lsp" lädst, heißt das noch nicht, dass Dir ein Befehl mit diesem Namen zur Verfügung steht. Der Name des Befehls wird in der Lisp-Datei definiert und ist das, was hinter (defun c: steht (im obigen Beispiel also UHTOGGLELAYER123 ). Das ist dann der Befehl, den Du in Deinem Makro aufrufen musst. HTH Gruß Thomas (ps. wie Du siehst, liest sich ein Text mit Groß-/Kleinschreibung und Satzzeichen viel einfacher ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 21. Okt. 2016 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Hallo Thomas vielen Dank es funktioniert. Ja mit Makros habe ich erst seit 1-2 Wochen begonnen zu arbeiten (eine eigene LSP hatte ich bis jetzt auch noch nicht eingebunden) Du hast recht was meine Erfahrung betrifft... ich würde es gerne etwas genauer kennenlernen... gibt es ein beschrieb wo alles definiert ist wie man eine LSP Datei genau definiert? (dann muss ich euch nicht ständig auf die nerven gehen mit meinen "bescheuerten" fragen) ich würde nämlich gern als nächstes einen Befehl erzeugen der folgendes kann: -set layer0 und die farbe (nicht vom layer) sondern die farbe in den eigenschaften auf "magenta" legen. Ja in der deutschen Rechtschreibung bin ich leider genau so wie in eigene LSP dateien zu erstellen haha
vielen dank für diese ausführliche unterstüzung!!!! Gruss Ffmfm
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: 22. Okt. 2016 01:07 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
|
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 24. Okt. 2016 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Guten Tag cadffm vielen Dank für die Infos! Leider finde ich über diesen Weg nicht die möglichkeit die Farbe in den Eigenschaften zu Ändern. (Ich möchte NICHT die Farbe des Layers für alle auf diesem Layer liegenden Farben Ändern! nur im Eigenschaftsfenster die Farbe überschreiben) viele Dank
Gruss Fmfm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 24. Okt. 2016 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Hallo CAD-Huebner Hallo Cadmium zu diesem Befehl ist mir leider erst im Nachhinein etwas aufgefallen.. Wenn ich in einer Externen Referenz bin dann heisst mein Layer = xref1|Layer123 (ich habe mehrere Verschiedene Xrefs) Nun schreib ich meinen Befehl etwas um und verseh ihn mit einem Stern (*) (defun C:UHTOGGLELAYER123 ( / tlay) (setvar "cmdecho" 0) (setvar "expert" 1) ; bei aktuellem Layer nicht warnen (Setq tlay "*layer123") (if (tblsearch "LAYER" tlay) (if (minusp (cdr (assoc 62 (tblsearch "LAYER" tlay))) ) (command "_.-layer" "_on" tlay "") (command "_.-layer" "_off" tlay "") ) ) (setvar "cmdecho" 1) (princ) ) Leider funktioniert es so nicht... wäre es noch möglich dies umzusetzen?
Gruss Fmfm
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. Okt. 2016 18:28 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Die aktuellen Eigenschaften(nicht des Layers) sind in den System-/Zeichnungsvariablen gespeichert, für gewöhnlich fangen fast alle mit C an(current). CLAYER CECOLOR=Aktuelle Farbe und weitere.. Zum Lispschnipsel: Wenn es um XREF(dwg) Layer geht, dann ist der Code etwas aufwändiger für einen Toggle, denn der Xrefname ist unbekannt und zudem gibt es ja unter umständen hundert verschiedene. Man muß eine Schleife durch alle Layer einbauen. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Elektroingenieur (m/w/d) | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden in den Technologiebereichen ... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
fmfm Mitglied Facility Management
Beiträge: 258 Registriert: 18.10.2016 AutoCad 2019
|
erstellt am: 25. Okt. 2016 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für zorro
Das mit CECOLOR klappt also ich bastel mir jetzt mal ne Lisp zsm... ja den Layernamen zum Togglen gibts nur 1 mal und keiner heisst auch so ähnlich... naja wenn das zu aufwändig ist dann lass ich einfach in 2 befehlen ... vielen Dank !! Gruss Fmfm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |