Basically if current mesh curve is non consequtive we handle it in similar way to b03c4da7b - convert it to curves using Blender and then save them to ifc.
The advantage is that it creates less curves in ifc because mesh method wasn't able to detect separate curves correctly if vertex order was messed up (usually it is) and it would create separate curve for each curve segment.
I've also replaced figuring vertex duplicates with `bmesh.ops.remove_doubles` manually with `bmesh.ops.remove_doubles` and it's now much faster. In some cases because of the manual calculations it was taking too long - in #3233 Ryan mentiones that it freezes blender, it wasn't really freezing Blender but to finish calculations it would take 10 minutes.
It was a bit confusing UX since when you finish editing arbitrary profile path the data is already saved in ifc but you were still in editing profile properties
IfcRelConnectsElements type of connection wasn't handled properly resulting in errors.
Now you should be able to see connections for connected slabs, walls etc - https://i.imgur.com/LpFBKBC.png
Traceback:
Traceback (most recent call last):
File "\blenderbim\bim\module\geometry\ui.py", line 102, in draw
ConnectionsData.load()
File "\blenderbim\bim\module\geometry\data.py", line 100, in load
cls.data = {"connections": cls.connections()}
File "\blenderbim\bim\module\geometry\data.py", line 134, in connections
relating_element_connection_type = rel.RelatingConnectionType
File "\blenderbim\libs\site\packages\ifcopenshell\entity_instance.py", line 171, in __getattr__
raise AttributeError(
AttributeError: entity instance of type 'IFC4.IfcRelConnectsElements' has no attribute 'RelatingConnectionType'
it was assuming it's a slab and was giving errors trying to start editing slab profile
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.6\scripts\addons\blenderbim\bim\module\model\slab.py", line 618, in _execute
if extrusion.Position:
AttributeError: 'NoneType' object has no attribute 'Position'
now we're going to store all texture paths in .ifc as posix to keep them working if .ifc moved from one platform to another
previously it was saving all paths as absolute
Errors:
Traceback (most recent call last):
File "\Blender\3.6\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 20, in poll
if not os.path.isfile(path_ifc):
File "\Blender\3.6\python\lib\genericpath.py", line 30, in isfile
st = os.stat(path)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType
Traceback (most recent call last):
File "\Blender\3.6\scripts\addons\blenderbim\bim\module\ifcgit\operator.py", line 48, in poll
if not os.path.isfile(path_ifc):
File "\Blender\3.6\python\lib\genericpath.py", line 30, in isfile
st = os.stat(path)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType