| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Layer zuweisen (1506 mal gelesen)
|
RoyCAD Mitglied Dipl-Ing Energietechnik
Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 12. Mai. 2005 12:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe mal wider ein kleines Problem ich will einem Objekt ein Layer zuweisen, aber bis jetzt konnte ich nichts finden (Google, Suchfunktion). Ich wähle ein Objekt und kann ich Layername auslesen, aber wie kann ich danach einen neuen Layer dem Objekt_1 zuweisen. (setq Objekt_1 (entget (car (entsel)))) (setvar "CLAYER" (cdr (assoc 8 Objekt_1))) Gruß RoyCAD
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 12. Mai. 2005 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
ungefähr so (if(and(setq Objekt_1 (entget (car (entsel)))) (tblobjname "LAYER" "NEUERLAYER") ) (entmod(subst (cons 8 "NEUERLAYER")(assoc 8 OBJEKT_1) OBJEKT_1)) ) "NEUERLAYER" ist dabei der zuzuweisende Layer
P.S. das du nix finden konntest kann ich kaum glauben ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." [Diese Nachricht wurde von CADmium am 12. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 12. Mai. 2005 12:34 <-- editieren / zitieren --> Unities abgeben:
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 12. Mai. 2005 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
Hallo RoyCAD, Du kannst auch diese vereinfachte Version nehmen: (if(setq Objekt_1 (entget (car (entsel)))) (entmod(subst (cons 8 "NEUERLAYER")(assoc 8 OBJEKT_1) OBJEKT_1)) ) Dann wird der Neue Layer erzeugt, wenn er nicht existiert... Henning (alert (apply 'strcat (mapcar '(lambda (x) (chr x)) '(68 97 115 32 119 97 114 39 115 32 101 114 115 116 32 109 97 108 33 10 70 114 111 104 101 115 32 76 105 115 112 101 108 110 46 46 46))))
------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 12. Mai. 2005 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
|
| |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Mai. 2005 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für RoyCAD
Hallo RoyCAD, Auch wenn die Frage bereits beantwortet ist - eine Ergänzung: Wird beim (entmake ..) oder (entmod ..) ein Layername angegeben der nicht in der Zeichnung existiert, dann wird dieser in der Zeichnungsdatenbank erzeugt. Das geschieht jedoch mit Standardvorgaben Farbe 7 und Linientyp Continuous. Da dies wohl in den meisten Fällen eher nicht die gewünschten Einstellungen sind, sollte man den Layer schon mit den richtigen Einstellungen erzeugen. Da du nun schon bei den (entxxx ..)-Funktionen bist, nachfolgend dein Bsp erweitert um eine SUB-Funktion zum erzeugen der Layer mit den gewünschten Einstellungen.
Code:
(defun c:ObjNEUERLAYER (/ newLayer) (setq newLayer "NEUERLAYER") (if (setq Objekt_1 (entget (car (entsel)))) (progn (if (not(tblobjname "LAYER" newLayer)) (make:Layer newLayer 1) ) (entmod(subst (cons 8 newLayer)(assoc 8 OBJEKT_1) OBJEKT_1)) ) ) ) (defun make:Layer (Name Farbe /) (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 Name) '(70 . 0) (cons 62 Farbe) '(6 . "Continuous") '(290 . 1) '(370 . -3) ) ) )
Die Funktion make:Layer ist nur als Bsp zu sehen, da ja der Name und die Farbe nicht die einzigen Eigenschaften eines Layers sind. Weitere Funktionen, die Layer betreffend, kannst du auf der Seite http://cad-od.de unter 'Service' Kategorie 'Layer' finden. in dem Tool LTB sind viele Layerfunktionen enthalten. Bei Fragen ... Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |