示例#1
0
def test_one_liner(doc):
    layout = doc.blocks.new('test_one_liner')
    text = "OneLine"
    mtext = MText(text, (0., 0., 0.))
    mtext.render(layout)
    assert len(layout) == 1
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[0].dxf.align_point == (0, 0, 0)
    assert lines[0].dxf.valign == MText.TOP
    assert lines[0].dxf.halign == MText.LEFT
示例#2
0
def test_horiz_middle(doc):
    layout = doc.blocks.new('test_horiz_middle')
    text = "lineA\nlineB"
    mtext = MText(text, (0., 0., 0.), 1.0, align='MIDDLE_LEFT')
    mtext.render(layout)
    assert len(layout) == 2
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[1].dxftype() == 'TEXT'
    assert lines[0].dxf.text == 'lineA'
    assert lines[1].dxf.text == 'lineB'
    assert lines[0].dxf.align_point == (0, .5, 0)
    assert lines[1].dxf.align_point == (0, -.5, 0)
    assert lines[0].dxf.valign == MText.MIDDLE
    assert lines[0].dxf.halign == MText.LEFT
示例#3
0
def test_horiz_bottom(doc):
    layout = doc.blocks.new('test_horiz_bottom')
    text = "lineA\nlineB"
    mtext = MText(text, (0., 0., 0.), 1.0, align='BOTTOM_LEFT')
    mtext.render(layout)
    assert len(layout) == 2
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[1].dxftype() == 'TEXT'
    assert lines[0].dxf.text == 'lineA'
    assert lines[1].dxf.text == 'lineB'
    assert lines[0].dxf.align_point == (0, 1, 0)
    assert lines[1].dxf.align_point == (0, 0, 0)
    assert lines[0].dxf.valign == MText.BOTTOM
    assert lines[0].dxf.halign == MText.LEFT
示例#4
0
def test_horiz_top(doc):
    layout = doc.blocks.new('test_horiz_top')
    text = "lineA\nlineB"
    mtext = MText(text, (0., 0., 0.), 1.0)
    mtext.render(layout)
    assert len(layout) == 2
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[1].dxftype() == 'TEXT'
    assert lines[0].dxf.text == 'lineA'
    assert lines[1].dxf.text == 'lineB'
    assert lines[0].dxf.align_point == (0, 0, 0)
    assert lines[1].dxf.align_point == (0, -1, 0)
    assert lines[0].dxf.valign == MText.TOP
    assert lines[0].dxf.halign == MText.LEFT
示例#5
0
def test_horiz_middle(doc):
    layout = doc.blocks.new("test_horiz_middle")
    text = "lineA\nlineB"
    mtext = MText(text, (0.0, 0.0, 0.0), 1.0, align="MIDDLE_LEFT")
    mtext.render(layout)
    assert len(layout) == 2
    lines = list(layout)
    assert lines[0].dxftype() == "TEXT"
    assert lines[1].dxftype() == "TEXT"
    assert lines[0].dxf.text == "lineA"
    assert lines[1].dxf.text == "lineB"
    assert lines[0].dxf.align_point == (0, 0.5, 0)
    assert lines[1].dxf.align_point == (0, -0.5, 0)
    assert lines[0].dxf.valign == MText.MIDDLE
    assert lines[0].dxf.halign == MText.LEFT
示例#6
0
def test_horiz_bottom(doc):
    layout = doc.blocks.new("test_horiz_bottom")
    text = "lineA\nlineB"
    mtext = MText(text, (0.0, 0.0, 0.0), 1.0, align="BOTTOM_LEFT")
    mtext.render(layout)
    assert len(layout) == 2
    lines = list(layout)
    assert lines[0].dxftype() == "TEXT"
    assert lines[1].dxftype() == "TEXT"
    assert lines[0].dxf.text == "lineA"
    assert lines[1].dxf.text == "lineB"
    assert lines[0].dxf.align_point == (0, 1, 0)
    assert lines[1].dxf.align_point == (0, 0, 0)
    assert lines[0].dxf.valign == MText.BOTTOM
    assert lines[0].dxf.halign == MText.LEFT
示例#7
0
def textblock(text, x, y, rot, color=3, mirror=0):
    attribs = {'color': color}
    msp.add_line((x + 50, y), (x + 50, y + 50), dxfattribs=attribs)
    msp.add_line((x + 100, y), (x + 100, y + 50), dxfattribs=attribs)
    msp.add_line((x + 150, y), (x + 150, y + 50), dxfattribs=attribs)

    msp.add_line((x + 50, y), (x + 150, y), dxfattribs=attribs)
    render(MText(text, (x + 50, y), mirror=mirror, rotation=rot))
    render(
        MText(text, (x + 100, y),
              mirror=mirror,
              rotation=rot,
              align='TOP_CENTER'))
    render(
        MText(text, (x + 150, y),
              mirror=mirror,
              rotation=rot,
              align='TOP_RIGHT'))

    msp.add_line((x + 50, y + 25), (x + 150, y + 25), dxfattribs=attribs)
    render(
        MText(text, (x + 50, y + 25),
              mirror=mirror,
              rotation=rot,
              align='MIDDLE_LEFT'))
    render(
        MText(text, (x + 100, y + 25),
              mirror=mirror,
              rotation=rot,
              align='MIDDLE_CENTER'))
    render(
        MText(text, (x + 150, y + 25),
              mirror=mirror,
              rotation=rot,
              align='MIDDLE_RIGHT'))

    msp.add_line((x + 50, y + 50), (x + 150, y + 50), dxfattribs=attribs)
    render(
        MText(text, (x + 50, y + 50),
              mirror=mirror,
              align='BOTTOM_LEFT',
              rotation=rot))
    render(
        MText(text, (x + 100, y + 50),
              mirror=mirror,
              align='BOTTOM_CENTER',
              rotation=rot))
    render(
        MText(text, (x + 150, y + 50),
              mirror=mirror,
              align='BOTTOM_RIGHT',
              rotation=rot))
示例#8
0
def rotate_text(text, insert, parts=16, color=3):
    delta = 360. / parts
    for part in range(parts):
        render(
            MText(text,
                  insert,
                  rotation=(delta * part),
                  color=color,
                  align='TOP_LEFT'))
示例#9
0
def test_45deg_bottom(doc):
    layout = doc.blocks.new('test_45deg_bottom')
    text = "lineA\nlineB\nlineC"
    mtext = MText(text, (0., 0., 0.), 1.0, align='BOTTOM_LEFT', rotation=45)
    mtext.render(layout)
    assert len(layout) == 3
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[1].dxftype() == 'TEXT'
    assert lines[2].dxftype() == 'TEXT'
    assert lines[0].dxf.text == 'lineA'
    assert lines[1].dxf.text == 'lineB'
    assert lines[2].dxf.text == 'lineC'
    assert lines[0].dxf.align_point == (-1.414214, 1.414214, 0)
    assert lines[1].dxf.align_point == (-0.707107, 0.707107, 0)
    assert lines[2].dxf.align_point == (0, 0, 0)
    assert lines[0].dxf.rotation == 45
    assert lines[0].dxf.valign == MText.BOTTOM
    assert lines[0].dxf.halign == MText.LEFT
示例#10
0
def test_45deg_top(doc):
    layout = doc.blocks.new("test_45deg_top")
    text = "lineA\nlineB\nlineC"
    mtext = MText(text, (0.0, 0.0, 0.0), 1.0, align="TOP_LEFT", rotation=45)
    mtext.render(layout)
    assert len(layout) == 3
    lines = list(layout)
    assert lines[0].dxftype() == "TEXT"
    assert lines[1].dxftype() == "TEXT"
    assert lines[2].dxftype() == "TEXT"
    assert lines[0].dxf.text == "lineA"
    assert lines[1].dxf.text == "lineB"
    assert lines[2].dxf.text == "lineC"
    assert lines[0].dxf.align_point == (0, 0, 0)
    assert lines[1].dxf.align_point == (0.707107, -0.707107, 0)
    assert lines[2].dxf.align_point == (1.414214, -1.414214, 0)
    assert lines[0].dxf.rotation == 45
    assert lines[0].dxf.valign == MText.TOP
    assert lines[0].dxf.halign == MText.LEFT
示例#11
0
def test_45deg_top(dxf):
    layout = dxf.blocks.new('test_45deg_top')
    text = "lineA\nlineB\nlineC"
    mtext = MText(text, (0., 0., 0.), 1.0, align='TOP_LEFT', rotation=45)
    mtext.render(layout)
    assert len(layout) == 3
    lines = list(layout)
    assert lines[0].dxftype() == 'TEXT'
    assert lines[1].dxftype() == 'TEXT'
    assert lines[2].dxftype() == 'TEXT'
    assert lines[0].dxf.text == 'lineA'
    assert lines[1].dxf.text == 'lineB'
    assert lines[2].dxf.text == 'lineC'
    assert lines[0].dxf.align_point == (0, 0, 0)
    assert lines[1].dxf.align_point == (0.707107, -0.707107, 0)
    assert lines[2].dxf.align_point == (1.414214, -1.414214, 0)
    assert lines[0].dxf.rotation == 45
    assert lines[0].dxf.valign == MText.TOP
    assert lines[0].dxf.halign == MText.LEFT
示例#12
0
def test_set_attribute_by_subscript():
    mtext = MText("Test\nTest", (0, 0))
    mtext['layer'] = "modified"
    assert mtext.layer == "modified"
示例#13
0
def test_get_attribute_by_subscript():
    mtext = MText("Test\nTest", (0, 0))
    layer = mtext['layer']
    assert layer == mtext.layer
示例#14
0
def textblock(text, x, y, rot, color=3, mirror=0):
    attribs = {"color": color}
    msp.add_line((x + 50, y), (x + 50, y + 50), dxfattribs=attribs)
    msp.add_line((x + 100, y), (x + 100, y + 50), dxfattribs=attribs)
    msp.add_line((x + 150, y), (x + 150, y + 50), dxfattribs=attribs)

    msp.add_line((x + 50, y), (x + 150, y), dxfattribs=attribs)
    render(MText(text, (x + 50, y), mirror=mirror, rotation=rot))
    render(
        MText(text, (x + 100, y),
              mirror=mirror,
              rotation=rot,
              align="TOP_CENTER"))
    render(
        MText(text, (x + 150, y),
              mirror=mirror,
              rotation=rot,
              align="TOP_RIGHT"))

    msp.add_line((x + 50, y + 25), (x + 150, y + 25), dxfattribs=attribs)
    render(
        MText(
            text,
            (x + 50, y + 25),
            mirror=mirror,
            rotation=rot,
            align="MIDDLE_LEFT",
        ))
    render(
        MText(
            text,
            (x + 100, y + 25),
            mirror=mirror,
            rotation=rot,
            align="MIDDLE_CENTER",
        ))
    render(
        MText(
            text,
            (x + 150, y + 25),
            mirror=mirror,
            rotation=rot,
            align="MIDDLE_RIGHT",
        ))

    msp.add_line((x + 50, y + 50), (x + 150, y + 50), dxfattribs=attribs)
    render(
        MText(
            text,
            (x + 50, y + 50),
            mirror=mirror,
            align="BOTTOM_LEFT",
            rotation=rot,
        ))
    render(
        MText(
            text,
            (x + 100, y + 50),
            mirror=mirror,
            align="BOTTOM_CENTER",
            rotation=rot,
        ))
    render(
        MText(
            text,
            (x + 150, y + 50),
            mirror=mirror,
            align="BOTTOM_RIGHT",
            rotation=rot,
        ))