Aller au contenu

Routines pour TEXT/MTEXT - Inférieur/Supérieur


lecrabe

Messages recommandés

 

Hello

 

Merci d'avance à Bred, Gilles, Patrick, etc

 

Dans un genre un peu différent de ce que j'avais demandé il y a une semaine, j'aurais besoin SVP d'une routine "simple" sur les TEXT/MTEXT numériques pour pouvoir sélectionner CEUX dont la velur numérique est soit inférieur, soit supérieur à une valeur donnée !

 

Par exemple, trouvez TOUS les textes du dessin (Dessin entier dans tous les onglets) ou une SELECTION "manuelle classique" pour les sélectionner dont la valeur est soit inférieure, soit supérieure, afin de par exemple les transférer sur un autre calque, forcer la couleur, écraser globalement la valeur par la case de dialogue des propriétés, les effacer, etc ...

 

Trouves TOUS les TEXT/MTEXT (Dessin entier) dont la valeur est supérieure à 15.50 par exemple ...

 

Trouves les TEXT/MTEXT de ma sélection dont la valeur est inférieure à 10 (ou à ZERO) par exemple ...

 

Le Decapode qui tripote les textes comme un fou !

 

 

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut,

à tester :

 

(defun c:selvaltxt (/ I Q SEL SEL-T VAL VAL-MAXI VAL-MINI)
 (princ "\n Sélection de Texte numérique par Fourchette de valeur.")
 (setq val-mini (getreal "\n Valeur minimum :")
val-maxi (getreal "\n Valeur Maximum :")
sel-T (ssadd))
 (initget "S T")
 (setq Q (getkword "\n Sélection ou Tous (S/T) ? < S >"))
 (if (equal Q "T")
   (setq sel (ssget "_X" (list (cons 0 "TEXT,MTEXT"))))
   (setq sel (ssget (list (cons 0 "TEXT,MTEXT"))))
   )
 (sssetfirst nil nil)
 (repeat (setq i (sslength sel))
   (setq val (atof (cdr (assoc 1 (entget (ssname sel (setq i (1- i))))))))
   (if (and (>= val val-mini)
     (<= val val-maxi))
     (ssadd (ssname sel i) sel-T)
     )
   )
 (sssetfirst nil sel-T)
(if (> (sslength sel-T) 1)
   (princ (strcat "\n"(rtos (sslength sel-T)) " Textes sélectionnés." ""))
   (princ (strcat "\n"(rtos (sslength sel-T)) " Texte sélectionné." "")))
 (princ)
 )

 

[Edité le 26/7/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Je confirme c'est nickel sur la version 2005 et de surcroît très interressant et tès utile.

Une toute petite question par contre, peut-on faire en sorte qu'il ne prenne pas en compte une ou plusieurs valeurs entre le mini et le maxi choisis préalablement...?

EXEMPLE:

valeur mini ==> 1

valeur maxi ==> 10

.....mais je ne veux pas qu'il y ait le 3 et le 7 (ou plus d'ailleurs) pris en compte.

Oran ;) ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

.....mais je ne veux pas qu'il y ait le 3 et le 7 (ou plus d'ailleurs) pris en compte.

à tester :

 

;;;;;;;;;;;;;;;;;;;
;;; Selectionne texte valeur numérique compris entre ...
;;; mais exclus valeur donné
(defun c:selvaltxtex (/ I Q SEL SEL-T VAL VAL-MAXI VAL-MINI LST-VAL-EXCLU VAL-EXCLU)
 (princ "\n Sélection de Texte numérique par Fourchette de valeur.")
 (setq val-mini (getreal "\n Valeur minimum :")
val-maxi (getreal "\n Valeur Maximum :")	
sel-T (ssadd)
lst-val-exclu nil
val-exclu 1)
 
 (while val-exclu
   (setq val-exclu (getreal "\n Valeur à exclure : < Q >"))
   (if val-exclu
     (setq lst-val-exclu (append (list val-exclu) lst-val-exclu)))
   )     
   
 (initget "S T")
 (setq Q (getkword "\n Sélection ou Tous (S/T) ? < S >"))
 (if (equal Q "T")
   (setq sel (ssget "_X" (list (cons 0 "TEXT,MTEXT"))))
   (setq sel (ssget (list (cons 0 "TEXT,MTEXT"))))
   )
 (sssetfirst nil nil)
 
 (repeat (setq i (sslength sel))
   (setq val (atof (cdr (assoc 1 (entget (ssname sel (setq i (1- i))))))))
   (if (and (>= val val-mini)
     (<= val val-maxi)
     (not (member val lst-val-exclu)))
     (ssadd (ssname sel i) sel-T)
     )
   )
 (sssetfirst nil sel-T)
(if (> (sslength sel-T) 1)
   (princ (strcat "\n"(rtos (sslength sel-T)) " Textes sélectionnés." ""))
   (princ (strcat "\n"(rtos (sslength sel-T)) " Texte sélectionné." "")))
 (princ)
 )

 

Edit : hop là : le bbcode "< S >" me barrait le code....

 

[Edité le 26/7/2007 par Bred]

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

OK ça fonctionne à merveille....chapeau bas, c'est clair, c'est net et c'est rapide.... ;)

Je vous envie de pouvoir faire ce genre de programmation. Comment apprendre lorsque l'on est GRAND débutant ??? Y a t-il des ouvrages préconisés, des sites (français si possible...et oui..!!) faut-il faire un stage....etc ??

 

Oran ;)

Lien vers le commentaire
Partager sur d’autres sites

Comment apprendre lorsque l'on est GRAND débutant ??? Y a t-il des ouvrages préconisés, des sites (français si possible...et oui..!!) faut-il faire un stage....etc ??

Cela dépends de chacun : pour moi, j'ai commencé en ne savant rien, et en cherchant, et surtout en demandant de l'aide dans CADxp, j'en suis là....

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

J'ai en sortie de tes routines Lisp, la micro-erreur suivante :

; erreur: no function definition: PRINC_INFO

Hop là !

Une sous-routine d'info que je n'ai pas mis... mais inutile.

j'ai modifié les codes ci-dessus.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Maintenant j'ai une autre erreur :

; erreur: type d'argument incorrect: stringp 6

 

Tu n'aurais pas oublié un RTOS qq part !?

 

C'est S'là oui....

 

Corrigé....

 

Désolé .... :calim:

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

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é