如何在 CATIA VBA 宏中获取主体颜色?
How to get Body Color in CATIA VBA macro?
是否可以读取 CATBody 的颜色?类似于:
For Each myBody In myPart.Bodies
myColor = myBody.Color
Next
是的,这是可能的,但并不完全直接。颜色可通过 VisProperties
通过 Selection
获得。此外,这是 Catia API 的那些奇怪情况之一,您需要在其中使用后期绑定(我不能告诉你原因)
这是一个例子:
Option Explicit
Sub BodyColors()
Dim sel As Selection
Dim selected As SelectedElement
Dim vis As Variant 'VisPropertySet 'This must be variant for late binding. Otherwise you get an error.
Dim RGB(3) As Long 'or you can use an array
Dim r, g, b As Long
Dim myPart As Part
Dim myBody As Body
Set myPart = CATIA.ActiveDocument.Part
Set sel = CATIA.ActiveDocument.Selection
For Each myBody In myPart.Bodies
sel.Clear
sel.Add myBody
Set vis = sel.VisProperties
vis.GetRealColor r, g, b 'you must pass the values into the function
Debug.Print myBody.Name & ": "; r & "," & g & "," & b
Next
sel.clear
End Sub
是否可以读取 CATBody 的颜色?类似于:
For Each myBody In myPart.Bodies
myColor = myBody.Color
Next
是的,这是可能的,但并不完全直接。颜色可通过 VisProperties
通过 Selection
获得。此外,这是 Catia API 的那些奇怪情况之一,您需要在其中使用后期绑定(我不能告诉你原因)
这是一个例子:
Option Explicit
Sub BodyColors()
Dim sel As Selection
Dim selected As SelectedElement
Dim vis As Variant 'VisPropertySet 'This must be variant for late binding. Otherwise you get an error.
Dim RGB(3) As Long 'or you can use an array
Dim r, g, b As Long
Dim myPart As Part
Dim myBody As Body
Set myPart = CATIA.ActiveDocument.Part
Set sel = CATIA.ActiveDocument.Selection
For Each myBody In myPart.Bodies
sel.Clear
sel.Add myBody
Set vis = sel.VisProperties
vis.GetRealColor r, g, b 'you must pass the values into the function
Debug.Print myBody.Name & ": "; r & "," & g & "," & b
Next
sel.clear
End Sub