WARNING! The roof generation is now quite significantly different. This WILL change your geometry when you refresh roofs from existing models. - The roof profile now always represents the top of eave. This better represents how things are built rather than bottom of eave which was previous. - The roof therefore always grows down from the profile. The rafter edge angle can only be acute. This means that the roof will never grow larger than the footprint profile that you've drawn. (before, the footprint was not guaranteed to match). - The roof thickness is now the actual thickness of the roof, not the "vertical dimension" of the roof. This means that the roof thickness can now match intended layer thicknesses instead of you needing to do math to work it out. I've rewritten the internals of how roofs were generated to be hopefully a lot simpler but as a tradeoff it's more restrictive. After the skeleton is generated, non-uniform angles would be handled through vertex splitting and moving. This works in simple scenarios but fails in more complex ones. The new approach only handles non-uniform angles on triangular faces. These faces are really easy to handle compared to ngons, but are also more robust. The rafter edge angle is also now handled using a clipping plane, which is a lot, lot simpler than vertex sliding math. Each face is now processed separately and then merged at the end. This means that if a face has a different angle, it will now correctly represent the different thickness at that portion of the roof. In the process consistent roof thickness / rafter angle bugs were fixed.
IfcOpenShell
IfcOpenShell is an open source (LGPL) software library for working with Industry Foundation Classes (IFC). Complete parsing support is provided for IFC2x3 TC1, IFC4 Add2 TC1, IFC4x1, IFC4x2, and IFC4x3 Add2. Extensive geometric support is implemented for the IFC releases IFC2x3 TC1 and IFC4 Add2 TC1. Extending with support for arbitrary IFC schemas is possible at compile-time when using C++ and at run-time when using Python.
In addition to a C++ and Python API, IfcOpenShell comes with an ecosystem of tools, notably including IfcConvert (an application to convert IFC models to other formats), Bonsai (an add-on to Blender providing a graphical IFC authoring platform), and many other libraries, CLI apps, and more. Support is also provided for auxiliary standards such as BCF and IDS.
For more information, see:
Development is sponsored through your generous donations!
Contents
The IfcOpenShell C++ codebase is split into multiple interal libraries:
| Name | Description | License |
|---|---|---|
| ifcgeom | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| ifcgeom_schema_agnostic | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| ifcgeomserver | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| ifcjni | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| ifcparse | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| ifcwrap | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| qtviewer | Internal library for IfcOpenShell | LGPL-3.0-or-later* |
| serializers | Internal library for IfcOpenShell | LGPL-3.0-or-later* |