Nicklaroot Posté(e) le 11 mai 2007 Posté(e) le 11 mai 2007 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: PartParameters 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 PartDocumentSet partDocument1 = CATIA.ActiveDocument Dim part1 As PartSet part1 = partDocument1.Part Dim parameters1 As ParametersSet parameters1 = part1.Parameters Dim length1 As LengthSet length1 = parameters1.Item("Summon length") Dim relations1 As RelationsSet relations1 = part1.Relations Dim Formula1 As FormulaSet 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
mooneck Posté(e) le 11 mai 2007 Posté(e) le 11 mai 2007 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
Nicklaroot Posté(e) le 12 mai 2007 Auteur Posté(e) le 12 mai 2007 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
yeard Posté(e) le 14 mai 2007 Posté(e) le 14 mai 2007 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!
naurel Posté(e) le 14 mai 2007 Posté(e) le 14 mai 2007 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 progcordialementNaurel
Nicklaroot Posté(e) le 15 mai 2007 Auteur Posté(e) le 15 mai 2007 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
naurel Posté(e) le 16 mai 2007 Posté(e) le 16 mai 2007 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 plusNaurel
Nicklaroot Posté(e) le 18 mai 2007 Auteur Posté(e) le 18 mai 2007 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+
Nicklaroot Posté(e) le 18 mai 2007 Auteur Posté(e) le 18 mai 2007 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+
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