Aller au contenu

ssget et wild-card


zebulon_

Messages recommandés

Bonjour,

 

J'aimerais revenir sur ce sujet

http://www.cadxp.com/sujetXForum-7110.htm

où il était question des options de la fonction ssget.

 

Depuis, je n'utilise plus guère la fonction entsel, que je remplace par

 
(setq ss nil)
(while (not ss) (setq ss (ssget "_+.:e:s" '((0 . "INSERT")))))

puisqu'on peut directement filtrer la sélection.

 

Par contre, dans le lien ci-dessus, il n'est pas question de l'utilisation des wild-cards (*, ? #, @ etc...) dans les filtres. (voir aussi l'aide de la fonction wcmatch)

 

par exemple :

 
(setq ss (ssget "_x" '((0 . "INSERT") (2 . "toto*"))))

 

qui sélectionne tous les blocs dont le nom commence par toto.

 

C'est bien pratique, quelques fois et en plus, ça me rappelle des vieux souvenirs de MS-DOS. Toute ma jeunesse...

 

On en a peut-être déjà parlé ici, je ne sais pas. Avec 20 000 inscrits et plus de 50 messages par jour, on a du mal à suivre ;)

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Effectivement les filtres de sélection supportent l'utilisation des wild-cards.

 

Quelques exemples que je garde comme aide mémoire :

;;; Exemple de filtres de sélection (utilisation de "wild-card")

;;; Grippe toutes les entités dont le nom fini par LINE (LINE, POLYLINE, SPLINE, LWPOLYLINE)
;;; sauf les droites (XLINE) et les multilignes (MLINE)
((lambda (/ ss)
  (setq ss
  (ssget "_X"
	 '((-4 . "		   (0 . "*LINE")
	   (0 . "~X*")
	   (0 . "~M*")
	   (-4 . "and>")
	  )
  )
  )
  (sssetfirst nil ss)
)
)

;;; Grippe tous les cercles sur les calques 1 à 3
((lambda (/ ss)
  (setq ss (ssget "_X" '((0 . "CIRCLE") (8 . "Calque[1-3]"))))
  (sssetfirst nil ss)
)
)

;;; Grippe tous les objets qui ne sont pas sur des calques gelés
((lambda (/ ss)
  (setq ss (ssget "_A"))
  (sssetfirst nil ss)
)
)

;;; Grippe tous les objets construits dans un SCU non parallèle au SCG
((lambda (/ ss)
  (setq ss (ssget "_X" '((-4 . "!=") (210 0.0 0.0 1.0))))
  (sssetfirst nil ss)
)
)

;;; Grippe tous les cercles de rayons supérieur à 30 et inférieur ou égal à 40 ou égal à 50
((lambda (/ ss)
  (setq ss (ssget "_X"
	   '((0 . "CIRCLE")
	     (-4 . "		     (-4 . "		     (-4 . ">")
	     (40 . 30.0)
	     (-4 . "		     (40 . 40.0)
	     (-4 . "and>")
	     (-4 . "=")
	     (40 . 50.0)
	     (-4 . "or>")
	    )
    )
  )
  (sssetfirst nil ss)
)
) 

 

NOTA : Supprimer les espaces après les

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut

Pour (gile)

(ssget "_X"
'((-4 . "< and")
(0 . "*LINE")
(0 . "~X*")
(0 . "~M*")
(-4 . "and>")
)
)

peut aussi s'écrire

(ssget "_x" (list (cons 0 "*LINE,~X*,~M*")))

 

pour zebulon_

Rien n'interdit un

(setq ss (ssget "_+.:e:s" '((0 . "INSERT")(2 . "toto*"))))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

pour zebulon_

Rien n'interdit un

(setq ss (ssget "_+.:e:s" '((0 . "INSERT")(2 . "toto*"))))

 

Si c'est permis, on ne va pas se priver

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Les wild-card comme décrit dans (wcmatch) sont effectivement le seul moyen de faire des filtres sur les CHAINES de caractères pour (ssget).

 

Les test sur entier et réel se faisant avec les opérateur relationnel comme dans les exemples de Gilles

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é