Thimbous Posté(e) le 19 avril 2004 Posté(e) le 19 avril 2004 CATIA V5 - R12 Bonjour à tous, Je cherche á piloter des paramètres utilisateurs, définissant des géométries de pièces, à l´aide de Macros VBA. J´ai un problème pour détecter si un paramètre est modifiable, ou si il est déjà piloté par une formule ou une table de valeur. Dans un environnement de travail normal, lorsque l´on clique sur des paramètres déjà piloter, leur valeur apparaît grisée et non modifiable. En programmation, l´aide On-line de CATIA propose ceci : Dim product1 As ProductSet product1 = CATIA.ActiveDocument.Product Dim parameters1 As ParametersSet parameters1 = product1.Parameters Dim param1 As ParameterSet param1 = parameters1.Item(1) Set param1_rel = param1.OptionalRelation MsgBox IsNull(param1_rel) ‘if false, there is no formula for the parameter‘if right, there is a formula for the parameter En effet, cela revient à détecter si l´option "optionalrelation" est valide pour le param1.Cependant, la valeur de param1_rel qui m´est renvoyé est toujours false. Quelqu´un peut-il m´en expliquer la raison ? Existe-t-il à votre avis une autre solution pour détecter la présence de formule sur les paramètres à l´intérieur d´une macro VBA ? Thimbous
Enael Posté(e) le 22 avril 2004 Posté(e) le 22 avril 2004 Bonjour je n'ai pas de solution toutes faites qui pourrait vous aider mais je me demandais si vous aviez fait des recherches dans la doc de catia qui se trouve dans \Dassault Systemes\B10\intel_a\code\bin même si elle est relativement mal faites enfin je trouve elle se révèle utile dans bien des situations. Si vous l'avez déjà utilisez et que vous n'avez pas trouvez ce qu'il vous fallait je veux bien essayer de répondre à votre problème mais il me faudrait plus de détail pour cela. Enael
Thimbous Posté(e) le 22 avril 2004 Auteur Posté(e) le 22 avril 2004 Bonjour, Merci de m´avoir répondu. J´ai effectivement deja regardé dans l´aide Online Catia V5R10 et V5R12.Je me suis permis de faire une petit macros pour mieux expliquer mon problème. Ai-je oublié de définir quelque chose ?Ai-je mal compris le sens des méthodes ? Si c´est le cas, existe-t-il d´autres méthodes qui puissent donner les résultats attendus ? A bientot Xavier ----------------------------------------------------------------------- Sub CATMain() Dim product1 As ProductSet product1 = CATIA.ActiveDocument.Product ' Product1 n´a rien de complexe. C´est pour l´instant deux simples cubes' Les dimensions du second cube sont déduites de celles du premier. 'Je prends un paramètre utilisateur au hasard, en le definissant ainsi A = InputBox("No du paramètre") Dim Param1 As ParameterSet Param1 = product1.Parameters.Item(CInt(A)) ' Je cherche à différencier trois types de paramètres utilisateurs : les parmètres libres, dont on peut changer la valeur, les paramètres verrouillés par l´utilisateur, et les paramètres dont la valeur est le résultat d´une formule. MsgBox Param1.NameMsgBox Param1.ReadOnly 'dit si un paramètre peut-etre modifier.(provient de l´aide Online CATIA)'Valeurs attendues' paramètres utilisateur libres : False' paramètres utilisateur verrouillés : True' paramètres utilisateur dont la valeur est le résultat d´une formule : False Dim rel1 As RelationSet rel1 = Param1.OptionalRelation 'dit ou affiche si une relation peut-etre utiliser pour calculer un paramètre (provient de l´aide Online CATIA) MsgBox IsNull(rel1)'Valeurs attendues' paramètres utilisateur libres : True' paramètres utilisateur verrouillés : True' paramètres utilisateur dont la valeur est le résultat d´une formule : False ' Le problème est : pour les deux dernières boites de dialogue, je recois toujours la valeur False End Sub
Enael Posté(e) le 27 avril 2004 Posté(e) le 27 avril 2004 dsl mais je ne vosi pas vraiment ce qui pourrait créer un problème dans la macro que vous avez laissé sur le forum sauf peut etre avec le cInt(A) c'est tout mais encore je ne pense pas que ca crée des problèmes.Dès que j'aurai un peut plus de temps je me pencherai plus en profondeur sur votre pb mais pour le moment je ne peux pas vous en dire plus Enael
Thimbous Posté(e) le 28 avril 2004 Auteur Posté(e) le 28 avril 2004 Bonjour à tous, Bon j´ai trouvé une réponse partielle ... à la question que je me posais.Je vous livre une solution peut-etre un peu trop simple. 'Au lieu d´utiliser la fonction IsNull'MsgBox IsNull(rel1) 'On utilise la detection d´erreur On Error Resume Nextco = rel1.Name If Err = 0 ThenMsgBox "True"MsgBox coElseMsgBox "False"End If Voila. Simplement. Par contre, si quelqu´un peut m´aider pour utiliser la deuxième fonction, Readonly, cela me rendrait bien service ...
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