morain Posté(e) le 11 juin 2009 Posté(e) le 11 juin 2009 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]
marc54 Posté(e) le 12 juin 2009 Posté(e) le 12 juin 2009 Je pensais qu'avec .parent on pouvait retrouver l'info. tu peux essayer CATIA.Statusbar qui va te retourner ce qui est affiché en bas à gauche.un peu bidouille, mais si cela te convient ... marc Marc http://www.3dsys.fr
morain Posté(e) le 15 juin 2009 Auteur Posté(e) le 15 juin 2009 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
morain Posté(e) le 17 juin 2009 Auteur Posté(e) le 17 juin 2009 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
xde Posté(e) le 26 juin 2009 Posté(e) le 26 juin 2009 pourquoi as tu besoin de selectionner unBrepJe 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 BrepA voir Sinon bon courage :)
morain Posté(e) le 29 juin 2009 Auteur Posté(e) le 29 juin 2009 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
xde Posté(e) le 5 juillet 2009 Posté(e) le 5 juillet 2009 je pense le plus approprier est bien SelectElement2 Bon courage
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant