Guide 05 / 06 · 5 min read

Reading an ACM cassette DXF: layers, R12 vs R2000, back view, units, marks

ACM 3D Studio · Published

Answer

The ACM 3D Studio DXF is an R12 (AC1009) file in millimetres ($INSUNITS = 4), seen from the back — the face the cutter attacks — hence mirrored relative to the façade. Each kind of line has its layer: CONTOUR (closed polylines, slits as open polylines), RAINURE_<cutter nominal angle> for groove axes (RAINURE_90 in red, RAINURE_135 in blue), PERCAGE (circles at exact diameter), REPERE (ASCII text: fold numbers F1…Fn and part label), COTATION (never machined). R2000 (AC1015) is available as an option for post-processors that require it.

Layers: the contract with the workshop

The DXF is not a drawing, it is a list of operations. Each layer corresponds to a tool or a pass, and its name says what the operator mounts. Grooves are named by the cutter’s nominal angle under the machine profile convention (V-groove).

LayerDXF colourEntityContent
CONTOUR7 (white/black)closed polylinepart contour and cut-outs; slits and corner cuts as open polylines (tool axis)
RAINURE_901 (red)open polylinegroove axes, 90° nominal cutter
RAINURE_1002 (yellow)open polyline100° cutter
RAINURE_1203 (green)open polyline120° cutter
RAINURE_1355 (blue)open polyline135° cutter
RAINURE_<n>6 (magenta)open polylineextension: any other nominal angle (60, 160…)
RAINURE_AVANT_<n>30 (orange)open polylinegroove from the visible face, concave folds
PERCAGE4 (cyan)CIRCLEdrillings, exact diameter
GRAVURE8 (grey)open polylineengraving, press-brake bend lines
REPERE6 (magenta)TEXTmarks, strict ASCII
COTATION9 (light grey)polyline + TEXTsheet, usable zone, dimensions — never machined
FIXED_LAYERS in packages/export/src/layers.ts. Stable order in the file: fixed layers first, extensions sorted.

A file only contains the layers used: a flat cassette comes out with CONTOUR, RAINURE_90 and REPERE; a diamond cassette adds RAINURE_100 and RAINURE_160; a perforated plate adds PERCAGE for holes smaller than the contour tool. Decorative panels carry RAINURE_AVANT_<n> layers.

Machining view: the back, mirrored

ACM is grooved from behind. The DXF is therefore expressed in the back-side frame: mirrored in x relative to the façade, origin at the bottom-left corner of everything drawn (compensated contour included, if requested). The sheet laid back-side up matches the drawing; marks read the right way round. The RAINURE_AVANT_<n> layers are in the same frame: the operator flips the sheet for that second pass and the post-processor applies the mirror.

The contour is the theoretical line by default — the CAM compensates for the tool radius. An option exports the contour already offset. The slits of a relief cassette and the corner cuts (reliefs) are always tool-centre lines: an open polyline on CONTOUR, end to end of the slit, extended by radius + 0.5 mm past the edge.

R12 by default, R2000 as an option

The file is written as R12 (AC1009): POLYLINE / VERTEX / SEQEND, CIRCLE, TEXT, LTYPE and LAYER tables only, no handles. It is the 2D exchange format every workshop software opens. R2000 (AC1015) is available in the machine profile: LWPOLYLINE, a handle on every entity, and every table strict parsers (ODA/Teigha, Fusion) require — VPORT, STYLE, VIEW, UCS, APPID, DIMSTYLE, BLOCK_RECORD, *Model_Space / *Paper_Space blocks, root dictionary. An incomplete AC1015 is rejected outright; that is why R12 stays the default. Both versions come out of a single API and carry the same geometry.

Units, numbers, header

  • $INSUNITS = 4: millimetres. The engine only knows the millimetre; unit conversion exists only at display time.
  • $EXTMIN / $EXTMAX: the drawing extents.
  • Numbers rounded to 0.0001 mm, never in exponential notation (“1e-7” breaks parsers), always with a decimal point (“0.0”, not “0” — some readers expect a real).
  • First line: a 999 comment with the application, the engine version and the generation date, for example acm-3d-studio engine v1 - 2026-09-21T10:00:00.000Z.
999
acm-3d-studio engine v1 - 2026-09-21T10:00:00.000Z
0
SECTION
2
HEADER
9
$ACADVER
1
AC1009
9
$INSUNITS
70
4
…
0
LAYER
2
RAINURE_90
70
0
62
1
6
CONTINUOUS
…
0
POLYLINE
8
RAINURE_90
66
1
70
0
…
0
VERTEX
8
RAINURE_90
10
42.0
20
504.0
30
0.0
Excerpt of an R12 DXF from the generator: header, RAINURE_90 layer declaration (colour 1), start of a groove axis.

Marks: strict ASCII

The REPERE layer carries a text F1, F2… at the middle of every groove axis (5 mm high, in the pattern’s fold order) and the part label at the centre of the extents (8 mm high). On a sheet DXF, each part is labelled <part>-<no.> and the sheet carries TOLE 1 1220 x 2440 on COTATION. Texts are centred on their insertion point.

R12 does not know UTF-8 (R2007 and later). The REPERE layer is therefore strict ASCII in all four languages: accents are stripped (“é” → “e”), any other character becomes “?”. An Arabic mark is not engraved in Arabic: it would come out as mojibake on the machine.

What the operator checks

  1. Unit mm recognised by the CAM (no import in inches: a part 25.4 times too small).
  2. Every RAINURE_<n> layer assigned to the right cutter, depth thickness − skin (3.6 mm on 4 mm).
  3. CONTOUR on the contour tool, outside compensation on the CAM side if the contour is not already offset; open polylines of CONTOUR machined tool-centre, without compensation.
  4. PERCAGE drilled or interpolated; COTATION and REPERE disabled or engraved separately.
  5. The drawing is in back view: no extra mirror, except for RAINURE_AVANT_<n> layers, sheet flipped.

The SVG downloaded from the studio is built on the same render model as the DXF: same layers, same coordinates, byte for byte the same geometry. Open any family in the studio and compare the flat view with the DXF.

Read next: driving the generator from an assistant (MCP server).

Frequently asked questions

Why is the DXF mirrored?
Because it is seen from the back, the face the cutter attacks: ACM is grooved from behind. The sheet laid back-side up matches the drawing. A “front view” option exists for post-processors that apply the mirror themselves.
R12 or R2000?
R12 (AC1009) by default: POLYLINE/VERTEX, CIRCLE, TEXT, LTYPE and LAYER tables only, no handles — the format every workshop software opens. R2000 (AC1015) as an option: LWPOLYLINE, handles and every table strict readers (ODA, Fusion) require. An incomplete AC1015 is rejected outright; that is why R12 stays the default.
Why are the marks in ASCII?
DXF R12 does not know UTF-8 (R2007 and later). An accented or Arabic mark would come out as mojibake on the machine. The REPERE layer is strict ASCII in every language: accents are stripped, any other character becomes “?”.
Is the contour compensated for the tool radius?
By default, no: it is the theoretical line, the CAM compensates. An option exports the contour offset by the tool radius. Slits and corner cuts are always tool-centre lines, on CONTOUR, as open polylines.

Families concerned