Aller au contenu

Démarrer avec AutoCAD .NET


Messages recommandés

Salut,

 

Je voudrais ici essayer de partager ma petite expérience avec AutoCAD .NET pour aider ceux qui voudraient (ou seraient contraints) se lancer dans l'aventure.

Sans vouloir décourager personne, je dois quand même préciser que si la puissance est au rendez vous avec .NET, on ne joue plus dans la même cour qu'avec AutoLISP ou VBA. La courbe d'apprentissage sera plus exigeante et plus longue.

 

Avant tout, je pense sincèrement qu'il est indispensable d'avoir au moins des bases élémentaires en .NET dans l'environnement Windows -ainsi que des notions de Programmation Orientée Objet (POO)- avant de se lancer dans la programmation d'AutoCAD avec .NET.

 

Choix du langage

Une des caractéristiques de .NET est de supporter plusieurs langages.

Les plus utilisés sont : C# qui a été développé spécialement pour .NET, VB.net qui est l'adaptation de l'ancien VB6 à la plateforme .NET.

Il s'agit donc dans un premier temps de choisir un de ces langage (à moins de vouloir apprendre les deux simultanément).

Les différences relèvent principalement de la syntaxe (excepté certaines dues à deux équipes de développement différentes et à la volonté de conserver certains comportements caractéristiques du VB6 en VB.net, mais ça dépasse le cadre de ce sujet, voir ici).

On peut trouver un comparateur des syntaxes C# et VB ici et un autre qui compare aussi VB(A) pour AutoCAD .

Ceux qui viennent du VBA seront naturellement tenté de choisir VB pensant qu'il seront au moins en terrain connu avec la syntaxe. Je ne suis pas du tout convaincu que ce soit un choix judicieux. Il est important de comprendre que malgré les similitudes syntaxiques, VB est très différent de l'ancien VB(A) et est beaucoup plus proche de C#. En choisissant plutôt C# que VB, le programmeur VBA se retrouvera sur un terrain complètement nouveau (ce qui est le cas) et ne sera pas tenté d'essayer de faire du VBA en .NET (ce qui, en général, ne marche pas).

Ne pas perdre de vue que l'apprentissage d'un nouveau langage (d'une syntaxe) est vraiment peu de chose à côté de l'apprentissage de la plateforme .NET et de la POO.

Personnellement, quand j'ai commencé, j'ai choisi C# parce qu'on trouvait plus d'exmples en C# qu'en VB pour AutoCAD (c'est toujours le cas, même si l'écart est aujourd'hui moins important) et parce que je trouve la syntaxe moins verbeuse.

 

Choix de l'environnement de développement

Donc, dans un premier temps, télécharger et installer un Environnement de Programmation Intégré (IDE) qui sera indépendant d'AutoCAD.

Il existe de nombreux IDE pour .NET mais Visual Studio est le plus répendu et les versions Express gratuites Visual C# Express ou Visual VB Express sont très largement suffisantes pour la plupart des programmeurs non professionels.

 

Apprentissage de .NET

Comme je le disais en préhembule, il est, à mon avis indispensable d'acquérir les bases de la programmation .NET et de la POO dans Windows avant de se lancer dans la programmation d'AutoCAD, même si, pour beaucoup d'entre nous, c'est le but

On trouvera de nombreux tutoriels sur le net dont les Coaches MSDN : Coach C# et Coach Visual Basic.

Il existe aussi de nombreux livres, je trouve que ceux de Thierry Groussard (Visual Basic 2010 (VB.NET) - Les fondamentaux du langage - Développer avec Visual Studio 2010 et C# - Les fondamentaux du langage - Développer avec Visual Studio 2010) sont assez bien fait et expliquent bien la POO.

La source principale de documentation sur le net est fournie par MSDN (Visual C# et Visual Basic ainsi que l'immense Bibliothèque de classes .NET Framework.

 

Programmer AutoCAD

Une fois familiarisé avec Visual Studio et l'environnement .NET, on peut s'attaquer plus sereinement à la programmation d'AutoCAD.

Là encore on trouvera quelques tutoriaux (en anglais) : AutoCAD .NET Training et My First Plug-in Training (le tuto est pour VB, mais on trouvera une traduction des codes en C# ici), et, en français, des tutoriels pour créer un modèle de projet Visual Studio C#, F# ou VB pour AutoCAD sur cette page.

L'incontournable et indispensable AutoCAD .NET Developer's Guide.

On trouvera les biblothèques de classe de l'API AutoCAD .NET le fichier : docs\arxmgd.chm qu'on trouvera dans la version d'ObjectARX qu'on n'aura pas manqué d'installer.

 

Ne manquez pas de poster critiques, questions, etc.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 1 mois après...

Bonjour,

 

Je voudrais me remettre à la programmation sur autocad. Il y a quelques années j'ai developpé quelques procedures en VBA. j'ai commencé à me documenter sur .net, c#, objectarx, wizards, etc.. mais suis bloqué sur les outils à installer. Pouvez vous m'eclairer sur les combinaisons à utiliser ? par exemple Visual C# express 2010 ou 2008 avec quel autocad, quelle version d'arx ou des wizards .NET?

 

Merci pour votre aide

Modifié par Tramber
quote inutile
Lien vers le commentaire
Partager sur d’autres sites

Salut et bienvenue,

 

Les versions de Visual Studio sont basées sur des versions du Framework NET (pour VS2005 c'est le Framework 2.0, pour VS2008 : 3.0/3.5 et pour VS2010 : 4.0) mais les versions de VS plus récentes peuvent très bien cibler des Frameworks plus anciens.

Donc avec VS2010, on peut très bien développer des applications basées sur le Framework 2.0.

 

Les différentes versions d'ObjectARX (plus précisément, les bibliothèques -DLL- de l'API .NET AutoCAD) sont aussi basées sur différentes versions de Framework :

A2007-2009 : Fw 2.0

A2010-2011 : Fw 3.5

A2012-2013 : Fw 4.0

Excepté pour A2013 qui requiert impérativement d'utiliser le Fw 4.0 et ObjectARX 2013, une application ciblant le Fw 2.0 et ObjectARX 2007 fonctionnera pour toutes les versions d'AutoCAD de 2007 à 2012 (il existe de très rares exceptions avec certaines classes qui ont été modifiées depuis A2010).

 

En résumé, avec VS2010, on peut faire plus large qu'avec VS2008*, la compatibilité de l'application dépend essentiellement de la version d'ObjectARX ciblée (et du Framework correspondant).

 

Pour des renseignements plus complets, voir le billet de Serge Camiré sur Augifr.

 

 

* toutefois VS2008 possède un utilitaire de migration de code VB6 en VB.net qui n'existe plus dans VS2010.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Salut,

 

Je voudrais ici essayer de partager ma petite expérience avec AutoCAD .NET pour aider ceux qui voudraient (ou seraient contraints) se lancer dans l'aventure.

Sans vouloir décourager personne, je dois quand même préciser que si la puissance est au rendez vous avec .NET, on ne joue plus dans la même cour qu'avec AutoLISP ou VBA. La courbe d'apprentissage sera plus exigeante et plus longue.

 

[...]

 

Bonjour, merci pour le post malgré quelques liens qui font erreur 404 - Not found, à partir de "Créer un modèle AutoCAD pour Visual Studio 2010".

Après avoir visiter les sources d'infos en général, j'ai l'impression d'avoir une confusion sur ce que le .NET peut vraiment faire: est-ce que VB.NET peut générer des Zrx dans Visual Studio comme avec C++ ou bien quelle est la vraie différence entre les deux? Est-ce toujours la commande NetLoad qu'on utilise pour lancer des programmes pour Autocad, fait en .NET? Merci de bien vouloir m'éclaircir là-dessus

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Oui les liens vers les articles que j'avais fait dans AcadLabs sont rompus depuis que ce site est fermé.

On peut retouver les tutos pour créer des modèles de projet en C# et VB sur cette page.

 

Non, on ne peut faire d'ARX (ZRX) en .NET (uniquement des DLL). La principale différence entre .NET et ObjectARX/C++ est, à mon avis l'ipossibilité en .NET de créer des objets personnalisés.

 

Oui, c'est toujours la commande NETLOAD qui est utilisée pour carger une application .NET dans AutoCAD mais il existe des méthode de chargement automatiques via la base de registre ou le mécanisme Autoloader (voir ici).

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

[...]

 

Non, on ne peut faire d'ARX (ZRX) en .NET (uniquement des DLL). La principale différence entre .NET et ObjectARX/C++ est, à mon avis l'ipossibilité en .NET de créer des objets personnalisés.

 

 

Merci pour votre réponse, je commence déjà à beaucoup discerner ces deux ;) , mais qu'entendez vous par "objets personnalisés", pouvez-vous me donner un exemple clair et facile.

Lien vers le commentaire
Partager sur d’autres sites

 

Non, on ne peut faire d'ARX (ZRX) en .NET (uniquement des DLL). La principale différence entre .NET et ObjectARX/C++ est, à mon avis l'ipossibilité en .NET de créer des objets personnalisés.

 

 

Merci pour les liens, j'aimerai aussi connaître si l'on peut insérer des instructions Lisp/Vlisp dans un programme fait en VB.NET, et comment le faire si cela est possible (syntaxe,...).

 

Dans ZwCad, est-ce qu'il y aurait un guide d'utilisateur de développement .Net? je voudrais trouver les classes, attribut, méthodes propres à ZwCad.

 

Merci encore.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Oui les liens vers les articles que j'avais fait dans AcadLabs sont rompus depuis que ce site est fermé.

j'en suis désolé mais depuis le "clash" sur le serveur de mon fils je ne m'y suis pas remis

j'ai l'intention de faire renaître le site mais je ne sais pas la réelle demande, ce site parlera à 99 % de programmation AutoCAD

pour info je viens de me faire bouter par un éditeur lui ayant proposé mon "livre" de programmation (AutoLISP) au prétexte que le "marché" est trop restreint.

j'en ai plus de cent cinquante pages ... que je garde au chaud pour didacticiel pour le site (si site il y a)

tenez-moi au courant des demandes et je relancerai mon fils pour le site dédié. le cas échéant

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

j'aimerai aussi connaître si l'on peut insérer des instructions Lisp/Vlisp dans un programme fait en VB.NET, et comment le faire si cela est possible (syntaxe,...).

 

Je ne connais pas l'API .NET de ZwCAD, mais dans celle d'AutoCAD on peut le faire.

S'il s'agit juste de lancer une procédure LISP, on peut utiliser les méthodes d'appel de commandes.

S'il s'agit d'appeler une fonction LISP pour récupérer sa valeur de retour, depuis AutoCAD 2011, on peut utiliser la méthode statique Application.Invoke() (pour être exposée à une application extérieure, la fonction LISP doit être enregistrée avec vl-acad-defun). Pour les versions antérieures, il fallait fair un p/Invoke de la méthode ObjectARX acedInvoke().

 

Toutefois, je pense qu'il est préférable de ne pas trop mélanger les environnements de programmation et que ça peut être un bon exercice de ré-écrire les fonctions LISP en .NET.

 

Dans ZwCad, est-ce qu'il y aurait un guide d'utilisateur de développement .Net? je voudrais trouver les classes, attribut, méthodes propres à ZwCad.

Je n'en sais rien, il vaudrait mieux s'adresser directement à l'éditeur de ZwCAD.

En tout cas, il est toujours possible d'utiliser l'explorateur d'objet de Visual Studio pour explorer les espaces de nom et leur contenu. On peut aussi utiliser un désassembleur comme Reflector ou IlSpy.

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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é