chrchat Posté(e) le 26 février 2004 Posté(e) le 26 février 2004 Ca fait une dizaine d'années que je travail sous autocad (V12 a l'époque :) ) et je ne me suis jamais mis au lisp (Hou la honte :P). Desireux d'apprendre (enfin) ce language existe t-il une methode, des tutoriaux ou exercices en fr pour un pauvre utilisateur comme moi. Merci CCAD la DAO au service de l'Energie - http://c.cad.free.fr
rimbo Posté(e) le 26 février 2004 Posté(e) le 26 février 2004 Je suis preneur aussi mais de nos jour ne vaut-il pas mieux se mettre au vba ? Cordialement Lionel PERRIN | Ingénieur/Consultant Formateur expert Infrastructure - Géomédia Civil 3D/Covadis/Autopiste/Infraworks 360 - VRD/Infrastructure routière ferroviaire Bus TRAM
Oli553 Posté(e) le 26 février 2004 Posté(e) le 26 février 2004 PAreil pour moi, help!!! L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
Patrick_35 Posté(e) le 26 février 2004 Posté(e) le 26 février 2004 Bonjour à tousJe pense connaître assez bien le lisp et je veux bien vous donner quelques conseils (valable aussi pour du dcl), et de plus, le forum est aussi là pour ça. Vous pouvez déjà commencer par regarder les pdfs qui se trouvent dans le répertoire d'aide d'autocad qui ont plein d'exemples et permettent justement de bien comprendre les commandes (en anglais :( ) Pour répondre à Rimbo, si il faut apprendre un langage, autant commencer avec le vba, ce ne sera pas plus simple que le lisp, mais il aura l’avantage de pouvoir programmer sur d’autres logiciels et aussi la possibilité de récupérer plus facilement des infos sur divers programmes (des liaisons avec Excel/Autocad par exemple) J'ai remarqué que d'autre personnes connaissent aussi bien le lisp et ont un bon niveau, alors n'hésitez pas, posez vos questions @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chrchat Posté(e) le 26 février 2004 Auteur Posté(e) le 26 février 2004 c'est ni plus ni moins que le manuel de personnalisation vendu avec la version 13 ? CCAD la DAO au service de l'Energie - http://c.cad.free.fr
rimbo Posté(e) le 26 février 2004 Posté(e) le 26 février 2004 Yes, ça fait un beau pavé bien indigeste mais bon quand il faut...Si vous voulez on peut tous s'y mettre, j'ai des vieux cours de lisp qui sont sympa pour débuté faudrait une rubrique ou autres... Une proposition de Patrick ?? D'ailleurs qqu'un a t il les améliorations du lisp (nouvelle commande, commande annulé...) Cordialement Lionel PERRIN | Ingénieur/Consultant Formateur expert Infrastructure - Géomédia Civil 3D/Covadis/Autopiste/Infraworks 360 - VRD/Infrastructure routière ferroviaire Bus TRAM
chrchat Posté(e) le 26 février 2004 Auteur Posté(e) le 26 février 2004 je suis d'accord, une rubrique debutant ce serait génial :D CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Oli553 Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Je vote pour aussi L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
Aviglémy Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Débutant vous parlez de débutant lisp ? (defun c:.... je suis partant aussi.
rimbo Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Voici un lien très utile pour le lisp ou le vba http://acadplus.free.fr/ Cordialement Lionel PERRIN | Ingénieur/Consultant Formateur expert Infrastructure - Géomédia Civil 3D/Covadis/Autopiste/Infraworks 360 - VRD/Infrastructure routière ferroviaire Bus TRAM
fabcad Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Bonjour Le Lisp est très utile lors de la modification d'objets. VBA il est vrai est beaucoup plus orienté vers les echanges entre logiciels. Mais on peut combiner les deux, Le lisp pour les traitements graphiques et vba pour lesdialogues car le dcl c'est un peu compliqué. Le lien entre ces deux langages peut-être à la base les 15 variables autocad de typeuser?-1-5.exemple :useri-1-5 pour les nombres entiers.userr-1-5 pour les réèls.users-1-5 pour les chaines de caractères. Vois le site de Dominique Vaquand ou l'on peut telecharger des routines lisp et vba pour apprendre la structure de ces deux langages. @+Fabcad
bonuscad Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Bonjour, J'ai commencé en R10a l'époque AutoDESK conseillait un bouquin:(Common) LISP par Harald WERTZCelui ci est en Francais et bien foutu pour celui qui débute de rien ou presque.En effet il enseigne les base du lisp pour rapidement évoquer les fonction plus complexe de manipulation de liste tel que la recursivité.Seul reproche, il est orienté Common LISP, bien que les languages soient très proche, il ne permet pas toujours d'appliquer les exercices sous AutoLisp. :( Bien que le manuel de personnalisation soit très bien (une fois qu'on a les bases!), c'est un bouquin que je conseille (j'ai débuté grâce à lui). Autrement le Net doit fourmiller d'exemples simples de code (ça aide beaucoup quand on peut observer la structure d'un programme et la démarche suivie) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
didier Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 bonjourse mettre à AutiLisp, ou VBA, ce n'est pas que des mots...La première chose importante à mes yeux est d' avoir un but à atteindre.çà parait évident mais à l'usage on s'aperçoit que les apprentis partent dans outes les directions,et déçus ils abandonnent.Donc se mettre un objectif simple pour commencer.par exemple : copier un objet sur lui même et changer de calque l'objet obtenu.si çà parait neuneu à certains, la première fois c'est hard.et quand la première routine fonctionne, on se sent le roi du pétrole...à bientôt pour des conseils si nécessaire...courage et persévérance sont les deux pierres de fondation du futur lispeur.ciaoamicalementdidierPS: Loin de moi l'idée de faire le professeur, mais ayant tout appris tout seulje veux bien aider les courageux :yltype: Éternel débutant... Mon site perso : Programmer dans AutoCAD
chrchat Posté(e) le 27 février 2004 Auteur Posté(e) le 27 février 2004 Pourquoi ne pas définir des objectif sur le site, je m'explique, on pose un probleme a une date et la solution n'est postée que quelques jours après comme ton exemple : copier un objet sur lui même et changer de calque l'objet obtenu allez c'est parti CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Patrick_35 Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 C'est vrai que l'idée de l'objectif avec un exemple est loin d'être idiote et je constate qu’apparemment les personnes qui maîtrise le lisp sont des autodidactes, donc à vos bouquins et neurones @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chrchat Posté(e) le 27 février 2004 Auteur Posté(e) le 27 février 2004 pour l'exemple j'ai la petite routine suivante : ( defun c:cpcal () (command "-calque" "n" "nouveau calque" "e" "nouveau calque" "co" 1 "" "") (setq obj (ssget)) (setq a (getpoint "\nsélectionner un point :" )) (command "copier" obj "" a a) (command "chprop" obj "" "cal" "nouveau calque" "")) C'est certainement pas le plus simple mais ca marche :) CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Labletech Posté(e) le 27 février 2004 Posté(e) le 27 février 2004 Avoir un objectif est effectivement une démarche fondamentale pour qui veut avancer et donc produire. Dans la réalisation d'un objectif, il faut aussi savoir par qui et pour qui on fait le travail:'Connais toi toi-même et tu connaitras tes enemis' ou quelque chose comme ca. Donc un prog en lisp doit répondre à un cahier des charges mais il doit aussi avoir le niveau de l'utilisateur final.Plus celui-ci est doué et compréhensif, plus les procédures de contrôle pourront être simples voir inexistantes.Inversement plus celui-ci est malhabile, plus il faudra des procédures supplémentaires pour protéger et aider cet utilisateur néophyte. Faute de quoi il se découragera rapidement et n'utilisera pas vos prog.Pour illustrer cela reprenons le dernier exemple: (command "-calque" "n" "nouveau calque" "e" "nouveau calque" "co" 1 "" "") dans cette commande l'ordre établir permet à la fois la création et le positionnement du dessinateur sur le calque en question. Donc nouveau est inutile.(command "-calque" "e" "nouveau calque" "co" 1 "" "") suffiraEnsuite la selection ne pose pas de pb sauf :- qu'il faut une question claire pour l'utilisateur- qu'il faut ensuite vérifier si l'objet a bien été sélectionné.(prompt "\nSaisir le/les objets à traiter:")(setq obj (ssget))(if (not (null obj)) (progn Ensuite saisir un point de base est perturbant pour le dessinateur, alors que l'on peut imposer un point évident "0,0"(command "copier" obj "" "0,0" "0,0")(command "chprop" obj "" "cal" "nouveau calque" "")))) Bien-sûr on pourra voir plus tard:Comment revenir sur le calque ou on était avant d'appeler cette commande ??Comment aussi rendre variable le nom du calque cible ??Enfin comment attraper le nom d'un calque d'un objet déjà posé sur ce calque ?? Formateur ATC Autocad - Mechanical - Inventor - Electrical
didier Posté(e) le 29 février 2004 Posté(e) le 29 février 2004 réponse à LableTechSont ce des questions ou bien des exercices pour l'avenir ?si c'est des questions, j'ai la réponses'il s'agit d'exercices c'est bien d'être progressifet ça va dans le bon sens, bravoamicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 1 mars 2004 Posté(e) le 1 mars 2004 Bonjour à tous Passer par les command est une première approche, très bien, mais comme on est là pour apprendre le lisp, autant pousser plus loin et essayer de s'en passer Première chose très importante, les parenthèses vont toujours par paires ()il est possible de faire une fonction dans la fonction ex : (setq n (1+ n)), 1+ n permet d'incrémenter de 1 la valeur actuel de n (ex n=10 soit 11 comme résultat) et le setq me permet de stocker dans la variable n Maintenant, pour l'exemple en cours... Je défini déjà le nom de la fonction avec les variables en local(defun c:ex1(/ obj n crea_obj)Je sélection un objet dans le dessin (fonction entsel) et je stocke le résultat dans la variable obj(setq obj (entsel))Je récupère les valeurs de l'objet (fonction entget) sur la première entrée (fonction car)(setq obj (entget (car obj)))je fixe la variable n à 1 afin de commencer ma futur boucle de copy d'un objet pour éviter de prendre l'identifiant de l'objet sélectionné qui est sur la valeur 0(setq n 1)je fais ma boucle tant qu'elle n'est pas vide (si (nth n obj)=nil, valeur vide et je sors de la boucle)(while (nth n obj)je crée une liste (fonction append) que je stocke dans la variable crea_obj(setq crea_obj (append crea_obj (list (nth n obj))))j'incrémente ma variable n afin de passer au suivant(setq n (1+ n))je termine ma boucle while (pour apparier mes parenthèses))je créé maintenant l'objet(entmake crea_obj) J'ai maintenant fait une copie de l'objet sélectionné, reste à lui changer sa couleur Je sélectionne l'objet créé, soit logiquement le dernier dans mon dessin(setq obj (entget (entlast)))Je défini la nouvelle couleur à lui attribuer dans la variable couleur (soit le 1 qui correspond au rouge par exemple)(setq couleur 1)Je regarde si l'objet n'a pas la couleur ducalque (dans ce cas, pas de code 62)(if (not (cdr (assoc 62 obj)))si oui, j'ajoute la couleur à l'objet(setq obj (append obj (list (cons 62 couleur))))autrement, je lui change sa couleur (fonction subst, changer un élément de la liste)(setq obj (subst (cons 62 couleur) (assoc 62 obj) obj))je ferme ma condition (fonction if))je modifie dans la base l'objet(entmod obj)Je mets à jour à l'écran l'objet(entupd (cdr (assoc -1 obj)))et pour éviter d'avoir un message indésirable, je mets un silence(princ)je ferme ma fonction ex1)je mets encore un silence(princ) Soir maintenant la fonction ex1 au complet (ouf...) (defun c:ex1(/ obj n crea_obj) (setq obj (entsel)) (setq obj (entget (car obj))) (setq n 1) (while (nth n obj) (setq crea_obj (append crea_obj (list (nth n obj)))) (setq n (1+ n)) ) (entmake crea_obj) (setq obj (entget (entlast))) (setq couleur 1) (if (not (cdr (assoc 62 obj))) (setq obj (append obj (list (cons 62 couleur)))) (setq obj (subst (cons 62 couleur) (assoc 62 obj) obj)) ) (entmod obj) (entupd (cdr (assoc -1 obj))) (princ))(princ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chrchat Posté(e) le 1 mars 2004 Auteur Posté(e) le 1 mars 2004 Maintenant, il faut structurer la chose si un certain nbr d'utilisateurs est près a prendre des cours ;) CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Labletech Posté(e) le 1 mars 2004 Posté(e) le 1 mars 2004 Je suis tout à fait d'accord avec ecotec.. Il est préférable de structurer la chose pour donner au forum tout son sens.De plus pour répondre à didier il s'agit bien là de propositions d'exercices progressifs que je me proposais de résoudre avec suffisamment de compacité et sagacité n'est-ce pas Patrick-S35 ?? Je pense qu'un forum doit être un endroit où les articles ne doivent pas dépasser une vingtaine de lignes faute de quoi cela devient intorchable .. à fortiori s'il s'agit de lisp. C'est donc la raison pour laquelle je m'étais interdis d'en dire plus lors de ma précédente intervention.Si d'ailleurs je doit fournir plus 10 lignes en lisp je vous proposerais de les télécharger sur mon site. Le forum y gagnera en concision .Si maintenant on ne met que les explications nécessaires à la comprehension d'un tournure lisp celui-ci y gagneraen plus en clareté. Formateur ATC Autocad - Mechanical - Inventor - Electrical
chrchat Posté(e) le 1 mars 2004 Auteur Posté(e) le 1 mars 2004 oui, rien que le poste devient trop long et illisible, mais je ne sais pas comment faire pour amélioré la chose CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Patrick_35 Posté(e) le 1 mars 2004 Posté(e) le 1 mars 2004 houla, il ne faut pas mal prendre ma réponse, il est sur Labletech qu'on peut faire le lisp en deux ou trois lignes, je voulais juste montrer qu'il y a une autre manière de faire, et comme c'est pour apprendre, c’est de faire voir différentes fonctions avec des explications dans le cadre de l’exercice. En aucun cas, je n'ai jugé ton lisp. On est là soit pour donner des conseils ou apprendre différentes choses et pas pour commencer à se chamailler Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chrchat Posté(e) le 1 mars 2004 Auteur Posté(e) le 1 mars 2004 si ce poste devient un champs de bataille, c'est plus la peine moi j'abandonne. Je proposais juste pour les non initiés comme moi de prendre parts a un cour collectif. Mais comme le forum ne si prete pas je n'ais plus de solutions. :( CCAD la DAO au service de l'Energie - http://c.cad.free.fr
Patrick_35 Posté(e) le 1 mars 2004 Posté(e) le 1 mars 2004 Ce n'est rien Ecotec, juste une échauffourée, ce sont des choses qui arriventPour le poste un peu long, il suffit de faire un copier/coller sur le bloc-notes par exemple, puis le sauvegarder ou à l'imprimerPour continuer de progresser, il y a peut-être la solution de lancer différents sujets comme une fonction que l'on souhaite acquérir avec les explications du lisp, puis en regardant la source, essayer de comprendre, ou encore de voir avec Patrick si il peut animer ce style de débat @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés