def test_building_init_from_all_story_geometry_offset(): """Test Building objects from_all_story_geometry with a core/perimater offset.""" pts_1 = (Point3D(0, 0, 0), Point3D(0, 10, 0), Point3D(10, 10, 0), Point3D(10, 0, 0)) pts_2 = (Point3D(0, 0, 4), Point3D(0, 10, 4), Point3D(10, 10, 4), Point3D(10, 0, 4)) pts_3 = (Point3D(0, 0, 8), Point3D(0, 10, 8), Point3D(5, 10, 8), Point3D(5, 0, 8)) pts_4 = (Point3D(0, 0, 11), Point3D(0, 10, 11), Point3D(5, 10, 11), Point3D(5, 0, 11)) story_geo = [[Face3D(pts_1)], [Face3D(pts_2)], [Face3D(pts_3)], [Face3D(pts_4)]] building = Building.from_all_story_geometry('Office_Tower', story_geo, [4, 4, 3, 3], perimeter_offset=3, tolerance=0.01) building.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) assert building.identifier == 'Office_Tower' assert building.display_name == 'Office_Tower' assert len(building.unique_stories) == 2 assert len(building.all_stories()) == 4 assert len(building.unique_room_2ds) == 9 assert len(building.all_room_2ds()) == 2 * 5 + 2 * 4
min, max = geo_min_max_height(geo) floor_heights, interpreted_f2f = interpret_floor_height_subdivide( _floor_to_floor, max, min) # get the floor geometries of the building floor_breps = split_solid_to_floors(geo, floor_heights) floor_faces = [] for flr in floor_breps: story_faces = [] for rm_face in flr: story_faces.extend(to_face3d(rm_face)) floor_faces.append(story_faces) # create the Building building = Building.from_all_story_geometry( name, floor_faces, floor_to_floor_heights=interpreted_f2f, perimeter_offset=perim_offset_, tolerance=tolerance) building.display_name = display_name # assign the program if len(_program_) != 0: program = longest_list(_program_, i) if isinstance(program, str): program = program_type_by_identifier(program) building.properties.energy.set_all_room_2d_program_type(program) else: # generic office program by default try: building.properties.energy.set_all_room_2d_program_type(office_program) except (NameError, AttributeError): pass # honeybee-energy is not installed