CXFONTSUBNettoyageVersion 1.0.0Testé dans AutoCAD
Remplacer un fichier de police par un autre dans tous les styles de texte
Fait passer tous les styles de texte qui utilisent un fichier de police donné à un autre fichier, puis régénère le dessin pour que vous voyiez le résultat.
Comment l'utiliser
- Saisissez CXFONTSUB.
- Saisissez le fichier de police à remplacer, par exemple romans.shx.
- Saisissez le fichier de police à utiliser à la place, par exemple simplex.shx.
Bon à savoir
- Les réglages de grande police des styles modifiés sont effacés.
Le charger dans AutoCAD
- Enregistrez le fichier où vous voulez.
- Tapez APPLOAD, choisissez le fichier et cliquez sur Charger.
- Tapez le nom de la commande : CXFONTSUB.
Pour l'avoir à chaque démarrage, ajoutez-le à la Mallette de démarrage dans la même boîte de dialogue, ou chargez un dossier entier d'un coup avec le chargeur facultatif. À propos du chargeur facultatif
Testé dans AutoCAD (version complète). D'autres programmes qui exécutent AutoLISP peuvent fonctionner, mais ils n'ont pas été testés.
Le code
Du texte brut, rien de caché. Copiez-le dans un fichier nommé cxfontsub.lsp ou téléchargez-le.
;;; ============================================================================
;;; CXFONTSUB - Replace one font file by another in all text styles
;;; Version 1.0.0
;;; CADXChange LISP tools - https://cadxchange.net/resources/lisp/cxfontsub
;;; Tested in: AutoCAD (full version). Other programs that run AutoLISP may work but are not tested.
;;; Copyright (c) CADXChange. Free for personal and commercial use; do not resell or
;;; republish it as a collection. Terms: https://cadxchange.net/legal/lisp-terms
;;; ============================================================================
;; Give every text style that uses the font file FROM (case ignored) the font file TO instead.
;; A big font file of such a style is cleared. Returns the style names changed.
(defun cx:fontsub-run (from to / r out names en ed)
(setq r (tblnext "STYLE" T))
(while r
(if (and (cx:dxf 3 r) (= (strcase (cx:dxf 3 r)) (strcase from)))
(setq names (cons (cx:dxf 2 r) names)))
(setq r (tblnext "STYLE")))
(foreach name (reverse names)
(setq ed (entget (tblobjname "STYLE" name)))
(setq ed (subst (cons 3 to) (assoc 3 ed) ed))
(if (assoc 4 ed) (setq ed (subst (cons 4 "") (assoc 4 ed) ed)))
(entmod ed)
(setq out (cons name out)))
(reverse out))
(defun c:CXFONTSUB ( / *error* cx:sv from to rows)
(setq *error* cx:err)
(setq from (cx:ask-str "Font file to replace (for example romans.shx)" ""))
(if (= from "")
(princ "\nNothing to replace.")
(progn
(setq to (cx:ask-str "Replace it with (for example simplex.shx)" ""))
(if (= to "")
(princ "\nNo replacement given.")
(progn
(cx:start '(("CMDECHO" . 0)))
(setq rows (cx:fontsub-run from to))
(foreach r rows (princ (strcat "\n" r)))
(command "_.REGENALL")
(princ (strcat "\n" (itoa (length rows)) " text style(s) changed."))
(cx:end)))))
(princ))
;;; ---- Shared helpers (used by the command above; identical in every CADXChange tool) ----
(defun cx:dxf (code ed)
(cdr (assoc code ed)))
;; Close the undo step and put the system variables back.
(defun cx:end ()
(foreach v cx:sv (setvar (car v) (cdr v)))
(command "_.UNDO" "_End")
(setq cx:sv nil)
(princ))
;; Error handler: restores everything, stays quiet on Esc.
(defun cx:err (msg)
(if (> (getvar "CMDACTIVE") 0) (command))
(cx:end)
(if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")))
(princ (strcat "\nError: " msg)))
(princ))
;; Ask for a string (spaces allowed) with a default; "-" means an empty string.
(defun cx:ask-str (msg def / v)
(setq v (getstring T (strcat "\n" msg " <" def ">: ")))
(cond ((= v "") def) ((= v "-") "") (T v)))
;; Save the system variables in VARS ((name . value) ...), set them, and open one undo step.
;; The caller declares cx:sv as a local so the saved values live exactly as long as the command.
(defun cx:start (vars)
(setq cx:sv (mapcar (function (lambda (v) (cons (car v) (getvar (car v))))) vars))
(command "_.UNDO" "_Begin")
(foreach v vars (setvar (car v) (cdr v)))
(princ))
(princ "\nCXFONTSUB loaded. Type CXFONTSUB to start.")
(princ)
Historique des versions
Version 1.0.0 · 27 octobre 2026
Première version.
Besoin de le faire sur de nombreux dessins ?
TextSync effectue ce genre de tâche sur tout un dossier de dessins en une seule passe.
TextSyncAutres commandes : Nettoyage
CXBYLAYERRemettre couleur, type de ligne et épaisseur DuCalqueCXZEROLENTrouver et supprimer les lignes et polylignes de longueur nulleCXEMPTYTXTTrouver et supprimer les textes videsCXFONTCHKLister les styles de texte dont le fichier de police est introuvableCXPURGEPurger le dessin jusqu'à ce qu'il n'y ait plus rien à retirerCXDELTYPESupprimer tous les objets du type que vous désignezCXDIMRESETRemettre la valeur mesurée dans les textes de cotes modifiés à la mainCXDUPDELSupprimer les objets strictement en doubleCXOBJCOUNTCompter les objets par type