company-desktop-computer
|
e5e6fd7d6d
|
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 读写者,不是生成路径加少量读取点。
|
2026-10-22 14:09:44 +08:00 |
|
company-desktop-computer
|
4bc346640c
|
docs: kIntersect/kSliceSolid 是遗留类型,阶段三不迁移
核对结果:这两种类型全库没有产生路径,新图永远不会出现。
- 枚举只在 AcDbX3dSolid.h:53-54 定义,其它模块零引用
- CreateIntersect / CreateSliceSolid 只有定义、头文件声明、ReCreate 读分支
调用(:4413、:4451),是纯读路径
- Create() 的 12 个 case 里没有它们;SetSolidData() 全库无调用者,内部也
没有对应 case
- 没有 (Primitive)28/(Primitive)29 这类数字强转
文档相应调整:
- 3.2 表格加「迁移」列,两种类型标为否,并补核对依据
- 4.3.1/4.3.2 把两处读写点移出迁移表,注明保持现状
- 4.3.3、4.3.6 的停写范围收敛为「迁移的 7 种类型」
- 12.5 降级表改为「不进容器,m_sScr 原样写出」
- 12.6 由「折线后缀待定」改写为「不参与迁移(已定)」,冲突不再存在
- 11.2 删掉折线后缀这条待定项,第 7 节验证清单同步
|
2026-10-22 13:52:13 +08:00 |
|
company-desktop-computer
|
cad5289fae
|
docs: 补阶段三的降级导出方案(新格式 → 老格式)
新增第 12 节。核心结论:降级不需要重建几何,容器里就是 acisOut 的 SAT
ASCII 字节,老 m_sScr 里也是同一批字节,解包后按老规则拼回即可,纯内存、
不调 acisIn、不落临时文件。
- 在 dwgOutFields 里做:AcDbX3dSolid 的持有关系分散在 X3dPart、X3dPartEntity
以及 Hanger/Roof/Stair 的 m_solids 缓存里,命令层遍历不全,但存盘时每个
实例必然走 dwgOutFields
- 进程级开关 + RAII 复位,只改写出内容,不改对象状态,导出后当前图仍是新格式
- MakeLegacyScr 按 3.2 的表分四类拼回,容器写出长度 0
- 12.6 指出 4.3.6「region 类型停写 m_sScr」与 kIntersect/kSliceSolid 的折线
后缀冲突,建议这两种类型继续只写折线后缀
- 12.8 记录限制:导出写的对象版本号是 4,只能被 kCurrentVersionNumber >= 4
的插件读取;版本号 3 的存量插件靠降级救不回来,需要另写 v3 布局
11.1、11.2、11.4 同步加交叉引用与状态行。
|
2026-10-22 13:26:51 +08:00 |
|
company-desktop-computer
|
e693e99f4c
|
docs: 修正 3.2 类型表,kIntersect/kSliceSolid 是 region + 折线
原表把 kIntersect(28)、kSliceSolid(29) 归为"2 个 region(外 + 内)",
实际 m_sScr 是 "regionSAT|折线文本":写端用 CurveToString 产出折线
(:2130、:2184),读端用 StringToPolyline 还原(:4403、:4441)。
按原表装容器,解包时第二个 acisIn 必然失败。容器只装 region,折线
部分不进容器。
同时补三条核对结论:切分取第一个 | 且 sScr2 保留分隔符;kSweep 的路径
在 m_sszPoint2ds 不在 m_sScr;降级导出要按这张表拼回。
|
2026-10-22 11:02:16 +08:00 |
|
company-desktop-computer
|
bed6556adf
|
docs: 明确阶段三单向兼容——老版看不到新图 region 几何
兼容方案定为第一项:不升 kCurrentVersionNumber,新版能完整读旧版图纸,
旧版打开新图时 region 类型的 AcDbX3dSolid 几何不可见。
补充说明 m_pSatBuffer 在旧版也会原样读写,所以旧版另存后回新版仍能恢复;
非 region 类型(点串、SubDMesh、管廊脚本)不受影响。
文档开头的原则、4.3.4 的不升版本理由同步。
|
2026-10-22 10:43:45 +08:00 |
|
company-desktop-computer
|
fbb2ca8890
|
docs: 阶段三暂缓,补兼容取舍与已核对的技术前提
- 新增第 11 节:阶段三暂缓的决定、三个兼容选项的后果、重启前必须先定的事
- 修正过时内容:kCurrentVersionNumber 实际是 4;不需要新增
CoreTools::RegionToBuffer,现有 RegionToString(char*&) 已输出 ASCII 字节
- 写入点、读取点表格按当前 main 行号更新,标注以函数名定位
- 4.3 开头注明阶段一、二已合并,阶段三暂缓
|
2026-10-22 10:38:35 +08:00 |
|
company-desktop-computer
|
e65eba26c8
|
docs: 新增 AcDbX3dSolid 重构计划
- 现状:m_sScr 用 CString 存 ACIS SAT,UTF-16 导致体积翻倍;临时文件名写死;开图逐单元走临时文件
- 否决方案:存构建曲线、自写 AcDbDwgFiler、持有 AcDbRegion 对象、隐藏 BTR、zlib 压缩
- 采用方案:SAT 的 ASCII 字节流存进 m_pSatBuffer(RegionBlobHeader + 长度前缀)
- 三阶段:临时文件唯一化 -> 懒重建 -> region 数据二进制化
- 兼容策略:读兼容老图纸(m_sScr / 0x00c1 切分),写入统一新格式,不自动迁移
- 公开 CString 接口签名不变,内部转换
- kLoftReducer 纳入统一容器;kEarthWorm/kSHEarthWorm 已废弃但 m_sScr 字段暂不删除
|
2026-10-20 16:20:48 +08:00 |
|