LUDWIG Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 Bonjour à tous, Me revoilà avec mes questions après une longue absence du forum... Je profite d'une période creuse :cool: pour enseigner les rudiments (enfin, les rudiments que je connais !) de Lisp à mes collègues :( . Et là, je ne sais pas trop comment expliquer la différence entre l'utilsation de CONS et de LIST, d'autant plus que ce n'est pas très clair dans ma tête :casstet: . J'ai regardé dans l'aide et dans AIDACAD, ça ne m'a pas vraiment éclairé. Je me souviens d'un sujet ou cette différence avait été abordée, mais je ne l'ai pas retrouvé. En fait, c'est en leur commentant un code que je suis tombé sur ce point : (setq jeu (ssget "X" ( [b] list [/b]( [b] cons [/b]0 "INSERT")( [b] cons [/b]410 n)))) Je comprends tout à fait la ligne (sélection des références de blocs dans la présentation n (dans une boucle foreach, n vaut d'abord "Model", puis "Présentation 1" etc). Quelqu'un saurait-il me faire comprendre ? Merci d'avance ! :heartpump: :present: Autocad 2021 - Revit 2022 - Windows 10
gile Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 Salut, Je vais essayer d'être clair : (list) regroupe un nombre queconque d'expressions dans une liste, (cons) ajoute un élément au début d'une liste ou construit un élément de liste associative (c'est le cas dans l'exemple que tu donnes) : (cons 0 "INSERT") renvoie (0 . "INSERT") (cons 410 n) évalue les arguments (n) et renvoie (410 . "model") et ( list (cons 0 "INSERT") (cons 410 n)) renvoie la liste constituée de ces deux éléments : ((0 . "INSERT") (410 . n)) Pour résumer, utilisé avec une liste comme second argument (cons) ajoute le premier argument en début de liste : (cons 'A '(B C D)) renvoie (A B C D) utilisé avec un élément (atom) comme second argument (con)s renvoie une paire : (cons 'A 'B) renvoie (A . B) [Edité le 31/8/2005 par gile]
BIM G CO Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 List te permet d'accéder de facon séquentielle à des données (setq liste (list 28.0 5.2 7.1))(nth 0 liste) donne 28.0mais (assoc 28.0 liste) provoque une erreurNota: (cdr liste) te donnera comme résultat une liste cons te permet d'accéder directement aux données sans avoir besoin de chercher ta référence ni de connaitre l'ordre des éléments (dotted pair)(setq liste (list (cons "Longueur" 28.0) (cons "Hauteur" 5.2) (cons "Profondeur" 7.1)))(nth 0 liste) donne ("Longueur" . 28.0)(assoc "Hauteur" liste) donne ("Hauteur" 5.2)(cdr (assoc "Hauteur" liste)) donne 5.2 (qui n'est pas une liste mais un réel) bon courage ;) Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
rebcao Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 voila un extrait de mon support de cours LISP Base... les Fonctions LIST et CONS... si ça t'intéresses tu peux trouver le support LISP 1 et 2 ici... via ALLOPASS... Christian [Edité le 31/8/2005 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
bonuscad Posté(e) le 31 août 2005 Posté(e) le 31 août 2005 Puisqu'on est dans le thème des manipulations de listes, Autre que les fonctions de base CONS et LIST, il y a aussi APPEND qui permet de concatener 2 listes en 1. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
LUDWIG Posté(e) le 5 septembre 2005 Auteur Posté(e) le 5 septembre 2005 Merci à tous ! Autocad 2021 - Revit 2022 - Windows 10
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