0
Est-il possible de lire la couleur d'un CATBody? Quelque chose comme:Comment obtenir Body Color dans CATIA VBA macro?
For Each myBody In myPart.Bodies
myColor = myBody.Color
Next
Est-il possible de lire la couleur d'un CATBody? Quelque chose comme:Comment obtenir Body Color dans CATIA VBA macro?
For Each myBody In myPart.Bodies
myColor = myBody.Color
Next
Oui, c'est possible, mais pas exactement simple. La couleur est disponible via VisProperties
via un Selection
. En outre, c'est l'un de ces cas étranges avec l'API Catia où vous avez besoin d'utiliser la liaison tardive (je ne peux pas vous dire pourquoi)
Voici un exemple:
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
raison pour laquelle vous avez ces problèmes La liaison anticipée est, r, g, b sont mal cotés, Dim r, g, b Comme Long signifie, r, et g sont des Variants, juste b est Long, car la fonction .GetRealColor attend des longs, elle ne vous permettra pas de passer en variant paramètre, donc, si vous définissez rgb comme Dim r As Long, g As Long, b Comme Long, vous serez également capable d'utiliser la liaison anticipée, et évitez de définir vis en premier. – tsolina