Files & reference

Everything SRM-CAM reads and writes, what is inside the files it sends to the mill, the tool profiles and their numbers, the command line and the keys.

What goes in

TypeFilesNotes
Gerber*-B_Cu.gbr, *-Edge_Cuts.gbr (or .gbl, .gm1)KiCad's plot: File › Fabrication Outputs › Gerbers. B.Cu and Edge.Cuts at least; F.Cu (.gtl) for double-sided.
Excellon drill.drlGenerate Drill Files…, millimetres, into the same folder. Split PTH and NPTH files are merged, and a stale combined file beside them is ignored.
Setup.srmcamThe whole job, from File › Save the setup… (Ctrl+S); back with File › Load a setup…. The first interface's .json setups load too.
Height map.csvx_mm, y_mm, dz_mm, with a # face: line saying which face it was probed on. Save… and Load… on Level the bed.
Photo.png / .jpgFor the overlay: View › Lay a photo of the board on the bed…

What comes out

Mill a board keeps its own folder for each run: Documents\SRM-CAM\runs\<board>_<time>. Below is what Export the job writes, in Pro.

File › Export the job… (Ctrl+E) writes one program per step, in the machine's format, and the run plan beside them. With the lab's one-bit 0.8 mm profile the order is dry run, drill, traces, cut-out; with a different bit for the traces (a V-bit), the traces come before the drill to save bit changes. The cut-out is always last.

Inside the filesClick a file, then a line, to see what it does. The lines are real output from the test board. Switch to As VPanel lists them to see why the cut-out has to be moved down.
FileContents
<name>_airpass.ncStep 0, the dry run: spindle off, bit 5 mm up, tracing the outline. Single-sided jobs.
<name>_drill.nc or <name>_drill_<dia>mm.ncOne bit for every hole (the ones that fit are plunged, larger ones milled as circles), or one file per diameter.
<name>_traces.ncIsolation, mirrored for the bottom copper; warped to the height map when one is applied.
<name>_cutout.ncThe outline with four tabs. Always last.
<name>_runplan.txtThe run sheet as text: order, bit per step, depths, times, where each board of a panel sits.
<name>_mask_mirrored.dxfFor the laser, not the mill, and only when Solder mask › Also make the laser file (DXF) is ticked: the pad openings and the outline. See Solder mask.
<name>_align.nc, _bottom_drill.nc, _bottom_traces.nc, _top_traces.ncDouble-sided, in that order, with the cut-out after the top traces. See Double-sided boards.
<name>_top_drill.ncThe blind holes finished from the top, on the measured flip.
<name>_<pass>_rework.ncA rework program: the pass clipped to your boxes, each at its own depth. Rework.
<name>_screws.nc + .txtThe hold-down clearance holes and the procedure: Machine › Export the hold-down screw file…
bed_fixture.nc + .txtThe three dowel-pin holes in the spoilboard, cut once per spoilboard: Machine › Export the bed fixture (pin holes)…

G-code or RML

Picked under Set up the job › Output format and mirroring › File format, in Pro. Keep G-code unless you have a reason not to: the files explain themselves in VPanel.

G-code (default)RML
File formatRoland SRM-20 (G-code)Roland SRM-20
Extension.nc.rml
VPanel command setNC CodeRML-1
Unitsmillimetres; feeds in mm/min0.01 mm; speeds in mm/s
OriginG54: X, Y at the machine origin, Z zeroed on the copperthe User origin
Commentseach file says which step it isnone: only the file name says

The G-code uses only words on the SRM-20's NC list: plain G0/G1 moves, no arcs or canned cycles, M3/M5 for the spindle and a 2 s G04 pause after M3 so the spindle is up to speed before the bit touches copper. The spindle speed is set in VPanel: the SRM-20 has no S word.

Tool profiles

A profile is the whole set of numbers for all three operations; Apply profile on Set up the job › The tool replaces them all. Built in:

  • SRM-20 0.8 mm flat: the lab's profile, and the one that opens applied. One 0.8 mm flat end mill for traces (0.15 mm deep), drill and cut-out (1.9 mm deep, four 1.5 mm tabs). One bit, so the drill runs first and nothing is re-zeroed between steps.
  • SRM-20 0.8 mm ball mill: fine SMD work with one 0.8 mm ball mill for the whole job. Traces are told 0.44 mm and cut 0.08 mm deep, with Cut gaps too narrow for the bit (trims pads) on. Holes and outline go 1.9 mm deep, with four 1.5 mm tabs. Keep levelling on: the cut's width depends on its depth.

Save as… (Pro) keeps your own in ~/.gerber2rml/presets.json. A lab can share profiles in a presets.json beside the installed program (in a source checkout, examples/presets.json).

Cutting parameters

On each step's page under Cutting parameters, in Pro (Interface › Pro). In Novice, the profile sets them.

ParameterApplies toMeaning
Bit diameterallThe cutter's width, and what the shorts check measures against.
Cut depthtracesJust through the 35 µm foil; the rest is margin for an uneven surface.
Isolation passes, pass overlaptracesChannels per track (-1 clears all the background copper); how far each extra pass steps across.
Cut gaps too narrow for the bittracesSend the cutter down gaps narrower than the bit anyway, trimming both pads, instead of leaving them shorted.
Tip width, included angle, cut widthtracesA V-bit's depth is worked out from the width asked for.
Depth through, bite per peckdrill, cut-outThrough the board plus the overshoot into the spoilboard; how much per plunge.
One bit for every hole sizedrillPlunge the holes that fit, mill the larger ones as circles. Off: one file per diameter.
Holding tabs, tab widthcut-outWhat holds the board in the sheet until the end.
Feeds and lift height: across the copper, straight down, lift between cutsallCutting and plunge speed in mm/s; how high the bit lifts between cuts.
From numbers to filesSRM-CAM keeps feeds in mm/s. The G-code writes them ×60, in mm/min; RML keeps mm/s but writes every coordinate in 0.01 mm. The bit runs the channel in real time.

What a setup contains

The boards and where each sits, the job name, the tool profile's numbers, the copper sheet, the screws, how the copper is held and the extra depth, both faces' height maps, the double-sided settings and the measured flip. The Gerber folders are referenced by path: bring them along to another PC. Setups and exports live in Documents\SRM-CAM\sessions and …\exports.

Command line

python -m gerber2rml                                  # the app
python -m gerber2rml.gui                              # the first interface
python -m gerber2rml.cli <gerber-folder> -o <out> -n <name>
                        [--gcode | -m "Roland SRM-20"] [--multi-bit] [--no-mirror]
python -m gerber2rml.doctor                           # fix dependencies after a pull

The command line exports with its own defaults, not the lab profile: pass the numbers you want, or export from the app.

Keys

KeyEffect
EscSTOP the machine, from anywhere
Page Up / Page DownRaise / lower Z by the jog pad's step (down at most 1 mm). Lowering is refused while the bit reads Touch.
Arrow keys, Arrow keys lit on the jog padJog the head by the pad's step, from anywhere in the window; Shift ×10, Ctrl ÷10. Not while typing in a box.
Arrow keys, board pickedNudge the board 0.1 mm; Shift 1 mm; Ctrl 0.01 mm
Arrow keys, Click to jog onJog the head 1 mm; Shift 10 mm; Ctrl 0.1 mm
Ctrl+O / Ctrl+Shift+OOpen a Gerber folder / add another board to the sheet
Ctrl+S / Ctrl+E / Ctrl+QSave the setup / export the job / quit
Ctrl+0 / Ctrl+Shift+0 / Ctrl+BFit the work / fit the whole bed / centre the job on the bed
Ctrl+D / Ctrl+G / Ctrl+3 / Ctrl+MDesign X-ray / spoilboard screw grid / watch this step in 3D / measure
Ctrl+LConnect / disconnect the machine link
Scroll / right-drag on the stageZoom / pan

Measure

View › Measure — drag a ruler on the bed (Ctrl+M): drag a line on the bed. Both ends snap to the board's corners, edges and hole centres and to the copper sheet's corners, so corner to corner reads the board's true size. Ctrl+M again puts the ruler away.

A ruler dragged across the board reading 100.00 mm
The ruler: length, and the X and Y parts of it.