Aller au contenu

Problème de réalisation de contrainte en CatScript


Messages recommandés

Posté(e)

Bonjour,

 

Voici une partie d'un programme d'assemblage de CatProduct paramétrables. J'ai 2 soucis :

1- au niveau de laréalisation de la seconde contrainte

Le message est (entre autre)

SciptingERR_1002

Source : CATIAConstraints

La méthode AddBiEltCst a échoué

Ligne : 167

Colonne : 0

 

2- au niveau de la validation des variables avec affichage en msgBox.

 

SciptingERR_1002

Source : CATIALength

Description : La méthode Value a échoué

Ligne : 92

Colonne : 2

 

 

Quelqun a-t-il rencontré ces type de problèmes

'Language = "VBSCRIPT"

 

Sub CATMain()

 

Dim documents1 As Documents

Set documents1 = CATIA.Documents

 

Dim productdocument1 As Document

Set productdocument1 = documents1.Open("I:\_sharediao\DICAP\catdiv_dicap_3\65304_manut\AFFAIRES\RIMS\TABLE_ROULEAU_GALET\INTER\1_PRE_ETUDE\RIMSTGCX00-LG500\RIMSTGCX00_ENS.CATProduct")

 

Dim product1 As Product

Set product1 = productdocument1.Product

 

Dim products1 As Products

Set products1 = product1.Products

 

Dim OpenName as String

OpenName = CATIA.ActiveDocument.Name

 

Dim dirname

dirname = CATIA.ActiveDocument.Path & "\"

 

product1.ApplyWorkMode DESIGN_MODE

 

product1.Update

 

'*********** Chargement des paramètres ***********

 

Dim parameters1 As Parameters

Set parameters1 = product1.Parameters

 

' Déclaration du tableau de paramètres

 

Dim relations1 As Relations

Dim ParamTable As DesignTable

 

Set relations1 = product1.Relations

Set ParamTable = relations1.Item("ParametresTable")

 

' Déclaration des paramètres

 

Set length1 = parameters1.Item("Longueur_table")

Set length2 = parameters1.Item("Largeur_voie")

Set length3 = parameters1.Item("Entraxe_lignes_arbre")

Set NbLigne = parameters1.Item("Nb_lignes_arbre")

Set length4 = parameters1.Item("Diametre_arbre")

Set length5 = parameters1.Item("Diametre_galet")

Set MGalets = parameters1.Item("Montage_galets")

 

Dim ChoixEntree As String

ChoixEntree = InputBox("Entrée des paramètres manuelle ou par tableau (manuelle ou tableau)")

 

If (ChoixEntree) = "manuelle" Then

MsgBox " Le tableau de paramètrage va être désactivé ! "

 

' Désactivation du tableau de paramètres

 

ParamTable.Deactivate

 

' Déclaration des variables de paramètres

 

Dim LongTable As Double

Dim LargVoie As Double

Dim EntrArbre As Double

Dim Nbrouleaux As Integer

Dim DiamArbre As Double

Dim DiamGalet As Double

Dim MontGalet As String

 

Dim length1 As Parameter

Dim length2 As Parameter

Dim length3 As Parameter

Dim length4 As Parameter

Dim length5 As Parameter

Dim NbLigne As Parameter

Dim MGalets As Parameter

 

' Entrée des valeur de variables

 

LongTable = InputBox("Entrez la longueur de table.")

LargVoie = InputBox("Entrez la largeur de voie.")

EntrArbre = InputBox("Entrez l'entraxe des lignes d'arbres (764 mm std)")

Nbrouleaux = InputBox("Entrez le nombre de lignes d'arbre.")

DiamArbre = InputBox("Entrez le diamètre des arbres (35 mm ou 40 mm)")

DiamGalet = InputBox("Entrez le diamètre des galets (plan de roulement)")

MontGalet = InputBox("Entrez le type de montage des galets (intérieur ou extérieur)")

 

' Affectation des valeurs

 

length1.Value = LongTable

MsgBox " Longueur de table : " & length1.Value

length2.Value = LargVoie (ligne 92)

MsgBox " Largeur de table : " & length2.Value

length3.Value = EntrArbre

MsgBox " Entraxe des lignes d'arbre : " & length3.Value

NbLigne.Value = Nbrouleaux

MsgBox " Nombres de lignes d'arbre : " & NbLigne.Value

length4.Value = DiamArbre

MsgBox " Diamètre d'un arbre : " & length4.Value

length5.Value = DiamGalet

MsgBox " Diamètre des galets : " & length5.Value

MGalets = MontGalet

MsgBox " Diamètre des galets : " & MGalets

 

ElseIf (ChoixEntree) = "tableau" Then

 

Dim NumConfig As Integer

NumConfig = InputBox("Entrez le numéro de configuration !")

 

ParamTable.Configuration = NumConfig

 

End If

 

product1.Update

 

'******* Chargement des CatProducts *******

'********** Montage des arbres ************

 

Dim LigneArbre As String

 

If (MGalets.Value) = "extérieur" Then

LigneArbre = "RIMSTGCX05_LIGNE_ARBRE_COURANT_EXTER.CATProduct"

Else

LigneArbre = "RIMSTGCX05_LIGNE_ARBRE_COURANT_INTER.CATProduct"

End If

 

Dim LngArbre As String

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

 

Dim arrayOfVariantOfBSTR1(0)

arrayOfVariantOfBSTR1(0) = dirname & LigneArbre

products1.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All"

 

Dim product2 As Product

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

 

Dim products2 As Products

Set products2 = product2.Products

 

Dim product3 As Product

Set product3 = products2.Item("PALIER_APPLIQUE_D35.2")

 

Dim products3 As Products

Set products3 = product3.Products

 

Dim constraints1 As Collection

Set constraints1 = product1.Connections("CATIAConstraints")

 

Dim reference1 As Reference

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

 

Dim reference2 As Reference

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

 

Dim constraint1 As Constraint

Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference1, reference2) (ligne 167)

 

Set constraints2 = product1.Connections("CATIAConstraints")

 

Dim reference3 As Reference

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

 

Dim reference4 As Reference

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

 

Dim constraint2 As Constraint

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

 

constraint2.Orientation = catCstOrientsame

 

product1.Update

 

..........

 

Merci d'avance

 

Posté(e)

Bonsoir

 

Tu sais, le VBScript c'est galère à programmer et à debugger. Tu ferais mieux de faire un copier/coller dans un projet VBA. Et à la fin, quand ça fonctionne tu le rebascules sous VBScript, si vraiment c'est ce que tu veux.

 

ligne 92 c'est peut-être un conflit de type

 

ligne 167 tu pourrais utiliser createreferencefromobject. Les noms peuvent varier suivant le contexte, donc c'est risqué.

 

 

 

 

Posté(e)

Salut Marc54,

 

En fait, c'est un peu plus compliqué que cela. C' est au départ une macro que j'ai créé sous excel. Je m'explique :

Je me sers d'un fichier excel "table de paramètrage" pour créer et gérer des variantes et les incrémenter pour faire une base de données. Une fois tout cela validé, je cherche à lancer CATMain par excel pour faire l'assemblage de mes CatProduct.

Mais ça ne fonctionne pas terrible. Mes connaîssance en programmation étant limitées, je procède par étape en enrregistrant des macros CATScript.....

 

 

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é