OpenProject BIM IFC Viewer 使用指南:在浏览器中查看与管理建筑模型
OpenProject BIM IFC Viewer 使用指南在浏览器中查看与管理建筑模型【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openprojectOpenProject 的 BIM 模块内置了一款功能强大的 IFC 查看器支持直接在 Web 浏览器中查看和交互操作 2D 与 3D 建筑模型无需在本地安装任何额外软件。本文将基于 docs/bim-guide/ifc-viewer/README.md 完整讲解该查看器的界面组成、模型导入导出、视角控制、剖切、元素选择、属性查看与显隐管理等全部操作并结合仓库源码揭示其背后的 IFC→XKT 转换管线与 xeokit 渲染实现帮助你在项目中快速上手 BIM 协作。OpenProject BIM IFC 查看器界面左侧为模型树中央为 2D/3D 模型视口右上角为 OpenProject 工具栏右下角为 View Cube 与 IFC-Viewer 工具栏。界面总览IFC 查看器的五个核心区域当你在项目中打开 BIM 模块BCF 模块时IFC 查看器会加载默认的 IFC 模型。整个界面主要由以下五部分组成IFC Model Viewer模型视口直接在 OpenProject BIM 中查看建筑模型的 2D/3D 区域支持旋转、缩放、剖切、选择等交互。IFC Model Tree模型树展示 IFC 模型的层级结构支持按构件、楼层Storey或 IFC 分类Classes组织并可通过复选框显示/隐藏整个模型或单个元素。OpenProject 工具栏承载最常用的业务操作例如新建BIM工作包/问题、导入与导出 BCF 文件、切换 OpenProject 视图、上传与下载 IFC 模型。View Cube视图立方体位于视口右下角用于旋转建筑模型可快速切换至俯视、正视、侧视等标准视角。IFC-Viewer 工具栏与模型交互相关的工具集合例如切换 2D/3D、正交/透视、重置视图、剖切、选择、隐藏元素等。从源码结构看前端查看器基于 xeokit 引擎实现相关类型声明与服务位于 frontend/src/app/features/bim/ifc_models/xeokit/xeokit.d.ts 与 frontend/src/app/features/bim/ifc_models/xeokit/xeokit-server.ts工具栏的按钮布局与样式定义在 frontend/src/app/features/bim/ifc_models/pages/viewer/styles/toolbar.sass 中。导入与导出 IFC 模型在 BCF 模块中可以管理项目的全部 IFC 文件上传新的建筑模型或下载已上传的文件。通过IFC-Models按钮上传点击 OpenProject 工具栏中的IFC-Models按钮即可打开模型管理界面要上传第一个 IFC 模型点击绿色的 IFC Model按钮在弹出的资源管理器窗口中导航到建筑模型文件所在目录选择目标.ifc文件并确认上传。在提交前你还可以选择将新模型设置为Default model默认模型。多个模型可以同时被标记为默认所有默认模型会在你重新加载 BCF 模块时自动显示这一设置之后也可以随时更改。模型管理上传完成后你会在model management模型管理界面看到项目中所有模型的概览可以查看它们当前的上传/转换状态、重命名模型、删除或下载已有模型对应地模型管理界面由 modules/bim/app/controllers/bim/ifc_models/ifc_models_controller.rb 提供index、create、update、destroy等动作其中create接收title、ifc_attachment、is_default三个参数ifc_models_controller.rb 第 123-138 行update则允许修改title与is_default。模型本身是 IfcModel 记录通过acts_as_attachable挂载附件并限制manage_ifc_models上传/删除与view_ifc_models查看两类权限ifc_model.rb 第 18-20 行。通过模型树追加模型如果项目中已存在模型无需再打开model manager即可上传更多模型直接点击IFC Model Tree中的Add-Button添加按钮即可提示当存在多个模型时你可以通过模型树中的复选框隐藏整个模型或其中的单个元素上传状态与默认模型的源码实现从源码来看默认模型与上传状态两个特性有明确的实现依据默认模型IfcViewerController通过set_default_models只筛选is_default: true的模型用于初始加载ifc_viewer_controller.rb 第 62-64 行模型树加载时的状态则取决于IfcModelsController#defaults动作返回的默认模型 id 列表。转换状态IfcModel定义了conversion_status枚举共四档状态pending0待转换、processing1转换中、completed2转换完成、error3转换失败ifc_model.rb 第 11-16 行。模型管理界面显示的当前上传状态即来源于此。若模型尚未完成转换查看器会显示未转换提示见 modules/bim/app/views/bim/ifc_models/ifc_viewer/_unconverted_notice.html.erb。如何旋转建筑模型旋转 IFC 模型有两种方式直接拖拽在建筑模型视口中左键按住并拖动光标即可旋转模型使用 View Cube点击视口右下角的View Cube进行导航。IFC-Viewer 工具栏详解IFC-Viewer 工具栏中的按钮都作用于当前视口点击即可触发对应功能下面逐一说明。重置视图Reset view当模型或模型内的对象被旋转、缩放或剖切后若想恢复默认视角点击该按钮一次即可将当前视图重置为默认状态2D / 3D 视图切换建筑模型可以方便地在 2D 与 3D 视图之间切换2D 视图非常适合深入查看建筑内部例如查看楼层平面图。最有效的用法是将 2D 视图与隐藏元素功能结合使用例如先隐藏屋顶与外墙再查看平面布局正交视图Orthographic viewOpenProject BIM 模型查看器的默认行为是透视视图perspective view。透视相机会提供更多深度信息——远处的对象看起来比近处的更小。而**正交视图orthographic view**在工程领域被广泛使用所有对象以相同比例呈现平行线保持平行屏幕任意位置的单位长度看起来都一致因此更容易评估对象的相对尺寸适配视图Fit view该功能用于重置当前的缩放级别与模型位置点击后会自动缩放并居中使整个模型完整可见且位于视口中央第一人称视角First person perspective第一人称视角改变了与建筑模型的交互方式用户不再围绕某个轴旋转整个模型而是改变自身的观察视角。激活后查看器的行为更接近真实世界相机移动方式类似于头部转动适合模拟在建筑内部漫游如何剖切建筑模型为了深入观察建筑模型内部可以对整个建筑进行剖切点击IFC-Viewer 工具栏中的剪刀图标scissors symbol进入剖切模式左键点击一个与期望剖切角度一致的元素该角度之后仍可编辑屏幕上会出现若干箭头按住并拖动箭头到目标位置即可完成剖切。如何清除剖切使用IFC-Viewer 工具栏中剪刀图标旁边的dropdown 下拉菜单可以清除所有剖切如何选择元素点击IFC-Viewer 工具栏中高亮的切换按钮激活选择模式激活后在视口中左键点击即可选择单个或多个元素你的个人选择在退出选择模式后不会被重置如需重置当前选择可通过**上下文菜单右键**完成。查看元素属性在 OpenProject BIM 中可以查看每个元素的基础属性例如其 UUID。点击information信息按钮后会出现一个名为Properties属性的新标签页要查看单个对象的详细信息右键打开上下文菜单选择Inspect Properties检查属性该对象的所有属性都会出现在新标签页中注意显示的属性是你点击到的那个元素的属性。因此请确保目标对象前方没有其他不需要的对象例如窗玻璃遮挡通过查看器显示或隐藏元素通过查看器隐藏元素有两种方式方式一使用 IFC-Viewer 工具栏的 hide-button隐藏按钮激活Hide-Mode隐藏模式后你左键点击的每个元素都会被隐藏方式二使用上下文菜单右键打开上下文菜单可以找到隐藏单个元素的功能恢复显示你随时可以通过工具栏中的Reset-View重置视图按钮重新显示被隐藏的元素或使用 IFC Model Tree 中的Show All全部显示按钮。X-Ray 模式有时需要结合上下文观察元素但个别元素会遮挡视线。此时可以使用查看器的X-RayX 光模式——通过上下文菜单激活被遮挡的干扰元素会以半透明方式显示在上下文之中不再遮盖其他元素在模型树中定位元素如果你不确定当前隐藏或选中的是否为目标元素可以在 IFC Model Tree 中定位它在目标元素上右键打开上下文菜单选择Show in Explorer在资源管理器中显示模型树会自动展开并定位到该元素通过模型树显示或隐藏模型与元素如果你为同一栋建筑上传了多个 IFC 模型例如按专业划分建筑 Architecture、结构 Structural 与机电 MEP各一个可以通过修改模型树中的复选框状态来单独查看某个模型或隐藏特定元素模型树可以以不同方式呈现建筑模型的结构这意味着整个模型、整个楼层Storey甚至相似的构件都可以一键隐藏切换到模型树的Classes分类标签页后可以看到所有元素按 IFC 分类的聚合结果整个分组也可以被隐藏。例如下图中所有类型为IFCWall的元素都会被隐藏深入IFC 模型在浏览器中的渲染管线理解上传后模型状态会经历转换这一过程有助于更好地使用上述功能。上传 IFC 文件后OpenProject 并不会直接让浏览器解析.ifc文本而是异步执行一次格式转换最终生成适合 Web 端实时渲染的 XKT 格式。上传即触发转换任务创建模型成功之后CreateService会立即投递一个IfcConversionJob到ifc_conversion队列create_service.rb 第 34-39 行。任务以系统用户身份运行ifc_conversion_job.rb 第 8-16 行转换的成败直接反映在模型管理界面显示的conversion_status上。四步转换管线转换逻辑集中在ViewConverterServicemodules/bim/app/services/bim/ifc_models/view_converter_service.rb它依赖四个外部命令行工具按顺序执行IfcConvert → COLLADA2GLTF → xeokit-metadata gltf2xkt → .xkt具体流程view_converter_service.rb 第 84-93 行IfcConvert将.ifc转换为 COLLADA.dae。转换时使用--use-element-guids保留元素 GUID保证与 BCF 工作包关联并显式排除IfcOpeningElement以包含默认被忽略的IfcSpace实体view_converter_service.rb 第 125-149 行COLLADA2GLTF将.dae转换为 glTF.gltfxeokit-metadata从 IFC 提取构件的元数据 JSON用于模型树、属性面板与分类聚合gltf2xkt将 glTF 与元数据 JSON 打包为XKT格式view_converter_service.rb 第 167-175 行。转换完成后XKT 文件作为模型的xkt附件保存view_converter_service.rb 第 109-118 行converted?即通过判断是否存在 xkt 附件来判断模型是否完成转换ifc_model.rb 第 51-53 行。若转换所需命令缺失或执行失败模型状态会被置为error并记录错误信息。这也解释了文档中模型管理界面可查看上传状态这一功能在状态为completed之前模型可能尚未出现在查看器中或无法完整交互请耐心等待后台转换完成。小结OpenProject BIM 的 IFC 查看器把建筑信息模型BIM直接带入了项目管理流程通过浏览器即可完成模型上传、多模型管理、2D/3D 浏览、剖切、元素选择、属性检查与显隐控制并与 BCF 问题管理无缝衔接。结合其基于 xeokit 的 XKT 渲染管线整个查看体验对终端用户而言无需安装任何本地软件。若想进一步了解 BCF 问题的创建、导入导出与权限配置可继续阅读本仓库 docs/bim-guide 目录下的其他 BIM 指南。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考