CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Boutique Nike : -25% dès 50€ sur TOUT le site Nike avec le code ...
Voir le deal

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

2 participants

Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par BenBST Mar 18 Juil 2023 - 15:02

Bonjour,

Je suis encore un peu novice dans la partie macro Catia et je rencontre quelques soucis pour une liaison entre une CatPart et un Drawing.


Un peu de contexte:

Aujourd'hui j'ai une CatPart dans laquelle j'édite des paramètres (Concepteur/Reference/Nomenclature/Type/Materiau/Masse/...). Ces derniers sont ensuite intégrés via une macro aux propriété de la Part. J'ai ainsi dû créer des "propriétés ajoutées" pour certains champs (ce sont elles qui me posent problèmes).

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing 110

Voilà la macro pour avoir une idée (elle servira peut-être à quelqu'un un jour)
______________________________________________________________________________________________________________________________

Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

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

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

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

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

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

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

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

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

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


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

Set parametersproprieteinformations = part1.Parameters
Set strParamproprieteinformations = parametersproprieteinformations.Item("Propriétés\Informations")

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

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

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

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

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

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

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

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


strParamproprieteconcepteur.Value = strParamconcepteur.Value
strParamproprieteinformations.Value = "N/A"
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


End Sub

______________________________________________________________________________________________________________________________


Ensuite j'ai un drawing dans lequel je souhaite remplir des paramètres qui sont identiques à la Part (Concepteur/Reference/Nomenclature/Type/Materiau/Masse/...) en auto via une macro. Les zone de texte du cartouche sont ensuite remplis via la fonction "lier à un attribut".
Actuellement ma macro n'arrive à récupérer que les propriétés standards de la Part (Definition/Nomenclature), mais je ne trouve pas "comment coder" les propriétées ajoutées manuellement (Masse/Materiau/Concepteur/Type/...).

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing 210

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing 310

Quelqu'un(e) peut-il m'aider ? 🙂

Voici ma macro actuelle:
______________________________________________________________________________________________________________________________

Sub CATMain()
set drawingDoc1 = CATIA.ActiveDocument
Set parameters1 = drawingDoc1.Parameters

Set strParamdrawdef= parameters1.Item("Designation")
Set strParamdrawref= parameters1.Item("PartReference")
Set strParamdrawdate= parameters1.Item("DateDeCreationDrawing")
Set strParamdrawtype = parameters1.Item("Type-Procede")
Set strParamdrawmat = parameters1.Item("Materiau")
Set strParamdrawmasse = parameters1.Item("Masse")
Set strParamdrawtraitmat = parameters1.Item("TraitementMateriau")
Set strParamdrawtraitsurf = parameters1.Item("TraitementDeSurface")

Set ParentVue = CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item(3).GenerativeLinks.FirstLink
Set ParentVue = ParentVue.Parent

Dim ActualDay, MyDay, MyMonth

MyDay = Day(Now)
MyMonth = Month(Now)

If Len(MyDay) = 1 Then MyDay = "0" & MyDay
If Len(MyMonth) = 1 Then MyMonth = "0" & MyMonth
ActualDay =  MyDay & "/" & MyMonth & "/"  & Year(Now)

       strParamdrawdate.Value = ActualDay
       strParamdrawdef.Value = ParentVue.Product.Definition
       strParamdrawref.Value = ParentVue.Product.Nomenclature
       strParamdrawtype.Value = "le bon codage pour le type-procede"
       strParamdrawmat.Value = "le bon codage pour le materiau"
       strParamdrawmasse.Value = "le bon codage pour la masse"
       strParamdrawtraitmat.Value = "le bon codage pour le TraitementMateriau"
       strParamdrawtraitsurf.Value = "le bon codage pour le TraitementDeSurface"
   
'Set drawingDoc1.Name = ParentVue.Product.Name

End Sub

______________________________________________________________________________________________________________________________

Merci d'avance.

BenBST
timide
timide

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par lumpazepfel Mar 18 Juil 2023 - 21:45

Salut Benoît,

je n'ai pas tester tes macros, mais tu peux récupérer les propriétés du 3D avec "UserRefProperties"

Ajoute aprés : "Set ParentVue = ParentVue.Parent" , les lignes

Code:

Dim Param3D As Parameters
Set Param3D = ParentVue.Product.UserRefProperties
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par BenBST Mer 19 Juil 2023 - 9:39

Bonjour Marc,

Déjà merci pour ton retour super rapide !

Alors je viens de tester en rajoutant tes 2 lignes de codes.
Après l'exécution j'ai droit à un message d'erreur concernant la ligne "Dim Param3D As Parameters"
Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing 310

Du coup j'imagine que le problème vient plus de ma macro et de son écriture, faite par un novice en VB bate

__________________________________________________________________________________________________________________________________________

Sub CATMain()

set drawingDoc1 = CATIA.ActiveDocument
Set parameters1 = drawingDoc1.Parameters


Set ParentVue = CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item(3).GenerativeLinks.FirstLink
Set ParentVue = ParentVue.Parent

Dim Param3D As Parameters
Set Param3D = ParentVue.Product.UserRefProperties

Set strParamdrawdef= parameters1.Item("Definition")
Set strParamdrawnom= parameters1.Item("Nomenclature")
Set strParamdrawrev= parameters1.Item("Revision")
Set strParamdrawdate= parameters1.Item("DateDeCreationDrawing")
Set strParamdrawtype= parameters1.Item("Type-Procede")
Set strParamdrawmat = parameters1.Item("Materiau")
Set strParamdrawmasse = parameters1.Item("Masse")
Set strParamdrawtraitmat = parameters1.Item("TraitementMateriau")
Set strParamdrawtraitsurf = parameters1.Item("TraitementDeSurface")
Set strParamdrawformat = parameters1.Item("FormatPlan")


Dim ActualDay, MyDay, MyMonth

MyDay = Day(Now)
MyMonth = Month(Now)

If Len(MyDay) = 1 Then MyDay = "0" & MyDay
If Len(MyMonth) = 1 Then MyMonth = "0" & MyMonth
ActualDay =  MyDay & "/" & MyMonth & "/"  & Year(Now)

strParamdrawdate.Value = ActualDay
strParamdrawdef.Value = ParentVue.Product.Definition
strParamdrawnom.Value = ParentVue.Product.Nomenclature
strParamdrawrev.Value = ParentVue.Product.Revision

'strParamdrawmat.Value = ParentVue.Product.Materiau
'strParamdrawtype.Value = ParentVue.Product.Type
'strParamdrawmat.Value = ParentVue.Product.Materiau
'strParamdrawmasse.Value = ParentVue.Product.Masse
'strParamdrawtraitmat.Value = ParentVue.Product.TraitementMateriau
'strParamdrawtraitsurf.Value = ParentVue.Product.TraitementDeSurface


'Set drawingDoc1.Name = ParentVue.Product.Name

End Sub

__________________________________________________________________________________________________________________________________________

BenBST
timide
timide

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par BenBST Mer 19 Juil 2023 - 13:34

Après un peu de recherche je suis arrivé à trouver comment compléter ma macro avec ton retour Marc.
Je te remercie beaucoup pour ton aide !


Je partage ma macro pour ceux à qui ça pourrait servir Wink

Code:

Sub CATMain()

set drawingDoc1 = CATIA.ActiveDocument
Set parameters1 = drawingDoc1.Parameters


Set ParentVue = CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item(3).GenerativeLinks.FirstLink
Set ParentVue = ParentVue.Parent
Dim Param3D As Parameters
Set Param3D = ParentVue.Product.UserRefProperties


Set strParamdrawdef= parameters1.Item("Definition")
Set strParamdrawnom= parameters1.Item("Nomenclature")
Set strParamdrawrev= parameters1.Item("Revision")
Set strParamdrawdate= parameters1.Item("DateDeCreationDrawing")
Set strParamdrawtype= parameters1.Item("Type-Procede")
Set strParamdrawmat = parameters1.Item("Materiau")
Set strParamdrawmasse = parameters1.Item("Masse")
Set strParamdrawtraitmat = parameters1.Item("TraitementMateriau")
Set strParamdrawtraitsurf = parameters1.Item("TraitementDeSurface")
Set strParamdrawformat = parameters1.Item("FormatPlan")

Dim ActualDay, MyDay, MyMonth

MyDay = Day(Now)
MyMonth = Month(Now)

If Len(MyDay) = 1 Then MyDay = "0" & MyDay
If Len(MyMonth) = 1 Then MyMonth = "0" & MyMonth
ActualDay =  MyDay & "/" & MyMonth & "/"  & Year(Now)

 strParamdrawdate.Value = ActualDay
 strParamdrawdef.Value = ParentVue.Product.Definition
 strParamdrawnom.Value = ParentVue.Product.Nomenclature
 strParamdrawrev.Value = ParentVue.Product.Revision

 strParamdrawmat.Value = Param3D.Item("Materiau").Value
 strParamdrawtype.Value = Param3D.Item("Type-Procede").Value
 strParamdrawmasse.Value = Param3D.Item("Masse").Value
 strParamdrawtraitmat.Value = Param3D.Item("TraitementMateriau").Value
 strParamdrawtraitsurf.Value = Param3D.Item("TraitementDeSurface").Value
 
MsgBox ("Récupérer la vaeur du parametre Reference pour nommer correctement le drawing dans Windows")
MsgBox ("Macro à relancer OBLIGATOIREMENT à chaque fois que vous faites une modification dans la Catpart/CatProduct Exclamation!")
MsgBox ("N'oubliez pas de remplir les paramètres manuels AuteurDrawing/CheckerDrawing/Format")

'Set drawingDoc1.Name = ParentVue.Product.Name

End Sub



BenBST
timide
timide

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par lumpazepfel Mer 19 Juil 2023 - 17:14

Salut,

L’erreur provenait de la déclaration « Dim Param3D As Parameters » car en VB script ça ne passe pas.
A priori tu es passé en VBA, je pense que c’est plus facile à programmer.
Pour info tu peux récupérer le nom de l’utilisateur WINDOWS pour renseigner le créateur par exemple avec :
NomUtilisateur = CATIA.SystemService.Environ("USERNAME")
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par BenBST Mer 19 Juil 2023 - 17:29

C'est exactement ça, je suis passé en VBA et plus aucun souci pour la ligne « Dim Param3D As Parameters ».

J'ai surtout galéré pour trouver le codage les lignes :
Code:

 strParamdrawmat.Value = Param3D.Item("Materiau").Value
 strParamdrawtype.Value = Param3D.Item("Type-Procede").Value
 strParamdrawmasse.Value = Param3D.Item("Masse").Value
 strParamdrawtraitmat.Value = Param3D.Item("TraitementMateriau").Value
 strParamdrawtraitsurf.Value = Param3D.Item("TraitementDeSurface").Value

Maintenant j'essaye de rajouter à ma 1ère Macro une fonction pour qu'elle fasse automatiquement la synchro entre les paramètres de la CatPart/CatProduct et les propriétés ajoutées associées. Je pensais passer par une fonction de type "synchronisation à chaque MAJ de la CatPart/Product". Mais pas forcément convaincu par cette méthode.

BenBST
timide
timide

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par lumpazepfel Ven 21 Juil 2023 - 7:42

Salut Benoit,

Il n'y a pas de fonction qui permet de trouver directement le CATDrawing lié au 3D.
Donc pour faire la mise à jour il y a deux possibilités:
1. après la mise à jour du 3D, l'utilisateur retourne dans le 2D et relance la macro qui mettra à jour les valeurs
2. si tu veux le faire à partir du 3D (le 2D associé doit évidemment être chargé), ta macro devra regarder dans l'ensemble des documents en session et vérifier si un nom de fichier CATDrawing correspond à celui du 3D ( je suppose qu'ils ont au moins une parti du nom en commun) , ensuite la macro active le 2D trouvé et met les valeurs à jour.

Pour lister les documents en session:
Dim myDocs as Documents
myDocs = CATIA.Documents
lumpazepfel
lumpazepfel
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing Empty Re: Macro de liaison entre propriétés ajoutées de Catpart vers paramètre Drawing

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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