def test_group_by_orientation(): """Test the group_by_orientation method.""" pts_1 = (Point3D(0, 0), Point3D(15, 0), Point3D(10, 5), Point3D(5, 5)) pts_2 = (Point3D(15, 0), Point3D(15, 15), Point3D(10, 10), Point3D(10, 5)) pts_3 = (Point3D(0, 15), Point3D(5, 10), Point3D(10, 10), Point3D(15, 15)) pts_4 = (Point3D(0, 0), Point3D(5, 5), Point3D(5, 10), Point3D(0, 15)) pts_5 = (Point3D(5, 5), Point3D(10, 5), Point3D(10, 10), Point3D(5, 10)) pf_1 = Polyface3D.from_offset_face(Face3D(pts_1), 3) pf_2 = Polyface3D.from_offset_face(Face3D(pts_2), 3) pf_3 = Polyface3D.from_offset_face(Face3D(pts_3), 3) pf_4 = Polyface3D.from_offset_face(Face3D(pts_4), 3) pf_5 = Polyface3D.from_offset_face(Face3D(pts_5), 3) room_1 = Room.from_polyface3d('Zone1', pf_1) room_2 = Room.from_polyface3d('Zone2', pf_2) room_3 = Room.from_polyface3d('Zone3', pf_3) room_4 = Room.from_polyface3d('Zone4', pf_4) room_5 = Room.from_polyface3d('Zone5', pf_5) rooms = [room_1, room_2, room_3, room_4, room_5] adj_info = Room.solve_adjacency(rooms, 0.01) grouped_rooms, core_rooms, orientations = Room.group_by_orientation(rooms) assert len(grouped_rooms) == 4 assert len(core_rooms) == 1 assert orientations == [0.0, 90.0, 180.0, 270.0]
except ImportError as e: raise ImportError('\nFailed to import ladybug_rhino:\n\t{}'.format(e)) import math if all_required_inputs(ghenv.Component): # extract any rooms from input Models in_rooms = [] for hb_obj in _rooms: if isinstance(hb_obj, Model): in_rooms.extend(hb_obj.rooms) else: in_rooms.append(hb_obj) # process the north_ input if north_ is not None: try: north_vec = to_vector2d(north_) except AttributeError: # north angle instead of vector north_vec = Vector2D(0, 1).rotate(-math.radians(float(north_))) else: north_vec = Vector2D(0, 1) # group the rooms by orientation perim_rooms, core_rooms, orientations, = \ Room.group_by_orientation(in_rooms, n_groups_, north_vec) # convert list of lists to data tree perim_rooms = list_to_data_tree(perim_rooms)