Invité Sylvainhinard Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Bonjour, Je vous explique mon problème:J'ai un fichier avec un calque "NOM_DE_RUE"Dans ce calque "NOM_DE_RUE" il y a des textes et des texte multilignesJe voudrais extraire de chaque entité texte ou texte multiligne le nom de la rue pour l'exporter vers un fichier texte ou un fichier excel.Qui aurait une solution à me proposer? Merci beaucoup. Sylvain
Patrick_35 Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 SalutPas 50 solutions, il faut programmer tu as deux sujets qui peuvent t'aiderici et là @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Sylvainhinard Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Bon OK pour commencer je tape (entget(car(entsel))) : J'obtient: ((-1 . ) (0 . "TEXT") (330 . d'entité: 6ce82cf8>) (5 . "13C99") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "S07-res_proj_SLT-T") (100 . "AcDbText") (10 601536.0 124305.0 -1.5928e-011) (40 . 0.4) (1 . "1 f %%C63-SLT/BPA") (50 . 5.95157) (41 . 1.0) (51 . 0.0) (7 . "ARIAL") (71 . 0) (72 . 2) (11 601541.0 124304.0 -1.5928e-011) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 2)) -Je m'apercois que le code DXF qui m'interresse est : (1 . "1 f %%C63-SLT/BPA") -Je veux récuperer cette valeur pour chaque texte (un truc du genre "for each") -a chaque fois que j'ai cette valeur je veux l'ecrire dans un fichier (commande genre "print") -Je sais que je dois me servir de SSGET X pour ne selectionner que des textes dans un certain type de calque Bon ben voila après il va falloir que je relise le manuel... Merci Patrick
(gile) Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Salut, Pour selectionner tous les" text et "mtext" du caque "NOM_DE_RUE" tu peux faire : (setq ss1 (ssget "_X" '((8 . "NOM_DE_RUE") (0 . "TEXT"))) ss2 (ssget "_X" '((8 . "NOM_DE_RUE") (0 . "MTEXT"))) n (sslength ss2) ss (repeat n (ssadd (ssname ss2 (setq n (1- n))) ss1) ) ) Le jeu de sélection "ss" contient toutes les entités "text" et "mtext" Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Re, Vite fait sur le gaz, pour enregistrer dans un fichier texte : (defun c:txt->file (/ ss n str file) (setq ss (ssget "_X" '(( 8 . "NOM_DE_RUE") (0 . "*TEXT,MTEXT"))) n (sslength ss) str "" ) (repeat n (setq str (strcat str (cdr (assoc 1 (entget (ssname ss (setq n (1- n)))))) "\n" ) ) ) (setq file (open (getfiled "Créez ou sélectionnez un fichier" "" "txt" 1) "w" ) ) (princ str file) (close file) (princ) ) Code édité suite à la remarque ci-dessous [Edité le 30/9/2005 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Un exemple simple pour un fichier texte @+ (setq js (ssget "x" (list (cons 0 "*TEXT,MTEXT") (cons 8 "NOM_DE_RUE")))) ; Je fais ma sélection de mes textes et mtext sur le calque NOM_DE_RUE (if Js ; Si ma sélection n'est pas vide (progn (setq n 0) (setq f (open "c:/mes_textes.txt" "w")) ; j'ouvre un fichier texte en écriture, on peut aussi passer par un getfiled (while (ssname js n) ; Je parcours ma sélection (setq ent (entget (ssname js n))) ; je récupere les codes dxf de l'entité (write-line (cdr (assoc 1 ent)) f) ; j"écris dans le fichier la valeur de mon texte (setq n (1+ n)) ; Je passe au suivant ) (close f) ; je ferme mon fichier ) ) ps : (gile), regarde mon filtre de sélection Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 OK Patrick_35, je ne connaissais pas, ce qui explique ma gymnastique peu élégante. Merci encore une fois ! Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Sylvainhinard Posté(e) le 30 septembre 2005 Posté(e) le 30 septembre 2005 Merci Gilles et Patrick, vous allez me faire gagner du temps... :D
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