diff --git a/src/bonsai/bonsai/bim/module/system/__init__.py b/src/bonsai/bonsai/bim/module/system/__init__.py index 4c805f282d..f44270cbe8 100644 --- a/src/bonsai/bonsai/bim/module/system/__init__.py +++ b/src/bonsai/bonsai/bim/module/system/__init__.py @@ -45,7 +45,6 @@ classes = ( operator.RemoveZone, operator.SelectSystemProducts, operator.SetFlowDirection, - operator.ShowPortFlowError, operator.ShowPorts, operator.UnassignSystem, operator.UnloadZones, diff --git a/src/bonsai/bonsai/bim/module/system/operator.py b/src/bonsai/bonsai/bim/module/system/operator.py index 9084f1a6b8..80c15e9799 100644 --- a/src/bonsai/bonsai/bim/module/system/operator.py +++ b/src/bonsai/bonsai/bim/module/system/operator.py @@ -451,28 +451,23 @@ class CycleFlowDirection(bpy.types.Operator, tool.Ifc.Operator): tool.Ifc.run("attribute.edit_attributes", product=port, attributes={"FlowDirection": next_direction}) + connected_port = tool.System.get_connected_port(port) + if connected_port: + # Map flow direction to connected port's complementary direction + connected_direction_map = { + "SOURCE": "SINK", + "SINK": "SOURCE", + "SOURCEANDSINK": "SOURCEANDSINK", + "NOTDEFINED": "NOTDEFINED" + } + connected_direction = connected_direction_map.get(next_direction, "NOTDEFINED") + tool.Ifc.run("attribute.edit_attributes", product=connected_port, attributes={"FlowDirection": connected_direction}) + PortData.is_loaded = False return {"FINISHED"} -class ShowPortFlowError(bpy.types.Operator): - bl_idname = "bim.show_port_flow_error" - bl_label = "" - bl_options = {"REGISTER"} - port_flow: bpy.props.StringProperty() - connected_flow: bpy.props.StringProperty() - - @classmethod - def description(cls, context, operator): - if operator.port_flow and operator.connected_flow: - return f"Semantic error: Incompatible flow directions ({operator.port_flow} connected to {operator.connected_flow})" - return "Semantic error: Incompatible flow directions" - - def execute(self, context): - return {"FINISHED"} - - class LoadZones(bpy.types.Operator): bl_idname = "bim.load_zones" bl_label = "Load Zones" diff --git a/src/bonsai/bonsai/bim/module/system/ui.py b/src/bonsai/bonsai/bim/module/system/ui.py index 3574f95469..24907f8650 100644 --- a/src/bonsai/bonsai/bim/module/system/ui.py +++ b/src/bonsai/bonsai/bim/module/system/ui.py @@ -168,7 +168,7 @@ class BIM_PT_ports(Panel): row.label(text="Ports located on object and connected Port/Objects:") row = self.layout.row(align=True) - cols = [row.column(align=True) for i in range(10)] + cols = [row.column(align=True) for i in range(9)] for port_data in PortData.data["located_ports_data"]: flow_direction_icon = FLOW_DIRECTION_TO_ICON[port_data["FlowDirection"] or "NOTDEFINED"] @@ -210,19 +210,6 @@ class BIM_PT_ports(Panel): ifc_id = tool.Blender.get_ifc_definition_id(connected_obj) cols[7].operator("bim.select_entity", text="", icon="RESTRICT_SELECT_OFF").ifc_id = ifc_id cols[8].label(text=port_data["connected_obj_name"]) - - if connected_port: - port_flow = port.FlowDirection or "NOTDEFINED" - connected_flow = connected_port.FlowDirection or "NOTDEFINED" - if (port_flow == "SOURCE" and connected_flow == "SOURCE") or \ - (port_flow == "SINK" and connected_flow == "SINK"): - op = cols[9].operator("bim.show_port_flow_error", text="", icon="ERROR", emboss=False) - op.port_flow = port_flow - op.connected_flow = connected_flow - else: - cols[9].label(text="", icon="BLANK1") - else: - cols[9].label(text="", icon="BLANK1") else: cols[4].label(text="", icon="BLANK1") cols[5].label(text="", icon="BLANK1") @@ -230,7 +217,6 @@ class BIM_PT_ports(Panel): cols[6].prop(props, "related_port_object", text="") cols[7].label(text="", icon="BLANK1") cols[8].label(text="Port is disconnected") - cols[9].label(text="", icon="BLANK1") class BIM_PT_port(Panel): @@ -277,7 +263,7 @@ class BIM_PT_port(Panel): props = tool.System.get_system_props() row = layout.row(align=True) - cols = [row.column(align=True) for i in range(10)] + cols = [row.column(align=True) for i in range(9)] flow_direction_icon = FLOW_DIRECTION_TO_ICON[element.FlowDirection or "NOTDEFINED"] connected_port = tool.System.get_connected_port(element) @@ -311,16 +297,6 @@ class BIM_PT_port(Panel): else: cols[7].label(text="", icon="BLANK1") cols[8].label(text="") - - port_flow = element.FlowDirection or "NOTDEFINED" - connected_flow = connected_port.FlowDirection or "NOTDEFINED" - if (port_flow == "SOURCE" and connected_flow == "SOURCE") or \ - (port_flow == "SINK" and connected_flow == "SINK"): - op = cols[9].operator("bim.show_port_flow_error", text="", icon="ERROR", emboss=False) - op.port_flow = port_flow - op.connected_flow = connected_flow - else: - cols[9].label(text="", icon="BLANK1") else: cols[4].label(text="", icon="BLANK1") cols[5].label(text="", icon="BLANK1") @@ -328,7 +304,6 @@ class BIM_PT_port(Panel): cols[6].prop(props, "related_port_object", text="") cols[7].label(text="", icon="BLANK1") cols[8].label(text="Port is disconnected") - cols[9].label(text="", icon="BLANK1") class BIM_PT_flow_controls(Panel):