Aller au contenu

Entités texte vers fichier Excel


Invité Sylvainhinard

Messages recommandés

Invité Sylvainhinard

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 multilignes

Je 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

Lien vers le commentaire
Partager sur d’autres sites

Invité Sylvainhinard

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é