Commit Graph

9 Commits

Author SHA1 Message Date
gaozheng 69e8790810 feat(vtk): 多三维体并发切片渲染重构(OPT-002:issue2+③+反向②)
核心:InteractionManager 单 image_ → 按 volumeDsId 的多体 map;各切片附着到各自体的 image。
- issue2 选第二个体→第一个体切片消失:setVolumeImage 不再 closeAll 全部切片;改 upsert 某体(同体重建
  才关该体切片)。syncSlices 改为「勾选 + 父体已渲染」即显示(不再限当前体)→ 多体切片并存
- ③ 右键体却建到 current 体:sliceRequested 带目标体 dsId;addSlice(axis,volumeDsId) 用该体 image;
  保存切片/创建异常的 volumeDsId 改用 selectedSliceVolumeDsId(选中切片所属体)而非 currentVolume
- 反向② VTK→树:InteractionManager.onSliceSelectionChanged(selectByTool/onPicked 触发)→
  CategorySection::selectItem 程序化选中(屏蔽信号防环路)
- VtkSceneView 按 dsId 存 volumes_(image/cs/vmin/vmax);addVolume 登记/removeDataset 移除并回退
  current/clear 清空;volume(dsId) 取指定体→色阶编辑支持非当前体;SliceTool 加 volumeDsId 标签
- nearestSlice 阈值/onWheel 步长/导出上色 改用切片所属体的 bounds/色阶

未解:④ 切片拾取串选(nearestSlice 启发式,VTK9.6 不暴露切片 actor 难精确化;widget 交互选中是精确的)

构建:app 链接通过;434/434 测试通过
2026-06-25 20:36:43 +08:00
gaozheng b2904c211e fix(vtk): 坐标轴面板预热(4a)+装置枚举到达重刷下拉+树→VTK选中联动正向(②)
- 4a 坐标轴面板首开卡顿:启动时 ensurePolished+adjustSize 预热样式/布局,避免首次点开同步解析卡UI
- 装置下拉空:枚举异步加载(可能晚于数据)→在 listArrayTypes 回调里 refreshArrayFilters 重填各段下拉
- ② 树选中切片/异常→VTK高亮:CategorySection 发 datasetSelected→main 对 dd_anomaly setSelectedAnomaly
  /dd_slice selectSavedSlice。反向(VTK→树)需拾取回调,并入 OPT-002

构建:app 链接通过
2026-06-25 19:50:36 +08:00
gaozheng 62b7cde5cd fix(ui): 筛选时间换 QComboBox(与装置同款) + 异常复选框驱动显隐(①)
- #3/#4 DateRangeEdit 重写为 QComboBox 子类(覆写 showPopup 弹双日历):外观与装置下拉完全一致
  (同款原生下拉箭头/高度/边框),消除 QToolButton 方案的 popup「must be top level window」告警
- ① 创建异常后取消勾选仍渲染:异常行复选框现驱动显隐——itemChanged 对 dd_anomaly 发
  anomalyVisibilityChanged→setAnomalyVisible;异常默认勾选=显示(新项默认勾,曾取消的保留);
  refreshAnomalies 按三维体段复选框设各异常可见性;异常创建回调改为先 refreshAnalysis 再 refreshAnomalies

构建:app 链接通过
2026-06-25 19:42:37 +08:00
gaozheng 652b37b672 fix(vtk): 修创建切片/异常清空体·切片选择(issue1)+异常副标题补时间+新切片自动勾选
- issue1 真因:voxel(三维体)段数据来自 mock voxelTree,但 setBuckets 用 splitByCategory 的空桶
  (对象树 ds 里无 dd_voxel→必空)先 setDatasets(空) 清掉其勾选,随后 section("voxel")->setDatasets
  (voxelTree) 重填时勾选已丢→「创建切片/异常后体/切片选择被清空」。修:setBuckets 跳过 voxel 段
- 异常副标题没时间:saveAnomaly 没设 createTime(main 构建 Anomaly 也没设)→补当前时间(mock)
- 新切片自动勾选:CategorySection::setChecked(dsId) + 保存切片回调在 refreshAnalysis 后勾选新切片
  (恢复旧行为,避免刚存的切片因未勾被 syncSlices 隐藏)

未解(下轮):issue2 选第二个体时第一个体切片消失=单"当前体"模型固有限制(syncSlices 只显示
volumeDsId==currentVolumeDsId 的切片),需多体并发切片渲染改造

构建:app 链接通过
2026-06-25 19:21:55 +08:00
gaozheng 778ffe88c0 feat(ui): 三维体段右键全接旧栏操作-体(生成切片/色阶) 切片(保存/另存/导出图片dat/色阶/删除) 异常(显隐/删除) 2026-06-25 12:33:22 +08:00
gaozheng 888a63081b feat(ui): 三维体段从项目根完整层级树(容器节点+体挂归属)+段体右键菜单(详情/删除切片异常)(界面修复 4/5) 2026-06-25 11:50:17 +08:00
gaozheng c2f2b1f94c feat(ui): 日期范围筛选控件(双日历面板/可清空/默认今天)替代单 QDateEdit(界面修复 1/2/3) 2026-06-25 11:41:23 +08:00
gaozheng beb398d478 fix(ui): 生成按钮移标题行+采集时间改时间段(不限)+切片不单列段(挂三维体树)(界面修复 3/4/5) 2026-06-25 09:34:19 +08:00
gaozheng 30e990d967 feat(ui): CategorySection 类型段组件(段头装置/日期筛选+段体可勾选树+生成入口) + DatasetFieldDictionary 缓存类 2026-06-24 19:10:03 +08:00