NavisworksTransport/IFLOW.md

527 lines
16 KiB
Markdown

# NavisworksTransport 插件项目概述
## 项目简介
NavisworksTransport 是一个用于 Autodesk Navisworks Manage 2026 的插件,专为物流路径规划和动画仿真而设计。它能够帮助用户在复杂的建筑模型中定义物流通道、规划运输路径,并生成动画来模拟设备移动过程,同时进行动态碰撞检测。
**当前版本**: 0.14.0
## 技术架构
- **编程语言**: C# 7.3
- **开发环境**: .NET Framework 4.8
- **目标平台**: x64
- **主要依赖**:
- Autodesk Navisworks API (2026版本)
- Roy-T.AStar 3.0.2 (路径规划算法)
- System.Data.SQLite 1.0.118.0 (数据存储)
- Tomlyn 0.19.0 (TOML配置文件解析)
- geometry4Sharp 1.0.0 (3D几何计算)
- MSTest.TestFramework 3.0.4 (单元测试)
- NETStandard.Library 2.0.3 (.NET Standard支持)
## 核心功能模块
### 1. 物流属性管理
- 为模型元素分配物流类别属性(如门、电梯、楼梯、通道、障碍物、无关项)
- 批量处理多个选中项目
- COM API 集成确保属性正确添加
- 物流属性列表与3D视图选择同步
- 支持单个模型可见性控制和属性回填
- 严格的数据验证机制,确保数据一致性
### 2. 路径规划
#### 手动路径编辑
- 路径点添加、编辑、删除
- 智能工具切换系统(十字光标导航)
- 空格键快速切换工具状态
- 路径点高亮和可视化
#### 自动路径规划
- **A*算法集成**: 使用Roy-T.AStar库实现高性能路径查找
- **2.5D网格地图生成**: 基于包围盒的高效网格生成算法
- **高度计算系统**:
- 通道地面高度精确检测
- 坡度分析和楼梯台阶高度处理
- 线性和非线性坡度支持
- **路径优化算法**:
- 最短路径策略(Shortest)
- 局部直线优先策略(Straightest) - 室内导航优化
- 基于中心距离的安全优先算法
- 斜线路径优化(台阶处保留2个路径点)
- **多层网格系统**: 支持楼梯、楼面等复杂场景
- **网格缓存机制**: 大幅提升路径规划速度
- **楼层过滤系统**: 基于通道楼层属性的智能过滤
#### 路径分析
- SQLite数据库存储路径数据
- 路径信息统计和分析
- 路径参数持久化(车辆尺寸、安全间隙、网格尺寸等)
### 3. 动画与仿真
- **动画系统**:
- 基于路径的动画生成
- WPF Timer机制实现流畅动画播放
- 媒体控制功能(播放、暂停、步进、快放、反向播放)
- 动画性能优化(单步时间从5秒降至15毫秒)
- **TimeLiner集成**: 动画播放时自动创建运输任务
- **动态碰撞检测**:
- Clash Detective API集成
- 基于动画帧的碰撞检测
- 碰撞位置记录和恢复机制
- 碰撞报告生成和统计
### 4. 可视化
- **3D路径点和路线渲染**:
- 手动路径连线(黑色)
- 自动路径连线(橙色)
- 路径点高亮和选择反馈
- **网格地图可视化**:
- 空洞、障碍物、通行网格的可视化
- 网格点大小自适应
- 多种形状类型(圆形、正方形、立方体、点)
- Google Material Design配色标准
- **碰撞结果高亮显示**
- **导航地图生成**: 导出当前路径场景为图片
### 5. 分层管理
- **智能楼层分析**: 支持按楼层和自定义属性分层
- **分层预览功能**:
- 1级、2级、3级、全部四种遍历深度
- 实时预览结果(名称、对象数量、估算大小)
- 缓存机制优化性能
- **分层导出**:
- 批量导出功能
- 智能文件命名(项目名_分层名_时间戳)
- 支持NWD导出选项配置
- 线程安全导出机制
- **可视化控制**:
- 单独显示功能
- 保存开关控制
- 智能可见性保护算法
- **自定义分层属性**: 支持任意Navisworks模型属性作为分层依据
### 6. 数据管理
- **SQLite数据库**: 路径数据和碰撞报告存储
- **TOML配置文件**: 系统设置管理(default_config.toml)
- **JSON路径文件导入**: 支持灵活的数据交换格式
- **几何体缓存**: 提高模型加载和渲染性能
### 7. 系统管理
- **MSI安装包**: 自动化安装包生成,支持静默安装
- **日志系统**: 完整的日志记录和查看功能
- **配置编辑器**: 可视化配置文件编辑
- **帮助系统**: 内置帮助文档和关于对话框
## 项目结构
```
NavisworksTransport/
├── src/
│ ├── Commands/ # 命令模式实现
│ │ ├── IPathPlanningCommand.cs
│ │ ├── CommandBase.cs
│ │ ├── CommandManager.cs
│ │ ├── CommandExecutor.cs
│ │ ├── AutoPathPlanningCommand.cs
│ │ ├── DeletePathCommand.cs
│ │ ├── ExportPathCommand.cs
│ │ ├── ImportPathCommand.cs
│ │ ├── SetLogisticsAttributeCommand.cs
│ │ ├── StartAnimationCommand.cs
│ │ ├── GenerateCollisionReportCommand.cs
│ │ └── VoxelPathFindingTestCommand.cs
│ ├── Core/ # 核心业务逻辑
│ │ ├── Animation/ # 动画管理
│ │ ├── Collision/ # 碰撞检测
│ │ ├── Config/ # 配置管理
│ │ ├── Properties/ # 属性管理
│ │ ├── Spatial/ # 空间索引
│ │ ├── UIUpdate/ # UI更新管理
│ │ ├── MainPlugin.cs # 插件入口
│ │ ├── PathPlanningManager.cs
│ │ ├── PathDataManager.cs
│ │ ├── PathDatabase.cs
│ │ ├── PathAnalysisService.cs
│ │ ├── PathCurveEngine.cs
│ │ ├── UIStateManager.cs
│ │ ├── IdleEventManager.cs
│ │ ├── DocumentStateManager.cs
│ │ ├── VirtualVehicleManager.cs
│ │ ├── ModelSplitterManager.cs
│ │ ├── NavigationMapGenerator.cs
│ │ ├── PathPointRenderPlugin.cs
│ │ └── FloorAttributeManager.cs
│ ├── PathPlanning/ # 路径规划算法
│ │ ├── GridMap.cs
│ │ ├── GridMapGenerator.cs
│ │ ├── GridMapCache.cs
│ │ ├── AutoPathFinder.cs
│ │ ├── PathOptimizer.cs
│ │ ├── ChannelHeightDetector.cs
│ │ ├── SlopeAnalyzer.cs
│ │ ├── OptimizedHeightCalculator.cs
│ │ ├── ChannelBasedGridBuilder.cs
│ │ ├── TimeMarkerCalculationService.cs
│ │ ├── VoxelGrid.cs # 3D体素路径规划(实验性)
│ │ ├── VoxelPathFinder.cs
│ │ └── VoxelGridVisualizer.cs
│ ├── UI/ # WPF用户界面
│ │ └── WPF/
│ │ ├── Views/ # 视图
│ │ ├── ViewModels/ # 视图模型
│ │ ├── Models/ # 数据模型
│ │ ├── Commands/ # WPF命令
│ │ ├── Converters/ # 值转换器
│ │ ├── Collections/ # 线程安全集合
│ │ ├── Services/ # UI服务
│ │ ├── Interfaces/ # 接口定义
│ │ └── Resources/ # 资源文件
│ ├── Utils/ # 工具类
│ │ ├── LogManager.cs
│ │ ├── NavisworksApiHelper.cs
│ │ ├── GeometryHelper.cs
│ │ ├── BoundingBoxGeometryUtils.cs
│ │ ├── CoordinateConverter.cs
│ │ ├── UnitsConverter.cs
│ │ ├── FloorDetector.cs
│ │ ├── ModelItemAnalysisHelper.cs
│ │ ├── VisibilityHelper.cs
│ │ └── GeometryCacheManager.cs
│ └── Resources/ # 资源文件
├── UnitTests/ # 单元测试
│ ├── Collections/
│ ├── Commands/
│ ├── Core/
│ ├── Utils/
│ └── TestHelpers/
├── doc/ # 文档
│ ├── architecture/ # 架构文档
│ ├── design/ # 设计文档
│ ├── guide/ # 使用指南
│ ├── migration/ # 迁移文档
│ ├── navisworks_api/ # API文档
│ ├── requirement/ # 需求文档
│ └── working/ # 工作文档
├── packages/ # NuGet包
├── resources/ # 资源文件
├── bin/ # 编译输出
├── obj/ # 中间文件
├── TestResults/ # 测试结果
├── NavisworksTransport.sln # 解决方案文件
├── NavisworksTransportPlugin.csproj # 主项目文件
├── NavisworksTransport.UnitTests.csproj # 测试项目文件
├── packages.config # NuGet包配置
├── default_config.toml # 默认配置文件
├── compile.bat # 编译脚本
├── run-unit-tests.bat # 运行单元测试脚本
├── deploy-plugin.bat # 部署插件脚本
├── VERSION.md # 版本信息
├── CHANGELOG.md # 变更日志
└── README.md # 项目说明
```
## 构建与运行
### 环境要求
- **操作系统**: Windows 10 或更高版本
- **Navisworks**: Navisworks Manage 2026
- **开发工具**: Visual Studio 2022 (Community或Professional)
- **运行时**: .NET Framework 4.8
- **测试工具**: MSTest Test Platform
### 构建步骤
#### 使用Visual Studio
1. 使用 Visual Studio 2022 打开 `NavisworksTransport.sln`
2. 还原 NuGet 包(自动或手动)
3. 选择配置: Release / x64
4. 编译解决方案
#### 使用命令行
```batch
# 编译插件
compile.bat
# 运行单元测试
run-unit-tests.bat
```
### 部署
#### 自动部署
```batch
# 部署插件到Navisworks插件目录
deploy-plugin.bat
```
#### 手动部署
1. 编译生成 `NavisworksTransportPlugin.dll`
2. 将输出目录内容复制到Navisworks插件目录:
`[Navisworks安装路径]\Plugins\NavisworksTransportPlugin\`
3. 重启Navisworks即可使用
### 安装包生成
项目支持MSI安装包生成:
- 使用Visual Studio Installer Projects扩展
- 支持自动化构建和静默安装
- 安装包位置: `bin\x64\Release\NavisworksTransport.Setup.msi`
静默安装命令:
```batch
msiexec /i NavisworksTransport.Setup.msi /qn /l*v install.log
```
## 开发约定
### 架构模式
- **MVVM模式**: WPF UI开发使用MVVM架构
- **Command模式**: 业务逻辑通过Command模式封装
- **依赖注入**: 使用服务接口实现松耦合
### 核心组件
- **MainPlugin**: 插件入口点,负责初始化和生命周期管理
- **PathPlanningManager**: 路径规划核心业务逻辑管理器
- **CategoryAttributeManager**: 物流属性管理
- **PathPointRenderPlugin**: 3D路径可视化渲染
- **ConfigManager**: 系统配置管理
- **UIStateManager**: UI状态和线程安全更新管理
- **IdleEventManager**: Idle事件管理,优化UI性能
- **DocumentStateManager**: 文档状态管理
- **VirtualVehicleManager**: 虚拟车辆管理
- **PathAnimationManager**: 动画管理
- **TimeLinerIntegrationManager**: TimeLiner集成
- **ClashDetectiveIntegration**: 碰撞检测集成
### 代码规范
- **配置文件**: 使用TOML格式
- **日志记录**: 使用内置的LogManager
- **异常处理**: 通过GlobalExceptionHandler统一管理,不掩盖问题
- **线程安全**: COM API调用必须在主UI线程(STA)执行
- **单位系统**: 统一使用米(m)为单位
- **向后兼容**: 不写回退和向后兼容代码,出错即抛异常
### 测试
- **单元测试**: 使用MSTest框架
- **测试覆盖**: 核心组件和关键业务逻辑
- **测试运行**: `run-unit-tests.bat`
- **测试结果**: 保存在TestResults目录
### 性能优化
- **空间索引**: 使用SpatialHashGrid优化碰撞检测
- **网格缓存**: GridMapCache提升路径规划速度
- **几何缓存**: GeometryCacheManager优化模型加载
- **线程安全**: ThreadSafeObservableCollection确保UI更新安全
- **Idle事件**: 使用Idle机制替代Timer,优化UI响应
## 快速开始
### 1. 插件安装
1. 运行MSI安装包或手动部署
2. 启动Navisworks Manage 2026
3. 在"附加模块"选项卡中找到"Transport Plugin"
### 2. 基本使用流程
#### 物流属性设置
1. 在Navisworks中选择要设置属性的模型项目
2. 点击"Transport Plugin" → "物流属性管理"
3. 在弹出窗口中选择物流类别(门、电梯、楼梯、通道、障碍物)
4. 点击"应用"为选中项目添加属性
#### 路径规划
1. 点击"路径编辑"页签
2. 选择路径策略(最短路径或直线优先)
3. 在3D视图中点击添加路径点
4. 点击"自动规划"生成路径
5. 调整路径参数(车辆尺寸、网格大小等)
#### 动画仿真
1. 点击"动画控制"页签
2. 选择要播放的路径
3. 设置动画参数(帧率、持续时间)
4. 点击"播放"开始动画
5. 查看碰撞检测结果
#### 分层管理
1. 点击"分层管理"页签
2. 选择分层属性(楼层、区域等)
3. 设置遍历深度
4. 点击"预览"查看分层结果
5. 选择要导出的分层,点击"导出"
### 3. 配置管理
编辑 `default_config.toml` 文件调整系统参数:
```toml
[path_editing]
cell_size_meters = 0.5
vehicle_length_meters = 1.0
vehicle_width_meters = 1.0
vehicle_height_meters = 2.0
safety_margin_meters = 0.05
[animation]
frame_rate = 30
duration_seconds = 10.0
detection_gap_meters = 0.05
```
## 版本历史
### v0.14.0 (2025-12-01)
- MSI安装包制作
- JSON路径文件导入
- 网格点可视化系统重构
- 空间索引优化
- 几何体缓存优化
### v0.13.0 (2025-10-11)
- 3D路径规划系统
- 多层网格系统
- 路径策略算法增强
- SQLite数据库集成
- 网格生成优化
### v0.12.0 (2025-09-16)
- 路径规划算法优化
- 可视化系统统一
- 动画系统重构
- 碰撞检测系统完善
- UI架构现代化
- 物流属性管理系统完善
- 分层管理系统优化
- 内存管理与性能优化
### v0.11.0 (2025-09-08)
- 局部直线优先路径算法
- 路径策略选择系统
- 网格可视化系统
- Roy-T.AStar集成优化
- UI架构现代化升级
- 内存管理优化
### v0.10.0 (2025-09-06)
- 智能工具切换系统
- 工具状态管理重构
- ClashDetective API重构
### v0.9.0 (2025-09-04)
- SearchAPI性能优化
- 代码架构重构
- UI原型开发
- 算法优化
### v0.8.0 (2025-08-27)
- 自定义分层管理系统
- VisibilityManager重构
- 智能文件命名系统
### v0.7.0 (2025-08-18)
- 分层管理功能完整实现
- WPF架构重构
- 线程安全解决方案
### v0.6.0 (2025-08-17)
- UI架构重构
- 线程安全与稳定性提升
### v0.5.0 (2025-08-15)
- Z坐标高度计算系统
- 楼层过滤系统
### v0.4.0 (2025-08-14)
- 单位转换系统重构
- 2.5D路径规划实现
### v0.3.0 (2025-08-13)
- Navisworks2026迁移
- WPF界面实现
### v0.2.0 (2025-07-21)
- 动画碰撞检测集成
- Clash Detective集成
### v0.1.12 (2025-07-18)
- TimeLiner集成功能
## 技术支持
### 常见问题
1. **插件未加载**: 确保Navisworks Manage 2026已正确安装,插件目录路径正确
2. **崩溃问题**: 查看日志文件,检查Navisworks API调用线程安全性
3. **路径规划失败**: 检查物流属性是否正确设置,通道是否连续
4. **碰撞检测不准确**: 调整检测间隙参数,检查车辆尺寸配置
### 日志位置
日志文件位于:
`[Navisworks安装路径]\Plugins\NavisworksTransportPlugin\logs\debug.log`
### 文档资源
- **使用说明**: `doc/working/使用说明.md`
- **开发文档**: `doc/working/`
- **API文档**: `doc/navisworks_api/`
- **迁移文档**: `doc/migration/`
- **设计文档**: `doc/design/`
- **需求文档**: `doc/requirement/`
## 许可与贡献
本项目为Navisworks插件开发项目,遵循Autodesk插件开发规范。
## 联系方式
- **项目仓库**: <http://10.0.0.99:4000/tian/NavisworksTransport.git>
- **问题反馈**: 通过Git仓库Issue系统提交
- **开发文档**: 参考项目doc目录下的相关文档
---
**最后更新**: 2026年1月5日