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), ]
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)
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
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')
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)
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))
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