CADXChange

Toutes les commandes LISP

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

  1. Saisissez CXFONTSUB.
  2. Saisissez le fichier de police à remplacer, par exemple romans.shx.
  3. 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

  1. Enregistrez le fichier où vous voulez.
  2. Tapez APPLOAD, choisissez le fichier et cliquez sur Charger.
  3. 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.

TextSync

Autres commandes : Nettoyage