Polyline¶
-
class
Polyline
(GraphicEntity)¶
The POLYLINE entity 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 dxftype of POLYLINE. Detect the polyline type by
Polyline.get_mode()
.
Create 2D polylines in layouts and blocks by factory function add_polyline2D()
.
For 2D entities all points in OCS.
Create 3D polylines in layouts and blocks by factory function add_polyline3D()
.
For 3D entities all points in WCS.
DXF Attributes for Polyline¶
Common DXF Attributes for DXF R12
Common DXF Attributes for DXF R13 or later
-
Polyline.dxf.
elevation
¶
Elevation point, the X and Y values are always 0, and the Z value is the polyline’s elevation (3D Point in OCS when 2D, WCS when 3D).
-
Polyline.dxf.
flags
¶
Constants defined in ezdxf.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 | Curve-fit vertices have been added |
POLYLINE_SPLINE_FIT_VERTICES_ADDED | 4 | Spline-fit 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 |
-
Polyline.dxf.
default_start_width
¶
Default line start width (float); default=0
-
Polyline.dxf.
default_end_width
¶
Default line end width (float); default=0
-
Polyline.dxf.
m_count
¶
Polymesh M vertex count (int); default=1
-
Polyline.dxf.
n_count
¶
Polymesh N vertex count (int); default=1
-
Polyline.dxf.
m_smooth_density
¶
Smooth surface M density (int); default=0
-
Polyline.dxf.
n_smooth_density
¶
Smooth surface N density (int); default=0
-
Polyline.dxf.
smooth_type
¶
Curves and smooth surface type (int); default=0, see table below
Constants for smooth_type defined in ezdxf.const
:
Polyline.dxf.smooth_type | Value | Description |
---|---|---|
POLYMESH_NO_SMOOTH | 0 | no smooth surface fitted |
POLYMESH_QUADRATIC_BSPLINE | 5 | quadratic B-spline surface |
POLYMESH_CUBIC_BSPLINE | 6 | cubic B-spline surface |
POLYMESH_BEZIER_SURFACE | 8 | Bezier surface |
Polyline Attributes¶
-
Polyline.
is_2d_polyline
¶
True if polyline is a 2D polyline.
-
Polyline.
is_3d_polyline
¶
True if polyline is a 3D polyline.
-
Polyline.
is_polygon_mesh
¶
True if polyline is a polygon mesh, see Polymesh
-
Polyline.
is_poly_face_mesh
¶
True if polyline is a poly face mesh, see Polyface
-
Polyline.
is_closed
¶
True if polyline is closed.
-
Polyline.
is_m_closed
¶
True if polyline (as polymesh) is closed in m direction.
-
Polyline.
is_n_closed
¶
True if polyline (as polymesh) is closed in n direction.
Polyline Methods¶
-
Polyline.
get_mode
()¶
Returns a string: AcDb2dPolyline
, AcDb3dPolyline
, AcDbPolygonMesh
or AcDbPolyFaceMesh
-
Polyline.
m_close
()¶
Close mesh in M direction (also closes polylines).
-
Polyline.
n_close
()¶
Close mesh in N direction.
-
Polyline.
close
(m_close, n_close=False)¶
Close mesh in M (if mclose is True) and/or N (if nclose is True) direction.
-
Polyline.
__len__
()¶
Returns count of vertices.
-
Polyline.
__getitem__
(pos)¶
Get Vertex
object at position pos. Very slow!!!. Vertices are organized as linked list, so it is
faster to work with a temporary list of vertices: list(polyline.vertices())
.
-
Polyline.
vertices
()¶
Iterate over all polyline vertices as Vertex
objects. (replaces Polyline.__iter__()
)
-
Polyline.
points
()¶
Iterate over all polyline points as (x, y[, z])-tuples, not as Vertex
objects.
-
Polyline.
append_vertices
(points, dxfattribs=None)¶
Append points as Vertex
objects.
param points: | iterable polyline points, every point is a (x, y[, z])-tuple. |
---|---|
param dxfattribs: | |
dict of DXF attributes for the Vertex |
-
Polyline.
insert_vertices
(pos, points, dxfattribs=None)¶
Insert points as Vertex
objects at position pos.
param int pos: | 0-based insert position |
---|---|
param iterable points: | |
iterable polyline points, every point is a tuple. | |
param dxfattribs: | |
dict of DXF attributes for the Vertex |
-
Polyline.
delete_vertices
(pos, count=1)¶
Delete count vertices at position pos.
param int pos: | 0-based insert position |
---|---|
param int count: | |
count of vertices to delete |
Vertex¶
-
class
Vertex
(GraphicEntity)¶ A vertex represents a polyline/mesh point, dxftype is
VERTEX
, you don’t have to create vertices by yourself.
DXF Attributes for Vertex¶
-
Vertex.dxf.
location
¶
vertex location (2D/3D Point OCS when 2D, WCS when 3D)
-
Vertex.dxf.
start_width
¶
line segment start width (float); default=0
-
Vertex.dxf.
end_width
¶
line segment end width (float); default=0
-
Vertex.dxf.
bulge
¶
Bulge (float); default=0. The bulge is the tangent of one fourth the included angle for an arc segment, made negative if the arc goes clockwise from the start point to the endpoint. A bulge of 0 indicates a straight segment, and a bulge of 1 is a semicircle.
-
Vertex.dxf.
flags
¶
Constants defined in ezdxf.const
:
Vertex.dxf.flags | Value | Description |
---|---|---|
VTX_EXTRA_VERTEX_CREATED | 1 | Extra vertex created by curve-fitting |
VTX_CURVE_FIT_TANGENT | 2 | curve-fit tangent defined for this vertex. A curve-fit 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 spline-fitting |
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 |
-
Vertex.dxf.
tangent
¶
curve fit tangent direction (float)
-
Vertex.dxf.
vtx1
¶
index of 1st vertex, if used as face (feature for experts)
-
Vertex.dxf.
vtx2
¶
index of 2nd vertex, if used as face (feature for experts)
-
Vertex.dxf.
vtx3
¶
index of 3rd vertex, if used as face (feature for experts)
-
Vertex.dxf.
vtx4
¶
index of 4th vertex, if used as face (feature for experts)
Polymesh¶
-
class
Polymesh
(Polyline)¶
A polymesh is a grid of mcount x ncount vertices and every vertex has its own xyz-coordinates.
The Polymesh
is an extended Polyline
class, dxftype is also POLYLINE
but
get_mode()
returns AcDbPolygonMesh
.
Create polymeshes in layouts and blocks by factory function add_polymesh()
.
-
Polymesh.
get_mesh_vertex
(pos)¶
Get mesh vertex at position pos as Vertex
.
param pos: | 0-based (row, col)-tuple |
---|
-
Polymesh.
set_mesh_vertex
(pos, point, dxfattribs=None)¶
Set mesh vertex at position pos to location point and update the dxf attributes of the Vertex
.
param pos: | 0-based (row, col)-tuple |
---|---|
param point: | vertex coordinates as (x, y, z)-tuple |
param dxfattribs: | |
dict of DXF attributes for the Vertex |
-
Polymesh.
get_mesh_vertex_cache
()¶
Get a MeshVertexCache
object for this Polymesh. The caching object provides fast access to the location
attributes of the mesh vertices.
-
class
MeshVertexCache
¶
Cache mesh vertices in a dict, keys are 0-based (row, col)-tuples.
- set vertex location:
cache[row, col] = (x, y, z)
- get vertex location:
x, y, z = cache[row, col]
-
MeshVertexCache.
vertices
¶
Dict of mesh vertices, keys are 0-based (row, col)-tuples. Writing to this dict doesn’t change the DXF entity.
-
MeshVertexCache.
__getitem__
(pos)¶
Returns the location of Vertex
at position pos as (x, y, z)-tuple
param tuple pos: | |
---|---|
0-based (row, col)-tuple |
-
MeshVertexCache.
__setitem__
(pos, location)¶
Set the location of Vertex
at position pos to location.
param pos: | 0-based (row, col)-tuple |
---|---|
param location: | (x, y, z)-tuple |
Polyface¶
-
class
Polyface
(Polyline)¶
A polyface consist of multiple location independent 3D areas called faces.
The Polyface
is an extended Polyline
class, dxftype is also POLYLINE
but
get_mode()
returns AcDbPolyFaceMesh
.
Create polyfaces in layouts and blocks by factory function add_polyface()
.
-
Polyface.
append_face
(face, dxfattribs=None)¶
Append one face, dxfattribs is used for all vertices generated. Appending single faces is very inefficient, if
possible use append_faces()
to add a list of new faces.
param face: | a tuple of 3 or 4 3D points, a 3D point is a (x, y, z)-tuple |
---|---|
param dxfattribs: | |
dict of DXF attributes for the Vertex |
-
Polyface.
append_faces
(faces, dxfattribs=None)¶
Append a list of faces, dxfattribs is used for all vertices generated.
param tuple faces: | |
---|---|
a list of faces, a face is a tuple of 3 or 4 3D points, a 3D point is a (x, y, z)-tuple | |
param dxfattribs: | |
dict of DXF attributes for the Vertex |
-
Polyface.
faces
()¶
Iterate over all faces, a face is a tuple of Vertex
objects; yields (vtx1, vtx2, vtx3[, vtx4], face_record)-tuples
-
Polyface.
indexed_faces
()¶
Returns a list of all vertices and a generator of Face()
objects as tuple:
vertices, faces = polyface.indexed_faces()
-
Polyface.
optimize
(precision=6)¶
Rebuilds Polyface
with vertex optimization. Merges vertices with nearly same vertex locations.
Polyfaces created by ezdxf are optimized automatically.
param int precision: | |
---|---|
decimal precision for determining identical vertex locations |
See also
-
class
Face
¶
Represents a single face of the Polyface
entity.
-
Face.
vertices
¶
List of all Polyface
vertices (without face_records). (read only attribute)
-
Face.
face_record
¶
The face forming vertex of type AcDbFaceRecord
, contains the indices to the face building vertices. Indices of
the DXF structure are 1-based and a negative index indicates the beginning of an invisible edge.
Face.face_record.dxf.color
determines the color of the face. (read only attribute)
-
Face.
indices
¶
Indices to the face forming vertices as tuple. This indices are 0-base and are used to get vertices from the
list Face.vertices
. (read only attribute)
-
Face.
__iter__
()¶
Iterate over all face vertices as Vertex
objects.
-
Face.
__len__
()¶
Returns count of face vertices (without face_record).
-
Face.
__getitem__
(pos)¶
Returns Vertex
at position pos.
param int pos: | vertex position 0-based |
---|
-
Face.
points
()¶
Iterate over all face vertex locations as (x, y, z)-tuples.
-
Face.
is_edge_visible
(pos)¶
Returns True if edge starting at vertex pos is visible else False.
param int pos: | vertex position 0-based |
---|