stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 juillet 2007
-
12 janv. 2006 à 23:53
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 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:
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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 ??)
@+
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.
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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" )
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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
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.
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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!!!
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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)
@+
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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 ???
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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 :
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.
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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!?!
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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"
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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.
stuntman_91
Messages postés54Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention14 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à?).