Morgul Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Bonjour à tous, Il faut que je récupère les données de type gestionnaire de calques afin que je puisse faire un tableau contenant le nom des calques, leurs couleurs ainsi que leurs type de lignes. Je ne sais pas comment faire, avez vous une piste ? Merci. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
saamreivax Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Salut dans Covadis tu fais COVADIS2D->Listings->Listing par calques tu peux régler le fomat de tes listings avec COVADIS2D->Configuration des listings...et si tu choisi le format Txt tu peux avec read-ln lire dans un ton fichier et ainsi obtenir le nom des calques avec leur couleur le type de ligne et le nombre d'objets sinon tu as (tbnext "layer" T) mais je sais pas trop l'utilisé
LUDWIG Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Voici un petit lisp que j'avais sous la main Manque le type de ligne, il suffit d'ajouter la ligne récupérant le bon code dxfManque le nombre d'objet, et là c'est autre chose... ;********************************************************************************************************************************************************** ;Liste des calques ;********************************************************************************************************************************************************** ; écrit la liste des calques sélectionnés dans un fichier csv même nom et même répertoire que le dessin (defun c:listcalq () (setq calq (tblnext "layer" T)) (setq enr (strcat (getvar "dwgprefix") (substr (setq fichier (getvar"dwgname")) 1 (- (strlen fichier) 4))".csv"));on définit chemin+nom du fichier à écrire (setq fichier (open enr "w"));on ouvre le fichier à écrire (s'il n'existe pas, il est créé ; s'il existe, il sera réécrit) (setq dwg (strcat (getvar "dwgprefix")(getvar"dwgname"))) ;(setq enr "c:\\LISTE.csv") ;(setq fichier (open enr "a")) (while calq (setq nom (cdr(assoc 2 calq))) (setq couleur (itoa (cdr(assoc 62 calq)))) (setq ligne (strcat dwg ";" nom ";" couleur)) (write-line ligne fichier) (setq calq (tblnext "layer")) ) (close fichier) ) Autocad 2021 - Revit 2022 - Windows 10
saamreivax Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Salut, voici ton lisp avec les modifs suivantes :- comptage du nombre d'éléments- je me suis permis de modifier ton code pour la couleur car elle ne peut pas être négative (defun c:listcalq () (setq calq (tblnext "layer" T)) (setq enr (strcat (getvar "dwgprefix") (substr (setq fichier (getvar "dwgname")) 1 (- (strlen fichier) 4) ) ".csv" ) ) ;on définit chemin+nom du fichier à écrire (setq fichier (open enr "w")) ;on ouvre le fichier à écrire (s'il n'existe pas, il est créé ; s'il existe, il sera réécrit) (setq dwg (strcat (getvar "dwgprefix") (getvar "dwgname"))) ;(setq enr "c:\\LISTE.csv") ;(setq fichier (open enr "a")) (while calq (setq nb_obj 0) (setq nom (cdr (assoc 2 calq))) (print(setq nb_obj (ssget "_X" (list (cons 8 nom))))) (if (= nb_obj nil) (setq nb_obj 0) (setq nb_obj (sslength nb_obj)) ) (setq couleur (itoa (abs (cdr (assoc 62 calq))))) ;; Si le code 62 est négatif le calque est inactif (setq ligne (strcat dwg ";" nom ";" couleur ";" (itoa nb_obj) ) ) (write-line ligne fichier) (setq calq (tblnext "layer")) ) (close fichier) ) bonne soirée [Edité le 8/11/2006 par saamreivax]
(gile) Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Salut, En m'inspirant de ce sujet, un petit LISP qui créé directement un tableau. (defun c:laytable (/ AcDoc Space nlst clst tlst ins table cnt) (vl-load-com) (setq AcDoc (vla-get-activedocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vlax-for lay (vla-get-Layers AcDoc) (setq nlst (cons (vla-get-Name lay) nlst) clst (cons (vla-get-ColorIndex (vla-get-TrueColor lay)) clst) tlst (cons (vla-get-Linetype lay) tlst) ) ) (setq nlst (cons "Nom" nlst) clst (cons "Couleur" clst) tlst (cons "Type de ligne" tlst) ) (initget 1) (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq table (vla-addTable Space (vlax-3d-point ins) (length nlst) 3 20 100 ) ) (vla-put-TitleSuppressed table :vlax-true) (setq cnt -1) (repeat (vla-get-Rows table) (vla-setText table (setq cnt (1+ cnt)) 0 (nth cnt nlst) ) (vla-setText table cnt 1 (nth cnt clst) ) (vla-setText table cnt 2 (nth cnt tlst) ) (vla-setCellAlignment table cnt 0 5) (vla-setCellAlignment table cnt 1 5) (vla-setCellAlignment table cnt 2 5) ) (princ) ) [Edité le 8/11/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 (gile)pour faire un peu plus vlisp ;) (setq Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) )peut donner(setq Space (if (zerop (vla-get-activespace AcDoc)) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) )) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Le problème c'est que (vla-get-activespace AcDoc) retourne 0 quand on est dans l'espace objet d'une fenêtre de l'espace papier. Et je pars du postulat que si une fenêtre est active, c'est pour dessiner dans l'espace objet... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 8 novembre 2006 Posté(e) le 8 novembre 2006 Bien vu @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Morgul Posté(e) le 10 novembre 2006 Auteur Posté(e) le 10 novembre 2006 Bonjour et Merci à tous, C'est super cool de me répondre ! Je vais mixer tout cela et je devrais m'en sortir. Merci encore. Il n'y a pas d'homme cultivé, il n'y a que des hommes qui se cultivent. Maréchal Foch
sergeluc Posté(e) le 10 novembre 2006 Posté(e) le 10 novembre 2006 Bonjour,Une petite parenthèse ,la routine "laytable" fonctionne en autocad 2006 fr,en 2004fr l'insertion du tableau semble ne pas se faire ,en autocad 2000 fr les tables n'existent pas .tout cela pour dire ,attention aux versions d'autocad utilisées surtout avec les fonctions"vla-................get-TrueColor........."
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