CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -29%
Pack Smartphone Google Pixel 8a 5G 128 Go + Ecouteurs ...
Voir le deal
469 €

Paramètres liés à un product

2 participants

Aller en bas

Paramètres liés à un product Empty Paramètres liés à un product

Message par BenBST Mar 12 Sep 2023 - 10:46

Bonjour à tous,

Je rencontre un problème sur une macro que j'ai fait. Ces 2 dernières (1 pour les CatPart et 1 pour les CatProduct) ont pour but de récupérer des valeurs dans des paramètres (qui sont au mêmes niveaux que l'éléments 3D qu'on veut updater) et les intégrer aux propriétés de la part/product.

Celle de la Part fonctionne parfaitement.
Par contre je rencontre un souci sur celle du Product. Elle fonctionne très bien quand le product et vide (sans part/product aux niveaux en dessous), mais dès que j'intègre des parts/products dans les niveaux en dessous elle tourne dans le vide sans les mettre à jours.

Je pense que cela vient de ces 2 lignes
Code:

Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product

Voici pour info la macro complète.

Code:

Language="VBSCRIPT"

Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product

product1.Update

Set parametersconcepteur = product1.Parameters
Set strParamconcepteur = parametersconcepteur.Item("Concepteur")

Set parameterscommentaires = product1.Parameters
Set strParamcommentaires = parameterscommentaires.Item("Commentaires")

Set parametersmateriau = product1.Parameters
Set strParammateriau = parametersmateriau.Item("Materiau")

Set parameterstype = product1.Parameters
Set strParamtype = parameterstype.Item("Type-Procede")

Set parameterstraitementmateriau = product1.Parameters
Set strParamtraitementmateriau = parameterstraitementmateriau.Item("TraitementMateriau")

Set parameterstraitementdesurface = product1.Parameters
Set strParamtraitementdesurface = parameterstraitementdesurface.Item("TraitementDeSurface")

Set parametersmasse = product1.Parameters
Set strParammasse = parametersmasse.Item("Masse")

Set parametersgx = product1.Parameters
Set strParamgx = parametersgx.Item("Gx")

Set parametersgy = product1.Parameters
Set strParamgy = parametersgy.Item("Gy")

Set parametersgz = product1.Parameters
Set strParamgz = parametersgz.Item("Gz")



Set parametersproprieteconcepteur = product1.Parameters
Set strParamproprieteconcepteur = parametersproprieteconcepteur.Item("Propriétés\Concepteur")

Set parametersproprietecommentaires = product1.Parameters
Set strParamproprietecommentaires = parametersproprietecommentaires.Item("Propriétés\Commentaires")

Set parametersproprietemateriau = product1.Parameters
Set strParamproprietemateriau = parametersproprietemateriau.Item("Propriétés\Materiau")

Set parametersproprietetype = product1.Parameters
Set strParamproprietetype = parametersproprietetype.Item("Propriétés\Type-Procede")

Set parametersproprietetraitementmateriau = product1.Parameters
Set strParamproprietetraitementmateriau = parameterstraitementmateriau.Item("Propriétés\TraitementMateriau")

Set parametersproprietetraitementdesurface = product1.Parameters
Set strParamproprietetraitementdesurface = parametersproprietetraitementdesurface.Item("Propriétés\TraitementDeSurface")

Set parametersproprietemasse = product1.Parameters
Set strParamproprietemasse = parametersproprietemasse.Item("Propriétés\Masse")

Set parametersproprietegx = product1.Parameters
Set strParamproprietegx = parametersproprietegx.Item("Propriétés\Gx")

Set parametersproprietegy = product1.Parameters
Set strParamproprietegy = parametersproprietegy.Item("Propriétés\Gy")

Set parametersproprietegz = product1.Parameters
Set strParamproprietegz = parametersproprietegz.Item("Propriétés\Gz")



strParamproprieteconcepteur.Value = strParamconcepteur.Value
strParamproprietecommentaires.Value = strParamcommentaires.Value
strParamproprietemateriau.Value = strParammateriau.Value
strParamproprietetype.Value = strParamtype.Value
strParamproprietetraitementmateriau.Value = strParamtraitementmateriau.Value
strParamproprietetraitementdesurface.Value = strParamtraitementdesurface.Value
strParamproprietemasse.Value = strParammasse.Value
strParamproprietegx.Value = strParamgx.Value
strParamproprietegy.Value = strParamgy.Value
strParamproprietegz.Value = strParamgz.Value

MsgBox ("Macro à relancer OBLIGATOIREMENT à chaque fois que vous faites une modification dans le CatProduct!Exclamation")

End Sub

Quelqu'un peut il m'aider
Merci  Paramètres liés à un product 1f600

BenBST
timide
timide

Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par lumpazepfel Mar 12 Sep 2023 - 13:26

Salut Benoit,

En effet, la déclaration de la collection des paramètres est différentes en fonction du type de fichier.
Exemple:
Code:

''Get ActiveDocument
Dim myDocument 'As PartDocument
Set myDocument = CATIA.ActiveDocument
Dim oParams 'As Parameters

If TypeName(myDocument) = "PartDocument" Then
    Set oParams = myDocument.Part.Parameters
    Set oParams = oParams.RootParameterSet.DirectParameters
ElseIf TypeName(myDocument) = "ProductDocument" Then
    Set oParams = myDocument.Product.Parameters
    Set oParams = oParams.RootParameterSet.DirectParameters
ElseIf TypeName(myDocument) = "DrawingDocument" Then
    Set oParams = myDocument.Parameters
    Set oParams = oParams.RootParameterSet.DirectParameters
Else
    MsgBox "Pas de fichier en session"
    Exit Sub
End If

Ensuite dans ton code tu n'a pas besoins de redéfinir cette collection pour chaque paramètre : oParams va contenir la collection des paramètres du document et la fonction item te permet de récupérer celui dont tu as besoins.
Code:

' INUTILE : Set parametersconcepteur = product1.Parameters
Set strParamconcepteur =oParams.Item("Concepteur")

' INUTILE : Set parameterscommentaires = product1.Parameters
Set strParamcommentaires = oParams.Item("Commentaires")
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par lumpazepfel Mer 13 Sep 2023 - 13:20

Salut Benoit,

Si j'ai bien compris tu veux copier les valeurs d'un paramètre vers une propriété utilisateur de même nom.
Tu peux simplifier ta macro voir exemple ci-dessous avec les paramètres "Concepteur" et "Commentaires" )
Les paramètres et les propriétés doivent être existantes sinon tu auras une erreur mais tout cela peut se gérer au besoins.

Code:


Sub catmain()

Dim myDocument 'As Document
Set myDocument = CATIA.ActiveDocument
' Collection des paramètres
Dim oParams 'As Parameters
' Collection des propriétés utilisateur
Dim oProps

If TypeName(myDocument) = "PartDocument" Then
    Set oParams = myDocument.Part.Parameters
    Set oParams = oParams.RootParameterSet.DirectParameters
    Set oProps = myDocument.Product.UserRefProperties
ElseIf TypeName(myDocument) = "ProductDocument" Then
    Set oParams = myDocument.Product.Parameters
    Set oParams = oParams.RootParameterSet.DirectParameters
    Set oProps = myDocument.Product.UserRefProperties
Else
    MsgBox "Pas de CATPart ou CATProduct actif"
    Exit Sub
End If
oProps.Item("Concepteur").Value = oParams.Item("Concepteur").Value
oProps.Item("Commentaires").Value = oParams.Item("Commentaires").Value
End Sub
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par BenBST Mer 13 Sep 2023 - 13:50

Salut Marc,

Désolé de te répondre que maintenant. J'ai du passer sur d'autre sujets plus "prioritaire" hier aprem et ce matin.

Oui voilà, en gros je fais en sorte que le concepteur remplisse les paramètres de la part/product. Et la macro récupère ses valeurs pour les injecter dans les propriétés (du même nom) que j'ai au préalable intégrer à nos templates de travail.

Et pour en revenir au 2ème code que tu m'as envoyé. Oui j'imagine qu'il doit y avoir des codages beaucoup plus simple que ma macro de base. Mon problème est que je suis encore très novice sur cette aspect là. Autant je maitrise bien les paramètres, relations, copies optimisées; autant c'est compliqué pour moi sur la macro.

Je regarde cette aprem ce que tu m'as envoyé et je te fait un retour.

En tout cas je te dis un énorme MERCI pour ta disponibilité et ton aide !  Smile

BenBST
timide
timide

Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par lumpazepfel Mer 13 Sep 2023 - 17:30

Pourquoi est ce que les concepteurs ne remplissent pas directement les propriétés?
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par BenBST Jeu 14 Sep 2023 - 13:37

Bonjour Marc,

Je viens de tester la macro que tu m'as proposé. En effet le gain en codage et ligne est assez énorme! Et tout fonctionne correctement, du coup c'est parfait! Je te remercie beaucoup de ton aide !

Et pour ta question "Pourquoi est ce que les concepteurs ne remplissent pas directement les propriétés?". Il a plusieurs raisons à cela:
+ Je trouve cela plus intuitif pour des concepteurs encore "novices" sur Catia de travailler depuis l'arbre que d'aller chercher les propriétés de la pièce.
+ Je n'ai pas trouvé comment liée une mesure de masse / centre de gravité Gx / Gy / Gz / Matériau en direct sans passer par la case paramètre (Je découvre vraiment le mileu de la macro sur Catia).
+ Tous les paramètres sont publiés pour une anticipation "future" de donnée de sortie.

Pour te donner une idée. La plupart de mes macros sont issues de l'option "démarrer l'enregistrement d'une macro". C'est pour cela qu'elle sont relativement longue en terme de codage.
Là d'ailleurs je suis en train de me faire des noeux au cerveau avec une macro qui rajoute les paramètres et les "propriétés ajoutées" avec leur menu déroulant (pour des anciennes part et produit ne les comportant pas). J'ai du la séparer en une macro pour les part et une pour les product.

BenBST
timide
timide

Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par lumpazepfel Ven 15 Sep 2023 - 7:45

Salut,

Pour rajouter des paramètres et des propriétés, il faut tester s'ils existent, s'il n'existe pas tu le rajoute et demande éventuellement à l'utilisateur de renseigner la valeur.
Tout ça peut être fait dans la même macro.

Bon courage, n’hésites pas à poster tes avancées et problèmes.
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Paramètres liés à un product Empty Re: Paramètres liés à un product

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum