Aller au contenu

Verrouiller tous les calques sauf un


Messages recommandés

Posté(e)

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 !

Posté(e)

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 Patrick

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

Joseph Joubert, 1754-1824

Posté(e)

Une façon de faire parmis tant d'autre, celle ci fait partie de celles qui peuvent être les plus concises en VL

Exemple:

 

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

Posté(e)

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

Posté(e)

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

Posté(e)
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

 

./__\.
(.°=°.)

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é