RaoulDucable Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bonjour a tous, Question: Peut-on utiliser la variable " arrayOfVariantOfBSTR " dans une boucle (For compteur par exemple)Si oui, sous quelle forme ? RaoulDucable
marc54 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bonjour Raoul, Je suppose que cela vient d'un enregistrement de macro ?Il faudrait que tu en dises un peu plus pour qu'on puisse t'aider. Marc http://www.3dsys.fr
RaoulDucable Posté(e) le 2 juillet 2008 Auteur Posté(e) le 2 juillet 2008 Bonjour Marc, Effectivement, je suis en train de programmer l'assemblage de CATProduct par le biais d'enregistrement de macros et le peu que l'on puisse trouver sur internet. Pour en dire un peu plus, voici un extrait du programme '******************** Montage des arbres courants ********************* '******************************** 1 *********************************** Dim LigneArbre As StringDim LigneArbreMot As String If MGalets = "2" Then LigneArbre = "RIMSTGCX05_LIGNE_ARBRE_COURANT_EXTER.CATProduct" LigneArbreMot = "RIMSTGCX06_LIGNE_ARBRE_MOTEUR_EXTER.CATProduct"Else LigneArbre = "RIMSTGCX05_LIGNE_ARBRE_COURANT_INTER.CATProduct" LigneArbreMot = "RIMSTGCX06_LIGNE_ARBRE_MOTEUR_INTER.CATProduct"End If Dim LngArbre As StringLngArbre = Left(LigneArbre, Len(LigneArbre)-11) Dim LngArbMot As StringLngArbMot = Left(LigneArbreMot, Len(LigneArbreMot)-11) nla as Stringnla = 1 For compteur = 1 to NbLignes_Arbre Dim arrayOfVariantOfBSTR & nla (0)arrayOfVariantOfBSTR & nla (0) = dirname & LigneArbreproducts1.AddComponentsFromFiles arrayOfVariantOfBSTR & nla , "All" product1.ApplyWorkMode DESIGN_MODE Dim product3 As ProductSet product3 = products1.Item(LngArbre & ".1") Dim products3 As ProductSet products3 = product3.Products '************* Association des paramètres table / lignes d'arbre ************* Dim parameters3 As ParametersSet parameters3 = product3.Parameters Set length2b = parameters3.Item("Largeur_voie")Set length4b = parameters3.Item("Diametre_arbre")Set length5b = parameters3.Item("Diametre_galet") Dim relations2 As RelationsSet relations2 = product1.Relations Dim formula1 As FormulaSet formula1 = relations2.CreateFormula("Formule.4", "", length2b, "`Largeur_voie`") formula1.Rename "Formule.4"formula1.activate Dim relations3 As RelationsSet relations3 = product1.Relations Dim formula2 As FormulaSet formula2 = relations3.CreateFormula("Formule.5", "", length5b, "`Diametre_galet`") formula2.Rename "Formule.5"formula2.activate Dim relations4 As RelationsSet relations4 = product1.Relations Dim formula3 As FormulaSet formula3 = relations4.CreateFormula("Formule.6", "", length4b, "`Diametre_arbre`") formula3.Rename "Formule.6"formula3.activate product1.Update '************* Réalisation des contraintes d'assemblage ************* Dim reference2 As ReferenceSet reference2 = product1.CreateReferenceFromName(LngArbre & ".1/AXE.1/!Droite.1") Dim reference3 As ReferenceSet reference3 = product1.CreateReferenceFromName("RIMSTGCX00_ENS.1/RIMSTGCX01_LONGERON_ENS.1/RIMSTGCX01_LONGERON_D.1/!Point.2") Dim constraint2 As ConstraintSet constraint2 = constraints1.AddBiEltCst(catCstTypeOn, reference2, reference3) Dim reference4 As ReferenceSet reference4 = product1.CreateReferenceFromName(LngArbre & ".1/PALIER_APPLIQUE_D35.2/!Plan.1") Dim reference5 As ReferenceSet reference5 = product1.CreateReferenceFromName("RIMSTGCX00_ENS.1/RIMSTGCX01_LONGERON_ENS.1/RIMSTGCX01_LONGERON_D.1/!Plan.10") Dim constraint3 As ConstraintSet constraint3 = constraints1.AddBiEltCst(catCstTypeOn, reference4, reference5) constraint3.Orientation = catCstOrientsame product1.Update nla = 1+1 compteur= 1+1Next Mon but étant de lancer ce programme depyuis excel (après entrée et vérification de variables) Voir également message du 24/06 et du 17/06 (résolu) Merci d'avance
marc54 Posté(e) le 2 juillet 2008 Posté(e) le 2 juillet 2008 Bonjour Raoul, Dim arrayOfVariantOfBSTR & nla (0) Bon j'ai pas regardé à fond, mais en tout cas tu ne peux pas mettre un Dim dans une boucle. Le dim te permet de typer/dimensionner une variable, donc il ne doit être lu qu'une fois.De plus ta syntaxe est bizarre. Je ne pense pas que ce que tu as mis soit acceptable. Après le dim il doit y avoir un nom fixe de variable.Je pense que tu peux utiliser le même "arrayOfVariantOfBSTR" , mais en remplissant arrayOfVariantOfBSTR(0) à une valeur différente à chaque itération de ta boucle. C'est du vbscript ? Si c'est le cas je te conseille de basculer ton truc en catvba, ce sera beaucoup + facile à debugger pour toi. Marc http://www.3dsys.fr
RaoulDucable Posté(e) le 3 juillet 2008 Auteur Posté(e) le 3 juillet 2008 Bonjour Marc, En fait dans mon programme j'ai écrit Dim arrayOfVariantOfBSTR1 (0) pour le premier CATProduct puis Dim arrayOfVariantOfBSTR2 (o) pour le second et ainsi de suite. nla est en fait une variable qui remplace 1, 2, 3 ... etc. en fonction de la demande. Evidement cela ne fonctionne pas. Le but étant d'éviter la multiplication des lignes de programme. Il faut également incrémenter les relations et les contraintes .... Pas simple !Peut-être existe-t-il une autre façon de procéder ? Raoul
RaoulDucable Posté(e) le 3 juillet 2008 Auteur Posté(e) le 3 juillet 2008 Pour info : En ce qui concene la déclaration de boucle : Dim arrayOfVariantOfBSTR1(0)For i = 1 to Variable arrayOfVariantOfBSTR1(0) = dirname & LigneArbre Set products1Variant = products1 products1.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"Next Quant à la déclaration des "product" et "reference"autres "Constrainte" , je n'ai pas encore touvé. Raoul ;)
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