Minimum Requirements
for Creating a DXF File
of a 3D Model


Paul Bourke
School of Architecture, Property, and Planning
Auckland University, Private Bag, Auckland, New Zealand
Fax: +64 9 366 4665, Ph: +64 9 737 999 x7367
EMail: [email protected]

Introduction
DXF is possibly the most widespread CAD exchange format in use by CAD
packages on small computer systems. It was developed primarily by the
AutoCAD developers and has thus received it popularity mainly from the high
number of AutoCAD stations. Most CAD systems can export and most also
import DXF, at least for 2D data.
This document describes the minimum requirements needed to create a DXF
description of some 3D object and/or scene. This description is not complete by
any means but contains enough information for describing the geometry of 3D
models.
A DXF file consists of the following sections: header, tables, blocks, and entities.
The file contains a set of groups each of which occupies two lines in the file. The
first line is called the group code, it is an integer in the range of 0 to 999. The
second line is called the value which depends on the group code.
The group code indicates the type of value that follows according to the table
below.
Group code      Value type
0-9     string
10-59   real number
60-79   integer
210-239 real number
999     comment

Header comment and header section
It is common for the first line of a DXF file to contain a comment, the group code
for comments is 999. A standard convention is to describe the creator of the DXF
file in this comment. It might also be relevant to include the date and time of
creation.
The header section contains general information about the drawing, these are
only relevant when creating specialised DXF files for AutoCAD. Some examples
of what can be included in the header section are: version numbers, unit
specification, current layer, grid spacing, tolerances, drawing bounds, fill mode
and pattern, etc. Programs that read DXF files will have sensible defaults for these
parameters. Since we are only interested in the transfer of the geometry we don't
need a header section. It is good form to include one even though it's empty
because some importing software gets confused without it. A header comment
and empty header section may look like the following.
999
DXF created from <program name>
0
SECTION
2
HEADER
0
ENDSEC

Tables Section
These can be used to specify predefined constants, line styles, text styles, view
tables, user coordinate systems, etc. We will only use tables to define some layers
for use later on. Note: not all programs that support DXF import will support
layers and those that do usually insist on the layers being defined before use. The
following will initialise layers 1 and 2 for use later on.
0
SECTION
2
TABLES
0
TABLE
2
LAYER
0
LAYER
2
1
0
LAYER
2
2
0
ENDTAB
0
ENDSEC

Blocks section
Not necessary here but it's good form to include one anyway. The following is an
empty block section.
0
SECTION
2
BLOCKS
0
ENDSEC

Entities section
The entities section is where the geometric elements of the model or scene are
described. The following is the standard form of the entities section.
0
SECTION
2
ENTITIES
<Geometric entities go here>
0
ENDSEC

Colour
Only index colour is supported, it is done with group code 62 within an entity
description. The value is the colour index. The way the colours are mapped is
dependent on the application and the hardware capabilities. To determine the
colour mappings on a particular system create a number of lines segments each
with a different colour and import that into the CAD package. Many packages
that don't use an index colour model will simply ignore the colour instruction.
See appendix 1 for a sample DXF file to determine the first 64 index colours on
your system. The following will specify index colour 4
62
4

Layers
Layer numbers are specified with group code 8 within an entity description. The
layers to be used should be defined as described earlier in the tables section. Most
DXF importers will insist on predefining the layers in the tables. Note: the
number of layers possible will vary on the software used to import the DXF file.
The following indicates that the current entity is to be placed on layer 2
8
2

Geometry
DXF explicitly supports two 3D primitive types, namely, 3DFACE and 3DLINE
(usual to just use plain LINE primitive). LINE consists of the two endpoints,
3DFACE specifies either three or four vertex facets (polygonal bounded planes).
All four vertices must be specified, in the case of a three point facet the last vertex
is specified twice. In general vertex group codes are numbers 10,20,30 for the first
(x,y,z) triple, 11,21,31 for the second, 12,22,32 for the third and 13,23,33 for the
fourth. Each vertex group code is followed by the appropriate coordinate value.
Note: that there is no requirement for the four vertices specifying the facet to be
planar but it may be important for the software that imports the DXF file. The
vertices can be ordered clockwise or anticlockwise with respect to the outward
pointing normal, however some modellers may insist on a particular
orientation, especially rendering software.

The following specifies a line on layer 2 of index colour number 4 between the
points (8500, -12563.4, 0) and (8500, -12563.4, 4150.99)
0
LINE
8
2
62
4
10
8500
20
-12563.4
30
0
11
8500
21
-12563.4
31
4150.99

The following specifies a 4 vertex facet on layer 1 with index colour number 3.
0
3DFACE
8
1
62
3
10
3000
20
10000
30
5419.35
11
4000
21
10000
31
5605.46
12
4000
22
11000
32
4861.04
13
3000
23
11000
33
4674.94

End of file
This simply indicates the end of the DXF file, it is not usually necessary but good
form.
0
EOF

Appendix 1
The following file can be used to determine the colour mapping used on your
system. It contains 64 line segments with colours from 0 to 63. Note that many
CAD packages only support 8 colours, also the following will indicate whether
your package starts its colour numbering at 0 or 1 (the two most common
choices)
This DXF document is not listed here to be copied, rather enquire about an
electronic version.

999
Colour
0
SECTION
2
HEADER
0
ENDSEC
0
SECTION
2
TABLES
0
TABLE
2
LAYER
0
LAYER
2
1
0
ENDTAB
0
ENDSEC
0
SECTION
2
BLOCKS
0
ENDSEC
0
SECTION
2
ENTITIES
0
LINE
8
1
62
0
10
0
20
0
30
0
11
0
21
0
31
1
0
LINE
8
1
62
1
10
0.05
20
0
30
0
11
0.05
21
0
31
1
0
LINE
8
1
62
2
10
0.1
20
0
30
0
11
0.1
21
0
31
1
0
LINE
8
1
62
3
10
0.15
20
0
30
0
11
0.15
21
0
31
1
0
LINE
8
1
62
4
10
0.2
20
0
30
0
11
0.2
21
0
31
1
0
LINE
8
1
62
5
10
0.25
20
0
30
0
11
0.25
21
0
31
1
0
LINE
8
1
62
6
10
0.3
20
0
30
0
11
0.3
21
0
31
1
0
LINE
8
1
62
7
10
0.35
20
0
30
0
11
0.35
21
0
31
1
0
LINE
8
1
62
8
10
0.4
20
0
30
0
11
0.4
21
0
31
1
0
LINE
8
1
62
9
10
0.45
20
0
30
0
11
0.45
21
0
31
1
0
LINE
8
1
62
10
10
0.5
20
0
30
0
11
0.5
21
0
31
1
0
LINE
8
1
62
11
10
0.55
20
0
30
0
11
0.55
21
0
31
1
0
LINE
8
1
62
12
10
0.6
20
0
30
0
11
0.6
21
0
31
1
0
LINE
8
1
62
13
10
0.65
20
0
30
0
11
0.65
21
0
31
1
0
LINE
8
1
62
14
10
0.7
20
0
30
0
11
0.7
21
0
31
1
0
LINE
8
1
62
15
10
0.75
20
0
30
0
11
0.75
21
0
31
1
0
LINE
8
1
62
16
10
0.8
20
0
30
0
11
0.8
21
0
31
1
0
LINE
8
1
62
17
10
0.85
20
0
30
0
11
0.85
21
0
31
1
0
LINE
8
1
62
18
10
0.9
20
0
30
0
11
0.9
21
0
31
1
0
LINE
8
1
62
19
10
0.95
20
0
30
0
11
0.95
21
0
31
1
0
LINE
8
1
62
20
10
1
20
0
30
0
11
1
21
0
31
1
0
LINE
8
1
62
21
10
1.05
20
0
30
0
11
1.05
21
0
31
1
0
LINE
8
1
62
22
10
1.1
20
0
30
0
11
1.1
21
0
31
1
0
LINE
8
1
62
23
10
1.15
20
0
30
0
11
1.15
21
0
31
1
0
LINE
8
1
62
24
10
1.2
20
0
30
0
11
1.2
21
0
31
1
0
LINE
8
1
62
25
10
1.25
20
0
30
0
11
1.25
21
0
31
1
0
LINE
8
1
62
26
10
1.3
20
0
30
0
11
1.3
21
0
31
1
0
LINE
8
1
62
27
10
1.35
20
0
30
0
11
1.35
21
0
31
1
0
LINE
8
1
62
28
10
1.4
20
0
30
0
11
1.4
21
0
31
1
0
LINE
8
1
62
29
10
1.45
20
0
30
0
11
1.45
21
0
31
1
0
LINE
8
1
62
30
10
1.5
20
0
30
0
11
1.5
21
0
31
1
0
LINE
8
1
62
31
10
1.55
20
0
30
0
11
1.55
21
0
31
1
0
LINE
8
1
62
32
10
1.6
20
0
30
0
11
1.6
21
0
31
1
0
LINE
8
1
62
33
10
1.65
20
0
30
0
11
1.65
21
0
31
1
0
LINE
8
1
62
34
10
1.7
20
0
30
0
11
1.7
21
0
31
1
0
LINE
8
1
62
35
10
1.75
20
0
30
0
11
1.75
21
0
31
1
0
LINE
8
1
62
36
10
1.8
20
0
30
0
11
1.8
21
0
31
1
0
LINE
8
1
62
37
10
1.85
20
0
30
0
11
1.85
21
0
31
1
0
LINE
8
1
62
38
10
1.9
20
0
30
0
11
1.9
21
0
31
1
0
LINE
8
1
62
39
10
1.95
20
0
30
0
11
1.95
21
0
31
1
0
LINE
8
1
62
40
10
2
20
0
30
0
11
2
21
0
31
1
0
LINE
8
1
62
41
10
2.05
20
0
30
0
11
2.05
21
0
31
1
0
LINE
8
1
62
42
10
2.1
20
0
30
0
11
2.1
21
0
31
1
0
LINE
8
1
62
43
10
2.15
20
0
30
0
11
2.15
21
0
31
1
0
LINE
8
1
62
44
10
2.2
20
0
30
0
11
2.2
21
0
31
1
0
LINE
8
1
62
45
10
2.25
20
0
30
0
11
2.25
21
0
31
1
0
LINE
8
1
62
46
10
2.3
20
0
30
0
11
2.3
21
0
31
1
0
LINE
8
1
62
47
10
2.35
20
0
30
0
11
2.35
21
0
31
1
0
LINE
8
1
62
48
10
2.4
20
0
30
0
11
2.4
21
0
31
1
0
LINE
8
1
62
49
10
2.45
20
0
30
0
11
2.45
21
0
31
1
0
LINE
8
1
62
50
10
2.5
20
0
30
0
11
2.5
21
0
31
1
0
LINE
8
1
62
51
10
2.55
20
0
30
0
11
2.55
21
0
31
1
0
LINE
8
1
62
52
10
2.6
20
0
30
0
11
2.6
21
0
31
1
0
LINE
8
1
62
53
10
2.65
20
0
30
0
11
2.65
21
0
31
1
0
LINE
8
1
62
54
10
2.7
20
0
30
0
11
2.7
21
0
31
1
0
LINE
8
1
62
55
10
2.75
20
0
30
0
11
2.75
21
0
31
1
0
LINE
8
1
62
56
10
2.8
20
0
30
0
11
2.8
21
0
31
1
0
LINE
8
1
62
57
10
2.85
20
0
30
0
11
2.85
21
0
31
1
0
LINE
8
1
62
58
10
2.9
20
0
30
0
11
2.9
21
0
31
1
0
LINE
8
1
62
59
10
2.95
20
0
30
0
11
2.95
21
0
31
1
0
LINE
8
1
62
60
10
3
20
0
30
0
11
3
21
0
31
1
0
LINE
8
1
62
61
10
3.05
20
0
30
0
11
3.05
21
0
31
1
0
LINE
8
1
62
62
10
3.1
20
0
30
0
11
3.1
21
0
31
1
0
LINE
8
1
62
63
10
3.15
20
0
30
0
11
3.15
21
0
31
1
0
ENDSEC
0
EOF



Appendix 2
The following example is a complete description of a line, a triangular facet, and
a four pointed facet. All the objects are on layer 1, and have colour index 1. This
can be used to test whether the DXF importer you are using supports all of these
3D primitives. The resulting model should look like the following.



This DXF document is not listed here to be copied, rather enquire about an
electronic version.

999
VISION3D DXF
0
SECTION
2
HEADER
0
ENDSEC
0
SECTION
2
TABLES
0
TABLE
2
LAYER
0
LAYER
2
1
0
ENDTAB
0
ENDSEC
0
SECTION
2
BLOCKS
0
ENDSEC
0
SECTION
2
ENTITIES

0
3DFACE
8
1
62
1
10
-0.5
20
-0.5
30
-0.5
11
-0.5
21
0.5
31
-0.5
12
0.5
22
0.5
32
-0.5
13
0.5
23
-0.5
33
-0.5

0
3DFACE
8
1
62
1
10
-0.5
20
-0.5
30
-0.5
11
0.5
21
-0.5
31
-0.5
12
0
22
-0.5
32
0.5
13
0
23
-0.5
33
0.5

0
LINE
8
1
62
1
10
0
20
-0.5
30
0.5
11
0
21
0.5
31
-0.5
0
ENDSEC
0
EOF