gjm
|
4fa3276b58
|
重新整理utility/copyarx的目录结构
重新整理utility/copyarx的目录结构
|
2026-10-25 17:49:05 +08:00 |
|
gjm
|
e0f31a3e61
|
Merge pull request '上传copyarx工程' (#58) from home-lenovo-legion-r9000/上传-copyarx-工程 into main
Reviewed-on: #58
|
2026-10-25 13:35:35 +08:00 |
|
gjm
|
ac3e6b0083
|
上传copyarx工程
上传copyarx工程
|
2026-10-25 13:34:19 +08:00 |
|
gjm
|
9ba35dbfdf
|
Merge pull request 'docs: 性能部分收尾,4.4/4.6 定为不做' (#57) from company-desktop-computer/docs/ewequipment-perf-final into main
Reviewed-on: #57
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 13:08:30 +08:00 |
|
company-desktop
|
72f225a455
|
docs: 性能部分收尾,4.4/4.6 定为不做
|
2026-10-25 13:06:35 +08:00 |
|
gjm
|
5a07b11e42
|
Merge pull request 'docs: 记录性能部分 4.2~4.6 的结论' (#56) from company-desktop-computer/docs/ewequipment-perf-decisions into main
Reviewed-on: #56
|
2026-10-25 13:01:36 +08:00 |
|
company-desktop
|
2a6421de95
|
docs: 记录性能部分 4.2~4.6 的结论
- 4.2 已修复(PR #53),补充实际做法和原因
- 4.3 核实「缩放频繁时开销明显」不准确:Draw2d 开头命中 2D 缓存就直接返回,
只有 2D 缓存失效后的第一次绘制才会走到 Draw*Vlv2d,是一次性开销,暂缓
- 4.4 决定不缓存 INSUNITS;补「单元 -> 世界矩阵」的具体解释
- 4.5 剖切确实不再调用,但 KTEarthWormCmd 等仍有十几处,暂不动
- 4.6 评估后不建议照 AecDbX3dPart 惰性化:m_arSubPrimPtrs 是持久化数据本体,
99 处引用、约 40 个读函数,且索引语义在解析前后会变;给出先量、
解析结果缓存、惰性化三步替代路径
|
2026-10-25 12:47:35 +08:00 |
|
gjm
|
f60cfb50bf
|
Merge pull request 'fix: GetInterface 数组版 bSizeUnLock 被 memset 清成 false' (#55) from company-desktop-computer/fix/ewequipment-sizelock into main
Reviewed-on: #55
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 12:18:49 +08:00 |
|
company-desktop
|
e448dbacfd
|
fix: GetInterface 数组版 bSizeUnLock 被 memset 清成 false
inf.bSizeUnLock = true 原来写在循环外,循环内每次都 memset(&inf, 0, ...),
赋值被清掉,数组版返回的接口实际一直是"锁定"状态。
把赋值挪到 memset 之后;循环外那两行初始化(bSizeUnLock / dGasket)删掉,
memset 之后本来就是 0。
bSizeUnLock 目前只在 i_AecDbXEquipment.cpp 里序列化,没有读取判断的地方,
所以此前没暴露成故障。
|
2026-10-25 12:10:09 +08:00 |
|
gjm
|
6a375aea75
|
Merge pull request 'fix: GetInterface 数组版补 dUnit,与下标版统一单位' (#54) from company-desktop-computer/fix/ewequipment-interface-unit into main
Reviewed-on: #54
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 12:01:22 +08:00 |
|
company-desktop
|
d1f4d0b50b
|
fix: GetInterface 数组版补 dUnit,与下标版统一单位
AecDbEwEquipment::GetInterface(AcArray<AecInterface>&) 里 ptPos 已经
transformBy(xform) 缩放过(米制 0.001),但 dSize1 / dSize2 直接取
pNoze->dVal1,没有乘 dUnit;下标版 GetInterface(int, ...) 是乘了的。
结果同一个接口经两个入口读出来尺寸差 1000 倍,出现"位置按米、尺寸按毫米"。
补 * dUnit。dV / dA 是电压电流(EarThwormDef.h:518),不是长度,不参与换算。
影响面:
- 数组版的 4 处内部调用(getOsnapPoints、subErase、DrawInfArrow、vtAdjust)
只用 ptPos / vtDir,不受影响
- 外部消费 dSize1 的是 CoreCommand/pcf.cpp:1044 的 pcf_ewEquipment,
米制图纸导出的 PCF 管径此前大了 1000 倍
- 毫米图纸 dUnit 为 1,行为不变
文档同步:3.7 补结论与影响面,3.12 标记确认不改,5.1 加第 16 项,
5.4 三项按结论更新。
|
2026-10-25 11:58:00 +08:00 |
|
gjm
|
a72b38c4e5
|
Merge pull request 'fix 修正自定义设备拖拽时的效率问题' (#53) from home-lenovo-legion-r9000/修正自定义设备拖拽效率 into main
Reviewed-on: #53
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 11:43:22 +08:00 |
|
gjm
|
cbbb7897f7
|
Merge pull request 'fix: 修复 AecDbEwEquipment 的 10 处逻辑缺陷' (#52) from company-desktop-computer/fix/ewequipment-logic into main
Reviewed-on: #52
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 11:42:29 +08:00 |
|
gjm
|
2931ab875c
|
fix 修正自定义设备拖拽时的效率问题
拖拽时一样走绘制缓存
|
2026-10-25 11:29:19 +08:00 |
|
company-desktop
|
f668e29b6c
|
fix: 修复 AecDbEwEquipment 的 10 处逻辑缺陷
3.2 subErase:sName.Find(_T("接头")) 当布尔用,找不到返回 -1 也为真,
整个条件恒成立,删除任何设备都走阀门/接头的合并管线分支。补 != -1。
3.3 DrawHandFlg:else 分支写成 sFlag == _T("Y"),液动阀(3)符号文字一直是空串。
3.4 ProcessHlrResult:遍历 map 时 erase(it) 之后仍然 ++it。改成 while +
erase(it++),没有用 it = erase(it),因为 R190 走 C++98 标准,
C++03 的 map::erase(iterator) 返回 void。
3.5 GetSectionDraw:返回 nCount - nCoundPre(调用前减调用后),恒为 0 或负数。
改为 nCoundPre - nCount。全库调用点都忽略返回值,此前无实际故障。
3.8 copyFrom:补拷 m_bVert / m_idDash / m_idCenter。原来复制粘贴竖放阀门
会变横放,虚线与中心线的图层也丢失。
3.9 MakeBlockRefSet:判断的是累加器 ext 而不是本次的 extAdd,第一轮 ext 还是
空状态,第一个实体的范围永远加不进去;块参照分支不 continue,extAdd 会
沿用上一轮的值被重复累加。改为块参照跳过、extAdd 每轮新建并检查返回值。
3.10 byJson:br._len 是字节数,却按 new PVOID[br._len] 分配、按
sizeof(PVOID)*br._len 拷贝,源缓冲区越界读 7 倍。改为按字节分配拷贝,
并用 br._len 覆盖 m_nSize。
3.11 dwgInFieldsForXPrim:加 16MB 上限(kMaxXPrimDataSize),超限置
eInvalidInput 让整个 dwgInFields 退出;readBytes 检查返回值,失败时释放。
3.13 GetBodyBox:恒返回 TRUE,调用方无法区分是否取到几何;_ext 在循环外定义,
会把上一轮的累积结果重复并入。改为返回实际结果、每轮新建 _ext。
3.14 clearGeoBuffer:函数体只有 AssertWriteEnabled(),改完参数几何不刷新。
改为 Clean2DBuffer() + Clean3DBuffer()。
未处理,见文档 5.4:3.6 HLR_CALC 序列化(要动 AecDbObjXDataMap 公共类)、
3.7 GetInterface 数组版单位(影响 67 处调用)、3.12 mat4 双次变换(需确认是否刻意)。
|
2026-10-25 11:21:11 +08:00 |
|
gjm
|
44f53dede4
|
Merge pull request 'fix: selectEqu 的 pszSearch 判空条件写反' (#51) from company-desktop-computer/fix/equlibdlg-search into main
Reviewed-on: #51
|
2026-10-25 11:07:18 +08:00 |
|
company-desktop
|
eee1b76d18
|
fix: selectEqu 的 pszSearch 判空条件写反
PR #50 去掉早退后,赋值条件写成 if (!pszSearch),正好相反:
- pszSearch == NULL("插入设备"、selectSingleEqu(NULL, ...))
把 NULL 赋给 CString,Debug 版触发 ASSERT(AfxIsValidString)
- pszSearch != NULL(selectCustomValve 传入 "闸阀 DN100")
预填的搜索词被清成空串,对话框打开后搜索框是空的
改为 if (pszSearch)。同时补上下面 CString sText(pszSearch) 的空判断,
pszSearch 为 NULL 时构造 CString 同样会 ASSERT。
保持用调用者传入的 pszSearch 判断设备子类型,而不是 dlg.m_sSearch:
后者在 DoModal 之后可能已被用户改成别的搜索词。
|
2026-10-25 11:05:18 +08:00 |
|
gjm
|
f084e20fc6
|
Merge pull request 'fix 新建自定义设备对话框上的"插入设备"无效' (#50) from home-lenovo-legion-r9000/ai-dev-home into main
Reviewed-on: #50
|
2026-10-25 10:58:12 +08:00 |
|
gjm
|
a7418aa128
|
fix 新建自定义设备对话框上的"插入设备"无效
fix 新建自定义设备对话框上的"插入设备"无效
|
2026-10-25 10:57:32 +08:00 |
|
gjm
|
da0c5c560b
|
Merge pull request 'fix: 存盘不再清空组合设备的子单元(m_Combins)' (#48) from company-desktop-computer/fix/ewequipment-combins into main
Reviewed-on: #48
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-25 10:32:42 +08:00 |
|
company-desktop
|
f6d701a661
|
fix: 存盘不再清空组合设备的子单元(m_Combins)
dwgOutFieldsForXPrim 里的容错条件写成
m_eType != kRevitCombination || m_eType != kRevitCombination
恒为真,任何单元存盘前都会执行 m_Combins.clear():
- 组合设备(kCombination)写出去就是 0 个子单元,存盘一次几何永久丢失
- clear() 只清 vector 不释放指针,内存里的 XPrimData 全部泄漏
- 存盘是只读语义,原代码却在写盘路径里修改了对象状态
改为按实际有效数量写出,不修改对象状态;跳过 NULL 并单独计数,避免
"写了数量但循环少写一条"造成读写错位。同时删掉定义后未使用的 int num。
没有按原方案把条件改成 &&,也没有在读入端加过滤:m_Combins 只有组合
单元才会非空,写端正确后不存在"非组合类型带子单元"的数据,保留枚举
判断等于把正确性押在类型比较上,和原来的错误同源。
受影响的图纸里组合设备的子单元已经被写没了,无法从 dwg 恢复,不做数据
迁移。文档同步更新 3.1、5.2、5.4、6、8。
|
2026-10-25 10:30:19 +08:00 |
|
gjm
|
61316a5f9f
|
Merge pull request 'refactor: 统一 XPrimData::m_pData 为字节数组,releaseData 只保留 delete[]' (#47) from company-desktop-computer/fix/ewequipment-memory-v2 into main
Reviewed-on: #47
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-23 10:55:18 +08:00 |
|
company-desktop
|
41397130e2
|
refactor: 统一 XPrimData::m_pData 为字节数组,releaseData 只保留 delete[]
releaseData() 原来按 m_eType 分两路(8 种 delete[],其余 delete),但同一类型
在内存里可能是对象也可能是字节数组:开图、JSON 导入、深拷贝都分配 new byte[],
而对话框里 setData<T> 的 default 分支和几处直接 new 分配的是对象。按类型判断
必然有一半场景不匹配。
- 13 处对象形式分配统一改成 new unsigned char[sizeof(T)],后续 (T*)m_pData
的用法不变
- releaseData() 去掉 switch,只保留 delete[];~XPrimData() 改为先调 releaseData(),
顺带修掉 m_Combins 子单元的 m_pData 泄漏
- AecDbEwEquipment::FreeSubPrimData() 取代 FreeBuffer(CPtrArray&),改成成员函数,
不再需要参数
- 另外三个文件作用域的 FreeBuffer/FreeBuffer2/FreeBuffer3 改名为 FreeEntityArray/
FreeComplexCurveArray/FreeFaceplanArray,并加 static 收回内部链接
- 删除 ReleaseXPrimData,直接 releaseData() + DELETE_PTR
|
2026-10-23 10:29:31 +08:00 |
|
company-desktop
|
03bbe08b76
|
fix: 修复 AecDbEwEquipment 的内存泄漏(夹点数组、几何单元、剖切与投影克隆)
|
2026-10-23 09:57:20 +08:00 |
|
gjm
|
fe30846e4c
|
Merge pull request 'docs: 补 AecDbEwEquipment 内存、缺陷与性能分析' (#45) from company-desktop-computer/docs/ewequipment-analysis into main
Reviewed-on: #45
|
2026-10-23 08:24:32 +08:00 |
|
company-desktop
|
55391b8dc8
|
docs: 补 AecDbEwEquipment 内存、缺陷与性能分析
|
2026-10-22 16:31:00 +08:00 |
|
gjm
|
68b8ca12f0
|
Merge pull request 'docs: 13.2 按实际实现更新,m_bNeedCreate 懒加载 + Create 保持强制重建' (#44) from company-desktop-computer/docs/x3dpart-lazy-actual into main
Reviewed-on: #44
|
2026-10-22 15:50:07 +08:00 |
|
gjm
|
ae10c51e79
|
Merge pull request 'refactor: X3dPart 的懒加载标志改名 m_bNeedCreate 并加 mutable' (#43) from company-desktop-computer/refactor/x3dpart-lazy-solid into main
Reviewed-on: #43
|
2026-10-22 15:49:37 +08:00 |
|
company-desktop
|
bca4618125
|
docs: 13.2 按实际实现更新,m_bNeedCreate 懒加载 + Create 保持强制重建
|
2026-10-22 15:48:48 +08:00 |
|
company-desktop
|
8ca9519320
|
refactor: X3dPart 的懒加载标志改名 m_bNeedCreate 并加 mutable
与 AcDbX3dSolid::m_bNeedCreate 对齐:同一个语义(派生几何缓存失效,
首次使用时再算),用同一个名字,避免 m_bDirty 被理解成"参数没写完"。
声明为 mutable,与 AcDbX3dSolid 一致;清标志仍在 Rebuild() 里做。
|
2026-10-22 15:41:14 +08:00 |
|
company-desktop
|
5a5cd08721
|
perf: X3dPart 布尔结果改为按需重建,开图不再逐件建体
方案 A(见 AcDbX3dSolid-refactor-plan.md 第 13 节)。开图慢的瓶颈是
AecDbX3dPartEntity::dwgInFields 无条件调 m_pPart->Create(),每个 part 都要
N 次建体 + N 次布尔。
A1:引入 m_bDirty
- AecDbX3dPart 增加 m_bDirty,构造/拷贝构造置 true
- 15 个改参数的接口置脏:AddX3dSolid、RemoveAt、RemoveAll3dSolidRec、
SetOrgPoint、SetAxis、SetBoolOperFor、SetHide、SetActive、PeelOffTheSkin、
AddMove×2、ResetMove、AddRotate、ResetRotate、CopyFrom
- 新增 Rebuild()(protected):清标志后无条件重建,原 Create() 的函数体
- 新增 EnsureCreated():m_bDirty 或 m_pSolid 为空时才 Rebuild
Create() 保持「显式调用一律重建」的语义,内部转调 Rebuild()。原因是外部
有 10 处先取 GetX3dSolid(0) 直接改(如 AecDbBDPipeBase:941 调 TransformBy)
再调 Create(),部件感知不到这类改动,做成幂等会漏掉重建。
A2:开图不建几何
- AecDbX3dPartEntity::dwgInFields 去掉 m_pPart->Create(),由
AecDbX3dPart::dwgInFields 结尾置脏
- 读入口统一先 EnsureCreated:CreateDraw3dSolid、Draw3d、getOsnapPoints、
GetForHouseSubtract
收益:关闭/冻结图层、视口外、XREF/审核/发布等不绘制的场景完全省掉建体与
布尔;全图可见时开图时间下降、首次 regen 补回。
|
2026-10-22 15:07:18 +08:00 |
|
gjm
|
b75b779518
|
Merge pull request 'docs: 补开图速度优化方案' (#41) from company-desktop-computer/docs/open-speed-plan into main
Reviewed-on: #41
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-22 14:48:03 +08:00 |
|
gjm
|
6cc08fcca0
|
Merge pull request 'docs: 阶段三取消,记录理由并补开图速度方向' (#40) from company-desktop-computer/docs/x3dsolid-stage3-cancel into main
Reviewed-on: #40
|
2026-10-22 14:47:47 +08:00 |
|
company-desktop
|
f0bf3f8fe2
|
docs: 补开图速度优化方案
第 13 节从「两个候选方向」扩写成可执行方案:
- 13.1 成本模型:dwgInFields:1824 无条件 Create();Create() 每次全量重建,
AddX3dSolid 不置脏,调用方只能靠再调 Create() 保证同步
- 13.2 方案 A(推荐,不改格式),分两步:
A1 加 m_bDirty,Create() 早退,改参数的 15 个接口置脏
A2 dwgInFields 去掉 Create(),5 个读入口统一走 EnsureCreated
附收益边界与四个风险点(副作用延迟、失败重试、const_cast、CopyFrom 冗余)
- 13.3 方案 B 缓存布尔结果:dwg 字段要升版本(不接受)、扩展字典 xrecord
可兼容但体积膨胀,结论是量完 A 再定
- 13.4 方案 C 降低单次重建成本:bbox 剔除、减少 clone、DrawUserInf3d 热点
- 13.5 度量埋点与验收判据
- 13.6 建议顺序:A1 → A2 → 再决定 B/C
|
2026-10-22 14:46:18 +08:00 |
|
company-desktop
|
2c374b92e5
|
docs: 阶段三取消,记录理由并补开图速度方向
决定不做 region 二进制化,两条理由:
1. 主要收益只是图纸体积,而当前图纸大小在可接受范围内
2. 改动会改变存储格式,新图在老插件上读不出 region 几何,要么升版本号
变 proxy,要么额外做降级导出兜底,性价比不足
文档调整:
- 开头原则改为状态说明,明确格式保持现状、新老插件双向可读
- 第 3、4、12 节标注为存档;第 9、10 节同步阶段三取消
- 第 11 节由「暂缓」改为「取消」,11.1 改为取消后的兼容状态,
11.2 保留重启前提与改动范围核对结果
- 新增第 13 节:开图速度方向。瓶颈是 X3dPartEntity::dwgInFields:1824
无条件调用 Create(),成本约 N×(acisIn+clone) + (N−1)×布尔;
列出懒执行与缓存布尔结果两个候选
|
2026-10-22 14:42:00 +08:00 |
|
gjm
|
a792194aa9
|
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>
|
2026-10-22 14:10:52 +08:00 |
|
company-desktop
|
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 |
|
gjm
|
ccf90a5882
|
Merge pull request 'docs: kIntersect/kSliceSolid 是遗留类型,阶段三不迁移' (#38) from company-desktop-computer/docs/x3dsolid-legacy-types into main
Reviewed-on: #38
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-22 13:55:47 +08:00 |
|
company-desktop
|
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 |
|
gjm
|
11bbf6dbf9
|
Merge pull request 'docs: 补阶段三的降级导出方案(新格式 → 老格式)' (#37) from company-desktop-computer/docs/x3dsolid-legacy-export into main
Reviewed-on: #37
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-22 13:37:11 +08:00 |
|
company-desktop
|
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 |
|
gjm
|
186431a11e
|
Merge pull request 'docs: 修正 3.2 类型表,kIntersect/kSliceSolid 是 region + 折线' (#36) from company-desktop-computer/docs/x3dsolid-type-table into main
Reviewed-on: #36
|
2026-10-22 13:21:23 +08:00 |
|
company-desktop
|
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 |
|
gjm
|
266deb16ae
|
Merge pull request 'docs: 阶段三暂缓,补兼容取舍与已核对的技术前提' (#35) from company-desktop-computer/docs/x3dsolid-stage3-deferred into main
Reviewed-on: #35
|
2026-10-22 10:56:28 +08:00 |
|
company-desktop
|
bed6556adf
|
docs: 明确阶段三单向兼容——老版看不到新图 region 几何
兼容方案定为第一项:不升 kCurrentVersionNumber,新版能完整读旧版图纸,
旧版打开新图时 region 类型的 AcDbX3dSolid 几何不可见。
补充说明 m_pSatBuffer 在旧版也会原样读写,所以旧版另存后回新版仍能恢复;
非 region 类型(点串、SubDMesh、管廊脚本)不受影响。
文档开头的原则、4.3.4 的不升版本理由同步。
|
2026-10-22 10:43:45 +08:00 |
|
company-desktop
|
fbb2ca8890
|
docs: 阶段三暂缓,补兼容取舍与已核对的技术前提
- 新增第 11 节:阶段三暂缓的决定、三个兼容选项的后果、重启前必须先定的事
- 修正过时内容:kCurrentVersionNumber 实际是 4;不需要新增
CoreTools::RegionToBuffer,现有 RegionToString(char*&) 已输出 ASCII 字节
- 写入点、读取点表格按当前 main 行号更新,标注以函数名定位
- 4.3 开头注明阶段一、二已合并,阶段三暂缓
|
2026-10-22 10:38:35 +08:00 |
|
gjm
|
8110cad4c0
|
Merge pull request 'fix: 曲线通道重建截面时防崩溃' (#34) from company-desktop-computer/fix/ewpipebase-curve-read-guard into main
Reviewed-on: #34
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-22 10:26:58 +08:00 |
|
company-desktop
|
4fc910d6fd
|
fix: 曲线通道重建截面时防崩溃
RegionFromCurvesDwgInFields 里两处:
- isRegionNull(pRegion) && isRegionNull(pRegionBig) 改为 ||,原写法要求
两个都无效才跳过,实际 pRegionBig 此时必非空,条件恒假,无效 region
照样进布尔运算
- booleanOper 改走已有的 rawBooleanOperWrapper,ACIS 内部异常时由 SEH
捕获,不再直接崩 CAD
顺带 delete pRegion:arRegPtrs 不拥有对象,原来 subtract 完没有释放。
曲线通道只读,spline 参数在写端从未落盘,几何缺失无法靠读端修复,
本次只处理崩溃路径,重建逻辑与启发式保持原样。
|
2026-10-22 10:24:54 +08:00 |
|
gjm
|
beeb6031e0
|
Merge pull request 'refactor: 水池截面中转文件改用 CoreTools::getTempFilePath' (#33) from company-desktop-computer/fix/pool-section-sat-name into main
Reviewed-on: #33
|
2026-10-22 10:09:14 +08:00 |
|
company-desktop
|
4e658a8ae9
|
refactor: 水池截面中转文件改用 CoreTools::getTempFilePath
删除 Pool3dCmd/PoolSectionTemp.h,JMDBDlg、JMSJDlg、HZQTDlg 共 7 处
改为 CoreTools::getTempFilePath(_T("JMSJ_"), _T(".sat"), 目录)。
同时修 getTempFilePath 自身的问题:
- 传了有效父目录时 sParentPath 没有赋值,会拼出 "\JMSJ_xxx.sat"
- 父目录为空时仍对 pszParentPath 调 _taccess,参数可能是 NULL
- return sPath(); 语法错误
- objId 用 %lu 格式化 Adesk::ULongPtr,64 位下会截断,改 %I64u
temp-file-naming.md 同步改为介绍这个通用函数。
|
2026-10-22 10:06:51 +08:00 |
|