Qcad drawing exported to DXF, which is subsequently opened in FreeCAD
Two importers are available, which one is used can be specified under Edit → Preferences... → Import-Export → DXF. One is built-in, C++-based and fast, the other is legacy, coded in Python, slower, and requires the installation of an add-on, but can handle some entities better and can create more refined FreeCAD objects. Both support all DXF versions starting from R12.
3D objects inside a DXF file are stored under a binary ACIS/SAT blob, which at the moment cannot be read by FreeCAD. Simpler entities like 3DFACEs, though, are supported.
The following DXF objects can be imported:
- polylines (and lwpolylines)
- texts and mtexts
- blocks (only geometry. texts, dimensions and attributes inside blocks will be skipped)
- paper space objects
There are also two exporters. The legacy exporter exports in the R12 DXF format, the C++ exporter in the R14 DXF format. Both formats can be handled by many applications.
Some of the features and limitations of this exporter are:
- All FreeCAD 2D geometry is exported, except Draft CubicBezCurves, Draft BezCurves and Draft Points.
- Straight edges from faces of 3D objects are exported, but curved edges only if they are on a plane parallel to the XY plane of the global coordinate system. Note that a DXF created from 3D objects will contain duplicate lines.
- Texts and dimensions are not exported.
- Colors are ignored.
- Layers are mapped from object names.
The following FreeCAD objects can be exported:
- All FreeCAD 2D geometry such as Draft objects and sketches.
- 3D objects are exported as a flattened 2D view.
- Compound objects are exported as blocks.
- Colors are mapped from objects RGB colors to autocad color index (ACI). Black will always be "by layer".
- Layers are mapped from group names. When groups are nested, the deepest group gives the layer name.
- Dimensions, which are exported with "Standard" dimstyle.
For more information see: Import Export Preferences.
You can export elements to DXF by using the following function:
importDXF.export(objectslist, filename, nospline=False, lwPoly=False)
import Draft, importDXF Polygon1 = Draft.makePolygon(3, radius=500) Polygon2 = Draft.makePolygon(5, radius=1500) objects = [Polygon1, Polygon2] importDXF.export(objects, "/home/user/Pictures/myfile.dxf")