beeshop Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 bonjour a tous je cherche une commande pour lister les calques dans mon dessins par avance merci cordialement beeshop
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 ReCoucou Que veux tu exactement ? Un programme Lisp qui récupère la liste de tous les calques de ton dessin et qui génère automatiquement par exemple un superbe M-TEXTE avec la liste en question ? La liste manuelle dans l'Ecran Texte d'AutoCAD évoqué dans ton sujet précédent ne te suffit pas ? Ou bien ai je RIEN compris à ta demande ? Le Decapode Autodesk Expert Elite Team
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 en fait je cherche un lispqui me cree automatique dans mon dessinla liste des calques cordialement
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Re Si tu avais utilisé Google avec les mots clés suivants: layer list autolisp autocad tu aurais trouvé assez vite la routine AutoLisp qui suit ... Elle écrit dans un fichier Texte la liste des calques de ton dessin avec toutes leurs caractéristiques (en Anglais, je sais) ! Il suffit après de reprendre le fichier Texte dans Excel ou dans le Notepad.exe pour faire un Copier : Coller vers un Nouveau M-Texte dans AutoCAD ! Commande pour lancer la routine: LLFP !!! J'espère que le BBCode ne m'a pas bousillé mon Copier / Coller !!! ;;; Layer-list;;;;;; By Jimmy Bergmark;;; Copyright © 1997-2006 JTB World, All Rights Reserved;;; Website: www.jtbworld.com;;; E-mail: info@jtbworld.com;;; 2000-03-15;;;;;; c:llfp ;;; Save the layer list to a file, (can be imported to Excel);;;;;; Example: (ax:layer-list);;; Return values: list of layers and all layerstates;;; ( ;;; ) (defun ax:layer-list (/ lst layer colors color lw) (setq colors '("Red" "Yellow" "Green" "Cyan" "Blue" "Magenta" "White")) (vlax-for layer (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (setq color (vla-get-color layer)) (if ( (setq lw (vla-get-lineweight layer)) (if (= lw -3) (setq lw "Default") (setq lw (rtos (/ lw 100.0) 2 2))) (setq lst (cons (list (vla-get-name layer) (if (= (vla-get-layeron layer) :vlax-true) "On" "Off") (if (= (vla-get-freeze layer) :vlax-true) "Frozen" "Thawed") (if (= (vla-get-lock layer) :vlax-true) "Locked" "Not locked") color (vla-get-linetype layer) lw (vla-get-plotstylename layer) (if (= (vla-get-plottable layer) :vlax-true) "Plottable" "Not plottable") (if (= (vla-get-viewportdefault layer) :vlax-true) "Frozen" "Not frozen") ) lst)) ) (vl-sort lst (function (lambda (e1 e2) ( ) ) ) ) ;;; Writes layer list to specified file;;; (layer-list-fprint "test.txt");;; return: T if file was created, else nil(defun layer-list-fprint (fn / f row col) (if (setq f (open fn "w")) (progn ; print header (princ "\"Layer Name\" \"On\" \"Frozen\" \"Locked\" " f) (princ "\"Color\" \"Linetype\" \"Lineweight\" \"Plotstylename\" " f) (princ "\"Plottable\" \"Viewportdefault\"\n" f) (foreach row (ax:layer-list) (foreach col row (prin1 col f) (princ " " f) ; for tabulated (princ "\t" f) ) (princ "\n" f) ) (close f) T ) nil )) (defun c:llfp (/ fn) (if (setq fn (getfiled "Save layer list as" (strcat (vl-filename-base (getvar "dwgname")) ".txt") "txt" 1 ) ) (if (layer-list-fprint fn) (princ "\nLayer list created.") (princ "\nError: Layer list not created!") ) ) (princ)) Le Decapode "farfouillant" Autodesk Expert Elite Team
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Salut, Une demande claire a plus chance d'apporter une réponse claire : (defun c:liste_de_calque (/ txt clq) (setq clq (tblnext "LAYER" T)) (while clq (setq txt (cons (cdr (assoc 2 clq)) txt) clq (tblnext "LAYER") ) ) (setq txt (apply 'strcat (mapcar '(lambda (x) (strcat x "\n")) (acad_strlsort txt)) ) ) (command "_mtext" pause "_w" 0 txt "") (princ) ) Trié dans l'ordre alphabétique [Edité le 8/8/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 okmerci c'est ce que je cherchait je test ca
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Bonjour Eh OUI, c'est là que l'on voit la classe et surtout l'efficacité de Gilles ! Je ne suis pas développeur ... I am sorry ! Ton code est superbe et CONCIS Gilles !!! Le Decapode "admiratif" Autodesk Expert Elite Team
Invité Patrick Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Et encore, il a mis un (princ) à la fin parce qu'il est puriste, sinon, ça marcherait presque aussi bien sans... ;)
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Bonjour Wharf, wharf, Je vais pouvoir "raler" après (gile) pour sa routine qui déconne ! :) En fait sa routine est OK depuis AutoCAD 2004 jusqu'à AutoCAD 2007 = BRAVO :D Mais elle ne marche pas "complètement" avec un AutoCAD 2002 ou Inférieur !!! :o (setq txt (strcat txt (cdr (assoc 2 clq)) "\n") A cause de cette concaténation avec \n qui n'est pas interprété correctement par un vieux AutoCAD 2002 !!! ;) ;) ;) Tous les noms de calque sont sur la MEME ligne ! Youpee, Youpee, j'ai trouvé un micro-bug dans la routine de (gile) :exclam: :exclam: Le Decapode "chiant et critiquant et ralant" Autodesk Expert Elite Team
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Et en remplaçant "\n" par (chr 10) ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 merci les garspour vos reponse clairepar contre une autre question pour les lisp je ne sais pas les compiler quelq'un peut il me l'envoyer par mail cyrill.laurent@laposte.net merci et bonne fin de journée a tous
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 j'ai essayer de creer le lisp dans autocad le lisp c'est bien enregister je le lance et rien ne ce passe ? j'ai du zapper un truc
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Bonjour Désolé Gilles, mais ça ne passe pas même avec un CHR(10) ou CHR(13) pour rigoler ! :P Donc je suis obligé de te noter à 19/20 seulement ... Peut mieux faire !!! :) J'ai essayé la nouvelle version = IDEM Le Decapode (en recherche de la perfection) PS: En tant que Marseillais, si tu allais faire une pétanque avec un bon Pastis ! :D je suis sur que cela t'éclaircirait les idées !!! :cool: Autodesk Expert Elite Team
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Beeshop, regarde ici, par exemple pour charger un LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Holà décapode, et comme ça, ça marche sur une antique version ? (defun c:liste_de_calque (/ txt clq) (setq clq (tblnext "LAYER" T)) (while clq (setq txt (cons (cdr (assoc 2 clq)) txt) clq (tblnext "LAYER") ) ) (setq txt (acad_strlsort txt)) (command "_mtext" pause "_w" 0) (mapcar 'command txt) (command "") (princ) ) Je veux mon 20/20, moi ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Et ca : (setq result nil) (vlax-for i (vla-get-layers(vlax-get-property (vlax-get-acad-object) 'activedocument)) (setq result(append result(list(vla-get-name i))))) Ca doit marcher, même sur A2000 avec un (VL-LOAD-COM) au début. Dis-donc BEESHOP, t'as déjà posé la question y a 5 minutes, dans un autre forum. [Edité le 8/8/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Certes, Tramber. Mais le problème n'est pas tant de récupérer la liste des calques que d'en faire un mtext avec un saut de ligne après chaque calque (et les versions antérieures à 2004 ne reconnaissent pas "\n") Voir les sarcasmes du décapode réponse 8. [Edité le 8/8/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 exactej'ai deja poser la question mais la reponse ne m'a pas beaucoup aidéc'est pour ca que j'ai reformulé ma question qui d'ailleur je n'arrive pas a faire marcher ce lispil charge bien et des que je lance la commande rien ne ce passe ? d'ou ca peut venir d'apres vous ?
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Hello Gilles Je savais bien qu'il fallait t'aiguillonner un petit peu ... ;) Ca marche SUPER NICKEL CHROME, y compris sur un AutoCAD 2002 !!! :) :D :cool: Tu es le MEILLEUR sur TOUTES les versions d'AutoCAD !!! ;) Le Decapode "aiguillonnant" PS: Je t'octroie génèreusement 19.9 / 20 pour ce développement ! :P Autodesk Expert Elite Team
(gile) Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Salut, Si le LISP est correctement chargé, tu tapes liste_de_calque à la ligne de commande et tu lis : Commande: liste_de_calque_mtext Style de texte courant: "Standard". Hauteur de texte: 2.5Spécifiez le premier coin: tu spécifies le premier coin et le reste se fait tout seul : Spécifiez le coin opposé ou [Hauteur/Justifier/Espacement lignes/Rotation/Style/Largeur]: _wSpécifiez la largeur: 0TextMult: 03D_Murs3D_Plafonds3D_PlanchersASHADECalque1cartouchecotation objetcotation papierDefpointsEscalierEscalier cachéFenêtresfenêtres présentationHachuresPlanPortestraits de construction Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
beeshop Posté(e) le 8 août 2006 Auteur Posté(e) le 8 août 2006 ce lisp marche mais il ne me donne pas tous les calques !!! (setq result nil)(vlax-for i (vla-get-layers(vlax-get-property (vlax-get-acad-object) 'activedocument))(setq result(append result(list(vla-get-name i))))) j'ai zapper une fonction ?
lecrabe Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Re Gilles A propos Félicitations pour l'utilisation du M-TEXTE de largeur NULLE ! Pour BEESHOP, utilise plutot la nouvelle mouture du programme Lisp de Gilles, elle me semble parfaite !!! Le Decapode "que l'on bouffe avec de la Mayo et un bon petit vin blanc" PS: Enfin je pense que c'est surtout Gilles qui "me boufferait" ... Autodesk Expert Elite Team
Patrick_35 Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 http://www.yatoula.com/gif/dessin_animes/bande_dessinee_119.gifMiam...Miam @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 8 août 2006 Posté(e) le 8 août 2006 Et en remplaçant "\n" par (chr 10) ? Pour info plutôt "\n" par "\\P" Est ce que ce la fonctionne aussi pour > 2002 ? Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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