Création d'une référence à partir d'une sélection de l'utilisateur
2 participants
Page 1 sur 1
Création d'une référence à partir d'une sélection de l'utilisateur
Bonjour,
Je suis en train d'écrire une macro (ou plutôt en train d'essayer..) dont le but final est de créer sur une pièce .CATPart des publications qui seront choisis par l'utilisateur en désignant une surface ou un axe.
J'aurai par exemple 3 publications à faire à chaque fois sur la pièce : "TOP" qui sera affecté à la 1ère surface, "BOTTOM" à la 2nde et "AXE" pour l'axe.
J'ai commencé une macro pour la face "TOP". Une publication se crée bien mais ce n'est pas celle que je veux : elle prend tout l'élément cliqué.
Voici mon code :
Merci pour votre aide !
PS : désolé s'il y a des choses bizarres dans le code...
Je suis en train d'écrire une macro (ou plutôt en train d'essayer..) dont le but final est de créer sur une pièce .CATPart des publications qui seront choisis par l'utilisateur en désignant une surface ou un axe.
J'aurai par exemple 3 publications à faire à chaque fois sur la pièce : "TOP" qui sera affecté à la 1ère surface, "BOTTOM" à la 2nde et "AXE" pour l'axe.
J'ai commencé une macro pour la face "TOP". Une publication se crée bien mais ce n'est pas celle que je veux : elle prend tout l'élément cliqué.
Voici mon code :
- Code:
Language="VBSCRIPT"
Sub CATMain()
Dim reference1 As Reference
Dim publications1 As Publications
Dim reference2 As Reference
Dim publication1 As Publication
Dim publication2 As Publication
Dim InputObjectType(0)
Dim Status
InputObjectType(0)="Face"
' Recuperation du document actif
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument
' Recuperation du product racine
Dim produitRacine As Product
Set produitRacine = productDocument1.Product
' Recuperation de l'ensemble des composants
Dim oProducts As Products
Set oProducts = produitRacine.Products
Dim oProduct1 As Product
Set oProduct1 = oProducts.Item(1)
' Recuperation de la selection
Dim maSelection
Set maSelection = productDocument1.Selection
Msgbox("Selectionnez la face TOP ")
Status = maSelection.SelectElement3(InputObjectType,"Selectionnez un plan",true,true,false)
Dim oRef1 As Reference
Set oRef1 = oProduct1.CreateReferenceFromName(oProduct1.Name & "/" & maSelection.Name & "/!")
Set publications1 = oProduct1.Publications
Set publication1 = publications1.Add("Face")
publications1.SetDirect "Face", oRef1
End Sub
Merci pour votre aide !
PS : désolé s'il y a des choses bizarres dans le code...
bamboou9- actif
- Messages : 31
Date d'inscription : 28/03/2014
Localisation : reims
Re: Création d'une référence à partir d'une sélection de l'utilisateur
A vu de nez il manque un "search" à un moment qui permet de discriminer les éléments que tu veux ou pas publier parmi la sélection.
Ou alors il te manque un "selection.clear" (ou un truc dans le genre) qui permet de vider la sélection sans ça tout ce que tu sélectionnes est s'ajoute à chaque fois à ce qui a été sélectionné précédemment.
Ou alors il te manque un "selection.clear" (ou un truc dans le genre) qui permet de vider la sélection sans ça tout ce que tu sélectionnes est s'ajoute à chaque fois à ce qui a été sélectionné précédemment.
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Création d'une référence à partir d'une sélection de l'utilisateur
Bonjour,
Merci pour ta réponse.
J'ai finalement trouvé le problème : c'était simplement du à une erreur dans ma ligne de création de référence. Je n'indiquais pas le bon produit dans l'arbre...
Voici mon code:
Merci quand même du coup de main !
Merci pour ta réponse.
J'ai finalement trouvé le problème : c'était simplement du à une erreur dans ma ligne de création de référence. Je n'indiquais pas le bon produit dans l'arbre...
Voici mon code:
- Code:
'
'
'Ce sera à la charge de l'utilisateur de nommer son disque initialement (avant le nom du nom d'instance)
Language="VBSCRIPT"
Sub CATMain()
Dim topLevelProductDocument As ProductDocument
Dim topLevelRootProduct As Product
Dim thePartDocument As PartDocument
Dim thePartProduct As Product
Dim thePart As Part
Set topLevelProductDocument = CATIA.ActiveDocument
Set topLevelRootProduct = topLevelProductDocument.Product
'le 1 correspond à la position du produit dans l'arbre (si tu mets 2, alors tu dois choisir une face située sur le 2nde pièce
Set thePartDocument = topLevelRootProduct.Products.Item(1).ReferenceProduct.Parent
Set thePartProduct = thePartDocument.Product
Set thePart = thePartDocument.Part
Dim oSel As Selection
Set oSel = CATIA.ActiveDocument.Selection
'Ajout du paramètre pour l'empilage
Dim oParameters As Parameters
Set oParameters =thePartProduct.Parameters
Dim Entree1 As String
Dim Entree2 As Double
Entree1=Inputbox("Entrez l'épaisseur du disque en mm ( avec une virgule et non un point pour les décimales ! ")
Entree2 = CDbl(Entree1)
Dim E_EMPILAGE As Integer
Set E_EMPILAGE =thePart.Parameters.CreateDimension("E_EMPILAGE","LENGTH",Entree2)
Dim nb_Produit
Dim InputObjectType(0)
InputObjectType(0)="Face"
Dim sStatus As String
'On donne un nom dans l'instance du nouveau disque
Nom_Produit = Inputbox("Entrez le nom de la nouvelle pièce ")
topLevelRootProduct.Products.Item(1).Name = Nom_Produit
Msgbox "Veuillez sélectionner la face TOP"
'SelectElement3 permet à l'utilisateur de sélectionner plusieurs éléments dans l'arbre ou de manière interactive
sStatus = oSel.SelectElement3(InputObjectType, "Selectionnez des éléments", False, CATMultiSelTriggWhenUserValidatesSelection, false)
Dim reference2 As Reference
Set reference2 = oSel.Item(1).Reference
Dim reference1 As Reference
Set reference1 = thePartProduct.CreateReferenceFromName(topLevelRootProduct.Name & "/!"& thePartProduct.Name& "/!" & reference2.Name)
Msgbox("Le nom de ThePartProduct est "&thePartProduct.Name)
MsgBox("Le nombre de produit dans l'arbre est "& topLevelRootProduct.Products.Count )
nb_Produit= topLevelRootProduct.Products.Count
Msgbox("nb_Produit = "&nb_Produit)
Dim publications1 As Publications
Set publications1 = thePartProduct.Publications
Dim publication1 As Publication
Set publication1 = publications1.Add("TOP")
publications1.SetDirect "TOP", reference1
End Sub
Merci quand même du coup de main !
bamboou9- actif
- Messages : 31
Date d'inscription : 28/03/2014
Localisation : reims
Sujets similaires
» CATIA - Macro de sélection d'objet depuis un liste excel
» problème sélection sous windows 7
» macro module EHI: récuperer le nom de ma sélection
» Ouvrir l'interface de sélection de dossier
» Problème de selection d'éléments lors d'une esquisse
» problème sélection sous windows 7
» macro module EHI: récuperer le nom de ma sélection
» Ouvrir l'interface de sélection de dossier
» Problème de selection d'éléments lors d'une esquisse
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum