Aller au contenu

Décomposer une répétition - Exploding pattern


Messages recommandés

Posté(e)

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

Posté(e)

Salut,

 

Je suppose que tu as essayé l'enregistrement de macro mais que ça n'a rien donné !!

C'est dommage de décomposer les répétitions !

 

Y'aurait p't-êt'e moyen de "décortiquer" les répétitions pour en retrouver les enfants !! Mais je ne sais pas trop comment !!

 

 

Ciao :cool:

Posté(e)

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]

Posté(e)

Romain,

 

Effectivement les répétitions posent un problème pour la récupération des trous. J'ai également commencé à faire une macro qui réalise des tableaux de trous/perçages avec tous les paramétres qui vont bien.

J'ai rencontré le même problème que toi, c'est à dire les répétitions. Mais un autre aussi : les symétries.

J'en ai conclu qu'il fallait recalculer les positions des vrais trous, à partir de matrices 3D. Mais imagine que tu as un trou, avec répétition (en plus je crois qu'on peut faire des exceptions dans les répétitions), puis deux symétries consécutives ... Galère !

Si tu n'as pas de symétries/révolutions, tu peux peut-être t'en sortir, car il est possible d'extraire tous les params de la répétition.

 

Si tu cherches un peu sur le net, tu verras qu'il n'existe pas de macro commerciale ou libre sur ce sujet. J'ai juste trouvé une application basée sur CAA, donc pas donnée.

 

bonne chance

Marc

Posté(e)

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]

Posté(e)

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

Posté(e)

tchô,

 

en fait je ne réponds pas au sujet initial, mais à la p'tite question de morain:

 

si la langue est par défaut le français, cela correspond à:

GetSystemDefaultLangID = 1036

 

tu mets ça dans une condition type:

 

if GetSystemDefaultLangID = 1036 then

...

else

...

end

 

c'est tout !

 

Gawel

Posté(e)

c'est vrai marc54, bien vu ! c'est le point faible de cette méthode, mais à l'époque cela m'avait bien dépanné, car nos machines étaient soient toutes en français, soient toutes en anglais.

 

Gawel

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é