Aller au contenu

Avec quel langage programmer sur AutoCad ?


Alain

Messages recommandés

Bonjour,

Je m'intéresse à la programmation sur autocad et je ne comprends pas toutes les techniques à disposition, les moyens à mettre en œuvre, les avantages, les inconvénients, le fonctionnement des différentes possibilités offertes.

 

Macro, Diesel, Script

C'est un langage contenant une suite de commandes autocad. Les fonctions Diesel offrent une personnalisation basique des commandes, n'est pas considéré comme language de programmation. Est une première approche et adapté à la personnalisation.

 

Avantages:

- Fonctionne sur les versions LT

- Facile à modifier et tester

- Solution idéale pour des tâches répétitives simples

- Accède à toutes les commandes et variables système

- Documentation complète en français dans l'aide d'autocad

 

Inconvénients:

- Pas d'accès à l’interface COM

- Un code long devient très difficile à maintenir sans retour à la ligne

- Les fonctions Diesel offrent peu de possibilités de programmation

 

Remarque:

- A noter la commande SCRIPT qui exécute les commandes d'un fichier text *.scr

 

Auto LISP et VLisp

C'est le langage de programmation le plus populaire d'autocad. Langage interprété directement par autocad, avec un éditeur intégré. Adapté aux débutants.

 

Avantages:

- Offre toutes les possibilités de programmation, y compris COM

- De nombreux exemples sont disponibles sur internet et dans l'aide

- Intégré de base dans autocad

- Exécutable directement enligne de commande dans autocad

 

Inconvénients:

- Langage très différent de la syntaxe clasique (C, Basic, Java...)

- Aide d'autocad seulement en anglais

- Utilisation de l'interface COM compliquée (vlax-get-property, vlax-invoke-method ...)

 

VBA Visual Basic pour Application

Langage interprété utilisant l'interface COM. Adapté aux débutants.

 

Avantages:

- Langage identique que dans Office ou autre application

- Autocomplation des méthodes et propriétés COM.

 

Inconvénients:

- Demande l'installation de l'interface IDE

- Dépendant de Microsoft, sauvé de justesse.

 

.Net (C# F# VB...)

Langage compilé (en 2 étapes) en fichier dll, basé sur le framework .net de Microsoft. Demande un apprentissage rigoureux d'une plateforme de programmation avec son API.

 

Avantages:

- Langage orienté objets.

- Idéal pour des projets moyens

- Langage utilisable en programmation générale

 

Inconvénients:

- Peu de documentation pour une utilisation avec autocad

- Dépendant d'un framwork qui doit être installé (mais évolue positivement).

 

ObjetARX-DBX C++

Langage compilé de bas niveau en fichiers arx ou dbx (utilisé comme des dll). A réserver aux programmeurs professionnels.

 

Avantages:

- Pleine puissance pour création d'applications complètes

- Accès à toutes les données

- Possibilité de créer des objets autres que ceux de base dans autocad

 

Inconvénients:

- Peu de documentation.

- Débogage fastidieux

 

Merci de me donner plus d'information et corriger mes erreurs éventuelles, je modifierai ces informations selon vos réponses. Merci

Constructeur métallique et dessinateur.

Mon entreprise: aplomb.ch

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je vois que tu as déjà bien cerné le problème.

Macro et Diesel ne sont pas, à proprement parlé, des langages de programmation.

 

Tu sembles faire grand cas de la syntaxe en opposant LISP et les autres que tu appelles "classique". Certes la syntaxe du LISP est assez particulière mais il y a aussi des différentes syntaxiques notables entre la famille VB (VBA, VB.NET) et la famille C (C#, C++) ou encore F# comme il en existe entre les membres de la famille C.

 

Globalement, pour les environnements de programmation, je ferais 3 groupes, où l'accessibilité (facilité d'apprentissage) est inversement proportionnelle à la puissance (tant en terme de performances que de fonctionnalités).

 

Dans le premier groupe je mettrais LISP et VBA, tous deux relativement faciles à apprendre et avec des limitations comparables.

Je ne pense pas que la syntaxe particulière du LISP soit vraiment un inconvénient, par contre, il me semble plutôt que certains soient en fait rebutés par son côté fonctionnel (récursif), plus mathématique que peuvent l'être les environnements de programmation impératif (procéduraux) comme VBA.

À mon avis, les seuls avantages du VBA par rapport à AutoLISP sont les boites de dialogue (encore que OpenDCL permette de faire mieux) et la possibilité d'utiliser le VBA hors AutoCAD.

Ceci dit, ma préférence va, et de loin, à AutoLISP dont je pense qu'une certaine connaissance est incontournable pour l'utilisateur avancé d'AutoCAD ou le responsable CAO comme pour les programmeurs même s'ils utilisent d'autres langages. Ceci à cause de la parfaite intégration du LISP dans AutoCAD.

 

Ensuite vient l'environnement .NET (quel que soit le langage).

Quand Autodesk (ou Microsoft) présente .NET comme le remplaçant du VBA, c'est qu'il n'y a pas vraiment le choix, mais on ne joue plus dans la même cour.

Si .NET est plus puissant que VBA (que ce soit pour AutoCAD ou non) l'apprentissage demande (beaucoup) plus de temps (et de rigueur).

Les programmes .NET, quel que soit le langage utilisé pour les écrire (C#, F#, VB, etc.) sont (pré)compilés en un langage intermédiaire (IL) pour être définitivement compilés en langage machine en fonction de l'environnement (OS, plateforme) lors de la première exécution (un peu comme Java).

 

Enfin ObjectARX qui utilise les langages de bas niveau C/C++ dont l'apprentissage est encore plus long et dont l'utilisation demande une extrême rigueur. C'est le prix de la puissance maximale. ObjectARX est l'environnement utilisé pour développer les AutoCAD verticaux (MEP, MAP, etc.) et les applicatifs type Covadis. À réserver aux programmeurs professionnels.

 

Il y a aussi une API AutoCAD JavaScript depuis quelques versions, mais je ne la connais pas du tout.

 

Tu peux aussi voir cette réponse.

  • Upvote 2

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

Bonjour et merci beaucoup pour ta réponse complète.

 

Oui, la syntaxe de Lisp me dérange pour les raisons suivantes:

- Est de moins en moins utilisé en dehors d'autocad, donc l'apprentissage ne reste que pour ce programme.

- L'utilisation des fonctions COM est compliqué (comme dit plus haut)

Mais il doit y avoir des avantages, vu que les données dxf sont sous la forme de liste pointées, vu l'age du langage, le résultat doit donner une meilleur rapidité d'exécution en AutoLisp (et non en COM Visul Lisp).

Pour les personnalisations et applications crées par des utilisateurs d'autocad, Lisp reste le meilleur choix, suite à la suppression de la plateforme VBA intégrée à autocad.

 

Concernant .net, l'apprentissage peut valoir la peins si l'on veux faire de la programmation en général, créer des exe et dll, programmer un serveur web (asp), mais nous restons dépendant de Microsoft.

Pratiquement, la programmation .net passe par la création de dll qui sont chargées via le registre windows ?

 

Les objets ARX, là c'est encore flou pour moi. La programmation c ou c++, ça je comprends. Mais le code est compilé en fichiers Arx qui représentent quoi ?

Il s'agit de définition d'objet, définition d'affichage de ces objets, de comportement avec les poignées ?

Si c'est ça, ce doit être très compliqué...

 

Concernant JavaScript, là je serais intéressé, vu que je la pratique déjà, mais il y a un manque de documentation en français. Mais le concept à l'aire intéressant pour des liaisons avec un serveur web et base de donnée.

 

Encore merci pour ta réponse, et le lien vers une discutions similaire.

Constructeur métallique et dessinateur.

Mon entreprise: aplomb.ch

Lien vers le commentaire
Partager sur d’autres sites

Concernant .net, l'apprentissage peut valoir la peins si l'on veux faire de la programmation en général, créer des exe et dll, programmer un serveur web (asp), mais nous restons dépendant de Microsoft.

.NET est de plus en plus en plus "ouvert". Sa vocation multiplateforme le nécessite.

F# est open source depuis plusieurs années.

Le compilateur .NET "Roselin" est open source depuis l'année dernière.

Xamarin offre un support pour la technologie Mono qui rend disponible l'environnement .Net en natif sur Android, IOS et Linux.

Visual Studio 2015, l'IDE (environnement de développement intégré) de chez Microsoft pour .NET (considéré comme le meilleur IDE aujourd'hui même pas des anti-M$), permet le développement d'applications Windows, IOS et Android ainsi que d'applications Web et services cloud.

 

 

Pratiquement, la programmation .net passe par la création de dll qui sont chargées via le registre windows ?

En ce qui concerne la programmation de plug-ins pour AutoCAD, oui, il s'agit de DLLs chargées avec la commande NETLOAD (en ligne de commande ou depuis un LISP -on y revient toujours-), ou, automatiquement depuis le registre, ou encore via le mécanisme Autoloader et un dossier .bundle (voir ce sujet).

 

 

Les objets ARX, là c'est encore flou pour moi. La programmation c ou c++, ça je comprends. Mais le code est compilé en fichiers Arx qui représentent quoi ?

Il s'agit de définition d'objet, définition d'affichage de ces objets, de comportement avec les poignées ?

Si c'est ça, ce doit être très compliqué...

Avec objectARX, on génère des fichiers compilés .arx ou .dbx (ou encore .crx depuis AutoCAD 2013). Il s'agit en fait de DLLs.

La principale chose qu'on peut faire avec ObjectARX et pas avec .NET c'est les objets personnalisés pour lesquels il faut effectivement définir tous les comportements.

 

 

Concernant JavaScript, là je serais intéressé, vu que je la pratique déjà, mais il y a un manque de documentation en français. Mais le concept à l'aire intéressant pour des liaisons avec un serveur web et base de donnée.

Je ne connais pas cet environnement, mais d'après le peu que j'ai pu lire, ça concerne essentiellement l'utilisation d'interfaces graphiques (dialogues, palettes, etc.) décrites en HTML5 et l'interaction avec un autre environnement de programmation pour agir dans AutoCAD sans appeler des commandes.

 

 

PS: concernant les documentations en anglais, tu n'y échapperas pas quel que soit l'environnement de programmation, au moins en ce qui concerne AutoCAD.

  • Upvote 2

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

Et bien voilà, grâce à ton aide Gilles, je complète tranquillement mon 1er post. Y vois-tu des erreurs, imprécisions, manquements ? Je modifie volontiers et espère répondre aux utilisateurs d'autocad voulant aller un peu plus loin, se trouvant perdu devant la multitude de possibilité s'offrent à lui.

L'évolution de Microsoft vers l'ouverture du code me réjouit, il est vrai que leur politique se bonifie avec le temps (et la pression des concurrents). J'avais déjà remarqué la possibilité d'utilisation de .net sur Linux. J'espère q'Autedesk suivra cette évolution avec ses produits...

Bonnes fêtes de Pâques.

Constructeur métallique et dessinateur.

Mon entreprise: aplomb.ch

Lien vers le commentaire
Partager sur d’autres sites

Il y a aussi une API AutoCAD JavaScript depuis quelques versions, mais je ne la connais pas du tout.

Merci pour ce rappel (j'avais déjà oublié).

En lisant une news, je suis aussi tombé sur une autre possibilité via le web :

autocad.io

B)

Oui, la syntaxe de Lisp me dérange pour les raisons suivantes:

- Est de moins en moins utilisé en dehors d'autocad, donc l'apprentissage ne reste que pour ce programme.

- L'utilisation des fonctions COM est compliqué (comme dit plus haut)

Est de moins en moins utilisé ? Je ne connais pas tes sources. Mais si c'est un langage marginal aujourd'hui. Quelle importance puisqu'il est si bien intégré dans AutoCAD ?

L'utilisation des fonctions COM par le lisp n'est pas compliquée. Un peu contraignante quand on vient d'apprendre Autolisp basique, c'est tout.

  • Upvote 1

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

ne pas oublier qu'il y a une passerelle python / Autocad

 

j'ai pas testé, mais ça ma plutot l'aire d'être un plug in, qui "importe autocad", plutôt que de la prog pour autocad

 

https://pypi.python.org/pypi/pyautocad/

 

https://media.readthedocs.org/pdf/pyautocad/latest/pyautocad.pdf

 

 

Attention je ne dit pas qu'il faut se penché la dessus, mais ça existe alors autant le mentionner !

 

 

PS: en recherchant ce plug in je suis tombé sur ça

https://sourceforge.net/projects/pythoncad/

 

voila voila, la contri inutile du jours :rolleyes:

  • Downvote 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci Tramber pour ta réaction, je l'attendais un peu.

Est de moins en moins utilisé ? Je ne connais pas tes sources.

Ma source est Wikipédia, la fin du paragraphe sur l'histoire.

 

Mais si c'est un langage marginal aujourd'hui. Quelle importance puisqu'il est si bien intégré dans AutoCAD ?

A la création d'autocad, ce fut le meilleur choix. Il est intégré à merveille avec ce programme, ce sont des points sur lesquels je ne reviens pas. Je déplore juste le fait d'apprendre un langage que je n'utiliserai que pour autocad, qui a une syntaxe très différente des langages classiques actuels. Ça n’empêche pas que c'est le langage que je vais apprendre. Il y a quelque années j'ai appris le Basic de Open Office (ou Libre Office) qui reste un langage que je qualifie de clasique, même s'il est différent de VBA, php ou js...

 

L'utilisation des fonctions COM par le lisp n'est pas compliquée. Un peu contraignante quand on vient d'apprendre Autolisp basique, c'est tout.

Ayant fait du VBA il y a une dizaine d'années, sur Access, Excel et AutoCad; en utilisant l'opérateur . sur une ligne pour atteindre 3 méthodes et propriétés chainées, avec l'autocomplation de l'IDE, dire que c'est "un peu contraignant" l'implémentation en Visual Lisp, je trouves que tu reste très poli pour dire que c'est une gosse m...

 

ne pas oublier qu'il y a une passerelle python / Autocad

Mon post s'adresse aux utilisateurs avertis ou tout débutant en programmation AutoCad. Je penses que ce projet est trop marginal pour le citer. Mais merci pour l'info.

 

Sinon, as tu des remarques sur les descriptifs du début ?

Constructeur métallique et dessinateur.

Mon entreprise: aplomb.ch

Lien vers le commentaire
Partager sur d’autres sites

Alain,

Sinon, as tu des remarques sur les descriptifs du début ?

Puisque tu couvres aussi Macro et Diesel qui ne sont vraiment de la programmation, tu devrais aussi intégrer les scripts (ça m'étonne que Tramber ne l'ait pas noté).

 

Megeon,

ne pas oublier qu'il y a une passerelle python / Autocad

Les liens que tu donnes montrent un accès à AutoCAD via l'interface COM/ActiveX. Tous les environnements de programmation offrant un accès à cette interface peuvent accéder à AutoCAD de cette manière.

Beaucoup plus intéressant à mon avis, est l'accès AutoCAD via .NET avec IronPython (comme avec tous les langages supportés par .NET)

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

@alain non pas d'avis sur la question je n'y connais rien dans ces languages je connais un peu mieux python pour ca que j'ai entendu parler de ça

 

@gile merci pour ironpython je connaissais pas. Comme je l'ai dit je me suis jamias pencher serieusement sur python et autocad

 

D'ailleur le temps de comprendre comment faire avec ironpython tu pourrais certainement reussir à devellopper quelque truc surtout que pytgon est assez proche de C++ (et il me semble que ca fait partie de tes competances)

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é