home *** CD-ROM | disk | FTP | other *** search
- [ This file is an excerpt from the AutoCAD Release 10 Reference Manual.
- Copyright (C) 1988 Autodesk, Inc. All rights reserved. ]
-
- Appendix C
- Drawing Interchange and File Formats
-
-
- AutoCAD can be used by itself as a complete drawing editor. In some
- appli- cations, 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 the 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 that are then sent to a large
- computer for finite element structural analysis. You can compute
- stresses and displace- ments and send back information to display the
- deformed structure as an AutoCAD drawing.
-
- Since the AutoCAD drawing database (.dwg file) is written in a very
- compact format that changes significantly from time to time as new
- features are added, 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(tm)) 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 Standard (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 AutoCAD's
- internal format.
-
-
- C.1 ASCII Drawing Interchange (DXF) Files
-
- This section describes AutoCAD's DXF (drawing interchange) file format
- and the commands provided to read and write these files. DXF files are
- stan- dard ASCII text files. They can easily be translated to the
- formats of other CAD systems, or submitted to other programs for
- specialized analysis.
-
-
- C.1.1 DXFOUT Command - Writing a DXF File
-
- You can generate a drawing interchange file from an existing drawing by
- means of the Drawing Editor's DXFOUT command. The command format is:
-
- Command: DXFOUT File name <default>: (name or RETURN)
-
- 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 file
- name, do not include a file type; ".dxf" is assumed. If a file with the
- same name already exists, it is deleted. Next, DXFOUT asks what
- precision
-
- 1
- AutoCAD Reference Manual
-
- 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 appendix. If you respond
- with "Entities" (or just "E"), DXFOUT will ask you to select the objects
- you want written to the DXF file. Only the objects you select will be
- included in the output file - symbol tables (including Block
- Definitions) will not be included. Once you've selected the desired
- objects, AutoCAD will prompt again for the numeric precision:
-
- Enter decimal places of accuracy (0 to 16)/Binary <6>:
-
-
- C.1.2 DXFIN Command - Loading a DXF File
-
- A drawing interchange file can be converted into an AutoCAD drawing by
- means of the DXFIN command. First enter the Drawing Editor using the
- "Create new drawing" task from the Main Menu. Then issue the DXFIN com-
- mand.
-
- Command: DXFIN File name: (name)
-
- Enter 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, named views, named
- coordinate systems, or named viewport configurations have been created.
- (If your prototype draw- ing contains any such items, use Main Menu Task
- 1's "name=" technique to create a new drawing without a prototype.)
-
- 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.
-
-
-
- 2
- (C) Drawing Interchange and File Formats
-
- C.1.3 DXF File Format
-
- This section describes the format of a DXF file in detail. It contains a
- great deal of technical information that you need only if you're writing
- your own program to process DXF files. Otherwise, you can skip this sec-
- tion.
-
- 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 below.
-
-
- C.1.3.1 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.
-
- 2. TABLES section -- This section contains definitions of named
- items.
-
- o Linetype (LTYPE) table
- o Layer table
- o Text style (STYLE) table
- o View table
- o User Coordinate System (UCS) table
- o Viewport configuration (VPORT) table
- o Drawing manager (DWGMGR) table (for future use)
-
- 3. BLOCKS section - This section contains Block Definition entities
- describing the entities comprising 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 will
- contain only the ENTITIES and END OF FILE sections, and the ENTITIES
- section will reflect only the objects you select for output.
-
- A DXF file is composed of a multiplicity of 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 "I3" format
- (that is, right justified and blank filled in a three character field).
- The second line of the group is the group value, in a format which
- depends on the type of the group as specified by the group code.
-
-
-
- 3
- AutoCAD Reference Manual
-
- The specific assignment of group codes depends upon 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 way:
-
- Group code range Following value
- 0 - 9 String
- 10 - 59 Floating-point
- 60 - 79 Integer
- 210 - 239 Floating-point
- 999 Comment (string)
-
- 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 repre- sented in decimal degrees with zero degrees to the east of
- origin.
-
- Variables, table entries, and entities are described by a group that
- intro- duces 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.
-
-
- C.1.3.2 Group Codes
-
- Group codes are used both to indicate the type of the value of the
- group, as explained above, and to indicate the general use of the group.
- The spe- cific 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.
-
- Group code Value type
- 0 Identifies the start of an entity, table entry, or file
- separator. The text value that follows indicates which.
- 1 The primary text value for an entity.
- 2 A name; Attribute tag, Block name, etc.
- 3-4 Other textual or name values.
- 5 Entity handle expressed as a hexadecimal string.
- 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.
- continued ...
-
-
- 4
- (C) Drawing Interchange and File Formats
-
- Group code Value type
- 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). Output only
- if system variable FLATLAND is set to 1.
- 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).
- 70-78 Integer values, such as repeat counts, flag bits, or
- modes.
- 210, 220, 230 X, Y, and Z components of extrusion direction.
- 999 Comments
-
-
- C.1.4 Comments
-
- The 999 group code indicates that the following line is a comment
- string. DXFOUT does not currently include such groups in its 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.
-
-
- C.1.5 File Sections
-
- The DXF file is subdivided into four sections. 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
-
- 5
- AutoCAD Reference Manual
-
- TABLES
- 0
- TABLE
- 2
- VPORT
- 70
- (viewport table maximum item count)
- <<<<viewport table items go here>>>>
- 0
- ENDTAB
- 0
- TABLE
- 2
- LTYPE, LAYER, STYLE, VIEW, UCS, or DWGMGR
- 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)
-
-
- C.1.5.1 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 its name, followed by groups that supply its value. The header
- variables, the groups that follow, and their meanings are listed below.
-
- Although this list is very similar to the list of system variables in
- Appendix A, the two lists are not identical. Be sure you're referring to
- the proper list.
-
-
-
- 6
- (C) Drawing Interchange and File Formats
-
- $ACADVER 1 the AutoCAD drawing database version number.
- $ANGBASE 50 Angle 0 direction.
- $ANGDIR 70 1=clockwise angles, 0=counterclockwise.
- $ATTDIA 70 Attribute entry dialogues, 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.
- $AXISUNIT 10,20 axis X and Y tick spacing.
- $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, 0=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.
- $DIMDLE 40 dimension line extension.
- $DIMDLI 40 dimension line increment.
- $DIMEXE 40 extension line extension.
- $DIMEXO 40 extension line offset.
- $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 if 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.
- $DIMTAD 70 text above dimension line if nonzero.
- $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 between
- extensions if nonzero.
- $DIMTOH 70 text outside horizontal if nonzero.
-
-
- 7
- AutoCAD Reference Manual
-
- $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.
- $DRAGMODE 70 0=off, 1=on, 2=auto.
- $ELEVATION 40 current elevation set by ELEV command.
- $EXTMAX 10,20,30 XY drawing extents upper right corner (in WCS).
- $EXTMIN 10,20,30 XY drawing extents lower left corner (in WCS).
- $FILLETRAD 40 fillet radius.
- $FILLMODE 70 FILL mode on if nonzero.
- $FLATLAND 70 force compatibility with older versions 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.
- $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.
- $PLINEWID 40 default Polyline width.
- $QTEXTMODE 70 quick text mode on if nonzero.
- $REGENMODE 70 REGENAUTO mode on if nonzero.
- $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 Appendix A).
- $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 Appendix A).
- $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.
- $TRACEWID 40 default Trace width.
- $UCSNAME 1 Name of current UCS.
- $UCSORG 10,20,30 origin of current UCS (in WCS).
-
-
- 8
- (C) Drawing Interchange and File Formats
-
- $UCSXDIR 10,20,30 direction of current UCS's X axis
- (in World coordinates).
- $UCSYDIR 10,20,30 direction of current UCS's Y axis
- (in World coordinates).
- $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.
- $WORLDVIEW 70 1=set UCS to WCS during DVIEW/VPOINT,
- 0=don't change UCS
-
- The header variables listed below existed prior to AutoCAD Release 10
- but now have independent settings for each active viewport. They are not
- output by DXFOUT unless system variable FLATLAND is set to 1. 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 10 or higher), the values in the VPORT table entries
- will override the values of these header variables.
-
- $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 num-
- bers in the format:
-
- <Julian date>.<Fraction>
-
- The elapsed time variables ($TDINDWG and $TDUSRTIMER) have a similar
- format:
-
- <Number of days>.<Fraction>
-
-
- C.1.5.2 TABLES Section
-
- The TABLES section contains several tables, each of which in turn
- 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 intro- duced with a 0 group with the label "TABLE". This is
- followed by a 2 group identifying the particular table (VPORT, LTYPE,
- LAYER, STYLE, VIEW, UCS, or DWGMGR) and a 70 group that specifies the
- maximum number of table entries
-
- 9
- AutoCAD Reference Manual
-
- that may follow. The tables in a drawing may 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. It is
- provided so that your program to read DXF files can allocate an array in
- advance 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 table below), 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".
-
- If any table entry has bit value 64 set in its group 70 flags, the table
- entry was referenced by at least one entity in the drawing the last time
- the drawing editor was entered to edit this drawing. This "referenced"
- flag is for the benefit of the PURGE command; 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.
-
- LTYPE 3 (descriptive text for linetype), 72 (alignment code), 73
- (number of dash length items), 40 (total pattern length), 49
- (dash length 1), 49 (dash length 2), . . .
-
- LAYER 62 (color number, negative if layer is off), 6 (linetype
- name). The 1 bit is set in the 70 group flags if the layer is
- frozen.
-
- STYLE 40 (fixed text height; 0 if not fixed), 41 (width factor), 50
- (obliquing angle), 71 (text generation flags), 42 (last height
- used), 3 (primary font file name), 4 ("bigfont" 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 file name) is meaningful
- (all the other groups are output, however).
-
- The "text generation flags" are a bit-coded field with the
- following bit meanings:
-
- Flag bit value Meaning
- 2 Text is backwards (mirrored in X)
- 4 Text is upside down (mirrored in Y)
-
-
-
-
-
- 10
- (C) Drawing Interchange and File Formats
-
- VIEW 40 and 41 (view height and width), 10 and 20 (view center
- point), 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
- Appendix A).
-
- UCS 10, 20, 30 (origin), 11, 21, 31 (X axis direction), 12, 22, 32
- (Y axis direction). All in World coordinates.
-
- VPORT 10 and 20 (lower left corner of viewport; 0.0 to 1.0), 11 and
- 21 (upper right corner), 12 and 22 (view center point), 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), 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 view-
- port configuration all have the name "*ACTIVE". The first
- such entry describes the current viewport.
-
- DWGMGR For future use. Fields not yet defined.
-
-
- C.1.5.3 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 below, so refer
- to 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).
-
-
- C.1.5.4 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, with
- the exception that entities in the BLOCK section never have handles. 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
-
- 11
- AutoCAD Reference Manual
-
- 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
- data- base, and that as AutoCAD is further enhanced, new groups will be
- added to entities to accommodate additional features. Writing your DXF
- processing program in a table-driven way, making no assumptions about
- the order of groups in an entity, and ignoring any groups not presently
- defined, will make it much easier to accommodate DXF files from future
- releases of AutoCAD.
-
- Each entity begins with a 0 group identifying the entity type. The names
- used for the entities are given in the table that follows. 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 nonde-
- fault values for these properties.
-
- Group code Meaning
- 6 Linetype name (if not "BYLAYER"). The special name "BYBLOCK"
- indicates a floating linetype.
-
- 38 Elevation (if nonzero). Output only if system variable
- FLATLAND is 1. Otherwise, Z coordinates are supplied as
- 3x-groups as part of each of the entity's defining points.
-
- 39 Thickness (if nonzero).
-
- 62 Color number (if not "BYLAYER"). Zero indicates the
- "BYBLOCK" (floating) color.
-
- 210, These groups are included for each Line, Point, Circle, Shape,
- 220, Text, Arc, Trace, Solid, Block Reference, Polyline, Dimension,
- 230 Attribute, and Attribute Definition entity if its extrusion
- direction is not parallel to the World Z axis. The indicate
- the X, Y, and Z components of the entity's extrusion direction.
-
- The rest of the groups that make up an entity item are described below.
- 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
- descrip- tions, 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.
-
- 12
- (C) Drawing Interchange and File Formats
-
- LINE 10, 20, 30 (start point), 11, 21, 31 (end point).
-
- POINT 10, 20, 30 (point), 50 (angle of X axis for the UCS in effect
- when the Point was drawn -optional 0, for use when PDMODE is
- nonzero).
-
- 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 (obliquing angle -optional 0), 7 (text style
- name -optional "STANDARD"), 71 (text generation flags
- -optional 0), 72 (justification type -optional 0), 11, 21, 31
- (alignment point -optional, appears only if 72 group is
- present and nonzero).
-
- The "text generation flags" are a bit-coded field with mean-
- ings as follows:
-
- Flag bit value Meaning
- 2 Text is backwards (mirrored in X)
- 4 Text is upside down (mirrored in Y)
-
- The "justification type" value (not bit-coded) indicates the
- text justification style used on this entity, as shown in the
- following table.
-
- Value Meaning
- 0 Text is left justified
- 1 Text is centered along its baseline
- 2 Text is right justified
- 3 Text is aligned between two points (height varies)
- 4 Text is "middle" (fully) centered
- 5 Text is fit between two points (width varies)
-
- If the justification is anything other than 0 (left justi-
- fied), 11, 21, and 31 groups will also appear in the entity
- to specify the alignment point of the text (center, right-
- most, or second alignment point).
-
- DXFOUT handles ASCII control characters in text strings by
- expanding the character into a "^" (caret) followed by the
-
- 13
- AutoCAD Reference Manual
-
- appropriate letter. For example, an ASCII Control-G (BEL,
- decimal code 7) is output as "^G". If the text itself con-
- tains 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 (obliquing angle -optional 0).
-
- BLOCK 2 (Block name), 70 (Block type flags), 10, 20, 30 (Block base
- point). Appears only in BLOCKS section. The "Block type
- flags" are bit-coded, with the following bit meanings:
-
- Flag bit value Meaning
- 1 This is an "anonymous" Block generated by
- hatching, associative dimensioning, or
- other internal operations.
- 2 This Block has Attributes.
-
- 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 (Y scale 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" flag 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 above 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 (obliquing angle
- -optional 0), 7 (text style name -optional "STANDARD"), 71
- (text generation flags -optional 0, see TEXT above), 72 (text
- justification type -optional 0, see TEXT above)), 11, 21, 31
- (alignment point -optional, appears only if 72 group is
- present and nonzero).
-
- The "Attribute flags" are a bit-coded field in which the bits
- have the following meanings:
-
- 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)
-
- 14
- (C) Drawing Interchange and File Formats
-
- ATTRIB 10, 20, 30 (text start), 40 (text height), 1 (value, see TEXT
- above for handling of ASCII control characters), 2 (Attribute
- tag), 70 (Attribute flags; see ATTDEF above), 73 (field
- length -optional 0), 50 (text rotation -optional 0), 41 (rel-
- ative X scale factor -optional 1), 51 (obliquing angle
- -optional 0), 7 (text style name -optional "STANDARD"), 71
- (text generation flags -optional 0, see TEXT above), 72 (text
- justification type -optional 0, see TEXT above), 11, 21, 31
- (alignment point -optional, appears only if 72 group is
- present and nonzero).
-
- POLYLINE 66 ("vertices follow flag"), 70 (Polyline flags), 40 (default
- starting width), 41 (default ending width), 71 and 72 (poly-
- gon mesh M and N vertex counts -optional 0), 73 and 74
- (smooth surface M and N densities -optional 0), 75 (smooth
- surface type -optional 0). The default widths apply to any
- vertex that doesn't supply widths (see below).
-
- 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
- flags" group is a bit-coded field with bits defined as fol-
- lows:
-
- 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 indi-
- cates 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 direc-
- tion
-
- VERTEX 10, 20, 30 (location), 40 (starting width -optional, see
- above), 41 (ending width -optional, see above), 42 (bulge),
- 70 (vertex flags), 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 end point; a bulge of 0
- indicates a straight segment, and a bulge of 1 is a semicir-
- cle. The meanings of the bit-coded "vertex flags" are shown
- in the following table.
-
-
-
-
- 15
- AutoCAD Reference Manual
-
- 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 signif-
- icant 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
-
- 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).
-
- 3DLINE 10, 20, 30 (start point), 11, 21, 31 (end point).
-
- 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 were 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.
-
- Flag bit value Meaning
- 1 First edge is invisible
- 2 Second edge is invisible
- 4 Third edge is invisible
- 8 Fourth edge is invisible
-
- DIMENSION 2 (name of pseudo-Block containing the current dimension pic-
- ture), 10, 20, 30 (definition point for all dimension types),
- 11, 21, 31 (middle point of dimension text), 12, 22, 32
- (insertion point for clones of a dimension (for BASELINE and
- CONTINUE), 70 (Dimension type; 0=rotated, horizontal, or ver-
- tical; 1=aligned; 2=angular; 3=diameter; 4=radius - the value
- 128 is added to this field if the dimension text has been
- positioned at a user-defined location rather than at the
- default location), 1 (dimension text explicitly entered by
- the user. If null, the dimension measurement is drawn as the
- text. Otherwise, this text is drawn (but if it includes the
- sequence "<>", the dimension measurement is drawn in place of
- the "<>")), 13, 23, 33 (definition point for linear and angu-
- lar dimensions), 14, 24, 34 (definition point for linear and
- angular dimensions), 15, 25, 35 (definition point for diame-
- ter, 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).
-
-
-
- 16
- (C) Drawing Interchange and File Formats
-
- In addition, all dimension types have an optional group (code
- 51) that indicates the "horizontal" direction for the Dimen-
- sion 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
- ECS angle of the UCS X axis in effect when the Dimension was
- drawn. In other words, 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.
-
- For all dimension types, the following groups represent 3D
- WCS points, regardless of the FLATLAND setting.
-
- 10, 20, 30
- 13, 23, 33
- 14, 24, 34
- 15, 25, 35
-
- For all dimension types, the following groups represent ECS
- points, and are 2D or 3D depending on the FLATLAND setting.
-
- 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.
-
- Angular (13,23,33) and (14,24,34) The endpoints of the first line
- (10,20,30) and (15,25,35) The endpoints of the second line
- (16,26,36) The point used to specify the dimen-
- sion line arc
-
- 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.
-
- Radius (15,25,35) The point used to pick the circle/arc to dimension
- (10,20,30) The center of that circle.
-
-
-
-
-
-
-
-
-
-
- 17
- AutoCAD Reference Manual
-
- 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 its own Entity
- Coor- dinate 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 its 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 is 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
- follow- ing properties:
-
- o Its origin coincides with the WCS origin.
- o The orientation of the X and Y axes within the XY plane are calcu-
- lated in an arbitrary, but consistent manner. AutoCAD performs
- this calculation using the "arbitrary axis" algorithm described
- below.
-
- 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.
-
- Entities Notes
- LINE, POINT, 3DFACE, 3D These entities do not lie in
- Polyline, 3D Vertex, 3D a particular plane. All
- Mesh, 3D Mesh vertex points are 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
- INSERT, 2D Polyline, 2D expressed in Entity coordi-
- Vertex nates. All these 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.
-
- 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:
-
- 18
- (C) Drawing Interchange and File Formats
-
- o 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.
- o 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.
-
- A few ramifications of this process are:
-
- o You can not reliably find out what UCS was in effect when an
- entity was acquired. You can only find out where the entity is in
- the current UCS if the current UCS has the same Z axis direction
- as the original UCS (i.e., they both reduce to the same ECS).
- o 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 coordi-
- nates 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.
- o 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 coor- dinate 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 frac- tion 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).
-
- 19
- AutoCAD Reference Manual
-
- 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 (Nx < 1/64) and (Ny < 1/64) then
- Ax = Wy * N (where "*" is the cross-product operator).
- Otherwise,
- Ax = Wz * N.
- Scale Ax to unit length.
-
- The method of getting the Ay vector would be:
-
- Ay = N * Ax.
- Scale Ay to unit length.
-
-
- C.1.6 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 constructed with the deliberate
- intention of making it easy to ignore information you don't care about
- while easily reading the information you need. Just remember to handle
- the groups in any order and ignore any group you don't care about, and
- you'll be home free.
-
- As an example, the following is a Microsoft BASIC 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 com- puter, 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
-
-
- 20
- (C) Drawing Interchange and File Formats
-
- 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;")
- 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
- 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";G1% : 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 it acceptable. AutoCAD allows you to 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 in fact 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, it must appear before the ENTITIES section. Within the ENTITIES
- section, you can refer- ence layer names even though you haven't defined
- them in the LAYER table.
-
- 21
- AutoCAD Reference Manual
-
- Such layers will be 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 pro- gram doesn't create the drawing header, the drawing limits,
- extents, and current view will be invalid after performing a DXFIN on
- the drawing gener- ated 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 FOR I% = 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"
-
- 22
- (C) Drawing Interchange and File Formats
-
- 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). The above program takes advantage of this
- flexibility in input format, and does not go to great effort 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 detected 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 such errors as omission of required groups.
-
-
-
- C.2 Binary Drawing Interchange Files
-
- The ASCII DXF file format described in the preceding sections of this
- appendix 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.
-
-
- C.2.1 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 much 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
- is 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:
-
- o a two-byte integer with the least significant byte first and the
- most significant byte last,
-
-
-
- 23
- AutoCAD Reference Manual
-
- o an eight-byte IEEE double precision floating-point number stored
- with the least significant byte first and the most significant
- byte last, or
-
- o 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.
-
- 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 it. 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.
-
-
- C.3 Binary Drawing Interchange (DXB) Files
-
- The DXF file formats described earlier in this appendix are complete
- repre- sentations of an AutoCAD drawing that can be written and read by
- AutoCAD and other programs. However, AutoShade(tm) and programs executed
- via the "external commands" facility (Appendix B) often have a 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. Furthermore, AutoCAD has a command to
- read such files, but no direct method of writing them. (The ADI plotter
- driver can plot to a file in DXB format.)
-
-
- C.3.1 DXBIN Command
-
- To load a DXB file produced by a program such as AutoShade, enter the DXBIN
- command:
-
- Command: DXBIN
- DXB file:
-
- enter the name of the file you wish to load. Don't include a file type;
- ".dxb" is assumed.
-
-
-
-
-
-
-
-
-
- 24
- (C) Drawing Interchange and File Formats
-
- C.3.2 DXB File Format
-
- 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 (19 bytes)
- Data: . . . Zero or more data records . . .
- Terminator: NUL (1 byte)
-
- Each data record begins with a single byte giving its type, followed by
- data items. Th