CADxp: Avec quel langage programmer sur AutoCad ? - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Avec quel langage programmer sur AutoCad ? Descriptif des langages avec les avantages et inconvénients.

#1 L'utilisateur est hors-ligne   Alain 

  • ceinture verte
  • Groupe : Membres
  • Messages : 69
  • Inscrit(e) : 06-décembre 14
  • LocationJura - Suisse

Posté 27 mars 2016 - 17:42

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
0

#2 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10649
  • Inscrit(e) : 02-septembre 05

Posté 27 mars 2016 - 20:36

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'ils n'y a pas vraiment le choix, mais on ne joue plus dans la même cour.
Si avec .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.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
1

#3 L'utilisateur est hors-ligne   Alain 

  • ceinture verte
  • Groupe : Membres
  • Messages : 69
  • Inscrit(e) : 06-décembre 14
  • LocationJura - Suisse

Posté 28 mars 2016 - 08:18

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
0

#4 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10649
  • Inscrit(e) : 02-septembre 05

Posté 28 mars 2016 - 09:13

Citation

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.


Citation

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


Citation

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.


Citation

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.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
1

#5 L'utilisateur est hors-ligne   Alain 

  • ceinture verte
  • Groupe : Membres
  • Messages : 69
  • Inscrit(e) : 06-décembre 14
  • LocationJura - Suisse

Posté 28 mars 2016 - 10:17

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
0

#6 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8298
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 28 mars 2016 - 11:07

 (gile), le 27 mars 2016 - 20:36 , dit :

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)

Alain dit :

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

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#7 L'utilisateur est hors-ligne   Megeon 

  • ceinture noire
  • Groupe : Membres
  • Messages : 451
  • Inscrit(e) : 15-décembre 15
  • LocationLyon

Posté 28 mars 2016 - 12:47

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....pypi/pyautocad/

https://media.readth...t/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....ects/pythoncad/

voila voila, la contri inutile du jours :rolleyes:
-1

#8 L'utilisateur est hors-ligne   Alain 

  • ceinture verte
  • Groupe : Membres
  • Messages : 69
  • Inscrit(e) : 06-décembre 14
  • LocationJura - Suisse

Posté 28 mars 2016 - 18:17

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

 Tramber, le 28 mars 2016 - 11:07 , dit :

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

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

 Tramber, le 28 mars 2016 - 11:07 , dit :

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

 Tramber, le 28 mars 2016 - 11:07 , dit :

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

 Megeon, le 28 mars 2016 - 12:47 , dit :

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
0

#9 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10649
  • Inscrit(e) : 02-septembre 05

Posté 28 mars 2016 - 20:05

Alain,

Citation

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,

Citation

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
Image IPB
0

#10 L'utilisateur est hors-ligne   Megeon 

  • ceinture noire
  • Groupe : Membres
  • Messages : 451
  • Inscrit(e) : 15-décembre 15
  • LocationLyon

Posté 28 mars 2016 - 21:29

@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)
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)