Aller au contenu

recuperer des texte d\'un plan


Messages recommandés

Posté(e)

ce ne sont pas des bloc mais des textes

 

comment faire la prog LIST ou VBA (si il existe un petit logiciel je suis preneur)car je ne suis pas un specialiste autocad et j'ai beaucoup de texte a recuperer

 

:)

Posté(e)

Personnellement je n' ai pas développer développer ce genre de Programme... ça pourrait être faisable !

 

Mais attendons que nos virtuoses du LISP et du VBA passe par là !

 

T' inquiètes on va trouver !

 

Quelle exploitation veux-tu faire ensuite ? un tableau EXCEL ?

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut,

 

Je te propose un petit LISP très vite fait, il y a sûrement moyen de faire mieux.

 

Pour l'utiliser (j'explique comme si tu étais un débutant complet, ne t'en offusque pas si ce n'est pas le cas), Tu copie le code ci dessous dans le bloc-note, tu l'enregistre sous Txt2xl.LSP (par exemple), dans AutoCAD, dans le menu Outils -> Charger une application tu charge ton fichier .LSP et tu tapes txt2xl à la ligne de commande.

 

(defun c:txt2xl	(/ ss file ent cnt str)
 (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
 (if ss
   (progn
     (setq
file
 (open
   (getfiled "Créez ou sélectionnez un fichier" "" "xls" 1)
   "w"
 )
     )
     (setq cnt	0
    str	""
     )
     (while (setq ent (ssname ss cnt))
(setq str (strcat (cdr (assoc 1 (entget ent))) "\n" str))
(setq cnt (1+ cnt))
     )
     (princ str file)
     (close file)
   )
 )
 (princ)
)

 

PS : Telle quelle, la routine sélectionne tous les objets "Texte" et "Texte multiligne" du dessin.

Si tu veux ne sélectionner que les textes qui sont sur des calques non gelés remplace :

 

(setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))

 

par

 

(setq ss (ssget "_A" '((0 . "TEXT,MTEXT"))))

 

PPS : Comme le dit Rebcao, les attributs de bloc offrent plus de possibilités que les textes et une gestion plus aisée sans programmation.

 

[Edité le 8/2/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Curieux en effet, j'ai testé hier soir çà marchait. Là je ne peux pas re-essayer, je n'ai qu'une LT sous la main.

 

Le code de la deuxième ligne est un filtre de sélection pour sélectionner les textes et textes multilignes.

 

PS : Il faut créer un nouveau fichier Excel dans la boite de dialogue qui devrait s'ouvrir au lancement de la commande dans AutoCAD.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Vraiment, je ne comprends pas où est le problème, j'ai refais des tests, çà fonctionne.

 

Si tu pouvais en dire plus sur les messages d'erreur.

 

Tu peux essayer aussi le code suivant, c'est le même auquel j'ai rajouté des contrôles pour essayer de voir à quel moment çà plante.

 

Merci de me tenir au courant.

 

(defun c:txt2xl	(/ ss file ent cnt str)
 (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
 (if ss
   (if
     (setq
file
 (open
   (getfiled "Créez ou sélectionnez un fichier" "" "xls" 1)
   "w"
 )
     )
      (progn
 (setq cnt 0
       str ""
 )
 (while	(setq ent (ssname ss cnt))
   (setq str (strcat (cdr (assoc 1 (entget ent))) "\n" str))
   (setq cnt (1+ cnt))
 )
 (princ str file)
 (close file)
      )
      (alert "Le fichier na pas été créé")
   )
   (alert "Le dessin ne contient ni texte ni textmult.")
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci Gilles,

 

je me suis permis une petite adaptation... Voici le source du LISP...

 

On récupère les paramètres un peu comme l'extraction des attributs ! Ce qui permettra de réimporter les TEXTES... on appelle celà de la Rétro-annotation ( Tiens ! c'était mon exercice de vacances N° 3 qui n'a jamais été enfanté !!!)

 

Christian

 

[Edité le 10/2/2006 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut Christian,

 

Bien vu le coup de récupérer aussi le point d'insertion et les propriétés, encore une jolie petite construction collective :)

 

Sinon tu n'as pas eu de problème avec le code que j'avais fait, çà marche quoi ? rassure moi!

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

:mad: Si si ! il m'a formaté le disque dur !!!!!!!!!

 

Meuhhhhh NON !!!!!!!!!!!!!!! j ' plaisante ! ;) ;) ;)

 

Aucun problème ! Encore merci pour ce canevas de début ! Comme j'étais chez un client qui avait une complète j'ai profité de faire un peu de LISP !

 

Ton programme avait marché du premier coup !

 

A voir maintenant ce que l'on pourrait encore ajouter ! Tiens à tu remarqué la structure du source ? J'aime bien les indentations... et finir par le petit message qui va bien ! ;)

 

Christian

 

[Edité le 10/2/2006 par rebcao]

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

J'ai fait une petite synthèse en ajoutant des options :

- possibilité de sélectionner certains textes à l'écran ou les sélectionner tous en faisant "Entrée" ou "Espace" ou "Retour chariot" ou clic droit.

- possibilité de choisir entre un fichier .xls ou .txt

 

(defun c:txt2file (/ ss typ file ent cnt separ str X Y CALQ HAUT STYL)
 (Prompt
   "\n\nSélectionner les Textes à extraires ou ..."
 )
 (if (not (setq ss (ssget '((0 . "TEXT,MTEXT")))))
   (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
 )					;if not
 (if ss
   (progn
     (initget "Txt Xls")
     (setq typ (getkword "\nSpécifiez le type de fichier [Txt/Xls]: "))
     (if
(setq file
       (open
	 (getfiled "Créez ou sélectionnez un fichier" "" typ 1)
	 "w"
       )
)
 (progn
   (setq cnt   0
	 str   ""
	 SEPAR (if (= typ "Txt")
		 ","
		 "\t"
	       );if
   );setq
   (while (setq ent (ssname ss cnt))

     (setq str	(cdr (assoc 1 (entget ent)))
	   X	(rtos (nth 1 (assoc 10 (entget ent))) 2 8)
	   Y	(rtos (nth 2 (assoc 10 (entget ent))) 2 8)
	   CALQ	(cdr (assoc 8 (entget ent)))
	   HAUT	(rtos (cdr (assoc 40 (entget ent))) 2 4)
	   STYL	(cdr (assoc 7 (entget ent)))
	   cnt	(1+ cnt)
     )				;setq
     (write-line
       (strcat str separ X separ Y separ CALQ separ HAUT separ STYL)
       file
     )
   )				;while
   (close file)
 )				; progn
 (alert "Le fichier na pas été créé")
     )
   )					; if FILE
   (alert "Le dessin ne contient ni texte ni textmult.")
 )					; if SS
 (princ)
)					;defun

;;; ********************************************************************

(prompt
 "\nTaper   TXT2FILE   pour exporter les TEXTES dans un fichier .TXT ou .XLS"
)
(princ) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é