In IFC2X3 IfcZone is a subtype of IfcGroup but not subtype of IfcSystem (it become one after IFC4), therefore IfcZone wasn't presented anywhere in BBIM UI.
It's a bit confusing though to include IfcZone in systems when it's not actually a IfcSystem but having it in IfcGroups would be confusing too.
It was throwing an error because was failing to write a list to an excel cell, now it's explicitly converting the value to string.
Python: Traceback (most recent call last):
File "\blenderbim\bim\module\fm\operator.py", line 102, in execute
writer.write_xlsx(filepath)
File "\blenderbim\libs\site\packages\ifcfm\__init__.py", line 259, in write_xlsx
cell = worksheet.cell(row=r, column=c, value=col)
File "\blenderbim\libs\site\packages\openpyxl\worksheet\worksheet.py", line 247, in cell
cell.value = value
File "\blenderbim\libs\site\packages\openpyxl\cell\cell.py", line 218, in value
self._bind_value(value)
File "\blenderbim\libs\site\packages\openpyxl\cell\cell.py", line 187, in _bind_value
raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert ['USE TYPE CATALOG'] to Excel
previously it was switching to the first representation that matches the context, so it wasn't possible to switch to the second one if you had more than 1 representation in the same context
using always both element and representation in `geometry.import_representation` so it will import the exact representation and not the first one found by `ifcopenshell.geom.create_shape`
If there are multiple representations in the same subcontext, when it was searching for the representation for some specific subcontext, it would previously always switch to the first representation from the list, now it's going to prioritize the one that's already active.
Currently it allows only to either set all object's booleans to be marked as manual or all of them marked as automatic, can't change some specific boolean.
Short demo - https://imgur.com/a/bczv35N
Also fixed a bug adding boolean when pset is already added and representation type in add_boolean
```
File "\addons\blenderbim\tool\ifc.py", line 201, in execute
IfcStore.execute_ifc_operator(self, context)
File "\addons\blenderbim\bim\ifc.py", line 336, in execute_ifc_operator
result = getattr(operator, "_execute")(context)
File "\addons\blenderbim\bim\module\model\opening.py", line 534, in _execute
data = json.loads(pset["Data"])
File "\addons\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 248, in __getitem__
if key < 0 or key >= len(self):
TypeError: '<' not supported between instances of 'str' and 'int'
```
replaced shapebuilder with general ifcopenshell code in `test_add_boolean` (the only place besides `test_shape_builder` where it was used), that way mathutils dependency in tests is localized only to `test_shape_builder.py`.
added test-safe option to makefile, so github workflow would ignore `test_shape_builder` tests for now and it wouldn't interrupt the entire workflow
The error was
Traceback (most recent call last):
File "\blenderbim\bim\module\model\covering.py", line 64, in poll
return element.is_a("IfcCovering")
AttributeError: 'NoneType' object has no attribute 'is_a'