Hallo,
folgendes Problem habe ich: wenn ich mit dem Layerstatusmanager einen Status exportiere, dann wird die RGB Farbe dem Gruppencode 92 zugeordnet, ausgedrückt durch eine Zeichenfolge.
Wenn ich mir den Tabelleneintrag des entsprechenden Layer anschaue, dann ist im GC 420 ebenfalls die RGB-Farbe durch ein Zeichenfolge dargestellt, allerdings eine andere.
Gibt es eine Konvertierungsmöglichkeit zwischen diesen beiden Zeichenfolgen???
1. Testfunktion über ActiveX, ich erhalte die Zeichenfolgen, wie sie auch beim Layerstatusmanager ausgegeben werden:
Code:
(defun RGB_test1 (/ I LAYER_LISTE TRUECOLOR)
(setq i -1)
(vlax-for ITEM (vla-get-Layers
(vla-get-activedocument (vlax-get-acad-object)))
(setq TrueColor (vla-get-TrueColor ITEM))
(setq layer_liste
(cons
(list
(vla-get-Name ITEM)
(if (= (vla-get-ColorMethod TrueColor) 194)
(vla-get-EntityColor TrueColor)
nil))
layer_liste))
(setq i (1+ i)))
(reverse layer_liste))
2. Testfunktion, in der ich auf die GC 420's der Tabelleneinträge Layer zugreife:
Code:
(defun RGB_test2 ( / )
(setq layer_liste (list (cdr(assoc 2 (tblnext "LAYER" T)))))
(while (setq layer (tblnext "LAYER"))
(setq layer_liste (cons (cdr(assoc 2 layer))layer_liste)))
(mapcar '(lambda(A)
(list (cdr(assoc 2 (entget(tblobjname "LAYER" A))))
(cdr(assoc 420(entget(tblobjname "LAYER" A))))
)
)
(reverse layer_liste)))
Ergebnis RGB_test1:
(("0" nil) ("Layer1" nil) ("Layer2" -1026377869) ("Layer3" -1031634302))
Ergebnis RGB_test2:
(("0" nil) ("Layer1" nil) ("Layer2" 13809523) ("Layer3" 8553090))
wobei
"Layer2" R=210 G=183 B=115
"Layer3" R=130 G=130 B=130
Die Ergebnisse aus RGB_test2 können z.B. für die Funktion ACAD_TRUECOLORDLG verwendet werden, das passt.
(acad_truecolordlg '(420 . 13809523)) => R=210 G=183 B=115
------------------
viele Grüße
Jörn
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP