Exemple #1
0
 def test_to_lwpolylines(self, path):
     polylines = list(to_lwpolylines(path))
     assert len(polylines) == 1
     p0 = polylines[0]
     assert p0.dxftype() == "LWPOLYLINE"
     assert p0[0] == (0, 0, 0, 0, 0)  # x, y, swidth, ewidth, bulge
     assert p0[-1] == (0, 0, 0, 0, 0)
Exemple #2
0
def virtual_entities(entity: AnyText, kind: int = Kind.HATCHES) -> EntityQuery:
    """Convert the text content of DXF entities TEXT and ATTRIB into virtual
    SPLINE and 3D POLYLINE entities or approximated LWPOLYLINE entities
    as outlines, or as HATCH entities as fillings.

    Returns the virtual DXF entities as an :class:`~ezdxf.query.EntityQuery`
    object.

    Args:
        entity: TEXT or ATTRIB entity
        kind: kind of entities to create as bit flags, see enum :class:`Kind`

    """
    check_entity_type(entity)
    extrusion = entity.dxf.extrusion
    attribs = entity.graphic_properties()
    entities: List[DXFGraphic] = []

    if kind & Kind.HATCHES:
        entities.extend(make_hatches_from_entity(entity))
    if kind & (Kind.SPLINES + Kind.LWPOLYLINES):
        paths = make_paths_from_entity(entity)
        if kind & Kind.SPLINES:
            entities.extend(
                path.to_splines_and_polylines(paths, dxfattribs=attribs))
        if kind & Kind.LWPOLYLINES:
            entities.extend(
                path.to_lwpolylines(paths,
                                    extrusion=extrusion,
                                    dxfattribs=attribs))

    return EntityQuery(entities)
Exemple #3
0
 def test_multi_path_to_lwpolylines(self):
     path = Path()
     path.line_to((1, 0, 0))
     path.move_to((2, 0, 0))
     path.line_to((3, 0, 0))
     polylines = list(to_lwpolylines(path))
     assert len(polylines) == 2
     assert len(polylines[0]) == 2
     assert len(polylines[1]) == 2
 def test_to_lwpolylines_with_ocs(self, path1):
     m = Matrix44.x_rotate(math.pi / 4)
     path = path1.transform(m)
     extrusion = m.transform((0, 0, 1))
     polylines = list(to_lwpolylines(path, extrusion=extrusion))
     p0 = polylines[0]
     assert p0.dxf.elevation == pytest.approx(1)
     assert p0.dxf.extrusion.isclose(extrusion)
     assert p0[0] == (0, 0, 0, 0, 0)
     assert p0[-1] == (4, 0, 0, 0, 0)
Exemple #5
0
 def test_to_lwpolylines_with_ocs(self, path1):
     m = Matrix44.x_rotate(math.pi / 4)
     path = path1.transform(m)
     extrusion = m.transform((0, 0, 1))
     polylines = list(to_lwpolylines(path, extrusion=extrusion))
     p0 = polylines[0]
     assert p0.dxf.elevation == pytest.approx(1)
     assert p0.dxf.extrusion.isclose(extrusion)
     assert (all(
         math.isclose(a, b, abs_tol=1e-12)
         for a, b in zip(p0[0], (0, 0, 0, 0, 0))) is True)
     assert (all(
         math.isclose(a, b, abs_tol=1e-12)
         for a, b in zip(p0[-1], (4, 0, 0, 0, 0))) is True)
Exemple #6
0
 def test_to_lwpolylines_with_wcs_elevation(self, path1):
     polylines = list(to_lwpolylines(path1))
     p0 = polylines[0]
     assert p0.dxf.elevation == 1
Exemple #7
0
 def test_empty_path_to_lwpolyline(self):
     assert list(to_lwpolylines([Path()])) == []
Exemple #8
0
 def test_empty_to_lwpolyline(self):
     assert list(to_lwpolylines([])) == []