docs: TransformBy/ToJson 必须随阶段三改,补 kLoft 丢数据后果
11.2 第 1 项从「是否一起改」改为已定。这两处都是 m_sScr 的读者,容器化 后不改不是导出数据不对,而是功能直接坏: - TransformBy:5 个类型靠 StringToRegion(m_sScr) 取截面,取不到就 bChanged=false、不 ReCreate。kExtrude2 留下参数与几何不一致; kRevolve/kRevolve2/kSweep 整段不执行 - kLoft:vec 为空使 strAll 为空,:5567 把 m_sScr 覆盖成空串,ReCreate 里 CreateLoft 因空输入直接 return false,一次移动永久丢截面数据 - ToJson:三个分支全靠 m_sScr 解析 __sScr__,不改则导出几何为空 同时记录 m_sScr 的分布(66 处、24 个函数),说明阶段三的范围是所有 m_sScr 读写者,不是生成路径加少量读取点。
This commit is contained in:
1 parent
ccf90a5882
commit
e5e6fd7d6d
1 file changed
+5
-1
@@ -404,7 +404,11 @@ void SetSweepData(const CString& sReg, const AcDbCurve* pCurve);
|
||||
|
||||
### 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 类型的实际占比——占比低的话体积收益有限,可以永久搁置
|
||||
|
||||
### 11.3 实施时的技术前提(已核对)
|
||||
|
||||
Reference in new issue
Block a user