docs: 明确阶段三单向兼容——老版看不到新图 region 几何
兼容方案定为第一项:不升 kCurrentVersionNumber,新版能完整读旧版图纸, 旧版打开新图时 region 类型的 AcDbX3dSolid 几何不可见。 补充说明 m_pSatBuffer 在旧版也会原样读写,所以旧版另存后回新版仍能恢复; 非 region 类型(点串、SubDMesh、管廊脚本)不受影响。 文档开头的原则、4.3.4 的不升版本理由同步。
This commit is contained in:
1 parent
fbb2ca8890
commit
bed6556adf
1 file changed
+10
-9
@@ -4,7 +4,7 @@
|
|||||||
>
|
>
|
||||||
> 范围:`SourceCode/Code2026/CoreLibrary/AcDbX3dSolid.cpp`(5596 行)、`inc/AcDbX3dSolid.h`、`CoreCommand/CoreTools.cpp`。
|
> 范围:`SourceCode/Code2026/CoreLibrary/AcDbX3dSolid.cpp`(5596 行)、`inc/AcDbX3dSolid.h`、`CoreCommand/CoreTools.cpp`。
|
||||||
>
|
>
|
||||||
> 原则:**老图纸必须能读**;写入统一新格式;不改对象模型(`AcDbX3dSolid` 仍是可平凡复制的数据类)。
|
> 原则:**单向兼容——新版必须能读老图纸,老版不保证能显示新图的 region 类型几何**(见 11.1);写入统一新格式;不改对象模型(`AcDbX3dSolid` 仍是可平凡复制的数据类)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ else if (!m_sScr.IsEmpty())
|
|||||||
|
|
||||||
写入:只写新格式。
|
写入:只写新格式。
|
||||||
|
|
||||||
**不升 `kCurrentVersionNumber`**。理由:字段都在,靠"哪个非空"即可判别;升版本会让老版本 CAD 读新图时走 `eMakeMeProxy`。
|
**不升 `kCurrentVersionNumber`**。理由:字段都在,靠"哪个非空"即可判别;升版本会让老版本 CAD 读新图时走 `eMakeMeProxy`,新图在所有老版本上彻底不可编辑。代价是老版本看不到 region 类型的几何,这是已定的取舍,见 11.1。
|
||||||
|
|
||||||
#### 4.3.5 `kLoftReducer` 纳入统一容器
|
#### 4.3.5 `kLoftReducer` 纳入统一容器
|
||||||
|
|
||||||
@@ -371,21 +371,22 @@ void SetSweepData(const CString& sReg, const AcDbCurve* pCurve);
|
|||||||
|
|
||||||
**决定:暂不实施。** 阶段一(临时文件唯一化、越界读)、阶段二(懒重建)已合并,主要痛点已经解决;阶段三剩下的收益只有「region 部分 DWG 体积减半」,代价是新图在老版本插件里 region 几何不可见。当前时机未到。
|
**决定:暂不实施。** 阶段一(临时文件唯一化、越界读)、阶段二(懒重建)已合并,主要痛点已经解决;阶段三剩下的收益只有「region 部分 DWG 体积减半」,代价是新图在老版本插件里 region 几何不可见。当前时机未到。
|
||||||
|
|
||||||
### 11.1 核心取舍
|
### 11.1 兼容方向(已定)
|
||||||
|
|
||||||
`m_sScr` 停写后,老版本插件打开新图会走 `StringToRegion("")`,返回 NULL,region 类型建不出几何。数据没有丢——仍在 `m_pSatBuffer` 里,装回新版插件即可恢复。
|
**单向兼容**:新版插件完整读取旧版图纸(`m_sScr` 老路径永久保留);旧版插件打开新图时,region 类型的 `AcDbX3dSolid` 几何不可见。
|
||||||
|
|
||||||
|
不可见不等于丢数据:`m_pSatBuffer` 老版本也会原样读写(版本 > 1 的通道一直都在),所以旧版打开后另存、再回新版打开,几何仍能恢复。非 region 类型(`m_sszPoint2ds` 点串、SubDMesh、管廊脚本)不受影响。
|
||||||
|
|
||||||
| 选项 | 后果 | 结论 |
|
| 选项 | 后果 | 结论 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| 不升版本号,接受老插件缺几何 | 老插件能开图、参数都在,region 几何不显示;换新版可恢复 | 若重启阶段三,选这个 |
|
| 不升版本号,接受老插件缺几何 | 老插件能开图、参数都在,region 类型几何不显示;换新版可恢复 | **已定,选这个** |
|
||||||
| 升到 5,老插件显式 proxy | 不会静默缺几何,但新图在所有老版本上彻底不可编辑,且不可回退 | 不选 |
|
| 升到 5,老插件显式 proxy | 不会静默缺几何,但新图在所有老版本上彻底不可编辑,且不可回退 | 不选 |
|
||||||
| 保留双写(`m_sScr` 仍写老格式) | 体积变成 2N + N,比现状更差 | 否决 |
|
| 保留双写(`m_sScr` 仍写老格式) | 体积变成 2N + N,比现状更差 | 否决 |
|
||||||
|
|
||||||
### 11.2 重启前必须先定的事
|
### 11.2 重启前还要定的事
|
||||||
|
|
||||||
1. 11.1 的表格选哪一行
|
1. `TransformBy`、`ToJson` 是否一起改——这两处在运行时会反复导出/解析 SAT,是阶段三改动量的大头
|
||||||
2. `TransformBy`、`ToJson` 是否一起改——这两处在运行时会反复导出/解析 SAT,是阶段三改动量的大头
|
2. 老图纸里 region 类型的实际占比——占比低的话体积收益有限,可以永久搁置
|
||||||
3. 老图纸里 region 类型的实际占比——占比低的话体积收益有限,可以永久搁置
|
|
||||||
|
|
||||||
### 11.3 实施时的技术前提(已核对)
|
### 11.3 实施时的技术前提(已核对)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user