DXF.TXT

DXF.TXT


Remove Frame

Drawing Interchange and File Formats 
Release 12 
Copyright (c) 1982-1990, 1992, Autodesk, Inc.  
All Rights Reserved 




Chapter 11

Drawing Interchange and File Formats


AutoCAD can be used by itself as a complete drawing editor. In
some applications, however, other programs must examine drawings
created by AutoCAD or generate drawings to be viewed, modified,
or plotted with AutoCAD.

For example, if you've made an architectural drawing with
AutoCAD, using inserted parts to represent windows, doors, and so
on, you can process the drawing file and produce a bill of
materials of all items used in the drawing or even make
energy-use calculations based on the area and the number and type
of windows used. Another possible application is to use AutoCAD
to describe structures and then send the descriptions to a more
powerful computer for finite-element structural analysis. You can
compute stresses and displacements and send back information to
display the deformed structure as an AutoCAD drawing.

Since the AutoCAD drawing database (.dwg file) is written in a
compact format that changes significantly as new features are
added to AutoCAD, we do not document its format and do not
recommend that you attempt to write programs to read it directly.
To assist in interchanging drawings between AutoCAD and other
programs, a Drawing Interchange file format (DXF) has been
defined. All implementations of AutoCAD accept this format and
are able to convert it to and from their internal drawing file
representation.

AutoCAD also supports the Initial Graphics Exchange Specification
(IGES) file format. The information comprising an AutoCAD drawing
can be written out in IGES format, and IGES files can be read and
converted to the AutoCAD internal format.


ASCII Drawing Interchange (DXF) Files

This section describes the AutoCAD DXF (drawing interchange file)
format and the commands provided to read and write these files.
DXF files are standard ASCII text files. They can easily be
translated to the formats of other CAD systems or submitted to
other programs for specialized analysis. AutoCAD can also produce
or read a binary form of the full DXF file. This feature is
described in detail later in this chapter.

DXFOUT Command-Writing a DXF File

You can generate a drawing interchange file from an existing
drawing by means of the DXFOUT command:

     Command: dxfout


When AutoCAD prompts you, respond with a filename or press to
accept the default.

The default name for the output file is the same as that of the
current drawing but with a file type of dxf. If you specify an
explicit filename, you do not need to include a file type; dxf is
assumed. If a file with the same name already exists, the
existing file is deleted. If you specify the file using a file
dialogue box, and a file with the same name already exists,
AutoCAD tells you; allowing you to OK or cancel the deletion.
Next, DXFOUT asks what precision you want for floating-point
numbers and permits output of a partial DXF file containing only
selected objects.

     Enter decimal places of accuracy (0 to 16)/Entities/Binary
     <6>:

The Binary option is described later in this chapter.

If you respond with entities (or just e), DXFOUT asks you to
select the objects you want written to the DXF file. Only the
objects you select are included in the output file-symbol tables
(including Block Definitions) will not be included. Once you've
selected the desired objects, AutoCAD again prompts you for the
numeric precision:

     Enter decimal places of accuracy (0 to 16)/Binary <6>:


DXFIN Command-Loading a DXF File

A drawing interchange file can be converted into an AutoCAD
drawing by means of the DXFIN command:

     Command: dxfin

When AutoCAD prompts you, respond with the name of the drawing
interchange file to be loaded.


Full DXFIN

To load a complete DXF file, you must use DXFIN in an empty
drawing, before any entities have been drawn and before any
additional Block definitions, layers, linetypes, text styles,
dimension styles, named views, named coordinate systems, or named
viewport configurations have been created.

Note: If the drawing you are using as a prototype is not empty,
you might find it helpful to open a new drawing using the No
Prototype ... button of the Create New Drawing dialogue box, as
described in chapter 4 of the AutoCAD Reference Manual. You
should also be aware that some third-party applications include
an acad.lsp or .mnl file that modifies your drawing upon startup.

If any errors are detected during the input, the new drawing is
discarded. Otherwise, an automatic ZOOM All is performed to set
the drawing extents.


Partial DXFIN

If the current drawing is not empty, DXFIN loads only the
ENTITIES section of the DXF file, adding the entities found there
to the current drawing. In this case, DXFIN displays the message:

     Not a new drawing - only ENTITIES section will be input.

If errors are detected during such partial DXF input, the drawing
is returned to the state it was in before the DXFIN command.
Otherwise, the newly added entities are drawn.


Auditing DXF Files

To ensure that corrupt data is not imported into your drawing,
you can instruct AutoCAD to perform an audit after importing DXF
files into your drawing with DXFIN. When you use DXFIN, the
default action is to perform no automatic auditing. To activate
automatic auditing, use the CONFIG command:

     Command: config

Your current AutoCAD configuration appears. Press [ENTER] to
continue. From the Configuration menu select this option:

     7. Configure operating parameters

From the Operating parameter menu select this option:

     9. Automatic Audit after IGESIN, DXFIN, or DXBIN

Answer Y to this question:

Do you want an automatic audit after IGESIN, DXFIN, or DXBIN?
<N>: y

Return to the graphics screen by pressing [ENTER] three times.

Note. This kind of audit only displays the errors AutoCAD finds;
it does not correct them. To correct problems, use the AUDIT
command on the drawing while you are in AutoCAD, or manually edit
the DXF file.


DXF File Format

This section describes the format of a DXF file in detail. It
contains technical information that you need only if you write
your own programs to process DXF files or work with entity
information obtained by certain AutoLISP and ADS functions.

It would probably be helpful to produce a DXF file from a small
drawing, print it out, and refer to it occasionally while reading
the information presented next.


General File Structure

A Drawing Interchange File is simply an ASCII text file with a
file type of .dxf and specially formatted text. The overall
organization of a DXF file is as follows:

1. HEADER section--General information about the drawing is found
   in this section of the DXF file. Each parameter has a variable
   name and an associated value (see table 11-3 for a list of the
   header variables).

2. TABLES section--This section contains definitions of named
   items.

   * Linetype table (LTYPE)

   * Layer table (LAYER)

   * Text Style table (STYLE)

   * View table (VIEW)

   * User Coordinate System table (UCS)

   * Viewport configuration table (VPORT)

   * Dimension Style table (DIMSTYLE)

   * Application Identification table (APPID)

3. BLOCKS section--This section contains Block Definition
   entities describing the entities that make up each Block in
   the drawing.

4. ENTITIES section--This section contains the drawing entities,
   including any Block References.

5. END OF FILE

If you use DXFOUT's Entities option, the resulting DXF file
contains only the ENTITIES section and the END OF FILE marker,
and the ENTITIES section reflects only the objects you select for
output.

Note: If you select an INSERT entity, the corresponding Block
definition is not included in the output file.

A DXF file is composed of many groups, each of which occupies two
lines in the DXF file. The first line of a group is a group code,
which is a positive nonzero integer output in FORTRAN 13--that
is, right-justified and blank filled in a three-character field
(the exception to this is the four-digit extended entity data
group codes, which are output in FORTRAN 14). The second line of
the group is the group value, in a format that depends on the
type of group specified by the group code. Although DXFOUT output
has a fixed format, the DXFIN format is free.

The specific assignment of group codes depends on the item being
described in the file. However, the type of the value this group
supplies is derived from the group code in the following war.


Table 11-1. Group code ranges

Group Code Range                     Following Value

0-9                                  String
10-59                                Floating-point
60-79                                Integer
140-147                              Floating-point
170-175                              Integer
210-239                              Floating-point
999                                  Comment (string)
1000-1009                          String
1010-1059                            Floating-point
1060-1079                            Integer

Thus a program can easily read the value following a group code
without knowing the particular use of this group in an item in
the file. The appearance of values in the DXF file is not
affected by the setting of the UNITS command: coordinates are
always represented as decimal (or possibly scientific notation if
very large) numbers, and angles are always represented in decimal
degrees with zero degrees to the east of origin.

Variables, table entries, and entities are described by a group
that introduces the item, giving its type and/or name, followed
by multiple groups that supply the values associated with the
item. In addition, special groups are used for file separators
such as markers for the beginning and end of sections, tables,
and the file itself.

Entities, table entries, and file separators are always
introduced with a 0 group code that is followed by a name
describing the item.

Note: The maximum DXF file string length is 256 characters. If
your AutoCAD drawing contains strings that exceed this number,
those strings are truncated during DXFOUT. If your DXF file
contains strings that exceed this number, DXFIN will fail.


Group Codes

Group codes are used both to indicate the type of the value of
the group, as explained earlier, and to indicate the general use
of the group. The specific function of the group code depends on
the actual variable, table item, or entity description. This
section indicates the general use of groups, noting as "(fixed)"
any that always have the same function.


Table 11-2. AutoCAD entity group codes (by number)

Group code      Value Type

0               identifies the start of an entity, table entry,
or
                file separator. The type of entity is given by
                the text value that follows this group

1               The primary text value for an entity

2               A name: Attribute tag, Block name, and so on.
                Also used to identify a DXF section or table name

3-4             Other textual or name values

5               Entity handle expressed as a hexadecimal string
                (fixed)

6               Line type name (fixed)

7               Text style name (fixed)

8               Layer name (fixed)

9               Variable name identifier (used only in HEADER
                section of the DXF file)

10              Primary X coordinate (start point of a Line or
                Text entity, center of a Circle, etc.)

11-18           Other X coordinates

20              Primary Y coordinate. 2n values always correspond
                to 1n values and immediately follow them in the
                file

21-28           Other Y coordinates

30              Primary Z coordinate. 3n values always correspond
                to 1n and 2n values and immediately follow them
                in the file

31-37           Other Z coordinates

38              This entity's elevation if nonzero (fixed).
                Exists only in output from versions prior to R11

39              This entity's thickness if nonzero (fixed)

40-48           Floating-point values (text height, scale
                factors, etc.)

49              Repeated value-multiple 49 groups may appear in
                one entity for variable length tables (such as
                the dash lengths in the LTYPE table). A 7x group
                always appears before the first 49 group to
                specify the table length

50-58           Angles

62              Color number (fixed)

66              "Entities follow" flag (fixed)

67              Identifies whether entity is in model space or
                paper space

68              Identifies whether viewport is on but fully off
                screen, is not active, or is off

69              Viewport identification number

70-78           Integer values such as repeat counts, flag bits,
                or modes

210, 220. 230   X, Y, and Z components of extrusion direction
                (fixed)

999             Comments

1000            An ASCII string (up to 255 bytes long) in
                extended entity data

1001            Registered application name (ASCII string up to
                31 bytes long) for XDATA (fixed)

1002            Extended entity data control string ("{" or "}
                ");(fixed)

1003            Extended entity data Layer name

1004            Chunk of bytes (up to 127 bytes long) in extended
                entity data

1005            Extended entity data database handle

1010,1020,1030  Extended entity data X, Y, and Z coordinates

1011,1021,1031  Extended entity data X, Y, and Z coordinates of
                3D world space position

1012,1022,1032  Extended entity data X, Y, and Z components of 3D
                world space displacement

1013,1023,1033  Extended entity data X, Y, and Z components of 3D
                world space direction

1040            Extended entity data Floating-point value

1041            Extended entity data distance value

1042            Extended entity data scale factor

1070            Extended entity data 16-bit signed integer

1071            Extended entity data 32-bit signed long


Comments

The 999 group code indicates that the following line is a comment
string. DXFOUT does not currently include such groups in a DXF
output file, but DXFIN honors them and ignores the comments.
Thus, you can use the 999 group to include comments in a DXF file
you've edited. For example:

999
This is a comment.
999
This is another comment.


File Sections

The DXF file is subdivided into four editable sections, plus the
END OF FILE marker. File separator groups are used to delimit
these file sections. The following is an example of a void DXF
file with only the section markers and table headers present:

0               (Begin HEADER section)
SECTION
2
HEADER
                <<<<Header variable items go here>>>>
0
ENDSEC          (End HEADER section)
 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)
                <<<<Table items go here>>>>
0
ENDTAB
0
ENDSEC          (End TABLES section)
0               (Begin BLOCKS section)
SECTION
2
BLOCKS
                <<<<Block definition entities go here>>>>
0
ENDSEC          (End BLOCKS section)
0               (Begin ENTITIES section)
SECTION
2
ENTITIES
                <<<<Drawing entities go here>>>>
0
ENDSEC          (End ENTITIES section)
0
EOF             (End of file)


HEADER Section

The HEADER section of the DXF file contains settings of variables
associated with the drawing. These variables are set with various
commands and are the type of information displayed by the STATUS
command. Each variable is specified in the header section by a 9
group giving the variable's name, followed by groups that supply
the variable's value. The following list shows the header
variables and their meanings.

Although this list is very similar to the list of system
variables in Appendix A of this manual, the two lists are not
identical. Be sure you're referring to the proper list.

Note: $AXISMODE and $AXISUNIT are no longer functional in Release
      12.


Table 11-3. DXF system variables

Variable           Type       Description

$ACADVER           1          The AutoCAD drawing database
                              version number, AC1006 = R10,
                              AC1009 = R11 and R12
$ANGBASE           50         Angle 0 direction
$ANGDIR            70         1 = clockwise angles, 0 =
                              counterclockwise
$ATTDIA            70         Attribute entry dialogs, 1 = on, 0
                              = off
$ATTMODE           70         Attribute Visibility: 0 = none, 1 =
                              normal, 2 = all
$ATTREQ            70         Attribute prompting during INSERT,
                              1 = on, 0 = off
$AUNITS            70         Units format for angles
$AUPREC            70         Units precision for angles

$AXISMODE          70         Axis on if nonzero (not functional
                              in Release 12)
$AXISUNIT          10,20      Axis X and Y tick spacing
                              (not functional in Release 12)
$BLIPMODE          70         Blip mode on if nonzero
$CECOLOR           62         Entity color number, 0 = BYBLOCK,
                              256 = BYLAYER
$CELTYPE           6          Entity linetype name, or BYBLOCK or
                              BYLAYER
$CHAMFERA          40         First chamfer distance
$CHAMFERB          40         Second chamfer distance
$CLAYER            8          Current layer name
$COORDS            70         0 = static coordinate display, 1 =
                              continuous update, 2 = "d<a" format
$DIMALT            70         Alternate unit dimensioning
                              performed if nonzero
$DIMALTD           70         Alternate unit decimal places
$DIMALTF           40         Alternate unit scale factor
$DIMAPOST          1          Alternate dimensioning suffix
$DIMASO            70         1 = create associative
                              dimensioning, draw individual
                              entities
$DIMASZ            40         Dimensioning arrow size
$DIMBLK            2          Arrow block name
$DIMBLK1           1          First arrow block name
$DIMBLK2           1          Second arrow block name
$DIMCEN            40         Size of center mark/lines
$DIMCLRD           70         Dimension line color, range is 0 =
                              BYBLOCK, 256 = BYLAYER
$DIMCLRE           70         Dimension extension line color,
                              range is 0 = BYBLOCK, 256 = BYLAYER
$DIMCLRT           70         Dimension text color, range is 0 =
                              BYBLOCK, 256 = BYLAYER
$DIMDLE            40         Dimension line extension
$DIMDLI            40         Dimension line increment
$DIMEXE            40         Extension line extension
$DIMEXO            40         Extension line offset
$DIMGAP            40         Dimension line gap
$DIMLFAC           40         Linear measurements scale factor
$DIMLIM            70         Dimension limits generated if
                              nonzero
$DIMPOST           1          General dimensioning suffix
$DIMRND            40         Rounding value for dimension
                              distances
$DIMSAH            70         Use separate arrow blocks d nonzero
$DIMSCALE          40         Overall dimensioning scale factor
$DIMSE1            70         First extension line suppressed if
                              nonzero
$DIMSE2            70         Second extension line suppressed if
                              nonzero
$DIMSHO            70         1 = Recompute dimensions while
                              dragging, 0 = drag original image
$DIMSOXD           70         Suppress outside-extensions
                              dimension lines if nonzero
$DIMSTYLE          2          Dimension style name
$DIMTAD            70         Text above dimension line if
                              nonzero
$DIMTFAC           40         Dimension tolerance display scale
                              factor
$DIMTIH            70         Text inside horizontal if nonzero
$DIMTIX            70         Force text inside extensions if
                              nonzero
$DIMTM             40         Minus tolerance
$DIMTOFL           70         If text outside extensions, force
                              line extensions between extensions
                              if nonzero
SDIMTOH            70         Text outside horizontal if nonzero
$DIMTOL            70         Dimension tolerances generated if
                              nonzero
$DIMTP             40         Plus tolerance
$DIMTSZ            40         Dimensioning tick size: 0 = no
                              ticks
$DIMTVP            40         Text vertical position
$DIMTXT            40         Dimensioning text height
$DIMZIN            70         Zero suppression for "feet & inch"
                              dimensions
$DWGCODEPAGE       70         Drawing code page. Set to the
                              system code page when a new drawing
                              is created, but not otherwise
                              maintained by AutoCAD
$DRAGMODE          70         0 = off, 1 = on, 2 = auto
$ELEVATION         40         Current elevation set by ELEV
                              command
$EXTMAX            10,20,30   X, Y, and Z drawing extents
                              upper-right corner (in WCS)
$EXTMIN            10,20,30   X, Y, and Z drawing extents
                              lower-left corner (in WCS)
$FILLETRAD         40         Fillet radius
$FILLMODE          70         Fill mode on if nonzero
$HANDLING          70         Handles enabled if nonzero
$HANDSEED          5          Next available handle
$INSBASE           10,20,30   Insertion base set by BASE command
                              (in WCS)
$LIMCHECK          70         Nonzero if limits checking is on
$LIMMAX            10,20      XY drawing limits upper-right
                              corner (in WCS)
$LIMMIN            10,20      XY drawing limits lower-left corner
                              (in WCS)
$LTSCALE           40         Global linetype scale


$LUNITS            70         Units format for coordinates and
                              distances
$LUPREC            70         Units precision for coordinates and
                              distances
$MAXACTVP          70         Sets maximum number of viewports to
                              be regenerated
$MENU              1          Name of menu file
$MIRRTEXT          70         Mirror text if nonzero
$ORTHOMODE         70         Ortho mode on if nonzero
$OSMODE            70         Running object snap modes
$PDMODE            70         Point display mode
$PDSIZE            40         Point display size
$PELEVATION        40         Current paper space elevation
$PEXTMAX           10,20,30   Maximum X, Y, and Z extents for
                              paper space
$PEXTMIN           10,20,30   Minimum X, Y, and Z extents for
                              paper space
$PLIMCHECK         70         Limits checking in paper space when
                              nonzero
$PLIMMAX           10,20      Maximum X and Y limits in paper
                              space
$PLIMMIN           10,20      Minimum X and Y limits in paper
                              space
$PLINEGEN          70         Governs the generation of linetype
                              patterns around the vertices of a
                              2D Polyline
                              1 = linetype is generated in a
                              continuous pattern around vertices
                              of the Polyline
                              0 = each segment of the Polyline
                              starts and ends with a dash
$PLINEWID          40         Default Polyline width
$PSLTSCALE         70         Controls paper space linetype
                              scaling
                              1 = no special linetype scaling
                              0 = viewport scaling governs
                              linetype scaling
$PUCSNAME          2          Current paper space UCS name

$PUCSORG           10,20,30   Current paper space UCS origin
$PUCSXDIR          10,20,30   Current paper space UCS X axis
$PUCSYDIR          10,20,30   Current paper space UCS Y axis
$QTEXTMODE         70         Quick text mode on if nonzero
$REGENMODE         70         REGENAUTO mode on if nonzero
$SHADEDGE          70         0 = faces shaded, edges not
                              highlighted
                              1 = faces shaded, edges highlighted
                              in black
                              2 = faces not filled, edges in
                              entity color
                              3 = faces in entity color, edges in
                              black
$SHADEDIF          70         Percent ambient/diffuse light,
                              range 1 - 100, default 70
$SKETCHINC         40         Sketch record increment
$SKPOLY            70         0 = sketch lines, 1 = sketch
                              polylines
$SPLFRAME          70         Spline control polygon display, 1 =
                              on, 0 = off
$SPLINESEGS        70         Number of line segments per spline
                              patch
$SPLINETYPE        70         Spline curve type for PEDIT Spline
                              (See your AutoCAD Reference Manual)
$SURFTAB1          70         Number of mesh tabulations in first
                              direction
$SURFTAB2          70         Number of mesh tabulations in
                              second direction
$SURFTYPE          70         Surface type for PEDIT Smooth
                              (See your AutoCAD Reference Manual)
$SURFU             70         Surface density (for PEDIT Smooth)
                              in M direction
$SURFV             70         Surface density (for PEDIT Smooth)
                              in N direction
$TDCREATE          40         Date/time of drawing creation
$TDINDWG           40         Cumulative editing time for this
                              drawing
$TDUPDATE          40         Date/time of last drawing update
$TDUSRTIMER        40         User elapsed timer
$TEXTSIZE          40         Default text height
$TEXTSTYLE         7          Current text style name
$THICKNESS         40         Current thickness set by ELEV
                              command
$TILEMODE          70         1 for previous release
                              compatibility mode, 0 otherwise
$TRACEWID          40         Default Trace width
$UCSNAME           2          Name of current UCS
$UCSORG            10,20,30   Origin of current UCS (in WCS)
$UCSXDIR           10,20,30   Direction of current UCS's X axis
                              (in World coordinates)
$UCSYDIR           10,20,30   Direction of current UCSs Yaxis (in
                              World coordinates)
$UNITMODE          70         Low bit set = display fractions,
                              feet-and-inches, and surveyor's
                              angles in input format
$USERI1 - 5        70         Five integer variables intended for
                              use by third-party developers
$USERR1 - 5        40         Five real variables intended for
                              use by third-party developers
$USRTIMER          70         0 = timer off, 1 = timer on
$VISRETAIN         70         0 = don't retain Xref-dependent
                              visibility settings,
                              1 = retain Xref-dependent
                              visibility settings
$WORLDVIEW         70         1 = set UCS to WCS during
                              DVIEW/VPOINT,
                              0 = don't change UCS


The following header variables existed prior to AutoCAD Release
11 but now have independent settings for each active viewport.
DXFIN honors these variables when read from DXF files, but if a
VPORT symbol table with *ACTIVE entries is present (as is true
for any DXF file produced by Release 11 or higher), the values in
the VPORT table entries override the values of these header
variables.


Table 11-4. Revised VPORT header variables

Variable           Type       Description
     
$FASTZOOM          70         Fast zoom enabled if nonzero
$GRIDMODE          70         Grid mode on if nonzero
$GRIDUNIT          10,20      Grid X and Y spacing
$SNAPANG           50         Snap grid rotation angle
$SNAPBASE          10,20      Snap/grid base point (in UCS)
$SNAPISOPAIR       70         Isometric plane: 0 = left, 1 = top,
                              2 = right
$SNAPMODE          70         Snap mode on if nonzero
$SNAPSTYLE         70         Snap style: 0 = standard,
                              1 = isometric
$SNAPUNIT          10,20      Snap grid X and Y spacing
$VIEWCTR           10,20      XY center of current view on screen
$VIEWDIR           10,20,30   Viewing direction (direction from
                              target, in WCS)
$VIEWSIZE          40         Height of view

The date/time variables ($TDCREATE and $TDUPDATE) are output as
real numbers in the following format:

     <Julian date>.<Fraction>

The elapsed time variables ($TDINDWG and $TDUSRTIMER) have a
similar format:

     <Number of days>.<Fraction>

The date and time variables are described on page 297.


TABLES Section

The TABLES section contains several tables, each of which
contains a variable number of table entries.

The order of the tables may change, but the LTYPE table will
always precede the LAYER table. Each table is introduced with a 0
group with the label TABLE. This is followed by a 2 group
identifying the particular table (VPORT, LTYPE, LAYER, STYLE,
VIEW, DIMSTYLE, UCS or APPID) and a 70 group that specifies the
maximum number of table entries that may follow. Table names are
always output in uppercase characters.

The tables in a drawing can contain deleted items, but these are
not written to the DXF file. Thus, fewer table entries may follow
the table header than are indicated by the 70 group, so don't use
the count in the 70 group as an index to read in the table. This
group is provided so that a program which reads DXF files can
allocate an array large enough to hold all the table entries that
follow.

Following this header for each table are the table entries. Each
table item consists of a 0 group identifying the item type (same
as table name, e.g., LTYPE or LAYER), a 2 group giving the name
of the table entry, a 70 group specifying flags relevant to the
table entry (defined for each following table), and additional
groups that give the value of the table entry. The end of each
table is indicated by a 0 group with the value ENDTAB.

The 70 group flag bit values that apply to all table entries are
described in the following chart. Additional 70 group values that
apply to LAYER, STYLE, and VIEW table entries are described in
the appropriate sections below.


Table 11-5. Group 70 bit codes that apply to all table entries

Flag bit value     Meaning

16                 If set, table entry is externally dependent on
                   an Xref
32                 If this bit and bit 16 are both set, the
                   externally dependent Xref has been
                   successfully resolved
64                 If set, the table entry was referenced by at
                   least one entity in the drawing the last time
                   the drawing was edited. (This flag is for the
                   benefit of AutoCAD commands; it can be ignored
                   by most programs that read DXF files, and need
                   not be set by programs that write DXF files)

The following are the groups used for each type of table item.
All groups are present for each table item.

APPID     2 (user-supplied application name), 70 (standard flag
          values).

          These table entries maintain a set of names for all
          applications registered with a drawing.

DIMSTYLE  2 (dimension style name), 70 (standard flag values),
          and the following, described by dimension variable
          name: 3 (dimpost), 4 (dimapost), 5 (dimblk), 6
          (dimblk1), 7 (dimblk2), 40 (dimscale), 41 (dimasz), 42
          (dimexo), 43 (dimdli), 44 (dimexe), 45 (dimmd), 46
          (dimdle), 47 (dimtp), 48 (dimtm), 140 (dimtxt), 141
          (dimcen), 142 (dimtsz), 143 (dimaltf), 144 (dimifac),
          145 (dimtvp), 146 (dimtfac), 147 (dimgap), 71 (dimtol),
          72 (dimlim), 73 (dimtih), 74 (dimtoh), 75 (dimsel), 76
          (dimse2), 77 (dimtad), 78 (dimzin), 170 (dimalt), 171
          (dimaltd), 172 (dimtofl), 173 (dimsah), 174 (dimtix),
          175 (dimsoxd), 176 (dimcird), 177 (dimcire), 178
          (dimclrt).

LTYPE     2 (linetype name), 70 (standard flag values), 3
          (descriptive text for linetype), 72 (alignment code;
          value is always 65, the ASCII code for 'A'), 73 (number
          of dash length items), 40 (total pattern length), and
          optionally: 49 (dash length 1), 49 (dash length 2), and
          so on.

LAYER     2 (layer name), 70 (standard flag values), 62 (color
          number, negative if layer is off), 6 (linetype name).

          In addition to the standard flags, the 70 group flag is
          bit coded as follows:


Table 11-6. Group 70 bit codes for LAYER table

Flag bit value     Meaning

1                  If set, layer is frozen
2                  If set, layer is frozen by default in new
                   Viewports
3                  If set, layer is locked

          If no value (0) is set, the layer is on and thawed. The
          fourth bit (8) and the eighth bit (128) are not used.

          Xref-dependent layers are output during DXFOUT. For
          these layers, the associated linetype name in the DXF
          file is always CONTINUOUS.

STYLE     2 (style name), 70 (standard flag values), 40 (fixed
          text height; 0 if not fixed), 41 (width factor), 50
          (oblique angle), 71 (text generation flags), 42 (last
          height used), 3 (primary font filename), 4 (big-font
          file name; blank if none).

          If the third bit (4) is set in the 70 group flags, this
          is a vertically oriented text style.

          A STYLE table item is used to record shape file LOAD
          requests also. In this case the first bit (1) is set in
          the 70 group flags and only the 3 group (shape
          filename) is meaningful (all the other groups are
          output, however).

          The text generation flags are a bit-coded field with
          the following bit meanings:

Table 11-7. Group 71 bit codes for STYLE table

Flag bit value     Meaning

2                  Text is backward (mirrored in X)
4                  Text is upside down (mirrored in Y)


UCS       2 (UCS name), 70 (standard flag values), 10, 20, 30
          (origin), 11, 21, 31 (X axis direction), 12, 22, 32 (Y
          axis direction). All in World coordinates.

VIEW      2 (name of view), 70 (standard flag values), 40 and 41
          (view height and width, in DCS), 10 and 20 (view center
          point, in DCS), 11, 21, 31 (view direction from target,
          in WCS), 12, 22, 32 (target point, in WCS), 42 (lens
          length), 43 and 44 (front and back clipping
          planes-offsets from target point), 50 (twist angle), 71
          view mode (see VIEWMODE system variable in appendix A).

          If the first bit (1) is set in the 70 group flags, this
          is a paper space view.

          (See chapter 2 of the AutoLISP Programmer's Reference
          for information on DCS, the Display Coordinate System.)

VPORT     2 (viewport name), 70 (standard flag values), 10 and 20
          (lowerleft corner of viewport; 0.0 to 1.0), 11 and 21
          (upper-right corner), 12 and 22 (view center point, in
          WCS), 13 and 23 (snap base point), 14 and 24 (snap
          spacing, X and Y), 15 and 25 (grid spacing, X and Y),
          16, 26, 36 (view direction from target point), 17, 27,
          37 (view target point), 40 (view height), 41 (viewport
          aspect ratio), 42 (lens length), 43 and 44 (front and
          back clipping planes; offsets from target point), 50
          (snap rotation angle), 51 (view twist angle), 68
          (status field), 69 (ID), 71 (view mode; see VIEWMODE
          system variable in appendix A), 72 (circle zoom
          percent), 73 (fast zoom setting), 74 (UCSICON setting),
          75 (snap on/off), 76 (grid on/off), 77 (snap style), 78
          (snap isopair).

          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.


BLOCKS Section

The Blocks section of the DXF file contains all the Block
Definitions. This section contains the entities that make up the
Blocks used in the drawing, including anonymous Blocks generated
by the HATCH command and by associative dimensioning. The format
of the entities in this section is identical to those in the
Entities section described later, so see that section for
details. All entities in the Blocks section appear between Block
and Endblk entities. Block and Endblk entities appear only in the
Blocks section. Block definitions are never nested (that is, no
Block or Endblk entity ever appears within another Block-Endblk
pair), although a Block definition can contain an INSERT entity.

External References are written in the DXF file as any Block
Definition, except they also include a text string (group code 1)
of the path and filename of the External Reference. This is the
text string format:

     Xref filename


ENTITIES Section

Entity items appear in both the BLOCK and ENTITIES sections of
the
DXF file. The appearance of entities in the two sections is
identical.

The following gives the format of each entity as it appears in
the file. Some groups that define an entity always appear, and
some are optional and appear only if they differ from their
default values. In the following discussion, groups that always
occur are given by their group number and function, while
optional groups are indicated by -optional N following the group
description. N is the default value if the group is omitted.

Programs that read DXF files should not assume that the groups
describing an entity occur in the order given here. The end of
the groups that make up an entity is indicated by the next 0
group, beginning the next entity or indicating the end of the
section.

Remember that a DXF file is a complete representation of the
drawing database, and that as AutoCAD is further enhanced, new
groups will be added to entities to accommodate additional
features. Accommodating DXF files from future releases of AutoCAD
will be easier if you write your DXF processing program in a
table-driven way, ignoring any groups not presently defined, and
making no assumptions about the order of groups in an entity.

Each entity begins with a 0 group identifying the entity type.
The names used for the entities are given on the following pages.
Every entity contains an 8 group that gives the name of the layer
on which the entity resides. Each entity may have elevation,
thickness, linetype, or color information associated with it.

If handles are enabled, every entity has a 5 group containing its
handle (as a string representing a hexadecimal number).

The following groups are included only if the entity has
nondefault values for these properties. When a group is omitted,
its default value upon input (when using DXFIN) is indicated in
the third column. ff the value of a group is equal to the
default, it is omitted upon output (when using DXFOUT).

Table 11-8. Group codes common to all entities

Group Meaning                                     If omitted
code                                              defaults to ...

6     Linetype name (if not BYLAYER). The special 
      name BYBLOCK indicates a floating linetype  BYLAYER

38    Elevation (if nonzero). Exists only in output
      from versions prior to R11. Otherwise, Z 
      coordinates are supplied as 3x-groups as part 
      of each of the entity's defining points     0

39    Thickness (if nonzero)                      0

62    Color number (if not BYLAYER). Zero indicates
      the BYBLOCK (floating) color. 256 indicates
      the BYLAYER color                           BYLAYER

67    Absent or zero indicates entity is in model
      space. One indicates entity is in paper space,
      other values are reserved                   0

210,  These groups are included for each Line, Point,
220,  Circle, Shape, Text, Arc, Trace, Solid, Block
230   Reference, Polyline, Dimension, Attribute, and Attribute
      Definition entity if its extrusion direction is
      not parallel to the World Z axis. They indicate the
      X, Y, and Z components of the entity's extrusion
      direction                                   0,0,1

The rest of the groups that make up an entity item are described
next. Many of the entities include "flag" groups. These are
integer codes (6x or 7x groups) that encode various pieces of
information regarding the entity, and are specific to the
particular entity type. In the following descriptions, the term
bit-coded means that the flag contains various true/false values
coded as the sum of the bit values given. Any bits not defined in
the following section should be ignored in these fields and set
to zero when constructing a DXF file.


LINE     10, 20, 30 (start point), 11, 21, 31 (endpoint).

POINT    10, 20, 30 (point).

         Point entities have an optional 50 group that determines
         the orientation of PDMODE images. The group value is the
         negative of the Entity Coordinate Systems (ECS) angle of
         the UCS X axis in effect when the point was drawn. The X
         axis of the UCS in effect when the point was drawn is
         always parallel to the XY plane for the point's ECS, and
         the angle between the UCS X axis and the ECS X axis is a
         single 2D angle. The value in group 50 is the angle from
         horizontal (the effective X axis) to the ECS X axis.
         Entity Coordinate Systems (ECS) are described later in
         this section.

CIRCLE   10, 20, 30 (center), 40 (radius).

ARC      10, 20, 30 (center), 40 (radius), 50 (start angle), 51
         (end angle).

TRACE    Four points defining the corners of the trace: (10, 20,
         30), (11, 21, 31), (12, 22, 32), and (13, 23, 33).

SOLID    Four points defining the corners of the solid: (10, 20,
         30), (11, 21, 31), (12, 22, 32), and (13, 23, 33). If
         only three points were entered (forming a triangular
         solid), the third and fourth points will be the same.

TEXT     10, 20, 30 (insertion point), 40 (height), 1 (text
         value), 50 (rotation angle -optional 0), 41 (relative
         X-scale factor -optional 1), 51 (oblique angle -optional
         0), 7 (text style name optional STANDARD), 71 (text
         generation flags -optional 0), 72 (horizontal
         justification type -optional 0), 73 (vertical
         justification type -optional 0) 11, 21, 31 (alignment
         point -optional, appears only if 72 or 73 group is
         present and nonzero).

         The "text generation flags" are a bit-coded field with
         meanings as follows:

Table 11-9. Group 71 bit codes for Text entity

Flag bit value     Meaning

2                  Text is backward (mirrored in X)
4                  Text is upside down (mirrored in Y)

The justification-type value (group codes 72 and 73, not
bitcoded) indicates the text-justification style used on the
text, as shown in the following table:



Table 11-10. Group 72 & 73 bit codes for Text entity

Group 73           Group 72 (horizontal alignment)
(vertical
alignment)     0       1       2       3       4       5

3 (Top)        TLeft   TCenter TRight
2 (Middle)     MLeft   MCenter MRight
1 (Bottom)     BLeft   BCenter BRight
0 (Baseline)   Left    Center  Right   Aligned Middle  Fit

If the justification is anything other than baseline/left (groups
72 and 73 both 0), group codes 11, 21, and 31 specify the
alignment point (or the second alignment point for Align or Fit).

DXFOUT handles ASCII control characters in text strings by
expanding the character into a ^ (caret) followed by the
appropriate letter. For example, an ASCII Control-G (BEL, decimal
code 7) is output as ^G. If the text itself contains a caret
character, it is expanded to ^ (caret, space). DXFIN performs the
complementary conversion.

SHAPE     10, 20, 30 (insertion point), 40 (size), 2 (shape
          name), 50 (rotation angle -optional 0), 41 (relative
          X-scale factor -optional 1), 51 (oblique angle
          -optional 0).

BLOCK     2 (Block name), 3 (this is also the Block name), 70
          (Block type flag), 10, 20, 30 (Block base point), and
          if the Block is an Xref Block it will also contain
          group code 1 (Xref pathname). Block entities appear
          only in the BLOCKS section, not in the ENTITIES
          section. The "Block type flag" (group 70) is bit-coded,
          with the following bit meanings:



Table 11-11. Group 70 bit codes for Block table

Flag bit value     Meaning

1                  This is an anonymous Block generated by
                   hatching, associative dimensioning, other
                   internal operations, or an application
2                  This Block has Attributes
4                  This Block is an external reference (Xref)
8                  not used
16                 This Block is externally dependent
32                 This is a resolved external reference, or
                   dependent of an external reference
64                 This definition is referenced


ENDBLK    No groups. Appears only in BLOCKS section.

INSERT    66 (Attributes follow flag -optional 0), 2 (Block
          name), 10, 20, 30 (insertion point), 41 (X- scale
          factor -optional 1), 42 (Yscale factor -optional 1), 43
          (Z- scale factor -optional 1), 50 (rotation angle
          -optional 0), 70 and 71 (column and row counts
          -optional 1), 44 and 45 (column and row spacing
          -optional 0).

          If the value of the "Attributes follow" Bag is 1, a
          series of Attribute (Attrib) entities is expected to
          follow the Insert, terminated by a sequence end
          (Seqend) entity.

ATTDEF    10, 20, 30 (text start), 40 (text height), 1 (default
          value, see "Text" on page 258 for handling of ASCII
          control characters), 3 (prompt string), 2 (tag string),
          70 (Attribute flags), 73 (field length -optional 0), 50
          (text rotation, -optional 0), 41 (relative X scale
          factor -optional 1), 51 (oblique angle -optional 0), 7
          (text style name -optional STANDARD), 71 (text
          generation flags -optional 0, see "Text" on page 258),
          72 (horizontal text justification type -optional 0, see
          "Text" on page 258), 74 (vertical text justification
          type -optional 0 see group 73 in "Text" on page 258),
          11, 21, 31 (alignment point -optional, appears only if
          72 or 74 group is present and nonzero).

          The "Attribute flags" (group code 70) are a bit-coded
          field in which the bits have the following meanings:

Table 11- 12. Group 70 bit codes for Attdef entity





Flag bit value     Meaning

1                  Attribute is invisible (does not display)
2                  This is a constant Attribute
4                  Verification is required on input of this
                   Attribute
8                  Attribute is preset (no prompt during
                   insertion)

ATTRIB    10, 20, 30 (text start), 40 (text height), 1 (value,
          see "Text" on page 258 for handling ASCII control
          characters), 2 (Attribute tag), 70 (Attribute flags;
          see Attdef), 73 (field length -optional 0), 50 (text
          rotation -optional 0), 41 (relative X scale factor
          -optional 1), 51 (oblique angle -optional 0), 7 (text
          style name -optional STANDARD), 71 (text generation
          flags -optional 0, see "Text" on page 258), 72
          (horizontal text justification type -optional 0, see
          "Text" on page 258), 74 (vertical text justification
          type -optional 0, see group 73 in "Text" on page 258),
          11, 21, 31 (alignment point -optional, appears only if
          72 or 74 group is present and nonzero).

POLYLINE  66 (vertices-follow flag), 10, 20, 30 (polyline
          elevation-30 supplies elevation, 10 and 20 are always
          set to zero), 70 (Polyline flag -optional 0), 40
          (default starting width -optional 0), 41 (default
          ending width -optional 0), 71 and 72 (polygon mesh M
          and N vertex counts -optional 0), 73 and 74 (smooth
          surface M and N densities -optional 0), 75 (curves and
          smooth surface type -optional 0). The default widths
          apply to any vertex that doesn't supply widths (see
          later).

          The "vertices follow" flag is always 1, indicating that
          a series of Vertex entities is expected to follow the
          Polyline, terminated by a sequence end (Seqend) entity.
          The polyline flag (group code 70) is a bit-coded field
          with bits defined as follows:

Table 11-13. Group 70 bit codes for Polyline entity

Flag bit value     Meaning

1                  This is a closed Polyline (or a polygon mesh
                   closed in the M direction)
2                  Curve-fit vertices have been added
4                  Spline-fit vertices have been added
8                  This is a 3D Polyline
16                 This is a 3D polygon mesh.
                   Group 75 indicates the smooth surface type as
                   follows:
                   0 = no smooth surface fitted
                   5 = quadratic B-spline surface
                   6 = cubic B-spline surface
                   8 = Bezier surface
32                 The polygon mesh is closed in the N direction
64                 This Polyline is a polyface mesh
128                The linetype pattern is generated continuously
                   around the vertices of this Polyline

          A polyface mesh is represented in DXF as a variant of a
          Polyline entity. The Polyline header is identified as
          introducing a polyface mesh by the presence of the 64
          bit in the Polyline flags (70) group. The 71 group
          specifies the number of vertices in the mesh, and the
          72 group, the number of faces. While these counts are
          correct for all meshes created with the PFACE command,
          applications are not required to place correct values
          in these fields, and AutoCAD actually never relies upon
          their accuracy.

          Following the Polyline header is a sequence of Vertex
          entities that specify the vertex coordinates and faces
          that compose the mesh. Vertices such as these are
          described in the following subsection on Vertex.

          Applications might want to represent polygons with an
          arbitrarily large number of sides in polyface meshes.
          However, the AutoCAD entity structure imposes a limit
          on the number of vertices that a given face entity can
          specify. You can represent more complex polygons by
          decomposing them into triangular wedges. Their edges
          should be made invisible to prevent visible artifacts
          of this subdivision from being drawn. The PFACE command
          performs this subdivision automatically, but when
          applications generate polyface meshes directly, the
          applications must do this themselves.

          The number of vertices per face is the key parameter in
          this subdivision process. The PFACEVMAX system variable
          provides an application with the number of vertices per
          face entity. This value is read-only, and is set to 4.

          Polyface meshes created with the PFACE command are
          always generated with all the vertex coordinate
          entities first, followed by the face definition
          entities. The code within AutoCAD that processes
          polyface meshes does not, at present, require this
          ordering; it works even with interleaved vertex
          coordinates and face definitions as long as no face
          specifies a vertex with an index that appears after it
          in the database. Programs that read polyface meshes
          from DXF would be wise to be as tolerant of odd vertex
          and face ordering as AutoCAD is.




VERTEX    10, 20, 30 (location), 40 (starting width -optional,
          see earlier), 41 (ending width -optional, see above),
          42 (bulge -optional 0), 70 (vertex flags -optional 0),
          50 (curve fit tangent direction optional). The bulge is
          the tangent of 1/4 the included angle for an arc
          segment, made negative if the arc goes clockwise from
          the start point to the endpoint; a bulge of 0 indicates
          a straight segment, and a bulge of 1 is a semicircle.
          The meaning of the bit-coded Vertex flag (group code
          70) is shown in the following table

Table 11-14. Group 70 bit codes for Vertex entity

Flag bit value     Meaning

1                  Extra vertex created by curve-fitting
2                  Curve-fit tangent defined for this vertex. A
                   curve-fit tangent direction of 0 may be
                   omitted from the DXF output, but is
                   significant if this bit is set
4                  Unused (never set in DXF files)
8                  Spline vertex created by spline-fitting
16                 Spline frame control point
32                 3D Polyline vertex
64                 3D polygon mesh vertex
128                Polyface mesh vertex

          Every Vertex that is part of a polyface mesh has the
          128 bit set in its Vertex flags (70) group. If the
          entity specifies the coordinates of a vertex of the
          mesh, the 64 bit is set as well and the 10, 20, and 30
          groups give the vertex coordinates. The vertex indexes
          are determined by the order in which the Vertex
          entities appear within the Polyline, with the first
          numbered 1.

          If the Vertex defines a face of the mesh, its Vertex
          flags (70) group has the 128 bit set but not the 64
          bit. The 10, 20, and 30 (location) groups of the face
          entity are irrelevant and are always written as zero in
          a DXF file. The vertex indexes that define the mesh are
          given by 71, 72, 73, and 74 groups, the values of which
          are integers specifying one of the previously defined
          vertices by index. If the index is negative, the edge
          that begins with that vertex is invisible. The first
          zero vertex marks the end of the vertices of the face.
          Since the 71 through 74 groups are optional fields with
          default values of zero, they are present in DXF only if
          nonzero.

SEQEND    No fields. This entity marks the end of vertices
          (Vertex type name) for a Polyline, or the end of
          Attribute entities (Attrib type name) for an Insert
          entity that has Attributes (indicated by 66 group
          present and nonzero in Insert entity).

3DFACE    Four points defining the corners of the face: (10, 20,
          30), (11, 21, 31), (12, 22, 32), and (13, 23, 33). 70
          (invisible edge flags optional 0). If only three points
          are entered (forming a triangular face), the third and
          fourth points will be the same. The meanings of the
          bit-coded "Invisible edge flags" are shown in the
          following table:

Table 11-15. Group 70 bit codes for 3D Face entity

Flag bit value     Meaning

1                  First edge is invisible
2                  Second edge is invisible
4                  Third edge is invisible
8                  Fourth edge is invisible

VIEWPORT  10,20,30 (center point of entity in paper space
          coordinates), 40 (width in paper space units), 41
          (height in paper space units), 68 (viewport status
          field), 69 (viewport ID, permanent during editing
          sessions, but mutable between sessions; the paper space
          viewport entity always has an ID of 1).

          The value of the viewport status field (68) is
          interpreted as follows:

-1                  On, but is fully off-screen or is one of the
                    viewports not active because the $MAXACTVP
                    count is currently being exceeded.

0                   Off.

<positive value>    On, active and the value indicates the
                    order of "stacking" for the viewports, with 1
                    applying to the active viewport, which is
                    also the highest, 2 applying to the next
                    viewport in the stack, and so on.

          In addition, the extended entity data groups in the
          following table apply to viewports.

          Note. In contrast to normal entity data, the same
          extended entity group code can appear multiple times,
          and order is important.

Table 11-16. Extended entity group codes for Viewports

Group  Description

1001   Application name. This field will always be the string
       "ACAD"
1000   Begin viewport data. This field will always be the string
       "MVIEW". Other data groups may appear in the future
1002   Begin window descriptor data. This field will always be
       the string "{"
1070   Extended entity data version number. For Releases 11 and
       12, this field will always be the integer 16
1010   View target point X value
1020   View target point Y value
1030   View target point Z value
1010   View direction vector X value
1020   View direction vector Y value
1030   View direction vector Z value
1040   View twist angle
1040   View height
1040   View center point X value
1040   View center point Y value
1040   Perspective lens length
1040   Front clip plane Z value
1040   Back clip plane Z value
1070   View mode
1070   Circle zoom
1070   Fast zoom setting
1070   UCSICON setting
1070   Snap ON/OFF
1070   Grid ON/OFF
1070   Snap style
1070   Snap ISOPAIR
1040   Snap angle
1040   Snap base point UCS X coordinate
1040   Snap base point UCS Y coordinate
1040   Snap X spacing
1040   Snap Y spacing
1040   Grid X spacing
1040   Grid Y spacing
1070   Hidden in plot flag
1002   Begin frozen layer list (possibly empty). This field will
       always be the string "{"
1003...The names of layers frozen in this viewport. This list may
       include Xref-dependent layers. Any number of 1003 groups
       may appear here
1002   End frozen layer list. This field will always be the
       string "}"
1002   End Viewport data. This field will always be the string
       "}"

DIMENSION 2 (name of pseudo-Block containing the current
          dimension entity geometry), 3 (dimension style name),
          10, 20, 30 (definition point for all dimension types),
          11, 21, 31 (middle point of dimension text), 12, 22, 32
          (dimension block translation vector), 70 (Dimension
          type), 1 (dimension text explicitly entered by the
          user. If null or "<>', the dimension measurement is
          drawn as the text, if " " [one blank space], the text
          is suppressed. Anything else is drawn as the text). 13,
          23, 33 (definition point for linear and angular
          dimensions), 14, 24, 34 (definition point for linear
          and angular dimensions), 15, 25, 35 (definition point
          for diameter, radius, and angular dimensions), 16, 26,
          36 (point defining dimension arc for angular
          dimensions), 40 (leader length for radius and diameter
          dimensions), 50 (angle of rotated, horizontal, or
          vertical linear dimensions).

          The dimension type (group code 70) is an integer-coded
          field with the following values:

Table 11-17. Group 70 integer codes for Dimension entity

Value     Meaning

0         Rotated, horizontal, or vertical
1         Aligned
2         Angular
3         Diameter
4         Radius
5         Angular 3-point
6         Ordinate
64        Ordinate type. This is a bit value (bit 7) used only
          with integer value 6. if set, ordinate is X-type, if
          not set, ordinate is Y-type
128       This is a bit value (bit 8) added to the other group 70
          values if the dimension text has been positioned at a
          user-defined location rather than at the default
          location

          In addition, all dimension types have an optional group
          (code 51) that indicates the horizontal direction for
          the Dimension entity. This determines the orientation
          of-dimension text and dimension lines for horizontal,
          vertical, and rotated linear dimensions. The group
          value is the negative of the Entity Coordinate Systems
          (ECS) angle of the UCS X axis in effect when the
          Dimension was drawn. The X axis of the UCS in effect
          when the Dimension was drawn is always parallel to the
          XY plane for the Dimension's ECS, and the angle between
          the UCS X axis and the ECS X axis is a single 2D angle.
          The value in group 51 is the angle from horizontal (the
          effective X axis) to the ECS X axis. Entity Coordinate
          Systems (ECS) are described later in this section.

          Linear dimension types with an oblique angle have an
          optional group (code 52). When added to the rotation
          angle of the linear dimension (group code 50) this
          gives the angle of the extension lines. The optional
          group code 53 is the rotation angle of the dimension
          text away from its default orientation (the direction
          of the dimension line).

          For all dimension types, the following groups represent
          3D WCS points:

            10, 20, 30
            13, 23, 33
            14, 24, 34
            15, 25, 35

          For all dimension types, the following groups represent
          3D ECS points:

            11, 21, 31
            12, 22, 32
            16, 26, 36

Linear    (13,23,33) The point used to specify the first
          extension line.
          (14,24,34) The point used to specify the second
          extension line.
          (10,20,30) The point used to specify the dimension
          line.


Figure 11-1. Linear dimensioning coordinate group codes

Angular   (13,23,33) and (14,24,34)     The endpoints of the
                                        first extension line.
          (10,20,30) and (15,25,35)     The endpoints of the
                                        second extension line.
          (16,26,36)                    The point used to specify
                                        the dimension line arc.

Figure 11-2. Angular dimensioning coordinate group codes

Angular   (15,25,35)                    The vertex of the angle.
(3-point) (13,23,33)                    The endpoints of the
                                        first extension line.
          (14,24,34)                    The endpoints of the
                                        second extension line.
          (10,20,30)                    The point used to specify
                                        the dimension line arc.

Figure 11-3. Angular (3-point) dimensioning coordinate group
             codes

Diameter  (15,25,35)                    The point used to pick
                                        the circle/arc to
                                        dimension.
          (10,20,30)                    The point on that circle
                                        directly across from the
                                        pick point.

Figure 11-4. Diameter dimensioning coordinate group codes

Radius    (15,25,35)                    The point used to pick
                                        the circle/arc to
                                        dimension.
          (10,20,30)                    The center of that
                                        circle.

Figure 11-5. Radius dimensioning coordinate group codes

Ordinate  (13,23,33)                    The point used to select
                                        the feature.
          (14,24,34)                    The point used to locate
                                        the leader end point.

Figure 11-6. Ordinate dimensioning coordinate group codes


Entity Coordinate Systems (ECS)

To save space in the drawing database (and in the DXF file), the
points associated with each entity are expressed in terms of the
entity's own Entity Coordinate System (ECS). The Entity
Coordinate System allows AutoCAD to use a much more compact means
of representation for entities. With ECS, the only additional
information needed to describe the entity's position in 3D space
is the 3D vector describing the Z axis of the ECS, and the
elevation value.

For a given Z axis (or extrusion) direction, there are an
infinite number of coordinate systems, defined by translating the
origin in 3D space and by rotating the X and Y axes around the Z
axis. However, for the same Z axis direction, there is only one
Entity Coordinate System. It has the following properties:

*    Its origin coincides with the WCS origin.

*    The orientation of the X and Y axes within the XY plane are
     calculated in an arbitrary, but consistent manner. AutoCAD
     performs this calculation using the arbitrary axis algorithm
     (described later).

For some entities, the ECS is equivalent to the World Coordinate
System and all points (DXF groups 10 - 37) are expressed in World
coordinates. See the following table.

Table 11-18. Coordinate systems associated with an entity type

Entities                      Notes

Line, Point, 3DFace, 3D       These entities do not lie in a
Polyline, 3d vertex, 3D      particular plane. All points are
Mesh, 3D Mesh vertex          expressed in World coordinates. Of
                              these entities, only Lines and
                              Points can be extruded; their
                              extrusion direction can differ from
                              the World Z axis

Circle, Arc, Solid, Trace,    These entities are planar in
Text, Attrib, Attdef, Shape,  nature. All points are expressed in
Insert, 2D Polyline, 2D       Entity coordinates. All of these
Vertex                        entities can be extruded; their
                              extrusion direction can differ from
                              the World Z axis

Dimension                     Some of a Dimension's points are
                              expressed in WCS, and some in ECS

Viewport                      Expressed in World coordinates

Others                        The remaining entities have no
                              point data and their coordinate
                              systems are therefore irrelevant

Once AutoCAD has established the ECS for a given entity, here's
how it works:

*     The elevation value stored with an entity indicates how far
      along the Z axis to shift the XY plane from the WCS origin
      to make it coincide with the plane that the entity is in.
      How much of this is the user-defined elevation is
      unimportant.

*     Any 2D points describing the entity that were entered
      through the UCS are transformed into the corresponding 2D
      points in the ECS, which (more often than not) is shifted
      and rotated with respect to the UCS.

These are a few ramifications of this process:

*     You cannot reliably find out what UCS was in effect when an
      entity was acquired.

*     When you enter the XY coordinates of an entity in a given
      UCS and then do a DXFOUT, you probably won't recognize
      those XY coordinates in the DXF file. You'll have to know
      the method by which AutoCAD calculates the X and Y axes in
      order to work with these values.

*     The elevation value stored with an entity and output in DXF
      files will be a sum of the Z-coordinate difference between
      the UCS XY plane and the ECS XY plane, and the elevation
      value that the user specified at the time the entity was
      drawn.


Arbitrary Axis Algorithm

The arbitrary axis algorithm is used by AutoCAD internally to
implement the arbitrary but consistent generation of Entity
Coordinate Systems for all entities except Lines, Points, 3D
Faces, and 3D Polylines, which contain points in World
coordinates.

Given a unit-length vector to be used as the Z axis of a
coordinate system, the arbitrary axis algorithm generates a
corresponding X axis for the coordinate system. The Y axis
follows by application of the right-hand rule.

The method is to examine the given Z axis (also called the
normal vector) and see if it is close to the positive or
negative World Z axis. If it is, cross the World Y axis with the
given Z axis to arrive at the arbitrary X axis. If not, cross the
World Z axis with the given Z axis to arrive at the arbitrary X
axis. The boundary at which the decision is made was chosen to be
both inexpensive to calculate and completely portable across
machines. This is achieved by having a sort of "square" polar
cap, the bounds of which is 1/64, which is precisely specifiable
in 6 decimal fraction digits and in 6 binary fraction bits.

In mathematical terms, the algorithm does the following (all
vectors are assumed to be in 3D space, specified in the World
Coordinate System):

     Let the given normal vector be called N.
     Let the World Y axis be called Wy, which is always (0, 1, 0)
     Let the World Z axis be called Wz, which is always (0, 0, 1)

We are looking for the arbitrary X and Y axes to go with the
normal N. They'll be called Ax and Ay. N could also be called Az
(the arbitrary Z axis):

     If (abs (Nx) < 1/64) and (abs (N ) < 1/64) then
         Ax = Wy x N (where "x" is the cross-product operator).
     Otherwise,
         Ax = Wz X N.
     Scale Ax to unit length.

The method of getting the Ay vector would be:
     Ay = N x Ax. Scale Ay to unit length.

Extended Entity Data

Extended entity data is created by applications such as the
Advanced Modeling Extension (AME), or by routines written with
AutoLISP or ADS. Extended entity data is also produced by
creating PostScript output with PSOUT. If an entity contains
extended data, it follows the entity's normal definition data.

The group codes 1000 through 1071 describe extended entity data.
The following is an example of an entity containing extended
entity data in DXF format.


Figure 11-7. Example of extended entity data

*** INSERT FIGURE HERE ***

Organization of Extended Entity Data

As you can see in the above example, group code 1001 indicates
the beginning of extended entity data. This is followed by one or
more 1000 group codes. Application names are string values (in
the example, the application name is AME_SOL). In contrast to
normal entity data, the same group code can appear multiple
times, and order is important.

Extended entity data are grouped by registered application name,
and each registered application's group begins with a 1001 group
code with the registered application name as the string value.
Registered application names correspond to APPID symbol table
entries, which are essentially placeholders for registered
application names.

An application can use as many APPID names as needed, although
one will often suffice. APPID names are permanent, although they
can be purged if they aren't currently used in the drawing.

Each APPID name can have no more than one data group attached to
each entity. Within an application's group, the sequence of
extended entity data groups and their meaning is defined by the
application.

Note. PostScript images and PostScript fill requests for
Polylines are stored in the AutoCAD database as extended entity
data belonging to the AUTOCAD_POSTSCRIPT_FIGURE application.

As the example in the previous figure shows, the group codes for
extended entity data begin at 1000 and currently extend to 1071.
The following list of extended entity data group codes are
supported by AutoCAD, which maintains and manipulates their
values as described:

Table 11-19. extended entity data group codes and descriptions

Entity Name    Group      Description
               code

String         1000       Strings in extended entity data can be
                          up to 255 bytes long (with the 256th
                          byte reserved for the null character)

Application    1001       Application names can be up to 31 bytes
                          long (the 32d byte is reserved for the
                          null character). Use of application
                          names is described in more detail later
                          in this section
                          Caution: Do not add a 1001 group into
                          your extended entity data, as AutoCAD
                          will assume it is the beginning of a
                          new application extended entity data
                          group

Control        1002       An extended data control string can be
string                    either "{" or "}"; these braces enable
                          applications to organize their data by
                          subdividing the data into lists. The
                          left brace begins a list, and a right
                          brace terminates the most recent list;
                          lists can be nested When AutoCAD reads
                          the extended entity data for a
                          particular application, it checks to
                          ensure that braces are balanced
                          correctly

Layer name     1003       Name of the layer associated with the
                          extended entity data

Binary data    1004       Binary data is organized into
                          variable-length chunks.The
                          maximum length of each chunk is 127
                          bytes. Binary data is represented as a
                          string of hexadecimal digits, two per
                          binary byte, in ASCII DXF files

Database       1005       Handles of entities in the drawing
handle                    database
                          Note. When a drawing with handles and
                          extended entity data handles is
imported
                          into another drawing using INSERT,
INSERT
                          *, XREF Bind, XBIND, or partial DXFIN,
                          the extended entity data handles are
                          translated in the same manner as their
                          corresponding entity handles, thus
                          maintaining their binding. This is also
                          done in the EXPLODE Block operation, or
                          for any other AutoCAD operation. When
                          AUDIT detects an extended entity data
                          handle that doesn't match the handle of
                          an entity in the drawing file, it is
                          considered an error. If AUDIT is fixing
                          entities, it sets the handle to 0.

3 reals        1010,      Three real values, in the order X, Y,
Z.
               1020,      They can be used as a point or vector
               1030       record. AutoCAD never alters their
                          value

World space    1011,      Unlike a simple 3D point, the World
space
position       1021,      coordinates are moved, scaled, rotated,
               1031       and mirrored along with the parent
                          entity to which the extended data
                          belongs. The world space position is
also
                          stretched when the STRETCH command is
                          applied to the parent entity and this
                          point lies within the select window

World space    1012,      Also a 3D point that is scaled,
rotated,
displacement   1022,      and mirrored along with the parent (but
               1032       not moved or stretched)

World          1013,      Also a 3D point that is rotated and
direction      1023,      mirrored along with the parent (but not
                          moved, scaled, or stretched).

Real           1040       A real value

Distance       1041       A real value that is scaled along with
                          the parent entity

Scale factor   1042       Also a real value that is scaled along
                          with the parent. The difference between
                          a distance and a scale factor is
                          application-defined

Integer        1070       A 16-bit integer (signed or unsigned)

Long           1071       A 32-bit signed (long) integer

For more information on extended entity data and the APPID table,
refer to the AutoCAD Development System Programmer's Reference
and the AutoLISP Programmer's Reference.


Writing DXF Interface Programs

Writing a program that communicates with AutoCAD via the DXF
mechanism often appears far more difficult than it really is. The
DXF file contains a seemingly overwhelming amount of information,
and examining a DXF file manually may lead to the conclusion that
the task is hopeless.

However, the DXF file has been designed to be easy to process by
program, not manually. The format was intentionally constructed
to make it easy to ignore information you don't need while easily
reading the information you do need. Just remember to handle the
groups in any order and ignore any group you don't care about.

As an example, the following is a Microsoft BASIC(TM) program
that reads a DXF file and extracts all the Line entities from the
drawing (ignoring lines that appear inside Blocks). It prints the
endpoints of these lines on the screen. As an exercise you might
try entering this program into your computer, running it on a DXF
file from one of your drawings, then enhancing it to print the
center point and radius of any circles it encounters. This
program is not put forward as an example of clean programming
technique nor the way a general DXF processor should be written;
it is presented as an example of just how simple a DXF-reading
program can be.

1000      REM
1010      REM Extract lines from DXF file
1020      REM
1030      G1% = 0
1040      LINE INPUT "DXF file name: "; A$
1050      OPEN "i", 1, A$ + ".dxf"
1060      REM
1070      REM Ignore until section start encountered
1080      REM
1090      GOSUB 2000
1100      IF G% <> 0 THEN 1090
1110      IF S$ <> "SECTION" THEN 1090
1120      GOSUB 2000
1130      REM
1140      REM Skip unless ENTITIES section
1150      REM
1160      IF S$ <> "ENTITIES" THEN 1090
1170      REM
1180      REM Scan until end of section, processing LINEs
1190      REM
1200      GOSUB 2000
1210      IF G% = 0 AND S$ = "ENDSEC" THEN 2200
1220      IF G% = 0 AND S$ = "LINE" THEN GOSUB 1400 : GOTO 1210
1230      GOTO 1200
1400      REM
1410      REM Accumulate LINE entity groups
1420      REM
1430      GOSUB 2000
1440      IF G% = 10 THEN X1 = X : Y1 = Y : Z1 = Z
1450      IF G% = 11 THEN X2 = X : Y2 = Y : Z2 = Z
1460      IF G% = 0 THEN PRINT "Line from
(";X1;",";Y1;",";Z1;") to (";X2;",";Y2;",";Z2;")":RETURN
1470      GOTO 1430
2000      REM
2010      REM Read group code and following value
2020      REM For X coordinates, read Y and possibly Z also
2030      REM
2040      IF G1% < 0 THEN G% = -G1% : G1% = 0 ELSE INPUT #1, G%
2050      IF G% < 10 OR G% = 999 THEN LINE INPUT #1, S$ : RETURN
2060      IF G% >= 38 AND G% <= 49 THEN INPUT #1, V : RETURN
2080      IF G% >= 50 AND G% <= 59 THEN INPUT #1, A : RETURN
2090      IF G% >= 60 AND G% <= 69 THEN INPUT #1, P% : RETURN
2100      IF G% >= 70 AND G% <= 79 THEN INPUT #1, F% : RETURN
2110      IF G% >= 210 AND G% <= 219 THEN 2130
2115      IF G% >= 1000 THEN LINE INPUT #1, T$ : RETURN
2120      IF G% >= 20 THEN PRINT "Invalid group code";G% : STOP
2130      INPUT #1, X
2140      INPUT #1, G1%
2150      IF G1% <> (G%+10) THEN PRINT "Invalid Y coord code";
          Gl% : STOP
2160      INPUT #1, Y
2170      INPUT #1, G1%
2180      IF G1% <> (G%+20) THEN G1% = -G1% ELSE INPUT #1, Z
2190      RETURN
2200      CLOSE 1

Writing a program that constructs a DXF file is more difficult,
because you must maintain consistency within the drawing in order
for AutoCAD to find the file acceptable. AutoCAD lets you omit
many items in a DXF file and still obtain a usable drawing. The
entire HEADER section can be omitted if you don't need to set any
header variables. Any of the tables in the TABLES section can be
omitted if you don't need to make any entries, and the entire
TABLES section can be dropped if nothing in it is required. If
you define any linetypes in the LTYPE table, this table must
appear before the LAYER table. If no Block Definitions are used
in the drawing, the BLOCKS section can be omitted. If present,
however, the BLOCKS section must appear before the ENTITIES
section. Within the ENTITIES section, you can reference layer
names even though you haven't defined them in the LAYER table.
Such layers are automatically created with color 7 and the
CONTINUOUS linetype. The EOF item must be present at the
end-of-file.

The following Microsoft BASIC program constructs a DXF file
representing a polygon with a specified number of sides, leftmost
origin point, and side length. This program supplies only the
ENTITIES section of the DXF file, and places all entities
generated on the default layer 0. This may be taken as an example
of a minimum DXF generation program. Since this program doesn't
create the drawing header, the drawing limits, extents, and
current view will be invalid after performing a DXFIN on the
drawing generated by this program. You can do a ZOOM E to fill
the screen with the drawing generated. Then adjust the limits
manually.

1000      REM
1010      REM Polygon generator
1020      REM
1030      LINE INPUT "Drawing (DXF) file name: "; A$
1040      OPEN "o", 1, A$ + ".dxf"
1050      PRINT #1, 0
1060      PRINT #1, "SECTION"
1070      PRINT #1, 2
1080      PRINT #1, "ENTITIES"
1090      PI = ATN(1) * 4
1100      INPUT "Number of sides for polygon: "; S%
1110      INPUT "Starting point (X,Y):"; X, Y
1120      INPUT "Polygon side: "; D
1130      A1 = (2 * PI) / S%
1140      A = PI / 2
1150      FORI% = 1 TO S%
1160      PRINT #1, 0
1170      PRINT #1, "LINE"
1180      PRINT #1, 8
1190      PRINT #1, "0"
1200      PRINT #1, 10
1210      PRINT #1, X
1220      PRINT #1, 20
1230      PRINT #1, Y
1240      PRINT #1, 30
1250      PRINT #1, 0.0
1260      NX = D * COS(A) + X
1270      NY = D * SIN(A) + Y
1280      PRINT #1, 11
1290      PRINT #1, NX
1300      PRINT #1, 21
1310      PRINT #1, NY
1320      PRINT #1, 31
1330      PRINT #1, 0.0
1340      X = NX
1350      Y = NY
1360      A = A + A1
1370      NEXT I%
1380      PRINT #1, 0
1390      PRINT #1, "ENDSEC"
1400      PRINT #1, 0
1410      PRINT #1, "EOF"
1420      CLOSE 1

The DXFIN command is relatively forgiving with respect to the
format of data items. As long as a properly formatted item
appears on the line on which the data is expected, DXFIN will
accept it (of course, string items should not have leading spaces
unless these are intended to be part of the string). This program
takes advantage of this flexibility in input format, and does not
try to generate a file appearing exactly like one generated by
AutoCAD.

In the case of error loading a DXF file using DXFIN, AutoCAD
reports the error with a message indicating the nature of the
error and the last line processed in the DXF file before the
error was detected. This may not be the line on which the error
occurred, especially in the case of errors such as omission of
required groups.

Binary Drawing Interchange Files

The ASCII DXF file format described in the preceding sections of
this chapter is a complete representation of an AutoCAD drawing
in an ASCII text form easily processed by other programs. In
addition, AutoCAD can produce or read a binary form of the full
DXF file, and accepts limited input in another binary file
format. These binary files are described in the following
sections.


Binary DXF Files

The DXFOUT command provides a Binary option that writes binary
DXF files. Such a file contains all of the information present in
an ASCII DXF file, but in a more compact form that takes,
typically, 25% less file space and can be read and written more
quickly (typically 5 times faster) by AutoCAD. Unlike ASCII DXF
files, which entail a trade-off between size and floating-point
accuracy, binary DXF files preserve all of the accuracy in the
drawing database. AutoCAD Release 10 was the first version to
support this form of DXF file; it cannot be read by older
versions.

A binary DXF file begins with a 22-byte sentinel consisting of:

     AutoCAD Binary DXF<CR><LF><SUB><NUL>

Following the sentinel are (group, value) pairs as in an ASCII
DXF file, but represented in binary form. The group code is a
single-byte binary value, and the value that follows is one of
the following:

*    A two-byte integer with the least-significant byte first and
     the most-significant byte last.

*    An eight-byte IEEE double precision floating-point number
     stored with the least-significant byte first and the
     most-significant byte last.

*    An ASCII string terminated by a zero (NUL) byte.

The type of the datum following a group is determined from the
group code according to the same rules used in decoding ASCII DXF
files. Translation of angles to degrees, and dates to fractional
Julian date representation, is performed for binary files as well
as for ASCII DXF files. The comment group, 999, is not used in
binary DXF files.

Extended entity data group codes are represented in Binary DXF as
a single byte with the value 255, followed by a 2-byte integer
value containing the actual group code, followed by the actual
value.

Extended entity data long (group code 1071) values occupy 4 bytes
of data. Extended entity data binary chunks (group code 1004) are
represented as a single-byte, unsigned integer length, followed
by the specified number of bytes of chunk data. For example, to
transfer an extended entity data long group, the following values
would appear, occupying 1, 2, and 4 bytes respectively:

255       Escape group code.
1071      True group code.
999999    Value for the 1071 group code.

DXFOUT writes binary DXF files with the same file type (.dxf) as
for ASCII DXF files. The DXFIN command automatically recognizes a
binary file (by means of its sentinel string) and loads the file.
There is no need for you to identify it as a binary file.

If DXFIN encounters an error in a binary DXF file, it reports the
byte address within the file where the error was detected.


Binary Drawing Interchange (DXB) Files

The DXF file formats described earlier in this chapter are
complete representations of an AutoCAD drawing that can be
written and read by AutoCAD and other programs. However,
AutoShade and programs executed via the external commands
facility (chapter 3) often need to supply simple geometric input
to AutoCAD. For these purposes, another file format even more
compact than the binary DXF format is supported. This format,
called DXB (for drawing interchange binary) is limited in the
entities it can represent.

DXBIN Command

To load a DXB file produced by a program such as AutoShade, enter
the DXBIN command:

          Command: dxbin

When AutoCAD prompts you, respond with the name of the file you
want to load. You don't need to include a file type; dxb is
assumed.


DXB File Format

Important. This information is for experienced programmers and is
subject to change without notice.

The format of a DXB file is as follows:

          Header: "AutoCAD DXB 1.0" CR LF ^Z NUL    (19bytes)
          Data: ...Zero or more data records...
          Terminator: NUL                           (1 byte)

Each data record begins with a single byte identifying the record
type, followed by data items. The data items have various forms
of representation and encoding. In the descriptions following,
each data item is prefixed with a letter and a hyphen. The
meaning of the letter codes is as follows:

w-        16-bit integer, byte reversed in the standard 8Ox86
          style (least significant byte first, most-significant
          byte second).

f-        IEEE 64-bit floating-point value stored with lsb first,
          msb last (as stored by an 8Ox87).

l-        32-bit integer with the bytes reversed 8Ox86 style.

n-        Number which may be either a 16-bit integer or a
          floating-point number depending on the most recent
          setting of the number mode data item. The number mode
          defaults to 0, signifying integers. If set to 1, all n-
          items will be read as floating-point.

u-        Item which is either a 32-bit integer or a
          floating-point number depending on the most recent
          number mode setting. If a 32-bit integer, the value is
          scaled by multiplying it by 65536 (2^16). If a
          floating-point value, no scaling is applied.

a-        Item representing an angle. If number mode is integer,
          this is a 32-bit integer representing an angle in units
          of millionths of a degree (range 0 to 360,000,000). If
          a floating-point number, represents degrees.

In the following table, the lengths anteed the item-type byte and
assume the number mode is set to zero (integer mode). If number
mode is floating-point, add 6 bytes to the length for each n-
item present and 4 bytes for each a-, or u- item present.


Table 11-20. Byte length for item types

Item type    Code      Data Items                    Length
             (decimal)                               (bytes)

Line         1         n-fromx n-fromy               13
                       n-tox n-toy
                       n-fromx n-fromy n-fromz
                       n-tox n-toy n-toz

Point        2         n-x n-y                       5

Circle       3         n-ctrx n-ctry n-rad           7

Arc          8         n-ctrx n-ctry n-rad           19
                       a-starta a-enda

Trace        9         n-x1 n-y1 n-x2 n-y2           17
                       n-x3 n-y3 n-x4 n-y4

Solid        11        n-x1 n-y1 n-x2 n-y2           17
                       n-x3 n-y3 n-x4 n-y4

Seqend       17        (none)                        1

Polyline     19        w-closureflag                 3

Vertex       20        n-x n-y                       5

3Dface       22        n-x1 n-y1 n-z1                25
                       n-x2 n-y2 n-z2
                       n-x3 n-y3 n-z3
                       n-x4 n-y4 n-z4

Scale Factor 128       f-scalefac                    9

New Layer    129       "layername" NUL               layername
                                                     length + 2

Line         130       n-tox n-toy                   5
Extension

Trace        131       n-x3 n-y3 n-x4 n-y4           9
Extension

Block Base   132       n-bx n-by                     5

Bulge        133       u-2h/d                        5

Width        134       n-startw n-endw               5

Number Mode  135       w-mode                        3

New Color    136       w-colomum                     3

3Dline       137       n-tox n-toy n-toz             7
Extension

The Line Extension item extends the last line or line extension
from its To point to a new To point:. The Trace Extension item
similarly extends the last trace solid, or Trace Extension from
its x3,y3-x4,y4 ending line to a new x3,y3--x4,y4 line.

The Scale Factor is a floating-point value by which all integer
coordinates are multiplied to obtain the floating-point
coordinates used by the actual entities. The initial scale
factor when a file is read is 1.0. The New Layer item creates a
layer if none exists, giving the new layer the same defaults as
the LAYER New command, and sets that layer as the current layer
for subsequent entities. At the end of the DXB file load, the
layer in effect before the command is restored.

The Block Base item specifies the base (origin) point of a
created Block. The Block base must be defined before the first
entity record is encountered. If DXB is not defining a Block,
this specification will be ignored.

A Polyline consists of straight segments of fixed width
connecting the vertices, except as overridden by the Bulge and
Width items described below. The closure flag should be 0 or 1;
if it is 1, then there is an implicit segment from the last
vertex (immediately before the Seqend) to the first vertex.

A Bulge item, encountered between two Vertex items (or after the
last Vertex of a closed Polyline), indicates that the two
vertices are connected by an arc rather than a straight segment.
If the line segment connecting the vertices would have length d,
and the perpendicular distance from the midpoint of that segment
to the arc is h, then the magnitude of the Bulge is (2 * h / d).
The sign is negative if the arc from the first vertex to the
second is clockwise. A semicircle thus has a bulge of 1 (or -1).
If the number mode is 0 (integer), Bulge items are scaled by 2
16. If the number mode has been set to floating-point, then the
floating-point value supplied is just 2*h/d (not scaled).

The Width item indicates the starting and ending widths of the
segment (straight or curved) connecting two vertices. This width
stays in effect until the next width item or the Seqend. If there
is a Width item between the Polyline item and the first Vertex,
it is stored as a default width for the Polyline; this saves
considerable database space if the Polyline has several segments
of this width.

The Number Mode item controls the mode of items with types given
in the table above as n-, a-, or u-. If the value supplied is
zero, these values will be integers, otherwise floating-point.
The storage and implicit scaling conventions for these values in
both modes are described earlier.

Lines share the same cells to remember the last to-point, so you
shouldn't mix extension groups for the two entities without an
initial group before the extension. There is no extension group
for 3Dfaces, as there's no obvious edge to extend from.

The New Color group specifies the color for subsequent entities
in the DXB file. The w-colomum word argument is in the range from
0 to 256. 0 means color by block, 1-255 are the standard AutoCAD
colors, and 256 means color by layer. A color outside the range
from 0 to 256 sets the color back to the current entity color
(you can do this deliberately, and it can be quite handy). The
initial entity color of material added by DXBIN is the current
entity color.

All points specified in the DXB file are interpreted in terms of
the current UCS at the time the DXBIN command is executed.


Writing DXB Files

There is no direct AutoCAD command to write a DXB file, but the
special ADI plotter driver can write such a file. If you want to
create a DXB file from an AutoCAD drawing, configure the ADI
plotter and select its DXB file output option.


Initial Graphics Exchange Specification (IGES) Files

Using the commands described in this section, you can instruct
AutoCAD to read and write IGES-format interchange files.

Note: The format of IGES files and the mapping performed to
translate between AutoCAD drawing information and IGES are
described in the separate AutoCAD/IGES Interface Specifications
document.


IGESOUT Command

You can generate an Initial Graphics Exchange Specification
(IGES) interchange file from an existing AutoCAD drawing by means
of the IGESOUT command:

     Command: igesout

When AutoCAD prompts you, respond with a filename or press
(ENTER) to accept the default.

The default name for the output file is the same as that of the
current drawing but with a file type of igs. If you specify an
explicit filename without including a file type, igs is assumed.
If a file with the same name already exists, it is deleted. If
FILEDIA is on, and a file with the same name already exists,
AutoCAD tells you; allowing you to OK or cancel the deletion.

IGESIN Command

An IGES interchange file can be converted into an AutoCAD drawing
by means of the IGESIN command:

     Command: igesin

When AutoCAD prompts you, respond with the name of the IGES file
to be loaded.

To load a complete IGES file, you must use IGESIN in an empty
drawing before any entities have been drawn and before any
additional Block definitions, layers, linetypes, text styles,
named views, named coordinate systems, or named viewport
configurations have been created.

Note. If the drawing you are using as a prototype is not empty,
you might find it helpful to open a new drawing using the No
Prototype... button of the Create New Drawing dialogue box, as
described in chapter 4 of the AutoCAD Reference Manual. You
should also be aware that some third-party applications include
an
acad.lsp or .mnl file that modifies your drawing upon startup.

If a serious error is encountered, the input process stops and an
error message is displayed reporting where the error was found.
The partial drawing is not discarded.