| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: Layer-Problem (498 mal gelesen)
|
Erich Klein Mitglied
Beiträge: 27 Registriert: 25.03.2008
|
erstellt am: 15. Jul. 2008 22:36 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle, ich habe ein Problem mit Layern in einer Zeichnung. Ich konnte mir nicht vorstellen, dass der Sachverhalt zu einem Problem führen kann, aber leider ist es so. Ich habe eine Zeichnung mit folgenden Layer-Namen: 01_tisch 02_stuhl 03_schrank 04_sessel Ich versuchte mit einer Lisp-Routine zuerst alle Layer auszuschalten, dann den Layer 01_tisch wieder einzuschalten und auf diesem Layer wieder etwas zu zeichnen. Dies ist mit der Lisp-Routine nie gelungen. Das gleiche Problem besteht auch bei den anderen Layern. Wie soll der Lisp-Code aussehen, damit AutoCAD alle Layer ausschaltet und nur Layer 01_tisch wieder einschaltet. Ich darf keine Layerbezeichnungen verwenden, die nur aus Zahlen bestehen (z.B. 1 oder 50). Für eine Unterstützung danke ich Euch im voraus. Gruß Erich
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
proyectista Mitglied Technische Zeichnerin
Beiträge: 39 Registriert: 23.02.2008 Xeon E5530 2.4Ghz 4 GB RAM Windos 7 / 64bits Civil 3D 2011
|
erstellt am: 16. Jul. 2008 03:37 <-- editieren / zitieren --> Unities abgeben: Nur für Erich Klein
also wenn ich Dich richtig verstehe, koennte das so gehen: (command "-layer" "off" "*" "y" "") (command "-layer" "on" "01_tisch" "s" "01_tisch" "") oder so: (hier fehlt, den current layer zu setzen) (setq ent (entget (tblobjname "LAYER" (cdr(assoc 2 (tblnext "LAYER" 1)))))) (while ent (setq ent (subst (cons 62 (* -1(cdr(assoc 62 ent)))) (assoc 62 ent) ent)) (entmod ent) (setq ent (entget (tblobjname "LAYER" (cdr(assoc 2 (tblnext "LAYER")))))) ) ; end while (setq ent (entget (tblobjname "LAYER" "01_tisch"))) (setq ent (subst (cons 62 (* -1(cdr(assoc 62 ent)))) (assoc 62 ent) ent)) (entmod ent)
------------------ Jovi (sin Bon). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 16. Jul. 2008 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für Erich Klein
Zitat: Original erstellt von proyectista: also wenn ich Dich richtig verstehe, koennte das so gehen:(command "-layer" "off" "*" "y" "") (command "-layer" "on" "01_tisch" "s" "01_tisch" "")
Da die meisten Mitleser hier ein deutsches Autocad haben werden internationalisiere ich mal die Commands: (command "_-layer" "_off" "*" "_y" "") (command "_-layer" "_m" "01_tisch" "_on" "01_tisch" "") man kann auch alles in ein command packen (command "_-layer" "_off" "*" "_y" "_m" "01_tisch" "_on" "01_tisch" "") Die Option _m hab ich gewählt, falls der Layer 01_itsch noch nicht existiert, dann wird er angelegt und aktuell gesetzt, so dass die Option _on nicht ins Leere läuft. ------------------ - 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 |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 16. Jul. 2008 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für Erich Klein
Morgen, habe da auch noch ein paar Zeilen zum spielen ;;(lay "deinlayer") (defun Lay (name /) (setq acad (vlax-get-acad-object) doc (vla-get-activedocument acad) lays (setq lays (vla-get-layers doc)) obj (vla-item lays name) ) ;;(vla-put-layeron obj :vlax-true);Layer an (vla-put-layeron obj :vlax-false);Layer aus ;;(vla-put-activelayer doc obj);Layer activ ) mfg heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erich Klein Mitglied
Beiträge: 27 Registriert: 25.03.2008
|
erstellt am: 16. Jul. 2008 12:23 <-- editieren / zitieren --> Unities abgeben:
|