An invalid pset can occur when the pset doesn't contain any properties. This can happen when all properties are not part of the pset definition template. This may lead to unwanted data loss, but strictly enforces buildingSMART pset definitions.
Fix for objects where material index > material slots
Keep material indexes in material slots range (index % slots is blender default behavior)
Fallback to a minimal slot count to 1 for objects without material slots
We don't use foreach_set, since for some reason doing it with foreach_set requires edit mode to be toggled for the edges to be visible. We make the assumption that an object is either edge based or face based, but not both.
* When there is only one material slot, there is no need to assign materials as the slot becomes the default
* Don't loop through collections to find the collection you need, we now store aggregate collcetions
* The project collection is not added to the scene collection until the very end. Apparently linking objects to collections when the collection is enabled in the view_layer causes it to be twice as slow. Therefore all view layer operations happen at the end.
* Don't print the progress bar, as excessive prints and calls to the iterator.progress() makes it very, very slow. Like, so slow you wouldn't even wait for the file to finish you'd just give up. See #895.
* Only create materials once per mesh. Nobody seems to be using styled items properly as an object override anyways.
* Use foreach_set to create meshes instead of mesh.from_pydata. This is much faster.
* Similarly use foreach_set to set material indexes. This leads to a crazy speed increase on big meshes.
* New user option to enable native element processing
* Native element geometry will be substituted with dummy geometry so that the iterator doesn't waste time on it
* IfcArbitraryClosedProfileDef and IfcRectangleProfileDef are supported for IfcExtrudedAreaSolid
* Old rebar code full of assumptiosn deleted for a more globally applicable native support for IfcSweptDiskSolid
* Probably created a whole bunch of new useful utility functions in the process, which can contribute to #829