phil_vsd Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Bonjour, Ca fait quelques heures que je suis coincé sur un problème... :P Je cherche a sélectionner tous mes blocs anonymes qui contiennent l'attribut dont l'étiquette est "NGF_PROJET". Je me perds dans les tblsearch et autres subtilités qui pour moi sont des Everest ! Y'a une petit syntaxe qui fait ça ? Merci à vous ! :) "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
lili2006 Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Bonjour à toutes et tous, Personnellement, lorsque j'ai ce besoin, j'utilise "SSATT" des commandes de selection "sel" de (gile) Nécessite de selectionner l'attribut à filtrer, puis selection par fenêtre de capture ou entrée pour filtrer sur l'ensemble du dessin. Je pense être HS puisque c'est l'étiquette que tu cherches et l'écriture lisp,.. Une première piste,.... ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Salut, Voilà un petit truc très vite fait (pas pesté du tout...) La routine devrait retourner un jeu de sélection avec uniquement les bloc anonymes ayant un attribut dont l'étiquette est "NGF_PROJET" (defun sel_NGF_PROJET (/ ss n blk att ltag elst) (if ;; sélection des blocs anonymes ayant des attributs (setq ss (ssget "_X" '((0 . "INSERT") (2 . "`*U*") (66 . 1)))) (progn (setq n 0) ;; on parcourt le jeu de sélection (while (setq blk (ssname ss n)) (setq att (entnext blk) tag nil ) ;; on cherche dans chaque bloc un attribut dont l'étiquette est "NGF_PROJET" (while (and (not tag) (setq elst (entget att)) (= "ATTRIB" (cdr (assoc 0 elst))) ) (if (= "NGF_PROJET" (cdr (assoc 2 elst))) (setq tag T) (setq att (entnext att)) ) ) ;; si l'étiquette a été trouvée, ;; on passe au bloc suivant ;; sinon , on supprime le bloc du jeu de sélection (if tag (setq n (1+ n)) (ssdel blk ss) ) ) ss ) ) ) [Edité le 1/10/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Pour "grippe"r tous les blocs ayant un attribut avec la même étiquette que le bloc source (defun c:sstag (/ att elst tag ss n blk loop) (if (and (setq att (car (nentsel "\nSélectionnez l'attribut source: "))) (setq elst (entget att)) (= "ATTRIB" (cdr (assoc 0 elst))) (setq tag (cdr (assoc 2 elst))) ) (progn (setq ss (ssget "_X" '((0 . "INSERT") (66 . 1))) n 0 ) (while (setq blk (ssname ss n)) (setq att (entnext blk) loop T ) (while (and loop (setq elst (entget att)) (= "ATTRIB" (cdr (assoc 0 elst))) ) (if (= tag (cdr (assoc 2 elst))) (setq loop nil) (setq att (entnext att)) ) ) (if loop (ssdel blk ss) (setq n (1+ n)) ) ) (sssetfirst nil ss) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Re, (Gile) , peux-tu m'expliquer la (ou les!) différence(s) entre "SSATT" & "SSTAG" ? Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 SSATT: sélection des blocs (de même nom ou non suivant la version) ayant la même valeur d'attribut SSTAG : sélection des blocs ayant la même étiquette d'attribut Cette dernière n'a d'intérêt à mes yeux que si des blocs de nom différents possèdent un attribut dont l'étiquette est la même. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 1 octobre 2008 Posté(e) le 1 octobre 2008 Rere, J'avais donc bien compris la nuance, mais je n'étais pas sûr de ça => Cette dernière n'a d'intérêt à mes yeux que si des blocs de nom différents possèdent un attribut dont l'étiquette est la même. Merci. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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