brunomu Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Bonjour tout le monde (c'est mon premier post, je suis un peu intimidé parmi toutes ces ceintures noires...) Voilà: je cherche à faire un lisp qui permette de verrouiller tous les calques sauf celui de l'entité sur laquelle je clique.Et j'y arrive pô ! Help !
Patrick_35 Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Salut (c'est mon premier post, je suis un peu intimidé parmi toutes ces ceintures noires...) C'est les plus bavards, il ne faut pas ;) Sinon voici le lisp (defun c:verr(/ ent lay lays) (if (setq ent (car (entsel "\nSélectionnez votre entité : "))) (progn (setq lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) ent (entget ent)) (vlax-for lay lays (if (not (eq (vla-get-name lay) (cdr (assoc 8 ent)))) (vla-put-lock lay :vlax-true) (vla-put-lock lay :vlax-false) ) ) (princ (strcat "\nVerrouillage de " (itoa (1- (vla-get-count lays))) " calque(s)")) (princ) ) ) )@+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Une façon de faire parmis tant d'autre, celle ci fait partie de celles qui peuvent être les plus concises en VLExemple: ((lambda ( / ent lay_name lay_obj) (while (not (setq ent (entsel "\nChoix d'une entité: ")))) (setq lay_name (cdr (assoc 8 (entget (car ent))))) (setq lay_obj (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for for-item lay_obj (cond ((eq (vla-get-Name for-item) lay_name) (vla-put-Freeze for-item :vlax-false) (vla-put-Lock for-item :vlax-false) (vla-put-LayerOn for-item :vlax-true) ) (T (vla-put-Lock for-item :vlax-true) ) ) ) (setvar "CLAYER" lay_name) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
bonuscad Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Ben :exclam: On fait de la télépathie avec Patrick_35 ;) Battu sur 2 mm. :casstet: On dit parfois que Les grands esprits se rejoingnent, alors à bientôt Patrick, bien que je ne me prenne pas pour une "grosse tronche" :cool: [Edité le 13/5/2006 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Salut, On peut aussi le faire en AutoLISP, en parcourant les tables des claques : (defun c:lock_but (/ ent lay) (while (not (setq ent (car (entsel "\nSélectionnez le calque à ne pas vérouiller: ") ) ) ) ) (setq lay (tblnext "LAYER" T)) (while lay (if (/= (cdr (assoc 8 (entget ent))) (cdr (assoc 2 lay))) (command "_-layer" "_lock" lay "" "") ) (setq lay (tblnext "LAYER")) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
brunomu Posté(e) le 13 mai 2006 Auteur Posté(e) le 13 mai 2006 Merci, merci, merci. Avec ces 3 réponses, je vais verrouiller mes calques 3 fois plus vite. Respect, respect, respect. :D :D :D
Patrick_35 Posté(e) le 13 mai 2006 Posté(e) le 13 mai 2006 Salut BonusJe vois avec plaisir que tu commences à toucher au vlisp :cool: @+ 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 13 mai 2006 Posté(e) le 13 mai 2006 On peut aussi le faire en AutoLISP, en parcourant les tables des claques : Elles sont classées de caresses à grosses trempes :D Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 14 mai 2006 Posté(e) le 14 mai 2006 Des fois je me donnerais des calques ! Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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