The changes in how specular roughness and transparency is read in was
done to ensure type safety. If you added
"transparency": "0.8"
to the file, then that would be silently ignored. In the new style, it
instead errors out if the type cannot be converted to a double.
The support for custom default materials is implemented as a JSON
file passed via the command line. The default material specification
will override the defaults, except the toplevel default value.
Similar to --site-local-placement. Motivated by dealing with at least
two examples where IFC files for the same construction site have
inconsistent ObjectPlacement hierarchy:
- MEP models exported from MagiCAD for Revit:
ObjectPlacement.PlacementRelTo of IfcBuilding is empty
- Regular construction models exported from Revit:
ObjectPlacement.PlacementRelTo of IfcBuilding is pointing to
IfcSite's placement
Add a missing "=" to create a valid SVG for ellipses.
I accidentally stumbled upon a way to actually get an ellipse in SVG by
tilting a cylinder. If I tilt the cylinder via the `ObjectPlacement` of
the `IfcProduct` I get an ellipse. If I set the `ExtrudedDirection` of
the `IfcExtrudedAreasolid`, however, I get a sampled path.
Use <circle> and <ellipse> to create a valid SVG for these geometries.
Limit to only the *first* edge. I am not sure whether there are
scenarios with multiple edges like this:
1. One or more straight line pieces or arc segments
2. A full closed circle
3. More straight lines or arc segments
If there is, we are keeping the original behavior here.
For the scenario where we a building storey and it has an elevation:
Instead taking the cross section of every product 1 meter above it's
lowest, take the cross section at storey elevation + 1 meter.
`if(bounding_width)` evaluates to true as long as `bounding_width` is
non-zero (including negative values). Since `bounding_width` and
`bounding_height` are default initialized to -1.0, we were erroneously
setting a bounding rectangle of (-1.0, -1.0) here. This means the SVG
output has been broken/malformed if we didn't specify --bounds.