From 6226aea3c35d33c2c24fb12db58111952d8ce7e7 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 24 Aug 2023 18:18:31 +0500 Subject: [PATCH] Fixed bug adding ports to the transitions between profiles with an offset end port ended up located without the offset --- src/blenderbim/blenderbim/bim/module/model/mep.py | 2 +- src/blenderbim/blenderbim/tool/system.py | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/model/mep.py b/src/blenderbim/blenderbim/bim/module/model/mep.py index 5d203ad817..75681f9166 100644 --- a/src/blenderbim/blenderbim/bim/module/model/mep.py +++ b/src/blenderbim/blenderbim/bim/module/model/mep.py @@ -801,7 +801,7 @@ class MEPAddTransition(bpy.types.Operator, tool.Ifc.Operator): transition_obj.location = start_segment_extend_point if start_port_match else end_segment_extend_point # add ports and connect them - ports = tool.System.add_ports(transition_obj) + ports = tool.System.add_ports(transition_obj, offset_end_port=profile_offset_ws) if not start_port_match: start_port, end_port = end_port, start_port tool.Ifc.run("system.connect_port", port1=ports[0], port2=start_port, direction="NOTDEFINED") diff --git a/src/blenderbim/blenderbim/tool/system.py b/src/blenderbim/blenderbim/tool/system.py index 3bb15d5cb0..b274ff2929 100644 --- a/src/blenderbim/blenderbim/tool/system.py +++ b/src/blenderbim/blenderbim/tool/system.py @@ -22,12 +22,12 @@ import blenderbim.core.tool import blenderbim.tool as tool from blenderbim.bim import import_ifc import re -from mathutils import Matrix +from mathutils import Matrix, Vector class System(blenderbim.core.tool.System): @classmethod - def add_ports(cls, obj, add_start_port=True, add_end_port=True): + def add_ports(cls, obj, add_start_port=True, add_end_port=True, offset_end_port=None): def add_port(mep_element, matrix): port = tool.Ifc.run("system.add_port", element=mep_element) port.FlowDirection = "NOTDEFINED" @@ -47,7 +47,10 @@ class System(blenderbim.core.tool.System): if add_start_port: ports.append(add_port(mep_element, obj.matrix_world @ Matrix())) if add_end_port: - ports.append(add_port(mep_element, obj.matrix_world @ Matrix.Translation((0, 0, length)))) + m = obj.matrix_world @ Matrix.Translation((0, 0, length)) + if offset_end_port: + m.translation += offset_end_port + ports.append(add_port(mep_element, m)) return ports @classmethod