Merge pull request #7543 from falken10vdl/MEP-ports

Simplified handling of Ports in MEP
Addresses https://community.osarch.org/discussion/comment/27740#Comment_27740
This commit is contained in:
falken10vdl
2026-01-22 09:34:52 +01:00
committed by GitHub
11 changed files with 317 additions and 89 deletions
+4 -5
View File
@@ -153,11 +153,10 @@ class TestAddPort:
def test_run(self, ifc, system):
system.get_ports("element").should_be_called().will_return(["port"])
system.load_ports("element", ["port"]).should_be_called()
system.create_empty_at_cursor_with_element_orientation("element").should_be_called().will_return("obj")
system.run_root_assign_class(
obj="obj", ifc_class="IfcDistributionPort", should_add_representation=False
).should_be_called().will_return("port")
ifc.run("system.assign_port", element="element", port="port").should_be_called()
#system.create_empty_at_cursor_with_element_orientation("element").should_be_called().will_return("obj")
#system.run_root_assign_class(obj="obj", ifc_class="IfcDistributionPort", should_add_representation=False).should_be_called().will_return("port")
system.create_port_at_cursor("element").should_be_called().will_return("port")
system.load_ports("element", ["port"]).should_be_called()
subject.add_port(ifc, system, element="element")
+13
View File
@@ -103,6 +103,19 @@ class TestCreateEmptyAtCursorWithElementOrientation(NewFile):
obj = subject.create_empty_at_cursor_with_element_orientation(element)
assert obj.matrix_world == bpy.context.scene.cursor.matrix
class TestCreatePortAtCursor(NewFile):
def test_run(self):
assert bpy.context.scene
ifc = ifcopenshell.file()
tool.Ifc().set(ifc)
system = ifcopenshell.api.system.add_system(ifc)
element = ifcopenshell.api.root.create_entity(ifc, ifc_class="IfcDuctSegment")
ifcopenshell.api.system.assign_system(ifc, products=[element], system=system)
obj = tool.Ifc.link(element, bpy.data.objects.new("Object", None))
port = subject.create_port_at_cursor(element)
assert port.is_a("IfcDistributionPort")
assert ifcopenshell.util.system.get_ports(element) == [port]
class TestDeleteElementObjects(NewFile):
def test_run(self):