Aller au contenu

Messages recommandés

Posté(e)

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.

Posté(e)

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/

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é