rebcao Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Bonjour à Toutes et à Tous, J'ai une liste obtenue avec ( entget (entlast) ) qui contient deux CODES 10 en faisant un ASSOC on obtient toujours le 1er ??? Comment puis-je le forcer à chercher le 2e ? Ou comment puis-je découper une liste à partir du Nième ELEMENT et garder le reste. Je vous remercie. Christian 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 @)
(gile) Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Salut (assoc 10 (cdr (vl-member-if '(lambda (x) (= (car x) 10)) (entget (entlast))))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Ou encore : (assoc 10 (cdr (member (assoc 10 (entget (entlast))) (entget (entlast))))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Ou encore, s'il n'y a que deux groupes 10 : (assoc 10 (reverse (entget (entlast)))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Ou encore, bien mieux à mon avis, l'utilisation d'une fonction plus générique qui renvoie toutes les valeurs pour le code de groupe donné : ;; gc:massoc ;; Retourne la liste de toutes les valeurs pour le code spécifié dans une liste d'association ;; ;; Arguments ;; key : la clé à rechercher dans la liste ;; alst : une liste d'association (defun gc:massoc (key alst) (if (setq alst (member (assoc key alst) alst)) (cons (cdar alst) (gc:massoc key (cdr alst))) ) ) Pour obtenir le deuxième groupe 10 : (cadr (gc:massoc 10 (entget (entlast)))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Bonjour @rebcao En plus des solutions de (gile) je te propose de faire la liste de tous les codes 10 dans une liste issue d'un ENTGET sur une entité. Particulièrement intéressant pour extraire les sommets d'une polyligne. Dans le cas de ta demande, il te suffira de demander le (nth 1 lstsom) pour obtenir le deuxième code 10 Amicalement (setq ent (car (entsel))) ;; choix de l'entité à l'écran (setq listdxf (entget ent)) ;; création de la liste de sous-listes des éléments de définition de l'entité ;; dans la variable lstsom seront stockés tous les codes 10, soit des triplets xyz des vertices (setq lstsom (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) listdxf ) ) ) Éternel débutant... Mon site perso : Programmer dans AutoCAD
rebcao Posté(e) le 9 décembre 2022 Auteur Posté(e) le 9 décembre 2022 Super, merci à vous 2... Génial le coup du REVERSE... j'y avais pas pensé !!!!!! c'est l'âge... Merci Christian 1 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 @)
rebcao Posté(e) le 9 décembre 2022 Auteur Posté(e) le 9 décembre 2022 Autre souci lorsque je suis sur un SCU le point d'insertion (code 10) obtenu est celui du SCG ??? Je ne me rappelle pas de la fonction qui permet de transposer les coordonnées du SCU ? Je vous remercie. Christian 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 @)
didier Posté(e) le 9 décembre 2022 Posté(e) le 9 décembre 2022 Bonjour @rebcao c'est la fonction TRANS Aide mémoire : LIEN VERS MON SITE Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
rebcao Posté(e) le 9 décembre 2022 Auteur Posté(e) le 9 décembre 2022 Oui, je venais de la retrouver... Merci Didier... 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 @)
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