DenisHen Posté(e) le 17 janvier 2019 Posté(e) le 17 janvier 2019 Bonjour à tous. Voilà, aujourd'hui, je cherche à sélectionner plusieurs textes dans une XRef pour n'en faire qu'un seul (entrecoupé d'espace). Je pense que c'est là qu'il me faudrait un nentsel, mais je ne trouve pas grand chose dessus... Si quelqu'un a une astuce, une idée... Je suis preneur... J'ai commencé à écrire ça, si ça peut aider...:;;; ************************************** ;;; Import d'un ou plusieurs textes issus ;;; d'un bloc ou d'une XRef ;;; ************************************** (defun c:ImportTxt (/ ssTxt SomTxt Rot Coord etx doc) (princ "\nDéveloppé par Denis H. (vers.1.0)") ;;; Active le début de l'undo (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq ss (ssget "_:S")) (if ss (progn (setq i 0) (while (< i (sslength ss)) (setq etx (entget (ssname ss i))) (setq ssTxt (cdr (assoc 1 etx))) (setq Rot (cdr (assoc 50 etx))) (setq SomTxt (strcat SomTxt " " ssTxt)) (setq Coord (cdr (assoc 10 etx))) (setq i (+ i 1)) ) ;_ Fin:while ) ;_ Fin:progn ) ;_ Fin:if (setq SomTxt (vl-string-left-trim " " (vl-string-right-trim " " SomTxt))) ;;; Partie en cours de développement... (command "texte" "j" "mc" "_non" Coord (angtos Rot) SomTxt) (command "_move" "_last" "" "_non" Coord pause) ;;; Désctive l'undo (vla-EndUndoMark doc) (princ) ) ;_ Fin de defun Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Patrick_35 Posté(e) le 17 janvier 2019 Posté(e) le 17 janvier 2019 Salut Denis Essaye ceci(entget (car (nentsel))) Et si tu ne souhaites pas sélectionner les textes du xref, il reste plus qu'a faire une boucle pour analyser le xref afin de retrouver les textes. ps : Dans autocad, xref = bloc que l'on retrouve dans la table des blocs. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 17 janvier 2019 Posté(e) le 17 janvier 2019 Salut DenisD'abord une remarque:(ssget "_:S") est pour une sélection d'un objet UNIQUE (_Single), donc pas la peine d'essayer de faire une boucle: (sslength) sera au mieux égal à 1 ou nil.Voici un exemple de boucle que je ferais((lambda ( / concatxt n_ent dxf_ent val_txt) (setq concatxt "") (while (setq n_ent (nentsel "\nChoix d'un texte imbriqué: ")) (cond ((member (cdr (assoc 0 (setq dxf_ent (entget (car n_ent))))) '("MTEXT" "TEXT")) (setq val_txt (cdr (assoc 1 dxf_ent))) (setq concatxt (strcat concatxt " " val_txt)) ) (T (princ "\nN'est pas un texte!")) ) ) (print concatxt) (prin1) )) Je te laisse compléter à ta guise. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 18 janvier 2019 Auteur Posté(e) le 18 janvier 2019 Salut à vous, et merci pour votre aide... Patrick_35 : je me doutais bien qu'un nentsel serait présent... Bonuscad : pour la méthode de sélection, j'y ai pensé hier soir dans la bagnole, en rentrant chez moi... Encore merci à vous... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant