DXF-CSV v1.0 Entities
Every entity type DXF-CSV supports, one card each. Five entities (SPLINE, MTEXT,
ELLIPSE, MULTILEADER, HATCH) carry extra "v2018 detail" -- deeper column behavior
confirmed from live entmake/entget round-trips on modern
AutoCAD. For column codes shared across entity types, see
Reference.
Entity quick reference
LINE
Key columns: pt[10] start, pt[11] end
CIRCLE
Key columns: pt[10] center, real[40] radius
ARC
Key columns: pt[10] center, real[40]
radius, angle[50] start, angle[51] end
Notes: angles in degrees CCW from X axis.
POINT
Key columns: pt[10] location, angle[50] display angle
TEXT
Key columns: pt[10] insertion point,
real[40] height, text[1] string, int[72]
horizontal justification, int[73] vertical justification
Notes: int[72]: 0=left (absent), 1=center,
2=right, 3=aligned, 4=middle, 5=fit. int[73]: 0=baseline (absent),
1=bottom, 2=middle, 3=top. Default (left/baseline): set
pt[10] to the insertion point; omit pt[11] and both
justification flags. Any other justification: set
pt[11] to the anchor point (the center, right edge, top, etc. --
wherever the text should align to); omit pt[10]. CSVIN derives
pt[10] from pt[11] automatically before calling
entmake. The pt[10] values seen in CSVOUT output are
AutoCAD's cached fast-render positions -- do not attempt to compute or reproduce
them.
MTEXT (v2018 detail)
Key columns: pt[10] insertion point,
real[40] text height, real[41] defined width (reference
rectangle width, 0=undefined), text[1] content, int[71]
attachment point, angle[50] rotation
Notes: \P = newline in content. Other inline
codes (\A1;, {\H...}, etc.) preserved as-is.
real[44] = line spacing factor (1.0=single, absent=default/none
set). real[46] = defined column height (0=variable/none -- legacy
XDATA-era field, distinct from any column geometry on the now-stripped embedded
object). int[72] = drawing direction (1=LR, 3=TB, 5=by style).
int[73] = line spacing style (1=at least, 2=exactly).
long[90] = background fill flag (1/3/16/17 = filled, with trailing
int[63] fill color and real[45] fill scale factor; 2 =
use drawing background, long[90] only -- no trailing fields;
absent/0 = no fill). long[421] = RGB background fill color override
-- same relationship to int[63] as long[420] has to
color[62]: int[63] is always present when fill is
active, long[421] is present only when the fill color is a
true-color RGB value and absent when it is an ACI; overrides int[63]
for display when present. real[45] is only present
as part of the fill tail -- it is not a general-purpose defined-height field. DXF
code 101 (Embedded Object) and the codes unique to that block
(pt[11], real[42], real[43],
int[70], int[74]) are stripped -- entmake
does not support them. The remaining shared codes (pt[10],
real[41], real[44], int[71],
int[72], int[73]) are emitted once, flattened -- not
duplicated for the main entity vs. the stripped embedded object.
v2018 detail -- background fill: DXF's underlying entmake
sequence also reserves a transparency slot in the fill tail position, but AutoCAD
has never implemented transparency for MTEXT background fill -- that slot is not
written and does not appear in the CSV. Value 2 ("use drawing background color")
is a structural exception: only long[90] itself is present, and the
fill tail is rejected by entmake if included -- a CSVOUT row with
long[90]=2 must never carry real[45] or the other tail
fields.
v2018 detail -- embedded object (code 101): MTEXT can carry
column layout data two ways in DXF: as a packed XDATA value (real[46],
above) or as a DXF code 101 Embedded Object block -- a second, self-contained set
of MTEXT-like group codes (its own 10, 11, 40, 41, 42, 43, 71, 72, 44, 45, 73, 74,
46) nested after the 101 marker. The embedded object form is not supported by
entmake and is stripped on export entirely. Codes that exist only
inside the embedded object (pt[11] as a second point,
real[42] actual height, real[43] actual width,
int[70] column flow direction, int[74] column count) are
dropped along with it -- these never appear in the CSV. real[45] is
not in this shared list -- on the main entity it only appears
inside the background fill tail, unlike the other listed codes.
v2018 detail -- long content: MTEXT content longer than 250
characters is split across multiple DXF code 3 continuation lines, with the final
remainder in code 1. CSVOUT flattens this into two related columns:
text[1] holds the complete merged content with the code-1 remainder
placed first, followed by each code-3 chunk in order,
tab-separated -- this is the opposite of DXF wire order, where code-3 chunks come
first and code 1 is the trailing remainder. text[3] holds only the
code-3 chunks, tab-separated, in DXF order, and is absent when the content fits in
a single code-1 value (250 characters or fewer). A consumer reconstructing
entmake input for content over 250 characters needs
text[3] to know where the chunk boundaries fall --
text[1] alone gives the correct content but not the correct node
split.
INSERT
Key columns: pt[10] position, name[2]
block name, real[41/42/43] scale, angle[50] rotation
Notes: absent scale = 1.0. If no matching BLOCK definition exists, the block was stripped -- treat as zero-geometry insertion.
MINSERT
Key columns: same as INSERT plus real[44] column
spacing, real[45] row spacing, int[70] column count,
int[71] row count
Notes: rectangular array of block insertions.
Exported as INSERT type -- there is no separate
MINSERT entity type in the CSV. Distinguish from a plain INSERT by the presence of
real[44]/real[45]. int[70] and
int[71] carry column and row counts in this context -- distinct from
their flag meanings on other entity types.
ATTRIB
Key columns: follows INSERT, name[2] tag,
text[1] value
Notes: always same space (model or paper) as parent INSERT.
ATTDEF
Key columns: inside BLOCK definition, name[2] tag
3DFACE
Key columns: pt[10]-pt[13] four corners
Notes: int[70] = edge visibility bitmask (bit N hides edge N).
SOLID
Key columns: pt[10]-pt[13] four corners
Notes: pt[12] and pt[13] are swapped vs 3DFACE in DXF spec.
TRACE
Key columns: pt[10]-pt[13] four corners
Notes: same geometry as SOLID, legacy entity.
POLYLINE
Key columns: pt[10] elevation only (X and Y
always zero), followed by VERTEX rows, terminated by SEQEND
Notes: int[70] flags: 1=closed-M, 2=curve-fit,
4=spline-fit, 8=3D, 16=polygon-mesh, 32=closed-N, 64=closed-N (polygon mesh).
Flags combine -- int[70]=17 is polygon-mesh + closed-M.
int[70]=128 (continuous linetype pattern) applies to 2D polylines
only -- ignored on 3D polylines (int[70]=8). seq[66]=1
always present. real[40] default start width, real[41]
default end width -- absent when zero. int[75] smooth surface type:
0=none, 5=quadratic B-spline, 6=cubic B-spline, 8=Bezier. Polygon
mesh: when int[70] has bit 16 set, int[71]=M
vertex count and int[72]=N vertex count are required -- must be
present for DXF export. See sample_polylines.csv.
VERTEX
Key columns: pt[10] coordinate,
real[40] start width, real[41] end width,
real[42] bulge
Notes: int[70] vertex flags: 1=curve-fit
generated vertex, 2=tangent defined (angle[50] carries tangent
direction), 8=spline frame control point, 16=spline fit point, 18=spline fit
point with tangent (16+2 -- used for spline-fit insert/anchor vertex),
32=3D polyline vertex OR 3D polygon mesh vertex, 64=polygon mesh vertex closed-N,
128=face index vertex (int[71/72/73] are vertex indices).
Note: int[70]=4 on a VERTEX is not valid DXF --
never emit it. real[40]/real[41] absent when they match
the POLYLINE default widths. Curve-fit POLYLINEs
(int[70]=2 on POLYLINE): CSVOUT strictly interleaves
original control vertices (int[70]=2, with angle[50] tangent) and
generated curve-fit vertices (int[70]=1, with real[42] bulge). Last
original vertex has no bulge. For AI generation, emit only the original control
vertices (int[70]=2) -- AutoCAD regenerates the fit. Spline-fit POLYLINEs
(int[70]=4 on POLYLINE, int[75]=6 for
cubic): vertex order is strict: (1) insert/anchor vertex (int[70]=18,
coordinates of first fit point, carries angle[50] tangent), (2) all
generated B-spline control vertices (int[70]=8), (3) all fit-point vertices
(int[70]=16). For AI generation use SPLINESEGS=2: for N fit points generate
2×(N-1)+1 control points (int[70]=8), followed by N fit points
(int[70]=16). Example for 5 fit points:
insert(18) → ctrl×9(8) → fit×5(16) → SEQEND.
See sample_polylines.csv for complete verified examples of all
POLYLINE/VERTEX flag combinations.
LWPOLYLINE
Key columns: pt[10] all vertices
space-delimited, real[42] bulge values comma-delimited
Notes: post-R12, treated as R12-extended.
elev[38] = elevation when non-zero. thick[39] =
thickness when non-zero. int[70] = 1 when closed, absent when
open.
MESH
Key columns: pt[10] vertices space-delimited,
long[90] face and edge data, long[93] face data count,
long[94] crease edge count, real[140] crease values
comma-delimited
Notes: subdivision mesh (post-2010). long[91] =
subdivision level (absent when 0). long[90] contains two sections
combined: face section (long[93] values -- face vertex counts
followed by vertex indices) then edge section (long[94]×2
values -- vertex index pairs per crease edge). Total long[90] field
count = long[93] + long[94]×2. A fixed
(90 . 0) sentinel is always appended by CSVIN after the edge section
-- it is not a CSV value. int[92] (vertex count) and
int[95] (crease count, always equal to int[94]) are
absent from the CSV -- derived by CSVIN from pt[10]
field count and long[94] respectively. real[140] absent
when all creases are 0.0 -- omit for flat meshes. When present, field count must
equal long[94].
MLINE
Key columns: name[2] style name,
pt[10] start point, pt[11] vertex coordinates
space-delimited, pt[12] segment direction unit vectors
space-delimited, pt[13] miter direction unit vectors
space-delimited, real[40] overall scale, real[41]
element parameters comma-delimited
Notes: multiline entity -- parallel lines drawn along a path
using an MLINESTYLE definition. name[2] = MLINESTYLE name (style
geometry is embedded in the export rather than referencing external style data).
pt[10] = origin/start point (DXF code 10, always equals first point
in pt[11]). pt[11] = all vertices of the path,
space-delimited (DXF code 11, one per vertex). pt[12] = segment
direction unit vectors, space-delimited, one per vertex (DXF code 12).
pt[13] = miter direction unit vectors, space-delimited, one per
vertex (DXF code 13). real[40] = overall scale factor applied to all
element offsets. real[41] = element parameter flat list,
comma-delimited (DXF code 41). For a 2-element style with N vertices, each vertex
contributes 2 × (offset, trailing_gap) parameter groups; for non-uniform
element parameter counts see int[74]. int[70] = flags:
bit 0=closed, bit 1=suppress start caps, bit 2=suppress end caps (absent=open with
caps). int[74] = per-element parameter counts comma-delimited (DXF
code 74) -- absent when all elements have exactly 2 parameters each at all
vertices. CSVIN support: imports against the Standard MLINESTYLE --
the named style must exist in the target drawing or CSVIN substitutes
Standard.
SEQEND
Key columns: terminates POLYLINE/INSERT+ATTRIB sequence
Notes: no properties -- type column only.
DIMENSION
Key columns: pt[10] dim line point,
pt[11] text midpoint, pt[13] definition pt 1,
pt[14] definition pt 2, pt[15] definition pt 3
(arc/angular), pt[16] arc point (angular), real[40]
leader length (certain types), real[144] actual measurement value
(derived, read-only), text[3] dimstyle name, angle[50]
rotation angle
Notes: int[70] low 4 bits = dimension type:
0=linear-rotated, 1=aligned, 2=angular, 3=diameter, 4=radius, 5=angular-3pt,
6=ordinate. Bit 32 = unique block reference -- always set in practice; default
value of int[70] when absent is 32. Bit 64 = ordinate type. Bit 128 =
text user-positioned. Common values: 32=linear, 33=aligned, 34=angular,
35=radius, 36=ordinate, 37=angular-3pt. name[2] references a
*D## anonymous block -- stripped by default, no matching BLOCK
definition will be present. char[271]/char[272] may
appear as per-entity style overrides (decimal places). real[144] is
the AutoCAD-computed measurement -- present but not required for CSVIN import.
See Block strip rules.
SPLINE (v2018 detail)
Key columns: pt[10] control points
space-delimited, pt[11] fit points space-delimited,
pt[12] start tangent vector (optional), pt[13] end
tangent vector (optional), real[40] knot vector comma-delimited,
real[41] weights comma-delimited (rational splines only),
real[42] knot tolerance, real[43] control point
tolerance, real[44] fit tolerance (present only when fit points
exist)
Notes: int[70] flags (bits 0-4 only -- upper
bits stripped by CSVOUT): 1=closed, 2=periodic, 4=rational, 8=planar, 16=linear.
AI generators should only set bits 0-4. int[71] = degree.
int[72] (knot count), int[73] (control point count),
int[74] (fit point count) are absent from the CSV
-- they are derived by CSVIN from field counts of real[40],
pt[10], pt[11] respectively. Do not emit them.
pt[12] and pt[13] are independently
optional -- either may be present without the other, and both are
absent in the column header unless at least one spline in the drawing has that
tangent. real[44] present only when int[74] > 0. All
data packed inline -- no continuation rows.
v2018 detail: all data is packed inline on a single row -- no continuation rows.
ELLIPSE (v2018 detail)
Key columns: pt[10] center, pt[11]
major axis vector, real[40] minor/major axis ratio,
real[42] end parametric angle
Notes: end angle in radians: 2π = full ellipse.
pt[11] magnitude = major axis length, direction = major axis
orientation. real[40] is the ratio of minor to major axis (0 to 1),
not an absolute length. Start angle is always 0 in the current encoding -- a
future revision may move to angle[50]/angle[51] in
degrees to align with ARC.
HATCH (v2018 detail)
Key columns: name[2] pattern name,
pt[10] boundary loop vertices (space-delimited x,y
pairs per loop, loops separated by 0.0,0.0,0.0 sentinel),
pt[11] spline control points for curved boundary edges,
real[40] circle boundary radius (comma-delimited when multiple
circle boundaries), real[41] pattern scale, real[42]
boundary edge bulge values (comma-delimited), real[43] pattern line
X origins (comma-delimited per line), real[44] pattern line Y
origins, real[45] pattern line delta-X, real[46]
pattern line delta-Y, real[49] dash/gap lengths per pattern line
(comma-delimited), angle[50] circle boundary start angle
(comma-delimited when multiple circles), angle[51] circle boundary
end angle -- 360=full circle (comma-delimited when multiple circles),
angle[52] overall hatch rotation in degrees, angle[53]
per-pattern-line angles (comma-delimited), int[70] associativity
(1=associative), int[71] dual/double hatch flag,
int[72] edge types or polyline closed flag (see notes),
int[73] complete circle flag (1=full circle when
int[72]=2), int[75] hatch style (0=normal, 1=outer,
2=ignore), int[76] pattern type (0=user-defined, 1=predefined,
2=custom), int[77] island detection style, int[78]
number of pattern lines, int[79] boundary loop edge type flags
(comma-delimited), long[91] number of boundary loops,
long[92] loop type flags (comma-delimited per loop),
long[93] edge count per loop (comma-delimited), long[98]
source boundary object count (absent when not associative), trans[440]
transparency, long[450]-long[453] gradient fill data,
real[460]-real[462] gradient angles/shift
Notes: name[2] is the pattern name --
ANSI31, SOLID, BRICK, _USER,
_U (user-defined short form), FP_* (custom floor plan
patterns), or other named patterns. For SOLID fill:
int[76]=1, no pattern line data. long[92] loop
type flags (comma-delimited, one per loop): bit 0 (1)=external boundary,
bit 1 (2)=polyline boundary, bit 2 (4)=outermost, bit 3 (8)=textbox island, bit 4
(16)=hole/island. Common values: 1=external edge-type, 5=external+polyline,
7=external+polyline+outermost, 17=external+circle-type, 24=island (bits 3+4).
int[72] has two roles depending on
long[92]: for polyline boundaries (long[92] bit 1 set),
int[72] is the polyline closed flag (0=open, 1=closed) -- one value
per polyline loop, comma-delimited; for edge boundaries (long[92] bit 1 clear),
int[72] is per-edge type (1=line, 2=arc/circle, 3=ellipse, 4=spline)
-- comma-delimited across all edges of all edge-type loops. Circle boundaries:
int[72]=2, real[40]=radius, angle[50]=start,
angle[51]=end (360=full circle), int[73]=1 -- when
multiple circle boundaries exist, real[40], angle[50],
and angle[51] are all comma-delimited. angle[52] is the
overall hatch rotation and may be any value. Multiple boundary loops separated by
0.0,0.0,0.0 sentinel in pt[10]. All comma-delimited
fields are parallel arrays indexed by pattern line or boundary edge. For polyline
boundaries (long[92] bit 1 set): pt[10] =
origin(x,y,z) + boundary vertices (2D) + trailing pair equal to
real[43],real[44]; pt[11] = same vertices
starting from second vertex. AI generation: set
real[43]/real[44] and the pt[10] trailing
pair to 0.0 -- the hatch draws correctly and AutoCAD recomputes the
exact seed on regeneration. real[45]/real[46] are
computable: (-cos(angle)×spacing×scale, sin(angle)×spacing×scale).
int[72] is required even for SOLID fill polyline boundaries (as the
closed-polyline flag). Gradient fill: when
long[450]=1, the hatch is a gradient fill. long[452] = 1
for one-color gradient, 2 for two-color. long[453] = number of
gradient color entries. long[421] = packed RGB color(s) for gradient
(comma-delimited when multiple). real[462] = shade/tint factor
(0.0-1.0). real[463] = gradient taper values comma-delimited (one
per color). string[470] = gradient type name (LINEAR,
HEMISPHERICAL, CURVED, INVLIN,
INVSPH, INVCUR, SPHER, HEMI,
CURV). CSVIN handles group-47 (pixel size threshold) internally from
flags -- do not emit real[47].
v2018 detail -- group 47: CSVIN computes and inserts
real[47] (pixel size threshold) internally based on boundary flags --
do not emit it. Its presence or absence is flag-driven and an incorrect value
silently breaks entmake.
v2018 detail -- pattern-line origin for AI generation:
real[43]/real[44] (pattern line X/Y seed origin) are
computed by AutoCAD's internal hatch seeding algorithm and cannot be reproduced
analytically. Set both to 0.0 for AI-generated hatches -- the hatch
will draw correctly with a slightly phase-shifted pattern, and AutoCAD recomputes
the exact values on regeneration.
RAY
Key columns: pt[10] origin, pt[11] unit direction vector
Notes: extends infinitely in one direction from origin.
pt[11] is a direction vector -- need not be normalized. AutoCAD
normalizes internally on creation.
XLINE
Key columns: pt[10] point on line, pt[11] unit direction vector
Notes: extends infinitely in both directions (construction
line). pt[11] is a direction vector -- need not be normalized.
LEADER
Key columns: pt[10] vertices space-delimited,
real[40] arrowhead height, real[41] annotation width,
text[3] dimstyle name, int[73] annotation type
Notes: int[73]: 0=none/MTEXT follows,
1=tolerance, 2=block reference. pt[213] = normal vector override --
present when the leader is not in the WCS XY plane.
TOLERANCE
Key columns: pt[10] insertion point,
text[1] tolerance string, text[3] dimstyle name
Notes: tolerance string uses %%v control codes
for geometric tolerance symbols and ^J as line separator.
ACAD_TABLE
Key columns: pt[10] insertion point,
pt[11] direction vector, long[91] nROW (row count --
field[0] only for simple tables), long[92] nCOL (column count),
real[141] row heights comma-delimited (nROW values),
real[142] column widths comma-delimited (nCOL values),
string[302] per-cell text (ncell tab-delimited fields including
empty strings), text[1] unique non-empty cell text (tab-delimited,
for AI readability), long[90] combined: field[0]=table flags
(typically 22), field[1..N]=per-cell value flags (4=content, 0=empty),
long[93] combined: field[0]=override count, field[1..N]=per-cell
value type (6=content, 7=virtual/empty)
Notes: nROW × nCOL = total cell count (ncell).
name[2] is never emitted -- the anonymous *T## block is
auto-assigned by CSVIN and by direct-to-DXF export. string[302] is
the structural cell-content column: exactly ncell tab-delimited fields, empty
string for empty/virtual cells. text[1] is redundant for CSVIN but
present for AI readability. For a minimal plain table, only
long[91] (field[0]=nROW), long[92],
real[141], real[142], string[302],
long[90], and long[93] are required -- per-cell style
columns may be omitted entirely and CSVIN produces a functional default-styled
table. Per-cell style overrides (int[63], int[64],
real[140], long[421], long[422],
real[145], etc.) are exported as padded ncell comma-delimited
columns -- see dxf-2018 column
additions. Empty tables (nROW=0 or nCOL=0) are valid -- only table-level
columns present. long[91] field[0] is sufficient for AI generation
of simple tables (no merged cells); the full ncell per-cell merged-row-span
values are present in CSVOUT when cells are merged.
MULTILEADER (v2018 detail)
Key columns: string[304] mtext content,
pt[10] all points space-delimited (content base, last leader pt,
vertices × nlines, color point), pt[11] space-delimited:
field[0]=mtext normal, field[1]=dogleg direction (absent when both at default),
pt[12] mtext location, pt[13] mtext direction (absent
when default), pt[15] block insertion point (block-type only),
pt[110]/pt[111]/pt[112] block content UCS
axes (block-type only), real[40] combined: content scale + dogleg
length, real[41] combined: text width + arrowhead size,
real[42] combined: text height + line weight, real[43]
combined: block scale x + line scale, real[45] landing gap (absent
when default), real[47] line weight override (absent when default),
real[140] text height override (absent when default),
real[141] text width override (absent when default),
real[145] landing gap override (absent when default),
long[90] combined property override flags (3 fields),
long[91] combined text-width flags, long[92] combined
second flags, long[93] combined third flags, long[95]
arrow size (absent when default), int[170] combined leader type -- 2
fields (absent when default 1,1), int[172] content type
(1=mtext, 2=block), int[173] combined draw order,
int[174] combined leader count, int[175] combined text
attachment -- 2 fields (absent when default), int[176] text align,
int[179] text angle type (absent when default), bool[290]
combined has-content/leader flags -- 2 fields (no leader) or 3 fields (with
leader), bool[291] has-dogleg -- 3 fields (absent when default),
bool[292] has-text-direction -- 2 fields (absent when default),
bool[293] combined enable flags, bool[295] text
extend-to-leader, bool[296] block attribute flag,
string[302] block attribute values tab-delimited (block-type only),
string[304] mtext content
Notes: pt[10] field count n10 drives structure:
n10=2 → no-leader/compact (field[0]=content base, field[1]=color point);
n10≥4 → nlines=n10-3 (field[0]=content base, field[1]=last leader pt,
field[2..N-2]=per-line vertices, field[N-1]=color point always
1.0,1.0,1.0). bool[290] field[0]=has_content is the
structural gate: 0=no content, 1=with content. long[90] field[2]
override bitmask: 279552=straight, 279553=spline,
279808=closed-blank arrowhead, 312704=four-leader.
Block-type multileaders (int[172]=2): pt[15]=block
insertion, pt[110]/pt[111]/pt[112]=UCS
axes, string[302]=tab-delimited attribute values,
string[304] absent. When string[302] is prefixed
LEADER{⇥, the prefix is a skeleton marker injected by CSVIN --
not a user value. Several codes normalize on entget round-trip: (270) 2→0,
(175) 1→6, (95) 1→6, (295) 0→1 -- CSVOUT reflects entget values;
entmake accepts both. Minimum viable (straight leader, mtext):
pt[10], pt[12], real[40],
long[90], string[304].
v2018 detail -- minimum viable example (straight leader, mtext):
layer[8]: target-layer string[304]: label text pt[10]: content_x,content_y,0.0 lastpt_x,lastpt_y,0.0 vertex_x,vertex_y,0.0 1.0,1.0,1.0 pt[12]: mtext_x,mtext_y,0.0 real[40]: 1.0,0.36 long[90]: -1073741824,0,279552 bool[290]: 1,1,1
PDFUNDERLAY
Key columns: pt[10] insertion,
real[41/42/43] uniform scale, char[281] contrast
(0-100), char[282] fade (0-80)
Notes: undocumented entity -- PDF reference underlay attached
to the drawing. Not supported by CSVIN. Non-geometric properties (layer,
linetype) preserved for analysis. char[281]/char[282]
columns will be absent when only PDFUNDERLAY uses them -- suppressed per
single-entity-type column policy.
BLOCK
Key columns: name[2] block name,
pt[10] base point
Notes: anonymous (*-prefix) and empty blocks are
stripped by default. See Block
structure.
ENDBLK
Key columns: closes BLOCK definition
Notes: no properties -- type column only.
LAYER
Key columns: name[2] name,
linetype[6], color[62], int[70] flags
Notes: int[70]: 1=frozen, 2=frozen-by-default,
4=locked. Reserved layer names: _ai and _claude are
reserved for AI directives -- CSVIN ignores all entities on these layers.
Defpoints is AutoCAD's dimension point layer -- suppress for
visualization.
LTYPE
Key columns: name[2] name, text[3]
description, real[40] total pattern length, real[49]
element lengths comma-delimited, int[70] flags, int[72]
alignment (always 65=ASCII 'A'), int[73] element count
Notes: text[3] is the human-readable description
shown in the linetype dialog. real[49] absent = CONTINUOUS (no
elements). Positive element = dash, negative = gap, zero = dot.
ByBlock and ByLayer are AutoCAD built-in linetypes --
they appear as name-only rows when the LTYPE table is exported.
STYLE
Key columns: name[2] name, text[3]
font/shape filename (when differs from name), real[40] fixed height
(0=variable), real[41] width factor, real[42] oblique
angle, angle[50] last-used height, int[70] flags,
int[71] text generation flags
Notes: int[70] bit 1 = shape file, bit 4 =
vertical. int[71] bit 2 = mirror X, bit 4 = mirror Y. A STYLE row
with empty name[2] is the anonymous shape file style AutoCAD creates
for linetype shape references -- text[3] will be a
.shx filename (e.g. ltypeshp.shx).
DIMSTYLE
Key columns: name[2] name,
real[40]-real[48] dimension variables,
int[70]-int[78] dimension flags,
real[140]-real[147] extended reals,
int[170]-int[178] extended flags
Notes: full R12 dimvar set. See the DXF R12 spec for
individual variable meanings (DIMSCALE=40, DIMASZ=41, DIMEXO=42, etc.). A
DIMSTYLE row with only name[2] is valid -- all other columns absent
means use AutoCAD defaults for that style.
SECTION / ENDSEC
Key columns: name[2] section name
Notes: present only when the full section is included via
-dxs. Absent when individual tables or blocks are selected by name.
See Structural sentinel rows.
Entities not supported by CSVIN
IMAGE, 3DSOLID, LIGHT, EXTRUDEDSURFACE, OLE2FRAME -- these entity
types are not supported by CSVIN -- acdbEntMake / acdbEntMod
cannot create them, so they will be ignored on import regardless of what data is
present. They may still appear in CSVOUT output and carry analysis value (layer,
color, position). They frequently appear as zombies since their object enablers are
typically not loaded during export, but the CSVIN limitation is independent of zombie
status.
See also CSVIN status for the full not-supported / planned list, including VIEWPORT and PDFUNDERLAY.
dxf-2018 column additions
Columns that only appear when the source drawing was exported from a modern
AutoCAD (codes:dxf-2018), beyond the standard columns in
Reference.
Full dxf-2018 column additions table (63 rows)
| Header | Code | Meaning | Entity |
|---|---|---|---|
real[141] | 141 | Row heights comma-delimited (nROW values) | ACAD_TABLE |
real[142] | 142 | Column widths comma-delimited (nCOL values) | ACAD_TABLE |
long[90] | 90 | Combined: field[0]=table flags, field[1..N]=per-cell value flags (4=content, 0=empty) | ACAD_TABLE |
long[91] | 91 | Combined: field[0]=nROW, field[1..N]=per-cell merged-row-span (262144=no merge) | ACAD_TABLE |
long[92] | 92 | nCOL (single value) | ACAD_TABLE |
long[93] | 93 | Combined: field[0]=override count, field[1..N]=per-cell value type (6=content, 7=virtual/empty) | ACAD_TABLE |
string[302] | 302 | Per-cell text -- ncell tab-delimited fields including empty strings | ACAD_TABLE |
string[302] | 302 | Block attribute values tab-delimited; LEADER{⇥ prefix is skeleton marker | MULTILEADER |
pt[15] | 15 | Block content insertion point | MULTILEADER |
pt[110]-pt[112] | 110-112 | UCS x/y/z axis vectors for block content orientation | MULTILEADER |
char[270] | 270 | Leader type indicator (entmake 2, entget 0 -- opaque) | MULTILEADER |
real[45] | 45 | Landing gap (absent when default) | MULTILEADER |
real[47] | 47 | Line weight override (absent when default) | MULTILEADER |
real[140] | 140 | Text height override (absent when default) | MULTILEADER |
real[145] | 145 | Landing gap override (absent when default) | MULTILEADER |
long[92] | 92 | Combined second flags column | MULTILEADER |
long[93] | 93 | Combined third flags column | MULTILEADER |
long[95] | 95 | Arrow size (entget form; entmake uses int[95]=1) | MULTILEADER |
int[172] | 172 | Content type: 1=mtext, 2=block | MULTILEADER |
int[173] | 173 | Combined draw order | MULTILEADER |
int[174] | 174 | Combined leader count | MULTILEADER |
int[176] | 176 | Text align | MULTILEADER |
bool[290] | 290 | Combined has-content/leader flags (2 or 3 fields) | MULTILEADER |
bool[293] | 293 | Combined enable flags | MULTILEADER |
bool[295] | 295 | Text extend-to-leader | MULTILEADER |
bool[296] | 296 | Block attribute flag | MULTILEADER |
long[421] | 421 | Per-cell fill true-color (ncell comma-delimited, absent when -1 for all cells) | ACAD_TABLE |
long[422] | 422 | Per-cell text true-color (ncell comma-delimited, absent when -1 for all cells) | ACAD_TABLE |
real[145] | 145 | Per-cell rotation in radians (ncell comma-delimited, 0.0=no rotation) | ACAD_TABLE |
real[140] | 140 | Combined table-level + per-cell text height -- field count determines structure: 0=absent, 1=table-level only, ncell=per-cell only, ncell+1=both | ACAD_TABLE |
int[170] | 170 | Per-cell alignment override (ncell comma-delimited, 0=no override) | ACAD_TABLE |
int[172] | 172 | Per-cell flags -- non-zero signals border overrides active (ncell comma-delimited) | ACAD_TABLE |
int[63] | 63 | Per-cell fill ACI color override (ncell comma-delimited, 0=no override) | ACAD_TABLE |
int[64] | 64 | Per-cell text color override (ncell comma-delimited, 0=no override) | ACAD_TABLE |
string[7] | 7 | Per-cell text style name override (ncell comma-delimited, empty=no override) | ACAD_TABLE |
long[90] | 90 | Face and edge data combined -- face section then edge section | MESH |
long[91] | 91 | Subdivision level (absent when 0) | MESH |
long[93] | 93 | Face data count | MESH |
long[94] | 94 | Crease edge count | MESH |
real[140] | 140 | Crease values comma-delimited (absent when all 0.0) | MESH |
real[41] | 41 | Defined width (reference rectangle width, 0=undefined/no wrap) | MTEXT |
real[44] | 44 | Line spacing factor (1.0=single, absent=not set) | MTEXT |
real[45] | 45 | Background fill scale factor (~1.0-3.0, 1.5 typical) -- only present within the fill tail, see long[90] | MTEXT |
real[46] | 46 | Defined column height -- legacy field, 0/absent when not used | MTEXT |
long[90] | 90 | Background fill flag (1/3/16/17=filled with trailing tail, 2=drawing background with no tail, absent/0=no fill) | MTEXT |
int[72] | 72 | Drawing direction (1=LR, 3=TB, 5=by style) | MTEXT |
int[73] | 73 | Line spacing style (1=at least, 2=exactly) | MTEXT |
real[47] | 47 | Pixel size threshold -- pattern line minimum dash length for display. Present in CSVOUT; CSVIN computes it internally from boundary flags -- do not emit in AI-generated files | HATCH |
long[421] | 421 | Packed RGB color(s) comma-delimited (one per gradient color entry) | HATCH |
long[421] | 421 | RGB background fill color override -- int[63] always present (ACI), long[421] present only when fill color is true-color RGB, absent when ACI; overrides int[63] for display | MTEXT |
real[463] | 463 | Gradient taper values comma-delimited (one per color entry) | HATCH |
string[470] | 470 | Gradient type name | HATCH |
pt[213] | 213 | Normal vector override | LEADER |
string[304] | 304 | Mtext text content (absent when leaderless) | MULTILEADER |
int[95] | 95 | Arrow style index (absent when default 1) | MULTILEADER |
int[170] | 170 | Combined leader type -- 2 fields: 1=straight, 2=spline (absent when 1,1) | MULTILEADER |
int[175] | 175 | Combined text attachment -- 2 fields (absent when 1,0) | MULTILEADER |
int[179] | 179 | Text angle type (absent when default) | MULTILEADER |
bool[291] | 291 | Has-dogleg combined -- 3 fields (absent when 0,1,1) | MULTILEADER |
bool[292] | 292 | Has-text-direction combined -- 2 fields (absent when 0,0) | MULTILEADER |
long[91] | 91 | Combined text-width flags -- 3 or 6 fields (absent when all sentinel/default) | MULTILEADER |
Stripped dxf-2018 bookkeeping
The following group codes and sections are stripped in addition to the R12 strip list:
- Group 330 -- persistent reactor owner handle
- Group 360 -- extension dictionary handle
- Group 102 -- group code for
{ACAD_REACTORSand{ACAD_XDICTIONARYblocks - ACDSDATA section -- BIM and material data
- THUMBNAILIMAGE section -- embedded preview image
- All OBJECTS section entries except where semantic content is identified (e.g. IMAGEDEF path)
dxf-2018 metadata additions
New conditional clauses for codes:dxf-2018 files:
| Clause | Present when |
|---|---|
truecolor:rgb[420] | Any entity uses true color (group 420) -- packed 24-bit RGB integer overriding ACI color |