Polyline¶
The POLYLINE entity (POLYLINE DXF Reference) is very complex, it’s used to build
2D/3D polylines, 3D meshes and 3D polyfaces. For every type exists a different wrapper
class but they all have the same DXF type “POLYLINE”. Detect the actual POLYLINE
type by the method Polyline.get_mode()
.
POLYLINE types returned by Polyline.get_mode()
:
For 2D entities all vertices in OCS.
For 3D entities all vertices in WCS.
Subclass of  ezdxf.entities.DXFGraphic 
DXF type  'POLYLINE' 
2D factory function  ezdxf.layouts.BaseLayout.add_polyline2d() 
3D factory function  ezdxf.layouts.BaseLayout.add_polyline3d() 
Inherited DXF attributes  Common graphical DXF attributes 
Warning
Do not instantiate entity classes by yourself  always use the provided factory functions!

class
ezdxf.entities.
Polyline
¶ The
Vertex
entities are stored in the Python listPolyline.vertices
. The VERTEX entities can be retrieved and deleted by direct access to thePolyline.vertices
attribute:# delete first and second vertex del polyline.vertices[:2]

dxf.
elevation
¶ Elevation point, the X and Y values are always 0, and the Z value is the polyline elevation (3D Point).

dxf.
flags
¶ Constants defined in
ezdxf.lldxf.const
:Polyline.dxf.flags
Value Description POLYLINE_CLOSED 1 This is a closed Polyline (or a polygon mesh closed in the M direction) POLYLINE_MESH_CLOSED_M_DIRECTION 1 equals POLYLINE_CLOSED POLYLINE_CURVE_FIT_VERTICES_ADDED 2 Curvefit vertices have been added POLYLINE_SPLINE_FIT_VERTICES_ADDED 4 Splinefit vertices have been added POLYLINE_3D_POLYLINE 8 This is a 3D Polyline POLYLINE_3D_POLYMESH 16 This is a 3D polygon mesh POLYLINE_MESH_CLOSED_N_DIRECTION 32 The polygon mesh is closed in the N direction POLYLINE_POLYFACE_MESH 64 This Polyline is a polyface mesh POLYLINE_GENERATE_LINETYPE_PATTERN 128 The linetype pattern is generated continuously around the vertices of this Polyline

dxf.
default_start_width
¶ Default line start width (float); default is 0

dxf.
default_end_width
¶ Default line end width (float); default is 0

dxf.
m_count
¶ Polymesh M vertex count (int); default is 1

dxf.
n_count
¶ Polymesh N vertex count (int); default is 1

dxf.
m_smooth_density
¶ Smooth surface M density (int); default is 0

dxf.
n_smooth_density
¶ Smooth surface N density (int); default is 0

dxf.
smooth_type
¶ Curves and smooth surface type (int); default is 0, see table below
Constants for
smooth_type
defined inezdxf.lldxf.const
:Polyline.dxf.smooth_type
Value Description POLYMESH_NO_SMOOTH 0 no smooth surface fitted POLYMESH_QUADRATIC_BSPLINE 5 quadratic Bspline surface POLYMESH_CUBIC_BSPLINE 6 cubic Bspline surface POLYMESH_BEZIER_SURFACE 8 Bezier surface

is_2d_polyline
¶ True
if POLYLINE is a 2D polyline.

is_3d_polyline
¶ True
if POLYLINE is a 3D polyline.

is_closed
¶ True
if POLYLINE is closed.

has_arc
¶ Returns
True
if 2D POLYLINE has an arc segment.

has_width
¶ Returns
True
if 2D POLYLINE has default width values or any segment with width attributes.

get_mode
() → str¶ Returns POLYLINE type as string:
 “AcDb2dPolyline”
 “AcDb3dPolyline”
 “AcDbPolygonMesh”
 “AcDbPolyFaceMesh”

m_close
(status=True) → None¶ Close POLYMESH in m direction if status is
True
(also closes POLYLINE), clears closed state if status isFalse
.

n_close
(status=True) → None¶ Close POLYMESH in n direction if status is
True
, clears closed state if status isFalse
.

close
(m_close=True, n_close=False) → None¶ Set closed state of POLYMESH and POLYLINE in m direction and n direction.
True
set closed flag,False
clears closed flag.

__getitem__
(pos) → ezdxf.entities.polyline.DXFVertex¶ Get
Vertex
entity at position pos, supports listlike slicing.

points
() → Iterator[ezdxf.math._vector.Vec3]¶ Returns iterable of all polyline vertices as (x, y, z) tuples, not as
Vertex
objects.

append_vertex
(point: Union[Sequence[float], ezdxf.math._vector.Vec2, ezdxf.math._vector.Vec3], dxfattribs=None) → None¶ Append a single
Vertex
entity at location point.Parameters:  point – as (x, y[, z]) tuple
 dxfattribs – dict of DXF attributes for
Vertex
class

append_vertices
(points: Iterable[Union[Sequence[float], ezdxf.math._vector.Vec2, ezdxf.math._vector.Vec3]], dxfattribs=None) → None¶ Append multiple
Vertex
entities at location points.Parameters:  points – iterable of (x, y[, z]) tuples
 dxfattribs – dict of DXF attributes for the VERTEX objects

append_formatted_vertices
(points: Iterable[Union[Sequence[float], ezdxf.math._vector.Vec2, ezdxf.math._vector.Vec3]], format: str = 'xy', dxfattribs=None) → None¶ Append multiple
Vertex
entities at location points.Parameters:  points – iterable of (x, y, [start_width, [end_width, [bulge]]]) tuple
 format – format string, default is “xy”, see: User Defined Point Format Codes
 dxfattribs – dict of DXF attributes for the VERTEX objects

insert_vertices
(pos: int, points: Iterable[Union[Sequence[float], ezdxf.math._vector.Vec2, ezdxf.math._vector.Vec3]], dxfattribs=None) → None¶ Insert vertices points into
Polyline.vertices
list at insertion location pos .Parameters:  pos – insertion position of list
Polyline.vertices
 points – list of (x, y[, z]) tuples
 dxfattribs – dict of DXF attributes for
Vertex
class
 pos – insertion position of list

transform
(m: ezdxf.math._matrix44.Matrix44) → ezdxf.entities.polyline.Polyline¶ Transform the POLYLINE entity by transformation matrix m inplace.
A nonuniform scaling is not supported if a 2D POLYLINE contains circular arc segments (bulges).
Parameters: m – transformation Matrix44
Raises: NonUniformScalingError
– for nonuniform scaling of 2D POLYLINE containing circular arc segments (bulges)

virtual_entities
() → Iterator[Union[Line, Arc, Face3d]]¶ Yields the graphical representation of POLYLINE as virtual DXF primitives (LINE, ARC or 3DFACE).
These virtual entities are located at the original location, but are not stored in the entity database, have no handle and are not assigned to any layout.

explode
(target_layout: Optional[BaseLayout] = None) → EntityQuery¶ Explode the POLYLINE entity as DXF primitives (LINE, ARC or 3DFACE) into the target layout, if the target layout is
None
, the target layout is the layout of the POLYLINE entity.Returns an
EntityQuery
container referencing all DXF primitives.Parameters: target_layout – target layout for DXF primitives, None
for same layout as source entity.

Vertex¶
A VERTEX (VERTEX DXF Reference) represents a polyline/mesh vertex.
Subclass of  ezdxf.entities.DXFGraphic 
DXF type  'VERTEX' 
Factory function  Polyline.append_vertex() 
Factory function  Polyline.extend() 
Factory function  Polyline.insert_vertices() 
Inherited DXF Attributes  Common graphical DXF attributes 

class
ezdxf.entities.
Vertex
¶ 

dxf.
start_width
¶ Line segment start width (float); default is 0

dxf.
end_width
¶ Line segment end width (float); default is 0

dxf.
bulge
¶ Bulge value (float); default is 0.
The bulge value is used to create arc shaped line segments.

dxf.
flags
¶ Constants defined in
ezdxf.lldxf.const
:Vertex.dxf.flags Value Description VTX_EXTRA_VERTEX_CREATED 1 Extra vertex created by curvefitting VTX_CURVE_FIT_TANGENT 2 curvefit tangent defined for this vertex. A curvefit tangent direction of 0 may be omitted from the DXF output, but is significant if this bit is set. VTX_SPLINE_VERTEX_CREATED 8 spline vertex created by splinefitting VTX_SPLINE_FRAME_CONTROL_POINT 16 spline frame control point VTX_3D_POLYLINE_VERTEX 32 3D polyline vertex VTX_3D_POLYGON_MESH_VERTEX 64 3D polygon mesh VTX_3D_POLYFACE_MESH_VERTEX 128 polyface mesh vertex

dxf.
tangent
¶ Curve fit tangent direction (float), used for 2D spline in DXF R12.

dxf.
vtx1
¶ Index of 1st vertex, if used as face (feature for experts)

dxf.
vtx2
¶ Index of 2nd vertex, if used as face (feature for experts)

dxf.
vtx3
¶ Index of 3rd vertex, if used as face (feature for experts)

dxf.
vtx4
¶ Index of 4th vertex, if used as face (feature for experts)

is_2d_polyline_vertex
¶

is_3d_polyline_vertex
¶

is_polygon_mesh_vertex
¶

is_poly_face_mesh_vertex
¶

is_face_record
¶

format
(format='xyz') → Sequence¶ Return formatted vertex components as tuple.
Format codes:
 “x” = xcoordinate
 “y” = ycoordinate
 “z” = zcoordinate
 “s” = start width
 “e” = end width
 “b” = bulge value
 “v” = (x, y, z) as tuple
 Args:
 format: format string, default is “xyz”

Polymesh¶
Subclass of  ezdxf.entities.Polyline 
DXF type  'POLYLINE' 
Factory function  ezdxf.layouts.BaseLayout.add_polymesh() 
Inherited DXF Attributes  Common graphical DXF attributes 

class
ezdxf.entities.
Polymesh
¶ A polymesh is a grid of
m_count
byn_count
vertices, every vertex has its own (x, y, z) location. ThePolymesh
is a subclass ofPolyline
, the DXF type is also “POLYLINE”, the methodget_mode()
returns “AcDbPolygonMesh”.
get_mesh_vertex
(pos: tuple[int, int]) → DXFVertex¶ Get location of a single mesh vertex.
Parameters: pos – 0based (row, col) tuple, position of mesh vertex

set_mesh_vertex
(pos: tuple[int, int], point: UVec, dxfattribs=None)¶ Set location and DXF attributes of a single mesh vertex.
Parameters:  pos – 0based (row, col) tuple, position of mesh vertex
 point – (x, y, z) tuple, new 3D coordinates of the mesh vertex
 dxfattribs – dict of DXF attributes

get_mesh_vertex_cache
() → ezdxf.entities.polyline.MeshVertexCache¶ Get a
MeshVertexCache
object for this POLYMESH. The caching object provides fast access to thelocation
attribute of mesh vertices.

MeshVertexCache¶

class
ezdxf.entities.
MeshVertexCache
¶ Cache mesh vertices in a dict, keys are 0based (row, col) tuples.
Set vertex location:
cache[row, col] = (x, y, z)
Get vertex location:
x, y, z = cache[row, col]

vertices
¶ Dict of mesh vertices, keys are 0based (row, col) tuples.

__getitem__
(pos: tuple[int, int]) → UVec¶ Get mesh vertex location as (x, y, z)tuple.
Parameters: pos – 0based (row, col)tuple.

__setitem__
(pos: tuple[int, int], location: UVec) → None¶ Get mesh vertex location as (x, y, z)tuple.
Parameters:  pos – 0based (row, col)tuple.
 location – (x, y, z)tuple

Polyface¶
Subclass of  ezdxf.entities.Polyline 
DXF type  'POLYLINE' 
Factory function  ezdxf.layouts.BaseLayout.add_polyface() 
Inherited DXF Attributes  Common graphical DXF attributes 
See also

class
ezdxf.entities.
Polyface
¶ A polyface consist of multiple 3D areas called faces, only faces with 3 or 4 vertices are supported. The
Polyface
is a subclass ofPolyline
, the DXF type is also “POLYLINE”, theget_mode()
returns “AcDbPolyFaceMesh”.
append_face
(face: FaceType, dxfattribs=None) → None¶ Append a single face. A face is a sequence of (x, y, z) tuples.
Parameters:  face – sequence of (x, y, z) tuples
 dxfattribs – dict of DXF attributes for the VERTEX objects

append_faces
(faces: Iterable[FaceType], dxfattribs=None) → None¶ Append multiple faces. faces is a list of single faces and a single face is a sequence of (x, y, z) tuples.
Parameters:  faces – iterable of sequences of (x, y, z) tuples
 dxfattribs – dict of DXF attributes for the VERTEX entity

faces
() → Iterator[list[DXFVertex]]¶ Iterable of all faces, a face is a tuple of vertices.
Returns: list of [vertex, vertex, vertex, [vertex,] face_record]
