# DieBeiZiTools **Repository Path**: josephning/die-bei-zi-tools ## Basic Information - **Project Name**: DieBeiZiTools - **Description**: 叠被子插件包 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-25 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 叠被子工具箱(DieBeiZiTools) 一款面向给排水设计场景的 AutoCAD 二次开发插件,提供重叠检测、缺失字体自动替换等实用工具,以侧边停靠面板形式集成于 CAD 界面。 ## 功能一览 | 功能 | 命令 | 说明 | |------|------|------| | 打开侧边面板 | `DBZT` | 手动重新打开插件面板(面板被误关时使用) | | 重叠检测 | `DBZT_CHECK` | 选择两组图层进行两两比对,冲突位置在标记图层绘制红色圆圈标记 | | 清空标记 | `DBZT_CLEAR` | 弹出勾选窗口,选择性删除检测产生的标记图层 | | 字体映射配置 | `DBZT_FONTMAP` | 扫描当前图纸缺失字体 → 弹窗选择替代字体 → 写入独立 fontmap.fmp | | 字体映射管理 | `DBZT_FONTMAP_MANAGE` | 列出已有字体映射规则,支持勾选删除或一键清除 | ### 额外特性 - **自动加载面板**:DLL 加载后自动在 AutoCAD 右侧创建停靠面板,无需手动 NETLOAD 面板 - **自动字体扫描**:每次激活文档时自动扫描缺失字体并在命令行提示,空白图纸无打扰 - **独立字体映射文件**:使用独立的 `fontmap.fmp`,不污染 AutoCAD 原装 `acad.fmp` ## 技术栈 | 项目 | 说明 | |------|------| | 语言 | C#(启用可为空引用类型,最新预览语法) | | 目标框架 | `net48`(AutoCAD 2022 x64)+ `net8.0-windows`(AutoCAD 2025 x64) | | UI | WPF 侧边停靠面板(PaletteSet) | | CAD 开发库 | IFoxCAD.CAD 0.9.*(基于 ObjectARX .NET) | | AutoCAD .NET API | AutoCAD.NET 23.0.0(2022)/ 25.0.1(2025) | | 平台目标 | x64(AutoCAD 2022/2025 均仅支持 64 位) | | 许可证 | [木兰宽松许可证 v2(Mulan PSL v2)](./LICENSE) | ## 安装 1. 编译项目(Release 配置),生成的 DLL 在 `bin/Release/` 对应目标框架目录下 2. 在 AutoCAD 命令行执行 `NETLOAD`,选择编译好的 DLL 文件 3. 插件自动在 CAD 右侧弹出停靠面板,后续打开 DWG 也会自动加载 > **注意**:插件注册了 `IExtensionApplication`,通过 NETLOAD 加载即可;如需开机自启,可将 DLL 放入 AutoCAD 的 Startup 目录或使用 `APPLOAD` 设置自动加载。 ## 命令一览表 ### DBZT — 打开侧边面板 面板被关闭后,通过此命令重新弹出。面板采用 Morandi 绿色主题,垂直布局,包含检测工具和字体映射两个功能区。 ### DBZT_CHECK — 重叠检测 1. 弹出 WPF 界面,勾选 **A 组图层** 和 **B 组图层** 2. 执行 **AABB 包围盒粗筛 → IntersectWith 几何精检** 的两阶段检测 3. 冲突位置在自动创建的 `DBZT_重叠检测标记` 图层上绘制红色圆圈(线宽 1.00mm) 4. 自动开启 `LWDISPLAY=1` 确保线宽可见 支持任意两组图层对比,不限专业(给水 vs 排水、给排水 vs 建筑、A 专业 vs B 专业均适用)。 ### DBZT_CLEAR — 清空标记 弹出窗口列出所有 `DBZT_*标记` 图层,勾选后一键删除。 ### DBZT_FONTMAP — 字体映射配置 1. 扫描当前图纸所有文字样式引用的字体,识别缺失项 2. 弹窗列出缺失字体 + 当前已有映射关系 3. 为每个缺失字体选择替代字体(从系统已安装字体或 CAD 支持目录中选择) 4. 写入独立 `fontmap.fmp`(位于 CAD Support 目录),下次打开图纸自动生效 ### DBZT_FONTMAP_MANAGE — 字体映射管理 列出 `fontmap.fmp` 中所有条目,支持按条勾选删除或一键清除。区分"AutoCAD 默认映射(PostScript→TTF)"和"用户自定义映射"。 ## 目录结构 ``` DieBeiZiTools/ ├── Command.cs // 插件入口(IExtensionApplication)+ 所有 [CommandMethod] 注册 ├── GlobalUsings.cs // 全局 using 指令 ├── DieBeiZiTools.csproj // 双目标框架配置(net48 + net8.0-windows) │ ├── Tools/ // 核心业务逻辑 │ ├── OverlapDetector.cs // 重叠检测核心(AABB粗筛 + IntersectWith精检) │ ├── MarkLayerBuilder.cs // 标记图层创建、画标记、清空 │ ├── LayerPicker.cs // 图层选择 WPF 封装 │ └── FontMapper.cs // 字体映射核心(fmp读写 + 缺失字体扫描) │ └── UI/ // WPF 界面 ├── MainView.xaml/.cs // 侧边面板主界面(PaletteSet 宿主) ├── PaletteManager.cs // PaletteSet 创建/销毁管理 ├── LayerSelectWindow.xaml/.cs // A/B 组图层选择窗口 ├── MarkLayerClearWindow.xaml/.cs // 标记图层清空窗口 ├── FontMapWindow.xaml/.cs // 字体映射配置窗口 └── FontMapManageWindow.xaml/.cs // 字体映射管理窗口 ``` ## 开发环境要求 - Visual Studio 2022 17.8+(支持 .NET 8.0 SDK) - AutoCAD 2022(调试 net48 目标)或 AutoCAD 2025(调试 net8.0-windows 目标) - NuGet 包:`AutoCAD.NET`、`IFox.CAD.ACAD` ## 开源协议 本项目基于 [木兰宽松许可证 v2(Mulan PSL v2)](./LICENSE) 开源。 Copyright (c) 2026 DieBeiZiTools DieBeiZiTools is licensed under Mulan PSL v2.