示例#1
0
def test_square_face():
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((1, 0), 0, 0)
    face = list(t.faces())[0]
    assert face[0].isclose(Vec2(0, +0.5))
    assert face[1].isclose(Vec2(0, -0.5))
    assert face[2].isclose(Vec2(1, -0.5))
    assert face[3].isclose(Vec2(1, +0.5))
示例#2
0
def test_virtual_entities_added_to_entity_database():
    doc = ezdxf.new()
    msp = doc.modelspace()
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((1, 0), 0, 0)

    dxfattribs = {"layer": "TEST"}
    solid = list(t.virtual_entities("SOLID", dxfattribs, doc))[0]
    assert solid.DXFTYPE == "SOLID"
    assert solid.dxf.layer == "TEST"
    assert solid.dxf.handle in doc.entitydb
    msp.add_entity(solid)

    trace = list(t.virtual_entities("TRACE", dxfattribs, doc))[0]
    assert trace.DXFTYPE == "TRACE"
    assert trace.dxf.layer == "TEST"
    assert trace.dxf.handle in doc.entitydb
    msp.add_entity(trace)

    face = list(t.virtual_entities("3DFACE", dxfattribs, doc))[0]
    assert face.DXFTYPE == "3DFACE"
    assert face.dxf.layer == "TEST"
    assert face.dxf.handle in doc.entitydb
    msp.add_entity(face)

    assert len(msp) == 3
示例#3
0
def test_virtual_entities_added_to_entity_database():
    doc = ezdxf.new()
    msp = doc.modelspace()
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((1, 0), 0, 0)

    dxfattribs = {'layer': 'TEST'}
    solid = list(t.virtual_entities('SOLID', dxfattribs, doc))[0]
    assert solid.DXFTYPE == 'SOLID'
    assert solid.dxf.layer == 'TEST'
    assert solid.dxf.handle in doc.entitydb
    msp.add_entity(solid)

    trace = list(t.virtual_entities('TRACE', dxfattribs, doc))[0]
    assert trace.DXFTYPE == 'TRACE'
    assert trace.dxf.layer == 'TEST'
    assert trace.dxf.handle in doc.entitydb
    msp.add_entity(trace)

    face = list(t.virtual_entities('3DFACE', dxfattribs, doc))[0]
    assert face.DXFTYPE == '3DFACE'
    assert face.dxf.layer == 'TEST'
    assert face.dxf.handle in doc.entitydb
    msp.add_entity(face)

    assert len(msp) == 3
示例#4
0
def test_closed_linear_path():
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((1, 0), 1, 1)
    t.add_station((1, 1), 1, 1)
    t.add_station((0, 1), 1, 1)
    t.add_station((0, 0), 1, 1)
    faces = list(t.faces())
    assert len(faces) == 4
    assert faces[0] == (Vec2(0.5, 0.5), Vec2(-0.5,
                                             -0.5), Vec2(1.5,
                                                         -0.5), Vec2(0.5, 0.5))
    assert faces[3] == (Vec2(0.5, 0.5), Vec2(-0.5,
                                             1.5), Vec2(-0.5,
                                                        -0.5), Vec2(0.5, 0.5))
示例#5
0
def test_linear_trace_polygon():
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((2, 0), 1, 1)
    t.add_station((4, 0), 1, 1)
    polygon = t.polygon()
    assert len(polygon) == 6
    assert polygon[0].isclose(Vec2(0, -0.5))
    assert polygon[-1].isclose(Vec2(0, +0.5))
示例#6
0
def test_nearly_vertical_parallel_lines_in_linear_trace_builder():
    width = 30
    trace = LinearTrace()
    trace.add_station((0, 100), width, width)
    trace.add_station((0, 100_000), width, width)
    trace.add_station((0.001, 0), width, width)
    bbox = BoundingBox()
    for face in trace.faces():
        bbox.extend(face)
    assert bbox.extmin.y > -100
示例#7
0
def test_two_angled_faces():
    t = LinearTrace()
    t.add_station((0, 0), 1, 0.5)
    t.add_station((2, 0), 1, 1)
    t.add_station((4, 2), 1, 1)
    face1, face2 = list(t.faces())
    assert face1[0].isclose(Vec2(0, +0.5))
    assert face1[1].isclose(Vec2(0, -0.5))
    assert face1[2].isclose(Vec2(2.5224077499274835, -0.18469903125906456))
    assert face1[3].isclose(Vec2(1.5936828611675133, 0.3007896423540608))
    assert face2[2].isclose(Vec2(4.353553390593274, 1.6464466094067263))
    assert face2[3].isclose(Vec2(3.646446609406726, 2.353553390593274))
示例#8
0
def test_two_straight_faces():
    t = LinearTrace()
    t.add_station((0, 0), 1, 1)
    t.add_station((2, 0), 1, 1)
    t.add_station((4, 0), 1, 1)
    face1, face2 = list(t.faces())
    assert face1[0].isclose(Vec2(0, +0.5))
    assert face1[1].isclose(Vec2(0, -0.5))
    assert face1[2].isclose(Vec2(2, -0.5))
    assert face1[3].isclose(Vec2(2, +0.5))
    assert face2[0].isclose(Vec2(2, +0.5))
    assert face2[1].isclose(Vec2(2, -0.5))
    assert face2[2].isclose(Vec2(4, -0.5))
    assert face2[3].isclose(Vec2(4, +0.5))
示例#9
0
def test_add_station_2d():
    t = LinearTrace()
    t.add_station((0, 0), 1, 2)
    assert len(t) == 1
    assert t[0].vertex == (0, 0)
    assert t[0].start_width == 1
    assert t[0].end_width == 2
    t.add_station((1, 0), 1)
    assert len(t) == 2
    assert t[1].vertex == (1, 0)
    assert t[1].start_width == 1
    assert t[1].end_width == 1
示例#10
0
def test_add_station_3d():
    # z-axis is ignored
    t = LinearTrace()
    t.add_station((0, 0, 0), 1, 2)
    assert t[0].vertex == (0, 0)