DXF File Structure¶
A DXF File is simply an ASCII text file with a file type of .dxf and special formatted text. The basic file structure
are DXF tags, a DXF tag consist of a DXF group code as an integer value on its own line and a the DXF value on the
following line. In the ezdxf documentation DXF tags will be written as (group code, value)
. There exist
a binary DXF format, but it seems that it is not often used and for reducing file size, zipping is much more efficient.
ezdxf does support reading binary encoded DXF files.
See also
For more information about DXF tags see: DXF Tags
A usual DXF file is organized in sections, starting with the DXF tag (0, ‘SECTION’) and ending with the DXF tag (0, ‘ENDSEC’). The (0, ‘EOF’) tag signals the end of file.
HEADER: General information about the drawing is found in this section of the DXF file. Each parameter has a variable name starting with ‘$’ and an associated value. Has to be the first section.
CLASSES: Holds the information for application defined classes. (DXF R13 and later)
TABLES:: Contains several tables for style and property definitions.
Linetype table (LTYPE)
Layer table (LAYER)
Text Style table (STYLE)
View table (VIEW): (IMHO) layout of the CAD working space, only interesting for interactive CAD applications
Viewport configuration table (VPORT): The VPORT table is unique in that it may contain several entries with the same name (indicating a multiple-viewport configuration). The entries corresponding to the active viewport configuration all have the name *ACTIVE. The first such entry describes the current viewport.
Dimension Style table (DIMSTYLE)
User Coordinate System table (UCS) (IMHO) only interesting for interactive CAD applications
Application Identification table (APPID): Table of names for all applications registered with a drawing.
Block Record table (BLOCK_RECORD) (DXF R13 and Later)
BLOCKS: Contains all block definitions. The block name *Model_Space or *MODEL_SPACE is reserved for the drawing modelspace and the block name *Paper_Space or *PAPER_SPACE is reserved for the active paperspace layout. Both block definitions are empty, the content of the modelspace and the active paperspace is stored in the ENTITIES section. The entities of other layouts are stored in special block definitions called *Paper_Spacennn, nnn is an arbitrary but unique number.
ENTITIES: Contains all graphical entities of the modelspace and the active paperspace layout. Entities of other layouts are stored in the BLOCKS sections.
OBJECTS: Contains all non-graphical objects of the drawing (DXF R13 and later)
THUMBNAILIMAGE: Contains a preview image of the DXF file, it is optional and can usually be ignored. (DXF R13 and later)
ACDSDATA: (DXF R2013 and later) No information in the DXF reference about this section
END OF FILE
For further information read the original DXF Reference.
Structure of a usual DXF R12 file:
0 <<< Begin HEADER section, has to be the first section
SECTION
2
HEADER
<<< Header variable items go here
0 <<< End HEADER section
ENDSEC
0 <<< Begin TABLES section
SECTION
2
TABLES
0
TABLE
2
VPORT
70 <<< viewport table maximum item count
<<< viewport table items go here
0
ENDTAB
0
TABLE
2
APPID, DIMSTYLE, LTYPE, LAYER, STYLE, UCS, VIEW, or VPORT
70 <<< Table maximum item count, a not reliable value and ignored by AutoCAD
<<< Table items go here
0
ENDTAB
0 <<< End TABLES section
ENDSEC
0 <<< Begin BLOCKS section
SECTION
2
BLOCKS
<<< Block definition entities go here
0 <<< End BLOCKS section
ENDSEC
0 <<< Begin ENTITIES section
SECTION
2
ENTITIES
<<< Drawing entities go here
0 <<< End ENTITIES section
ENDSEC
0 <<< End of file marker (required)
EOF
Minimal DXF Content¶
DXF R12¶
Contrary to the previous chapter, the DXF R12 format (AC1009) and prior requires just the ENTITIES section:
0
SECTION
2
ENTITIES
0
ENDSEC
0
EOF
DXF R13/R14 and later¶
DXF version R13/14 and later needs much more DXF content than DXF R12.
Required sections: HEADER, CLASSES, TABLES, ENTITIES, OBJECTS
The HEADER section requires two entries:
$ACADVER
$HANDSEED
The CLASSES section can be empty, but some DXF entities requires class definitions to work in AutoCAD.
The TABLES section requires following tables:
VPORT entry *ACTIVE is not required! Empty table is ok for AutoCAD.
LTYPE with at least the following line types defined:
BYBLOCK
BYLAYER
CONTINUOUS
LAYER with at least an entry for layer ‘0’
STYLE with at least an entry for style STANDARD
VIEW can be empty
UCS can be empty
APPID with at least an entry for ACAD
DIMSTYLE with at least an entry for style STANDARD
BLOCK_RECORDS with two entries:
*MODEL_SPACE
*PAPER_SPACE
The BLOCKS section requires two BLOCKS:
*MODEL_SPACE
*PAPER_SPACE
The ENTITIES section can be empty.
The OBJECTS section requires following entities:
DICTIONARY - the root dict - one entry named ACAD_GROUP
DICTIONARY ACAD_GROUP can be empty
Minimal DXF to download: https://github.com/mozman/ezdxf/tree/master/examples_dxf