Aller au contenu

Macros vb : Sommation de parametres


Messages recommandés

Posté(e)

Bonjour,

 

je debute sur vb et je cherche a developper une macro permettant de sommer des parametres presents dans differents set de parametres. Voici l'arborescence de conception ce qui sera plus explicite:

 

Part

Parameters

Parameters.1

Length.1

Parameters.2

Length.1

Parameters.3

Length.1

Summon parameters

Summon length (= parameters1/length1+parameters2/length1+parameters3/length1)

 

(Il y a deux niveaux de parametres; parametres1,2, 3 et sommun appartiennent a parameters)

 

Donc pour le moment de maniere "manuel", j'ai trouve une solution, c'est a dire qu'en connaissant le nbr de set de parametres, j'ai une solution avec le code suivant :

 

Sub CATMain()

 

Dim partDocument1 As PartDocument

Set partDocument1 = CATIA.ActiveDocument

 

Dim part1 As Part

Set part1 = partDocument1.Part

 

Dim parameters1 As Parameters

Set parameters1 = part1.Parameters

 

Dim length1 As Length

Set length1 = parameters1.Item("Summon length")

 

Dim relations1 As Relations

Set relations1 = part1.Relations

 

Dim Formula1 As Formula

Set Formula1 = relations1.CreateFormula("Formula.1", "", length1, "Parameters.1\Length.1`+``Parameters.2\Length.1` + Parameters.3\Length.1`")

 

Formula1.Rename "Formula.1"

 

End Sub

 

Maintenant la difficulte est que je nbr de set de parameres n'est pas connu et pu évoluer, donc je ne fais pas comment faire pour trouver un solution permettant de sommer tous mes parametres longueurs . Je pense qu'il faut une boucle et declarer d'autres variables mais je coince...

 

Merci pour votre aide...

 

Nicklaroot

Posté(e)

Il te suffit de faire une boucle sur l'ensemble des parametres contenus dans la part.

A chaque fois que le nom du parametre commence par ''Lenght.'' tu le prends en compte dans ton calcul.

 

@+

Connaître son ignorance est la meilleure part de la connaissance !http://mooneck.pagesperso-orange.fr/confucius_mini.gif

Posté(e)

Salut,

 

Merci pour l'infos mais tu pourrais m'ecrire un petit script sur ce point parce que je n'arrive pas a faire fonctionner une boucle correctement et puis comment fais tu pour rechercher un nom de parametre?

 

Je te remercie d'avance,

 

A+

 

Nicklaroot

Posté(e)

moi je ferais une liste de parametres et ensuite une boucle sur cette dernière dans le script.

bcp plus facile à gérer.

 

sinon, si tu n'arrives pas à faire une boucle, ne programme pas, tu gagneras du temps!

Posté(e)

salut,

 

 
dim tonpart as part
dim i as integer
dim somme as single
dim nom_somme as string

set tonpart = CATIA.activedocument.part
somme = 0
for i = 1 to tonpart.parameters.count
if instr(1,tonpart.parameters.item(i).name,"Length") <> 0 then
 if instr(1,tonpart.parameters.item(i).name, "Summon") = 0 then
  somme = somme + tonpart.parameters.item(i).value
 else
  nom_somme = tonpart.parameters.item(i).name
 end if
end if
next
tonpart.parameters.item(nom_somme).value = somme

 

Ca ne correspondra peut etre pas exactement à ce que tu recherches (pas de formule pour summon length mais affectation direct de la valeur de la somme).

Le mieux s'est que tu comprennes comment ca marche, les instructions de boucle et de test sont du vb qui , contrairement au vba Catia, ne manque pas de docs et d'aide.

 

bonne prog

cordialement

Naurel

Posté(e)

Merci Naurel pour les infos, en suivant tes conseils, j'ai reussi a faire fonctionner une macros.

Toutefois j'ai l'impression que le nombre d'iteration de la boucle est tres important car la macros met bcp de temps realiser les additions (20 min pour une vingtaine addition de parametres).

 

Merci beaucoup qd meme et si tu as une idée, ce pb fait moi signe.

 

A+

 

Nicklaroot

Posté(e)

La boucle scan tous les paramètres qui peuvent etre très nombreux dans une Part, parcequ'il n'y a pas que ceux que tu as crée (l'icone f(x) permet de les voirs tous). ton peut ajouter un Msgbox(tonpart.parameters.count) juste avant la boucle pour voir le nombre.

indique-nous combien tu en as.

Il n'empeche que 20 min ça fait beaucoup. une solution serait de filtrer les paramètres grace à l'instruction selection.search. je te laisse la decouvrir, si tu as un probleme avec il y a déjà des réponses sur le forum.

 

PS : je viens de penser que des paramètres de cotes ou de fonction peuvent également s'appeller *length*, tu risques de les aditionner sans le vouloir, là encore faudra filtrer.

 

a plus

Naurel

Posté(e)

Merci Naurel,

 

Effectivement avec la fonction "search", il est possible de rechercher des parametres par les noms, de le comptabiliser, et de connaitre leur valeurs.

 

A partir de la, il m'a ete facile d'adapter une macros avec une boucle "for" (reprenant celle disponible dans ta precedente reponse) permettant de les additionner.

 

Cette fois tous fonctionne correctement avec un temps execution rapide!

 

Merci pour ton m'aide.

 

A+

Posté(e)

Merci Naurel,

 

Effectivement avec la fonction "search", il est possible de rechercher des parametres par les noms, de le comptabiliser, et de connaitre leur valeurs.

 

A partir de la, il m'a ete facile d'adapter une macros avec une boucle "for" (reprenant celle disponible dans ta precedente reponse) permettant de les additionner.

 

Cette fois tous fonctionne correctement avec un temps execution rapide!

 

Merci pour ton m'aide.

 

A+

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é