Aller au contenu

Comment sélectionner des blocs imbriqués?


Invité Patrick

Messages recommandés

Comment faire une sélection de blocs imbriqués en Vlisp? Un bloc A contient un bloc B qui éventuellement contient un bloc C... Question qui se pose à moi: combien de blocs au total, A+B+C contient le dessin? Bien sûr, il est possible que A contienne deux blocs B comme il est possible qu'il n'en contienne aucun... :cool:

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Patrick,

 

Un début de réponse avec le code suivant qui te renseignera sur les blocs existant et les éventuels blocs qu'il peut contenir.

Le résultats ne veut pas dire qu'ils soient inseré, mais définis!

 

Il faudrait complèter le code pour faire des sélections avec les noms retournés par (ssget "_X" '

((2 . "nom du bloc"))).

 

(defun xplore (l / ent)
(princ (strcat "\nExplore le bloc " (cdr (assoc 2 l))))
(setq ent (entget (cdr (assoc -2 l))))
(cond
	((eq (cdr (assoc 0 ent)) "INSERT")
		(princ (strcat "\n Contient le bloc "(cdr (assoc 2 ent))))
		(while (setq ent (entnext (cdar ent)))
			(setq ent (entget ent))
			(if (eq (cdr (assoc 0 ent)) "INSERT")
				(princ (strcat "\n  Contient le sous-bloc "(cdr (assoc 2 ent))))
			)
		)
	)
)
)
(defun c:list_blk_children ( / first_blk l_blk n_blk)
(setq first_blk (tblnext "BLOCK" T))
(cond
	(first_blk
		(setq l_blk (list first_blk))
		(while (setq n_blk (tblnext "BLOCK"))
			(setq l_blk (cons n_blk l_blk))
		)
		(foreach n l_blk (xplore n))
	)
	(T
		(princ "\nPas de blocs définis!")
	)
)
(prin1)
)

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é