Aller au contenu

liste des calques dans dessin


Messages recommandés

Posté(e)

 

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

Posté(e)

 

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

Posté(e)

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

Posté(e)

 

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)

Et encore, il a mis un (princ) à la fin parce qu'il est puriste, sinon, ça marcherait presque aussi bien sans... ;)

Posté(e)

 

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

Posté(e)

merci les gars

pour vos reponse claire

par 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

Posté(e)

 

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

Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

exacte

j'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 lisp

il charge bien et des que je lance la commande rien ne ce passe ?

 

d'ou ca peut venir d'apres vous ?

Posté(e)

 

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

Posté(e)

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.5

Spé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]: _w

Spécifiez la largeur: 0

TextMult: 0

3D_Murs

3D_Plafonds

3D_Planchers

ASHADE

Calque1

cartouche

cotation objet

cotation papier

Defpoints

Escalier

Escalier caché

Fenêtres

fenêtres présentation

Hachures

Plan

Portes

traits de construction

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

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 ?

Posté(e)

 

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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité