LIAISON VB6 <> AUTOCAD GRACE À ACAD.TLB OU ACAX16ENU.TLB OU ACAX17ENU.TLB

cs_Sebastien12 Messages postés 23 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 23 mai 2007 - 19 juil. 2004 à 12:22
flavio31 Messages postés 1 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 13 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.

https://codes-sources.commentcamarche.net/source/24683-liaison-vb6-autocad-grace-a-acad-tlb-ou-acax16enu-tlb-ou-acax17enu-tlb

flavio31 Messages postés 1 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 13 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és 6 Date d'inscription lundi 25 décembre 2006 Statut Membre Derniè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és 6 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 5 juillet 2007
12 oct. 2007 à 21:07
merci pour cette nouvelle facon de connecter autocad via VB,
ld40 Messages postés 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 6 Date d'inscription lundi 25 décembre 2006 Statut Membre Derniè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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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.

genre...
s_exe = Replace(acad_object.FullName, acad_object.Path + "", "")
doevents
acad_object.Quit
doevents
alkaesare Messages postés 5 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 22 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 23 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 23 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 3 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 16 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és 23 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 23 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.

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
alkaesare Messages postés 5 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 22 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 3 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 16 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és 2 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 12 avril 2007
17 juil. 2006 à 13:49
bjr je voudrais savoir comment executer plusieurs fichiers script sous autocad avec vb
ld40 Messages postés 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 1 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 14 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és 15 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 11 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és 3 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 23 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 3 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 23 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 3 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 23 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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 1 Date d'inscription lundi 7 juin 2004 Statut Membre Derniè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és 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
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és 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
19 juil. 2004 à 13:18
Une source très interessante.
ld40 Messages postés 336 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 22 février 2019 1
19 juil. 2004 à 13:03
ok oublions ce que j'ai dit sur aclt.tlb
cs_Sebastien12 Messages postés 23 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 23 mai 2007
19 juil. 2004 à 12:22
Bonjour,

Le fichier Aclt.tlb n'existe pas sous Autocad Lt 2000,2000i, 2002, 2004 et 2005.

Sébastien
Rejoignez-nous