# 更新日志

OtoCAD Community 的所有重要变更都会记录在本文件中。

格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/)，
并遵循[语义化版本](https://semver.org/lang/zh-CN/)。

## [Unreleased]

### 新增

- **自定义图框(数据驱动图框,类似 SolidWorks 的图纸格式 Sheet Format)**:图框不再是硬编码的类,
  而是一份 JSON 定义 —— 边框 + 自底向上堆叠的水平带(注释区 · 标题栏网格 · 属性区列表)+ 投影符号 /
  "其余"粗糙度等图面附件,由一个通用渲染器画出。Ribbon「图框 ▸ 自定义图框」选一份定义即可放置;
  出厂预设三份(`Config/Frames/`:ISO 单透镜框 · GB 中文光学件框 · 用户自定义示例 `GB-my-1`),
  复制改名就是自家图框。定义随实体**内嵌进 `.otocad`**,换机器打开不依赖本机那份 JSON。
  标题栏格 / 注释 / 属性区每一格仍可点击就地编辑,增删行、属性包回写、出图清单 `frame:` 校验
  (按内嵌定义名比对)与既有图框同一套契约。定义结构错误(未知带、格越界、键重复 …)放置前即报出。
- **自家图框进入一键出图**:「出图标准编辑」新增"图框模板"下拉,可选内置 GB / ISO 框,也可选
  `Config/Frames/` 里任何一份自定义图框定义;选中后单透镜 / 双胶合 / 直角棱镜的一键出图与导入设计
  的整套加工图都用该图框出,标题栏(名称 · 图号 · 制图 · 比例 · 张次 …)与属性区由同一份出图属性包
  自动填写(定义里用 `bagKeys` 声明标题格吃哪些属性键),改格回写、一键重出、清单校验照旧。

### 修复

- 派生 / 另存为出图标准时丢失"图框模板"选择(总是回落 GB 框)。

## [0.5.0]

自 0.4.0 以来的社区版变更。本版主线是**一次导入,出一套图**:从"一张一张画"到
"一个设计文件进去,一整套能交给厂方的加工图出来"。

### 新增

- **光学设计导入进入免费版,一次导入出一套图** ⭐:`.zmx`(Zemax)与 Optiland / Optic JSON
  的解析、面型识别、元件建模(单透镜 / 胶合件自动归组)全部下放到社区版。
  导入后**一次生成整套图纸** —— 光路总图 + 每个元件各一张完整加工图,各占一个标签页;
  库克三片式进去是一套四张,七片镜头进去是一套八张,不必逐个元件重复出图。
  此前该功能属付费模块,免费版没有这条命令 —— 也就是说"光学设计 → 加工图"这条主链
  对社区版用户是断的。现在通了。
- **GB 中文标准图纸出图**:选中透镜一键生成 GB/T 13323 中文图框 —— 标题栏、
  三/四列属性区(左右表面 · 材料技术要求)、注释区,全部可点击就地编辑。
- **属性驱动的图纸(类似 SolidWorks 的自定义属性)**:标题栏与属性区的每一行(半径 ·
  面形 · 疵病 · 材料 n_d/v_d …)都是一条带**稳定键名**的文档级属性,随 `.otocad` 存盘,
  是该图纸的单一真值源。与 SolidWorks 一样是"改属性、所有引用处一起变",范围更大 ——
  不止标题栏,属性区表格每一行都是属性。在图上点开哪一格就地改即回写属性;重新出图时
  按键名自动回填,手填过的公差/备注/图号不丢;出图清单也按键名校验同一份数据。
  属性区支持增删行 = 增删自定义指标。
- **标准图纸引擎**:按零件类型分派适配器 + 版面引擎(scale-to-fit 自动选纸与比例,
  A4/A3/A2 × 标准比例)。已支持**单透镜 · 双胶合 · 直角棱镜**三种零件。
- **出图清单**:YAML 规则驱动的交付前自检(图框 · 自动标注 · 非球面数据块 · 材料代号 ·
  标注重叠 · 内容出框 …),右侧面板逐条给出通过/失败与依据条款,失败项支持一键重出。
  规则是数据文件,可自行增改而无需重编译。
- **全关联出图**:所有标注与标记的锚点跟随所锚定的零件 —— 改透镜口径/半径/厚度,
  尺寸自动跟随;拖动标注端点会吸附零件角点(吸上=重新绑定,拖空=脱离),悬空尺寸灰显提示;
  贴面标记拖动时沿曲面滑动而不脱面。
- **ISO 10110-12 非球面数据块**:非球面自动产出完整数据块(方程 z(h) + 矢高表 + 系数 R/K/A4…)。
- **DXF 导出重写**:改走统一渲染接口,**全部实体类型**(光学透镜 · 24 种光学标记 · 图框 ·
  各类标注)都能出图。同一张标准图纸的导出实体数由 3 增至 147。
  旧版仅能导出 9 种基础几何,圆弧分支为空,光学实体整体丢失。
- **玻璃剖面填充**:透镜与棱镜剖面按 GB 画玻璃材料符号(短-长-短)与底色。
- **透镜标注显示开关**:属性面板勾选式控制生成哪些标注(R1/R2/d/Ø),实时增删。
- **出图标准切换**:尺寸标注规范随所选出图标准切换。

### 变更

- 光学标记合并去重:28 → 24 种(语义重复的标记合并,旧文件自动迁移)。
- 面型精度 · 表面纹理 · 有效孔径由独立贴面标记改为**面属性区表格行**(它们是数据载体,
  不是图面符号)。
- 直径符号与代号串统一按 ISO 10110 主文字渲染。

### 修复

- **DXF 导出**:椭圆轴长语义错误(导出的椭圆只有实际的一半大,且竖椭圆会令整份导出失败);
  双点画线退化为单点画线(GB/T 13323 §2.1 的光轴与中心线在 DXF 中无法区分);
  ByLayer 颜色被写死为固定 RGB;导出丢失图层归属。
- **非球面数据块两处静默丢失**:一键重出会删除数据块与粗糙度标记(它们无法被重建);
  GB 出图路径此前根本不产出数据块。
- **光轴按绘图比例放大冲出图框**(放大出图时光轴与标签越出边框)。
- **全部光学标记的 5 类共享缺陷**(合并去重前逐个修复):旋转/缩放变换失效 ·
  颜色不跟随图层 · 夹点拖动错位 · 主文字未按 ISO 代号渲染 · 包围盒不含真实几何。
  已加自动探测器扫描全部标记防回归,新增标记自动纳入。
- 标记几何与国标符合性多项修正(粗糙度三角形 · 抛光等级线 · 中心偏差代号 ·
  面形精度代号 4/ → 3/ · 镀膜反射符号方向)。
- 标注手感:竖排文字取向与位置 · 文字压线 · 夹点遮挡 · 半径标注引线端夹点消失 ·
  径向标注拖动后脱离跟随 · 透镜中心捕捉(中心厚度可标注)。
- Ribbon:非 100% DPI 下按钮少一行 · 切换页签时整条 ribbon 跳动 · 图层下拉冻结与失灵。
- 新建文档的图层表不再出现两个 "0" 层。

### 已知限制

- 棱镜出图仅支持**直角棱镜**;屋脊/道威/五角棱镜的剖面几何尚未实现,出图会明确提示
  "暂不支持"而不会给出错误轮廓。
- 出图清单中若干规则的国标依据仍待人工核对(文件内以注释标注),这些项为 warning 级,
  不阻塞交付。

## [0.4.0]

补记(此版当时未撰写变更日志)。

### 新增

- 逐面净口径与机械外径分离:每个表面在自身通光口径内弯曲,平肩(land)过渡到共同机械外径。
- 玻璃剖面材料符号(GB 短-长-短交替剖面线),胶合件两片按国标样例同向平铺。
- 标记贴面放置与曲面吸附基础设施。

### 修复

- 机械口径钳制到不小于净口径。
- 直径符号统一。

## [0.3.1]

自 0.1.0 以来的社区版变更。

### 新增

- **跨平台二进制发布**：Windows / Linux / macOS（Intel + Apple Silicon）self-contained
  单文件包，解压即用，无需安装 .NET。
- **标记贴面放置**：`ISurfaceAttachable` + 通用 `PlaceSurfaceMarkCmd`，标记可吸附到实体表面。
- **AI 助手面板**（Community 为 UI 脚手架，接入 OtoCAD Cloud 后启用）：消息可选择 / 复制、
  轻量 Markdown 渲染、离线自动重连。

### 变更

- 默认图纸的表面粗糙度改用真实标记实体渲染。

### 修复

- 选区 / 删除不再误删锁定图层（图框）；`Ctrl+A` 全选行为修正。

## [0.1.0] — 首个公开版本

OtoCAD Community 的首个开源版本 —— 基于 Avalonia + SkiaSharp 构建的跨平台二维光学
CAD 绘图应用，与桌面版共享同一 `lcdb` 业务核心。

### 新增

- **跨平台桌面端**（Avalonia + SkiaSharp），共享 `lcdb` 业务核心：
  `lcdb`（实体/数据库）· `lcinterface`（接口）· `LitMath`（数学库）。
- **绘图**：直线 · 圆 · 圆弧 · 矩形 · 多段线 · 多边形 · 椭圆 · 样条 ·
  点 · 射线 · 构造线 · 单行文本 · 多行文本 · 引线。
- **编辑**：移动 · 复制 · 旋转 · 缩放 · 镜像 · 偏移 · 删除 ·
  全选 / 取消选择，支持基于操作的撤销 / 重做。
- **标注**：线性 · 对齐 · 半径 · 直径 · 角度 · 坐标，标注线支持夹点拖拽。
- **光学标记**：表面处理、粗糙度、面形精度、定心公差、表面疵病/质量，
  以及符合 ISO 10110 / GB/T 标准的标记。
- **交互**：单击与框选、精确拾取、捕捉引擎（端点 / 中点 / 圆心）、
  平移 / 缩放、自适应网格。
- **界面**：JSON 驱动的 Ribbon 布局、反射构建的属性面板、
  键盘快捷键、状态栏、浅色 / 深色 / 默认主题。
- **文件**：`.otocad`（自定义 JSON）格式，新建 / 打开 / 保存 / 另存为、
  最近文件、自动保存与滚动备份。
- **导入 / 导出**：DXF（AutoCAD 2000+）与 PDF（A4 横向矢量）。
- **打包**：自包含单文件 Windows 构建 + Inno Setup 安装包。
- **持续集成**：GitHub Actions 跨 Windows / macOS / Linux 构建。
