Esempio n. 1
0
def lin_compiler(definition: str) -> Sequence[DXFTag]:
    """
    Compiles line type definitions like 'A,.5,-.25,.5,-.25,0,-.25' or
    'A,.5,-.2,["GAS",STANDARD,S=.1,U=0.0,X=-0.1,Y=-.05],-.25' into DXFTags().

    Args:
        definition: definition string

    Returns:
        list of DXFTag()
    """
    # 'A,.5,-.2,["GAS",STANDARD,S=.1,U=0.0,X=-0.1,Y=-.05],-.25'
    # ['A', .5, -.2, ['TEXT', 'GAS', 'STANDARD', 's', .1, 'u', 0.0, 'x', -.1, 'y', -.05], -.25]
    tags = []
    for token in lin_parser(definition):
        if token == "A":
            continue
        elif isinstance(token, float):
            tags.append(
                DXFTag(49, token)
            )  # Dash, dot or space length (one entry per element)
        elif isinstance(token, list):  # yield from
            tags.append(compile_complex_defnition(token))  # type: ignore
    return tags
Esempio n. 2
0
def test_int_not_skip_comments():
    tags = list(internal_tag_compiler(TAGS1))
    assert 9 == len(tags)
    assert DXFTag(999, 'comment') == tags[0]
Esempio n. 3
0
def default_vars() -> OrderedDict:
    vars = OrderedDict()
    for vardef in HEADER_VAR_MAP.values():
        vars[vardef.name] = HeaderVar(DXFTag(vardef.code, vardef.default))
    return vars
Esempio n. 4
0
def test_tuples2dxftags():
    assert [DXFTag(40, 1), DXFTag(41, 2)] == tuples2dxftags([(40, 1), (41, 2)])
def test_append_not_existing_reactors(xtags4):
    xtags4.new_app_data(ACAD_REACTORS, [DXFTag(330, "DEAD")])
    reactors = xtags4.get_app_data_content(ACAD_REACTORS)
    assert 1 == len(reactors)
    assert DXFTag(330, "DEAD") == reactors[0]
Esempio n. 6
0
def test_write_point_tag():
    s, t = setup_stream()
    t.write_tag(DXFTag(10, (7., 8., 9.)))
    result = s.getvalue()
    assert result == ' 10\n7.0\n 20\n8.0\n 30\n9.0\n'
Esempio n. 7
0
 def test_no_line_break_at_eof(self):
     tags = list(string_tagger(TAGS_NO_LINE_BREAK_AT_EOF))
     self.assertEqual(3, len(tags))
     self.assertEqual(DXFTag(10, (100, 200)), tags[1])
     self.assertEqual(DXFTag(11, (1000, 2000)), tags[2])
Esempio n. 8
0
def test_int_no_line_break_at_eof():
    tags = list(internal_tag_compiler(TAGS_NO_LINE_BREAK_AT_EOF))
    assert 3 == len(tags)
    assert DXFTag(10, (100, 200)) == tags[1]
    assert DXFTag(11, (1000, 2000)) == tags[2]
Esempio n. 9
0
 def test_2d_coords(self):
     tags = list(string_tagger(TAGS_2D_COORDS))
     self.assertEqual(2, len(tags))
     self.assertEqual(DXFTag(10, (100, 200)), tags[1])
Esempio n. 10
0
 def test_multiple_2d_coords(self):
     tags = list(string_tagger(TAGS_2D_COORDS2))
     self.assertEqual(3, len(tags))
     self.assertEqual(DXFTag(10, (100, 200)), tags[1])
     self.assertEqual(DXFTag(11, (1000, 2000)), tags[2])
Esempio n. 11
0
 def test_string(self):
     tags = list(string_tagger(TAGS1))
     self.assertEqual(9, len(tags))
     self.assertEqual(DXFTag(999, 'comment'), tags[0],
                      'should not skip comments.')
Esempio n. 12
0
 def test_set_first(self, tags):
     tags.set_first(DXFTag(999, "NEWTAG"))
     assert "NEWTAG" == tags[-1].value
Esempio n. 13
0
 def test_update(self, tags):
     tags.update(DXFTag(2, "XHEADER"))
     assert "XHEADER" == tags[1].value
Esempio n. 14
0
def test_int_2d_coords():
    tags = list(internal_tag_compiler(TAGS_2D_COORDS))
    assert 2 == len(tags)
    assert DXFTag(10, (100, 200)) == tags[1]
Esempio n. 15
0
 def dxftags(self) -> Tags:
     tags = [
         DXFTag(1001, 'ACAD'),
         DXFTag(1000, 'MVIEW'),
         DXFTag(1002, '{', ),
         DXFTag(1070, 16),  # extended data version, always 16 for R11/12
         DXFTag(1010, self.view_target_point),
         DXFTag(1010, self.view_direction_vector),
         DXFTag(1040, self.view_twist_angle),
         DXFTag(1040, self.view_height),
         DXFTag(1040, self.view_center_point[0]),
         DXFTag(1040, self.view_center_point[1],),
         DXFTag(1040, self.perspective_lens_length),
         DXFTag(1040, self.front_clip_plane_z_value),
         DXFTag(1040, self.back_clip_plane_z_value),
         DXFTag(1070, self.view_mode),
         DXFTag(1070, self.circle_zoom),
         DXFTag(1070, self.fast_zoom),
         DXFTag(1070, self.ucs_icon),
         DXFTag(1070, self.snap),
         DXFTag(1070, self.grid),
         DXFTag(1070, self.snap_style),
         DXFTag(1070, self.snap_isopair),
         DXFTag(1040, self.snap_angle),
         DXFTag(1040, self.snap_base_point[0]),
         DXFTag(1040, self.snap_base_point[1]),
         DXFTag(1040, self.snap_spacing[0]),
         DXFTag(1040, self.snap_spacing[1]),
         DXFTag(1040, self.grid_spacing[0]),
         DXFTag(1040, self.grid_spacing[1]),
         DXFTag(1070, self.hidden_plot),
         DXFTag(1002, '{'),  # start frozen layer list
     ]
     tags.extend(DXFTag(1003, layer_name) for layer_name in self.frozen_layers)
     tags.extend([
         DXFTag(1002, '}'),  # end of frozen layer list
         DXFTag(1002, '}'),  # end of viewport data
     ])
     return Tags(tags)
Esempio n. 16
0
def test_int_multiple_2d_coords():
    tags = list(internal_tag_compiler(TAGS_2D_COORDS2))
    assert 3 == len(tags)
    assert DXFTag(10, (100, 200)) == tags[1]
    assert DXFTag(11, (1000, 2000)) == tags[2]
Esempio n. 17
0
 def test_update(self, tags):
     tags.update(DXFTag(2, 'XHEADER'))
     assert 'XHEADER' == tags[1].value
Esempio n. 18
0
def test_init_one_tag():
    xtags = ExtendedTags([DXFTag(0, "SECTION")])
    assert xtags.noclass[0] == (0, "SECTION")
Esempio n. 19
0
 def test_update_error(self, tags):
     with pytest.raises(DXFValueError):
         tags.update(DXFTag(999, 'DOESNOTEXIST'))
Esempio n. 20
0
def test_write_tag():
    s, t = setup_stream()
    t.write_tag(DXFTag(0, 'SECTION'))
    result = s.getvalue()
    assert result == '  0\nSECTION\n'
Esempio n. 21
0
 def test_set_first(self, tags):
     tags.set_first(DXFTag(999, 'NEWTAG'))
     assert 'NEWTAG' == tags[-1].value
Esempio n. 22
0
 def history2(self):
     history = EntityHistory()
     history.append(Tags([DXFTag(1, "first")]))
     history.append(Tags([DXFTag(2, "second")]))
     return history
Esempio n. 23
0
 def test_append_not_existing_reactors(self):
     self.tags.new_app_data(ACAD_REACTORS, [DXFTag(330, 'DEAD')])
     reactors = self.tags.get_app_data_content(ACAD_REACTORS)
     self.assertEqual(1, len(reactors))
     self.assertEqual(DXFTag(330, 'DEAD'), reactors[0])