Macro SW2020 / Soucis dans le code VBA

Bonjour,

Je n'arrive pas à faire fonctionner cette macro codée sous VBA malgré tous mes efforts.

Mon objectif est de changer l'apparence de la pièce en fonction du traitement de surface que j'ai entré dans la propriété personnalisée "TRAITEMENT". Je veux créer une nouvelle configuration appelée "COULEURS REALISTES" et je veux que l'apparence ait changé uniquement dans cette configuration.

Je n'arrive pas non plus à publier ma macro dans la description... je dépasse les 6000 caractères autorisés à priori... Je la mets en PJ, si quelqu'un voit ce qui ne va pas dans mon code, ce serait une enorme aide pour moi!!

 

Merci!!

 


attribuer_traitement_de_surface_a_couleur.swp

Bonjour,

Le lien vers le fichier est brisé

Bonjour, 

en effet, c'est très bizarre... je la retente ici!


attribuer_traitement_de_surface_a_couleur.swp

Je ne pense pas que tu puisse changer l'état d'affichage avec SelectedFeatureProperties car l'état d'affichage n'est pas une feature.

Pour changer l'état d'affichage des pièces dans un assemblage regarde ici: change_color_of_component_in_specific_display_state_example_vb

Pour changer la couleur des pièces elles mêmes, regarde ceci: MaterialPropertyValues

D'accord, je vais tenter quelque chose avec ça alors! 

autre petite question, j'ai du mal à comprendre pourquoi dans leur tuto, SW ils multiplient la fonction Min/Max Excel par 16*16 puis par 16*16*16*16?

16x16 = 256, ce qui peut correspondre à l'intervale de couleur [0;255], mais pourquoi faire cette multiplication si la valeur de ma variable est déjà sous ce format? Et encore plus incompréhensible, pourquoi faire 16x16x16x16 ensuite?? Je ne comprends pas... (J'ai mis le bout de code en question ci-dessous)

 PeintureBleueRGB = Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueR, 255), 0) + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueG, 255), 0) * 16 * 16 + Excel.WorksheetFunction.Max(Excel.WorksheetFunction.Min(PeintureBleueB, 255), 0) * 16 * 16 * 16 * 16

 

C'est commme ça que les couleurs RGB sont concaténées dans la propriétée Color

Rebonjour Jerome, 

J'ai joué avec tes liens, mais je bute toujours sur une erreur qui semblerait venir de la ligne 189 de mon code... J'ai réutilisé une partie de ton code afin que l'apparence change dans toutes les pièces de l'ensemble et des sous-ensembles. 

C'est cette ligne de code qui pose soucis, mais je ne trouve pas la raison : 

swApp.ActivateDoc3 swComp.Name2, False, swRebuildOnActivation_e.swRebuildActiveDoc, Empty

 

Je mets ma macro en PJ, si tu pouvais y jeter un coup d'œil pour me guider une fois de plus, je t'en serais reconnaissant!!

Merci


attribuer_traitement_de_surface_a_couleur.swp

ActivateDoc3 requière le nom de la pièce (<ModelDoc2>.GetTitle ou <ModelDoc2>.GetPathName) au lieu du nom du composant (swComp.Name2)