JVC Posté(e) le 27 février Posté(e) le 27 février Bonjour à tous, Je cherche le moyen de concaténer dans le même fichier à plusieurs reprises deux textes du type "TN : " ET "111.00" pour obtenir "TN : 111.00" que j'ai obtenu en décomposant une étiquette de Covadis ... T2MTEXT ne convient pas car agglomere tous les textes du plans Comment procéderiez vous ? Merci d'avance 🙂 Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 27 février Posté(e) le 27 février Coucou, Pourquoi ne pas lancer la commande TXT2MTXT à plusieurs reprise en ne sélectionnant que 2 textes à chaque fois ? De combien de concaténation parle-t-on ? Car autrement, comment souhaites-tu faire comprendre à AutoCAD quels textes doivent être merge ensemble ou non si tu sélectionnes tous tes textes en une seule fois ? Bisous, Luna
JVC Posté(e) le 27 février Auteur Posté(e) le 27 février Bonjour Luna, Il y a environ entre 500 et 1000 étiquettes. Le problème vient qu'en décomposer l'étiquette Autocad et Covadis nous en font 2 entités. Idem en passant par Covadis Echanges. Comment faire comprendre à Autocad les textes à concaténer ? ils sont alignés et vraiment à côté par conséquent 🙂 Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 27 février Posté(e) le 27 février J'ai une idée éventuelle mais il me faudrait un .dwg d'exemple pour voir si c'est faisable. Et ce n'est pas optimale car chat reviendrait à tester si la distance entre un premier texte et les autres est inférieure (voire égale) à une valeur spécifique et lancer la commande sur ces deux textes, puis passer au texte suivant, etc... Bisous, Luna
JVC Posté(e) le 27 février Auteur Posté(e) le 27 février Oui les distances entre les deux textes à assembler doivent bien être égale à chaque fois.. Je te joins un extrait du DWG au cas ou, en tout cas merci beaucoup 🙂 Test etiquettes.dwg Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 1 mars Posté(e) le 1 mars Coucou, Désolée pour le délai, je n'ai pas pu trouver de temps libre plus tôt. J'ai testé sur ton DWG et cela semble être bon : (defun c:JVC_ASSOTXT (/ *error* foo e fuzz layer cmdecho jsel i name lst tmp err) ;; PARAMETRAGE UTILISATEUR !!! (setq layer "TOU_EU_ALTI_FE" ;; --> Calque défini pour le filtre de sélection (si plusieurs, séparer par une virgule sans espace!) e 0.952993 ;; --> Distance à prendre en compte entre les 2 textes à associer fuzz 1E-4 ;; --> Précision sur l'écart entre la distance à considérer pour associer les textes et la distance réelle entre 2 textes ) ;; FIN DU PARAMETRAGE UTILISATEUR !!! (defun *error* (msg) (setvar "CMDECHO" cmdecho) (princ msg) ) (defun foo (lst / name pt tmp ent) (if (and (setq name (car lst) pt (cdr (assoc 10 (entget name))) tmp (cdr lst) ) (not (while (not (equal (distance pt (cdr (assoc 10 (entget (car tmp))))) e fuzz)) (setq tmp (cdr tmp)) ) ) (setq ent (car tmp)) ) (progn (setq lst (cdr lst)) (setq lst (vl-remove ent lst)) (setq tmp (ssadd name)) (ssadd ent tmp) (command "TXT2MTXT" tmp "") (setq name (entlast)) (entmod (subst '(41 . 3) (assoc 41 (entget name)) (entget name))) lst ) name ) ) (sssetfirst) (vla-StartUndoMark (vla-get-activedocument (vlax-get-acad-object))) (and (setq cmdecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq err (ssadd)) (setq jsel (ssget "_X" (list '(0 . "TEXT") (cons 8 layer)))) (repeat (setq i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) lst (cons name lst) ) ) (not (while lst (if (not (listp (setq tmp (foo lst)))) (progn (ssadd tmp err) (setq lst (cdr lst)) ) (setq lst tmp) ) ) ) (sssetfirst nil err) (setvar "CMDECHO" cmdecho) (princ (strcat "\nUn total de " (itoa (sslength jsel)) " blocs ont été traités." (if (< 0 (sslength err)) (strcat "\n /!\\ " (itoa (sslength err)) "/" (itoa (sslength jsel)) " blocs ont échoués dans le traitement...") "" ) ) ) ) (vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) Je n'ai pas émis l'hypothèse que tu puisses changer les paramètres au cours de la commande mais je les ai tout de même regroupé en début de programme pour modifier les calques (pour filtrer la sélection), la distance à considérer et la tolérance. En espérant que c'est OK pour toi 🙂 Bisous, Luna 1 1
fabcad Posté(e) le 2 mars Posté(e) le 2 mars (modifié) Bonjour, Une autre solution : Filtrer les chaines "Fe :" avec la sélection rapide et de les placer dans un calque spécifique, puis avec un lisp ajouter la chaine "Fe : " à gauche des chaines numériques. J'ai réécrit mon programme pour qu'il filtre la sélection des textuels (calque et type d'objets TEXT ou MTEXT) et qu'il fasse la concaténation uniquement sur les valeurs numériques. Fabcad, Le Rennais Métropolitain. FD_prefixe_v003.lsp Modifié le 7 mars par fabcad Lisp modifié avec commentaires 1
JVC Posté(e) le 15 mars Auteur Posté(e) le 15 mars Salut à tous les deux : @Luna et @fabcad ! Merci beaucoup pour ces programmes 🙂 Qui fonctionnent tous les deux 🙂 Disposant de covadis, j'ai découvert par la même occasion la possibilité de placer un préfixe devant les données . Encore merci pour vos réponses ! Un tres bon week end Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
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