Aller au contenu

Macro CATIA Récupèrer le nom d\'une sélection


Messages recommandés

Posté(e)

Bonjour à tous !

 

Je suis étudiant en école d'ingénieur en Génie des Systèmes Mécaniques et j'essaie de programmer quelques macros CATIA.

 

Après avoir longtemps cherché, je ne trouve pas de solution à mon problème :

 

J'aimerai pouvoir sélectionner une arête de mon Corps Principal dans un Part et que mon programme me donne le nom de cette arête.

Pour bien visualiser, lorsque l'on se sert de l'outil "Trou" de CATIA, il est possible de choisir une Direction ; une fois sélectionnée, une TextBox indique le nom de l'objet sélectionné, par exemple "Chanfrein.1\Arête.1" ; "Extrusion.1\Arête.2" ou encore "Chanfrein.2\Face.2".

J'ai biens compris que le numéro de l'Arête, de la Face ou encore de l'Axe n'était pas significatif car il s'incrémente à chaque sélection de même type.

 

Mais je n'arrive pas à récupérer le nom de l'opération où l'Arête a été crée (Extrusion.1 ; Chanfrein.2 ...).

 

Voici mon code :

 

 
Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Corps principal")

Dim Document
Set Document = CATIA.ActiveDocument

Dim oselection
Set oselection = Document.selection
oselection.Clear

Dim InputObjectType(0)
Dim SelectedElement

   InputObjectType(0) = "RectilinearTriDimFeatEdge"
   Status = oselection.SelectElement2(InputObjectType, "Sélectionnez une Arête", True)


       If ((Status = "Cancel") Or (Status = "Undo")) Then
'           We restore the selection to its initial content
           oselection.Clear
           Exit Sub
       Else
           If (Status <> "Redo") Then Set SelectedElement = oselection.Item2(1).Value
       End If

MsgBox oselection.Item2(1).Value.Parent.Parent.Name _
& "\" & oselection.Item2(1).Value.Parent.Name _
& "\" & oselection.Item2(1).Value.Name


End Sub 

 

Tout ce que j'arrive à récupérer c'est cette chose horrible avec des Brp que je ne sais pas interpréter.

 

Si quelqu'un avait une solution, j'en serais très heureux.

J'ai eu beau chercher dans l'aide V5Automation et essayer tout ce qui me passait par la tête, mais je reste bloqué.

 

Merci

 

 

Romain

 

 

 

[Edité le 15/6/2009 par morain]

Posté(e)

Merci !!

 

Après tout le temps passé à chercher comment faire, cette méthode me conviens très bien !

ça demande un peu de bidouille en effet mais ça me va.

 

J'ai utilisé cette méthode pour récupérer le nom de l'opération :

 

Dim statusSelection As String
statusSelection = CATIA.StatusBar

Dim firstOccur As Long
firstOccur = InStr(1, statusSelection, "/")

Dim secondOccur As Long
secondOccur = InStrRev(statusSelection, "/")

statusSelection = Mid(statusSelection, firstOccur + 1, secondOccur - firstOccur - 1)

MsgBox statusSelection

 

Merci beaucoup encore une fois !

 

Romain

Posté(e)

Bonjour tout le monde,

 

J'ai à nouveau un petit problème :

 

Je désire sélectionner des arêtes et des faces et afficher leurs nom dans deux ListBox.

Pour ce faire, en cliquant dans la ListBox correspondante, je déclenche une boucle qui demande à l'utilisateur de sélectionner des arêtes et mon programme stocke ces sélections en affichant leurs nom comme vu dans les messages précédents.

Puis en cliquant dans la ListBox des faces, j'aimerai que mon programme stoppe la boucle de sélection d'arêtes et enclenche la boucle de sélection des faces.

 

mon problème est donc de réussir à stopper la boucle de sélection en cours. J'ai essayé en utilisant la commande SendKeys {ESC 2} qui appuie deux fois sur la touche échap (je crois que ça ne fonctionne pas si je ne fais qu'une fois), puis UserForm.Show pour réactiver la fenêtre.

Seulement voilà, avec cette commande {ESC 2}, la commande CATIA.StatusBar ne me donne plus rien au moment où je l'appelle, et donc je n'arrive plus à récupérer le nom de la sélection.

 

Je commence à m'arracher les cheveux depuis quelque jours, si quelqu'un a une autre idée pour stopper cette boucle de sélection je suis preneur.

 

En tout cas merci d'avoir pris la peine de me lire

 

Romain

 

  • 2 semaines après...
Posté(e)

pourquoi as tu besoin de selectionner unBrep

Je pense que tu sais un Brep n'est pas stable

 

sinon de creer une Powercopy si tu dois concevoir une partie d'une conception à partir de ce Brep.

L'avantage c'est quand tu instancie d'un powercopy

tu as la fenetre de remplacement de Brep

A voir

 

Sinon bon courage :)

 

 

Posté(e)

En fait j'utilise l'instruction SelectElement2 pour faire mes sélections et cela me renvoi des Brep, je ne sais pas comment faire autrement, existe-t-il une autre méthode qui pourrai m'éviter ça ?

 

Merci

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité