﻿小阳CAD轮盘插件 2.2.0.45｜重要说明
========================================

1. 本安装包同时支持 AutoCAD 2014–2024 x64（R19.1–R24.3，需 .NET Framework 4.8）和 AutoCAD 2025–2026 x64（R25.0–R25.1 / .NET 8），AutoCAD 会自动加载对应 DLL。
2. 请先把压缩包完整解压到一个长期保留的本地文件夹，再双击“小阳CAD轮盘插件一键安装.cmd”。安装后不要移动或删除该文件夹。
3. 插件、配置和日志都保存在解压目录内的 小阳CAD轮盘插件.bundle 文件夹；AppData 中仅建立 AutoCAD 自动加载所需的目录链接，不复制插件主体。覆盖安装或升级只更新程序，已有 Data 配置和 Logs 日志原样保留，并会自动迁移旧 XY-CAD-H.bundle 中的数据。首次安装且没有配置文件时创建空轮盘，不预放示例命令。
4. 安装时如检测到 AutoCAD 正在运行，会询问是否强制关闭。选择“是”会强制结束 AutoCAD，未保存图纸会丢失。
5. 批量导入只支持随安装包提供的“批量导入CAD快捷键模板.xlsx”。第一行和前三列固定为：执行命令、功能描述、归属分类。
6. TXT 命令数据请先粘贴到新建 Excel 表格，用“数据 → 分列”拆成三列，再复制到固定模板中导入。
7. 启动和点击刷新命令库时，都会读取当前主 CUI、已加载局部 CUIX 和 PGP；燕秀、YX_Q 等已知外部命令进入“第三方命令”。“重新读取本地命令”只会重建只读命令快照，绝不删除、改写或重载 acad.pgp，也不改第三方 CUI/LISP/FAS/VLX、系统变量、轮盘配置和自定义命令。需要使用的第三方命令可用固定模板导入。
8. 安装、自检和卸载脚本兼容 Windows 7 SP1 自带的 PowerShell 2.0；Windows 7 仍需预先安装 .NET Framework 4.8，实际可用 CAD 年份以对应 CAD 自身的系统要求为准。为避免 Win7/旧显卡把透明轮盘渲染成黑色矩形，Win7 会自动使用单层圆形兼容渲染并关闭窗口级半透明；轮盘内容、背景透明度和命令功能不受影响。

感谢支持
----------------------------------------
自用插件，免费分享，不收费、不商用。
后续大概率只做优化，不再新增大功能。
你安装的第三方插件功能命令，需要填写到固定模板后导入。
制作不易，感谢支持与配合——小阳制作


一、安装与卸载
----------------------------------------
安装：
  1. 完整解压安装包，确认同一目录下存在 install.ps1、小阳CAD轮盘插件.bundle 和“小阳CAD轮盘插件一键安装.cmd”。
  2. 保存所有图纸，双击“小阳CAD轮盘插件一键安装.cmd”。
  3. 安装器会检查包版本、DLL 版本、SHA256、AutoCAD 版本和目录写入权限，并只建立 AppData\ApplicationPlugins 中指向解压目录的目录链接。
  4. 安装器只注册本插件自己的 AutoCAD Applications loader，不写 TRUSTEDPATHS，不加入启动组，不改 SECURELOAD，不替换或修改 CAD 原有 LSP/CUI 文件。顶部菜单采用独立局部菜单组 XYCADMENU，并在 CAD 空闲时温和补充，不取消正在运行的命令。
  5. 兼容 DLL 按 Contents\NetFramework48 与 Contents\Net8 分组。安装器会删除本机未安装 CAD 年份对应的多余 DLL；若本机装有多个 CAD 版本，则同时保留这些版本所需 DLL。以后新增 CAD 版本时，请重新解压完整安装包后再安装。

卸载：
  双击“卸载插件.cmd”。卸载只移除 AutoCAD 自动加载链接，解压目录中的插件、配置和日志会保留；确认不再需要后可手工删除整个解压目录。

更新：
  解压新版安装包到新的长期保留文件夹，再运行新版一键安装。安装器会迁移旧版 Data 和 Logs；若检测到已安装版本比当前安装包更新，会拒绝降级。


二、快捷命令
----------------------------------------
XYLP        打开轮盘
XYLPSZ      打开命令与轮盘设置
XYLPZJ      重新运行完整自检
XYLPMENU    修复顶部“小阳CAD轮盘”菜单
XYREFRESHCMDS 重新读取当前 AutoCAD 主 CUI、已加载局部 CUIX 和当前 PGP
XYRESTORELOCALCMDS 只读地重新读取当前主 CUI、局部 CUIX 和 PGP 命令
XYLPIME     打开 CAD 输入法自动切换设置弹窗

默认触发方式为 Shift + 右键长按。按住后滑向目标格，松开即执行；中心圆用于取消。


三、主要功能
----------------------------------------
1. 单一全局轮盘
   模型空间、布局空间和块编辑器共用一个轮盘。支持多圈、每圈格数和外边界直径设置、当前格清空和整盘清空。

2. 命令分类设计树
   插件启动、点击“刷新”或执行 XYREFRESHCMDS 时，都会读取当前正在运行 AutoCAD 的主 CUI、已加载局部 CUIX 和当前 PGP，再建立只读命令缓存；轮盘点击只查询缓存，不做实时扫描。名称优先采用当前语言 CUI 中的中文功能名；燕秀等已知外部命令进入“第三方命令”。同一命令存在多条记录时，会避开旧工具栏、TABLET 宏和带预置参数的名称。分类单击只选择，左键双击展开或收起。可新建自定义分类，并对命令进行批量分类或批量删除。
   “重新读取本地命令”只在用户手动点击或执行 XYRESTORELOCALCMDS 时重新建立相同的只读命令快照。它不会删除、改写或重载 acad.pgp，不会删除或修改第三方 CUI/LISP/FAS/VLX，不改系统变量，也不改用户轮盘、自定义命令和分类配置。
   选中具体命令后点击“改名”，可自由修改显示名称。例如“自动坐标标注 [SUN-017]”可以改成任意需要的中文名称；实际执行命令 SUN-017 不变，已经放入轮盘的同一命令会同步改名。

3. 自定义命令
   填写功能描述、英文执行命令和归属分类后保存，再添加到轮盘。无参数命令进入 AutoCAD 原生交互流程；填写了参数的命令按脚本配置执行。全程不使用 SendKeys 或轮盘文本框，避免输入法造成中文误输入。

4. 固定模板批量导入
   仅支持“批量导入CAD快捷键模板.xlsx”。从第 2 行开始填写：
   A 列 执行命令：必填，只使用英文命令名，如 LINE、SUN-173。
   B 列 功能描述：轮盘上显示的名称；留空时使用执行命令。
   C 列 归属分类：可填写现有或新的分类；留空时使用当前分类。

5. 重复 / 占用查询
   在“基础”页点击“检查全部快捷命令重复 / 占用”。查询全部自定义命令的重名、插件保留命令冲突、当前 AutoCAD CUI 定义和当前版本 acad.pgp 别名。
   没有命中 CUI/PGP、重复或插件占用的命令会直接忽略，不在报告中显示。

6. 外观和触发
   “基础”页设置触发方式、长按时间、菜单透明度、背景图片和背景透明度。
   “轮盘设置”页设置总轮盘直径、中心圆半径、圈数、每圈格数和每一圈的外边界直径。所有圈共用鼠标位置这个圆心，最外圈直径与总轮盘直径自动同步。
   轮盘文字默认统一使用宋体，中心“取消”也使用宋体。字号默认使用“自动适配格子”，文字会在所属扇形格内完整均衡换行，并按格数保持可读字号下限，不会跨格、压入中心圆或超出外圈；取消自动适配后可为当前格设置 12–72 px 固定字号，低于当前格可读下限时会自动提升。
   字体和文字颜色都可设置“当前格”或“全部格”。设置全部格会统一现有格子的外观，并作为以后新增格子的默认字体或颜色；单格设置可随时用“恢复”重新继承全部格设置。

7. 设置备份
   可导出、导入和恢复整个轮盘设置。备份包含格子、命令、分类、外观、背景及触发方式。

8. CAD 输入法自动切换
   “基础”页可直接点击“打开输入法设置”；也可在命令分类中展开“小阳轮盘”，选择“输入法自动切换设置 [XYLPIME]”并添加到任意轮盘格，点击该格会打开同一个独立设置窗口。
   可勾选“命令行直接输入时首选英文”。编辑已有中文或中英混合文字时自动首选中文，编辑纯数字/英文文字时首选英文；TEXT、DTEXT、MT、MTEXT 等新建文字命令只由“需要中文输入的命令”名单统一控制，不设置重复开关。系统推荐命令区提供“全选”和“反选”，允许清空并原样保存。
   设置中只选择一个 Windows 已启用的中文输入法。微软拼音、搜狗、微信等会分别显示；命令行英文使用所选输入法自身的关闭状态，文字命令中文再开启同一个输入法，不再使用或切换“英语（美国）”键盘。现代输入法优先通过当前 CAD 输入线程的 TSF 状态切换，旧式 IMM 只作兼容兜底。
   系统推荐文字命令可逐项勾选，还可添加第三方插件或 LISP 的英文完整命令。所有第三方/LISP 命令统一兼容 CAD 上报的 C:命令名、全局/本地前缀和命令行变体，不为某个命令单独写规则。已勾选的第三方/LISP 父命令启动原生子命令时，子命令继承父命令的中文偏好；当前 PGP 别名与实际命令按同一命令匹配。现有文字内容只在 TEXTEDIT、DDEDIT、MTEDIT 等编辑命令开始时读取一次；原位编辑器或普通命令行建立新输入上下文后只做短时有界补设，成功立即停止。之后允许用户手动切换，不会周期性锁定。插件严格验证 CAD 主窗口及其输入控件，设置窗口或其他软件位于前台时不操作；TSF 输入法只按当前 CAD 进程范围激活。
   右键触发轮盘时不会重新读取配置文件；背景和格子文字布局会提前预热并在重复弹出时复用缓存。普通右键长按只在当前启用且位于前台的 MDI 绘图区、没有 CAD 命令运行时识别，燕秀等第三方命令运行期间完全让行；短右键始终成对交付，不留下半点击状态。
   本功能只在当前 AutoCAD 进程中响应命令事件，不使用 SendKeys，不修改 FILEDIA、OSMODE、ORTHOMODE 等 CAD 系统变量，也不调用独立英文键盘或会话级输入法切换。用户选择的具体输入法不可用时，不会任选其他输入法，也不会改写配置，而是直接沿用 Windows 当前输入法。异常始终写入 errors.log；可选的非阻塞文本报告默认关闭，开启后也不抢焦点，并可在报告内选择不再显示。


四、版本和快捷键读取范围
----------------------------------------
AutoCAD 2014 / R19.1：支持，使用 AutoCAD 2014 API 单独编译的 .NET Framework 4.8 DLL，并启用旧版应用上下文兼容执行。
AutoCAD 2015 / R20.0：支持，使用 AutoCAD 2015 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2016 / R20.1：支持，使用 AutoCAD 2016 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2017 / R21.0：支持，使用 AutoCAD 2017 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2018 / R22.0：支持，使用 AutoCAD 2018 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2019 / R23.0：支持，使用 AutoCAD 2019 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2020 / R23.1：支持，使用 AutoCAD 2020 API 单独编译的 .NET Framework 4.8 DLL。
AutoCAD 2021–2024 / R24.0–R24.3：支持，.NET Framework 4.8；使用 AutoCAD 2021 SDK 构建的兼容 DLL。
AutoCAD 2025 / R25.0：支持，使用 AutoCAD 2025 SDK 25.0 单独编译的 .NET 8 DLL；清单只映射 R25.0。
AutoCAD 2026 / R25.1：支持，使用 AutoCAD 2026 SDK 25.1 单独编译的 .NET 8 DLL；清单只映射 R25.1。

安装包目录按运行时区分：AutoCAD 2014–2024 的 DLL 放在 Contents\NetFramework48，AutoCAD 2025–2026 的 DLL 放在 Contents\Net8。安装结束后只保留本机已安装 CAD 年份对应的 DLL。

顶部菜单按当前 CAD 年份在插件 Data\Menu\<年份> 生成独立 CUIX，避免多个 CAD 版本共用同一个编译菜单。插件不会覆盖 CAD 安装目录中的 acad.cuix、acad.mnl 或其他原文件。

轮盘中的无参数 CAD 命令会像用户点击 AutoCAD 功能区按钮一样进入原生交互流程；对象捕捉、动态输入和命令提示均由当前 CAD 配置接管。普通右键长按在已有命令运行时不会打开轮盘或取消该命令，顶部菜单宏也不发送 Ctrl+C。命令执行对 AutoCAD 系统变量只读不写，不会临时修改或恢复 ORTHOMODE、OSMODE、FILEDIA、CMDDIA、CMDECHO、NOMUTT、MENUBAR 等值。XYLPZJ 自检会记录常用命令状态变量执行前后的数值并确认完全一致。
使用 Shift 或 Alt 组合键触发轮盘时，插件会等待物理修饰键释放、让 CAD 处理完按键抬起消息后再启动格子命令，避免把临时正交覆盖带入 RECTANG 等交互命令。
轮盘只发送用户配置的命令名本身，不附加点号或全局下划线前缀；命令由当前 CAD 已加载的 PGP、LISP、第三方插件和文档环境按正常输入路径解析。

命令分类启动时读取当前运行版本的 MENUNAME 主 CUI；手动刷新时再读取主 CUI 所列的已加载局部 CUIX。PGP 别名读取当前运行版本的 ROAMABLEROOTPREFIX、ACADPREFIX 和 CUI 所在支持目录。因此不会把另一版本的快捷键混入当前结果，也不会在点击轮盘时实时扫描。


五、文件位置
----------------------------------------
插件主体：<解压目录>\小阳CAD轮盘插件.bundle
配置文件：<解压目录>\小阳CAD轮盘插件.bundle\Data\autocad-<当前CAD年份>.json
运行日志：<解压目录>\小阳CAD轮盘插件.bundle\Logs\autocad-plugin.log
错误日志：<解压目录>\小阳CAD轮盘插件.bundle\Logs\errors.log
安装报告：<解压目录>\小阳CAD轮盘插件.bundle\Logs\install-report.json
自检报告：<解压目录>\小阳CAD轮盘插件.bundle\Logs\self-test.json


六、故障排查
----------------------------------------
1. 顶部没有“小阳CAD轮盘”菜单：执行 XYLPMENU 立即修复，再执行 XYLPZJ 并查看 errors.log。插件不会改变用户的 MENUBAR 或工作空间设置。
2. 命令分类不正确：执行 XYREFRESHCMDS，插件会重新读取当前 AutoCAD 主 CUI、已加载局部 CUIX 和 PGP 快照。
3. PGP 别名未识别：确认修改的是当前 AutoCAD 配置使用的 acad.pgp，保存后执行 XYREFRESHCMDS。
4. 插件不加载：确认解压目录未被移动，AppData\Autodesk\ApplicationPlugins\小阳CAD轮盘插件.bundle 目录链接仍存在，并重新运行一键安装。
5. 设置损坏：在“基础”页先导出备份，再使用“恢复默认设置”；详细错误见 Logs\errors.log。

本插件通过 AutoCAD 原生命令上下文或原生交互命令队列执行，不使用 SendKeys、轮盘文本框或依赖输入法。标注、绘图等需要选点的命令会保留当前对象捕捉并继续等待用户操作。

命令分类搜索结果始终定位到命令树顶部。勾选“搜索命令树展开”时，搜索会自动展开匹配分类；不勾选时分类保持收起，由用户双击分类后查看命令。
