Ouvrir un fichier " ?\.......\ .*** " avec VB6 ??

stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007 - 12 janv. 2006 à 23:53
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 14 janv. 2006 à 22:22
Bonjour,



Je suis débutant sur VB et je cherche en fait à réaliser une sorte de macro,pour un logiciel de CAO (Solid Edge).

Le but de ce logiciel, serait de permètre à l'utilisateur de l'aider à réaliser des pièces tel que des vils, des joints,...

Je pensais donc créer une pièce type chaque catégorie (Ex: Une vils
type, ...), où les dimensions de la pièce seraient données par des
variables, et que ces dernières soient modifiables depuis VB lorsque
l'utilisateur change les paramètres (Ex: il peut indiquer une valeur de
diamètre dans le programme et elle sera transmise au logiciel de CAO
pour que ce dernier modifie l'allure de la pièce)

Je souhaite réaliser ce programme dans le but d'automatiser un peut
plus la création de pièces "basics", ceci parceque toutes les
dimenssions des pièces ne dépendent que de très peut d'éléments (Ex:
avec le diametre de la vils, le matériau à visser et l'épaisseur de la
pièce à visser, on peut avoir le dimenssionement total de la pièce)



j'ai réussi à créer un bouton qui ouvre le programme (en
utilisant la fonction shell) mais le programme ne ce lancera que si il
est instalé dans C: et je n'ai pas trouvé comment pouvoir remedier à
cela, et je voudrais également que ce même bouton ouvre juste à la
suite le fichier de référence (Ex : C:\vils.par). Mais je n'arrive pas
à ouvrir de fichier .par et le problème du chemin d'accès est le même!!!

En ce qui concerne la transmission des données de mon programme
à SolidEdge c'est encore pir!!!!!! je ne vois même pas comment
essayer!!!! Mais il est clairement dit dans l'aide du logiciel que
c'est faisable, mai s ils n'expliquent pas comment faire!!. Par contre
ils donnent un exemple par l'intermédiaire de Excel:

Type,
Nom,
Valeur,
Formule,
----

Variable,
c,
2.0 kg,
,
----

Variable,
d,
10.0 rad,
@c:\bearing.xls!sheet1!R6C3,
----

Variable,
e,
20 mm,
@c:\bearing.xls!sheet1!R6C3,
----

Cote,
f,
8.5 mm,
(1.5 + Func.(func1(c,d)))^2



(c'est le tableur du logiciel de CAO)









Pour lancer le programme j'ai écri cela:



Private Sub Command1_Click()

Shell ("C:\Program Files\Solid Edge V14\Program\Edge.exe")

End Sub



J'espère ne pas avoir été trop long , mais je préférais bien expliquer la situation



Merci d'avance pour votre aide

27 réponses

violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 janv. 2006 à 13:21
Violent Ken
Salut
Tu veux pouvoir connaitre l'emplacement du programme sans savoir dans quel lecteur il est installé ?
Alors plusieurs méthodes
1) tu vas chercher une clé dans le registre qui te permet de connaître le répertoire d'install de SolidEdge
ou bien 2) tu installes ton programme VB dans le même lecteur que SolidEdge, et tu testes le path de ton executable (LocationSolidEdge=left$(app.path,1) & ":\Program Files\Solid Edge v17\Program\Edge.exe")

" En ce qui concerne la transmission des données de mon programme à SolidEdge c'est encore pir!!!!!!"
Je connais SolidEdge, mais je sais pas comment l'utiliser avec VB6. Désolé je peux pas t'aider pour çà. Mais tu n'aurais pas un répertoire avec des fichiers VB dedans ? Je n'ai pas SolidEdge sur le PC duquel j'écrit, mais il est possible que çà existe.
Recherche des fichiers *.frm dans le répertoire d'install de SoliEdge, il y a peut être des samples.
Avec SolidWorks, il y a des exemples de programmes VB pour pouvoir "contrôler" solidworks et automatiser la création/insertion de pièce/esquisses simples.
Question : y' a pas une base de données de pièce "basiques" dans SolidEdge 14 (comme pour sldwrks et SolidWorks ToolBox ??)
@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
13 janv. 2006 à 14:10
Merci Violent_ken


Mais je dois t'avouer que je n'y connais rien du tout à VB!!!
Je n'ai pas bien compris ce que je devais faire avec :

LocationSolidEdge=left$(app.path,1) & ":\Program Files\Solid Edge v17\Program\Edge.exe")

C'est à mettre dans la fonction shell
Donc si tu avais le temps de m'expliquer un peut plus en detail l'une des deux méthodes, ca serait cool!!!
(en me donnant si possible un exemple de code)
Pour les fichiers .frm , je vais allé voir ca tout de suite.
Par contre je ne crois pas qu'il y ai de base de donnée de pièce basiques avec SolidEdgeV14, et j'ai donc l'intention de créer ma propre base de donnée, qui sera instalée en même temps que mon programme VB.

A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 janv. 2006 à 19:23
Violent Ken

Ok.
Alors méthode 1) C'est la meilleure méthode : lecture de la clé du path de SolidEdge dans le registre :
Manip. préalable : cliques sur "demarrer" (dans Windows), puis sur "excuter", tapes "regedit" et valides. Tu as maintenant une arborescence. Ce sont toutes les clés du registre, elles permettent de définir tous les settings de ton PC, l'emplacement des *.dll.... bref, aucune importance. Dans toutes ces clés, le path (chemin) du programme SolidEdge est stocké quelque part.

Voici la chemin de la clé (pour MA version, toi faut voir, mais c'est un truc dans le genre)
HKEY_LOCAL_MACHINE\SOFTWARE\Unigraphics Solutions\Solid Edge\Version 17\CurrentVersion
Et la clé concernée :
InstallPath

Elle contient le path du dossier d'installation (exemple, "c:\program files\solidedge v17\....")

Voici comment récupérer sa valeur (tappes ce code)

Dim Valeur As String
Set WshShell = CreateObject("Wscript.Shell")
Valeur = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Unigraphics Solutions\Solid Edge\Version 17\CurrentVersion\InstallPath")
MsgBox Valeur

A adapter pour TA version de solidedge (donc changer le 17 en 14...)
Tu récupères donc le chemin de SolidEdge, et tu peut l'utiliser normalement avec Shell.


Shell Valeur & "\edge.exe"


Voilà donc pour ouvrir SolidEdge quelque soit son répertoire d'installation ! Maintenant, pour piloter SolidEdge à partir de VB, aucune idée. Moi j'ai quelques exemples avec SolidWorks, mais pour SolidEdge...rien.

Donc je ne peux pas t'aider pour çà ! Mais je suis sur qu'avec google tu trouveras.

Note pratique : tu peux récupérer facilement la LETTRE du lecteur sur lequel ton programme VB tourne.
Pour cela, tu va utiliser la fonction app.path, elle renvoie le path du *.exe
(exemple, Msgbox App.Path affichera "C:\Mes programmes VB\exemple", si ton programme VB est installé dans ce répertoire)
Ensuite, tu récupères LA PREMIERE LETTRE de cette chaîne de caractère (c'est donc "C" dans ce cas), et tu obtiens la lettre du lecteur. Donc si tu mets ton application VB dans le même disque que SolidEdge, le lecteur est le même.
Pour récupérer la première lettre en partant de la gauche, tu fait :
PremiereLettre =Left$(App.path,1) 'signifie prend dans la string App.path la 1ere lettre en partant de la gauche.
Maintenant tu connais le lecteur, tu n'as plus qu'à ajouter le reste
(exemple : FichierReference=Left$(App.path,1) & "`:\vis.par" )


Voilà !!


@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 02:06
Encore merci à toi!



Tout d'abord, j'ai cherché les fichiers .frm de SolidEdge, mais aucun
d'entre eux ne m'ont donnés d'explication pour modifier les données
dans le menu des variables de SE.

Sur google j'ai cherché des sites sur SolidEdge et VB, mais apart de
l'aide en Anglais, je n'ai rien trouvé (et je n'y comprené rien)



En ce qui concerne le Path, je te remercie de m'avooir très bien expliqué la methode à utiliser et je vais voir ce que ca donne



Je te tien au courant

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 02:20
Ca marche nickel!!!!



Je t'en demande peut être un peu trop, mais tu sais pas somment je fais pour ouvrir un fichier .par de VB

En fait je ne vois pas quelle fonction choisir (car je crois que shell c'est que pour les programmes).

Mais j'ai vu que dans les composants et plus particuliérement dans les
objets à inserer de VB il y avait marqué "document SolidEdge part".
Alors est ce que je dois voir avec cela ou pas du tout



A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 11:18
Violent Ken

Salut.
Concernant l'ouverture d'un fichier *.par, voici le code nécessaire :

'Déclaration de l'API
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'Commande
ShellExecute Me.hwnd, "open", "c:\exemple.txt", vbNullString, App.Path, 1

L'API est a placer en tête de form (c'est la première ligne que tu doit écrire)
La commande peut être éxecutée n'importe où, tu remplaces "c:\exemple.txt" par le nom de ton fichier.

Dans les objets à insérer, le composant "SolidEdge part" te permet d'insérer des pièces SolidEdge dans ta form de VB6. Cela ne te permettra pas de faire ce que tu veux.

Pour programmer du SolidEdge dans VB6, voilà ce que j'ai trouvé:
http://www.geocities.com/cadgurucool/scode2.htm , il y a des exemples de code VB pour SolidEdge. C'est pour une version antérieure (7 ou 10), mais je crois que çà peut t'aider.

@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 14:03
Salut

J'ai mis l'API dans form load,en première ligne, mais j'ai un message d'erreur de compilation, qui me dit que seuls des commentaires peuvent appraître après End sub, End function ou End property!!

Et voila ce que j'ai tappé:

Private Sub Form_Load()


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


End Sub

( j'ai actuellement deux fenetres dans mon programme et j'ai essayé avec les deux, mais aucun ne marche)
C'est peut être à cause de ma version de VB??( j'ai la 6), où alors il faut peut être que je déclare quelquechose???

Et pour les sites je vais essayé de voir ca et de me trouvé un dico d'anglais!!!

Merci et A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 14:11
Violent Ken

C'est tout à fait normal que VB ne soit pas content !
Tu doit mettre

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

en PREMIERE ligne de ta form. Là tu l'as mis dans le form_load. Il faut le mettre TOUT EN HAUT.

Cependant, si tu as plusieurs form, je te conseille autre chose : met le dans un module
Voilà coment faire : tu fait "projet" (dans le menu) et "ajouter un module". Cliques ensuite sur "OK" et colle ce texte dans le module :

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Enlève ensuite la ligne de déclaration des form, garde la juste dans le module (attention, la ligne dans le module ne commence pas par Private)
@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 14:26
C'est tout simplement génial!!!

Mais à croire que je suis vraimant très mauvais, j'ai encore un problème!!!!!!!!
J'essaye de faire des conditions pour l'affichage de données dans les combobox, suivant que l'on ai choisi tel ou tel donnée dans une autre combobox.
Par exemple si tu a choisi dans la première combobox X alors dans la deuxième tu aura a,b,c... et si tu a choisi Y tu aura 1,2,3....

Donc j'ai écri ceci:

Private Sub Combo3_Click()


If Combo1.Text = "CHC:Tête_cylindrique_à_6_pans_creux" Then
Combo3.AddItem "1,6", 0
Combo3.AddItem "2", 1
Combo3.AddItem "3", 2
......
ElseIf Combo1.Text = "FHC :Tête fraisée à 6 pans creux" Then
Combo3.AddItem "3", 0
Combo3.AddItem "4", 1
Combo3.AddItem "5", 2
.......
End If
End Sub

Mais le problème c'est que rien ne s'affiche dans la combo3!!

Donc si tu pouvais me dire pou quoi ca serait super

A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 19:18
Violent Ken

Désolé d'avoir été aussi long, j'étais absent !

Concernant le problème, je suis pas certain d'apporter la réponse à ce que tu attends, mais essaie :

Private Sub Combo1_Click()
If Combo1.Text = "1" Then
Combo3.AddItem "1,6", 0
Combo3.AddItem "2", 1
Combo3.AddItem "3", 2


ElseIf Combo1.Text = "2" Then
Combo3.AddItem "3", 0
Combo3.AddItem "4", 1
Combo3.AddItem "5", 2


End If
End Sub

@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 19:51
J'ai essayé avec ta proposition, mais ca ne marche pas non plus. Je vais essayé de voir si il n'y a pas de tutaux sur les combosbox, mais la dernière foi je n'avais pas trouvé. En tout cas merci à toi quand même, car tu t'investi enormement pour les autres et c'est cool de ta part!!!!


Et j'ai regardé les aides pour SolidEdge sur le site , mais je n'ai rien trouvé concernant le menu variable, j'ai vu que des trucs pour créer des pièces ou des formes .... , je vais essayé de demandé à mon prof d'info si il n'a pas de reponses à ma question.


Et sinon, comme je commence avec VB et que ca me plait vraiement, j'aurai voulu savoir si tu pouvais me conseiller un bouquin ???
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 20:22
Violent Ken


Tout d'abord pour les combobox = => mon bout de code marchait chez moi, mais j'ai du mal saisir le vrai problème. Le code que j'ai donné permettait d'ajouter des valeurs à la combo3 en fonction du choix (1 ou 2 dans mon exemple, donc à remplacer par CHC:..... chez toi) donné par l'utilisateur.


Concernant le livre, je sais pas si je peux te conseiller un bouquin. J'ai vraiment appris sur le tas. J'ai jamais eu de livre ou autre chose pour apprendre. Ce qui m'a vraiment permis d'avancer, c'est la compil' de VBfrance. A l'époque ou j'ai commencé (y a peut être 2 ans maxi), je n'avais pas Internet, et cette compil' de codes m'a servi de dictionaire (on trouve des aides pour un peu tout), de guide, de base de donnée... C'est vraiment grâce à çà que j'ai appris.
Comme bouquin, je peux vraiment pas dire. Quelques exemple trouvés sur VBfrance :

dans la section des livres :
http://www.vbfrance.com/livres.aspx?catid=12quelques avis
http://www.vbfrance.com/forum.v2.aspx?id=44923
http://www.vbfrance.com/forum.v2.aspx?id=270344http://www.vbfrance.com/forum.v2.aspx?id=11014

Sinon, j'avais rencontré quelqu'un sur le forum (Lisa46) qui apprenait avec un livre de Diane Zak (un gros pavé :-)).
Elle donne son avis ici : =394952 http://vbfrance.com/forum.v2.aspx?ID=394952 , je pense que c'est relativement intéressant à lire pour faire un choix.
Elle est très très sympa, n'hésite pas à lui poser la question !
@+ et bonne prog.
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 20:33
OK merci pour tes conseils, mais ces quoi cette compile?? et on la trouve où??

Pour la combobox je voulais que, dans mon cas, lorsque l'on choisi dans la première combobox CHC:....
alors dans une autre combobox (la 3) il y ai les choix suivants:
1,6
2
....
et que si on choisi FHC, il y ai:
0
1
....
dans la combox3

Et je suis sur un topic ou l'on parle de:

select case combo1.text
.....
Endselect

Donc je vais approfondir mais recherches la dessus et je vais voir si ca marche!?!

A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 20:44
Violent Ken

Alors la compil' : http://www.vbfrance.com/compilcs.aspx
Elle permet d'accéder à un certain nombre de source (hors ligne), la recherche est beaucoup plus facile, et on trouve plus rapidement ce que l'on cherche. Enfin pour moi, çà a été très très utile.

Pour le problème de combobox, j'ai mieux compris. Je te donne tout le code de la form, ce qui te permettra d'avoir déjà les contrôles placés correctement pour mon exemple.
Tu copies tout le texte ci dessous dans le bloc notes, et tu sauvegardes en *.frm (exemple, form.frm)
Tu doubles clique ensuite sur ton fichier, et tu regarde le résultat.

@+

VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 4965
ClientLeft = 60
ClientTop = 375
ClientWidth = 6885
LinkTopic = "Form1"
ScaleHeight = 4965
ScaleWidth = 6885
StartUpPosition = 3 'Windows Default
Begin VB.ComboBox Combo3
Height = 315
Left = 3000
TabIndex = 1
Text = "Résultats disponibles"
Top = 1200
Width = 2415
End
Begin VB.ComboBox Combo1
Height = 315
ItemData = "Form1.frx":0000
Left = 600
List = "Form1.frx":0013
TabIndex = 0
Text = "Sélectionner votre choix"
Top = 1200
Width = 2175
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Combo1_Click()
'alors en fonction du texte de ce combo, on gère l'affichage dans le combo3


'on efface le contenu de l'autre combobox
Combo3.Clear


Select Case Combo1.Text
'le select case est utile seulement dans les cas ou il y a beaucoup de choix

Case "Choix 1"
'on ajoute en fonction de "choix 1"
Combo3.AddItem "1.1"
Combo3.AddItem "1.2"
Combo3.AddItem "1.3"
Combo3.AddItem "1.4"

Case "Choix 2"
'du choix 2....
Combo3.AddItem "2.1"
Combo3.AddItem "2.2"
Combo3.AddItem "2.3"
Combo3.AddItem "2.4"

Case "Choix 3"
Combo3.AddItem "3.1"
Combo3.AddItem "3.2"
Combo3.AddItem "3.3"
Combo3.AddItem "3.4"

Case "Choix 4"
Combo3.AddItem "4.1"
Combo3.AddItem "4.2"
Combo3.AddItem "4.3"
Combo3.AddItem "4.4"

Case "Choix 5"
Combo3.AddItem "5.1"
Combo3.AddItem "5.2"
Combo3.AddItem "5.3"
Combo3.AddItem "5.4"

End Select 'fin de select case


End Sub
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 20:46
Violent Ken

Oups.
Faut rajouter çà dans les combobox :

Combo1 ==>

Choix 1
Choix 2
Choix 3
Choix 4
Choix 5

Combo 3 ==> rien du tout
@+
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 21:04
Mon VB6 il n'est pas pas contant!!!!!!!! lol

Il me met erreur de compil: attente fin d'instruction
et me met en surbriance le form1 de la première li gne.


Mai s j'arrive pas à voir pourquoi, car il y a 3 begin et 3 end. Et ca marche chez toi??


A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 21:07
Violent Ken

Hum. Fait comme je t'ai dit ==> copie tout ce code dans le bloc note, enregistre en *.frm, et ouvre le fichier que tu viens de créer avec VB6.
Et ajoute
Choix 1
Choix 2
Choix 3
Choix 4
Choix 5
dans la Combo1.
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 21:09
C'est ce que j'ai fait, et j'ai mis les choix comme ci dessous:

Private Sub Form_Load()


Combo1.AddItem "Choix 1", 0
Combo1.AddItem "Choix 2", 1
Combo1.AddItem "Choix 3", 2
Combo1.AddItem "Choix 4", 3


End Sub

Je ne comprend pas!!!
A+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
14 janv. 2006 à 21:22
Violent Ken

Et quel est le problème ?? Ou est ce que cela bug ?
0
stuntman_91 Messages postés 54 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 14 juillet 2007
14 janv. 2006 à 21:34
Ba le problème c'est qu'il y a une erreur de compil ,comme je te l'ai dis plus haut.
Il me dit qu'il attend une fin d'instruction et dans la première ligne (Begin VB.Form Form1) il y a Form1 qui est en surbrillance.
Et il y a également des lignes en rouge:

Begin VB.Form Form1
Begin VB.ComboBox Combo3
Begin VB.ComboBox Combo1
ItemData = "Form1.frx":0000
List = "Form1.frx":0013

Mais je me demande si ce n'est pas à cause du no que j'ai donné au fichier (est ce qu'il faut que je change quelquechose dans ce cas là?).

A+
0
Rejoignez-nous