| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Farbe VonLayer in Objektfarbe umwandeln (3181 mal gelesen)
|
TheInformer Mitglied
Beiträge: 25 Registriert: 07.11.2009 AutoCAD 2002-2012, ADT/ACA 3.3 - 2012, Core i7, 12 GB RAM, Windows 7-64 bit....
|
erstellt am: 01. Aug. 2011 21:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich suche ein Tool, welches Objekten (die teilweise als Farbinformation "VonLayer" besitzen), diese Farbinformation Objektbezogen zuweist. Hintergrund ist ein Unzahl an eigentlich überflüssigen Layer. Teilweise sind den Objekten direkt Farben zugewiesen, teilweise kommt die Farbe vom Layer. Am Schluß sollte eigentlich alles eine Objektfarbe besitzen. Hab ich mich verständlich ausgedrückt? :-) Sowas gibts bestimmt schon. Hab leider bei der Suche nix gefunden. Es sind übrigens keine Blöcke, sondern "normale" Objekte. 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: 01. Aug. 2011 21:17 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Die Jungs von d-tools haben da sicher was (meist für kleines Geld). PS.: nein - ich gehöre nicht dazu und nein - ich bekomme keine Provision oder sonstige Vergütungen ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 02. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 02. Aug. 2011 01:25 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
|
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: 02. Aug. 2011 18:12 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
und hier noch was aus dem "Nähkästchen": Code: (defun c:vox-LayCol2Obj ( / ss ssAX acaddoc lay obj) (vl-load-com) (if (and (setq ss (ssget)); bzw. mit Filter "von Layer": (setq ss (ssget '((62 . 256)))) (setq ssAX (vla-get-ActiveSelectionSet (setq acaddoc (vla-get-ActiveDocument (vlax-get-acad-object))))) (setq lay (vla-get-layers acaddoc)) ) (vlax-for obj ssAX (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj)))) ) ) )
Grüsse, Henning------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel(R) Core(TM) i7-4800MQ CPU@2.7GHz NVIDIA Quadro KM4600 Creo elements/direct modeling Creo elements/direct drafting Acad 2014 Acad Mechanical 2014
|
erstellt am: 21. Dez. 2017 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 21. Dez. 2017 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Hallo Simon, eigentlich nicht, weil Du scheinbar noch gar nicht selber probiert hast, aber es ist ja schon fast Weihnachten;-) Code:
(defun c:vox-LayCol2Obj ( / ss ssAX acaddoc lay obj BlockList) (vl-load-com) (if (and (setq ss (ssget)); bzw. mit Filter "von Layer": (setq ss (ssget '((62 . 256)))) (setq ssAX (vla-get-ActiveSelectionSet (setq acaddoc (vla-get-ActiveDocument (vlax-get-acad-object))))) (setq lay (vla-get-layers acaddoc)) ) (vlax-for obj ssAX (if (and(=(vla-get-Objectname obj) "AcDbBlockReference") (not(member (vla-get-EffectiveName obj)BlockList)) ) (progn (vlax-for ITEM (vla-item(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vla-get-EffectiveName obj)) (vla-put-truecolor ITEM (vla-get-truecolor (vla-item lay (vla-get-layer ITEM))))) (setq BlockList (cons (vla-get-EffectiveName obj)BlockList)) (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj))))) (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj))))) ;;;Attribute (if (=(vla-get-Objectname obj) "AcDbBlockReference") (mapcar '(lambda(X) (vla-put-truecolor X (vla-get-truecolor (vla-item lay (vla-get-layer X)))) ) (if (=(vla-get-hasattributes obj):vlax-true) (vlax-safearray->list (vlax-variant-value(vla-getattributes obj))) ) ) ) ) ) (princ) )
So müßte es funktionieren, viel getestet habe ich nicht, aber das machst Du dann ja. Wenn Du auch noch Blöcke im Block hast, dann findet sich ja vielleicht noch ein anderer Weihnachtsmann.
Auf diesem Wege kann ich aber allen Forenmitgliedern frohe Weihnachten wünschen, bis nächstes Jahr.
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel(R) Core(TM) i7-4800MQ CPU@2.7GHz NVIDIA Quadro KM4600 Creo elements/direct modeling Creo elements/direct drafting Acad 2014 Acad Mechanical 2014
|
erstellt am: 21. Dez. 2017 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Hallo Jörn, vielen Dank trozdem... aber wenn ichs einfach nicht kann, tu ich mich schwer mit probieren. Und ja, ich habe nicht nur eine Ebene Block in Block, sondern sehr viele. Warte auf einen Weihnachtsmann ;-) Grüße Simon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 21. Dez. 2017 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Hallo Simon, ich kann's nicht lassen:-))) Code:
(defun c:vox-LayCol2Obj ( / ss ssAX acaddoc lay obj BlockList) (vl-load-com) (if (and (setq ss (ssget)); bzw. mit Filter "von Layer": (setq ss (ssget '((62 . 256)))) (setq ssAX (vla-get-ActiveSelectionSet (setq acaddoc (vla-get-ActiveDocument (vlax-get-acad-object))))) (setq lay (vla-get-layers acaddoc)) ) (vlax-for obj ssAX (if (and(=(vla-get-Objectname obj) "AcDbBlockReference") (not(member (vla-get-EffectiveName obj)BlockList)) ) (progn (setq BlockList(JB_vox-LayCol2Obj obj lay acaddoc BlockList)) (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj)))) ) (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj))))) ;;;Attribute (if (=(vla-get-Objectname obj) "AcDbBlockReference") (mapcar '(lambda(X) (vla-put-truecolor X (vla-get-truecolor (vla-item lay (vla-get-layer X)))) ) (if (=(vla-get-hasattributes obj):vlax-true) (vlax-safearray->list (vlax-variant-value(vla-getattributes obj))) ) ) ) ) ) (princ) ) (defun JB_vox-LayCol2Obj (obj lay acaddoc BlockList / ) (vlax-for ITEM (vla-item(vla-get-blocks acaddoc) (vla-get-EffectiveName obj)) (if(=(vla-get-Objectname ITEM) "AcDbBlockReference") (progn (setq BlockList(JB_vox-LayCol2Obj ITEM lay acaddoc BlockList)) (vla-put-truecolor ITEM (vla-get-truecolor (vla-item lay (vla-get-layer ITEM))))) (vla-put-truecolor ITEM (vla-get-truecolor (vla-item lay (vla-get-layer ITEM)))) ) ) (cons (vla-get-EffectiveName obj)BlockList) )
So müßte es auch mit dem Block im Block klappen, aber VORHER speichern, falls ich Blödsinn gemacht, Ergebnisse auf Plausibilität prüfen! ------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel(R) Core(TM) i7-4800MQ CPU@2.7GHz NVIDIA Quadro KM4600 Creo elements/direct modeling Creo elements/direct drafting Acad 2014 Acad Mechanical 2014
|
erstellt am: 21. Dez. 2017 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
|
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel(R) Core(TM) i7-4800MQ CPU@2.7GHz NVIDIA Quadro KM4600 Creo elements/direct modeling Creo elements/direct drafting Acad 2014 Acad Mechanical 2014
|
erstellt am: 21. Dez. 2017 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Zitat: Original erstellt von SimonGB: Wusste ichs doch wer der Weihnachtsmann ist... ...vielen Dank, funktioniert tadellos...Schöne Weihnachten euch allen... Grüße Simon
Naja, so ganz doch noch nicht... ...es sind natürlich auch ab und zu Objekte vorhanden die schon eine Farbe haben, also nicht Vonlayer. Diese sollten natürlich nicht die Farbe des Layers bekommen. Also nur diese Objekte ändern die VonLayer sind. Was müsste im Code anderst sein? Vielen Dank nochmal. Grüße Simon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 21. Dez. 2017 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
Hallo Simon, ungetestet: Code:
(defun c:vox-LayCol2Obj ( / ss ssAX acaddoc lay obj BlockList) (vl-load-com) (if (and (setq ss (ssget)); bzw. mit Filter "von Layer": (setq ss (ssget '((62 . 256)))) (setq ssAX (vla-get-ActiveSelectionSet (setq acaddoc (vla-get-ActiveDocument (vlax-get-acad-object))))) (setq lay (vla-get-layers acaddoc)) ) (vlax-for obj ssAX (if (and(=(vla-get-Objectname obj) "AcDbBlockReference") (not(member (vla-get-EffectiveName obj)BlockList)) ) (progn (setq BlockList(JB_vox-LayCol2Obj obj lay acaddoc BlockList)) (JB_vox-LayCol2Obj:TC:Put obj lay) ) (JB_vox-LayCol2Obj:TC:Put obj lay)) ;;;Attribute (if (=(vla-get-Objectname obj) "AcDbBlockReference") (mapcar '(lambda(X) (JB_vox-LayCol2Obj:TC:Put X lay) ) (if (=(vla-get-hasattributes obj):vlax-true) (vlax-safearray->list (vlax-variant-value(vla-getattributes obj))) ) ) ) ) ) (princ) ) (defun JB_vox-LayCol2Obj (obj lay acaddoc BlockList / ) (vlax-for ITEM (vla-item(vla-get-blocks acaddoc) (vla-get-EffectiveName obj)) (if(=(vla-get-Objectname ITEM) "AcDbBlockReference") (progn (setq BlockList(JB_vox-LayCol2Obj ITEM lay acaddoc BlockList)) (JB_vox-LayCol2Obj:TC:Put ITEM lay) ) (JB_vox-LayCol2Obj:TC:Put ITEM lay) ) ) (cons (vla-get-EffectiveName obj)BlockList) ) ;;;TrueColor ändern, wenn Eigenschaft "vonLayer" (defun JB_vox-LayCol2Obj:TC:Put (obj lay / ) (if (=(vla-get-ColorMethod(vla-get-TrueColor obj))192) (vla-put-truecolor obj (vla-get-truecolor (vla-item lay (vla-get-layer obj)))) ) )
Wenn (=(vla-get-ColorMethod(vla-get-TrueColor obj))192), dann ist die Farbe von Layer
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel(R) Core(TM) i7-4800MQ CPU@2.7GHz NVIDIA Quadro KM4600 Creo elements/direct modeling Creo elements/direct drafting Acad 2014 Acad Mechanical 2014
|
erstellt am: 21. Dez. 2017 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für TheInformer
|