こちらの続きのようなものです。
GetParameterOnSubStringメソッド - C#ATIA
こちらのDrawingText.TextPropertiesのcolorがRGBAのLong型を返してきます。
r1 DrawingTextProperties (Object)
この数値がRGB(例えば255, 255, 0)をどうやって計算すれば求められる値なのか
分かりません。
色々と調べたのですがやっぱりわかりませんでした。
きっと計算で出来るのでしょうけど。
仕方ないのでSelectionで色を変更し、GetParameterOnSubStringで拾い出すマクロを
作りました。
'vba Sub test() Dim doc As Document Set doc = CATIA.ActiveDocument Dim sel As Object 'selection Set sel = doc.selection Dim msg$: msg = "選択して下さい : ESCキー 終了" Dim txt As Variant 'DrawingText Dim vis As Variant 'As VisPropertySet Set vis = sel.VisProperties Dim colorMap As Variant colorMap = initColorMap() Dim rgbAry As Variant Select Case sel.SelectElement2(Array("DrawingText"), msg, False) Case "Cancel", "Undo", "Redo" Exit Sub End Select Set txt = sel.Item(1).value For i = 0 To UBound(colorMap) rgbAry = Split(colorMap(i), ",") Call vis.SetRealColor( _ CLng(rgbAry(0)), _ CLng(rgbAry(1)), _ CLng(rgbAry(2)), _ 1) iParam = CatTextProperty.catColor res = txt.GetParameterOnSubString(iParam, 0, 0) Debug.Print colorMap(i) & " -> " & res Next End Sub Private Function initColorMap() _ As Variant 'array(str) initColorMap = Array( _ "255, 255, 0", _ "128, 0, 255", _ "0, 0, 255", _ "0, 128, 255", _ "0, 255, 255", _ "0, 255, 0", _ "0, 128, 0", _ "211, 178, 125", _ "255, 128, 0", _ "255, 0, 0", _ "255, 0, 255", _ "128, 64, 64") End Function
で結果はこちら
255, 255, 0 -> -65281 128, 0, 255 -> -2147418113 0, 0, 255 -> 65535 0, 128, 255 -> 8454143 0, 255, 255 -> 16777215 0, 255, 0 -> 16711935 0, 128, 0 -> 8388863 211, 178, 125 -> -743277057 255, 128, 0 -> -8388353 255, 0, 0 -> -16776961 255, 0, 255 -> -16711681 128, 64, 64 -> -2143272705
フムフム・・・やっぱりわかりません。 でもこの方法で行けそう。