Aller au contenu

liste de calques


mlon

Messages recommandés

j'ai écrit une petite rourine qui extrait le nom des calques et les place dans deux variables sous forme de liste

1ere liste

listcalques sous forme ("calque1" "calque2" ......)

listpointcalques sous forme ( (0 . "calque1") (1 . "calque2") .......)

cette routine a besoin pour fonctionner de cle une autre routine (pas de moi ) mais que je joins également.

PS: s'il y avait une fonction qui le fesait ben tant pis!!!!

PS2 : si quelqu'un s'en sert répondez a ce post :-p

 

(defun cle (num en) (cdr (assoc num en)))

 

 

(defun c:mm_liste_calque ()

(setq calq0 (list (cle 2 (tblnext "layer" t)));extrait le premeir calque

inc 0

listpoint0 (list (cons inc (car calq0))) ;crée la premiere liste point

)

(setq calqtemp calq0 ; ben oui sans ça la boucle fonctione pas!

)

(while (/= nil (car calqtemp))

(progn

(setq calqtemp (list (cle 2 (tblnext "layer")))

inc (+ 1 inc)

)

(if (/= nil (car calqtemp))

(progn (setq listpointtemp (list (cons inc (car calqtemp))))

(setq calq0 (append calq0 calqtemp)

listpoint0 (append listpoint0 listpointtemp)

)

)end progn

);end if

);end progn

);fin boucle

(setq listcalques calq0

calq0 nil

inc nil

listpointtemp nil

listpointcalques listpoint0

listpoint0 nil

calqtemp nil

);end setq

);end defun

je sais ce que je sais mais comment connaître mon ignorance

Lien vers le commentaire
Partager sur d’autres sites

Salut

Il est possible de simplifier ta routine et j'ai remarqué quelle prenait en compte les xrefs. Je l'ai reprise afin de les éviter

 

@+

 

(defun c:mm_liste_calque (/ inc lay)
 (setq lay (tblnext "layer" t) inc 0 listcalques nil listpointcalques nil)
 (while lay
   (if (not (eq (logand (cdr (assoc 70 lay)) 16) 16)) ; ce n'est pas un xref
     (setq listcalques      (append listcalques      (list (cdr (assoc 2 Lay))))
           listpointcalques (append listpointcalques (list (cons inc (cdr (assoc 2 Lay)))))
           inc (1+ inc))
   )
   (setq lay (tblnext "layer"))
 )
)

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

Lien vers le commentaire
Partager sur d’autres sites

PS: s'il y avait une fonction qui le fesait ben tant pis!!!!

PS2 : si quelqu'un s'en sert répondez a ce post :-p

 

:D

 

L'intention compte....et tant que ca marche....

 

Et encore, Mlon, Patrick_35 n'a pas trop mis la pression, il aurait pu nous sortir la liste des calques en une seule ligne de code avec Vlisp !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

allez Hop, je le fais moi-même !

 

(VL-LOAD-COM)(setq li nil)
(reverse(vlax-for i(vla-get-Layers(vla-get-ActiveDocument(vlax-get-acad-object)))(setq li(cons(vla-get-Name i)li))))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

il aurait pu nous sortir la liste des calques en une seule ligne de code avec Vlisp !

Oui, mais du coup, avec le vlisp, on ne sait plus si le calque est dépendant ou non des xrefs, à moins de rechercher le caractère | dans le nom, mais je ne trouve pas ça top

Et comme le sous-entend mlon, chaque chose en son temps..

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

(VL-LOAD-COM)(setq li nil)
(vlax-for i(vla-get-Layers(vla-get-ActiveDocument(vlax-get-acad-object)))(if(not(vl-string-search "|" (vla-get-Name i)))(setq li(cons(vla-get-Name i)li))))
(reverse li)

 

C'est vrai que je n'ai pas trouvé d'autre façon de faire que de chercher "|" !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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é