[Résolu] paramètres et API

Tous sujets concernant le développement spécifique de TopSolid avec l'interface COM, le langage LIP, la programmation de l'API en VB...

Modérateurs : remi77, D@vid, Alexis GERARD

Répondre
betime
Caporal
Caporal
Messages : 28
Enregistré le : 14 déc. 2006, 16:07

[Résolu] paramètres et API

Message non lu par betime »

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
Ptilu
Sergent
Sergent
Messages : 56
Enregistré le : 08 nov. 2006, 12:08
Localisation : 06 - Alpes maritimes

Message non lu par Ptilu »

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.
Ptilu
betime
Caporal
Caporal
Messages : 28
Enregistré le : 14 déc. 2006, 16:07

Message non lu par betime »

Effectivement, je n'avais pas du tout pensé à le considérer comme un element...
J'essaierai ça la semaine prochaine.

Merci bien!
betime
Caporal
Caporal
Messages : 28
Enregistré le : 14 déc. 2006, 16:07

Message non lu par betime »

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
:oops:

Si quelqu'un a une idée, et éventuellement un bout de code...

Merci
Ptilu
Sergent
Sergent
Messages : 56
Enregistré le : 08 nov. 2006, 12:08
Localisation : 06 - Alpes maritimes

Message non lu par Ptilu »

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:

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 = ""
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:

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
Bon courage
Ptilu
betime
Caporal
Caporal
Messages : 28
Enregistré le : 14 déc. 2006, 16:07

Message non lu par betime »

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...
Drikce06
Seconde Classe
Seconde Classe
Messages : 7
Enregistré le : 22 nov. 2006, 11:08

Message non lu par Drikce06 »

Salut, en effet cela ne marche pas avec @ car à chaque ouverture du plan ton paramètre a comme nom @??? qui varie à chaque fois. Donc obligé de nommer les champs, ce qui est beaucoup plus pratique.
DRIKCE06
Répondre