def test_writer(): """Test the Model writer object.""" pts = (Point3D(50, 50, 3), Point3D(60, 50, 3), Point3D(60, 60, 3), Point3D(50, 60, 3)) bldg = Building.from_footprint('TestBldg', [Face3D(pts)], [5, 4, 3, 3], tolerance=0.01) model = Model('TestModel', [bldg]) writers = [mod for mod in dir(model.to) if not mod.startswith('_')] for writer in writers: assert callable(getattr(model.to, writer))
def test_building_init_from_footprint_offset(): """Test Building objects from_footprint with a core/perimater offset.""" pts_1 = (Point3D(10, 10, 0), Point3D(10, 20, 0), Point3D(20, 20, 0), Point3D(20, 10, 0)) building = Building.from_footprint('Office_Tower', [Face3D(pts_1)], [5, 4, 4, 3, 3, 3, 3, 3], perimeter_offset=3) building.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) assert building.identifier == 'Office_Tower' assert building.display_name == 'Office_Tower' assert len(building.unique_stories) == 3 assert len(building.all_stories()) == 8 assert len(building.unique_room_2ds) == 3 * 5 assert len(building.all_room_2ds()) == 8 * 5
def test_building_init_from_footprint(): """Test the initialization of Building objects from_footprint.""" pts_1 = (Point3D(0, 0, 0), Point3D(0, 10, 0), Point3D(10, 10, 0), Point3D(10, 0, 0)) pts_2 = (Point3D(0, 10, 0), Point3D(0, 20, 0), Point3D(10, 20, 0), Point3D(10, 10, 0)) building = Building.from_footprint( 'Office_Tower', [Face3D(pts_1), Face3D(pts_2)], [5, 4, 4, 3, 3, 3, 3, 3]) building.set_outdoor_window_parameters(SimpleWindowRatio(0.4)) assert building.identifier == 'Office_Tower' assert building.display_name == 'Office_Tower' assert len(building.unique_stories) == 3 assert len(building.all_stories()) == 8 assert len(building.unique_room_2ds) == 6 assert len(building.all_room_2ds()) == 16
perim_offset_ = 0 if perim_offset_ is None else perim_offset_ buildings = [] # list of buildings that will be returned for i, geo in enumerate(_footprint_geo): # get the name for the Building if len(_name_) == 0: # make a default Building name display_name = 'Building_{}'.format(document_counter('bldg_count')) name = clean_and_id_string(display_name) else: display_name = '{}_{}'.format(longest_list(_name_, i), i + 1) \ if len(_name_) != len(_footprint_geo) else longest_list(_name_, i) name = clean_string(display_name) # create the Building building = Building.from_footprint( name, footprint=to_face3d(geo), floor_to_floor_heights=_floor_to_floor, 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):