Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ All notable changes to the `IfcIO` library are documented in this file.

## [Unreleased]

## [0.11.0] - 2026-11-13

### Added
- **`IfcIO.Scene`**: `IfcSceneReader` converts an IFC file or `IfcModel` into an `IOScene` `SceneDocument` in metres with Z up (GlobalIds as `SourceId` and `IfcGuid`, storeys as levels and tree nodes, property and quantity sets keyed `ifc:`, materials, 4D schedules), with diagnostics for elements without geometry. See `docs/scene-adapter.md`.
- **`IfcIO.Scene` NuGet package**: published on the `IfcIO` release tag and depends on exactly the same `IfcIO` version (`[X.Y.Z]`). It needs the released `IOScene` 0.1.0; the release fails while it would depend on an `IOScene` preview.
- **`IfcIO.Scene` NuGet package**: published on the `IfcIO` release tag and depends on exactly the same `IfcIO` version (`[X.Y.Z]`). It references `IOScene` with the range `[0.1.0, 0.2.0-0)`; a release that would depend on an `IOScene` preview fails.

### Fixed
- **World placement of geometry read from IFC (`IfcModel.Open`)**: element meshes are now in world coordinates. Previously object placements were ignored and every element sat at its local origin.
Expand Down
6 changes: 4 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ Report security vulnerabilities privately through the **Security** tab.
## Scene adapter

`src/IfcIO.Scene` converts IfcIO models into `IOScene` documents and uses only the public API of `IfcIO`; the `IfcIO`
package itself keeps no dependencies. `IOScene` is referenced with the range `[0.1.0-preview.2, 0.2.0-0)`. To build
against an `IOScene` preview that is not on NuGet.org yet, restore from a local folder of packages:
package itself keeps no dependencies. `IOScene` is referenced with the range `[0.1.0, 0.2.0-0)`, and restore takes the
lowest version in it, 0.1.0 from NuGet.org. To build against an `IOScene` version that is not on NuGet.org yet, start
the range in `Directory.Packages.props` at that version (for a new minor, move the upper bound too, for example
`[0.2.0-preview.1, 0.3.0-0)`) and restore from a local folder of packages:
`dotnet build IfcIO.slnx -p:RestoreAdditionalProjectSources=<folder>`. Changing the `SceneModel.Key`, `SourceId` or
`IfcGuid` the adapter writes, its `ifc:` key format, or the value form (`Text`, `Kind`, `Unit`) it writes under a key
fails the golden identity test and is a breaking release.
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</PropertyGroup>

<PropertyGroup>
<Version>0.10.0</Version>
<Version>0.11.0</Version>
<Authors>mahach666</Authors>
<Copyright>Copyright (c) 2026 IOExtend</Copyright>
<Product>IfcIO</Product>
Expand Down
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
</PropertyGroup>

<ItemGroup>
<PackageVersion Include="IOScene" Version="[0.1.0-preview.2, 0.2.0-0)" />
<PackageVersion Include="IOScene" Version="[0.1.0, 0.2.0-0)" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" />
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,20 +142,20 @@ Reads and writes ISO 10303-21 STEP physical files conforming to **IFC2x3 Coordin

## Limitations

- Version 0.10.0 is a preview. The API can evolve before 1.0.
- Version 0.11.0 is a preview. The API can evolve before 1.0.
- IFC5 (USD/JSON) is not yet supported.
- Boolean mesh cutting evaluates planar CSG half-spaces; non-planar curved intersections are tessellated.

## Scope and frozen features

IfcIO reads and writes IFC. The following extras are frozen: they get bug fixes only, no new features or options.

- HTML viewer (`IfcHtmlViewerExporter`, `ifcio view`). Viewing will move to [IOViewer](https://github.com/IOExtend/IOViewer) through a planned `IfcIO.Scene` adapter over the shared, planned `IOScene` model.
- HTML viewer (`IfcHtmlViewerExporter`, `ifcio view`). Viewing will move to [IOViewer](https://github.com/IOExtend/IOViewer) through the `IfcIO.Scene` adapter over the shared `IOScene` model.
- GLB and OBJ export (`IfcGlbExporter`, `IfcObjExporter`). A shared GLB writer is planned in `IOScene.Formats`.
- Clash detection, measure, grids, diff, and BCF archives (`IfcClashDetector`, `IfcClashGrouper`, `IfcMeasureEngine`, `IfcGridSystem`, `IfcDiffEngine`, `BcfArchive`, `BcfZipExporter`). These will move to a planned `IOCoord` package.
- IFC work-schedule (4D) sequence logic. It stays in IfcIO.

None of these packages is published yet. The frozen features stay available and are removed no earlier than IfcIO 1.0, and only after a published replacement exists.
None of these replacements is published yet. The frozen features stay available and are removed no earlier than IfcIO 1.0, and only after a published replacement exists.

## Build from source and tests

Expand Down
4 changes: 2 additions & 2 deletions docs/scene-adapter.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ that read scenes work from it. The scene model and its rules are specified in th
its [key registry](https://github.com/IOExtend/IOScene/blob/main/docs/keys.md).

Status: preview. The `IfcIO.Scene` package is released with IfcIO, on the same tag, and depends on exactly the same
`IfcIO` version. Its first release needs `IOScene` 0.1.0: until then it references `IOScene` with the range
`[0.1.0-preview.2, 0.2.0-0)` and a release fails on purpose.
`IfcIO` version. It references `IOScene` with the range `[0.1.0, 0.2.0-0)`: any 0.1 release from 0.1.0 on, and no
preview of the next breaking line.

## Usage

Expand Down
Loading