【免费开源】AFR — CAD 图纸文字显示异常自动处理工具

推荐类型

【开发者自荐】

工具简介

打开图纸不再出现文字不显示、乱码,所有文字显示问题自动搞定

:sparkles: 项目亮点

  • :white_check_mark: 自动处理图纸中的缺失字体:配置一次后,后续大多数图纸都能自动处理,不用反复手动改字体。

  • :white_check_mark: 覆盖三类常见缺失字体场景:支持 SHX 主字体SHX 大字体TrueType 缺失的统一处理。

  • :white_check_mark: 支持 MText 乱码场景修复:针对多行文字中的内联字体缺失提供专门处理,不限于普通文字样式替换。

  • :white_check_mark: 减少 SHX 缺失对话框干扰:部署工具会自动关闭"缺少 SHX 文件"对话框,减少打开图纸时的重复确认。

  • :white_check_mark: 安装与卸载更省心:使用 部署工具,无需手动处理注册表、自动加载项和文件放置。

  • :white_check_mark: 自动识别 CAD 版本:发布包同时支持 AutoCAD 2018–2027,部署工具会自动扫描并列出可安装版本。

  • :white_check_mark: 插件状态清晰可见:可以直接查看插件是否已安装、是否为最新版,以及是否存在 DLL 缺失或待安装项。

  • :white_check_mark: 运行中场景自动保护:安装或卸载前会先检测 CAD 是否正在运行,降低操作冲突和写入失败的风险。

  • :white_check_mark: 支持结果复核与手动调整:如果自动替换结果仍需优化,可以通过 AFRLOG 逐条查看、调整和复核。

:framed_picture: 界面预览

AFR 命令 — 字体配置

AFRLOG 命令 — 替换日志

AFR.Deployer — 扫描、安装、卸载一体化部署工具

---

:white_check_mark: 已支持版本

CAD 版本 DLL 文件名 .NET
AutoCAD 2018(R22.0) AFR-ACAD2018.dll .NET Framework 4.6.2
AutoCAD 2019(R23.0) AFR-ACAD2019.dll .NET Framework 4.7.2
AutoCAD 2020(R23.1) AFR-ACAD2020.dll .NET Framework 4.7.2
AutoCAD 2021(R24.0) AFR-ACAD2021.dll .NET Framework 4.8
AutoCAD 2022(R24.1) AFR-ACAD2022.dll .NET Framework 4.8
AutoCAD 2023(R24.2) AFR-ACAD2023.dll .NET Framework 4.8
AutoCAD 2024(R24.3) AFR-ACAD2024.dll .NET Framework 4.8
AutoCAD 2025(R25.0) AFR-ACAD2025.dll .NET 8.0
AutoCAD 2026(R25.1) AFR-ACAD2026.dll .NET 8.0
AutoCAD 2027(R26.0) AFR-ACAD2027.dll .NET 10.0

开发中功能

  • NETLOAD 加载的插件提供卸载能力(命令级)

  • 修复图纸数据中 GBK 字节流被误判为 UTF-16 的问题

  • 为部署工具增加基础动效(好看:grinning_face:

部署安装

  1. Releases 下载最新发行包。
  2. 先关闭所有 AutoCAD 进程(部署工具会在检测到 CAD 运行时禁用安装/卸载按钮)。
  3. 双击运行 AFR.Deployer.exe,工具会自动扫描本机已安装的 AutoCAD 版本。
  4. 勾选需要安装的项目,确认"部署路径"(默认会选中首个非系统盘下的 \CADPlugins\),点击"安装"。
  5. 工具会自动完成:
    • 将对应版本 DLL 复制到部署路径;
    • 在注册表写入自动加载项;
    • 释放内嵌默认 SHX 字体到各 CAD 的 Fonts 目录;
    • 写入 FixedProfile.aws 以抑制"缺少 SHX 文件"弹窗。
  6. 启动 AutoCAD 后,插件自动生效。

:light_bulb: 部署工具会实时监听注册表变化:后续安装/卸载新的 CAD 版本或修改配置文件后,无需手动"刷新",列表会自动更新。

卸载同样在部署工具中完成:勾选已安装的项目点击"卸载",工具会同步还原注册表与 FixedProfile.aws 中由本插件写入的节点。

官方网站

GitHub(原始发布站)

Gitee(国内镜像站)

https://gitee.com/splrad/CADFontAutoReplace

看上去还不错,下次试试

欢迎尝试,目前插件已经稳定

中望也需要一份,毕竟现在强制这个了 :laughing:

没想到这里还有人需要这个,顺便也分享下我写的小脚本吧

(defun C:fixfont (/ ts enf chf)
  (vl-load-com)
  (vlax-for
    ts
    (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
    (setq enf (vla-get-fontfile ts))
    (setq chf (vla-get-bigfontfile ts))
    (if (vl-string-search ".TTF" (strcase enf))
      (progn
        (if (and enf (not (findfile (strcat (getenv "systemroot") "\\Fonts\\" enf))))
          (vla-put-fontfile ts "simfang.ttf")
          )
        )
      (progn
        (if (and enf (not (or (findfile enf) (findfile (strcat enf ".shx")))))
          (vla-put-fontfile ts "tssdeng.shx")    
          )
        (if (and chf (not (or (findfile chf) (findfile (strcat chf ".shx")))))
          (vla-put-bigfontfile ts "hztxt.shx")    
          )
        )
      )
    )
  (command "_.regen")
  (princ)
  )

功能是自动把所有缺失的字体替换成指定字体,具体想改成什么直接修改代码就行了。由于是纯自用的,功能很简陋,有需要的自取。

有这个想法,主要是没有时间搞,希望有大神可以提交PR :grinning_face:,有时间我研究下,主要是AutoCAD的开发生态很完整,找资料不费事

我最开始也是写的lsp脚本,但我发现lsp脚本的限制太多,比如没有办法处理样式表命名的脏数据(在有的图纸中你明明已经替换了这个缺失的字体但你打开ST命令看这个样式还是显示字体缺失)和多行文字中控制码字体缺失的情况,而且有些场景没有办法处理才用C#写的。目前插件已经完美的支持这些了

你说的第一种情况我还没遇到过,不过多行文字里的字体不在样式里确实存在这个问题

厉害,cad插件终于有开源项目了,就是软件为啥这么大

在这里答复下,避免因为安装包大导致以为我往安装包打包了啥有害东西 :joy:。现在安装包大的原因是我把整个.NET10运行时打包进去了,因为部署工具是用.NET10写的,目前大部分人的电脑上没有安装.NET10,所以如果不打包.NET10就会在没有安装.NET10的电脑上无法运行,还需要用户自己下运行时,这和点击既用的目标冲突了,所以我把.NET10运行时打包进去了,下个版本解决big5编码问题导致的乱码后我会单独放出DLL。

多谢多谢,我看之前版本都有单独dll,不过好像没有cad2020的版本