Création d'une référence à partir d'une sélection de l'utilisateur

Voir le sujet précédent Voir le sujet suivant Aller en bas

Création d'une référence à partir d'une sélection de l'utilisateur

Message par bamboou9 le Lun 14 Avr 2014 - 1:57

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 :

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
actif

Messages : 31
Date d'inscription : 29/03/2014
Localisation : reims

Revenir en haut Aller en bas

Re: Création d'une référence à partir d'une sélection de l'utilisateur

Message par Guss_ le Ven 25 Avr 2014 - 0:01

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.

Guss_
Fédérateur
Fédérateur

Messages : 498
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: Création d'une référence à partir d'une sélection de l'utilisateur

Message par bamboou9 le Ven 25 Avr 2014 - 19:28

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:
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
actif

Messages : 31
Date d'inscription : 29/03/2014
Localisation : reims

Revenir en haut Aller en bas

Re: Création d'une référence à partir d'une sélection de l'utilisateur

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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