It is possible to examine the content of block references as "virtual" entities, this entities are located at the "exploded" positions, but are not stored in the entity database, have no handle and are not assigned to any layout.
This is an experimental feature and good enough for simple tasks, but not everything will work as expected
from a CAD application, as example non uniform scaling returns incorrect results for text entities (
ATTRIB) and some other entities like
HATCH with arc or ellipse path segments
LWPOLYLINE with arc segments.
Virtual entities are also supported by
LWPOLYLINE and 2D/3D
DIMENSION entities. This entities will be broken down to
The "explode" feature add the "virtual" entities to the drawing entity database and places this entities at a target layout, which is the same layout as for the source entity by default and delete the source entity. All limitations of "virtual" entities apply also to the "explode" feature.
ATTRIB entities defined as
ATTDEF in the block layout and fill tags
with values defined by a
dict, this method avoids the wrapper block of the
BaseLayout.add_auto_blockref method, but the visual results may not match the results of CAD applications,
especially for non uniform scaling.
If the visual result is very important to you, use the
Get/set hyperlinks for graphical DXF entities.
ezdxf can read and write binary encoded DXF files. The binary DXF format is also supported by
r12writer add-on, but not by the
DXF files containing
ACSH_SWEEP_CLASS objects which are saved as binary DXF by ezdxf can not be opened
by AutoCAD, this is maybe also true for other 3rd party entities. BricsCAD opens this binary DXF files
without complaining, but saves the
ACSH_SWEEP_CLASS entities as
ACAD_PROXY_OBJECT when writing back,
so error analyzing is not possible without the full version of AutoCAD.
Use an installed ODA File Converter for
converting between different versions of
The ODA File Converter has to be installed by the user, the application is available for Windows XP, Windows 7 or later, Mac OS X, and Linux in 32/64-bit RPM and DEB format.
At least at Windows the GUI of the ODA File Converter pops up on every call.
Insert.block() returns associated
None if block not exist or is an XREF
True if any axis scaling is applied
True if scaling is uniform in x-, y- and z-axis.
Insert.scale(factor) set uniform scaling.
Insert.virtual_entities() yields 'virtual' entities of a block reference (experimental)
Insert.explode() explode block reference entities into target layout (experimental)
Insert.add_auto_attribs() add ATTRIB entities defined as ATTDEF in the block layout and fill tags
with values defined by a
LWPolyline.virtual_entities() yields 'virtual' LINE and ARC entities
LWPolyline.explode() explode LWPOLYLINE as LINE and ARC entities into target layout
Polyline.virtual_entities() yields 'virtual' LINE, ARC or 3DFACE entities
Polyline.explode() explode POLYLINE as LINE, ARC or 3DFACE entities into target layout
Dimension.virtual_entities() yields 'virtual' DXF entities
Dimension.explode() explode DIMENSION as basic DXF entities into target layout
Dimension.transform_to_wcs() support for UCS based entity transformation
Dimension.render() render graphical representation as anonymous block
R12FastStreamWriter.add_polyline_2d(), add 2D POLYLINE with start width, end width and bulge value support
Ellipse.minor_axis property returns minor axis as
ezdxf.options.write_fixed_meta_data_for_testing, writes always same timestamps and GUID
ezdxf.proxygraphic.ProxyGraphic() class to examine binary encoded proxy graphic (Need more example data for testing!)
odafc add-on to use an installed ODA File Converter for reading and writing DWG files
R12FastStreamWriter.add_polyline(), add 3D POLYLINE only, closed flag support
Insert.brcs() which now returns a
Polyline.n_close() can set and clear closed state.
Dimension.destroy() should not not destroy associated anonymous block, because if DIMENSION is used in a
block, the anonymous block may be used by several block references
Polyline.transform_to_wcs() for 2d polylines
Face3d.set_edge_visibility() set inverted state (visible <-> invisible)
AcDbEntity group codes from base class
Vector.angle_between() (Matt Broadway)
XData.get() now raises
DXFValueError for not existing appids, like all other methods of the
Layer.description returns an empty string for unknown XDATA structure in
Hatch edge coordinates as
virtual_block_reference_entities() (Matt Broadway)