Rework settings and update to IfcOpenShell v0.8
There have been changes to the way how IfcOpenShell handles settings from v0.8 on. The rework might also consider new settings such as "permissive extrusions" (allows extrusions depths of zero or less). Parallel adjustments might need to be made on the geometry server side in IfcOpenShell itself.
See https://github.com/IfcOpenShell/IfcOpenShell/issues/1490#issuecomment-2306598309 for reference.
Maybe the settings could also be handled dynamically, but then it needs some thought how compatibilty between versions is going to be handled and how settings should be maintained in the BIMserver database while allowing for the IfcOpenShell version to be switched.
There have been changes already from v0.6.0 to v0.7.0.
In v0.6.0 we have setting IDs as follows:
SEW_SHELLS = 1 << 4,
DISABLE_OPENING_SUBTRACTIONS = 1 << 6,
APPLY_LAYERSETS = 1 << 13,
In v0.7.0 due to the removal of the FASTER_BOOLEAN setting, there is:
SEW_SHELLS = 1 << 4,
DISABLE_OPENING_SUBTRACTIONS = 1 << 5,
APPLY_LAYERSETS = 1 << 12,
Even though I don't know if this accounts for all 0.7.0 builds, to handle this change, we can only make a distinction on the basis of the version that the geom server announces during the HELLO handshake. It may be that some earlier 0.7.0 builds will fail with this, but the later ones should work. It is a pity that there is no semantic versioning on the minor number. Commit SHAs are not consecutive, we would have to enumerate the SHAs of the builds in order to distinguish the builds before and after the FASTER_BOOLEAN removal.
Yeah... sorry bout that. In 0.8 settings are identified by string so wouldn't affect us like that anymore in the future.