Aller au contenu

morain

Membres
  • Compteur de contenus

    9
  • Inscription

  • Dernière visite

morain's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. en attendant de trouver une meilleure solution, je me sers de la commande CATIA.StartCommand "décomposer", ce qui explose bien mes répétitions. L'inconvénient est que cette commande dépend du langage de l'interface utilisateur, si Catia est configuré en anglais, il faudra utiliser CATIA.StartCommand "explode". A tout hasard, quelqu'un sait comment récupérer la langue de l'interface utilisateur en vba ? :exclam: Romain
  2. Hum okay, je pense que je n'aurai pas de symétries dans les cas où je me servirai de ma macro. donc apparemment je devrai m'en sortir avec la propriété FeatureToLocatePositions, mais je ne sais pas exactement comment m'en servir, il faut commencer par créer une liste, en tant que collection ? il faut l'appliquer à mon pattern déclaré en tant que pattern ? Voici un morceau de mon code : Dim i As Integer For i = 1 To shapes1.Count 'De i=1 au nombre de shapes Set shape1 = shapes1.Item(i) 'Met l'item pointé par i dans shape1 'Si le type de l'item pointé est une répétition (personnélisée, circulaire ou rectangulaire) If TypeName(shape1) = "UserPattern" Or TypeName(shape1) = "CircPattern" Or TypeName(shape1) = "RectPattern" Then Dim typeItemCopy As Object Set typeItemCopy = shape1.ItemToCopy 'Met l'item copié par la répétition dans typeItemCopy If TypeName(typeItemCopy) = "Hole" Then 'Si le type de l'item copié est un trou Dim list As Collection Set list = shapes1.Item(i).FeatureToLocatePositions End If End If Next Que contient alors la collection et comment obtenir la position des points servant à la répétition, en admettant alors que tous les points ont été utilisés Merci beaucoup ! Romain[Edité le 2/7/2009 par morain] [Edité le 6/7/2009 par morain]
  3. oui, l'enregistrement de macro ne donne rien. Il y a bien l'instruction explode : Sub Explode( ) Explodes the drawing component instance (every sub elements of the drawing component are created). Note: The drawing component is not removed by Explode method Example: MyComponent.Explode Mais je n'arrive pas à m'en servir :casstet: c'est vrai que c'est dommage de faire cette décomposition mais je ne m'en servirai que pour obtenir les paramètres des Trous, je peux l'annuler ensuite [Edité le 2/7/2009 par morain]
  4. Bonjour à tous, Je cherche à écrire une macro Catia qui repère les Trous d'un Part et en exporte les paramètres dans un fichier. Pour cela, je parcours l'arbre de construction et identifie le type des opérations effectuées, ce qui fonctionne très bien. Cependant, cette méthode ne prend pas en compte les répétitions (rectangulaires, circulaires ou personnalisées). Il est possible néanmoins de décomposer ces répétitions afin d'en obtenir les différentes opérations (click droit, objet répétition, décomposer). Je cherche donc à automatiser cette opération. Avez vous des idées ? Merci ! Romain
  5. 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
  6. 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
  7. 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
  8. morain

    Macro enregistrement catia

    bonjour ! Ne peux-tu pas utiliser InStrRev au lieu de InStr ? Il te donnera la position du point en partant de la fin, ce qui évite de retourner deux fois ext avec StrReverse, tu utilise ensuite Right a la place de Left. Bon ça change rien mais tu gagnes deux lignes et c'est plus facile à comprendre comme ça peut être :) Bonne continuation
  9. 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]
×
×
  • 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é