Aller au contenu

Récupération données Gestionnaire de calque


Messages recommandés

Posté(e)

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

Posté(e)

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é

Posté(e)

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 dxf

Manque 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

Posté(e)

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]

Posté(e)

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

Posté(e)

(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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

Posté(e)

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

Posté(e)

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

 

 

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é