Exemple #1
0
    def draw_elliptic_arc_entity(self, entity: DXFGraphic,
                                 properties: Properties) -> None:
        dxftype = entity.dxftype()
        if NULLVEC.isclose(entity.dxf.extrusion):
            self.skip_entity(
                f'Invalid extrusion (0, 0, 0) in entity: {str(entity)}')
            return

        if dxftype == 'CIRCLE':
            if entity.dxf.radius <= 0:
                self.skip_entity(f'Invalid radius in entity: {str(entity)}')
                return
            path = Path.from_circle(cast('Circle', entity))
        elif dxftype == 'ARC':
            if entity.dxf.radius <= 0:
                self.skip_entity(f'Invalid radius in entity: {str(entity)}')
                return
            path = Path.from_arc(cast('Arc', entity))
        elif dxftype == 'ELLIPSE':
            if NULLVEC.isclose(entity.dxf.major_axis):
                self.skip_entity(
                    f'Invalid major axis (0, 0, 0) in entity: {str(entity)}')
                return

            path = Path.from_ellipse(cast('Ellipse', entity))
        else:  # API usage error
            raise TypeError(dxftype)
        self.out.draw_path(path, properties)
Exemple #2
0
def test_end_points(ellipse):
    p = Path.from_ellipse(ellipse)

    assert ellipse.start_point.isclose(p.start)
    assert ellipse.end_point.isclose(p.end)

    # end point locations measured in BricsCAD:
    assert ellipse.start_point.isclose((2191.3054, -1300.8375), abs_tol=1e-4)
    assert ellipse.end_point.isclose((2609.7870, -1520.6677), abs_tol=1e-4)
Exemple #3
0
 def draw_elliptic_arc_entity(self, entity: DXFGraphic,
                              properties: Properties) -> None:
     dxftype = entity.dxftype()
     if dxftype == 'CIRCLE':
         path = Path.from_circle(cast('Circle', entity))
     elif dxftype == 'ARC':
         path = Path.from_arc(cast('Arc', entity))
     elif dxftype == 'ELLIPSE':
         path = Path.from_ellipse(cast('Ellipse', entity))
     else:  # API usage error
         raise TypeError(dxftype)
     self.out.draw_path(path, properties)
Exemple #4
0
#  Copyright (c) 2020, Manfred Moitzi
#  License: MIT License
import ezdxf
from ezdxf.render import Path

doc = ezdxf.new()
msp = doc.modelspace()

ellipse = msp.add_ellipse(
    center=(1999.488177113287, -1598.02265357955, 0.0),
    major_axis=(629.968069297, 0.0, 0.0),
    ratio=0.495263197,
    start_param=-1.261396328799999,
    end_param=-0.2505454928,
    dxfattribs={
        'layer': "0",
        'linetype': "Continuous",
        'color': 3,
        'extrusion': (0.0, 0.0, -1.0),
    },
)

p = Path.from_ellipse(ellipse)
msp.add_lwpolyline(p.approximate(),
                   dxfattribs={
                       'layer': 'PathRendering',
                       'color': 1,
                   })
doc.set_modelspace_vport(500, (2400, -1400))
doc.saveas('path_rendering.dxf')