| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Layer: TrueColor / Farbbuch auslesen (1261 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 07. Aug. 2008 15:06 <-- editieren / zitieren --> Unities abgeben:
|
| (Fach-)Projektleiter Sekundärtechnik (m/w/d) | E.DIS Netz GmbH | Unbefristet | Vollzeit Als einer der größten regionalen Netzbetreiber in Deutschland gestalten wir bei E.DIS die Zukunft der Energie. Rund 1.700 Mitarbeiter geben Tag für Tag ihr Bestes und sichern den zuverlässigen Betrieb der Strom- und Gasnetze in großen Teilen von Brandenburg und Mecklenburg-Vorpommern. Wir sind Netzgestalter, arbeiten an intelligenten Energielösungen und setzen dabei auf innovative Technologien.... | Anzeige ansehen | Projektmanagement |
|
benwisch Mitglied Bautechniker, CAD-Konstrukteur
Beiträge: 375 Registriert: 01.02.2001
|
erstellt am: 07. Aug. 2008 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Eigentlich ganz einfach mit ActiveX und nix mit TblSearch Code:
(vl-load-com) (vlax-get-property (vlax-ename->vla-object (tblobjname "layer" "0") ) 'TrueColor )
liefert dir ein TrueColor-VlaObject zurück und mit diesem kannst du dir die Werte
- Red --> (vlax-get-property <TrueColor-VlaObject> 'Red)
- Green --> analog wie oben
- Blue --> analog wie oben
und
- BookName --> (vlax-get-property <TrueColor-VlaObject> 'BookName)
- ColorName --> analog wie oben
auslesen.Alternativ die Kurzschreibweise... vla-get-truecolor vla-get-red vla-get-green vla-get-blue vla-get-bookname vla-get-colorname
Nur in Lisp, also ohne ActiveX, wird es schwieriger, da im Layer-Entity nur ein Index abgelegt ist. Dieser befindet sich im GC 420 (nur vorh. wenn gesetzt bzw. Farbuch vorh. ist) und Farbbuch/Farbname findest du im GC 430 (nur vorh. wenn Farbuch gesetzt ist). Um den Index in RGB umzuwandeln muß man sich eine Funktion schreiben :)
Code:
(defun :C-TCsplit ( #c / ) (list (lsh (fix #c) -16) (lsh (lsh (fix #c) 16) -24) (lsh (lsh (fix #c) 24) -24) ) )
Aufruf z.B. --> (:C-TCsplit (cdr(assoc 420 (entget(tblobjname "layer" "0"))))) Hier am Beispiel natürlich GC 420 vorh. So und nun viel Spaß beim coden ------------------ CADmaro.de
[Diese Nachricht wurde von benwisch am 07. Aug. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|