CTZen Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Bonjour à tous, Je cherche à exporter (ou tout du moins connaitre) la liste des calques utilisé par les objets sélectionné dans mon dessin. Dans l'autre sens ça fait "Je sélectionne des objets dans mon dessin et j'aimerai exporter la liste des calques dans lesquels ils se trouvent" <img src='http://cadxp.com/public/style_emoticons/<#EMO_DIR#>/laugh.gif' class='bbc_emoticon' alt=':(rires forts):' /> Est-ce que quelqu'un à une solution ? Merci beaucoup :) Charles AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
COME Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Bonjour, je ne l'ai pas sur mon PC mais Covadis ne propose pas une telle solution ? Bonne journée, COME La vie sans musique est tout simplement une erreur, une fatigue, un exil. »Friedrich Nietzsche
lili2006 Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Bonjour à toutes et tous,En effet, si tu as Covadis, c'est : Cov Edition => Calques => Listings des calquesMais cela te fera un listing de tous les calques du dessin !! Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
DenisHen Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Salut.Voilà, j'ai fais ce petit bout de Lisp pour faire la liste des calques des éléments sélectionnés :(defun c:LstCalq_Charles (/ Ent JsEnt i) (prompt "\n Selectionez les objets a traiter : ") (setq JsEnt (ssget)) (setq i 0) (princ "\nListe des calques :\n") (while (setq Ent (ssname JsEnt i)) (princ (cdr (assoc 8 (entget Ent)))) (princ "\n") (setq i (+ i 1)) ) ;_ Fin de while (princ) ) ;_ Fin de defun 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)
Patrick_35 Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Salut La même réponse que Denis qui a été le plus rapide.Je donne quand même ma solution.(defun c:lstc(/ ent lst sel) (and (ssget) (progn (vlax-for ent (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (or (vl-position (vla-get-layer ent) lst) (setq lst (cons (vla-get-layer ent) lst)) ) ) (vla-delete sel) (mapcar 'print lst) ) ) (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
DenisHen Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Salut. Même si nos deux codes font la même chose, on vois une différence énorme de niveau... ;) Quant à ma rapidité, j'ai peut-être fini avant toi, mais je suis sûr d'avoir commencer nettement avant... ;) J'ai essayé de faire la même chose que Patrick_35 : utiliser une liste pour pouvoir gérer les doublons et la trier par ordre alphabétique. Je me suis permis (excuse-moi Patrick_35) de reprendre le dernier code avec ces deux options :(defun c:LstCalq_Charles (/ ent lst sel) ;; Suprime tous les doublons d'une liste de (gile) (defun distinct (l) (if l (cons (car l) (distinct (vl-remove (car l) l))) ) ;_ Fin de if ) ;_ Fin de defun (and (ssget) (progn (vlax-for ent (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (or (vl-position (vla-get-layer ent) lst) (setq lst (cons (vla-get-layer ent) lst))) ) ;_ Fin de vlax-for (vla-delete sel) (setq LstCalq (vl-sort Lst '<)) (setq LstCalq (distinct LstCalq)) (mapcar 'print LstCalq) ) ;_ Fin de progn ) ;_ Fin de and (princ) ) ;_ Fin de defun 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)
Patrick_35 Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Tu peux reprendre le code, au contraire :DMais une chose , tu as déjà un filtre qui évite les doublons avec(or (vl-position (vla-get-layer ent) lst)...Traduction avec le or --> Si je n'ai pas la position du calque dans la liste, alors ... Ensuite, on peut aussi faire(mapcar 'print (vl-sort lst '<))Ce qui évite une variable @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Je me posais justement la question, que veut dire (or (vl-position J'ai ma réponse... ;) Ensuite :(mapcar 'print (vl-sort lst '<))Effectivement, mais je n'ai toujours pas la maîtrise de mapcar, ainsi que lambda... :huh: Quant au 'print, je suis sur le c*l... Une fonction qui se comporte comme une liste... C'est bien ça ? Je l'avais déjà lu dans un poste de (gile), mais jamais vu en code... J'ai encore beaucoup de chemin à faire... :mellow: 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)
Patrick_35 Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Non, on appelle directement la fonction, pas une liste En général, tu vois(mapcar '(lambda(x)(print x)) (vl-sort lst '<))car lambda est une fonction anonyme (defun imprime(doc) (print doc) ) (mapcar 'imprime (vl-sort lst '<))fonctionne aussi tout comme(mapcar 'print (vl-sort lst '<)) Si tu regardes certaines réponses de Bonus, tu verras qu'il se sert de la fonction lambda pour réaliser une routinePar exemple ps : ici, on pourrait très bien utiliser un foreach car le retour du mapcar importe peu, mais c'est pour économiser les variables. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Ok, merci pour ces précisions... Je comprends mieux... ;) Au fait, Charles T, ça te convient ce qu'on a fait ? 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)
lecrabe Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Hello Les Pros du Lisp / VLisp 1) Desole mais j'etais occupe cet AM ... 2) Neanmoins je participe (un peu tard) avec une routine en Stock de Marko Ribar Elle defile sur l'Ecran texte les Noms des calques + le Nombre d'objet par calque ! 3) En esperant que cela puisse vous etre agreable !? Bye, lecrabe ;; ;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/add-counter-to-lisp/td-p/7941574 ;; ;; Routine: Count_Objects_per_Layer by marko_ribar ;; (defun c:Count_Objects_per_Layer ( / ss n1 loop laylist layer n2 numlist stringlist listex ) ; mylist is global variable (princ "\nSelect objects to list used layers... ") (if (setq ss (ssget)) (progn (setq n1 (sslength ss)) (setq loop 0) (textscr) (repeat n1 (setq layer (cdr (assoc 8 (entget (ssname ss loop))))) (if (not (member layer laylist)) (setq laylist (cons layer laylist)) ) (setq loop (1+ loop)) ) (setq laylist (acad_strlsort laylist)) (setq mylist laylist) (setq n2 (length laylist)) (setq numlist 0) (setq stringlist "\nSelected Layers...\n") (princ "\n LayerName ( Count ) \n ") (repeat n2 (sssetfirst nil ss) (setq listext (nth numlist laylist)) (setq listext (strcat listext " ( " (itoa (sslength (ssget "_I" (list (cons 8 listext))))) " ) " )) (setq stringlist (strcat stringlist "\n " listext)) (setq numlist (1+ numlist)) ) (princ stringlist) (sssetfirst nil nil) ) (princ "\nNo Entities Selected... ") ) (princ) ) Autodesk Expert Elite Team
rebcao Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Bonjour, Je te propose de tester l'outil SCANDXF de Bryce ... Voir le sujet ici 100% compatible avec les versonsLT... 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 @)
Olivier Eckmann Posté(e) le 11 juin 2018 Posté(e) le 11 juin 2018 Bonjour, l'extraction de données devrait aussi donner satisfaction en ne sélectionnant que la propriété calque, avec export en tableau ou en fichier externe. Olivier
CTZen Posté(e) le 12 juin 2018 Auteur Posté(e) le 12 juin 2018 Wooooow ! Je ne pensais pas avoir autant de réponses en moins de 24h ! Je vais essayer toutes vos solutions !!! Vous êtes tous redoutablement efficaces !!!! 1000 mercis ! AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
CTZen Posté(e) le 12 juin 2018 Auteur Posté(e) le 12 juin 2018 Re ! J'ai fais le tour de vos charmantes solutions. Je vais partir sur les LISP de nos amis Patrick et Denis qui font simple et efficace ! En tout cas super ça fait franchement plaisir de voir autant d'engouement ! ;) AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
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