Aller au contenu

Vous aimez les challenges ? ? ?


DenisHen

Messages recommandés

a ben c'est plus fort ! j'ai pas trouvé de doc pour le vb.net... a part (gile) [encore lui ;-p] qui explique comment creer une classe de base (.dll) pour autocad ^^

Pour programmer AutoCAD avec .NET tu ne trouveras rien en français. Par contre, tu trouveras des tutoriels et/ou des livres pour débuter en .NET dans Windows (hors AutoCAD) et c'est par là qu'il faut commencer. Je pense qu'il faut être à l'aise avec les notions de POO (Programmation Orientée Objet : notions de classes, héritage, encapsulation, polymorphisme), l'IDE Visual Studio (solution, projets, bibliothèques en référence, ...) et un langage supporté (encore une fois, je recommande C#) avant d'essayer de se lancer dans l'API .NET d'AutoCAD qui est assez complexe et pas toujours très bien foutue. Et là, toute la documentation est en anglais.

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

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Comme les messages de début de semaine ont été supprimés, je reposte.

Comme je le disais, je suis hors sujet et j'ai très honteusement plagié le code de Gilles, mais j'ai joué avec les overrule pour surcharger le graphisme d'un cercle par celui du challenge.

J'ai ajouté un grip de rotation pour modifier l'orientation des polygones.

Il y a 2 commandes (dans le ZIP - à débloquer si nécessaire):

LAPOSTE qui permet de créer l'objet cercle par centre / bord (le 2nd point donnant le diamètre et al rotation initiale)

LAPOSTEUPD qui permet de mettre à jour/transformer un cercle existant avec le nombre de cercle et de sommet.

 

Voilà la mise en œuvre : ICI

 

Olivier

LaPoste.zip

Lien vers le commentaire
Partager sur d’autres sites

Merci Giles.

Je me permet une question pour toi.

Dans tes codes, je vois souvent que tu déclares tes variables en var et non pas dans son type explicite.

Pour quelle raison (quel intérêt), utilises tu la déclaration de type implicite? Il me semble avoir lu une réponse de ta part dans une autre discussion, mais je ne retrouve plus.

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Merci Giles.

Je me permet une question pour toi.

Dans tes codes, je vois souvent que tu déclares tes variables en var et non pas dans son type explicite.

Pour quelle raison (quel intérêt), utilises tu la déclaration de type implicite? Il me semble avoir lu une réponse de ta part dans une autre discussion, mais je ne retrouve plus.

Olivier

C'est essentiellement par flemme, mais aussi :

- parce que je n'aime pas les redondances du style : PromptPointOptions options = new PromptPointOptions("\nPremier point: ");

- parce qu'il suffit de placer son curseur sur la variable pour avoir son type dans une infobulle

- parce que l'inférence de type est la "norme" en F#

- parce que j'essaye de respecter cette convention de nommage

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

Lien vers le commentaire
Partager sur d’autres sites

Aïe aïe aïe, je n'ai pas tout vert dans mes habitudes de nommage. sad.gif

Mais ça fait des années que j'ai l'habitude d'indiquer sur le 1er ou les 2 premiers caractères le type de la variable. Ca va être dur de changer ça.

Ça reste une convention, il n'y a pas d'obligation.

Mais indiquer le type de la variable dans son nom me parait redondant dans un environnement statiquement typé.

Entre parenthèses, le nommage des variables et arguments dans les exemples de la documentation Autodesk est aussi très loin de cette convention.

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

Lien vers le commentaire
Partager sur d’autres sites

Salut à la communauté, et merci pour toutes vos participations...

 

J'ai aimé vos propositions et vos commentaires.... J'ai beaucoup appris...

 

(gile) : je t'ai bien entendu, je vais installer Visual Studio Express (bien que je crois qu'il n'existe plus mais il y a un équivalant) et je vais me mettre au C#, dès la semaine prochaine... Tu sais que tes conseils font loi ;) . Il faudra que je révise mon anglais, car après quelques petites recherches, je n'ai pas trouvé grand chose en français (sauf sur developpez.com)...

 

Bien cordialement à toutes et à tous...

 

Bon dimanche et joyeux Noël...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

(gile) : je t'ai bien entendu, je vais installer Visual Studio Express (bien que je crois qu'il n'existe plus mais il y a un équivalant) et je vais me mettre au C#, dès la semaine prochaine... Tu sais que tes conseils font loi

 

Visual studio community remplace l'express

 

 

pareil pour moi ^^ j'ai télécharger et pret à démarrer ^^

 

(gile) tu ferais pas cours pour 2 personnes ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

Bienvenue à vous deux,

 

Je ne suis pas expert en C# mais je me permets de vous déconseiller de vous lancer dans du code pour AutoCAD au début

c'est ce que j'ai fait il y a quelques années et le choc frontal avec le mur du langage a été brutal

Utiliser un code de l'aide, ça marche, une micro-modification et ça marche plus,

Je suis reparti avec les applications console et le b a ba du langage et ça va mieux maintenant

 

à suivre...

Lien vers le commentaire
Partager sur d’autres sites

Je le redis encore : essayer de programmer AutoCAD avant d'être à l'aise avec les notions de POO (classes, interfaces, structures, héritage, etc.), l'IDE Visual Studion (solution, projet, références, etc.) et le langage C#, c'est comme s'inscrire à un marathon avant de savoir marcher.

Il existe nombre de tutoriels et bouquins en français pour démarrer en .NET / C#.

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

Lien vers le commentaire
Partager sur d’autres sites

Je le redis encore : essayer de programmer AutoCAD avant d'être à l'aise avec les notions de POO (classes, interfaces, structures, héritage, etc.), l'IDE Visual Studion (solution, projet, références, etc.) et le langage C#, c'est comme s'inscrire à un marathon avant de savoir marcher.

Il existe nombre de tutoriels et bouquins en français pour démarrer en .NET / C#.

 

ton propre tuto pour la mise en place d'une classe autocad est bon aussi (vb.net) !

 

Je te tiens au courant de ma progression !

 

 

c'est ce que j'ai fait il y a quelques années et le choc frontal avec le mur du langage a été brutal

Ben quand j'ai vu le lisp j'ai eu cette sensation ! XD

Lien vers le commentaire
Partager sur d’autres sites

J'aiderais certainement, dans la mesure de mes moyens, tous ceux qui voudraient se lancer dans l'aventure de la programmation d'AutoCAD avec .NET.
Mais quand certains semblent vouloir se lancer dans .NET parce qu'ils ont du mal avec AutoLISP, ça me fait vraiment penser à une fuite en avant, du style : j'ai du mal à utiliser une bicyclette, je vais plutôt essayer l'hélicoptère.
Parce qu'à ma connaissance le langage LISP (et plus encore le dialecte AutoLISP) est certainement le langage de programmation le plus simple qui soit.

Du point de vue de l'architecture du langage LISP se définit simplement comme ceci:
- Un programme LISP est une liste d'expressions LISP
- Une expression LISP est soit un atome ; soit une liste d'expressions LISP
- un atome est un nombre, une chaîne, une fonction, ...
Donc pas de classes, de méthodes (voire de procédures et fonctions), de propriétés, d'évènements, de tableaux, de dictionnaires, ...

Du point de vue de la syntaxe, une seule et unique règle : la notation préfixée dans des parenthèses.
Si on prend l'exemple du calcul de la longueur d'un vecteur 2D défini par ses coordonnées x et y avec le théorème de Pythagore, en LISP, on écrit :
 

(sqrt (+ (* x x) (* y y)))

avec la plupart des langages "classiques", on écrit :
 

Sqrt(x * x + y * y)

Si cette dernière peut sembler plus simple, ce n'est qu'une illusion. En LISP on n'utilise que des fonctions (sqrt, *, +) et toujours de la même façon : (fonction [argument ...])

Avec les langages classiques, on mélange fonctions (sqrt) et opérateurs (*, +) avec deux syntaxes différentes : fonction([arguments ...]) et : opérande opérateur opérande. De plus, là ou le dernier exemple fait appel à une notion de priorité entre les opérateur pour effectuer les multiplications avant l'addition, en LISP, l'usage systématique des parenthèses écarte toute équivoque.

Donc rien de vraiment insurmontable si on veut faire de la programmation. En tout cas, les problèmes de syntaxe sont vraiment minimes par rapport aux différences de paradigmes et d'architecture.

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

Lien vers le commentaire
Partager sur d’autres sites

Salut à toutes et à tous, et à toi, Ô grand maître (gile) (je vais arrêter de t’idolâtrer de la sorte, tu vas finir par mal le prendre 😉...)

Je suis bien d'accord avec toi, le Lisp, est une merveille, mais il faut avouer que ce langage, bien que simplissime dans son énoncé, est tout de même complexe dans son développement et sa syntaxe. Son IDE dans AutoCAD est très (trop ?) simplissime, pas de réel débogage, peu d'aide, une indentation succincte...

Ton "Introduction A AutoLisp" est une bible, et pour beaucoup de développeurs (amateurs comme plus expérimentés), mais il faut bien le dire, ce n'est pas à la porté d'un novice en programmation... On ne commence pas en Lisp sans aucune notion de programmation, je pense. Perso, je n'y aurais jamais mis les pieds si je n'avais des notion de VB et de VBA...

Ensuite, le .NET et comme tu nous le conseilles le C# est peut-être plus "abordable" ou un bon moyen d’aborder la POO (je ne démord pas de l'apprendre, ça m'intéresse réellement). mais faire une macro, un programme, ou n'importe quoi qui facilite l'utilisation d'AutoCAD (ou autre logiciel) est très tentante pour quelqu'un qui "bidouille" comme moi... Tous est dans la forme...

De là a faire ce que tu fais, c'est une autre histoire... Entre un expert-comptable et un simple gratte papier, il y a des kilomètres... Entre un géomètre-Expert et un simple opérateur de saisie, il y a le même nombre de kilomètre... Entre toi et moi, les kilomètres augmentent... 😉

Tu dois bien te rendre compte que ton niveau est très difficile d'accès pour d'autre, dont je fais parti...

Mais je ne te remercierais jamais assez, car tu fais parti des membres de CadXP (avec LeCrabe, Tramber, didier, et bien d'autre, dont un tristement disparu) qui m'avaient permis de mettre le pied à l'étrier... Et sans vous, je serais rester au VBA (que je ne dénigre absolument pas), et je n'aurais pas fais ce que je fais actuellement en Lisp...

J'ai fais pas mal de trucs en VBA, mais maintenant, quand je dois faire un truc, je cherche d’abord à le faire en Lisp... Et si je n'y arrive pas, je le fais en VBA (et peut-être, plus tard, en C#...).

Je doute que tu (comme d'autres sur ce site) comprennes l'impacte que tu as sur les centaines de membres qui viennent chercher de l'aide ici... J'ai appris récemment que j'avais été d'une grande aide à un membre de CadXP en VBA... Ça me flatte (c'est vrai), mais je ne pense pas avoir fais plus que du partage, pas comme vous autres "grands", qui distillez votre savoir et vos bons conseils, moi, je ne résout rien et je ne propose que de très petites choses, abordable à un très grand nombre.

Bon, assez de lecture... Juste pour dire que, quand les grand de ce site, les Maîtres, les cadors, (et il y en a beaucoup), ce site devra compter sur ce qu'ils ont laissé...

Longue vie à CadXP, et longue vie à ses membres...

Denis (qui se replonge dans le Lisp pour son nouvel emploi, et là, c'est du sérieux...)...

A+

  • Like 1

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Niveau communication tu es bien meilleur que moi et je suis compltément d'accord avec 100% du message de Denishen

Quote

J'ai appris récemment que j'avais été d'une grande aide à un membre de CadXP en VBA...

OOOUUUIIIII !!!!

😃👋

Tout comme (gile) qui après ma formation me sera d'une grande aide ! grâce a ces nombreuses réponses sur tout le forum !

mais comme il dit avant de prnedre un hélico il faut des cours de théories, des travaux expérimentaux...

J'en m'en suis sorti en VBA, et SQL partant de 0.

Je pense que je vais y arriver d'ici 5-6 ans mais je vais y arriver...

Je ne suis pas pressé de finir par contre oui je suis impatient de commencer !

 

Lien vers le commentaire
Partager sur d’autres sites

6 hours ago, DenisHen said:

Ensuite, le .NET et comme tu nous le conseilles le C# est peut-être plus "abordable" ou un bon moyen d’aborder la POO (je ne démord pas de l'apprendre, ça m'intéresse réellement). mais faire une macro, un programme, ou n'importe quoi qui facilite l'utilisation d'AutoCAD (ou autre logiciel) est très tentante pour quelqu'un qui "bidouille" comme moi... Tous est dans la forme...

Encore une fois, NON, .NET n'est pas plus abordable, bien au contraire et ne supporte certainement pas la "bidouille".

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Denis,

Je ne peux que confirmer ce que Gilles et Didier ont déjà dit et insisté, il faut décomposer et ne pas essayer de brûler les étapes.

A mon avis, si c'est difficile en Lisp, c'est surtout un manque de rigueur et trop de bidouille. Il y a aussi un manque de compréhension des (types d') objets manipulés, que ce soit dans les variables, ou les paramètres transmis à une fonction et ceux retournés par cette même fonction.

Le fait de disposer d'un IDE (Visual Studio) plus moderne et performant au lieu de l'IDE VL d'AutoCAD ne comblera pas le manque de rigueur et ne permettra pas de régler les problèmes rencontrés sur le Lisp.

Pour le C# c'est bien de s'y mettre, mais il faut procéder par étape. Inutile de vouloir modifier la base de données du DWG avec les API d'AutoCAD avant d'être à l'aise sur la programmation .Net

Si tu veux appréhender tu peux partir d'un exemple simple. Ton message pour lire et décoder ton fichier de liste de calque avec ton séparateur # pourrait être une bonne base de d'apprentissage. Dans Visual studio, tu crées un EXE Windows simple:

- 1 dialogue avec un bouton pour sélectionner ton fichier

- 1 textbox pour afficher le nom du fichier sélectionné

- 1 bouton analyser avec lequel tu lis le fichier et tu affiches chaque ligne dans un messagebox

- ensuite tu remplaces le messagebox par une listbox dans ton dialogue pour afficher chaque ligne de ton fichier

- ensuite tu crées une struct avec 3 membres (nom, couleur, description) pour stocker chaque données de ton fichier texte

- puis une List<> de ta struct pour charger tout le contenu du fichier texte, puis tu utilises ta list pour remplir ta Listbox

- ensuite tu remplaces ta struct par une classe avec 3 membres privés, tu prévois 2 constructeurs (1 simple et 1 pour initialiser les 3 membres, dont la couleur avec une valeur par défaut 7), et les fonctions de lectures/écriture de tes variables membres

- ensuite tu crées un second dialogue auquel tu passes ta liste de classe en paramètre, et tu affiches les données dans un datagridview (3 colonnes).

- tu interprètes la couleur : si c'est une couleur simple, tu affiches le contenu de la cellule en vert et si c'est une couleur vraie, tu utilises cette couleur pour colorier le fond de la cellule

- tu laisses la cellule du nom de calque éditable pour pouvoir modifier le nom et quand ta cellule perd son focus, tu valides le nom (pas de caractères spéciaux, pas de nom en double dans la liste...) sinon tu refuses la modif et tu rétablis l'ancienne valeur

- Si les modif sont bonnes, tu valides ton dialogue et tu reviens dans ton 1er dialogue

- tu ajoutes un nouveau bouton pour sélectionner/créer un nouveau fichier texte et tu réécris ta structure modifiée dans ce nouveau ficher avec un autre séparateur (par ex ";")

 

Voilà, lorsque tu seras à l'aise avec ça et que tu nous auras mis une petite vidéo de la démonstration, on pourra s'attaquer à l'étage supérieur.

 

Olivier

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

Bonjour à la communauté.

Désolé, je me suis mal exprimé, quand je dis "bidouille", je voulais dire "faire de petits programmes simples".

Oui, je vous avais bien compris, le C# ne sera pas plus "facile" que le Lisp, mais je vais peut-être aller plus loin avec ce nouveau langage, car pour l'instant, je pense être à mon maximum intellectuel avec le Lisp, je ne progresse plus.

Effectivement, je ne vais pas faire du C# tout de suite pour AutoCAD. Je ferais un bon nombre d'exercices et de petits programmes (de plus en plus évolués) pour débuter et bien maitriser le langage. Il existe beaucoup plus de tutos en français pour le C# que pour le Lisp.

Encore une fois, merci à vous pour vos conseils et vos remarques.

Bonne journée à toutes et à tous.

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Je pense que l'anglais pourrait également t'aider énormément pour la compréhension des langages. C'est comme pour toute chose, il est inutile de se bourrer le crâne de force en apprenant ses leçons tous les jours ! La première étape c'est la compréhension, la logique de la chose. Une fois qu'on comprend, l'apprentissage se fait presque automatiquement.

Le langage LISP est très proche d'un langage algorithmique et donc c'est de la logique pure et dure. Chaque fonction, chaque nom de fonction, les arguments à déclarer, l'ordre de déclaration des arguments, ... tout chat à un sens logique qui est parfois beaucoup plus simple à saisir si l'on n'a pas cette barrière de la langue, car que se soit en LISP, en C#, en VBA, en HTML, ... ils se baseront tous sur la langue universelle : l'anglais.

Bref, je pense que lorsqu'on aime, on ne compte pas, donc si cela peut te permettre de t'aider dans la compréhension de fonctionnement d'un langage (et ainsi te permettre de coder des programmes plus complexes), je pense que l'anglais est une base plus que nécessaire pour commencer :3

Pour ce qui est du LISP, une courbe de progression ne sera jamais exponentielle, elle est comparable à une courbe logarithmique : elle finit par s'aplanir peu à peu, mais en aucuns cas cela veut dire que l'on ne progresse plus :3 Les seules différences qu'il peut y avoir entre plusieurs personnes c'est le temps que l'on passe pour passer les paliers et la manière d'y parvenir.
Entre une personne qui fera plein de petits programmes tout simples mais basés sur la compréhension d'une fonction en cherchant à aller toujours un peu plus loin et une personne qui décide de s'attaquer au Mont Everest sans jamais avoir appris à marcher, seulement l'une d'entres elles parviendra au sommet !

Un exercice tout simple que je peux te conseiller (chat m'a beaucoup appris), c'est de choisir une commande native d'AutoCAD et essayer de faire la même chose par toi-même et une fois terminé (avec un résultat identique), tu peux alors essayer de te demander : comment l'améliorer, quelle fonctionnalité manque-t-il à cette commande que je pourrais ajouter ?
Il faut commencer petit, bien évidemment mais au moins, cela permet d'avoir un but précis car on connait le résultat final, sans pour autant avoir la solution ❤️w❤️ et tu peux rapidement t'intéresser à beaucoup de sujets différents ! Dessiner une simple polyligne te fera te demander par exemple : comment fonctionne les arcs ? Quel est son code DXF ? Qu'est-ce qu'une bulge ? Comment la calcule-t-on ? ... Bref tout chat te feras te poser des milliers de questions (et bien souvent certaines réponses ne se trouveront qu'en anglais, la boucle est bouclée 😄) et qui seront un nouveau challenge chaque jour à résoudre :3

 

Bref, je ne sais pas si j'ai été claire, et désolée d'avance pour le roman mais je pense que l'abandon d'un langage vers un autre n'est que le début de la fin...Il n'y a pas d'autres limites intellectuelles que celles que l'on se fixe !

 

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Luna.

Merci pour tes conseils, j'apprécie. Mais je n'ai pas l'intention d'abandonner le Lisp, j'aimerais juste apprendre un autre langage qui me permettra peut-être de faire ce que je n'arrive pas à faire avec le Lisp.

Je ne dis pas que le C# est plus "facile", mais il sera peut-être plus adapté à ma logique ou à ma faculté de compréhension.

Je "parle" anglais, lorsque je vais dans un pays non francophone, je me débrouille plutôt bien dans cette langue et je fini toujours par me faire comprendre, mais elle diffère selon le thème (voyage, programmation, lecture...).

Encore merci à toi pour ton aide.

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Si tu veux apprendre sérieusement, prends un bon MOOC de plusieurs heures avec une vraie progression pédagogique.

Je ne le connais pas, mais au vu du programme celui-ci semble intéressant : https://openclassrooms.com/fr/courses/218202-apprenez-a-programmer-en-c-sur-net

Il y a aussi la plateforme Learn chez microsoft : https://docs.microsoft.com/fr-fr/learn/

Ne vas surtout pas te jeter sur 3 minutes de tuto youtube pour régler un problème de "bidouille".

 

Olivier

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é