The project started in 2010 as the next generation of the dxfwrite package
that added loading and editing features and implemented support for DXF versions
newer than R12, and has now finally reached version 1.0 status.
A big thanks to Matt Broadway for contributing the
drawing add-on which was the reason for adding a general transform interface
and the path tools. These additions have greatly improved ezdxf as many tools
are based on these basic features: the explode, disassemble, bbox and
zoom modules, the text2path and geo add-ons, and many internal features.
And the drawing add-on itself seems to be one of the most used features of the
entire package - judging by the number of questions and bug reports associated
with it 😉.
And thanks to all people who reported bugs, especially Huang Yibin!
Version 1.0.0 is basically version 0.18.1 with the deprecated functions and methods removed and a major revision of the documentation and type annotations.
The new method Drawing.paperspace()
returns paperspace layouts like the existing method Drawing.layout(), but has
the correct return-type annotation Paperspace and can not return the Modelspace.
The Drawing.page_setup()
method is a simple way to set up new print layouts or reset the properties
of existing layouts. The paper size is specified by a format name as string
like "ISO A0" or "Letter". If you need more control over the page set up
process use the page_setup()
method of the Paperspace class.
The new Tutorial for Viewports in Paperspace shows how to define the paper size, add entities to the print layout, and add viewports to the paperspace.
The new UNIX_EXEC_PATH config option for the ODAFC add-on may help if the
which command can not find the ODAFileConverter command and also adds
support for AppImages provided by the Open Design Alliance.
For more information read the updated
documentation.
This is the formerly undocumented Table add-on which existed for an easy
transition from dxfwrite to ezdxf. It's now an officially supported and
documented add-on because
full support for the ACAD_TABLE entity is very unlikely due to the enormous
complexity for both the entity itself, and for the required infrastructure
and also the lack of a usable documentation to implement all that features.
The add-on simply "paints" tables using DXF primitives, no automatically evaluated fields, no connection to databases or Excel files:

This is the formerly undocumented MText add-on which existed only for an easy
transition from dxfwrite to ezdxf and implements a MTEXT like feature for
the DXF R12 format. It's now an officially supported and
documented add-on
because it's used by the TablePainter add-on.
This add-on creates special DXF files for use by Gerber Technology applications which have a low quality DXF parser and cannot parse/ignore BLOCKS which do not contain data according the ASTM-D6673-10 standard, see the docs.
There will be an extended period of only bug fixes without adding any major new features that will be released as a 1.0.x series to take a break from the project and these versions will not change any APIs, dependencies or minimum requirements. For version 1.1, the minimum Python version will be raised to 3.8 or possibly 3.9 since even the latest LTS version of Ubuntu ships with Python 3.9. Or I sync the minimal Python version and provided binary wheels on PyPI with matplotlib, which is still releasing binary wheels for Python 3.8 at the end of 2022.
As for the new features, there are already many ideas in the TODO.md file, but I haven't decided yet which ones will be added and when, as this is still a hobby project, there is no set schedule for future releases: It's done when it's done.
It's also time to expand the DXF-Internals documentation to bring the knowledge baked into code into a more readable form.
Please post any comments, ideas or suggestions in the discussion forum on github.
See you sometime, take care, stay healthy!
Version v1.0.1 is a bugfix release, that also includes some minor new additions and an important change in the way how SPLINE entities are created from fit points only.
Up to this version, the control-points calculated by ezdxf for SPLINE entities from
fit-points only did not match the control-points calculated by CAD applications.
After more than two years, Antonio Spagnuolo
answered my question
about how to get the same control points as CAD applications on stack overflow.
The solution does not require an end tangent estimate, so the tangent estimate arguments
have been removed from the associated methods and functions.
Bugfix release.
Bugfix & preview release.
DXFTagStorage.graphic_properties() returns the graphical properties for unknown
or unsupported DXF entitiesGfxAttribs.from_dict()ezdxf.addons.r12export module to export any DXF document as a simple R12
file, final release in v1.1ezdxf.r12strict module to make DXF R12 drawing 100% compatible to Autodesk
products, final release in v1.1ezdxf.transform module to apply transformations to multiple DXF entities
inplace in a more convenient and safe way, final release in v1.1Drawing.validate() also prints report of resolved issuesPDFUNDERLAY, DWFUNDERLAY and DGNUNDERLAYDrawing.get_abs_filepath()UNDERLAY entities is now 10 (underlay is on, adjust for background)INSERT and POLYLINE entitiesset_lineweight_display_style() in module ezdxf.appsettingsset_current_dimstyle_attribs() in module ezdxf.appsettingsezdxf info command shows unknown/unsupported entities in statsfit_points_to_cad_cv() can calculate the control points of
B-splines from fit points like BricsCAD, the argument estimate is not necessary
anymore and was removedestimate from factory method add_cad_spline_control_frame(), see aboveProxyGraphic classezdxf.render.forms.cylinder_2p() for cylinder axis parallel to z-axis ezdxf.render.forms.cone_2p() for cone axis parallel to z-axis TextstyleTable class Drawing.paperspace(), a correct type-annotated method to get paperspace
layouts Drawing.page_setup(), simple way to set up paperspace layoutsUNIX_EXEC_PATH config option for the ODAFC add-on.
This may help if the which command can not find the ODAFileConverter command
and also adds support for AppImages provided by ODA.gerber_D6673
docsMTextSurrogate add-on (formerly
ezdxf.addons.MText class) TablePainter add-on (formerly the
undocumented ezdxf.addons.Table class)drawing add-onTextPath in function get_text_line_width() \U+XXXX in table names ProxyGraphic class