company-desktop-computer
|
8630e2a499
|
fix: 未入库管道实体存截面时临时文件名不再撞车
objectId() 为 kNull 时(剪贴板复制、临时序列化等),handle 取不到,
原来拼出来的文件名固定是 Region_<pid>_.dat,同一次存盘里所有截面共用
一个临时文件。
改为:句柄有效时仍用句柄,否则用进程内递增序号 N1/N2/... 作为后缀。
日志里的标识同步从 handle 改成 tag。
|
2026-10-21 23:22:21 +08:00 |
|
company-desktop-computer
|
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-computer
|
f80ec56189
|
fix: AcDbX3dSolid 正确性小修(失败留痕/缓存失效/GSMarker/死代码)
- StringToRegion 两个重载在 fixACISFormat 拒绝时打印长度与 SAT 首行,
原来完全静默,现场只表现为构件消失,无法定位
- ReCreate 统一失效绘制缓存:清 m_pSolidDraw、m_arRegionFaces、
m_pSubDMeshDraw。原来只有 AddMove/ResetMove/AddRotate/ResetRotate 清,
TransformBy/SetSolidData/SetOrgPoint 调完 ReCreate 后 Draw3d 仍画旧几何
- GSMarker 改用独立成员 m_nGSMarker,不再借用 m_sszPoint2ds。
后者在 kExtrude/kLoft/kSweep 里存断面/路径串,SetGSMarkerID 会覆盖成数字,
导致 ReCreate 静默失败、几何丢失
- 删除 GetDrawSubDMesh 中 return 之后的 28 行不可达代码
- GetDraw2d / ByJson 补注释说明现状
|
2026-10-21 15:31:27 +08:00 |
|
gjm
|
10d1fc00c8
|
Merge pull request 'fix: fixACISFormat 改为显式长度入参,修正 npos 与越界读' (#26) from company-desktop-computer/fix/acis-format-bounds into main
Reviewed-on: #26
Reviewed-by: gjm <littleoldpan@163.com>
|
2026-10-21 14:20:24 +08:00 |
|
company-desktop-computer
|
6e494aeb9e
|
fix: fixACISFormat 改为显式长度入参,修正 npos 与越界读
- 签名加 size_t nLen,内部用 std::string(pszReg, nLen) 构造,
不再依赖调用方 buffer 的结尾 '\0';StringToRegion(nLen, char*)
传入的 m_pSatBuffer 是 new byte[m_nSatLen],没有终止符,原写法会越界读
- 首行解析改用 substr(0, find('\n')),去掉 stringstream 对终止符的依赖
- pos == npos(数据里没有 '#')时返回 false,原写法 pos+1 溢出为 0,
substr(0,0) 得到空串却仍返回 true,调用方会写出 0 字节文件且无提示
- countOfRecord <= 0 时提前返回 false
|
2026-10-21 14:15:11 +08:00 |
|
company-desktop-computer
|
81215c8fe1
|
perf: AcDbX3dSolid 几何改为懒重建
- 新增 m_bNeedCreate 标志与 EnsureCreated():dwgInFields 与拷贝构造
不再立即 ReCreate,延迟到首次访问几何时重建
- 开图时不再对每个单元逐个走 SAT 临时文件(acisOut/acisIn),
显著降低开图耗时;Clone 也省掉一次重建
- 所有读取 m_pSolid/m_pSubDMesh 的入口统一走 EnsureCreated:
GetNative3dSolid / GetDraw3dSolid / GetNativeSubDMesh /
GetDrawSubDMesh / GetDrawSubDMesh2D / GetCentoridPoint
- GetDrawSubDMesh 补 m_pSubDMesh 空指针保护
- TransformBy 保持原有行为(参数变更后必须重建)
|
2026-10-21 10:01:17 +08:00 |
|
company-desktop-computer
|
3ba658ffc5
|
refactor: MakeTempSatPath 并入已有的 SAT 相关 namespace
- 不再为单个函数新建 namespace 块:把 SAT 相关的
find_nth_occurrence_reverse / fixACISFormat 整块上移到 RegionToString 之前,
MakeTempSatPath 并入同一块,文件内 namespace 块数由 7 回到 6
- 编码规范补充:优先复用已有 namespace,整个文件没有时才新建
|
2026-10-21 09:24:21 +08:00 |
|
company-desktop-computer
|
27cd7111fb
|
chore: 补充编码规范——文件内私有函数用匿名 namespace
- CODEBUDDY.md 新增「编码规范」章节:只在一个 cpp 内使用的函数
放在该文件的匿名 namespace{} 中,不用文件级 static
- CoreTools.cpp 的 MakeTempSatPath 按新规范改为匿名 namespace
|
2026-10-21 09:18:09 +08:00 |
|
company-desktop-computer
|
1c8068c8cf
|
fix: 临时 SAT 文件名唯一化并修正越界读
- RegionToString/StringToRegion/BodyToString/StringToFace 的临时文件名
由固定的 Region1/Region2/Region121/Region212/Region312.sat
改为 x3d_<PID>_<序号>.sat,多 CAD 实例或多线程并发时不再互相覆盖
- 读取缓冲区补 +1 零字节,修复 new char[len] 无结尾 0 导致的越界读
- 检查 file.Read 短读,失败时释放缓冲并返回空
- 用完即 DeleteFile,不残留临时文件
|
2026-10-21 09:06:36 +08:00 |
|
company-desktop-computer
|
581394622a
|
fix #2 bug
补充了对AecDbGuardBar,AecDbArcStair,AecDbLineStair 3种类型的判断.
|
2026-10-20 10:06:34 +08:00 |
|
company-desktop-computer
|
6b1add6c57
|
Update AecDbCamera.cpp
删除AecDbCamera.cpp内的hlr相关的注释
|
2026-10-20 09:29:26 +08:00 |
|
gjm
|
006b251370
|
Merge pull request '修复AecDbEwFitting剖切问题' (#17) from company-desktop-computer/feature/company-ai-dev into main
Reviewed-on: #17
|
2026-10-19 10:35:04 +08:00 |
|
company-desktop-computer
|
2f8b639cea
|
修复AecDbEwFitting剖切问题
修复AecDbEwFitting剖切后三维重绘不显示法兰问题
|
2026-10-19 10:34:27 +08:00 |
|
gjm
|
5650ea28b8
|
Merge pull request '重构pcfiso' (#16) from company-desktop-computer/feature/company-ai-dev into main
Reviewed-on: #16
|
2026-10-19 09:27:00 +08:00 |
|
company-desktop-computer
|
59dcfe9e25
|
重构pcfiso
|
2026-10-19 09:26:09 +08:00 |
|
gjm
|
c84bc78869
|
重构底层
重构AecDbEntityBase,AecDbCurveBase
|
2026-10-19 09:19:05 +08:00 |
|
gjm
|
bbb899c0a0
|
fix: HLR 退化圆弧按来源实体直径判断,并支持爬梯
在删除圆心角为 PI 的退化圆弧时,增加直径比较:
- 弯头(eElbow / eReduceElbow):带法兰(连接类型 3/5)取法兰外径 m_dInterfaceD,
否则取画法直径 m_dD;
- 爬梯(AecDbClimbStair):取踏管直径 ClimbStair::dd。
仅当圆弧直径大于来源实体直径时才删除。
getElbowDiameter 改为 getSourceDiameter,removeFittingDegenerateArcs
改为 removeDegenerateArcs(已不止管件)。
|
2026-10-16 23:20:57 +08:00 |
|
gjm
|
c0c04952dc
|
fix: HLR 结果中删除 AecDbEwFitting 产生的退化圆弧
原 isDegenerateArc 以 弧长/半径 比值判断退化圆弧,且无法区分结果来源。
改为按来源实体类型判断:
- result1 的键是数据库实体 id,直接判断该 id 是否为 AecDbEwFitting;
- result2 的键是无 id 的补充实体指针,先经 mpAdditional
(数据库实体id -> 其产生的补充实体) 反查归属的数据库实体 id,再判断。
删除规则:结果实体是 AcDbArc 且圆心角为 PI 时删除。
|
2026-10-16 21:34:08 +08:00 |
|
company-desktop-computer
|
a1c7d39dc6
|
fix(HLR): 清理剖切结果中的退化圆弧,避免圆心角溢出生成反向大圆弧
AecDbXCamera::hlrCalc 在 HLR 计算后新增 isDegenerateArc 判定:结果为 AcDbArc 且 弧长/半径 < 1e-6 时视为退化圆弧(圆心角极小),从 result1/result2 中删除,防止数值溢出把"很小一段"翻转成"反向的大圆弧"。
|
2026-10-16 13:11:21 +08:00 |
|
company-desktop-computer
|
1db5368592
|
chore: 忽略 *.aps,并修正 JSTZDlg 矩阵列显示
- .gitignore 增加 *.aps(EarthWorm.aps 等 VS 资源编译产物)。
- JSTZDlg::ShowToCompareList 的矩阵分支改用 AecDbObjXDataMap::MatrixToString(),
不再直接把 pszVal 当字符串打印(矩阵现以二进制块保存)。
|
2026-10-13 15:32:29 +08:00 |
|
company-desktop-computer
|
199abb989c
|
重构: AecDbObjXDataMap 解耦 UI,并统一 SetAt/数组实现
- AecXData 的 ctor/Free/CopyFrom 由头部 inline 移入 .cpp,结构体加
AECDLLIMPEXP 导出,修复其它模块构造 AecXData 时的 LNK2019。
- 抽出私有 SetXData(pszKey, xdata) 助手,替换各 SetAt 中重复的
find/Free+覆盖/insert 逻辑,并接管 xdata 所有权。
- 数组二进制块统一为 [kArrayMagic][元素类型][元素个数][数据...],元素类型
复用 AecXData::EType;新增元素类型无需再加魔数或类型标签。
- 矩阵/数组魔数集中到 .cpp 顶部常量,便于维护。
- List(CListCtrl*, int) 改为 List(std::vector<CString>&):去掉 MFC 控件与
nImage 依赖,每个元素输出 key/value 两项;CCKSXDlg::ListXDataMap 相应改为
构造 vector 后填充两列列表。
|
2026-10-13 15:28:19 +08:00 |
|
company-desktop-computer
|
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 |
|
company-desktop-computer
|
9d9077a03e
|
fix(FlangeDlg): 修正 GetEndF1/GetEndF2 端面取值下标
- CFlangeDlg::GetEndF1/GetEndF2 原先取 m_arFlangeVals 下标 0/1(公称直径/法兰外径),
端面型式实际在下标 5/6,导致 PIPE_FLANGF 被写成 DN 字符串
- 改为下标 5/6,且为空时回退 "FF"
|
2026-10-09 14:09:23 +08:00 |
|
gjm
|
d107cfd47f
|
法兰双击改用法兰对话框:AecDbEwFitting 法兰双击弹出 CFlangeDlg 并回写法兰/垫片数据
- DBL_AEC_DBEWFIT:GetFittingType()==eFlange 时改用 CFlangeDlg(其余管件仍用 CGJSXDlg)
- 对话框初值取自实体专业数据(DN/压力/等级/项目/外径系列)
- 确定后回写 PIPE_WD/PIPE_WTHICK/PIPE_THICK/PIPE_N/PIPE_FLANGF 及垫片数据并重绘
- 沿用接口位移后收缩相邻管段逻辑
|
2026-10-09 10:31:04 +08:00 |
|
gjm
|
cb38f5071b
|
新增 PCF→ISO 图(DWG)模块 PcfIso:P3D 一致的分图分层与图面样式
- 新增 PcfIso.h/.cpp:PCF 解析、等轴测投影(朝向与 Plant 3D 一致)、
A3 图框/标题栏/材料表/切割表/尺寸/标高/焊口气泡/北针/跨图续接。
- 分图 4 级:模型连通性 → 断点(法兰/现场焊口) → 管段尺寸 → 图幅/拥塞。
- 新增命令 EW_PCFISO(单图)、EW_PCFISOSPLIT(分图,运行时选层级 1/2/3/4)。
- 注册到 EarthWorm.cpp、StdArx.h,并接入 cmakelists.txt。
- 附《PCF-ISO分图规则说明.md》。
|
2026-10-08 08:29:49 +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
|
2b0c2055ff
|
新增管道ISO图PCF导出(EW_PCF/EW_PCFSPLIT),完善ITEM-CODE与WELD
CoreCommand 新增管道 ISO 图 PCF 导出功能:
- EW_PCF:整个管道系统导出为单个 PCF 文件。
- EW_PCFSPLIT:按管道系统/连通子网拆分为多张 PCF。
内容完善:
- 组件齐全:直管、管件(弯头/三通/变径/管帽等)、法兰、阀门、设备、支吊架。
- ITEM-CODE:按 等级+管径(+类型/类别) 查规格库,写出 ITEM-CODE/ITEM-DESCRIPTION/PIPING-SPEC;
弯头按实测夹角区分 90°/45°,阀门按 VLVTYPE 映射类别过滤。
- WELD:两侧接口连接类型均为焊接(0) 时生成焊口;法兰螺栓面不计焊口。
构建:cmakelists.txt 加入 pcf.cpp;StdArx.h 声明 EW_PCF/EW_PCFSPLIT 命令。
|
2026-10-03 22:20:08 +08:00 |
|
gjm
|
8ac3fe9197
|
移除旧的 Visual Studio 工程文件,统一使用 CMake 构建
删除 527 个 *.vcxproj、1 个 *.vcxproj.filters、2 个旧版 *.vcproj
以及 8 个 shs_image*.sln 解决方案文件(保留 StartApp C# 工程)。
|
2026-09-28 15:53:36 +08:00 |
|
gjm
|
44197f41af
|
增加了post build 功能 需要的文件
|
2026-09-28 15:42:32 +08:00 |
|
gjm
|
c7102cfe25
|
增加依赖
|
2026-09-28 15:38:57 +08:00 |
|
gjm
|
345044cb46
|
初始化提交
|
2026-09-28 15:28:50 +08:00 |
|