Aller au contenu

Transformer du texte en bloc


Messages recommandés

Posté(e)

Bonjour à tous,

 

J'ai récupéré le dwg du réseau d'eau potable d'une commune. Le problème c'est qu'au lieu d'avoir des blocs avec les symboles de chaque point particulier du réseau (bouche incendie, poteau incendie, vidange) j'ai juste une lettre ("h" pour bouche incendie, "i" pour poteau incendie, "v" pour vidange, etc).

 

Du coup j'ai cherché s'il n'y avait pas un lisp qui me permette de transformer tous le textes contenant la même lettre (par exemple le "h") en un bloc contenant le bon symbole (celui de la bouche incendie).

 

D'autant que mes lettres sont correctement orientées (par rapport au sens dans lequel je dois positionner le symbole)

 

Malheureusement je n'ai trouvé que les lisp suivants :

- T2A.lsp, qui transforme le texte en définition d'attribut mais avec la bonne orientation

- T2B.lsp, qui transforme le texte en bloc, mais sans conserver l'orientation

 

BREF ! l'idéal serait un mix des deux lisp, qui transformerait le texte en bloc et conserverait l'orientation de ce texte

 

Voilà si quelqu'un a une piste je le remercie d'avance et sinon je vous souhaite à tous une bonne journée

Posté(e)

Salut,

 

Essaye ça:

 

(defun c:text2block (/ txt bname ss i)
 (vl-load-com)
 (defun *error* (msg)
   (and msg
        (/= msg "Fonction annulée")
        (princ (strcat "\nErreur: " msg))
   )
   (vla-EndUndoMark doc)
   (princ)
 )

 (setq doc (vla-get-Activedocument (vlax-get-acad-object)))
 (vla-startUndoMark doc)
 (if (/= "" (setq txt (vl-string-trim " \t" (getstring "\nEntrez le texte à remplacer: "))))
   (if (/= "" (setq bname (vl-string-trim " \t" (getstring "\nEntrez le nom du bloc: "))))
     (if (tblsearch "block" bname)
       (if (ssget "_X" (list (cons 0 "TEXT") (cons 1 txt) (cons 410 (getvar 'ctab))))
         (progn
           (setq space (vla-get-Block (vla-get-ActiveLayout doc)))
           (vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))
             (vla-InsertBlock space (vla-get-InsertionPoint obj) bname 1. 1. 1. (vla-get-Rotation obj))
             (vla-delete obj)
           )
           (vla-Delete ss)
         )
       )
       (prompt (strcat "\nLe bloc '" bname "' est introuvable"))
     )
   )
 )
 (*error* nil)
)

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

Posté(e)

J'en profite pour vous dire que j'utilise presque tous les jours vos LISP et même radicalpurge. Ils me font tous gagner un temps précieux et améliore mon quotidien. Alors du fond du coeur : un grand grand merci !

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é