Syntaxe test sur vérification (KWA) - réactions
2 participants
Page 1 sur 1
Syntaxe test sur vérification (KWA) - réactions
Bonjour !
Comme prévu me revoilà avec mon bagage de questions.
Je connais assez bien CATIA, surtout la V6, mais la VBA sur V5 (et V6 en fait) j'en ai peu fait.
Donc voici mon problème.
J'ai une 3DPart dans laquelle on a mis quelques vérifications (KWA) pour s'assurer de la validité du modèle.
Ce que je voudrais faire, c'est :
J'ai fait ça sur Excel. C'est-à-dire que j'ai importé :
les verifications
les relations de vérification
les valeurs des paramètres qui entre dans les vérifications
dans des cellules et je les teste. J'ai même fait un petit système avec des feux comme dans CATIA. J'obtiens ce que je recherche, donc tout baigne !
Par contre, j'aurais voulu faire ça en exploitant CATVB directement.
Je pensais intégrer une réaction (KWA) en reprenant les conditions qui apparaissent déjà dans mes vérifications.
Mais je n'ai pas la bonne syntaxe, car j'ai toujours des messages d'erreur. Voici ce que je mets dans ma réaction:
Source:
Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11
Action :
J'ai essayé de mettre l'action sous forme VB :
Source:
Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11
Action :
Cela ne donne toujours rien. J'aurais besoin d'indications niveau syntaxe ; je pense que ça m'aiderait beaucoup à avancer.
Et puis je voudrais aussi savoir s'il existait une variable dans CATIA associée à l'état d'une vérification (validée ou non). Ca m'éviterait de reprendre les formules de vérifications.
D'avance merci à tous !
Une stagiaire en galère
Comme prévu me revoilà avec mon bagage de questions.
Je connais assez bien CATIA, surtout la V6, mais la VBA sur V5 (et V6 en fait) j'en ai peu fait.
Donc voici mon problème.
J'ai une 3DPart dans laquelle on a mis quelques vérifications (KWA) pour s'assurer de la validité du modèle.
Ce que je voudrais faire, c'est :
- Code:
If toutes les vérifications sont bonnes Then
Message("C'est tout bon")
Else
Message("Re-vérifiez votre modèle")
End If
J'ai fait ça sur Excel. C'est-à-dire que j'ai importé :
les verifications
les relations de vérification
les valeurs des paramètres qui entre dans les vérifications
dans des cellules et je les teste. J'ai même fait un petit système avec des feux comme dans CATIA. J'obtiens ce que je recherche, donc tout baigne !
Par contre, j'aurais voulu faire ça en exploitant CATVB directement.
Je pensais intégrer une réaction (KWA) en reprenant les conditions qui apparaissent déjà dans mes vérifications.
Mais je n'ai pas la bonne syntaxe, car j'ai toujours des messages d'erreur. Voici ce que je mets dans ma réaction:
Source:
Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11
Action :
- Code:
If Parametre1 >= Parametre2 And
Parametre3 > Parametre4 And
Parametre7 > Parametre8 And
Parametre9 == Parametre10 And
Parametre11 >= Parametre2 And
If Pilotage <> "Automatique"{
Parametre5 >= Parametre6 -0.001mm}
Else{
0
}
{
Message("Votre modèle est conforme. Veuillez poursuivre.")}
Else{
Message ("Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran.")}
J'ai essayé de mettre l'action sous forme VB :
Source:
Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11
Action :
- Code:
Sub main ()
If Parametre1 >= Parametre2 And
Parametre3 > Parametre4 And
Parametre7 > Parametre8 And
Parametre9 == Parametre10 And
Parametre11 >= Parametre2 And
If Pilotage <> "Automatique" Then
Parametre5 >= Parametre6 -0.001mm
Else
0
End If
Then
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
End sub
Cela ne donne toujours rien. J'aurais besoin d'indications niveau syntaxe ; je pense que ça m'aiderait beaucoup à avancer.
Et puis je voudrais aussi savoir s'il existait une variable dans CATIA associée à l'état d'une vérification (validée ou non). Ca m'éviterait de reprendre les formules de vérifications.
D'avance merci à tous !
Une stagiaire en galère
Dernière édition par StagiaireEnMousse le Ven 10 Avr 2015 - 15:46, édité 1 fois
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
Salut,
Quel est le(s) message(s) d'erreur ? et à quelle ligne ?
Quel est le(s) message(s) d'erreur ? et à quelle ligne ?
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Bonjour Guss !
Merci d'avoir répondu.
L'erreur que j'ai se trouve au niveau de mon deuxieme "If". Je crois que l'enchaînement de "And" et de "If" ne lui plaît pas.
A vrai dire, je m'en doutais, je trouve ça louche moi-même.
En gros j'inclus la condition Parametre5 >= Parametre6 -0.001mm uniquement dans le cas où mon paramètre "Pilotage" a une valeur différente de "Automatique". Sinon, pas besoin de vérifier la condition Parametre5 >= Parametre6 -0.001mm
Et je pense que je m'y prends très mal...
Merci d'avoir répondu.
L'erreur que j'ai se trouve au niveau de mon deuxieme "If". Je crois que l'enchaînement de "And" et de "If" ne lui plaît pas.
- Code:
Ligne d'erreur de syntaxe 7 :
structure non valide : syntax error (près du mot : < If >)
A vrai dire, je m'en doutais, je trouve ça louche moi-même.
En gros j'inclus la condition Parametre5 >= Parametre6 -0.001mm uniquement dans le cas où mon paramètre "Pilotage" a une valeur différente de "Automatique". Sinon, pas besoin de vérifier la condition Parametre5 >= Parametre6 -0.001mm
Et je pense que je m'y prends très mal...
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
Ok, je vois, je me doutais un peu de l'erreur, mais je ne savais pas si tu avais écris de cette manière uniquement pour la mise en forme sur le forum ou également dans ton code.
Il faut que tout soit écrit sur la même ligne (en VB il n'y a pas d'indicateur de fin de ligne d’instruction)
Il faut écrire
Dans certain cas (mais visiblement ça ne marche pas avec IF dans le vba de catia) tu peux utiliser le caractère "_" pour faire un retour à la ligne du code
par exemple
Il faut que tout soit écrit sur la même ligne (en VB il n'y a pas d'indicateur de fin de ligne d’instruction)
Il faut écrire
- Code:
If Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 ... Then
Dans certain cas (mais visiblement ça ne marche pas avec IF dans le vba de catia) tu peux utiliser le caractère "_" pour faire un retour à la ligne du code
par exemple
- Code:
MsgBox "Bonjour", _
vbInformation, _
"Message"
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Merci pour l'astuce Guss ! Je l'avais remarqué à un moment que ça fonctionnait mieux comme ça.
Par contre, j'ai bel et bien l'impression que c'est l'enchaînement "And If" qui ne lui plaît pas... J'ai toujours le même probème au même endroit, ahah
J'ai contourné le problème en redéfinissant mes conditions. Mais si jamais quelqu'un a une explication, je suis toute ouïe.
Je pense que je ne mettrais pas ce sujet en "résolu" vu que je pense avoir d'autres questions qui arriveront sous peu...
Bonne journée à tous
Par contre, j'ai bel et bien l'impression que c'est l'enchaînement "And If" qui ne lui plaît pas... J'ai toujours le même probème au même endroit, ahah
J'ai contourné le problème en redéfinissant mes conditions. Mais si jamais quelqu'un a une explication, je suis toute ouïe.
Je pense que je ne mettrais pas ce sujet en "résolu" vu que je pense avoir d'autres questions qui arriveront sous peu...
Bonne journée à tous
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
Oui le And If est inutile, simplement And suffit par contre j'ai du mal à suivre ton raisonnement, c'est bancal ton code
tu ne peux pas écrire
Il faut mettre plusieurs boule If les unes dans les autres
voilà ça devrait être mieux comme ça, mais ce n'est pas une solution unique, on peut avoir d'autre manière d'obtenir le même résultat.
tu ne peux pas écrire
- Code:
If Pilotage <> "Automatique" Then
Parametre5 >= Parametre6 -0.001mm
Else
Il faut mettre plusieurs boule If les unes dans les autres
- Code:
if Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 And Parametre11 >= Parametre2 Then
' on vérifie tous les paramètres communs au mode de pilotage que se soit automatique ou non
If Pilotage <> "Automatique" Then
' si on est en pilotage automatique alors on vérifie un paramètre supplémentaire
If Parametre5 >= Parametre6 -0.001mm Then
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
Else
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
End If
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
voilà ça devrait être mieux comme ça, mais ce n'est pas une solution unique, on peut avoir d'autre manière d'obtenir le même résultat.
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Oui tout à fait, en fait j'ai fait quelque chose de similaire au final !
Effectivement, ça ne voulait rien dire, et CATIA me le disait...
Encore merci Guss !
Effectivement, ça ne voulait rien dire, et CATIA me le disait...
Encore merci Guss !
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Re,
Je reviens à la charge sur le sujet.
En fait, j'aimerais qu'à ma réaction, si le modèle est bon, on retourne sur Excel.
Donc comme vu sur l'autre sujet, il faut faire ainsi pour retourner sur Excel via macro catvba:
Ceci étant, je voudrais inclure ce bout de code dans ma partie "Action VB" de ma réaction. Mais impossible avec l'appel aux API...
Du coup, je voudrais savoir comment traduire dans une macro catvba, le déclenchement d'évènement au changement de valeur. (sur excel, il faut utiliser "Target", mais sur Catvba ? )
D'avance merci !
Je reviens à la charge sur le sujet.
En fait, j'aimerais qu'à ma réaction, si le modèle est bon, on retourne sur Excel.
Donc comme vu sur l'autre sujet, il faut faire ainsi pour retourner sur Excel via macro catvba:
- Code:
Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Sub Excel_Top()
Dim hwnd As Long
'Récupère le Handle d'une fenêtre
'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
hwnd = FindWindow(vbNullString, "Microsoft Excel")
If hwnd > 0 Then
BringWindowToTop hwnd
'Affiche en mode "Normal"
ShowWindow hwnd, 1
End If
End Sub
Ceci étant, je voudrais inclure ce bout de code dans ma partie "Action VB" de ma réaction. Mais impossible avec l'appel aux API...
Du coup, je voudrais savoir comment traduire dans une macro catvba, le déclenchement d'évènement au changement de valeur. (sur excel, il faut utiliser "Target", mais sur Catvba ? )
D'avance merci !
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
J'ai du mal à piger exactement ton soucis.
Perso je copie-collerais tout le code que tu as écris au dessus, après le End sub de ta Sub Main()
Et à la place ou après les lignes
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
je placerais
Excel_Top()
ce qui donnerait :
Perso je copie-collerais tout le code que tu as écris au dessus, après le End sub de ta Sub Main()
Et à la place ou après les lignes
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
je placerais
Excel_Top()
ce qui donnerait :
- Code:
sub main()
if Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 And Parametre11 >= Parametre2 Then
' on vérifie tous les paramètres communs au mode de pilotage que se soit automatique ou non
If Pilotage <> "Automatique" Then
' si on est en pilotage automatique alors on vérifie un paramètre supplémentaire
If Parametre5 >= Parametre6 -0.001mm Then
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
Excel_Top
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
Else
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
Excel_Top
End If
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
end sub
Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Sub Excel_Top()
Dim hwnd As Long
'Récupère le Handle d'une fenêtre
'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
hwnd = FindWindow(vbNullString, "Microsoft Excel")
If hwnd > 0 Then
BringWindowToTop hwnd
'Affiche en mode "Normal"
ShowWindow hwnd, 1
End If
End Sub
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Merci de plancher sur mon problème Guss.
Mon souci c'est bel et bien le fait de tout mettre en un bloc dans ma réaction. J'ai fait exactement la même chose que toi mais j'obtiens un message d'erreur lorsque ma réaction a lieu... Je mettrai le message d'erreur demain.
Mon souci c'est bel et bien le fait de tout mettre en un bloc dans ma réaction. J'ai fait exactement la même chose que toi mais j'obtiens un message d'erreur lorsque ma réaction a lieu... Je mettrai le message d'erreur demain.
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
Ah oui en fait il faut mettre
Tout en haut de ton Code, avant même la 1ere Sub
- Code:
Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Tout en haut de ton Code, avant même la 1ere Sub
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Re Guss,
Alors oui quand j'écris une macro dans l'éditeur de macro, ça marche nickel.
Mais ce que je voudrais, c'est que mes macro dans mon module1 s'executent de la même manière qu'une réaction KWA. C'est-à-dire qu'au changement de valeur d'un paramètre, je déclenche mes macros du module1.
Du coup, j'ai C/c mes macros dans ma réaction KWA, mais voilà, le problème arrive lorsque l'on utilise des API, car impossible de les mettre en tout début, comme dans l'éditeur de macro.
En gros, j'ai 2 questions qui sont liées :
1) Peut-on faire appel à des macro contenues dans un module1, dans une réaction KWA ?
2) Sinon, comment rédiger sytaxiquement parlant, le déclenchement d'une macro par changement de valeur d'un paramètre ? Sur Excel, c'est avec "Target" et "Worksheet_Change", mais sur CATVba, aucune idée...
D'avance merci
EDIT : j'ai vu qu'il y avait une fonction Private Sub object_Change, mais je ne comprends pas comment s'en servir ; si j'ai plusieurs "object" qui changent par exemple, que faire ?
Alors oui quand j'écris une macro dans l'éditeur de macro, ça marche nickel.
Mais ce que je voudrais, c'est que mes macro dans mon module1 s'executent de la même manière qu'une réaction KWA. C'est-à-dire qu'au changement de valeur d'un paramètre, je déclenche mes macros du module1.
Du coup, j'ai C/c mes macros dans ma réaction KWA, mais voilà, le problème arrive lorsque l'on utilise des API, car impossible de les mettre en tout début, comme dans l'éditeur de macro.
En gros, j'ai 2 questions qui sont liées :
1) Peut-on faire appel à des macro contenues dans un module1, dans une réaction KWA ?
2) Sinon, comment rédiger sytaxiquement parlant, le déclenchement d'une macro par changement de valeur d'un paramètre ? Sur Excel, c'est avec "Target" et "Worksheet_Change", mais sur CATVba, aucune idée...
D'avance merci
EDIT : j'ai vu qu'il y avait une fonction Private Sub object_Change, mais je ne comprends pas comment s'en servir ; si j'ai plusieurs "object" qui changent par exemple, que faire ?
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
AH ok, maintenant j'ai compris ton problème.
là comme ça je n'ai pas de solution, en gros tu veux faire un système dynamique qui vérifie en temps réelle les paramètres et donc déclenche un événement à un moment précis, mais lorsque l'utilisateur utilise l'interface catia, et non lorsqu'il lance une macro.
là comme ça je n'ai pas de solution, en gros tu veux faire un système dynamique qui vérifie en temps réelle les paramètres et donc déclenche un événement à un moment précis, mais lorsque l'utilisateur utilise l'interface catia, et non lorsqu'il lance une macro.
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Dans une macros (celle que j'ai cité dans l'autre sujet concernant Excel) je créé dynamiquement une macro dans Excel via Catia
Dans cette macro j'ai une ligne qui appel une macro Catia, depuis Excel, ça peut être une piste.
Dans cette macro j'ai une ligne qui appel une macro Catia, depuis Excel, ça peut être une piste.
- Code:
sFilePath = chemin_macro
catScriptLibraryType = 2
sModule = nom_module
sProcedure = "mise_a_jour_table" 'CatMain is only allowable Choice
sFilePathAndName = sFilePath
Set CatSysServ = CATIA.SystemService
vRetVal = CatSysServ.ExecuteScript(sFilePathAndName, catScriptLibraryType, sModule, sProcedure, Params)
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Syntaxe test sur vérification (KWA) - réactions
Oui tu as tout à fait compris ce que je voulais faire, désolée je n'ai pas été très claire dans mes explications.
A quoi correspond la ligne "catScriptLibraryType = 2" ?
J'ai essayé ton code dans ma réaction "Action VB" et ça a l'air de pouvoir marcher !
Je dis pouvoir, car j'ai un message d'erreur. "Bibliothèque de macros inconnue". Là je sèche complètement. Je donne le FilePath via CATIA.ActiveDocument.Path (car mon .catvba est dans le même répertoire), donc je ne peux pas me tromper théoriquement.
A quoi correspond la ligne "catScriptLibraryType = 2" ?
J'ai essayé ton code dans ma réaction "Action VB" et ça a l'air de pouvoir marcher !
Je dis pouvoir, car j'ai un message d'erreur. "Bibliothèque de macros inconnue". Là je sèche complètement. Je donne le FilePath via CATIA.ActiveDocument.Path (car mon .catvba est dans le même répertoire), donc je ne peux pas me tromper théoriquement.
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
Re,
Alors c'est bon, c'est résolu !
Comme une débile, je ne mettais pas le fichier .catvba, mais uniquement le chemin...
A mettre dans Action VB :
Alors c'est bon, c'est résolu !
Comme une débile, je ne mettais pas le fichier .catvba, mais uniquement le chemin...
A mettre dans Action VB :
- Code:
Dim result
Dim params()
chemin = CATIA.ActiveDocument.Path
project="\NomDuFichier.catvba"
result = CATIA.SystemService.ExecuteScript(chemin & project,catScriptLibraryTypeVBAProject, "Module1", "CATMain", params)
End sub
StagiaireEnMousse- actif
- Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France
Re: Syntaxe test sur vérification (KWA) - réactions
C'est cool ça et bon à savoir, qu'on peut automatiser le lancement de macro grâce au kwa
Il faudrait que je trouve le temps de voir comment fonctionne le kwa, je n'ai encore jamais mis les pieds dans ce module.
Il faudrait que je trouve le temps de voir comment fonctionne le kwa, je n'ai encore jamais mis les pieds dans ce module.
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Sujets similaires
» syntaxe pour une condition
» vérification réseption assemblage
» Draw - verification des liens de vues
» vérification réseption assemblage
» Draw - verification des liens de vues
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum