Files

213 lines
5.3 KiB
Markdown
Raw Permalink Normal View History

# Task 4: 最终验证指令
## 前置条件检查
在开始验证前,确保:
1. Demo 已启动:`npm run dev:demo`
2. 浏览器打开 localhost通常是 http://localhost:5173
3. 3D 引擎已初始化:控制台检查 `window.bimEngine?.engine` 不为 null
4. 模型已加载3D 场景中可见 BIM 模型
## 验证步骤16 项验收标准)
### 场景 1: 打开弹窗时4 项)
**操作**:点击工具栏的"轴向剖切"按钮
**预期结果**
- [ ] 弹窗正常显示在容器右下角
- [ ] 控制台输出:
```
[Engine] Activating section axis: x
```
- [ ] **视觉确认**:模型被 X 轴平面剖切(可见内部结构)
- X 轴是前后方向,模型应该被一个垂直平面切开
- 能看到模型内部的墙、梁、柱等结构
- [ ] UI 状态X 按钮显示为激活状态(高亮或不同颜色)
**如果失败**
- 如果控制台输出 `[SectionAxisDialogManager] Engine not initialized`,说明未调用 `initEngine()`
- 如果没有剖切效果,检查模型是否加载完成
---
### 场景 2: 切换到 Y 轴3 项)
**操作**:点击 Y 按钮
**预期结果**
- [ ] 控制台输出(按顺序):
```
[SectionAxisDialogManager] 切换轴向: y
[Engine] Deactivating section axis: x
[Engine] Activating section axis: y
```
- [ ] **视觉确认**:模型截面从 X 轴方向变为 Y 轴方向
- Y 轴是上下方向,模型应该被水平平面切开
- 可以看到楼层的横截面
- [ ] UI 状态Y 按钮激活X 按钮恢复普通状态
**控制台验证**
```javascript
window.bimEngine?.engine.getCurrentSectionAxis() // 应返回 'y'
```
---
### 场景 3: 切换到 Z 轴3 项)
**操作**:点击 Z 按钮
**预期结果**
- [ ] 控制台输出(按顺序):
```
[SectionAxisDialogManager] 切换轴向: z
[Engine] Deactivating section axis: y
[Engine] Activating section axis: z
```
- [ ] **视觉确认**:模型截面变为 Z 轴方向
- Z 轴是左右方向,模型应该被侧面垂直平面切开
- [ ] UI 状态Z 按钮激活Y 按钮恢复普通状态
**控制台验证**
```javascript
window.bimEngine?.engine.getCurrentSectionAxis() // 应返回 'z'
```
---
### 场景 4: 幂等性测试1 项)
**操作**:当前 Z 轴激活,再次点击 Z 按钮
**预期结果**
- [ ] 控制台输出:
```
[SectionAxisDialogManager] 切换轴向: z
[Engine] Section axis z already active, skipping.
```
- [ ] **无额外 API 调用**(没有 "Deactivating" 或 "Activating" 日志)
- [ ] 视觉效果不变
---
### 场景 5: 隐藏按钮1 项)
**操作**:点击"隐藏"按钮(眼睛图标)
**预期结果**
- [ ] 控制台输出:
```
[SectionAxisDialogManager] 隐藏切换(暂不支持): true/false
```
- [ ] **无报错**:不应该有 JavaScript 错误
- [ ] 视觉效果不变(因为功能未实现)
---
### 场景 6: 反向按钮1 项)
**操作**:点击"反向"按钮(双向箭头图标)
**预期结果**
- [ ] 控制台输出:
```
[SectionAxisDialogManager] 反向剖切(暂不支持)
```
- [ ] **无报错**:不应该有 JavaScript 错误
- [ ] 视觉效果不变(因为功能未实现)
---
### 场景 7: 关闭弹窗2 项)
**操作**点击弹窗关闭按钮X
**预期结果**
- [ ] 控制台输出:
```
[Engine] Deactivating all section axis
```
- [ ] **视觉确认**:模型恢复完整显示(不再被剖切)
- [ ] 工具栏按钮恢复普通状态(不再激活)
**控制台验证**
```javascript
window.bimEngine?.engine.getCurrentSectionAxis() // 应返回 null
```
---
### 场景 8: 边界情况 - 快速切换1 项)
**操作**:重新打开弹窗,快速连续点击 X → Y → Z → X
**预期结果**
- [ ] 每次切换都有正确的控制台日志输出
- [ ] 最终状态X 轴激活
- [ ] 视觉效果:模型被 X 轴平面剖切
- [ ] 无 JavaScript 错误
**控制台验证**
```javascript
window.bimEngine?.engine.getCurrentSectionAxis() // 应返回 'x'
```
---
### 场景 9: 边界情况 - 重新打开弹窗(额外验证)
**操作**:关闭弹窗后再次打开
**预期结果**
- [ ] 默认激活 X 轴(而不是上次的轴向)
- [ ] 控制台输出:`[Engine] Activating section axis: x`
---
## 验证工具
### 手动 API 测试(可选)
在控制台运行以下命令测试 API
```javascript
// 检查引擎实例
const engine = window.bimEngine?.engine;
console.log('Engine instance:', engine);
// 测试激活方法
engine.activateSectionAxis('x'); // 应激活 X 轴
engine.activateSectionAxis('x'); // 应输出 "already active"
// 测试切换
engine.activateSectionAxis('y'); // 应先停用 X再激活 Y
// 测试停用
engine.deactivateSectionAxis(); // 应停用所有剖切
// 检查状态
console.log('Current axis:', engine.getCurrentSectionAxis()); // null
```
---
## 成功标准
**所有 16 项验收标准通过**
**控制台无 JavaScript 错误**
**日志输出顺序正确**
**视觉效果符合预期**
---
## 如果发现问题
记录以下信息:
1. **场景编号**和**操作步骤**
2. **实际结果**(控制台输出、视觉效果)
3. **错误信息**(如果有)
4. **浏览器和版本**
将问题记录到 `.sisyphus/notepads/section-axis-integration/issues.md`