Aller au contenu

VB.NET sous Autocad 2010


Messages recommandés

Posté(e)

Bonjour

 

J'ai jusqu'à ce jour programmé en VBA. VBA étant menacé avec les nouvelles versions d'Autocad, je veux transférer donc mes programmes sous VB.NET mais comment procéder ?. Comment charge_t_on un prog.écrit et compilé sous visual studio. Existe_t_il des tutos. Quelqu'un peut_il me mettre le pied à l'étrier ?

 

merci de votre aide

 

Eagle4

Regarde devant, derrière apporte des regrets, les côtés envies et jalousie

  • 3 semaines après...
Posté(e)

Salut,

 

Je suis un peu en retard mais ..

 

Déja tu es pas dans la bonne rubrique,ce qui explique peut etre la non réponse a ta question.

Ensuite pour les tutos,je ne sais pas.

Visual studio crée des .dll ... ces dll sont a charger dans AutoCAD via la commande NETLOAD a chaque ouverture de session autocad.

Un DLL se charge pour la session et ne se décharge pas.

Tu peux éventuellement charger tes dll automatiquement via un lisp ....

 

Concernant le passage de vba a vb.net .... le concept des deux language est différent et l'approche aussi ....

Alors pour ta demande,selon moi :

-Créer un projet de type library dans visual studio.

-Ajouter les références COM a AutoCAD dans ton projet ( AutoCAD Type Library et Autocad/objectdbx common )

-Ajouter les dll acmgd et acdbmgd qui se trouve dans le répertoire d'installation d'autocad

-Ajouter ton code dans ta classe.

 

De base,sans trop te prendre la tete,tu fais un simple copier coller de ton code vba dans vb.net et sa devrait pas trop mal se passer ...

Maintenant,je te conseillerai plutot de migrer le code correctement plutot que de faire ce que je cite ci dessus.

 

Cordialement,

 

  • 9 mois après...
Posté(e) (modifié)

Je viens de me mettre au vb.net mais je ne trouve pas de dll à charger... J'utilise visual studio express 2010, il génère un exécutable, mais pas de DLL. Comme c'est un programme simple (genre Hello world), je n'ai pas chargé de librairie AutoCAD. Faut t-il absolument les charger pour avoir une dll exploitable par AutoCAD ?

 

Merci,

 

JM

Modifié par didier
suppression de la citation
Posté(e)

Salut OtObOx,

 

À lire ta question, on comprend bien que tu débutes complètement avec .NET.

Alors, oublie AutoCAD pour l'instant et apprends les bases de .NET dans l'environnement Windows, il existe de nombreux tutos et livres. Tu apprendras comment générer un exe ou une dll, comment référencer des dll existantes nécessaires à ton projet.

 

Ensuite seulement, attaque toi à la programmation d'AutoCAD, Tony Tanzillo disait qu'il fallait passer un an à étudier l'architecture .NET avant de programmer AutoCAD, sans aller aussi loin (malgré la totale confiance qu'on peut faire au monsieur) cet apprentissage est indispensable.

 

Tu ne te poseras plus, alors la question de pourquoi et comment il faut nécessairement référencer les bibliothèques de classes (dll) spécifiques à AutoCAD pour programmer AutoCAD.

 

 

PS: j'avais répondu à la même demande ici.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut OtObOx,

 

À lire ta question, on comprend bien que tu débutes complètement avec .NET.

Alors, oublie AutoCAD pour l'instant et apprends les bases de .NET dans l'environnement Windows, il existe de nombreux tutos et livres. Tu apprendras comment générer un exe ou une dll, comment référencer des dll existantes nécessaires à ton projet.

Merci pour ta réponse :)

 

J'ai déjà quelques bases en programmation, mais le langage que je maitrise le mieux est le vba que j'ai utilisé sous Office, mais aussi AutoCAD et Solidworks.

J'ai aussi bidouillé sous Delphi et un peu de Java.

 

Le conseil d'apprendre l'architecture .net est certe judicieux, mais c'est maintenant que j'ai besoin de l'utiliser !

Et la meilleure façon d'apprendre est de pratiquer, et je pense que la meilleure façon de le faire, c'est de traiter des cas concrets et de résoudre les problèmes quand on les rencontre.

Et petit à petit, on s'autorise à aller plus loin, être plus ambitieux.

Pour l'instant, loin de moi la volonté de traiter des problèmes complexe, comme le dessin d'un escalier métallique paramétré en 3d avec sortie des pièces tôles développées, comme j'ai pu le faire avec vba.

Un simple affichage d'une fenêtre Hello world me conviendrait pour le moment !

 

Pour l'instant, l'appli que j'ai faite sous vb.net charge le chemin (l'URL) d'un fichier quelconque sur un disque (soit par bouton Sélectionner fichier ou simplment en glissant son icone dans l'appli ou sur l'icone de l'exécutable) et après que l'utilisateur a complété des champs formatés représentant le numéro du document, copie ou déplace le fichier dans un répertoire dépendant du numéro du document.

Ca fonctionne nickel, avec gestion des erreurs et compagnie :)

 

Maintenant, ce que j'aimerais faire, c'est utiliser cette appli, qui fonctionne en "standalone" pour enregistrer le document actif d'ACAD. En gros, que le paramètres reçu par l'appli quand on glisse un icone dans le programme soit remplacé par le chemin du document AutoCAD, que l'appli détecte que ce paramètre vienne d'ACAD pour ensuite enregistrer dans le bon répertoire le dessin.

 

J'ai déjà une idée de la procédure en tête, mais il faudrait que je puisse faire reconnaitre ce programme par AutoCAD.

 

OtO

Posté(e)

Si ton appli est "standalone", tu es obligé d'utiliser l'interface COM (que tu dois connaitre si tu as fait du VBA), l'API AutoCAD .NET ne fonctionne qu'en mode "in-process" (voir AutoCAD .NET Developer's Guide).

 

L'inconvénient de l'interface COM est qu'elle est dépendante des versions et de l’architecture processeur (32 ou 64 bits) en fonction de la DLL référencée pour Autodesk.AutoCAD.Interop.

Le moyen de contourner ça est d'utiliser la liaison tardive (late binding) ce qui évite d'avoir à référencer une DLL AutoCAD.

 

Il faudra quand même obtenir le processus AutoCAD courant (si une session est ouverte) ou en lancer un.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

C'est ton premier message qui m'a laissé penser que tu débutais vraiment avec .NET pour AutoCAD.

 

Je viens de me mettre au vb.net mais je ne trouve pas de dll à charger...

Les bibliothèques à charger (référencer) pour AutoCAD se trouvent dans le répertoire d'installation d'AutoCAD.

Ou, mieux, en installant ObjectARX dans le quel tu trouveras un dossier inc (ou inc-win32 et inc-x64 suivant les versions). Tu y trouverans aussi la doumentation pour l'API .nET d'AutoCAD (docs\arxmgd.chm).

 

J'utilise visual studio express 2010, il génère un exécutable, mais pas de DLL.

Pour générer une dll, il faut que ton projet Visual Studio soit de type : Bibliothèque de classes.

 

Comme c'est un programme simple (genre Hello world), je n'ai pas chargé de librairie AutoCAD. Faut t-il absolument les charger pour avoir une dll exploitable par AutoCAD ?

Pour faire un programme .NET utilisable depuis AutoCAD (une nouvelle commande, par exemple), il faut absolument référencer au moins acdbmgd.dll et acmgd.dll.

 

Rapidement, la procédure pour définir une commande AutoCAD "HelloWorld" :

 

- dans Visual Studio démarrer un nouveau projet de type "Bibliothèque de classes" ;

- ajouter les références aux bibliothèques AutoCAD acdbmgd.dll et acmgd.dll ;

- dans les propriétés de ces références, mettre la propriété Copy local à False (les chemins des références ne servent qu'à Visual Studio, le programme retrouvera les bibliothèques dans le Global Assembly Cache (GAC) du poste client).

- dans le code, importer les espaces de nom : Autodesk.AutoCAD.ApplicationServices, Autodesk.AutoCAD.EditorInput et Autodesk.AutoCAD.Runtime, ce qui évite d'avoir à entre le "chemin" complet des classes utilisées (en général on importe aussi au moins Autodesk.AutoCAD.DatabaseServices qui n'est pas nécessaire ici) ;

- entrer le code en utilisant l'attribut CommandMethod pour que la méthode soit considérée comme une nouvelle commande AutoCAD.

- générer la solution ;

- ouvrir AutoCAD ;

- charger la dll avec la commande NETLOAD ;

- lancer la commande HELLOWORLD.

 

Le code VB :

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime

Namespace HelloWorldSample

   Public Class HelloWorld

       <CommandMethod("HelloWorld")> _
       Public Sub HelloWorldCmd()
           Dim doc As Document = Application.DocumentManager.MdiActiveDocument
           Dim ed As Editor = doc.Editor
           ed.WriteMessage("Hello world")
       End Sub

   End Class

End Namespace

 

Le code C# :

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

namespace HelloWorldSample
{
   public class HelloWorld
   {
       [CommandMethod("HelloWorld")]
       public void HelloWorldCmd()
       {
           Document doc = Application.DocumentManager.MdiActiveDocument;
           Editor ed = doc.Editor;
           ed.WriteMessage("Hello world");
       }
   }
}

 

Le code F#

module HelloWorldSample

open Autodesk.AutoCAD.ApplicationServices
open Autodesk.AutoCAD.EditorInput
open Autodesk.AutoCAD.Runtime

[<CommandMethod("HelloWorld")>]
let Test() =
   let doc = Application.DocumentManager.MdiActiveDocument
   let ed = doc.Editor
   ed.WriteMessage("Hello world")

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

N'hésite pas à poser des questions, j'essayerais de t'aider (si ça ne concerne pas VB spécifiquement que je connais mal).

 

Tu trouveras sur AcadLabs, qui est plus dédié à la programmation d'AutoCAD, un tutoriel que j'avais essayé de faire pour les premiers pas avec .NET pour AutoCAD. Ce tutoriel commençait avec l'utilisation d'un applicatif qui facilite le démarrage d'une application AutoCAD dans Visual Studio (Express compris) grâce à un modèle dédié. Malheureusement, cet applicatif ne fonctionne qu'avec les version 2008 de Visual Studio.

J'ai donc donné une explication pour créer un modèle AutoCAD pour Visual Studio 2010.

 

PS : j'ai aussi des week-end passionnants (ou passionnés).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 4 semaines après...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité