R12 Export
Added in version 1.1.
This module exports any DXF file as a simple DXF R12 file. Many complex entities will be converted into DXF primitives. This exporter is intended for creating a simple file format as an input format for other software such as laser cutters. In order to get a file that can be edited well in a CAD application, the results of the ODA file converter are much better.
Usage
import ezdxf
from ezdxf.addons import r12export
doc = ezdxf.readfile("any.dxf")
r12export.saveas(doc, "r12.dxf")
Converted Entity Types
LWPOLYLINE |
translated to POLYLINE |
MESH |
translated to POLYLINE (PolyfaceMesh) |
SPLINE |
flattened to POLYLINE |
ELLIPSE |
flattened to POLYLINE |
MTEXT |
exploded into DXF primitives |
LEADER |
exploded into DXF primitives |
MLEADER |
exploded into DXF primitives |
MULTILEADER |
exploded into DXF primitives |
MLINE |
exploded into DXF primitives |
HATCH |
exploded into DXF primitives |
MPOLYGON |
exploded into DXF primitives |
ACAD_TABLE |
export of pre-rendered BLOCK content |
For proxy- or unknown entities the available proxy graphic will be exported as DXF primitives.
Limitations
Explosion of MTEXT into DXF primitives is not perfect
Pattern rendering for complex HATCH entities has issues
Solid fill rendering for complex HATCH entities has issues
ODA File Converter
The advantage of the r12export
module is that the ODA file converter
isn’t needed, but the ODA file converter will produce a much better result:
from ezdxf.addons import odafc
odafc.convert("any.dxf", "r12.dxf", version="R12")
Functions
Write a DXF document as DXF version R12 to a text stream. |
|
Write a DXF document as DXF version R12 to a file. |
|
Export and reload DXF document as DXF version R12. |
- ezdxf.addons.r12export.write(doc: Drawing, stream: TextIO, *, max_sagitta: float = MAX_SAGITTA) None
Write a DXF document as DXF version R12 to a text stream. The max_sagitta argument determines the accuracy of the curve flatting for SPLINE and ELLIPSE entities.
- Parameters:
doc – DXF document to export
stream – output stream, use
doc.encoding
as encodingmax_sagitta – maximum distance from the center of the curve to the center of the line segment between two approximation points to determine if a segment should be subdivided.
- ezdxf.addons.r12export.saveas(doc: Drawing, filepath: str | PathLike, *, max_sagitta: float = MAX_SAGITTA) None
Write a DXF document as DXF version R12 to a file. The max_sagitta argument determines the accuracy of the curve flatting for SPLINE and ELLIPSE entities.
- Parameters:
doc – DXF document to export
filepath – output filename
max_sagitta – maximum distance from the center of the curve to the center of the line segment between two approximation points to determine if a segment should be subdivided.
- ezdxf.addons.r12export.convert(doc: Drawing, *, max_sagitta: float = MAX_SAGITTA) Drawing
Export and reload DXF document as DXF version R12.
Writes the DXF document into a temporary file at the file-system and reloads this file by the
ezdxf.readfile()
function.