6.0 KiB
6.0 KiB
测量功能 clearAllMeasures 封装
Context
Original Request
封装测量功能的 clearAllMeasures() 方法,并对接到 UI 的"删除全部"按钮。
Interview Summary
Key Discussions:
- 封装原则:所有底层引擎调用(
this.engine.*)必须封装在 Engine 组件中 - Manager 层只调用 Engine 组件的公共方法,禁止直接使用
getEngine() - 当前 MeasurePanel 的
clearAll()方法已调用onClearAll回调 - 当前 MeasureDialogManager 的
onClearAll回调只有 console.log,未调用引擎方法
Research Findings:
- 第三方引擎 API:
measure.clearAll()- 清除所有测量标注 - 现有代码已有类似封装模式(如
activateMeasure、deactivateMeasure) - MeasurePanel 组件调用
onClearAll回调后已清空 UI 结果显示
Work Objectives
Core Objective
在 Engine 组件中封装 clearAllMeasures() 方法,并在 MeasureDialogManager 的 onClearAll 回调中调用该方法,实现 UI "删除全部"按钮的完整功能对接。
Concrete Deliverables
- Engine 组件新增
clearAllMeasures()公共方法 - MeasureDialogManager 的
onClearAll回调调用引擎方法
Definition of Done
- 点击测量面板的"删除全部"按钮,控制台输出
清除所有测量标注(代码已实现) - 3D 场景中的测量标注被清除(代码已实现,需用户手动验证)
Must Have
- 方法命名为
clearAllMeasures(),与现有命名风格一致 - 添加引擎初始化检查(与现有方法一致)
- 添加 console.log 输出用于调试
- 中文注释说明方法功能
Must NOT Have (Guardrails)
- 不封装
clearMeasurePoints()方法(本次范围外) - 不对接测量结果回调(本次范围外)
- 不修改 MeasurePanel 组件(已完成 UI 逻辑)
- Manager 层不直接调用
getEngine()
Verification Strategy (MANDATORY)
Test Decision
- Infrastructure exists: NO
- User wants tests: NO (简单封装,手动验证)
- Framework: none
- QA approach: Manual verification
Task Flow
Task 1 (Engine 封装) → Task 2 (Manager 对接)
Parallelization
| Task | Depends On | Reason |
|---|---|---|
| 2 | 1 | Manager 需要调用 Engine 的新方法 |
TODOs
-
1. Engine 组件添加 clearAllMeasures 方法
What to do:
- 在
src/components/engine/index.ts的测量功能方法区域(第 388 行之前,getCurrentMeasureType()方法之后)添加clearAllMeasures()公共方法 - 方法内部调用
this.engine.measure.clearAll() - 添加引擎初始化检查(与
deactivateMeasure()方法一致) - 添加 console.log 输出:
清除所有测量标注 - 添加中文 JSDoc 注释
Must NOT do:
- 不封装
clearMeasurePoints()方法 - 不修改现有方法
Parallelizable: NO (Task 2 依赖此任务)
References:
Pattern References (existing code to follow):
src/components/engine/index.ts:366-378-deactivateMeasure()方法:参考其引擎初始化检查和 console.log 输出模式
API/Type References:
docs/ENGINNE_3D/API文档.md:946-952- 第三方引擎measure.clearAll()API 说明
Acceptance Criteria:
Manual Execution Verification:
- 检查
src/components/engine/index.ts文件 - 确认新增
clearAllMeasures()方法 - 确认方法位于
getCurrentMeasureType()方法之后、// ==================== 结束:测量功能方法 ====================注释之前 - 确认方法包含引擎初始化检查
- 确认方法调用
this.engine.measure.clearAll()
Commit: YES
- Message:
feat(engine): add clearAllMeasures method for measure cleanup - Files:
src/components/engine/index.ts
- 在
-
2. MeasureDialogManager onClearAll 回调调用引擎方法
What to do:
- 在
src/managers/measure-dialog-manager.ts的onClearAll回调中(第 46-48 行) - 在 console.log 之后添加
this.registry.engine3d?.clearAllMeasures();
Must NOT do:
- 不使用
getEngine()直接调用底层引擎 - 不修改 MeasurePanel 组件
Parallelizable: NO (依赖 Task 1)
References:
Pattern References (existing code to follow):
src/managers/measure-dialog-manager.ts:42-45-onModeChange回调:参考其调用registry.engine3d?.activateMeasure(mode)的模式src/managers/measure-dialog-manager.ts:77-80-onBeforeDestroy方法:参考其调用registry.engine3d.deactivateMeasure()的模式
Acceptance Criteria:
Manual Execution Verification:
- 检查
src/managers/measure-dialog-manager.ts文件 - 确认
onClearAll回调中添加了this.registry.engine3d?.clearAllMeasures(); - 运行
npm run build- 构建成功 - 运行
npm run dev:demo(需要用户手动测试) - 打开测量面板,进行测量操作
- 点击"删除全部"按钮
- 控制台输出包含
清除所有测量标注 - 3D 场景中的测量标注被清除
Commit: YES
- Message:
feat(measure): connect clearAll button to engine clearAllMeasures method - Files:
src/managers/measure-dialog-manager.ts
- 在
Commit Strategy
| After Task | Message | Files | Verification |
|---|---|---|---|
| 1 | feat(engine): add clearAllMeasures method for measure cleanup |
src/components/engine/index.ts |
代码审查 |
| 2 | feat(measure): connect clearAll button to engine clearAllMeasures method |
src/managers/measure-dialog-manager.ts |
npm run dev:demo + 手动测试 |
Success Criteria
Verification Commands
npm run dev:demo # 启动 HTML Demo
# 手动测试:打开测量面板 → 进行测量 → 点击"删除全部" → 验证标注清除
Final Checklist
- Engine 组件有
clearAllMeasures()公共方法 - MeasureDialogManager 的
onClearAll回调调用引擎方法 - 点击"删除全部"按钮后,3D 场景中的测量标注被清除(代码已实现)
- 控制台无报错(构建成功)