BIM G CO Posté(e) le 17 décembre 2004 Posté(e) le 17 décembre 2004 Voici une routine que je viens de créer mais elle me parait boiteuse voire même obsolète. (j'e^père ne pas avoir inventé l'eau chaude). Comme je connais pas trop la gestion des entites, j'ai "pondu" un truc pareil avec le peu de connaissances que j'ai. Je me doute parmi vous savent qu'en 3 ou quatre fonctions ceci aurait pu être fait mais je vous demande de l'aide c'est justement pour savoir si c'est simplifiable D'ailleurs je vais certainemement décomposer cette fonction en plusieurs plus simple. Je recois des plans d'architecte dont tous les styles de textes sont en "txt.shx"Je voudrais pouvoir les forcer en Arial Narrow par exemple sans toucher à AutoCAD.fmple souci c'est que je n'ai pas trouver de fonction qui me liste tous les styles de texte contenu dans le fichier DWG. pour cela je liste tous les éléments et je trie ceux qui contiennent le Type_Selection vouluj'obtiens une Liste de toutes les entités de ce type.De celles-ci j'extrait les noms d'entités (Elements_Temporaire) pour en faire une liste.Elle liste est ensuite triée et vidée de sa redondance pour être une Liste ne contenant qu'une seule fois la Liste nominatives des entités Pour l'instant je me suis focaliser sur le type "TEXT" mais je vais certainement l'étendre à l'ensemble des entités. (defun ListElements (Type_Selection / ListeSSGET Elements_Resultante Elements_Temporaire boucle1 boucle2 Valeur Valeur_Test Sel_All_Elts ListeSel_All_Elts );;;;;; Selection de tous les éléments de type : Type_Selection;;; (setq Valeur (list (cons 2 "BLOCK_RECORD") (cons 2 "COTSTYLE") (cons 0 "DICTIONARY") (cons 2 "LTYPE") (cons 0 "MLIGNESTYLE") (cons 7 "MTEXT") (cons 7 "TEXT") ) ) (Setq ListeSSGET (cons 0 Type_Selection)) (setq Elements_Resultante nil) (setq Valeur nil) (setq Sel_All_Elts (ssget "X" (list ListeSSGET))) (if Sel_All_Elts (progn (setq ListeSel_All_Elts (ssnamex Sel_All_Elts)) (setq boucle1 0) (setq Elements_Temporaire nil) (while (/= (nth boucle1 ListeSel_All_Elts) nil) (progn (setq Valeur (entget (nth 1 (nth boucle1 ListeSel_All_Elts)))) (setq boucle2 0) (while (/= (nth boucle2 Valeur) nil) (progn (if (= (nth 0 (nth boucle2 Valeur)) 7) (setq Elements_Temporaire (append Elements_Temporaire (list (cdr (nth boucle2 Valeur))) ) ) ) (setq boucle2 (+ boucle2 1)) ) ) (setq boucle1 (+ 1 boucle1)) ) ) (if Elements_Temporaire (Setq Elements_Temporaire (acad_strlsort Elements_Temporaire)) ) (setq Elements_Resultante (append Elements_Resultante (list (nth 0 Elements_Temporaire)) ) ) (setq Valeur_Test (nth 0 Elements_Temporaire)) (setq boucle1 1) (setq boucle2 0) (while (< boucle1 (length Elements_Temporaire)) (progn (if (/= (nth boucle1 Elements_Temporaire) Valeur_Test ) (progn (setq Elements_Resultante (append Elements_Resultante (list (nth boucle1 Elements_Temporaire)) ) ) (setq Valeur_Test (nth boucle1 Elements_Temporaire)) (setq boucle2 (+ boucle2 1)) ) ) (setq boucle1 (+ boucle1 1)) ) ) ) ) Elements_Resultante) Si vous avez des ropositions n'hésitez pas surtout que le résultat de ce travail collectif sera certainement déplacé par Patrick ;) tu comprendras Patrick que je n'aurai pas eu la prétention de ne pas mettre cette routine "boiteuse" dans les routines Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Patrick_35 Posté(e) le 17 décembre 2004 Posté(e) le 17 décembre 2004 Salut,Une routine pour forcer tous les styles de texte en Arial Narrow (defun c:sty(/ cmd reg ts st) (setq cmd (getvar "cmdecho") reg (getvar "regenmode")) (setvar "cmdecho" 0) (setvar "regenmode" 0) (command "_.undo" "_group") (setq ts "Arialn.ttf") ; c'est le style Arial Narrow (setq st (tblnext "style" t)) (princ "\nTraitement en cours...")(princ) (while st (command "_.style" (cdr (assoc 2 st)) ts "" "" "" "" "") (setq st (tblnext "style")) ) (command "_.regen") (command "_.undo" "_end") (setvar "cmdecho" cmd) (setvar "regenmode" reg) (princ) ) Je me suis servi de la commande style d'autocad pour changer le style de texte, ce qui me parait un peu plus simple que de sélectionner toutes les entités et de changer la police @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BIM G CO Posté(e) le 19 décembre 2004 Auteur Posté(e) le 19 décembre 2004 Merci cela pourra me servir pour une autre routine. ;) Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
LUDWIG Posté(e) le 21 décembre 2004 Posté(e) le 21 décembre 2004 Est-ce que ces routines changent les polices des Mtext (qui peuvent avoir plusieurs polices) ? [Désolé, je ne peux pas tester, j'ai un problème pour éditer les Mtext...] :casstet: Autocad 2021 - Revit 2022 - Windows 10
LUDWIG Posté(e) le 21 décembre 2004 Posté(e) le 21 décembre 2004 Ah ! je viens de voir un autre message dans lequel est donné le lien vers StripMtext pour formater les Mtext... Super ! Autocad 2021 - Revit 2022 - Windows 10
Serge Posté(e) le 22 décembre 2004 Posté(e) le 22 décembre 2004 Maximilien, Il y a aussi la variable système FONTALT si la police est introuvé mais encore FONTMAP qui définit l'emplacement d'un fichier où toutes les correspondances sont données. Tu n'as qu'à alterner entre 2 fichier pour FONTMAP. Serge
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