mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-06 04:16:25 +00:00
Resize object to storey now works for a variable number of storeys
This commit is contained in:
@@ -33,7 +33,7 @@ Scenario: Resize to storey
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And the variable "storey" is "tool.Ifc.get().by_type('IfcBuildingStorey')[0].id()"
|
||||
And I press "bim.assign_container(structure={storey})"
|
||||
When I press "bim.resize_to_storey"
|
||||
When I press "bim.resize_to_storey(total_storeys=1)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Split along edge
|
||||
|
||||
@@ -24,21 +24,21 @@ class TestResizeToStorey:
|
||||
def test_run(self, misc):
|
||||
misc.get_object_storey("obj").should_be_called().will_return("storey")
|
||||
misc.get_storey_elevation_in_si("storey").should_be_called().will_return("elevation")
|
||||
misc.get_storey_height_in_si("storey").should_be_called().will_return("height")
|
||||
misc.get_storey_height_in_si("storey", 1).should_be_called().will_return("height")
|
||||
misc.set_object_origin_to_bottom("obj").should_be_called()
|
||||
misc.move_object_to_elevation("obj", "elevation").should_be_called()
|
||||
misc.scale_object_to_height("obj", "height").should_be_called()
|
||||
misc.mark_object_as_edited("obj").should_be_called()
|
||||
subject.resize_to_storey(misc, obj="obj")
|
||||
subject.resize_to_storey(misc, obj="obj", total_storeys=1)
|
||||
|
||||
def test_doing_nothing_when_the_object_has_no_storey(self, misc):
|
||||
misc.get_object_storey("obj").should_be_called().will_return(None)
|
||||
subject.resize_to_storey(misc, obj="obj")
|
||||
subject.resize_to_storey(misc, obj="obj", total_storeys=1)
|
||||
|
||||
def test_doing_nothing_when_the_storey_has_no_height(self, misc):
|
||||
misc.get_object_storey("obj").should_be_called().will_return("storey")
|
||||
misc.get_storey_height_in_si("storey").should_be_called().will_return(None)
|
||||
subject.resize_to_storey(misc, obj="obj")
|
||||
misc.get_storey_height_in_si("storey", 1).should_be_called().will_return(None)
|
||||
subject.resize_to_storey(misc, obj="obj", total_storeys=1)
|
||||
|
||||
|
||||
class TestSplitAlongEdge:
|
||||
|
||||
@@ -88,7 +88,25 @@ class TestGetStoreyHeight(test.bim.bootstrap.NewFile):
|
||||
storey2.Elevation = 5000
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey, relating_object=building)
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey2, relating_object=building)
|
||||
assert subject.get_storey_height_in_si(storey) == 2.0
|
||||
assert subject.get_storey_height_in_si(storey, 1) == 2.0
|
||||
|
||||
def test_getting_a_double_storey_height(self):
|
||||
ifc = ifcopenshell.file()
|
||||
ifc.createIfcProject()
|
||||
unit = ifcopenshell.api.run("unit.add_si_unit", ifc, prefix="MILLI")
|
||||
ifcopenshell.api.run("unit.assign_unit", ifc, units=[unit])
|
||||
tool.Ifc.set(ifc)
|
||||
building = ifc.createIfcBuilding()
|
||||
storey = ifc.createIfcBuildingStorey()
|
||||
storey.Elevation = 3000
|
||||
storey2 = ifc.createIfcBuildingStorey()
|
||||
storey2.Elevation = 5000
|
||||
storey3 = ifc.createIfcBuildingStorey()
|
||||
storey3.Elevation = 9000
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey, relating_object=building)
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey2, relating_object=building)
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey3, relating_object=building)
|
||||
assert subject.get_storey_height_in_si(storey, 2) == 6.0
|
||||
|
||||
def test_only_considering_storeys_in_the_same_building(self):
|
||||
ifc = ifcopenshell.file()
|
||||
@@ -99,7 +117,7 @@ class TestGetStoreyHeight(test.bim.bootstrap.NewFile):
|
||||
storey2 = ifc.createIfcBuildingStorey()
|
||||
storey2.Elevation = 5000
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey, relating_object=building)
|
||||
assert subject.get_storey_height_in_si(storey) is None
|
||||
assert subject.get_storey_height_in_si(storey, 1) is None
|
||||
|
||||
def test_returning_none_if_the_storey_height_is_undefined(self):
|
||||
ifc = ifcopenshell.file()
|
||||
@@ -107,7 +125,7 @@ class TestGetStoreyHeight(test.bim.bootstrap.NewFile):
|
||||
building = ifc.createIfcBuilding()
|
||||
storey = ifc.createIfcBuildingStorey()
|
||||
ifcopenshell.api.run("aggregate.assign_object", ifc, product=storey, relating_object=building)
|
||||
assert subject.get_storey_height_in_si(storey) is None
|
||||
assert subject.get_storey_height_in_si(storey, 1) is None
|
||||
|
||||
|
||||
class TestSetObjectOriginToBottom(test.bim.bootstrap.NewFile):
|
||||
|
||||
Reference in New Issue
Block a user