ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IfcPlusPlus 核心API速查:BuildingModel、ReaderSTEP、GeometryConverter 完全清单

IfcPlusPlus 核心API速查:BuildingModel、ReaderSTEP、GeometryConverter 完全清单 IfcPlusPlus 核心API速查BuildingModel、ReaderSTEP、GeometryConverter 完全清单【免费下载链接】ifcplusplusIfcPlusPlus is an open source C class model, as well as a reader and writer for IFC files in STEP format. Features: Easy and efficient memory management using smart pointers. Parallel reader for very fast parsing on multi-core CPUs. Additionally, theres a simple IFC viewer application, using Qt and OpenSceneGraph. It can be used as starting point for all kinds of applications around the open building model standard IFC.项目地址: https://gitcode.com/gh_mirrors/if/ifcplusplus想快速上手 IFC 建筑模型开发本文给出 IfcPlusPlusIFC核心 API 速查清单围绕BuildingModel、ReaderSTEP、GeometryConverter三大核心类列全了关键方法、文件位置与调用顺序。IfcPlusPlus 是开源 C 类模型与 IFCSTEP 格式文件读取/写入器配合智能指针管理内存、多线程并行解析是开发开放建筑模型应用的理想起点文末附示例工程路径照做即可跑通。一、3 个核心类一眼看懂 核心类一句话职责源码位置BuildingModel建筑模型容器存放全部 IFC 实体IfcPlusPlus/src/ifcpp/model/BuildingModel.hReaderSTEP读取 IFC STEP 文件多核并行、速度快IfcPlusPlus/src/ifcpp/reader/ReaderSTEP.hGeometryConverter把 IFC 几何表示转换为 Carve 网格IfcPlusPlus/src/ifcpp/geometry/GeometryConverter.h辅助类同样值得收藏WriterSTEP把模型写回 IFC 文件IfcPlusPlus/src/ifcpp/writer/WriterSTEP.hStatusCallback统一的消息/进度/取消回调基类IfcPlusPlus/src/ifcpp/model/StatusCallback.h三个核心类都继承自它GeometrySettings几何转换参数如圆周顶点数、布尔运算 epsilonIfcPlusPlus/src/ifcpp/geometry/GeometrySettings.h二、BuildingModel 类速查模型实体全在这BuildingModel是整个应用的数据中枢内部用std::unordered_mapint, shared_ptrBuildingEntity按 STEP tag 存放所有实体。2.1 实体增删BuildingModel.h 第 42–47 行方法作用getMapIfcEntities()获取实体映射表遍历模型最快入口insertEntity(e, overwrite, warn)插入实体可覆盖已有 tagremoveEntity(e)/removeEntity(tag)按对象或 tag 删除实体removeUnreferencedEntities()清理无引用实体省内存getLowestUnusedEntityTagSlow()找最小可用 tag填补空隙getNextUnusedEntityTagFast()快速取下一个可用 tag2.2 模型信息与单位getIfcProject()拿到根实体 IfcProjectgetIfcSchemaVersionOfLoadedFile()已加载文件的 IFC 版本IFC2X3/IFC4/IFC4X3…getIfcSchemaVersionCurrent()库当前实现的最高 IFC 版本getUnitConverter()单位换算器毫米/米等几何转换前务必确认getFileName()/getFileHeader()/getFileDescription()文件元信息2.3 加载控制resolveInverseAttributes()/unsetInverseAttributes()解析/释放反向引用cancelLoading()/isLoadingCancelled()取消正在进行的加载配合 GUI 的取消按钮 小技巧实体类定义在IfcPlusPlus/src/ifcpp/IFC4X3/include/下每个 IFC 实体一个头文件如IfcWall.h、IfcProject.h属性直接以m_Name、m_GlobalId等成员变量访问非常直观。三、ReaderSTEP 类速查最快读取 IFC 文件ReaderSTEP封装了 STEP 文件解析支持从文件或直接流读取内部用多线程并行解析大文件也能快速完成。方法作用loadModelFromFile(filePath, model)一步到位打开文件→解析→实体填入模型最常用loadModelFromStream(content, pos, model)从内存流加载适合网络/嵌入场景readHeader(in, model)只读文件头schema 版本、单位、文件名readData(in, end, model)解析实体数据段readSingleStepLine(line, obj)解析单行 STEP 语句底层接口3.1 消息回调必接一步ReaderSTEP继承自StatusCallback调用setMessageCallBack(...)注册回调后解析进度MESSAGE_TYPE_PROGRESS_VALUE、警告、错误都会推给你——这是实现进度条和错误日志的关键。四、GeometryConverter 类速查IFC 几何转网格GeometryConverter是模型→可渲染网格的转换器接收BuildingModel后调用convertGeometry()内部并行处理每个 IfcProduct输出ProductShapeData含网格、变换矩阵、子产品树。4.1 核心方法方法作用convertGeometry()主入口多线程转换全部几何getShapeInputData()结果获取GUID→ProductShapeData扁平映射setModel(model)换绑另一个模型setCsgEps(eps)设置 CSG 布尔运算容差示例常用 1.5e-9resetModel()/clearInputCache()释放缓存、清理内存getBuildingModel()/getGeomSettings()取回模型与几何设置4.2 内部子转换器清单GeometryConverter组合了RepresentationConverter后者又编排了一整套子转换器都在IfcPlusPlus/src/ifcpp/geometry/下PointConverter点坐标PointConverter.hCurveConverter曲线/样条CurveConverter.hPlacementConverter放置与变换矩阵PlacementConverter.hFaceConverter面/壳三角化FaceConverter.hSolidModelConverter实体、布尔运算SolidModelConverter.hProfileCache轮廓缓存提升重复截面性能ProfileCache.hCSG_Adapter布尔切减如墙体开洞CSG_Adapter.h 性能调参GeometrySettings中setNumVerticesPerCircle()控制圆弧细分默认 14顶点越多越圆滑、越耗内存。五、WriterSTEP三行写回 IFC 文件需要导出模型时WriterSTEP非常轻量shared_ptrWriterSTEP writer(new WriterSTEP()); writer-writeModelToStream(stream, ifc_model);m_writeNumberPrecision可调整输出小数精度默认 15。六、典型调用顺序4 步跑通全流程 ✅建模型与读取器new BuildingModel()new ReaderSTEP()给两者注册setMessageCallBack加载文件step_reader-loadModelFromFile(xx.ifc, ifc_model)转换几何new GeometryConverter(ifc_model)→ 配置setCsgEps→convertGeometry()取结果getShapeInputData()拿扁平网格映射或从ifc_model-getIfcProject()出发用反向属性如m_IsDecomposedBy_inverse遍历空间树 完整可运行的参考实现在examples/LoadFileExample/src/main.cpp含树遍历与网格遍历演示想从零创建墙体的看examples/CreateIfcWallAndWriteFile/src/main.cpp带 QtOpenSceneGraph 的 3D 查看器示例在examples/SimpleViewerExampleQt/可直接作为你应用的起点。七、新手避坑清单单位不一致转换前先查getUnitConverter()IFC 常用毫米几何输出按米缩放忘记接回调不注册setMessageCallBack时进度与错误信息会丢失Debug 下打印到控制台GUID 重复convertGeometry()会自动检测重复 GUID 并追加后缀注意看回调里的错误消息大文件内存转换完成后及时clearInputCache()可显著降低驻留内存取消加载UI 取消时调用ifc_model-cancelLoading()读取器会协作退出掌握这份 BuildingModel、ReaderSTEP、GeometryConverter 速查清单你就能独立完成 IFC 文件读取、几何转换与导出的全链路开发。动手从examples/LoadFileExample开始是最快的学习路径【免费下载链接】ifcplusplusIfcPlusPlus is an open source C class model, as well as a reader and writer for IFC files in STEP format. Features: Easy and efficient memory management using smart pointers. Parallel reader for very fast parsing on multi-core CPUs. Additionally, theres a simple IFC viewer application, using Qt and OpenSceneGraph. It can be used as starting point for all kinds of applications around the open building model standard IFC.项目地址: https://gitcode.com/gh_mirrors/if/ifcplusplus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表