Commit Graph
6 Commits
Author SHA1 Message Date
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
company-desktop 8630e2a499 fix: 未入库管道实体存截面时临时文件名不再撞车
objectId() 为 kNull 时(剪贴板复制、临时序列化等),handle 取不到,
原来拼出来的文件名固定是 Region_<pid>_.dat,同一次存盘里所有截面共用
一个临时文件。

改为:句柄有效时仍用句柄,否则用进程内递增序号 N1/N2/... 作为后缀。
日志里的标识同步从 handle 改成 tag。
2026-10-21 23:22:21 +08:00
company-desktop 8941246b16 refactor: 管道截面统一存 SAT,曲线写路径退役
SectionRegionDwgOutFields 不再 explode 后按曲线写,改为固定写 nLen=0 +
RegionAcisoutDwgOutFields。读取端 nLen==0 本来就识别 SAT 通道,因此
kCurrentVersionNumber 保持 7,新图在老插件上仍可还原。

同时修 SAT 通道自身缺陷:
- RegionAcisoutDwgOutFields:临时文件名加进程号;new char[nLen] 补 +1 并
  清零;检查短读,短读或空文件退回原生写法,不再把未初始化内存写进 DWG;
  acisOut/Open 失败分支补 DeleteFile;两个重复的 errorfile 分支合并为
  WriteRegionNativeFallback,顺带修掉 7 字节泄漏
- RegionAcisInDwgInFields:临时文件名只取纯文件名,拒绝 DWG 里夹带的路径
  成分和盘符;errorfile 分支补 delete[];create/dwgInFields/acisIn 失败
  分支加日志并正确释放;acisIn 返回的非 region 实体不再泄漏
- 删除 RegionExplodeDwgOutFields(写路径退役后无调用者)
2026-10-21 22:15:49 +08:00
company-desktop 0467086e65 重构: AecXData 类型标签改用枚举 AecXData::EType
- 在 AecXData 内新增 enum EType,取值直接采用 wtypes.h 的 VARENUM(VT_*),
  与原实现逐位一致(nVt 会序列化进 DWG/DXF/XData,数值必须保持不变)。
- 各模块共 303 处 nVt 判断由裸 VT_* 改为 AecXData::kTypeXxx,涉及 18 个文件;
  仅调试打印用的字符串字面量保持原样。
- AecDbObjXDataMap.h 增加 #include <wtypes.h>(EType 引用 VT_*)。
2026-10-13 09:55:42 +08:00
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00
gjm 345044cb46 初始化提交 2026-09-28 15:28:50 +08:00