Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :OLE, DDE, Automation Niveau : Débutant Date de création : 18/07/2004 Date de mise à jour : 05/04/2007 19:01:18 Vu / téléchargé: 21 245 / 1 666

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (30)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
J'ai cherché sur vbfrance un moyen de dialoguer avec Autocad
et je n'ai trouvé que du code par liaison DDE

Alors je vous propose en plus de l'exemple de Papy04, d'utiliser acad.tlb
pour établir un dialogue entre votre application vb6 et autocad.

source origine
-------------------------------------------
Papy04>
http://www.vbfrance.com/code.aspx?ID=8276
-------------------------------------------

##############################################
acad.tlb >pour Autocad 2000\2002 installé avec acad.exe

acax16enu.tlb > pour Autocad 2004\2005\2006 installé sous
c:\program files\fichiers communs\autodesk shared\acax16enu.tlb
ou c:\program files\common files\autodesk shared\acax16enu.tlb

acax17enu.tlb > pour Autocad 2007\2008 installé sous
c:\program files\fichiers communs\autodesk shared\acax17enu.tlb
ou c:\program files\common files\autodesk shared\acax17enu.tlb


##############################################

 

Conclusion

Ouvrez autocad depuis l'application vb pour établir un dialogue correct.

L'exemple ci-joint créé un cercle par liaison dde

Puis crée un second cercle grâce à acad.tlb avant de sélectionner et compter tous les objets du dessin autocad.

le code exploitant Acad.tlb doit être suffisant pour vous aider à démarrer dans la programmation d'applications liant vb6<>autocad.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

19 juillet 2004 13:20:14 :
élimination des allusions à aclt.tlb (fichier que j'ai sur mon poste mais qui visiblement n'est pas d'origine sur Autocad LT)
02 août 2004 13:25:41 :
ajout du fichier manquant dialog.bas
20 novembre 2004 18:50:05 :
ajout d'un exemple pour créer des polylignes dans autocad (+couleur +epaisseur)
05 avril 2007 19:01:18 :
ajout des informations relatives aux autocad 2004\2005\2006\2007\... dans la présentation

Commentaires et avis

signaler à un administrateur
Commentaire de Sebastien12 le 19/07/2004 12:22:02

Bonjour,

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

Sébastien

signaler à un administrateur
Commentaire de ld40 le 19/07/2004 13:03:55

ok oublions ce que j'ai dit sur aclt.tlb

signaler à un administrateur
Commentaire de Scalpweb le 19/07/2004 13:18:58

Une source très interessante.

signaler à un administrateur
Commentaire de ld40 le 19/07/2004 13:22:55

merci scalpweb

un 7/10 semble indiquer que cet exemple n'est pas pleinement satisfaisant. Je reste à votre disposition pour toute question ou suggestion. ;-)

signaler à un administrateur
Commentaire de dx le 02/08/2004 12:19:26

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

signaler à un administrateur
Commentaire de ld40 le 02/08/2004 21:32:34

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.

signaler à un administrateur
Commentaire de mathilde1 le 18/11/2004 20:50:22

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 )

signaler à un administrateur
Commentaire de ld40 le 20/11/2004 18:56:15

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.

signaler à un administrateur
Commentaire de mathilde1 le 23/11/2004 20:54:12

id40

bonjour,
effectivement, c'est de pouvoir de visualiser sur autocad 2004 des fonctions y=f(x) programmées à partir de vb6

signaler à un administrateur
Commentaire de ld40 le 23/11/2004 21:07:52

ton programme vb6 peut déjà donner un tableau t(x,y)

ou il faut aussi programmer l'interpréteur de fonction?

signaler à un administrateur
Commentaire de mathilde1 le 23/11/2004 21:23:28

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

signaler à un administrateur
Commentaire de LeVoleur le 22/12/2004 10:51:03

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

signaler à un administrateur
Commentaire de so1978 le 14/04/2006 03:37:15

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

signaler à un administrateur
Commentaire de ld40 le 14/04/2006 08:20:29

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...

signaler à un administrateur
Commentaire de ibif le 17/07/2006 13:49:49

bjr je voudrais savoir comment executer plusieurs fichiers script sous autocad avec vb

signaler à un administrateur
Commentaire de Pat_60 le 05/09/2006 11:47:20

Bonjour,

DDE n'existe plus sous Dot.Net , y a t-il un equivalent ?

signaler à un administrateur
Commentaire de ld40 le 06/09/2006 10:36:34

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.

signaler à un administrateur
Commentaire de alkaesare le 14/12/2006 17:10:01

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

signaler à un administrateur
Commentaire de Sebastien12 le 14/12/2006 17:48:51

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

signaler à un administrateur
Commentaire de Pat_60 le 16/12/2006 11:08:33

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

signaler à un administrateur
Commentaire de ld40 le 16/12/2006 11:34:00

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...

signaler à un administrateur
Commentaire de Sebastien12 le 16/12/2006 14:25:10

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.

signaler à un administrateur
Commentaire de ld40 le 21/12/2006 21:54:53

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

signaler à un administrateur
Commentaire de alkaesare le 22/12/2006 09:26:52

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

signaler à un administrateur
Commentaire de ld40 le 22/12/2006 13:02:40

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

signaler à un administrateur
Commentaire de rahhal_ii le 28/01/2007 17:41:39

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

signaler à un administrateur
Commentaire de ld40 le 12/10/2007 09:01:07

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.

signaler à un administrateur
Commentaire de rahhal_ii le 12/10/2007 21:07:07

merci pour cette nouvelle facon de connecter autocad via VB,

signaler à un administrateur
Commentaire de rahhal_ii le 12/10/2007 21:21:43

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.

signaler à un administrateur
Commentaire de flavio31 le 13/05/2008 16:38:59

salut
pourrait-on m'aider!!!
je n'arrive pas à extraire les attributs et les métrais d'autocad vers excel???
merci de votre aide

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.