mlon Posté(e) le 18 octobre 2005 Posté(e) le 18 octobre 2005 j'ai écrit une petite rourine qui extrait le nom des calques et les place dans deux variables sous forme de liste1ere 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
Patrick_35 Posté(e) le 18 octobre 2005 Posté(e) le 18 octobre 2005 SalutIl 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 18 octobre 2005 Posté(e) le 18 octobre 2005 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 ./__\. (.°=°.)
Tramber Posté(e) le 18 octobre 2005 Posté(e) le 18 octobre 2005 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 ./__\. (.°=°.)
mlon Posté(e) le 19 octobre 2005 Auteur Posté(e) le 19 octobre 2005 Je n'aurais qu'une chose à dire :Ouuuuiiiiiiiiinnnnn!!!bon maintenant faut que j'examine les deux codes... je sais ce que je sais mais comment connaître mon ignorance
mlon Posté(e) le 19 octobre 2005 Auteur Posté(e) le 19 octobre 2005 ouais c'est sur pour le lisp j'aurais du y penser...enfin pour le vlisp je ne suis pas encore au point du tout!merci quand meme (c'est dans l'erreur qu'on progresse!) je sais ce que je sais mais comment connaître mon ignorance
Patrick_35 Posté(e) le 19 octobre 2005 Posté(e) le 19 octobre 2005 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 topEt comme le sous-entend mlon, chaque chose en son temps.. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 19 octobre 2005 Posté(e) le 19 octobre 2005 (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 ./__\. (.°=°.)
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