Aller au contenu

Filtrer suivant le Handle


Invité Sylvainhinard

Messages recommandés

Invité Sylvainhinard
Posté(e)

Bonjour,

 

J'ai crée un bloc "TRANCHEE" avec les attribut O40,O63,O80 et O110. J'ai utilisé la commande des Express Tools -> Blocs -> Export Attribute Information. J'obtient le fichiers texte dont je vous joins un extrait:

 

HANDLE BLOCKNAME O40 O63 O80 O110 LONGUEUR

'C5465 TRANCHEE 0 0 0 3 11.70

'C545E TRANCHEE 0 0 0 3 12.46

'C5455 TRANCHEE 0 0 0 3 15.65

'C544C TRANCHEE 0 0 0 5 20.39

 

Ma question est : Comment faire un filtre suivant les Handles pour selectionner des entités dans Autocad à partir d'un fichier texte de ce genre?

 

Merci Beaucoup à tous

 

Posté(e)

Bonjour,

 

dans les codes de groupes s'appliquant à toutes les entités, il y a le code DXF 5 qui représente l'identificateur. C'est une chose.

 

il y a aussi la commande (handent handle) qui permet de récupérer le nom d'une entité à partir du handle.

 

(setq e (handent "C5465")) revoie le nom de l'entité corrrespondant à "C5465" et la stocke dans e.

 

Le handle (ou identificateur) reste constant d'une session à l'autre, alors que le nom de l'entité peut changer.

 

Mais il serait peut être plus simple de filtrer directement les blocs "TRANCHEE" avec une commande :

 

(setq ss (ssget "_X" '((0 . "INSERT") (2 . "TRANCHEE"))))

 

sans utiliser les express tools, et d'extraire du jeu de sélection créé avec ce ssget ce qu'il te faut.

 

Mais quel est ton but ?

 

Amicalement

 

Zebulon_

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Invité Sylvainhinard
Posté(e)

Bonjour,

 

Zebulon_, en fait je voudrait filtrer mes blocs suivant les attributs. Par exemple selectionner tout les blocs "tranchee" dont l'attribut "longueur" à une valeur égale à "12.00". Je connait la commande filter mais on ne peut pas faire la manipulation que je souhaite.

 

Merci Beaucoup pour ton aide

 

Sylvain

Posté(e)

Salut,

 

Une routine LISP pour faire un jeu de sélection en filtrant les blocs du dessin suivant la valeur d'un attribut éditable.

 

On peut utiliser directement la sous routine att_filter en renseignant directement les arguments nom du bloc, nom de l'étiquette et valeur de l'attribut :

(att_filter "tranchee" "longueur" "12.0")

 

ou utiliser la commande att_fltr_sel et répondre aux invites à la ligne de commande.

 

Si la valeur de l'attribut et le filtre pour cette valeur sont des nombres (sous forme de chaine de caractère) il sont comparés comme des nombres : 12 = 12.0 = 12.00.

 

;; Retourne un jeu de sélection en filtrant le nom du bloc, et la valeur d'un attribut
(defun att_filter (bloc etiq val / ss n ref att att_lst)
 (if (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 bloc))))
   (repeat (setq n (sslength ss))
     (setq ref (ssname ss (setq n (1- n))))
     (setq att (entnext ref))
     (while (/= (cdr (assoc 0 (setq att_lst (entget att)))) "SEQEND")
(if (= (cdr (assoc 2 att_lst)) (strcase etiq))
  (if (and (numberp (read (cdr (assoc 1 att_lst))))
	   (numberp (read val))
      )
    (if	(/= (atof (cdr (assoc 1 att_lst))) (atof val))
      (ssdel ref ss)
    )
    (if	(/= (cdr (assoc 1 att_lst)) val)
      (ssdel ref ss)
    )
  )
)
(setq att (entnext att))
     )
   )
 )
 ss
)

;; Sélectionne tous les blocs du nom spécifié ayant la valeur spécifiée pour l'attribut spécifié
(defun c:att_fltr_sel (/ bloc etiq val)
 (setq bloc (getstring "\nEntrez le nom du bloc: "))
 (setq etiq (getstring "\nEntrez l'étiquette de l'attribut: "))
 (setq val (getstring "\nEntrez la valeur de l'attribut: "))
 (sssetfirst nil (att_filter bloc etiq val))
 (princ)
)

 

[Edité le 19/9/2006 par (gile)]

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é