# 项目开发思路

## **1\. 使用场景**
1. 在Navisworks中打开物流相关的楼层nwd文件（前提：将建筑按单独的楼层保存）
2. 在物流控件中新建任务，任务包含一个物流场景的所有信息，支持保存和打开
2. 选择物流运动模型（在物流模型文件列表中选择，可以是物体、人员等，也可以选择自定义模型，指定长宽高），设置速度限制、安全距离等信息。
3. 可以对运动模型经过的物流组件，指定物流类型（门、通道、电梯等），可以设置限高、限宽、限速等参数。
4. 用物流导航控件，指定物流起点和终点，点自动吸附在通道表面，用颜色球表示。（移动过程可以使用Navisworks的漫游/飞行工具）
5. 在物流导航控件中选择【生成路径】，自动生成从起点到终点的物流路径，包含一系列路径点和之间的连线，用颜色球和圆柱线表示。用标签显示路径的名称、长度、路径点数量等。
6. 在物流导航控件中选择【仿真动画】，设置动画时长、速度、检测距离间隔、碰撞检测间隙后，点击运行，物流运动模型开始从起点沿着指定路径运动，如果发生碰撞，高亮显示物流模型和冲突模型，用标签显示速度、位置、碰撞数量等。
7. 仿真动画结束，提交结果页面，显示各初始参数和统计信息。可以导出路径文件、导航地图和碰撞报告。
8. 对生成的路径，可以进行手工编辑，修改各点位置和限制参数。
9. 可以对修改后的路径，重新运行仿真动画。

## **2\. 设计思路**

### **2.1\. UI**
1. 用浮动控件做物流导航控件
2. 用停靠窗口做物流控件

### **2.2\. 自动路径生成**
1. 用Field D*算法进行路径规划

### **2.3\. 仿真动画**
1. 用变换实现物流物体的移动，同时进行碰撞检测
2. 动画按固定帧率（如30帧）进行，碰撞检测按检测距离间隔进行
3. 【可选】碰撞检测结果同步到ClashDetective

### **2.4\. 导航地图**
1. 导航地图可以用俯视图加路径生成图片
2. 导航视频可以用视点动画生成

### **2.5\. 分层保存**
1. 可以按楼层搜索，保存选择项
2. 按物流属性搜索，保存选择项
3. 保存当前选择项

### **2.5\. 物流属性**
1. 子节点继承父节点的物流属性，不直接设置

## 编译命令
```
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" TransportPlugin.csproj /p:Configuration=Debug /p:Platform=AnyCPU /verbosity:minimal
```