Aller au contenu

[Résolu] Commande QSELECT


Messages recommandés

Posté(e)

Bonjour,

 

Est il possible de ne pas afficher la boite de dialogue de la commande QSELECT ? (c'est pour l'inclure dans un script)

 

Merci d'avance.

 

Benoit.

 

[Edité le 2/2/2007 par Benoit71]

Posté(e)

J'ai déjà cherché, jamais trouvé.... (ce qui ne veux pas dire que ça n'axiste pas... :P )

Mais dit nous ce que tu veux faire exactement, il y a d'autre possibilité !.... (tu es sous 2006, on peux y inclure des commandes lisp)

 

[Edité le 30/1/2007 par Bred]

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

Posté(e)

Merci Bred et oui je suis en 2006.

 

Je vous explique mon besoin, dans certains calques je dois sélectionner uniquement le texte pour modifier la police d'écriture ainsi que la hauteur du texte. Je dois traiter les calques séparement car selon le calque ce n'est pas la même police ou hauteur de texte.

 

C'est pour cela que j'aurai aimé faire un script avec QSELECT et pouvoir changer les propriétés nécessaires.

 

Merci par avance pour vo réponses.

Posté(e)

En lisp : (pour les mtext) :

 

 (defun c:sel-txt (/ ALQ-TXT QUEST SELTX)

 (setq seltxt nil)
 (princ "\ Sélectionner le texte à Modifier :")
 (while (= seltxt nil)
(setq seltxt (ssget "_:S:E" '((0 . "MTEXT")))))
 
 (setq calq-txt (cdr (assoc 8 (entget (ssname seltxt 0)))))
 
 (initget "C T")
 (setq Quest (getkword "\n Choix ou Total (C / T)?  "))
 (if (equal Quest "C")
   (setq seltxt (ssget (list '(0 . "MTEXT")(cons 8 calq-txt))))
   (setq seltxt (ssget "_X" (list '(0 . "MTEXT")(cons 8 calq-txt))))
   )
 (if (zerop (getvar "cmdactive"))(sssetfirst nil seltxt))
 (if (> (sslength seltxt) 1)
   (princ_info (sslength seltxt) " Textes sélectionnés." "")
   (princ_info (sslength seltxt) " Texte sélectionné." ""))
 (prin1)
 )

 

... l'adapter en script, je ne sais pas ....

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

Posté(e)

Merci encore, par contre je ne comprend rien au Lisp.

 

Si il faut faire ca en Lisp pas de soucis mais il me faudrai un minimum d'explication svp car la pour moi c'est du chinois :s

 

Si je peut creer une commande de ce Lisp (avec un raccourci clavier) je tenterai de la mettre dans un script car je voudrai faire du traitement par Lot.

 

Encore merci.

 

PS: les noms des calques sont connus (exemple : LIMITE-PARCELLE-TXT-)

Posté(e)

Lisp :

l'une de manière : (la + "simple" pour débuter)

 

Tu copies le code dans un bloc note que tu nommes et enregistre comme tu veux en mettant comme extension .lsp

 

Puis tu vas dans Autocad, tu va dans Outils / Charger une Application

Dans la boite de dialogue tu as une valise : tu delectionne "contenu"

 

... et là tu vas chercher le fichier .lsp que tu as enregistrer precedement.

 

Tu auras dorénavant une nouvelle commande dans autocad nommé "InsertBlocsel" (tape là au clavier)

 

Le lisp sera alors charger à chaque démarage. Il y a d'autre manières....

 

Pour info, si tu veux raccourcir le nom de la commande au clavier tu met ce que tu veux comme commande à la place de "sel-txt" dans

  (defun c: [b] sel-txt[/b] (/ ALQ-TXT QUEST SELTX)............

 

(laisse le c: )

 

[Edité le 30/1/2007 par Bred]

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

Posté(e)
En lisp : (pour les mtext) :

 

 (defun c:sel-txt (/ ALQ-TXT QUEST SELTX)

 (setq seltxt nil)
 (princ "\ Sélectionner le texte à Modifier :")
 (while (= seltxt nil)
(setq seltxt (ssget "_:S:E" '((0 . "MTEXT")))))
 
 (setq calq-txt (cdr (assoc 8 (entget (ssname seltxt 0)))))
 
 (initget "C T")
 (setq Quest (getkword "\n Choix ou Total (C / T)?  "))
 (if (equal Quest "C")
   (setq seltxt (ssget (list '(0 . "MTEXT")(cons 8 calq-txt))))
   (setq seltxt (ssget "_X" (list '(0 . "MTEXT")(cons 8 calq-txt))))
   )
 (if (zerop (getvar "cmdactive"))(sssetfirst nil seltxt))
 (if (> (sslength seltxt) 1)
   (princ_info (sslength seltxt) " Textes sélectionnés." "")
   (princ_info (sslength seltxt) " Texte sélectionné." ""))
 (prin1)
 )

 

... l'adapter en script, je ne sais pas ....

 

Si j'ai bien compris la sa selection les textes de tous les calques finissant par -TXT, c'est bien ça ?

 

Si oui c'est pas vraiment ce que je recherche :(

 

Pour plus d'explication je met la liste des calques et les propriété à modifier :

 

HYDROGRAPHIE-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

LIMITE-COMMUNE-TXT- ==> hauteur de texte = 10 / style de texte = ARIAL00

LIMITE-DEPARTEMENT-TXT- ==> hauteur de texte = 10 / style de texte = ARIAL00

LIMITE-LIEUDIT-TXT- ==> hauteur de texte = 5.5 / style de texte = ARIAL00 / justification = Millieu Centre

LIMITE-PARCELLE-TXT- ==> hauteur de texte = 5 / style de texte = ROMANS00 / justification = Millieu Centre

LIMITE-SECTION-TXT- ==> hauteur de texte = 10 / style de texte = ARIAL00 / justification = Millieu Centre

RESEAU-GAZ-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

RESEAU-HTA-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

RESEAU-HTB-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

VOIE-CIRCULATION-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

VOIE-FERREE-TXT- ==> hauteur de texte = 3.5 / style de texte = ROMANS00

 

Cette liste ne changera pas, c'est pour cela que je voulais l'automatiser pour modifier les plan de cadastre que l'on reçoit en .DXF

 

Si je peux mettre ca dans une commande lisp avec raccouci clavier je pourrai je pense l'inclure dans un script.

 

Merci d'avance pour votre aide.

Posté(e)

Si j'ai bien compris la sa selection les textes de tous les calques finissant par -TXT, c'est bien ça ?

non

 

Je vous explique mon besoin, dans certains calques je dois sélectionner uniquement le texte pour modifier la police d'écriture ainsi que la hauteur du texte. Je dois traiter les calques séparement car selon le calque ce n'est pas la même police ou hauteur de texte.

 

donc :

1-/ le lisp demande de selectionner un texte

 

2-/ puis demande de choisir entre l'option "Choix" ou "Total" :

si "C" : on selectionne tout les texte (ou objet) que l'on désires : le programme triras pour ne laisser que les textes étant dans le même calque que le texte selectionné en 1/

si "T" : Tous les textes appartennant au calque dont le 1er texte à été selectionner sera selectionné.

 

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

Posté(e)
donc :

1-/ le lisp demande de selectionner un texte

 

2-/ puis demande de choisir entre l'option "Choix" ou "Total" :

si "C" : on selectionne tout les texte (ou objet) que l'on désires : le programme triras pour ne laisser que les textes étant dans le même calque que le texte selectionné en 1/

si "T" : Tous les textes appartennant au calque dont le 1er texte à été selectionner sera selectionné.

 

Merci beaucoup ;) maintenant il faut que je vois comment selectionner mon texte dans un script... :s possible de selectionner le texte par rapport à sa couleur ?

Posté(e)

comment selectionner mon texte dans un script

Le lisp le demande : dans la macro bouton, ^C^Csel-txt suffit pour le lancer ....

 

possible de selectionner le texte par rapport à sa couleur ?

et différent de

Je dois traiter les calques séparement car selon le calque ce n'est pas la même police ou hauteur de texte.

 

mais : oui, il faut changer le filtre du calque par celui de la couleur : c'est une commande différente que tu veux ou une option dans la commande précédente ?

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

Posté(e)

1-/ le lisp demande de selectionner un texte

 

C'est juste ça qui me pose soucis pour le script.

 

Sinon j'ai essayé le Lisp mais il me demande de sélectionner l'objet et apres rien de se passe, je n'ai pas acces au options.

 

Encore merci beaucoup.

Posté(e)

 

chez moi ça fonctionne ....

 

Commande:

SEL-TXT Sélectionner le texte à Modifier :

Choix des objets:

Choix ou Total (C / T)? c

Choix des objets: Spécifiez le coin opposé: 3 trouvé(s)

Choix des objets:

----------------------------

3 Textes sélectionnés.

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

Posté(e)

Le même lisp, mais avec l'option du choix annulé (je l'ai mis en commentaire : enleves les ";" si tu veux les retrouver)

Le lisp te selectionneras d'office TOUS les textes sur le même calque.

 

 (defun c:sel-txt (/ ALQ-TXT QUEST SELTX)

 (setq seltxt nil)
 (princ "\ Sélectionner le texte à Modifier :")
 (while (= seltxt nil)
(setq seltxt (ssget "_:S:E" '((0 . "MTEXT")))))
 
 (setq calq-txt (cdr (assoc 8 (entget (ssname seltxt 0)))))
 
 ;(initget "C T")
 ;(setq Quest (getkword "\n Choix ou Total (C / T)?  "))
 ;(if (equal Quest "C")
  ;(setq seltxt (ssget (list '(0 . "MTEXT")(cons 8 calq-txt))))
   (setq seltxt (ssget "_X" (list '(0 . "MTEXT")(cons 8 calq-txt))))
   ;  )
 (if (zerop (getvar "cmdactive"))(sssetfirst nil seltxt))
 (if (> (sslength seltxt) 1)
   (princ_info (sslength seltxt) " Textes sélectionnés." "")
   (princ_info (sslength seltxt) " Texte sélectionné." ""))
 (prin1)
 )

 

[Edité le 31/1/2007 par Bred]

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

Posté(e)

Bonjour,

 

Si on veux faire sans lisp, juste en macro ou script on peut faire ceci pour sélectionner tous les textes du calque LIMITE-PARCELLE-TXT (par exemple)

 

^C^Cssx;;e;mtext;la;LIMITE-PARCELLE-TXT;;pselect;p;;

pour des textes multilignes

 

^C^Cssx;;e;text;la;LIMITE-PARCELLE-TXT;;pselect;p;;

pour des textes sur une seule ligne.

 

Note : SSX est une fonction du menu express, il faut donc qu'il soit installé pour que cela fonctionne

De ce fait cela ne fonctionnera pas sur AutoCAD LT

Posté(e)

Bonjour à tous,

 

Merci pour votre aide, mon script fonctionne correctement grace à vous ;)

Je met mon script ci dessous cela pourra peut etre aider quelqu'un d'autre.

 

CMDDIA

0

FILEDIA

0

ZOOM

ET

LAYDEL

T

3SUBDFISCTEX

T

1SUBDFISC

T

3BORNE

T

3CADB

T

1SUBDSECT

T

1FLECHEFL

T

3DIVERS

T

3TOPOLINE

T

3TOPOLINETEX

 

Y

PURGETOUT

-STYLE

ROMANS00

ROMANS

 

 

 

 

 

 

-STYLE

ARIAL00

ARIAL

 

 

 

 

 

SSX

 

E

TEXT

LA

LIMITE-PARCELLE-TXT-

 

CHT

P

 

H

5

S

 

ROMANS00

 

TJUST

P

 

MC

SSX

 

E

TEXT

LA

LIMITE-LIEUDIT-TXT-

 

CHT

P

 

H

5.5

S

 

ARIAL00

 

TJUST

P

 

MC

SSX

 

E

TEXT

LA

VOIE-CIRCULATION-TXT-

 

CHT

P

 

H

3.5

S

 

ROMANS00

 

SSX

 

E

TEXT

LA

HYDROGRAPHIE--TXT-

 

CHT

P

 

H

3.5

S

 

ROMANS00

 

SSX

 

E

TEXT

LA

LIMITE-SECTION-TXT-

 

CHT

P

 

H

10

S

ARIAL00

 

TJUST

P

 

MC

CMDDIA

1

FILEDIA

1

_SAVEAS

 

 

CMDDIA

1

FILEDIA

1

_CLOSE

 

Selon mes besoins le script supprime des calques inutiles (même non vide) purge tout, ensuite creation de type de texte, selection de texte dans un calque précis et modification des proprités répétitives ;)

Il y a peut être plus simple en lisp mais je sais pas faire et se script est facilement modifiable pour traiter d'autre entité ou propriété.

 

PS : la commande CHT est un LISP provenant de autocad 14 qui doit être rajouté dans les LISP à charger au démarage.

 

Encore merci à tous ;)

 

EDIT : quand je met les balise quote ou code ca me met un gros pavé noir à l'écran

 

[Edité le 2/2/2007 par Benoit71]

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é