LIAISON VB6 <> AUTOCAD GRACE À ACAD.TLB OU ACAX16ENU.TLB OU ACAX17ENU.TLB
cs_Sebastien12
Messages postés23Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention23 mai 2007
-
19 juil. 2004 à 12:22
flavio31
Messages postés1Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention13 mai 2008
-
13 mai 2008 à 16:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
flavio31
Messages postés1Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention13 mai 2008 13 mai 2008 à 16:38
salut
pourrait-on m'aider!!!
je n'arrive pas à extraire les attributs et les métrais d'autocad vers excel???
merci de votre aide
rahhal_ii
Messages postés6Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention 5 juillet 2007 12 oct. 2007 à 21:21
salut
le code est excellent,vous utiliser la commande shell pour connecter autocad,la commande est la meme pour le langage Autolisp incorporer dans autocad,cependant on peut aussi aboutir au meme resultat et meme avoir une liaison interactive qui transmet les donnees dans les deux sens ('de la boite de dialogue du programme vers Autocad est vis versa)grace a la command Createobject,y'a un code sur l'aide d'Autocad pour son utilisation.
rahhal_ii
Messages postés6Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention 5 juillet 2007 12 oct. 2007 à 21:07
merci pour cette nouvelle facon de connecter autocad via VB,
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 12 oct. 2007 à 09:01
bonjour rahhal_II
aurais tu un exemple avec des "entrées utilisateurs"?
j'ai développé un autre exemple pour les liaisons dde (pas encore sur vbfrance) qui permet de récupérer la liste des calques et la liste des présentations, mais si je peux encore enrichir l'exemple avant de le diffuser, ce ne sera que mieux ;-)
merci.
rahhal_ii
Messages postés6Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention 5 juillet 2007 28 janv. 2007 à 17:41
slt
le moyen le plus simple est d'utiliser la commande createobject au lieu d'utiliser la commande shell,car elle permet des entrées utilisateurs tel que point de passage ,distance ...etc
cordialement rahhal
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 22 déc. 2006 à 13:02
voilà la raison pour laquelle je n'ai pas directement integré ce code dans mon projet.
je n'ai pas de pb sur mon pc, mais j'attendais d'avoir le retour sur d'autres postes.
mon avis: il faudrait cerner la ligne qui n'a pas fini de s'executer avant l'erreur et glisser un doevents ou un timer.
alkaesare
Messages postés5Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention22 décembre 2006 22 déc. 2006 à 09:26
bon en fait LD40 ton code marche trés bien, mais donne parfois le choix de basculer ou de réessayer. est ce qu'il n'y a pas un moyen plus subtile sans générer de problème.
merci
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 21 déc. 2006 à 21:54
voici un bout de code à mettre dans un module pour détecter la version autocad.
(Non testé pour Autocad LT)!!!
On Error Resume Next
Dim acad_object As Object
Dim s_version As String
Dim s_nom As String
Dim s_exe As String
Dim s_proc As String
Set acad_object = CreateObject("AUTOCAD.application") 'On recherche la version d'autocad installée
s_version = acad_object.Version
If InStr(1, s_version, ".") Then
s_version = Left(s_version, InStr(1, s_version, ".") - 1)
End If
s_version = "AutoCAD.r" + s_version + ".DDE|System"
s_nom = acad_object.FullName
s_exe = Replace(acad_object.FullName, acad_object.Path + "", "")
acad_object.Quit
Set acad_object = Nothing
MsgBox s_exe
MsgBox s_nom
MsgBox s_version
cs_Sebastien12
Messages postés23Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention23 mai 2007 16 déc. 2006 à 14:25
Bonjour,
Malheureusement Pat_60 je n'ai jamais réussi a faire fonctionner du DDE sous VB.net. En clair il à été supprimé par Microsoft.
Pour palier à ce problème, j'ai créé un executable
en VB6 qui est executé par mon programme VB.net avec les paramètres du tableau et les commandes à executer.
Quand à LD40 j'ai créé un programme en VB6 qui detectait toutes les versions d'Autocad et c'est assez compliqué puisqu'il faut utilisé les API Windows de la base de registre et les versions d'Autocad à détecter ne sont pas pratique (version multilanguage, ADT, MDT et j'en passe).
En vb.net ca serait plus simple avec le framework mais viendrait toujours se posé le problème du DDE ensuite.
J'essaye de trouver une solution pour régler tout ca mais je ne connait pas toutes les possibilités du framework V2.
Je me penche aussi sur les API ddeconnect, ddeinitialise etc.
Je dirai que je suis dans le même cas que vous pour VB.net.
Pour l'instant c'est du bricolage que je fais.
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 16 déc. 2006 à 11:34
si vous avez un module qui fonctionne avec toutes les versions autocad ça m'interesse pour l'intégrer dans ce projet.
De mon coté je me pose la question: utiliser le tableau de sebastien12 ou lire la base des registres et détecter toutes les versions installées...
Pat_60
Messages postés3Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention16 décembre 2006 16 déc. 2006 à 11:08
Bonjour,
Sebastien12, tu indiques les valeurs d'un tableau pour une connection DDE, pour VB.NET, comment effectue tu la liaison DDE sour VB.NET ?, sur VB6 pas de problème.
Je suis preneur d'une solution à ce sujet.
Merci
cs_Sebastien12
Messages postés23Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention23 mai 2007 14 déc. 2006 à 17:48
Bonjour,
J'ai créé un tableau qui permet de sélectionné la version d'Autocad.
La première valeur c'est la version d'Autocad que l'utilisateur possede et la deuxième c'est le paramétre envoyé en DDE.
alkaesare
Messages postés5Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention22 décembre 2006 14 déc. 2006 à 17:10
Bonjour, j'ai un probléme concernant la liaison autocad VB6, ceci est dû à la version d'autocad disponible sur le PC. ceci dij'aimerais bien qu'un connaisseur en la matiére me fournisse un code permettant la connexion depuis VB6 à toute version d'autocad.
merci d'avance, et bonne programmation à tous
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 6 sept. 2006 à 10:36
Bonjour,
je ne me suis pas mis à .net , donc je ne sais pas.
Par contre j'ai pas mal de question qui me parviennent sur Autocad en général. J'essayerai donc dans la prochaine mise à jour de completer avec un fichier aide et une liste de lien (forums, sites etc...)
Dores et déjà si vous avez des sites à recommander, vous pouvez me les communiquer.
Pat_60
Messages postés3Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention16 décembre 2006 5 sept. 2006 à 11:47
Bonjour,
DDE n'existe plus sous Dot.Net , y a t-il un equivalent ?
ibif
Messages postés2Date d'inscriptionlundi 24 avril 2006StatutMembreDernière intervention12 avril 2007 17 juil. 2006 à 13:49
bjr je voudrais savoir comment executer plusieurs fichiers script sous autocad avec vb
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 14 avril 2006 à 08:20
cet exemple a été rédigé pour démontrer plusieurs choses:
-on peut communiquer facilement avec l'interface graphique d'autocad
-on peut gérer des dessins complexes (ajoud, modification,suppression )depuis vb6 grace au moteur graphique d'autocad.
bien sûr pour créer des lignes, tu n'as pas besoin de la puissance d'autocad. La question est: "ai-je besoin de lignes, d'épaisseur de lignes, de textes, de couleurs, de hachures, de calques, d'exporter les données etc...?"
plus le besoin est grand, plus la tache est complexe sous vb6.
il existe plusieurs moteurs graphiques sous forme d'ocx pouvant être insérés dans vb6 ou plusieurs logiciels externes tel autocad, map info (microstation?,arcview?) qui communiquent avec vb6
comme je ne sais pas exactement ce que tu veux réaliser, je ne sais pas trop quoi te conseiller...
so1978
Messages postés1Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention14 avril 2006 14 avril 2006 à 03:37
j'esseye de cree une ligne sur vb6 pour un programme de dessin come en autocad de façon a la deplacee pendant que le programme fonctionne est ce possible ou je dois travaille avec un autre logiciel a partir de vb tels que le charger sur vb
merci
cs_LeVoleur
Messages postés15Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention11 juillet 2005 22 déc. 2004 à 10:51
Excellent code, simple
Utilisateur d'AutoCad, j'aime beaucoup
A mon boulot on a fait un prog de tuyauterie avec bloc crypté pout Lt mais je ne me rappelle plus si la méthode est la même que celle-ci
Je met une bonne note
Salut
cs_mathilde1
Messages postés3Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention23 novembre 2004 23 nov. 2004 à 21:23
id40
il faut arriver à créer des fonctions continues par exemple ax+b ou ax2 + bx +c programmées à partir de vb6 et visibles sur autocad 2004
le tableau de coordonnées (x,y) va créer des points, ce qui est peu intéressant
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 23 nov. 2004 à 21:07
ton programme vb6 peut déjà donner un tableau t(x,y)
ou il faut aussi programmer l'interpréteur de fonction?
cs_mathilde1
Messages postés3Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention23 novembre 2004 23 nov. 2004 à 20:54
id40
bonjour,
effectivement, c'est de pouvoir de visualiser sur autocad 2004 des fonctions y=f(x) programmées à partir de vb6
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 20 nov. 2004 à 18:56
mathilde1>
j'ai mis à jour mon code pour créer des polylignes dans autocad2002
si ça ne marche pas pour Autocad2004, recherche la ligne:
obj.LinkTopic = "AutoCAD.r15.DDE|System"
et essaye de la remplacer par:
obj.LinkTopic = "AutoCAD.r16.DDE|System"
Je n'ai pas bien compris ce que tu veux dire par "formules mathématiques de visual basic 6"
Dois je comprendre que tu veux visualiser des graphes y=f(x)?
Merci de préciser ton idée.
cs_mathilde1
Messages postés3Date d'inscriptionjeudi 18 novembre 2004StatutMembreDernière intervention23 novembre 2004 18 nov. 2004 à 20:50
bonjour,
comment peux-t-on créer la liaison entre autocad 2004 et visual basic 6 pour que la programmation dans visual basic 6 agisse sur les dessins dans autocad 2004 ? (par exemple pour créer des dessins dans autocad 2004 à partir des formules mathématiques de visual basic 6 )
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 2 août 2004 à 21:32
dx>
j'ai testé ce que tu propose comme code, le résultat est équivalent dans ma démo donc pas de pb.
j'ai mis à jour mon projet pour que tu puisses le tester.
Je bosse sur un projet plus concret (gestionnaire de calques & filtre rapide externe) cela permettra j'espère d'avoir le nom des calques dans l'ordre alphabétique dans une liste à la taille dynamique ;-)
Toutes suggestions sont les bienvenues.
cs_dx
Messages postés1Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 2 août 2004 2 août 2004 à 12:19
Bonjour
Je viens de telecharger le fichier zip, il est incomplet, il manque entre autre htmltotxt2.2\dlgbox.bas pour faire fonctionner ton prog..
Y a t il une difference par rapport à la methode :
Private Function LiasonAutocad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Function
End If
End If
acadApp.Visible = True
End Function
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 19 juil. 2004 à 13:22
merci scalpweb
un 7/10 semble indiquer que cet exemple n'est pas pleinement satisfaisant. Je reste à votre disposition pour toute question ou suggestion. ;-)
Scalpweb
Messages postés1467Date d'inscriptionsamedi 13 mars 2004StatutMembreDernière intervention 5 mai 20104 19 juil. 2004 à 13:18
Une source très interessante.
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 19 juil. 2004 à 13:03
ok oublions ce que j'ai dit sur aclt.tlb
cs_Sebastien12
Messages postés23Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention23 mai 2007 19 juil. 2004 à 12:22
Bonjour,
Le fichier Aclt.tlb n'existe pas sous Autocad Lt 2000,2000i, 2002, 2004 et 2005.
13 mai 2008 à 16:38
pourrait-on m'aider!!!
je n'arrive pas à extraire les attributs et les métrais d'autocad vers excel???
merci de votre aide
12 oct. 2007 à 21:21
le code est excellent,vous utiliser la commande shell pour connecter autocad,la commande est la meme pour le langage Autolisp incorporer dans autocad,cependant on peut aussi aboutir au meme resultat et meme avoir une liaison interactive qui transmet les donnees dans les deux sens ('de la boite de dialogue du programme vers Autocad est vis versa)grace a la command Createobject,y'a un code sur l'aide d'Autocad pour son utilisation.
12 oct. 2007 à 21:07
12 oct. 2007 à 09:01
aurais tu un exemple avec des "entrées utilisateurs"?
j'ai développé un autre exemple pour les liaisons dde (pas encore sur vbfrance) qui permet de récupérer la liste des calques et la liste des présentations, mais si je peux encore enrichir l'exemple avant de le diffuser, ce ne sera que mieux ;-)
merci.
28 janv. 2007 à 17:41
le moyen le plus simple est d'utiliser la commande createobject au lieu d'utiliser la commande shell,car elle permet des entrées utilisateurs tel que point de passage ,distance ...etc
cordialement rahhal
22 déc. 2006 à 13:02
je n'ai pas de pb sur mon pc, mais j'attendais d'avoir le retour sur d'autres postes.
mon avis: il faudrait cerner la ligne qui n'a pas fini de s'executer avant l'erreur et glisser un doevents ou un timer.
genre...
s_exe = Replace(acad_object.FullName, acad_object.Path + "", "")
doevents
acad_object.Quit
doevents
22 déc. 2006 à 09:26
merci
21 déc. 2006 à 21:54
(Non testé pour Autocad LT)!!!
On Error Resume Next
Dim acad_object As Object
Dim s_version As String
Dim s_nom As String
Dim s_exe As String
Dim s_proc As String
Set acad_object = CreateObject("AUTOCAD.application") 'On recherche la version d'autocad installée
s_version = acad_object.Version
If InStr(1, s_version, ".") Then
s_version = Left(s_version, InStr(1, s_version, ".") - 1)
End If
s_version = "AutoCAD.r" + s_version + ".DDE|System"
s_nom = acad_object.FullName
s_exe = Replace(acad_object.FullName, acad_object.Path + "", "")
acad_object.Quit
Set acad_object = Nothing
MsgBox s_exe
MsgBox s_nom
MsgBox s_version
16 déc. 2006 à 14:25
Malheureusement Pat_60 je n'ai jamais réussi a faire fonctionner du DDE sous VB.net. En clair il à été supprimé par Microsoft.
Pour palier à ce problème, j'ai créé un executable
en VB6 qui est executé par mon programme VB.net avec les paramètres du tableau et les commandes à executer.
Quand à LD40 j'ai créé un programme en VB6 qui detectait toutes les versions d'Autocad et c'est assez compliqué puisqu'il faut utilisé les API Windows de la base de registre et les versions d'Autocad à détecter ne sont pas pratique (version multilanguage, ADT, MDT et j'en passe).
En vb.net ca serait plus simple avec le framework mais viendrait toujours se posé le problème du DDE ensuite.
J'essaye de trouver une solution pour régler tout ca mais je ne connait pas toutes les possibilités du framework V2.
Je me penche aussi sur les API ddeconnect, ddeinitialise etc.
Je dirai que je suis dans le même cas que vous pour VB.net.
Pour l'instant c'est du bricolage que je fais.
16 déc. 2006 à 11:34
De mon coté je me pose la question: utiliser le tableau de sebastien12 ou lire la base des registres et détecter toutes les versions installées...
16 déc. 2006 à 11:08
Sebastien12, tu indiques les valeurs d'un tableau pour une connection DDE, pour VB.NET, comment effectue tu la liaison DDE sour VB.NET ?, sur VB6 pas de problème.
Je suis preneur d'une solution à ce sujet.
Merci
14 déc. 2006 à 17:48
J'ai créé un tableau qui permet de sélectionné la version d'Autocad.
La première valeur c'est la version d'Autocad que l'utilisateur possede et la deuxième c'est le paramétre envoyé en DDE.
Public VERSIONS_AUTOCAD As String(,) = {{"Autocad LT", "Autocad LT.DDE|System"}, {"Autocad 2000, 2000i, 2002", "Autocad R15.DDE|System"}, {"Autocad 2004, 2005, 2006", "Autocad R16.DDE|System"}, {"Autocad 2007, 2008 Béta", "Autocad R17.DDE|System"}}
Attention: Ceci est du VB.net
14 déc. 2006 à 17:10
merci d'avance, et bonne programmation à tous
6 sept. 2006 à 10:36
je ne me suis pas mis à .net , donc je ne sais pas.
Par contre j'ai pas mal de question qui me parviennent sur Autocad en général. J'essayerai donc dans la prochaine mise à jour de completer avec un fichier aide et une liste de lien (forums, sites etc...)
Dores et déjà si vous avez des sites à recommander, vous pouvez me les communiquer.
5 sept. 2006 à 11:47
DDE n'existe plus sous Dot.Net , y a t-il un equivalent ?
17 juil. 2006 à 13:49
14 avril 2006 à 08:20
-on peut communiquer facilement avec l'interface graphique d'autocad
-on peut gérer des dessins complexes (ajoud, modification,suppression )depuis vb6 grace au moteur graphique d'autocad.
bien sûr pour créer des lignes, tu n'as pas besoin de la puissance d'autocad. La question est: "ai-je besoin de lignes, d'épaisseur de lignes, de textes, de couleurs, de hachures, de calques, d'exporter les données etc...?"
plus le besoin est grand, plus la tache est complexe sous vb6.
il existe plusieurs moteurs graphiques sous forme d'ocx pouvant être insérés dans vb6 ou plusieurs logiciels externes tel autocad, map info (microstation?,arcview?) qui communiquent avec vb6
comme je ne sais pas exactement ce que tu veux réaliser, je ne sais pas trop quoi te conseiller...
14 avril 2006 à 03:37
merci
22 déc. 2004 à 10:51
Utilisateur d'AutoCad, j'aime beaucoup
A mon boulot on a fait un prog de tuyauterie avec bloc crypté pout Lt mais je ne me rappelle plus si la méthode est la même que celle-ci
Je met une bonne note
Salut
23 nov. 2004 à 21:23
il faut arriver à créer des fonctions continues par exemple ax+b ou ax2 + bx +c programmées à partir de vb6 et visibles sur autocad 2004
le tableau de coordonnées (x,y) va créer des points, ce qui est peu intéressant
23 nov. 2004 à 21:07
ou il faut aussi programmer l'interpréteur de fonction?
23 nov. 2004 à 20:54
bonjour,
effectivement, c'est de pouvoir de visualiser sur autocad 2004 des fonctions y=f(x) programmées à partir de vb6
20 nov. 2004 à 18:56
j'ai mis à jour mon code pour créer des polylignes dans autocad2002
si ça ne marche pas pour Autocad2004, recherche la ligne:
obj.LinkTopic = "AutoCAD.r15.DDE|System"
et essaye de la remplacer par:
obj.LinkTopic = "AutoCAD.r16.DDE|System"
Je n'ai pas bien compris ce que tu veux dire par "formules mathématiques de visual basic 6"
Dois je comprendre que tu veux visualiser des graphes y=f(x)?
Merci de préciser ton idée.
18 nov. 2004 à 20:50
comment peux-t-on créer la liaison entre autocad 2004 et visual basic 6 pour que la programmation dans visual basic 6 agisse sur les dessins dans autocad 2004 ? (par exemple pour créer des dessins dans autocad 2004 à partir des formules mathématiques de visual basic 6 )
2 août 2004 à 21:32
j'ai testé ce que tu propose comme code, le résultat est équivalent dans ma démo donc pas de pb.
j'ai mis à jour mon projet pour que tu puisses le tester.
Je bosse sur un projet plus concret (gestionnaire de calques & filtre rapide externe) cela permettra j'espère d'avoir le nom des calques dans l'ordre alphabétique dans une liste à la taille dynamique ;-)
Toutes suggestions sont les bienvenues.
2 août 2004 à 12:19
Je viens de telecharger le fichier zip, il est incomplet, il manque entre autre htmltotxt2.2\dlgbox.bas pour faire fonctionner ton prog..
Y a t il une difference par rapport à la methode :
Private Function LiasonAutocad()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Function
End If
End If
acadApp.Visible = True
End Function
19 juil. 2004 à 13:22
un 7/10 semble indiquer que cet exemple n'est pas pleinement satisfaisant. Je reste à votre disposition pour toute question ou suggestion. ;-)
19 juil. 2004 à 13:18
19 juil. 2004 à 13:03
19 juil. 2004 à 12:22
Le fichier Aclt.tlb n'existe pas sous Autocad Lt 2000,2000i, 2002, 2004 et 2005.
Sébastien