Skip to content

Releases

GlossCode 0.1.9

Choose a tag to compare

@github-actions github-actions released this 06 Nov 04:19
2c89ef7

Editor

  • Long runs of moves fold away, the way a subprogram call's lines do. A fold starts at the first line that moves down (Z on a mill, X on a lathe) after one that didn't, so a CAM program's layers fold one per layer: ramp in, cut, ramp out and the move back, under a ▸ button with the number of lines and the depth. Rapids, M codes, tool changes, comments, block-delete lines, called labels and canned cycles always stay visible. A G01 at 10× the cutting feed or more counts as a rapid (some programs reposition with G01 F500); View › Fold long runs of moves sets 10×, 5×, 3× or G00 only. Runs under 10 lines don't fold.
  • Opening a file folds the moves in each section (between comments, tool changes and labels) whose folded lines wouldn't fit in the window, except folds with a problem in them. After that each fold opens and closes on its own, including each place a subprogram is shown. View › Fold all / Unfold all, and the setting to fold on opening, are in the same group. Going to a line inside a fold (click, Find, Problems, the toolpath) opens it; the arrow keys step over a closed fold; the simulation marks the fold's first line. Folding only changes what's shown: line numbers, copying and saving use every line.

Simulation

  • Haas G47 text engraving shows in the toolpath and the Z-by-line timeline. Each G47 line is one grey rectangle, 1.25 × J tall (a shop note says J.120 text comes out .150 high and .120 wide per character), starting at X Y and turned by I, cut on the left, top and bottom. The letters aren't drawn. Letter widths vary and the control doesn't give them, so the length is an estimate (1.0 × J per character, which fits the symmetric layouts and serial-number gaps in proven programs) and the right end fades out, unless the next line is a P1 serial number on the same baseline: then the rectangle ends where the serial starts. While simulating, the tool is a red line across the text, sweeping along it. A G47 line no longer reads as a rapid to Z. The estimate is engrave in the Haas mill tables in gcode-rules.json. New sample program: examples/NAMEPLATE.nc.
  • Haas bolt hole patterns are drilled: G70 (circle), G71 (arc) and G72 (line) put a hole at each point with the active canned cycle, about the current position or X Y on the line. They used to draw nothing. A canned-cycle line with L0 and X Y now moves there without drilling (usually a bolt circle's center). The gloss row reads their words (I RAD, J STARTANG, L HOLES, K STEPANG), and a pattern with no cycle active is flagged.
  • G68 with no R (Haas: the angle is in Setting 72) leaves the toolpath unturned and says so in the position line and in Problems.
  • G68 rotation and mirror imaging are followed: the toolpath after Haas G68 A B R (Fanuc G68 X Y R) is turned until G69, and after Haas G101 X0 / Y0 (Fanuc G51.1) it's mirrored until G100 (G50.1). Arcs, holes, engraving and the cutter comp side follow. A G101 X0 line no longer reads as a move to X0. New gloss words: G68 set.rotate.on, G69 set.rotate.off, G101 set.mirror.on, G100 set.mirror.off.
  • Mill arcs written with R (G02 X2. Y0 R1.) are drawn. They used to be drawn as a dot.
  • Every drilled hole has a small circle where it's drilled, including lathe drilling and tapping on center (Haas and Fanuc lathe G81-G89, now simulated as holes, Okuma G74 at X0 and G77/G78).
  • Cutter comp: moves made with G41 or G42 (and the circles of a G12/G13 pocket) have a grey band on the side the tool's centre is on. It's a fixed width on screen, since the cutter's radius is in the offset table. D00 turns it off, as it turns off the offset. View › Cutter comp side (G41/G42) shows or hides it.
  • Haas G12/G13 circular pockets are drawn: a full circle at each radius from I out to K in steps of Q, at Z, L times (G91: deeper each time). They used to read as a Z move. A G12 line no longer counts as a rapid below Z0.
  • G73 and G83 peck retracts: the Z timeline shows how far G73 backs off after each peck (about 0.01 in / 0.25 mm) and where G83 rapids back down to (about 0.039 in / 1.0 mm above the last peck) with a grey band, since these amounts are machine settings, not in the program. The values are peckRetract in the Fanuc mill tables.
  • Haas G107 cylindrical mapping: the toolpath between G107 A0 Y0 Q and G107 is drawn unrolled, inside a dashed rectangle from the origin across X and one turn (π × Q) up Y. With Q0 the diameter is in Setting 34, so the rectangle's top is left open and labelled "diameter unknown (Q0: Setting 34)". A G107 line no longer reads as a move.
  • Okuma lathe cycles: G71 threading is drawn pass by pass, as the OSP manual describes: M73 (and no M code) cuts D each pass until within D of H - U, then what's left in halves (D/2, D/4, D/8, D/8), then the U finishing pass; M74 cuts D each pass to H - U, then U; M75 cuts pass n at √n × D. With an infeed angle B, each pass starts further along Z: down the left face (M32), the right face (M34) or alternating (M33). Haas one-line G76 threading is drawn pass by pass too (√n × D, or D each pass with P3/P4). G73 grooving cuts a groove along X at the start Z and every K to the end Z. G77 and G78 tapping go over to X, rapid K toward the hole, tap to Z and feed back out. These used to be one straight move.
  • Variables panel, under Active modes: every variable the program sets or reads (#1-#999, and Okuma V and named variables), its value at the line shown, and a start value box. The simulation starts with those values. A variable read before the program sets it, with no start value, is flagged there and in Problems. Common variables (#100-#999, Okuma VC) can be saved to the machine profile with one button, and every program on that machine then starts with them (shown in purple; ✕ removes one).
  • Alarms: a code for an option the machine doesn't have stops the simulation on that line with a red ✕, an "Alarm" in the position line and an error in Problems, and the lines after it are greyed. The first is Okuma G152 (programmable tailstock positioning): machine profiles have a new lathe option, Programmable tailstock, and without it G152 alarms. G152 W moves the tailstock, never the tool, so with the option nothing is drawn (it used to read as a Z move). New gloss word: G152 machine.tailstock.move.

Speed

  • Long programs (ten thousand lines and more) are much faster. Clicking a line, the arrow keys and the simulation moving to the next line only move the highlight instead of reading, checking and drawing the whole program again. Rows out of view aren't laid out, the Z timeline draws only the steps around the current one, and the toolpath is drawn as a few paths instead of one line per move. On a 10,000-line test program a click went from about 6 seconds to under 0.2, and the simulation from about 1 frame a second to 30 or more.
  • Arcs are drawn and simulated with as many straight moves as their size needs (10° each on a mill, a full circle still 36) instead of 36 for every arc, so a program of short arcs no longer simulates 36 times slower than straight lines.
  • The simulation speed menu has a Max speed.
  • A program with very many moves could stop drawing the toolpath with "Maximum call stack size exceeded". Fixed.

Which file to download

Windows, installed GlossCode-0.1.9-windows-x64-setup.exe
Windows, portable GlossCode-0.1.9-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.9-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.9-linux-x86_64.rpm
Linux, portable GlossCode-0.1.9-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.9-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.7

Choose a tag to compare

@github-actions github-actions released this 05 Nov 14:33
6fcec31

Machines

  • Machines are picked as machine type → control → machine. Every type and control has a Generic machine, so "Mill › Generic" or "Lathe › Okuma OSP-U10L / OSP-U100L › Generic" works without a profile. Only controls made for the chosen type are listed.
  • Your machine profiles are kept in settings.json. New starts from a machine type and control, Copy from another profile, and Add from library from a known model (Haas VF-2 and ST-10, Okuma M560-V and LB3000 EX II), with the numbers we aren't sure of left empty to fill in. Profiles can be deleted: programs that used one open with the Generic machine for its type and control.
  • New controls: Okuma OSP-U10L / OSP-U100L and Okuma OSP700L / OSP7000L (lathe), and a Generic control with the common ISO codes. New machine type: router (Centroid, LinuxCNC, GRBL and Generic), which reads like a mill. Haas NGC stays one control: where the 2020 and 2025 manuals differ, the machine profile settles it.
  • Lathe G code systems B and C are their own controls: Fanuc lathe system B and C, Mazak EIA/ISO lathe system B (the Mazak default) and C, and Mitsubishi M800 lathe G code list 3, 5 or 7. On these G90/G91 are absolute and incremental, G92 clamps the spindle and with X or Z sets the coordinates, G94/G95 pick the feed, and the turning cycles are G77/G78/G79 (system B) or G20/G21/G24 (system C, where inch and metric are G70/G71 and the repetitive cycles G72 to G78). The Fanuc and Mazak controls stay system A on a lathe.
  • New control: Fagor 8055 / 8055i mill. Its statements are in parentheses: (SUB 12) … (RET) subroutines called with (CALL 12) or (PCALL 12, …), (P1 = 2) assignments, (IF (P1 EQ 2) GOTO N40), (MSG "…") and the rest each read as one word, and ; starts a comment. An N at the end of a line is how many times to repeat it. G04 K is in hundredths of a second, G43/G44 turn the tool length on and off, G58/G59 are additive offsets, G60 to G65 are multiple machining patterns and G96/G97 pick how the feed is measured. The patterns read their own words (G60 X is its length, K the number of points, P to V the points to skip) and the simulation machines the active cycle at every point; G66 to G68 irregular pockets read their labels and words, and the simulation traces the pocket's profile. An N at the end of a line runs it that many times in the simulation.
  • New control: Fagor 8060 / 8065 lathe, with the 8060's own block format. Its cycles match the 8055 lathe's (G66, G68/G69, G81 to G89), with the live tool cycles at G160 to G163 (N is the live tool spindle). G192 S limits the spindle speed, G92 presets the coordinates, G33 K is the thread pitch and G04 K is in seconds. G50 is flagged, since it's a corner mode on this control. The cycle words follow the 8065 T canned cycles manual (Ref. 1209): G66, G68 and G69 take the profile as labels S and E, a local subroutine P or a global subroutine Q, and leave G00, G40 and G90 active; the live tool speed S on G160 to G163 is optional, and these cycles flag a missing G94 feed when G95 is active. The dialect still needs checking against a machine.
  • New control: Fagor 8055 / 8055i lathe, with the same statements in parentheses as the mill. Its cycles run once where they're written: G81/G82 straight turning and facing, G84/G85 with an arc, G66 pattern repeat, G68/G69 roughing along a profile, G83 drilling, G86/G87 threading, G88/G89 grooving, and the G60 to G63 live tool cycles. On those lines S can be a profile label or the live tool speed and M a finish stock, and they read that way. G96 is constant surface speed, G92 S limits the spindle speed, G33 L is the thread pitch and G04 K is in hundredths of a second. The simulation draws the passes of each cycle and the profile of G66, G68 and G69; G84/G85 are drawn with straight passes. Its cycles follow the 8055 M programming manual (Ref. 1501): G69 and G81 to G89, the G87/G88 pockets and G210 to G212, with Z as the reference plane and I as the depth.
  • New control: Fagor 8060 / 8065 mill. It reads Fagor's own block format: ; and ( ) comments, $IF/$GOTO and #CALL/#MSG statements, %L local subroutines ending in M17, M29 or #RET and called with LL or #CALL, N10: and [NAME] labels, NR repeats and P parameters (XP1). Its cycles take Z as the reference plane and I as the depth, G04 K is in seconds, G70/G71 set the units and the tool length comes from D. G43, M98 and other Fanuc codes it doesn't have are flagged. The cycle words follow the 8060/8065 canned cycles manual (Ref. 1807) and still need checking against a machine.
  • New control: Heidenhain TNC 640, Klartext (conversational) programs, as a first draft. A block number, then a function and its words: L X+10 Y-5 RL F200 M3, CC, C, CR, CT, CP, LP, RND, CHF, APPR/DEP, TOOL CALL 5 Z S4000, BLK FORM, CYCL DEF with its Q parameters one to a line ending in ~, CYCL CALL, PATTERN DEF, LBL/CALL LBL, FN functions and Q parameter formulas. Each reads in English like G code does: CYCL DEF 200 DRILLING reads its Q lines by name (Q200 is the set-up clearance). The checks cover block numbers, the program name, a cycle call with no cycle defined, calls and jumps to missing labels, and the first feed move with no F or with the spindle stopped. The simulation draws lines, arcs, polar moves and tangent arcs, drilling cycles at each call, pattern points and pockets, and follows subprograms, repeats and FN jumps. RND and CHF corners and FK free contours aren't drawn. Program › Renumber numbers the blocks from 0, and File › Open lists .H files.
  • New controls: Fanuc Series 0 / 00 / 0-Mate (mill: no G93, G150 to G152 normal direction control, G05), and a Mitsubishi M800 lathe with G code list 2, 4 or 6 (G190/G191 absolute and incremental).
  • New control: Mitsubishi M700/M70 in the M2/M0 format (mill). G22 L calls a subprogram (L the program, P the repeat count) and G23 returns, G44 cancels the tool length (G49 is flagged), G62 is mirror image, and G22.1/G23.1 are the stroke check.
  • New control: Okuma OSP-E100L (lathe), the generation between the OSP-U10L and the OSP-P200L, with the same Okuma lathe tables. On every Okuma lathe G30 now reads as the skip cycle rather than a return home, and on the OSP-E100L and OSP700L M98/M99 read as tailstock thrust low and high. On Okuma controls M99 no longer ends a subprogram (they end with RTS), and Okuma lathes read a number with no decimal point as written, so X1 is X1.000.
  • The Home tab is just the ⌂ icon.

Simulation

  • The toolpath fits the cutting moves, so a home return far from the part (G00 X20. Z20.) no longer shrinks the part to a dot. Rapids that go farther run off the edge.
  • Zoom and pan the toolpath: scroll to zoom about the pointer, drag to pan, Shift+drag (or ⬚ then drag) to zoom to a box, and double-click or Fit to fit again. +/− zoom from the middle.
  • Macro expressions follow the Fanuc Custom Macro B rules more closely. ATAN[a]/[b] gives the angle from 0 to 360 degrees (it used to divide the one-argument ATAN by b). ROUND[-1.5] is -2. ASIN, ACOS, LN, EXP, BIN, BCD, XOR and #[expression] variables are read. AND and OR work bit by bit, as on the control.

Okuma

  • The graphic display statements DEF WORK, PS LC,[..],[..], END, CLEAR and DRAW read as one word each, and nothing moves.
  • A sign then a variable (Z-V10) reads as one word, so G91 G50 Z-V10 is a zero shift in the reading and the simulation.
  • L on a G75 or G76 line is the chamfer or rounding size.
  • The Ctrl+Z end-of-file mark some older systems write is kept, shown as ^Z and read as EOF.
  • New check unbalanced-brackets: an expression whose [ and ] don't pair up.

Which file to download

Windows, installed GlossCode-0.1.7-windows-x64-setup.exe
Windows, portable GlossCode-0.1.7-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.7-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.7-linux-x86_64.rpm
Linux, portable GlossCode-0.1.7-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.7-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.6

Choose a tag to compare

@github-actions github-actions released this 04 Nov 12:54
6400c9f

Nothing is hidden

  • Every character of a program shows in the G-code row, as in a text editor, with the spacing of the columns added. % lines and ; at the end of a block are shown and saved as written (a ; only some lines have stays only on those lines). Text GlossCode can't read, like a stray symbol or number, is kept as written and flagged.
  • A machine that needs ; on every block still gets it added on save, but never a second one.

Editor

  • The row you're editing is dark and heavy, and the other row of each line is light and faint, so it's clear which one is active.
  • New English style, View › Full words, writes codes as words like spindle.fwd, units.inch, units.absolute and coolant.on. Typing a full word in English mode works too. Address words (X, SEQ, TOOL, PECK…) read as in the long style.
  • Each line shows a grey run order number on the left: the block count as the program runs, counting a subprogram's lines on every call. It matches the line count some controls show. View › Run order numbers turns it off.

Simulation

  • The simulation follows the line actually running, not the first time that line runs. A subprogram called again with new variables (a deeper #110, for example) shows its own depth in the timeline, and the timeline scrolls straight through calls instead of jumping back.
  • Inside a call, the editor follows along in the call's shown lines (▸ show). While the call is hidden, a progress bar beside its button shows how far through it the tool is.
  • New 16×, 32× and 64× speeds.
  • Lathes: a program that uses the tailstock shows a tailstock symbol in the toolpath view, with ← (in), → (out) or ? (not set yet).

Which file to download

Windows, installed GlossCode-0.1.6-windows-x64-setup.exe
Windows, portable GlossCode-0.1.6-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.6-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.6-linux-x86_64.rpm
Linux, portable GlossCode-0.1.6-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.6-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.5

Choose a tag to compare

@github-actions github-actions released this 02 Nov 18:07
1104276

Macro variables

  • Lines and words that use macro variables are read and shown instead of being dropped. A line like #110= -0.035 (setting a variable) is one word, X - #101 reads as X-#101, and Z#113, F#111 and F[#111*3] keep their variable or expression. IF, WHILE and END1 lines are kept whole as written.
  • Selecting a word that uses a variable shows what it works out to each time the simulation runs that line, for example the four values X-#103 takes in a subprogram called for four rows.
  • These lines no longer get false "has no number after it" problems, and a move to a variable position doesn't give arc or rapid checks a wrong position.

Okuma lathes (OSP)

  • Okuma variables are read: V1=3, VC2=VC2+1 and named variables like DIA1=1.3 are one word each, and a word like X=DIA1 keeps its expression.
  • Sequence names like NA1 are read as one word (G85 NA1 reads LAPRUF SEQA1, and the NA1 G81 line is labeled). GOTO N90, G85 NA1 and IF [..] N440 that point to a name or number missing from the file are flagged, and these N words no longer give a false "address used twice" problem.
  • G50 X Z (or G91 G50 Z…) reads SETCOORD, setting the coordinates, instead of the spindle clamp. G03 X Z L0.062 reads L as the arc radius, and the arc checks ask for L on these lathes. G04 F0.2 reads as a dwell in seconds.

Simulation

  • Macro variables are worked out as the program runs, including through local subprograms (M97 P1000), so subprograms that cut with variable positions (like concentric slots with G03 X - #103 Y#104 I#101 J - #102) draw correctly.
  • Drilling cycles: each hole now plunges from R to the bottom and goes back up to R (G99) or the starting height (G98). The Z-by-line timeline draws this as a vertical line down and back up for each hole. A cycle line with L0 stores the cycle without drilling, and the holes come from the lines that follow (often a list of positions in a local subprogram). The cycle stays on until G80 or G00–G03, even across subprogram calls.
  • The simulation follows jumps and loops: GOTO N90 and IF [V2 GE V1] N440 (Okuma), GOTO 100 and IF [..] GOTO 100 (Fanuc), and WHILE [..] DO1 … END1.
  • Okuma lathes: G85 LAP roughing cuts the contour named on the line (NA1 G81 … G80 along Z, G82 along X) in steps of D, leaving U and W, then follows the contour at that allowance; G87 finishing follows the contour. The contour lines are skipped in normal order, as on the control. G74 face grooving plunges at the start X and every I until the X on the line. Arcs with an L radius are drawn as arcs.
  • G50 X Z and G91 G50 Z… on a lathe move the zero, so a program that makes several parts from one bar (a loop that shifts Z each time) draws each part in its place.
  • New G00 button beside the M01 and / buttons (also Simulate › Show rapid moves) hides rapid moves, so the toolpath shows feed moves only, like the control's own graphics screen.

Which file to download

Windows, installed GlossCode-0.1.5-windows-x64-setup.exe
Windows, portable GlossCode-0.1.5-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.5-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.5-linux-x86_64.rpm
Linux, portable GlossCode-0.1.5-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.5-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.4

Choose a tag to compare

@github-actions github-actions released this 02 Nov 15:17
6e49967

Fixed

  • On Windows the program opened on the mockup's intro page, with the editor in a small framed window inside it. It now opens straight into the editor, filling the window. The mockup's intro, drawn title bar and notes are gone from the page altogether, and the page moved from docs/mockup/ to src/ui/. Links in the program (such as Get the examples) open in your web browser again instead of replacing the editor.

Which file to download

Windows, installed GlossCode-0.1.4-windows-x64-setup.exe
Windows, portable GlossCode-0.1.4-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.4-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.4-linux-x86_64.rpm
Linux, portable GlossCode-0.1.4-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.4-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.3

Choose a tag to compare

@github-actions github-actions released this 02 Nov 03:26
bd81b6e

Home page

  • Clicking a recent program that was moved, renamed or deleted now asks what to do: Locate… opens the Open dialog in the nearest folder that's still there, and the file you pick takes the old one's place in the list with the same machine; Remove from list takes it off.
  • A program opened from the command line or with Open with is remembered by its full path, so it opens from the recent list later no matter which folder GlossCode starts in.

Machines

  • New plasma machine type. Hypertherm Phoenix/EDGE Connect (first draft), Centroid Acorn and Tormach plasma tables read M07/M08 (Hypertherm) or M61/M62 (Acorn) as cut on and off, D as the kerf offset, and Hypertherm's G59 as setting variables.
  • Plasma programs get torch checks instead of spindle checks: a feed move with the torch off, and a program that ends with the torch on. Canned cycle, tool length and spindle speed checks don't run on plasma.
  • PLASMA_BRACKET.nc joins the example programs.

Simulation

  • The timeline can show the feed rate or the spindle speed instead of Z. Pick it in the timeline's header; the choice is remembered for each machine type.
  • On a plasma table the timeline shows the feed rate by default, with a band where the torch is on and marks on lines that change the process or material.

Linux

  • The menu entry is now under Development (Programming in the Linux Mint and Cinnamon menus) and Engineering, instead of Utility (Accessories).
  • The menu entry shows its icon right after installing, instead of a blank icon until you log out and back in (seen on Linux Mint).
  • GlossCode is offered in Open With for .gcode files (the standard G-code file type), as well as plain text files.

Which file to download

Windows, installed GlossCode-0.1.3-windows-x64-setup.exe
Windows, portable GlossCode-0.1.3-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.3-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.3-linux-x86_64.rpm
Linux, portable GlossCode-0.1.3-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.3-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.

GlossCode 0.1.2

Choose a tag to compare

@github-actions github-actions released this 01 Nov 19:38
f5b6292

Editor

  • Select whole lines by dragging the mouse across them, with Shift+↑↓ or Shift+click, or all of them with Ctrl+A.
  • Right-click selected lines (or any line) to cut, copy, paste, duplicate or delete them. Ctrl+X, Ctrl+C, Ctrl+V and Delete do the same.
  • Copy puts only the G-code on the clipboard, the same text Save writes, so it pastes cleanly into other programs.
  • Ctrl+D duplicates the selected lines (or the current line) right below them. Pasting several lines over a selection replaces it.

Simulation

  • Playback goes on to the end of the program (normally M30) instead of stopping at the last move.
  • Canned cycles keep Z and R for the following holes, and the tool returns to R (G99) or the starting Z (G98), so Z by line and the final retract are drawn right.

Which file to download

Windows, installed GlossCode-0.1.2-windows-x64-setup.exe
Windows, portable GlossCode-0.1.2-windows-x64-portable.zip
Debian, Ubuntu GlossCode-0.1.2-linux-amd64.deb
Fedora, openSUSE GlossCode-0.1.2-linux-x86_64.rpm
Linux, portable GlossCode-0.1.2-linux-x86_64-portable.tar.gz
Sample programs GlossCode-0.1.2-examples.zip

The Windows files aren't code-signed yet, so Windows may show "Windows protected your PC" the first time. Choose More info, then Run anyway. SHA256SUMS.txt lists the checksum of every file.