Merge pull request 'docs: TransformBy/ToJson 必须随阶段三改,补 kLoft 丢数据后果' (#39) from company-desktop-computer/docs/x3dsolid-stage3-scope into main

Reviewed-on: #39
Reviewed-by: gjm <littleoldpan@163.com>
This commit was merged in pull request #39.
This commit is contained in:
gjm committed 2026-10-22 14:10:52 +08:00
commit a792194aa9
1 file changed
+5 -1
+5 -1
View File
@@ -404,7 +404,11 @@ void SetSweepData(const CString& sReg, const AcDbCurve* pCurve);
### 11.2 重启前还要定的事 ### 11.2 重启前还要定的事
1. `TransformBy`、`ToJson` 是否一起改——这两处在运行时会反复导出/解析 SAT,是阶段三改动量的大头 1. **已定:`TransformBy`、`ToJson` 必须一起改**(2026-10-22)。这两处都是 `m_sScr` 的读者,容器化后不改不是「导出数据不对」,而是功能直接坏:
- `TransformBy`(`:5488`)5 个类型都靠 `StringToRegion(m_sScr)` 取截面,取不到就 `bChanged = false`,末尾不 `ReCreate`。`kExtrude2` 会留下「参数已变换、几何未变」的不一致;`kRevolve` / `kRevolve2` / `kSweep` 整段分支不执行,完全不动
- `kLoft` 更严重:`vec` 为空导致 `strAll` 为空,`:5567` 把 `m_sScr` 覆盖成空字符串,`ReCreate` 里 `CreateLoft` 因空输入直接 `return false`(`:5006`)——**一次移动就永久丢掉截面数据**
- `ToJson`(`:5211`)三个分支(`kSweep`、单 region、多 region)全靠 `m_sScr` 解析出 `__sScr__`,不改则导出的 JSON 里 region 几何为空
- 因此阶段三的范围是「所有 `m_sScr` 读写者」,不存在「只改生成路径、留着这两处」的做法。`m_sScr` 在 `AcDbX3dSolid.cpp` 共 66 处、24 个函数:`ReCreate` 18、`TransformBy` 10、`ToJson` 9、9 个 `Create*` 各 1、4 组 Get/Set 各 1、`dwgIn/OutFields` 各 1
2. 老图纸里 region 类型的实际占比——占比低的话体积收益有限,可以永久搁置 2. 老图纸里 region 类型的实际占比——占比低的话体积收益有限,可以永久搁置
### 11.3 实施时的技术前提(已核对) ### 11.3 实施时的技术前提(已核对)