# ifcengineWpf **Repository Path**: freecat08s/ifcengine-wpf ## Basic Information - **Project Name**: ifcengineWpf - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-28 - **Last Updated**: 2025-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IFC Engine WPF Viewer 这是一个基于 .NET 8 和 WPF 的 IFC 文件查看器,使用 IFCEngine.dll 进行 IFC 文件的解析和几何数据提取。 ## 功能特性 ### ?? 核心功能 - **IFC 文件加载**: 支持标准 IFC 文件格式的加载和解析 - **3D 模型显示**: 使用 HelixToolkit.Wpf 进行高质量的 3D 渲染 - **实体属性查看**: 完整的 IFC 实体属性信息展示 - **实体搜索**: 快速搜索和定位特定的 IFC 实体 - **模型信息统计**: 显示模型的基本统计信息 ### ?? 用户界面 - **现代化界面**: 基于 WPF 的响应式用户界面 - **分割面板**: 可调整的 3D 视图和属性面板 - **实体树视图**: 分层显示 IFC 实体结构 - **属性网格**: 详细的属性信息表格 - **状态栏**: 实时显示操作状态和统计信息 ### ?? 3D 查看功能 - **多种视图控制**: 旋转、缩放、平移 - **自动适应**: 自动缩放到模型范围 - **实体分色**: 不同 IFC 实体类型使用不同颜色显示 - **光照系统**: 内置光照系统提供良好的视觉效果 ## 技术架构 ### 依赖项 - **.NET 8**: 目标框架 - **WPF**: 用户界面框架 - **HelixToolkit.Wpf**: 3D 图形渲染 - **IFCEngine.dll**: IFC 文件解析引擎 ### 项目结构 ``` ifcengineWpf/ ├── MainWindow.xaml # 主窗口 UI 定义 ├── MainWindow.xaml.cs # 主窗口逻辑代码 ├── App.xaml # 应用程序定义 ├── App.xaml.cs # 应用程序启动逻辑 ├── IFCEngine/ │ ├── IFCEngineAPI.cs # IFCEngine.dll API 包装 │ └── IFCModelManager.cs # IFC 模型管理器 └── ifcengine.dll # IFC 解析引擎 ``` ### 主要类说明 #### IFCEngineAPI - 封装 IFCEngine.dll 的所有原生 API 调用 - 提供类型安全的接口 - 处理内存管理和字符串转换 #### IFCModelManager - 高级 IFC 模型管理 - 实体加载和组织 - 几何数据提取 - 属性信息解析 #### MainWindow - 主用户界面控制器 - 3D 渲染管理 - 用户交互处理 - UI 状态管理 ## 使用说明 ### 基本操作 1. **加载文件**: 点击"?? 加载IFC文件"按钮选择 IFC 文件 2. **查看模型**: 在左侧 3D 视图中查看模型 3. **浏览实体**: 在右侧树视图中浏览 IFC 实体 4. **查看属性**: 选择实体查看其详细属性 ### 3D 操作 - **旋转**: 左键拖拽 - **缩放**: 鼠标滚轮 - **平移**: 右键拖拽 - **重置视图**: 点击"?? 重置视图"按钮 - **缩放到全部**: 点击"?? 缩放到全部"按钮 ### 搜索功能 - 在"搜索实体..."文本框中输入关键词 - 系统会实时过滤显示匹配的实体 - 支持实体名称和类型的搜索 ## 支持的 IFC 实体类型 应用程序优化支持以下主要 IFC 实体类型: - **IFCPROJECT**: 项目信息 - **IFCSITE**: 场地信息 - **IFCBUILDING**: 建筑信息 - **IFCBUILDINGSTOREY**: 楼层信息 - **IFCWALL**: 墙体 - **IFCDOOR**: 门 - **IFCWINDOW**: 窗 - **IFCSLAB**: 楼板 - **IFCBEAM**: 梁 - **IFCCOLUMN**: 柱 - **IFCSPACE**: 空间 - **IFCSTAIR**: 楼梯 - **IFCROOF**: 屋顶 每种实体类型都有独特的颜色标识: - 墙体: 淡蓝色 - 门: 棕色 - 窗: 淡青色 - 楼板: 灰色 - 梁: 橙色 - 柱: 红色 - 空间: 淡绿色 - 楼梯: 紫色 - 屋顶: 深红色 ## 性能优化 ### 内存管理 - 自动释放非托管资源 - IFC 模型的正确生命周期管理 - 几何数据的高效处理 ### 渲染优化 - 使用 HelixToolkit 的硬件加速 - 按需加载几何数据 - 实体类型分组显示 ### 用户体验 - 异步文件加载防止界面卡顿 - 加载进度指示 - 错误处理和用户反馈 ## 故障排除 ### 常见问题 **Q: 无法加载 IFC 文件** A: 确保 ifcengine.dll 文件位于应用程序目录中,且 IFC 文件格式正确 **Q: 3D 模型不显示** A: 检查 IFC 文件是否包含几何信息,某些 IFC 文件可能只包含属性数据 **Q: 应用程序崩溃** A: 确保使用 64 位版本的 ifcengine.dll,项目配置为 x64 平台 **Q: 性能问题** A: 对于大型模型,可能需要较长的加载时间,建议使用 SSD 存储 ## 扩展开发 ### 添加新的实体类型支持 1. 在 `IFCModelManager.LoadEntities()` 中添加新的实体类型 2. 在 `MainWindow` 中添加对应的颜色配置 3. 根据需要扩展属性解析逻辑 ### 增强几何处理 1. 优化 `ExtractGeometry()` 方法 2. 添加更复杂的法线计算 3. 支持纹理和材质信息 ### 改进用户界面 1. 添加更多的 3D 操作工具 2. 实现属性编辑功能 3. 添加导出功能 ## 许可证 本项目使用 MIT 许可证。IFCEngine.dll 的使用需要遵循其相应的许可证条款。