Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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):