company-desktop
0cb05b769f
perf: 缓存管线系统样式查询,管线/管件加载不再反复开库
AecDbEwPipe / AecDbEwFitting 的 dwgInFields 会给缺失的样式键回填
颜色/线型/线宽/图层(PR #87 引入),走 CoreTools 的 4 个 getter;
每个 getter 都新建 CUIISQLiteServer 开一次 Plumbing.db,内部又调
getCurrentPipeSysTblName 再开一次。单实体最多 16 次 sqlite3_open,
几百个实体的图纸即几千次串行开库;绘制路径(setInfo2Ent /
setInfo2Dc)同样走这 4 个 getter。
改为:一条 SQL 取全 COLOR/LINETYPE/LINEWIDTH/LAYNAME,结果按
「表名 + 系统名 + 中心线/外边线」做进程级缓存;表名本身按
getCurrentTrade() 缓存。首次 2 次开库,之后全部内存命中。
- 只改 CoreCommand/CoreTools.cpp,对外签名不变,192 处调用点全覆盖
(CoreLibrary / PipelineCmd / PipelineSpecCmd / HvacCmd)
- 缓存只存字符串,AcDbObjectId 仍按当前图纸每次现解析,多文档切换
不串图层/线型
- 保持原语义:库打不开时 getColorByPipeSys 返回 256、getLtByPipeSys
与 getLyByPipeSys 返回空 id、getLwByPipeSys 返回 0
- 缓存生命周期等于进程,改系统样式配置需重启生效;静态对象用故意
不释放的指针持有,避免 DLL 卸载期析构顺序问题
- getPipeColorBySystem 未动:它的 SQL 不带 PIPESYS 过滤,语义与这 4
个 getter 不同,且唯一调用点已被注释
编译验证:R190 Debug 下 AecRxBase / CoreCommand_BAL_REMOTE /
CoreLibrary_BAL_REMOTE / CoreImplement 全部通过。
2026-10-28 10:09:24 +08:00
..
2026-10-04 00:04:20 +08:00
2026-10-25 19:16:43 +08:00
2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
2026-10-28 10:09:24 +08:00
2026-09-28 15:53:36 +08:00
2026-10-27 22:29:12 +08:00
2026-10-04 00:04:20 +08:00
2026-10-21 23:39:47 +08:00
2026-10-04 00:04:20 +08:00
2026-10-23 10:29:31 +08:00
2026-10-13 09:55:42 +08:00
2026-10-26 22:36:28 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-10-13 09:55:42 +08:00
2026-10-04 00:04:20 +08:00
2026-10-25 11:05:18 +08:00
2026-10-13 09:55:42 +08:00
2026-10-23 10:29:31 +08:00
2026-10-23 10:29:31 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
2026-10-04 00:04:20 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:42:32 +08:00
2026-09-28 15:28:50 +08:00
2026-09-28 15:42:32 +08:00