51 lines
1.9 KiB
Markdown
51 lines
1.9 KiB
Markdown
# 实现方案:右侧实体切面预览
|
||
|
||
时间戳:2026-05-08-03-35-22
|
||
|
||
## 修改目标
|
||
|
||
在 `Mask 展示` 区域新增真实 STL 切割实体预览组件,替代旧的二维示意 Mask,并删除底部导出进度栏。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 技术路线
|
||
|
||
1. 新增 `CutSectionPreview` 组件。
|
||
2. 组件使用 Three.js 渲染 STL preview 顶点数据。
|
||
3. 使用 DICOM `physicalSize.depth` 和 `total` 将 `displayStart/displayEnd` 映射到 Z 方向两张 clipping plane。
|
||
4. 当“模型切分”启用时,对 STL 材质应用两张 clipping plane,保留中间实体区域;未启用时展示完整实体模型。
|
||
5. 复用构件颜色、显示隐藏、模型位姿和高质量实体请求上限。
|
||
6. 删除旧 `mappings` 假 Mask 形状、`MaskMapping` 类型引用、`exportMessage` 和底部导出进度栏。
|
||
|
||
## 数据流或交互流程
|
||
|
||
- DICOM 范围条更新 `displayStart/displayEnd`。
|
||
- `FusionThreeView` 和 `CutSectionPreview` 都接收相同范围。
|
||
- `CutSectionPreview` 请求 STL preview,居中、缩放并应用当前模型位姿。
|
||
- 启用模型切分后,右侧实体预览显示裁切后的 STL 中间段。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 若实体预览性能不满足要求,可降低 `detailLimit` 或回滚到旧 Mask 展示区域。
|
||
- 本次不改 API 和数据文件,回滚只涉及前端组件。
|
||
|
||
## 风险控制
|
||
|
||
- 使用 `npm run lint` 验证类型。
|
||
- 使用 `npm run build` 验证构建。
|
||
- 使用 `rg` 确认旧 `导出进度`、`mappings`、假 Mask 结构已移除。
|
||
- 重启服务并验证 4000 端口。
|
||
|
||
## 预计文件变更
|
||
|
||
- 修改 `ReverseWorkspace.tsx`。
|
||
- 新增本次需求、实现、测试文档。
|
||
- 追加经验记录。
|
||
|
||
## 人工审核状态
|
||
|
||
用户已在项目工作流历史中确认后续直接执行,本次不等待二次人工审核。
|