예제 #1
0
def test_lin_compiler_floats():
    ltype = "A,.25,-.125,.25,-.125,0,-.125"
    result = lin_compiler(ltype)
    assert result == [
        (49, 0.25),
        (49, -0.125),
        (49, 0.25),
        (49, -0.125),
        (49, 0),
        (49, -0.125),
    ]
예제 #2
0
def test_lin_compiler_strings():
    ltype = 'A,.5,-.2,["GAS",STANDARD,S=.1,U=0.0,X=-0.1,Y=-.05],-.25'
    result = lin_compiler(ltype)
    assert result[0] == (49, .5)
    assert result[1] == (49, -.2)
    text = result[2]
    assert text.type == 'TEXT'
    assert text.value == 'GAS'
    assert text.font == 'STANDARD'
    assert text.tags[0] == (46, .1)
    assert text.tags[1] == (50, 0)
    assert text.tags[2] == (44, -0.1)
    assert text.tags[3] == (45, -0.05)
    assert result[3] == (49, -.25)
예제 #3
0
def test_tags_from_complex_shape():
    ltype = 'A,.25,-.1,[132,ltypeshp.shx,x=-.1,s=.1],-.1,1'
    result = lin_compiler(ltype)
    cx_part = result[2]
    assert isinstance(cx_part, ComplexLineTypePart)
    assert cx_part.type == 'SHAPE'
    tags = cx_part.complex_ltype_tags(None)
    assert tags[0] == (74, 4)
    assert tags[1] == (75, 132)  # shape index
    assert tags[2] == (340, 0)  # default handle with a drawing
    assert tags[3] == (46, .1)  # s
    assert tags[4] == (50, 0.)  # r
    assert tags[5] == (44, -.1)  # x
    assert tags[6] == (45, 0.)  # y
예제 #4
0
def test_tags_from_complex_text():
    ltype = 'A,.5,-.2,["GAS",STANDARD,S=.1,U=0.0,X=-0.1,Y=-.05],-.25'
    result = lin_compiler(ltype)
    cx_part = result[2]
    assert isinstance(cx_part, ComplexLineTypePart)
    assert cx_part.type == 'TEXT'
    tags = cx_part.complex_ltype_tags(None)
    assert tags[0] == (74, 2)
    assert tags[1] == (75, 0)
    assert tags[2] == (340, 0)  # default handle without a drawing
    assert tags[3] == (46, .1)  # s
    assert tags[4] == (50, 0)  # r
    assert tags[5] == (44, -0.1)  # x
    assert tags[6] == (45, -0.05)  # y
    assert tags[7] == (9, 'GAS')
예제 #5
0
def test_lin_compiler_shape():
    # A,.25,-.1,[BOX,ltypeshp.shx,x=-.1,s=.1],-.1,1 replacing BOX by shape index 132
    ltype = 'A,.25,-.1,[132,ltypeshp.shx,x=-.1,s=.1],-.1,1'
    result = lin_compiler(ltype)
    assert result[0] == (49, .25)
    assert result[1] == (49, -.1)
    text = result[2]
    assert text.type == 'SHAPE'
    assert text.value == 132
    assert text.font == 'ltypeshp.shx'
    assert text.tags[0] == (46, .1)
    assert text.tags[1] == (50, 0.)
    assert text.tags[2] == (44, -.1)
    assert text.tags[3] == (45, 0.)
    assert result[3] == (49, -.1)
    assert result[4] == (49, 1)
예제 #6
0
 def _setup_complex_pattern(self, pattern, length):
     tokens = lin_compiler(pattern)
     subclass = self.tags.get_subclass('AcDbLinetypeTableRecord')
     subclass.append(DXFTag(73, 0))  # temp length of 0
     subclass.append(DXFTag(40, length))
     count = 0
     for token in tokens:
         if isinstance(token, DXFTag):
             if subclass[-1].code == 49:  # useless 74 only after 49 :))
                 subclass.append(DXFTag(74, 0))
             subclass.append(token)
             count += 1
         else:  # TEXT or SHAPE
             subclass.extend(token.complex_ltype_tags(self.drawing))
     subclass.append(DXFTag(74, 0))  # useless 74 at the end :))
     subclass.update(DXFTag(73, count))
예제 #7
0
파일: ltype.py 프로젝트: tbwhsb88/ezdxf
    def _setup_complex_pattern(self, pattern: str, length: float) -> Tags:
        tokens = lin_compiler(pattern)
        tags = Tags([
            DXFTag(72, 65),  # letter 'A'
        ])

        tags2 = [DXFTag(73, 0), DXFTag(40, length)]  # temp length of 0
        count = 0
        for token in tokens:
            if isinstance(token, DXFTag):
                if tags2[-1].code == 49:  # useless 74 only after 49 :))
                    tags2.append(DXFTag(74, 0))
                tags2.append(token)
                count += 1
            else:  # TEXT or SHAPE
                tags2.extend(cast(
                    'ComplexLineTypePart', token).complex_ltype_tags(self.doc))
        tags2.append(DXFTag(74, 0))  # useless 74 at the end :))
        tags2[0] = DXFTag(73, count)
        tags.extend(tags2)
        return tags