Aller au contenu

varaible arrayOfVariantOfBSTR


Messages recommandés

Posté(e)

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 String

Dim 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 String

LngArbre = Left(LigneArbre, Len(LigneArbre)-11)

 

Dim LngArbMot As String

LngArbMot = Left(LigneArbreMot, Len(LigneArbreMot)-11)

 

nla as String

nla = 1

 

For compteur = 1 to NbLignes_Arbre

 

Dim arrayOfVariantOfBSTR & nla (0)

arrayOfVariantOfBSTR & nla (0) = dirname & LigneArbre

products1.AddComponentsFromFiles arrayOfVariantOfBSTR & nla , "All"

 

product1.ApplyWorkMode DESIGN_MODE

 

Dim product3 As Product

Set product3 = products1.Item(LngArbre & ".1")

 

Dim products3 As Product

Set products3 = product3.Products

 

'************* Association des paramètres table / lignes d'arbre *************

 

Dim parameters3 As Parameters

Set parameters3 = product3.Parameters

 

Set length2b = parameters3.Item("Largeur_voie")

Set length4b = parameters3.Item("Diametre_arbre")

Set length5b = parameters3.Item("Diametre_galet")

 

Dim relations2 As Relations

Set relations2 = product1.Relations

 

Dim formula1 As Formula

Set formula1 = relations2.CreateFormula("Formule.4", "", length2b, "`Largeur_voie`")

 

formula1.Rename "Formule.4"

formula1.activate

 

Dim relations3 As Relations

Set relations3 = product1.Relations

 

Dim formula2 As Formula

Set formula2 = relations3.CreateFormula("Formule.5", "", length5b, "`Diametre_galet`")

 

formula2.Rename "Formule.5"

formula2.activate

 

Dim relations4 As Relations

Set relations4 = product1.Relations

 

Dim formula3 As Formula

Set 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 Reference

Set reference2 = product1.CreateReferenceFromName(LngArbre & ".1/AXE.1/!Droite.1")

 

Dim reference3 As Reference

Set reference3 = product1.CreateReferenceFromName("RIMSTGCX00_ENS.1/RIMSTGCX01_LONGERON_ENS.1/RIMSTGCX01_LONGERON_D.1/!Point.2")

 

Dim constraint2 As Constraint

Set constraint2 = constraints1.AddBiEltCst(catCstTypeOn, reference2, reference3)

 

Dim reference4 As Reference

Set reference4 = product1.CreateReferenceFromName(LngArbre & ".1/PALIER_APPLIQUE_D35.2/!Plan.1")

 

Dim reference5 As Reference

Set reference5 = product1.CreateReferenceFromName("RIMSTGCX00_ENS.1/RIMSTGCX01_LONGERON_ENS.1/RIMSTGCX01_LONGERON_D.1/!Plan.10")

 

Dim constraint3 As Constraint

Set constraint3 = constraints1.AddBiEltCst(catCstTypeOn, reference4, reference5)

 

constraint3.Orientation = catCstOrientsame

 

product1.Update

 

nla = 1+1

compteur= 1+1

Next

 

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

 

 

 

Posté(e)

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.

 

 

 

Posté(e)

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

 

Posté(e)

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 ;)

 

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é