Aller au contenu

Inactiver calques, mais des objets?


bonuscad

Messages recommandés

Tout le monde sait que l'on peut inactiver ou activer un calque.

Mais saviez vous qu'il est possible d'inactiver ou activer un objet (rendre invisible/visible une entité)

Ce n'est pas une possibilité offerte dans les commandes standard, mais voilà comment on peut y arriver.

Après chargement:

commande E_OFF pour inactiver

commande E_ON pour réactiver

 

Hé c'est pour le fun ;) car je ne pense pas qu'il soit judicieux de travailler de cette manière.

(defun c:e_off ( / js_off n ent dxf_ent )
(princ "\nChoix des entités à inactiver: ")
(setq js_off (ssget) n 0)
(cond
	(js_off
		(repeat (sslength js_off)
			(setq
				ent (ssname js_off n)
				dxf_ent (entget ent)
			)
			(if (not (member '(60 . 0) dxf_ent))
				(entmod (append dxf_ent '((60 . 1))))
				(entmod (subst '(60 . 1) '(60 . 0) dxf_ent))
			)
			(setq n (1+ n))
		)
	)
	(T
		(princ "\nSélection vide.")
	)
)
(princ)
)
(defun c:e_on ( / js_off n js_swap n_swap ent ent_dxf js_on nb)
(setq js_off (ssget "_X" '((60 . 1))) n 0)
(cond
	(js_off
		(setq js_swap (ssget "_X"  '((-4 . ""))) n_swap 0)
		(cond
			(js_swap
				(repeat (sslength js_swap)
					(setq ent (ssname js_swap n_swap))
					(redraw ent 2)
					(setq n_swap (1+ n_swap))
				)
			)
		)
		(repeat (sslength js_off)
			(setq ent (ssname js_off n))
			(setq dxf_ent (entget ent))
			(entmod (subst '(60 . 0) '(60 . 1) dxf_ent))
			(entupd ent)
			(setq n (1+ n))
		)
		(princ "\nChoix des entités à réactiver: ")
		(setq js_on (ssget) n 0)
		(cond
			(js_on
				(repeat (sslength js_on)
					(if (ssmemb (ssname js_on n) js_off)
						(setq js_off (ssdel (ssname js_on n) js_off))
					)
					(setq n (1+ n))
				)
				(cond
					(js_off
						(setq nb 0)
						(repeat (sslength js_off)
							(setq ent (ssname js_off nb))
							(setq dxf_ent (entget ent))
							(if (not (member '(60 . 0) dxf_ent))
								(entmod (append dxf_ent '((60 . 1))))
								(entmod (subst '(60 . 1) '(60 . 0) dxf_ent))
							)
							(entupd ent)
							(setq nb (1+ nb))
						)
						(cond
							(js_swap
								(setq n_swap 0)
								(repeat (sslength js_swap)
									(setq ent (ssname js_swap n_swap))
									(redraw ent 1)
									(setq n_swap (1+ n_swap))
								)
							)
						)
					)
					(T
						(princ "\nAucune entité à réactivée!")
					)
				)
			)
			(T
				(princ "\nSélection vide.")
			)
		)
	)
	(T
		(princ "\nAucune entité à réactivée!")
	)
)
(princ)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut Pako

 

Exact!

 

Je me suis fais avoir par le copier-coller avec les caractères spéciaux qui sont mal interprétés par le BBcode

 

(setq js_swap (ssget "_X" '((-4 . " (cond a été tronqué

 

Ligne originale:

 

(setq js_swap (ssget "_X" '((-4 . "NOT") (60 . 1) (-4 . "NOT"))) n_swap 0)

(cond

 

en rajoutant manuellement et respectivement le symbole

INFERIEUR AVANT le 1er NOT et

SUPERIEUR APRES le 2eme NOT

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é