Skip to content

IfcIO v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 17:06
· 43 commits to main since this release

Major Additions & Capabilities

  • Parametric Swept Solids (IfcExtrudedAreaSolid):
    • IfcProfileDef base hierarchy with parameterized profiles:
      • IfcRectangleProfileDef (XDim, YDim, optional 2D position placement).
      • IfcCircleProfileDef (Radius, optional 2D position placement).
      • IfcArbitraryClosedProfileDef (boundary polygon points).
    • Sweeps profiles along 3D extrusion direction vectors with custom depths.
    • Automatic on-demand polygon mesh generation (solid.ToMesh()) supporting robust ear-clipping polygon triangulation.
    • Fluent model helpers: model.AddExtrudedRectangle(...) and model.AddExtrudedCircle(...).
    • Full ISO 10303-21 STEP physical file serialization (IFCEXTRUDEDAREASOLID, IFCRECTANGLEPROFILEDEF, IFCCIRCLEPROFILEDEF, IFCARBITRARYCLOSEDPROFILEDEF) under 'SweptSolid' representation and deserialization.
  • Parametric Openings & Voids (IfcOpeningElement):
    • IfcOpeningElement model type representing architectural voids and cutouts (walls, slabs).
    • Support for filling elements (opening.Filling, e.g. IfcWindow, IfcDoor) installed inside the void.
    • Serialization and deserialization of buildingSMART relationships: IFCRELVOIDSELEMENT and IFCRELFILLSELEMENT.
    • Helper method model.AddOpening(...) with automatic host element linkage.
  • Standard buildingSMART Property Sets (StandardPsets):
    • Strongly-typed builders for standard Psets:
      • WallCommon / Pset_WallCommon
      • SlabCommon / Pset_SlabCommon
      • ColumnCommon / Pset_ColumnCommon
      • BeamCommon / Pset_BeamCommon
      • WindowCommon / Pset_WindowCommon
      • DoorCommon / Pset_DoorCommon
  • Model Validation Engine (IfcValidator):
    • Validates spatial structure, 22-char buildingSMART GlobalId format and uniqueness, mesh integrity, and property sets.
    • Validates swept solids: finite positive depths (IFC_SOLID_DEPTH), valid profile dimensions (IFC_PROFILE_DIMENSIONS), and openings.
  • Direct 3D Rendering of Swept Solids:
    • GetEffectiveMesh() integration into IfcGlbExporter and IfcObjExporter, enabling instant visualization of swept solids in glTF 2.0 / WebGL / OBJ without manual triangulation.

Major Additions & Capabilities

  • Cross-Platform CLI (ifcio):
    • Global .NET CLI tool packaged as IfcIO.Cli on NuGet.
    • Subcommands: info (with --report breakdown), export (to GLB, OBJ, IFC, IFCZIP), pack (compress to .ifczip), unpack (extract .ifc), and validate (ISO 10303-21 structure validation).
  • Full IFC Ingestion & Deserialization (IfcModel.Open):
    • Comprehensive high-level reconstruction of IFC models from STEP files: Project, Site, Building, Storeys, Elements, Property Sets, Materials, and 3D Meshes.
    • Multi-line STEP statement accumulation and quote-aware tokenization in StepReader.
  • IFC4 Modern Tessellation:
    • Serialization of IfcTriangulatedFaceSet and IfcCartesianPointList3D under representation type 'Tessellation' for IFC4 exports (>60% smaller files and faster export).
    • Parsing and reconstruction of IfcTriangulatedFaceSet geometry on import.
  • Direct 3D Exporters:
    • Binary glTF 2.0 exporter (model.SaveGlb / IfcGlbExporter): PBR materials, smooth/flat vertex normals, scene hierarchy, and double-sided rendering.
    • Wavefront OBJ exporter (model.SaveObj / IfcObjExporter): vertex geometry and .mtl material libraries.
  • IfcZip (.ifczip) Transparent Archive Support:
    • Built-in compression and decompression for .ifczip files using pure managed System.IO.Compression.ZipArchive.
  • Type Products & RelDefinesByType:
    • Reusable IfcTypeProduct definitions (IFCWALLTYPE, IFCSLABTYPE, IFCCOLUMNTYPE, IFCBEAMTYPE, etc.) linked via IFCRELDEFINESBYTYPE.