jerome.s Posté(e) le 30 juillet 2009 Posté(e) le 30 juillet 2009 Bonjour à tous, après quelques années de pratique d'autocad je me décide d'apprendre à programmer autocad or je ne connais absolument aucun langage à part le français. Je viens de lire que le VBA vivait ses dernières années (dommage je pensait commencer par celui-ci). sans vouloir lancer d'éventuels débats, je souhaiterai comprendre la signification des différents langages et pour débuter savoir par lequel commencer si il existe des livres de support actualisés. Cordialement.
(gile) Posté(e) le 30 juillet 2009 Posté(e) le 30 juillet 2009 Salut, Sans aucune hésitation, je dirais : le LISP. Pour essayer de montrer que je ne suis pas partisan, j'argumente. Si on exclut VBA, AutoCAD supporte aujourd'hui AutoLISP/Visual LISP, .NET (VB.net, C#, etc.) et ObjectArx/C++.La difficulté d'apprentissage de ces langages est en gros proportionnelle à leur "puissance". - AutoLISP, langage de très haut niveau* de type "fonctionnel", est entièrement dédié et intégré à AutoCAD et d'une très grande souplesse (typage dynamique) qui facilite grandement son apprentissage. Ses limites sont les boites de dialogues avec le langage DCL (mais OpenDCL ou ObjectDCL peuvent palier à ça), les interactions avec d'autres applications qui nécessitent l'utilisation d'ActiveX (Visual LISP**) et le fait que c'est un langage "document" (uniquement utilisable dans le document actif). - .NET est la "nouvelle" plateforme de développement de Microsoft. Les langages supportés par .NET restent de haut niveau, mais mois que LISP, de type "Programmation Orientée Objet" (POO), et donc moins souples (fortement typés). L'apprentissage de .NET passe par celui de la POO, du Framework.net de Microsoft et des classes "managées" d'ObjectArx pour la programmation d'AutoCAD proprement dite. - C++, langage de bas niveau, est le langage source d'AutoCAD, il permet donc de faire absolument tout dans AutoCAD, y compris crée de nouveaux types d'entités, mais, à mon avis, reste le domaine des programmeurs professionnels. Pour résumer, j'ai lu quelque part que pour un développeur connaissant aussi bien ces 3 interfaces de programmation, pour écrire et déboguer la même routine, il faut, en gros, deux fois plus de temps avec .NET qu'avec LISP et 4 fois plus avec C++. Dans ce classement, je mettrais VBA au niveau de VisualLISP, équivalents au niveau "puissance", les avantages et inconvénients de l'un et de l'autre se compensant. AutoLISP/Visual LISP reste donc indéniablement le plus abordable, tout en offrant d'immenses possibilités (on en a quelques exemples sur CADxp ou ailleurs). Son étroite intégration à AutoCAD facilitera son apprentissage :- évaluation d'expressions LISP directement en ligne de commande- éditeur Visual LISP intégré à AutoCAD- accès direct aux commandes natives avec la fonction commandOn peut très rapidement écrire de petits programmes simples qui seront d'abord semblable à des macros ou à des scripts, puis deviendront plus "intelligents", plus efficaces, plus "sûrs" en intégrant les fonctions qui font la différence entre un langage de programmation et des successions d'instructions.À mon avis, la plus grosse difficulté dans l'apprentissage du LISP est due aux imbrications de fonction et à la multiplication de parenthèses que cela génère. Mais l'éditeur Visual LISP offre des outils qui permettent de surpasser ça. *En informatique, un langage de haut niveau (aussi appelé langage de programmation de haut niveau) est un langage de programmation qui permet au programmeur de s'abstraire de détails inhérents au fonctionnement de l'ordinateur, ceux-ci étant pris en compte lors de la compilation. Il permet de manipuler des concepts bien plus élaborés, mais empêche la gestion de certains détails. (source Wikipedia) ** Visual LISP est une extension d'AutoLISP intégrée à AutoCAD avec la version R14.Visual LISP comprend un éditeur de programme LISP (VLIDE) et l'ajout de fonctions supplémentaires :- les fonctions vl-* équivalentes à des fonctions AutoLISP- les fonctions vla-* qui permettent l'accès à l'interface COM, donc aux objets, propriétés, méthodes utilisées avec VBA par exemple.- les fonction vlax-* pour créer et manipuler des object via ActiveX.- les fonction vlr-* pour définir et gérer des réacteurs. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jerome.s Posté(e) le 30 juillet 2009 Auteur Posté(e) le 30 juillet 2009 Je te remercie pour cette approche de tous ces langages.Donc le LISP est indémodable et son apprentissage recommandé. Pour ce faire quel sont donc les ouvrages que tu peux me recommander dour débuter (j'ai vu un bouquin aux éditions Eyrolles pour programmer en DIESEL, LISP, VBA - le titre est approximatif -) à 33 euros et des bananes. L'investissement est il intéressant ou il vaut mieux que je m'oriente sur un autre bouquin ? Par avance merci.
Invité Patrick Posté(e) le 30 juillet 2009 Posté(e) le 30 juillet 2009 On peut accorder au VBA la gestion des boites de dialogue qui est un plaisir (au moins visuellement, car le code pour faire fonctionner une boite tant soit peu complexe est proche de la programmation spaghetti). C'est un des gros manques du LISP. J'ai longtemps programmé en LISP puis VisualLISP et suis passé il y a quatre ans au VBA pour entreprendre des développements assez gros (genre un an de travail/homme, je suis dessus actuellement...). Franchement, je pense que j'aurais eu plus de difficultés avec le VisualLISP à structurer ce gros projet, Disons que le typage des variables en VBA, les structures, les classes aident bien à rester clair et à ne pas se perdre. L'accès beaucoup plus direct aux propriétés des objets est aussi appréciable, objet.layer pour savoir le calque, on peut pas faire plus simple. Je pense que si le besoin est pour des programmes genre routine ou pas trop long et sans besoin de boites de dialogues complexes, le LISP ou VisualLISP est le meilleur choix. Et puis c'est une valeur sûre qui ne dépend pas (encore?) de Microsoft...contrairement au VBA.
(gile) Posté(e) le 30 juillet 2009 Posté(e) le 30 juillet 2009 On peut accorder au VBA la gestion des boites de dialogue qui est un plaisir (au moins visuellement, car le code pour faire fonctionner une boite tant soit peu complexe est proche de la programmation spaghetti). C'est un des gros manques du LISP. OpenDCL ou ObjectDCL permettent aussi la création de boites de dialogue par cliquer/déposer des contrôles. J'ai longtemps programmé en LISP puis VisualLISP et suis passé il y a quatre ans au VBA pour entreprendre des développements assez gros (genre un an de travail/homme, je suis dessus actuellement...). Franchement, je pense que j'aurais eu plus de difficultés avec le VisualLISP à structurer ce gros projet, Disons que le typage des variables en VBA, les structures, les classes aident bien à rester clair et à ne pas se perdre. L'accès beaucoup plus direct aux propriétés des objets est aussi appréciable, objet.layer pour savoir le calque, on peut pas faire plus simple. Pour l'accès aux propriétés, en Visual LISP, c'est aussi simple qu'en VBA : objet.layer = (vla-get-Layer object)Et ça peut-être aussi gonflant : circle.Center ou (vla-get-Center circle) retournent un variant, ou plus simple : (vlax-get circle 'Center) retourne une liste LISP standard. Trêve de polémiques, le principal désavantage de VBA est aujourd'hui sa durée de vie. S'il s'agit de débuter en programmation je pense qu'il n'est pas encore question de projet sur un an ou plus et qu'il est préférable de débuter avec un langage qui permet très vite d'avoir des resultats sans passer par un apprentissage trop ingrat.Même si on envisage d'apprendre un langage plus puissant par la suite, la connaissance du LISP sera toujours un atout pour développer rapidement des petites routines et comme dans l'apprentissage de toutes les langues, plus on en connais plus c'est facile d'en apprendre des nouvelles. Pour de plus larges applications, la POO offre certainement beaucoup d'avantages, c'est pour ça que j'essaye de me mettre à .NET, mais c'est vraiment moins facile... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jerome.s Posté(e) le 30 juillet 2009 Auteur Posté(e) le 30 juillet 2009 Merci pour tous ces éclaircissements. Quelqu'un connait des ouvrages de référence sur Autolisp pour servir de support ?
bazoul Posté(e) le 3 août 2009 Posté(e) le 3 août 2009 Je me permet de donner mon avis sur le sujet ... J'ai été amené a faire du lisp,du vba,du vb.net .... et mon préféré reste le vb.net. Le lisp est en effet totalement adapté au petite routine,des programmes pas spécialement complexe.Je me permet de rebondir sur ce que disait giles,je trouve que le lisp est plus contraignant pour le typage inexistant des variables Le vba lui est plutot pas mal en effet pour la partie graphique,le plus par rapport au lisp est le typage des variables,il va planté si tu essais de mettre un objet type calque dans une variable de type décimal par exemple .... Le vb.net,qui est ni plus ni moins que du vba,lui reste mon préféré et notament si tu dois faire intéragir plusieurs applications entre elles .... le débogeur est plus pratique que celui de vba et surtout le vb.net peut etre utilisé aussi bien de maniere externe a l'application autocad qu'en interne ...... Utilisant les trois langage je dirais que d'un point de vue syntaxe -Le lisp est merdique,des parenthese dans tous les sens .... la limitation à une dizaine d'espion est également un frein.Comme mentionné il est utilisable qu'avec autocad.-Le vba est chiant également dans le sens ou il distingue les "object" comme un calque et les non-object comme les chaines de caractères ... adapté pour les projets moyens-Le vb.net considère que tous est object .... mais plutot une usine a gaz pour des choses simples. En bref,je te conseillerais quand meme de te mettre au vba car :-Il n'est certes plus livré de base avec autocad mais encore disponible dans la version 2010 en option et donc utilisable dans les versions antérieures.-Non non le vba n'est pas mort puisqu'il devrait être a terme remplacer par le vsta,qui est ni plus ni moins que du vba amélioré (vb.net) ou du C# (choix du langage utilisé)-Le vba est toujours utilisé dans d'autres produits que autocad
(gile) Posté(e) le 3 août 2009 Posté(e) le 3 août 2009 Salut, Il va sans dire que je ne suis pas vraiment d'accord avec bazoul... Je voudrais quand même relever certains points pour préciser certaines choses. Quand on veut comparer des langages de programmation, il ne faut pas mélanger les critères. La syntaxe détermine comment le langage est structuré, mais ne devrait pas intervenir outre mesure comme critère de choix d'un langage ou d'un autre. Le lisp est merdique,des parenthese dans tous les sensC'est à peu près aussi stupide que de dire que VBA est nul parce qu'il y a trop de "End"...Il me semble que ceux qui ont des problèmes avec les parenthèses du LISP ont en fait du mal avec la structure même d'un langage fonctionnel défini récursivement. Le vb.net,qui est ni plus ni moins que du vbaAh non ! si VBA, VB et VB.NET ont des syntaxes proches (comme la syntaxe de C# est proche de celles de C C++ et Java), ils sont fondamentalement différents du point de vue de leurs portées ou des plateformes qu'ils implémentent.VBA (Visual Basic for Application) est une implémentation de VB intégrée à une application. Comme Visual LISP, c'est un "langage embarqué". Ils ne peuvent être utilisés que depuis l'application hôte, même s'ils peuvent tous deux contrôler une application à partir d'une autre parce qu'ils implémentent tous les deux la même plateforme COM/ActiveX. non le vba n'est pas mort puisqu'il devrait être a terme remplacer par le vsta,...D'après ce que j'ai compris, VSTA est un environnement de développement intégré à une application (IDE) basé sur .NET, donc pas grand chose à voir avec VBA. Le seul point commun entre .NET et VBA, c'est que .NET supporte aussi l'interface COM. ...qui est ni plus ni moins que du vba amélioré (vb.net) ou du C# (choix du langage utilisé) En ce qui concerne .NET, le choix du langage (VB.NET, C# ou autre) est, à mon avis, auxiliaire (tous sont compilés en langage intermédiaire -Common Intermediate Language). Comme je disais plus haut,. NET est certainement plus puissant que VBA ou Visual LISP, mais l'apprentissage de la POO (VBA et Visual LISP sont vaguement orientés objet sans être de la véritable POO), du Framework.NET et d'ObjectARX sont bien plus importants (en temps et en difficulté) que l'apprentissage de la syntaxe de VB.NET ou de C#. Voir l'excellent article de Serge Camiré ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 3 août 2009 Posté(e) le 3 août 2009 Le lisp est en effet totalement adapté au petite routine,des programmes pas spécialement complexe.Je me permet de rebondir sur ce que disait giles,je trouve que le lisp est plus contraignant pour le typage inexistant des variables Vouais....J'aimerais bien voir ce que tu as fais en lisp :cool: Pour les parenthèses, j'utilise bien mes outils sans aucun problème, au contraire, je trouve cela très fonctionnel et pas merdique du tout. Par ailleurs je trouve ton message très orienté "programmation hors AutoCAD". Je dois dire qu'il y a beaucoup à faire à l'intérieur avant d'aller manipuler d'autres applications par porgrammation. Puisque Jerome.s cherche un point de départ, je ne lui proposerais pas le vb.net. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
jerome.s Posté(e) le 4 août 2009 Auteur Posté(e) le 4 août 2009 Merci beaucoup de tous vos commentaires, j'ai bien compris qu'il valait mieux débuter par le lisp et après me former sur un autre langage. Maintenant j'ai demandé un avis sur un livre plus haut qu'en pensez-vous ? avez-vous d'autres références ? Merci. Cordialement.
bazoul Posté(e) le 4 août 2009 Posté(e) le 4 août 2009 J'aimerais bien voir ce que tu as fais en lisp :cool: J'ai été amené a faire du lisp sur un programme de calcul de charge de grue semi-automatique,avec prise en charge des mannequins,des matériels,metré .... Ayant passé les trois langage de programmations,et étant actuellement toujours en apprentissage du .net, je suis pro .net bien entendu. Par ailleurs je trouve ton message très orienté "programmation hors AutoCAD"Toutefois,je rapellerais que mon conseil;qui n'engage que moi; est qu'il se mette plutot au vba qu'au lisp ou au vb.net ... le besoin exprimé par Jerome.S devrait être parfaitement satisfait par le vb.Deplus le vba est exploitable depuis pas mal de logiciel,autodesk ou microsoft .... C'est à peu près aussi stupide que de dire que VBA est nul parce qu'il y a trop de "End"... Oui je maintient que le lisp est merdique pour les parenthese,que le débogage est tout aussi merdique comparé au deux autres langages cité .... rien qu'entre le lisp et le vba on voit que le vba est plus simple en lisibilité,en compréhension... C'est bien la peine d'avoir un langage de programmation performant si c'est imbuvable,mon avis .... Vous ne pouvais pas nier messieurs que la manipulation par exemple des listes en lisp est bien plus contraignante qu'en vba ou en vb.net tout de même ?!Même si je vous entends déjà me dire qu'avec de la rigueur sa passe et on s'en accommode très bien ... Je trouve sa aussi moyen de pouvoir utiliser une variable en string,puis cette même variable en integer,en liste .... pour moi le typage des variables permet de rester structuré et de savoir avec quoi on travail ... pour moi le type variant en vba est une abération ... quelle idée d'avoir un type de variable dans laquelle on y met tous et n'importe quoi .... Attention,bien que ne préférant pas le lisp ce n'est pas pour autant que je le dénigre,il rends bien des services,est parfois bien pratique,mais je ne pense pas que ce soit le mieux pour débuter ... Je précise que je ne suis pas développeur lisp ou vba professionnel ... j'ai découvert le lisp a la fac,passé 3mois en stage a ne faire que du lisp 9H par jour ... idem pour le vba et cela fait 5mois que je suis passé au .net .... je ne maitrise pas pleinement les trois langages certes ( dailleurs je ne comprends pas du tout la fonction lisp mapcar par exemple et son utilisation possible) ... mais me permet de donner mon avis les concernant.
(gile) Posté(e) le 4 août 2009 Posté(e) le 4 août 2009 Bazoul, Vous ne pouvais pas nier messieurs que la manipulation par exemple des listes en lisp est bien plus contraignante qu'en vba ou en vb.net tout de même ?! Alors ça c'est la meilleure !comment peut on dire ça du LISP (LISt Processing) qui est LE langage de manipulation des listes par excellence... je ne comprends pas du tout la fonction lisp mapcar par exemple et son utilisation possible C'est sûr que si tu ne comprends pas les fonctions LISP de manipulation des listes, tu peux trouver que ce langage n'est pas adapté pour ça... pour moi le type variant en vba est une abération ... quelle idée d'avoir un type de variable dans laquelle on y met tous et n'importe quoi Un variant (comme une TypedValue avc .NET) est un container qui sert, entre autre, à pouvoir faire des listes (ou des tableaux) avec des données de différents types (xdata, filtre de sélection...) Jerome.sJ'ai appris sans livre, mais j'ai pu lire ensuite des livres qui, tout en datant un peu, donnent des bases incontournables à chercher sur le net :- Le grand livre de la programmation AutoCAD 12 de Christian Immler- la CAO par le menu (le chouchou de Tramber) de J.-N. Contensou Sinon, quelques liens utiles en français :- les fonctions AutoLISP Aidacad- la FAQ AutoLISP de Reini Urban- et bien sûr le forum Débuter en LISP de CADxp Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant