[Résolu] paramètres et API
Modérateurs : remi77, D@vid, Alexis GERARD
-
- Caporal
- Messages : 28
- Enregistré le : 14 déc. 2006, 16:07
[Résolu] paramètres et API
Bonjour,
Je suis en train d'essayer d'optimiser la cinématique d'un système, géré par 5 paramètres. Afin d'être plus efficace, j'ai fait un petit programme sous Visual Basic / Excel, ou je balaye des valeurs pour mes paramètres et j'en extrait des résultat (en l'occurrence des distance) pour les optimiser.
Cela marche pas trop mal, mais j'ai été embêté avec la définition des paramètres sous VB afin de leur attribuer une valeur. En effet le seul moyen que j'ai trouvé est de les appeler par IParameters.Item(k), ou k est un index qui n'a pas de correspondance dans TopSolid... J'ai donc listé toutes les valeurs des paramètres afin de faire la concordance entre l'index et la désignation. Si c'est possibles avec moins de 20 paramètres au total, ça devient vite lourdingue...
Ma question est la suivante: y a t il dans VB un moyen d'appeler un paramètre, soit pour le lire, soit pour lui attribuer une valeur, par sa désignation en @ ou par son nom?
Merci
Je suis en train d'essayer d'optimiser la cinématique d'un système, géré par 5 paramètres. Afin d'être plus efficace, j'ai fait un petit programme sous Visual Basic / Excel, ou je balaye des valeurs pour mes paramètres et j'en extrait des résultat (en l'occurrence des distance) pour les optimiser.
Cela marche pas trop mal, mais j'ai été embêté avec la définition des paramètres sous VB afin de leur attribuer une valeur. En effet le seul moyen que j'ai trouvé est de les appeler par IParameters.Item(k), ou k est un index qui n'a pas de correspondance dans TopSolid... J'ai donc listé toutes les valeurs des paramètres afin de faire la concordance entre l'index et la désignation. Si c'est possibles avec moins de 20 paramètres au total, ça devient vite lourdingue...
Ma question est la suivante: y a t il dans VB un moyen d'appeler un paramètre, soit pour le lire, soit pour lui attribuer une valeur, par sa désignation en @ ou par son nom?
Merci
-
- Sergent
- Messages : 56
- Enregistré le : 08 nov. 2006, 12:08
- Localisation : 06 - Alpes maritimes
Bonjour,
Peut être qu'il est possible de le traiter simplement comme un element de document:
- son identifieur @ est alors accessible
- son nom est accessible
et sa valeur via IElement de parametre.
Nous l'avons fait pour du texte formatté contenant parametres de cartouche vers Excel et inversement.
Peut être qu'il est possible de le traiter simplement comme un element de document:
- son identifieur @ est alors accessible
- son nom est accessible
et sa valeur via IElement de parametre.
Nous l'avons fait pour du texte formatté contenant parametres de cartouche vers Excel et inversement.
Ptilu
-
- Caporal
- Messages : 28
- Enregistré le : 14 déc. 2006, 16:07
Bon, je n'ai pas trouvé de solution à mon problème...
En gros, il me manque une fonction du genre
IParameter(name or identifier).Value = Double
L'API n'est peut être pas faite pour cela, j'ai l'impression qu'elle a été réalisée pour créer des objets dans TopSolid, mais pas pour les modifier, réaliser des calculs et echanger des valeurs avec Excel...
J'ai essayé la fonction IDocument.SearchElementByName(name), mais n'ai pas réussi à me dépétrer d'une erreur
Si quelqu'un a une idée, et éventuellement un bout de code...
Merci
En gros, il me manque une fonction du genre
IParameter(name or identifier).Value = Double
L'API n'est peut être pas faite pour cela, j'ai l'impression qu'elle a été réalisée pour créer des objets dans TopSolid, mais pas pour les modifier, réaliser des calculs et echanger des valeurs avec Excel...
J'ai essayé la fonction IDocument.SearchElementByName(name), mais n'ai pas réussi à me dépétrer d'une erreur
Si quelqu'un a une idée, et éventuellement un bout de code...
Merci
-
- Sergent
- Messages : 56
- Enregistré le : 08 nov. 2006, 12:08
- Localisation : 06 - Alpes maritimes
Bonjour,
Ci dessous un peu de code:
- Exemple1: on recupere dans un document draft des éléments nommés (par exemple des parametres) qui contiennent des valeurs et que l'on stocke dans Excel:
Exemple 2 : on renvoi de Excel vers les éléments nommés (ici il s'agit de chaines de caracteres vers du texte) des valeurs:
Bon courage
Ci dessous un peu de code:
- Exemple1: on recupere dans un document draft des éléments nommés (par exemple des parametres) qui contiennent des valeurs et que l'on stocke dans Excel:
Code : Tout sélectionner
value = doc.Name
sheet.Range("A" & j).Value = value
value = ""
value = doc.GetProperty("param1")
sheet.Range("B" & j).Value = value
value = ""
value = doc.GetProperty("param2")
sheet.Range("C" & j).Value = value
value = ""
Code : Tout sélectionner
doc.Texts.Item(i).String = sheet.Range("B" & k).Value
ou
doc.Params.Itm(i).value = sheet.Range("C" & k).Value
Ptilu
-
- Caporal
- Messages : 28
- Enregistré le : 14 déc. 2006, 16:07
Merci Ptilu
Effectivement, la fonction GetProperty marche bien.
En revanche, dans le sens inverse, je n'ai pas réussi à faire tourner la fonction SetProperty correctement, car elle demande un string et non une valeur... Et ta solution en item(i) revient à ma position de départ, où il faut trouver la correspondance entre l'index de l'item et le paramètre en question.
En tatonant, j'ai pu finalement trouver une solution:
doc.Parameters("param").SetConvertedValue Value, "mm"
Cela marche bien, du moment que param est effectivement nommé (cela ne marche pas avec les désignations en @)
Ainsi, j'ai attribué un nom aux côtes pilotantes qui m'interressent, et je peux ainsi les gérer dans VB...
Effectivement, la fonction GetProperty marche bien.
En revanche, dans le sens inverse, je n'ai pas réussi à faire tourner la fonction SetProperty correctement, car elle demande un string et non une valeur... Et ta solution en item(i) revient à ma position de départ, où il faut trouver la correspondance entre l'index de l'item et le paramètre en question.
En tatonant, j'ai pu finalement trouver une solution:
doc.Parameters("param").SetConvertedValue Value, "mm"
Cela marche bien, du moment que param est effectivement nommé (cela ne marche pas avec les désignations en @)
Ainsi, j'ai attribué un nom aux côtes pilotantes qui m'interressent, et je peux ainsi les gérer dans VB...