Paramètres liés à un product
2 participants
Page 1 sur 1
Paramètres liés à un product
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
Voici pour info la macro complète.
Quelqu'un peut il m'aider
Merci
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!")
End Sub
Quelqu'un peut il m'aider
Merci
BenBST- timide
- Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand
Re: Paramètres liés à un product
Salut Benoit,
En effet, la déclaration de la collection des paramètres est différentes en fonction du type de fichier.
Exemple:
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.
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Paramètres liés à un product
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.
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Paramètres liés à un product
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 !
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 !
BenBST- timide
- Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand
Re: Paramètres liés à un product
Pourquoi est ce que les concepteurs ne remplissent pas directement les propriétés?
lumpazepfel- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Re: Paramètres liés à un product
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.
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
- Messages : 8
Date d'inscription : 18/07/2023
Localisation : Clermont-Ferrand
Re: Paramètres liés à un product
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.
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- Fédérateur
- Messages : 319
Date d'inscription : 02/11/2015
Localisation : Ensisheim
Sujets similaires
» Génération d'éléments paramétrés
» Aller chercher des parametres
» Animations simples - Rotation d'un product/d'un élément du product
» Section programmation CatScript, VBA, VB.NET...
» Paramètres d'un assemblage
» Aller chercher des parametres
» Animations simples - Rotation d'un product/d'un élément du product
» Section programmation CatScript, VBA, VB.NET...
» Paramètres d'un assemblage
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum