Programming

Write G-code with the controller watching.

Studio's program editor is wired to the twin. Every line gets the time it took, every mistake gets a rule and a line number, and every change can run to the end before it reaches metal.

In Studio 1.2 · the Program workspace (Alt+3)

The editor stopped at a breakpoint on line 17, with each line's seconds in the margin and the program check beside it.
The editor stopped at a breakpoint on line 17, with each line's seconds in the margin and the program check beside it.
The editor

Everything the controller knows, next to the line.

Built on Scintilla, the editing component of Notepad++ and SciTE, with G-code colouring and a margin that the twin fills in.

Times in the margin

After a run every line shows the seconds it took. The lines add up to the run time exactly, and the removed volume to the total.

Checked as you type

0.4 s after you stop typing, the controller's check mode and 15 static rules go through the program. Findings sit in the margin, each with its suggested fix.

The state at the cursor

The status bar shows what the controller's modal state will be after the line under the cursor: units, plane, distance mode, work offset, feed, spindle, coolant, tool.

Breakpoints and conditional pauses

Stop at a line, or when force, spindle load, following error or chatter margin crosses a limit, at the first cut, a near miss, a rapid into material, a collision or an alarm. Virtual time freezes; the motion is not changed.

Restart from a line

Studio writes the start block for any line: tool, offsets, spindle, coolant and a safe approach. Example 02 restarted at line 460 leaves the same workpiece as an uninterrupted run.

Versions and compare

Every program you load or change is kept as a version with who and why; your own files are never overwritten. Ctrl+D compares two side by side, with their run times.

Static rules

Fifteen rules for what the controller accepts but should not.

Check mode finds what the controller refuses. These rules find what it runs anyway — and what this machine cannot do at all.

S01WarningNo safe start block before the first move (units, distance mode, plane, work offset): the program relies on the controller's state.
S02WarningNo M2/M30 at the end: the controller keeps its modes, the spindle and the coolant.
S03InfoA tool change (M6) with the tool below Z0: retract first.
S04ErrorA cutting move before any F: the controller refuses it (error:22) or uses the feed left from before.
S05WarningThe spindle started without S, or S outside the spindle's range.
S06InfoF above the axes' top speed in the move's direction: the planner caps it.
S08InfoDense short lines: the planner's queue holds too little path to brake from F, so the feed stays lower.
S09InfoA deep straight plunge: consider a ramp or a helix and a centre-cutting tool.
S10WarningA rapid below Z0, deeper than the program has cut so far: a rapid into material breaks tools.
S11ErrorAn arc the controller refuses (error:33): radius and end point do not agree.
S12WarningThe water-cooled spindle turns during feed moves without its coolant (M8).
S14WarningA tool of a different length in the spindle than the one that set Z zero, and no tool measurement or new Z0 before the first cut.
S15ErrorThe program reads Fanuc system variables (for example G43 H#4120); this controller has none, so they read as 0.
S16ErrorG33 threading or G33.1 rigid tapping needs a spindle encoder, which the MC-1 does not have.
S17WarningCharacters the controller acts on at once: ! ~ ? in comments, and bytes of non-ASCII text.
Per-line profile

Why is it slower than the program says?

For every line Studio records whether the programmed feed was reached, and if not, what held it back — from the controller's own junction and braking arithmetic, not from a guess.

Axis
the feed is above an axis' top speed in that direction
Corner
the junction speed at a corner between two moves
Arc
the centripetal limit on a small radius
Look-ahead
too little planned path to brake from the feed in time
Starved
the sender could not keep the planner's queue full
Parser
the controller was still parsing the next lines
Override
a feed override below 100 %
Hold
a feed hold or a programmed stop
The twelve slowest lines of a pocket program, coloured by what limited them — a picture the twin draws, here for an AI client.
The twelve slowest lines of a pocket program, coloured by what limited them — a picture the twin draws, here for an AI client.
Optimizer

Faster, without asking more of any tool.

The optimizer changes numbers, not the path. Every candidate runs to the end on a fresh twin and is only accepted if nothing got worse.

What it changes

  • Lighter cuts get feeds up to the heaviest cut the same tool already makes
  • Moves in the air go at the axes' top speed; finishing passes and plunges keep theirs
  • A chattering section gets the stability lobes' spindle speed, with the feed per tooth kept
  • Collinear short lines are merged; arcs are fitted only where the sender could not keep up
  • Rapid retracts come down to 1 mm above the highest thing below them

When a result is accepted

  • It runs to the end with no new event: no rapid into material, no cut with the spindle stopped, no collision or near miss
  • Force, chip thickness and spindle load stay within 105 % of the original's heaviest cut
  • The chatter margin does not rise above the original's (or 1)
  • The part is no worse, and the run is shorter
Ctrl+Shift+O: the optimized program arrives as an undoable edit next to the version before it, with both run times.
Ctrl+Shift+O: the optimized program arrives as an undoable edit next to the version before it, with both run times.
Features

Simple features in one line each.

Describe features instead of lines and the CAM writes the program for the blank on the table, runs it in the twin and, where the tool would chatter, writes it again at a stable spindle speed or with a shallower pass.

  • Face, pocket (rectangle with corner radius, or circle), slot, contour inside or outside
  • Drill (G81, G83 peck drilling when deeper than 3 × D), helical bore, single-line text
  • Speeds and feeds from the material (17 materials) and the tool; ramps, climb milling, walls finished to size
A pocket written by the generator: its cutting data in the comments, ready for Ctrl+K (load and check).
A pocket written by the generator: its cutting data in the comments, ready for Ctrl+K (load and check).
CAM

For whole parts: Studio's CAM.

When a part is more than a few features, the CAM takes over: drawings, text and meshes in; pockets, contours, adaptive clearing, engraving and 3D roughing and finishing out — with cutting data estimated from the twin's physics and a trial run in the twin.

Shapes from a drawing or your AI

SVG and DXF drawings, text in a single-line or outline font, simple shapes and formulas, and meshes (STL, OBJ, 3MF, glTF) for 3D work.

Toolpaths for this machine

Pockets with islands (offset, adaptive, zigzag), contours with tabs, trochoidal slots, holes and threads, engraving and V-carving, and 3D roughing and finishing on three axes.

Cutting data from a physics model

From the material and the tool, the twin picks a spindle speed on a stability lobe and limits each depth by chatter, spindle power, the fixture's grip and tool deflection; the program says why.

Proven before it cuts

By default every program runs to the end in the twin; chattering or overloaded operations are rewritten, then the feeds are tuned line by line. The CAM runs on your computer.

More about the CAM: the CAM page.

Keyboard

The editor is driven from the keyboard; the F keys always act on the machine, and F1 is the E-stop.

Alt+3the Program workspace: library, editor, check
Ctrl+Kload into the machine and check
Ctrl+Shift+Ooptimize
Ctrl+Ba breakpoint on the line; Ctrl+Shift+B: a conditional pause
Ctrl+Dcompare with a saved version
Ctrl+.apply the suggested fix
F5cycle start, or continue after a pause
F1E-stop, in every workspace

FAQ

Does the optimizer change my file?

No. The result arrives in the editor as an undoable edit, next to the version before it; both are kept as versions. Your own files are never overwritten.

Can I use the editor with my CAM's output?

Yes. Open any G-code file; the check and the rules tell you which lines this controller would refuse or run differently than intended.

Where did the generator go?

It is now the quickest way into the CAM: describe simple features and the CAM writes, checks and proves the program. For whole parts, use the CAM workspace or ask your AI assistant.

Are the time savings real?

They are what the twin computes with nominal machine and cutting parameters. They become measured numbers when the MC-1 prototypes are calibrated against the twin.

Write your next program in the twin.

Load an example, change a line and watch the margin, the rules and the run time answer.