Skip to content

Releases

FlatCAM Evo 1.08

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 12 Nov 23:48

This release brings 3 new board imports: IPC-2581, EasyEDA Pro projects and Allegro 16.x boards. Board imports now keep the pads, vias and tracks as Gerber primitives, and the Gerber export keeps the clear objects and the order of a parsed file. Big panels are made, plotted and exported much faster, with the new Step and Repeat option for Gerber panels. The Distance plugin measures with CAD-style dimension lines.

Windows: the Windows release is based on Python 3.15. The optional packages (OR-Tools, pyclipr) are installed.

Linux and macOS: the AppImage and the .dmg images are based on Python 3.13. The AppImage runs on glibc 2.28 and newer (for example AlmaLinux / RHEL 8, Debian 10, Ubuntu 20.04).

G-code Sender: the Sender is disabled until it is finished and verified. Plugins → G-code Sender shows a warning and does not open. For development work, set the environment variable FLATCAM_SENDER_DEV=1.

Highlights

Import: IPC-2581 (new)

  • File → Import → IPC-2581 Board (.xml, .cvg, .gz, .zip) imports an IPC-2581 revision B or C file: plain, gzip or zip. The entry is also in the Import dialog and in the PCB Manufacturing files group of the Welcome screen.
  • Copper, mask, paste, silkscreen and outline layers, PTH and NPTH holes and slots, and the board profile of 1 step.
  • A copper or outline feature that cannot be drawn exactly stops the import with its name. The same feature on another layer is skipped with a warning.
  • Not imported: packages, components, BOM, stackup and netlists.

Import: EasyEDA Pro PCB (new)

  • File → Import → EasyEDA Pro PCB (.epro, .epro2, .epcb) imports an EasyEDA Pro project (V2 and V3), a single PCB document or a .zip backup of a project. The entry is also in the Import dialog and in the PCB Boards group of the Welcome screen.
  • Tracks, arcs, pads, vias, fills, stored pours, drills, outline, mask, paste and silkscreen.
  • A project with more than 1 PCB asks for the PCB. The layer dialog shows the PCB name.
  • Copper that cannot be read exactly stops the import and gives no partial board. Text is not imported.

Import: Allegro 16.x boards (new)

  • The Allegro import reads the native .brd boards of Allegro 16.0 to 16.6. The boards of 16.4 and 16.6 were compared with the Allegro Gerber and drill output. The 16.0, 16.2 and 16.5 boards import with a warning.
  • A 15.x board is refused by name, with a request to save it in Allegro 16 or newer. The 17.0-17.1 boards are still refused.

Board imports: Preserve primitives (new)

  • Preferences → Gerber → General → Native board import: Preserve primitives (the new default) or Regions.
  • With Preserve primitives, the pads, vias and tracks of a board become Gerber flashes (C, R, O or a block aperture) and strokes. The rest of the copper stays regions. A feature that a cutout or a negative layer clips stays a region, so the copper does not change.
  • Applies to the KiCad, Eagle, Altium (PcbDoc and CircuitStudio), Allegro, DipTrace, Proteus, PADS, Sprint Layout, EasyEDA Pro, IPC-2581 and ODB++ imports.
  • The Gerber export of such an object writes its flashes and strokes, not only regions.
  • The board import is faster: a 5.4 MB CircuitStudio board takes about 9 s to parse and 2.8 s to make the objects.

Gerber export

  • The export keeps the clear objects (%LPC) and the flashes of a parsed file. It writes the objects in the order of the file, with the aperture and polarity changes, so a dark → clear → dark sequence is no longer composed into regions.
  • A move, rotation, mirror, scale, skew, copy and a panel whose copies do not touch keep the order of the file.
  • If the order is not known, the export still keeps each object (C, R, O apertures, block apertures %AB, regions) and adds clear and dark patch regions, so the file gives the same copper.
  • The export of a file with regions with holes is about 10 times faster.
  • The project file saves the order state of a Gerber object. A project of an older version loads with the order unknown.

Gerber Editor

  • A 3rd load mode Native in Preferences → Gerber → Editor (the new default). The editor keeps the clear objects (drawn with a red outline) and saves all objects in the order of the file. An object whose order is not known opens with the Apertures load.
  • The Pad and Pad Array tools place a copy of a source flash of the selected aperture, also a block aperture or a pad of a board import. If the flashes of the aperture have different shapes, the tool asks to select 1 of them.

Panelize: big panels much faster

  • New Step and Repeat option (Panelize plugin and Preferences): a Gerber panel is written as 1 copy in a %SR block, for a regular grid whose copies do not touch. A panel of 150 copies of a 120 KB Gerber: 24.5 s → 1.5 s.
  • Before a large panel is made, the plugin compares an estimate of its memory with the free memory and asks for a confirmation (Windows, Linux and macOS).
  • A Geometry panel writes its DXF source as 1 block and an INSERT for each copy: 49 copies of a board with 1658 paths, 22.1 s → 0.8 s and 14.8 MB → 316 KB.
  • A Gerber panel takes the export plan of its source, and the slots of an Excellon panel are made once for each tool (3.5 times faster with 200 slots).
  • The plot of a panel reuses the plot of its source. At 49 copies: Gerber 10.0 s → 0.8 s, Geometry 3.9 s → 0.7 s, Excellon 4.6 s → 0.3 s.
  • A Gerber with clear objects no longer joins all the copies, so the union does not stop the window.

Distance plugin: CAD-style measurement

  • The plugin stays active after a measurement. A left click with no open measurement starts a new one. In the 2-point mode the 2nd left click completes the measurement.
  • The 1st right click stops the measurement and keeps its results. The 2nd right click stops the plugin and closes the Plugin tab. The results stay in the fields for the next start.
  • The measurement line is a dimension line: thin, with an arrowhead at each end and the length in a gap in the middle. The arrows and the text keep their size at each zoom.
  • The dimension lines of all the measurements stay on the canvas until the plugin stops. In the multi-point mode each segment shows its own length.
  • Snap to vertex also snaps to the end points and the vertices of the traces (Gerber lines).
  • A new Distance page in Preferences → Plugins: line width, text size, bold text, and the colors for the light canvas and the dark canvas.
  • The measurement from the Geometry, Gerber and Excellon editors has the same behavior.

Faster copy, move and plot

  • Copy, Join, Convert, Panelize, the editors and the plugins (Isolation, NCC, Paint, Cutout, Drilling, Milling and others) share the geometry with the source object. The copy of a small Gerber: 25-32 ms → 0.8-2.7 ms.
  • After a move, the source text of the object is made in the background. Done of the Move plugin no longer waits for it.
  • The plot of a copy uses the triangulation of the source: a Gerber with 1350 shapes, about 150 ms → about 10 ms.
  • The 2D canvas keeps the shapes of each object in a cached block, so a change of 1 object updates faster on a project with many large objects. A new plot of a big object is about 2 times faster.
  • The Move and Transform plugins keep the plot of an object and move its vertices, also the text of a CNCJob.

Canvas

  • The tick labels of the 2D rulers sit beside their major ticks. The labels of the vertical ruler are turned 90 degrees, and the labels do not jump during a pan.
  • The major grid lines on a dark canvas are dimmer (2D and 3D canvas).
  • A right click on the delta coordinates toolbar opens a menu with Polar Coords. When it is checked, the toolbar and the HUD show the relative position as R and θ.

Welcome screen

  • The categories are now Project, PCB Manufacturing files, Geometry and PCB Boards. Geometry and PCB Boards are collapsed by default.
  • The collapse state of each category and the last selected file type are kept between sessions.
  • An Expand / Collapse link in the details of a selected category.
  • A search shows its matches in all categories.

Fixes

  • Linux: the AppImage did not start on a desktop without the X11 keyboard and cursor libraries of Qt. The AppImage now holds them.
  • Project tab: the label of a selected object did not use the plot on / off colors of the preferences.
  • Welcome screen: the same file opened with other slashes or other letter case (Windows) was listed 2 times in the recent files.
  • Distance: the exit of an editor during a measurement did not stop the plugin, and the cursor, the grid state and the active command were not restored.
  • Distance: the unit labels kept the old unit after a change of the units.
  • Distance: the delta coordinates of the status bar stayed relative to the points of a finished measurement.
  • Distance: a change of the Multi-Point checkbox during a measurement left a broken measurement.
  • Panelize: an Excellon panel of an inch file could get drill circles with the wrong number of segments.

Other

  • The PyOpenGL DeprecationWarning about __version__ is no longer shown at the start.
  • New splash screen images (light and dark theme).
  • Translations: the new texts are translated in all language catalogs.

FlatCAM Evo 1.07

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 10 Nov 21:01

This release brings 3 new board imports: ODB++ jobs, CircuitStudio / CircuitMaker boards (.CSPcbDoc) and PADS Layout boards (.asc, .pcb). The PCB 3D Viewer can export the board as STEP. The pan of the 2D canvas is much faster (88 FPS instead of 13-21 FPS on a 90 Hz display). The Gerber Editor keeps the apertures of the edited object on save.

Windows: the Windows release is based on Python 3.15. The optional packages (OR-Tools, pyclipr) are installed.

Linux and macOS: the AppImage and the .dmg images are based on Python 3.13.

G-code Sender: the Sender is disabled until it is finished and verified. Plugins → G-code Sender shows a warning and does not open. For development work, set the environment variable FLATCAM_SENDER_DEV=1.

Highlights

Canvas speed breakthrough - much faster/reactive panning

  • The pan of the 2D canvas follows the cursor at the refresh rate of the display. On a 90 Hz display: 13-21 FPS before, 88 FPS now. No detail is removed during the pan.
  • No mouse move of a drag is lost, so the view ends exactly at the cursor.
  • With a large board, the garbage collector of Python no longer stops a pan for about 200 ms.
  • 3D canvas and PCB 3D Viewer: a small board runs at about 80 FPS and a dense board (1.5 million triangles) at about 65 FPS (16-21 FPS before).
  • FLATCAM_VISPY_PATCHES=0 switches these changes off for a comparison. FLATCAM_CANVAS_PROF=1 prints the frame times to the log.

Import: ODB++ (new)

File → Import → ODB++ Job imports an ODB++ job (ODB++ Design 8.x): a .tgz, .tar.gz, .tar or .zip archive, or an unpacked folder (select its matrix/matrix file). The program finds the archive type by its content, so a renamed archive also opens.

  • Each graphic layer becomes a Gerber object. Copper, mask, paste and silkscreen are on by default; document, component, misc and rout layers are listed off.
  • Each drill layer gives PTH and NPTH Excellon objects. Drill lines and oval drill pads become slots. The board profile becomes a thin outline layer.
  • The import reads the standard and user symbols, pad rotation and mirror, lines and arcs, surfaces with holes, negative features, negative plane layers, text with the stroke font of the job and .Z compressed members.
  • A job with more than 1 step asks for the step. A panel step is flattened with all its step-repeat copies, in the order of the job.
  • The archive reads are bounded (member size, compression ratio, total memory). Unsafe members are refused. A damaged job fails the import and gives no partial objects.
  • Not imported: EDA data, netlist, components, BOM, stackup, barcodes and flipped step-repeat copies (a warning tells which).

Import: Altium CircuitStudio / CircuitMaker PCB (new)

  • File → Import → CircuitStudio / CircuitMaker PCB (.CSPcbDoc) imports a native board of Altium CircuitStudio or CircuitMaker Pro.
  • Checked against the Gerber X2 files of CircuitMaker Pro 2.0.5: copper, planes, mask and paste differ by less than 0.05 %.
  • Fixed for PcbDoc and CSPcbDoc: split planes, the net of each internal plane, the plane clearance and thermal relief, the via solder mask, no paste on multilayer pads, the arc direction in outlines and regions.
  • Fixed for PcbDoc and CSPcbDoc: the position and height of TrueType text, and the gap of a dimension line around its value text.

Import: PADS Layout PCB (new)

  • File → Import → PADS Layout PCB (.asc, .pcb) imports a PADS Layout board: the ASCII format 9.4 to 10.0, the older V2005.0 dialect and the native binary .pcb (version 0x2026 and 0x2027). The entry is also in the Import dialog and on the Welcome screen.
  • A Gerber object for each copper layer (1 to 32) and for the silkscreen, mask and paste layers. PTH and NPTH Excellon objects (round drills and slots). The board profile with its cutouts.
  • The import reads the decals and part types, top and mirrored bottom placements, all pad shapes with offsets and rounded or chamfered corners, pad stacks, straight and arc routes, vias and graphics.
  • The copper pours are made again from their boundaries, with the thermal connections and clearances of the rules. Teardrops and text are also imported.
  • The Ref.Des. and Part Type labels of the top or bottom copper layer go to the silkscreen layer of that side, so a label never becomes copper.
  • Unsupported copper fails the import with a message and gives no partial board.

All board imports

  • The layer dialog opens at once with a busy bar. The layer list appears when the parse ends. Cancel during the parse ends the import.
  • A second board import waits until the dialog of the first one closes.
  • A failed import shows "Import failed." and its cause in the status bar.

PCB 3D Viewer: Export STEP (new)

  • A new Export section at the bottom of the panel, with 2 buttons: 3D PDF and STEP.
  • The STEP export writes a STEP AP214 file in millimeters with the project XY coordinates. Each layer is a part of a "PCB" assembly with its color.
  • Board (the default) holds only the board body with its outline, cutouts, thickness and holes, as 1 solid, for the fit of a case. All layers also holds copper, soldermask, legend and the plated hole walls.
  • The solids are closed, so a CAD application reads them without repairs. Circles and arcs become true circle edges, so holes are round.
  • The export shows its progress in the activity monitor and in a progress bar.
  • Fixed: an outline layer with a drawing frame, notes or text away from the board no longer gives a wrong board.
  • Fixed: an Altium outline whose arcs end 1 database unit from their lines now closes.
  • Fixed: the bounding box no longer includes the silkscreen layers when other layers are selected.

Gerber Editor

  • A save keeps the apertures of the edited object. A flash or a track whose shape still matches its aperture is saved with that aperture.
  • A cut or changed flash or track is saved as region material, so a cut is no longer lost.
  • The Eraser no longer cuts a record that it only touches at the edge.
  • Preferences → Gerber Editor → Load is now Apertures by default (was Regions).
  • The save is faster, also with clear features.

Preferences

  • General → App Settings → Ask to save on exit (on by default). When it is off, the application closes without the question about unsaved projects.

Updater

  • The update check at the start keeps the GitHub release list for 10 minutes, so many restarts do not use up the GitHub request limit. Help → Check for Updates always asks GitHub.
  • A failed update check shows its cause in the status bar. At the GitHub rate limit the message tells when the next check can work.

Fixes

  • Isolation: in the Polygon Selection mode a click on the copper highlights the polygon again, and a right click starts the isolation. Reported in Issue #84 by snuffkin311 (https://github.com/snuffkin311)
  • Application: 2 instances that start at the same time with a new data folder no longer stop with FileExistsError.

Other

  • New splash screen images (light and dark theme).
  • Translations: the new texts are translated in all language catalogs.

FlatCAM Evo 1.06

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 09 Nov 17:55

This release brings a new Welcome screen, the Voronoi isolation strategy, the Crosshatch clearing method and 12 new preprocessors. The PCB 3D Viewer can export the board as a 3D PDF. The updater is much faster, and Revert Update downloads the previous release from GitHub. The OR-Tools route optimizer now works with a decimal comma in the system locale.

Windows: the Windows release is based on Python 3.15. The optional packages (OR-Tools, pyclipr) are installed.

Linux and macOS: the AppImage and the .dmg images are based on Python 3.13.

Update from 1.01 or newer: use Help → Check for Updates.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.06 once with the Windows installer. After that, the built-in updater works.

G-code Sender: the Sender is disabled until it is finished and verified. Plugins → G-code Sender shows a warning and does not open. For development work, set the environment variable FLATCAM_SENDER_DEV=1.

Highlights

Welcome screen (new)

image

A welcome screen opens when FlatCAM starts without files or commands.

  • It lists the file types by category (Project, Geometry, PCB Manufacturing files, PCB Boards), with a search box, a description of each type and the last 5 recent files of the selected type.
  • Open a file of the selected type (Browse…), open a recent file, or create a new blank object. DXF and SVG files can be imported as a Geometry object or as a Gerber object.
  • Contributors, License and About tabs, and a Show this screen next time check box.
  • Preferences → General → Show welcome screen on startup turns it on or off (on by default).
  • The main window opens after a choice on the welcome screen. A file sent by the OS or by a second instance closes the welcome screen and opens the file.

Isolation: Voronoi strategy (new)

image
  • One pass follows the boundaries between the nets, so the job removes the least copper.
  • Each path is checked against the real cutter sweep. A gap narrower than the tool stops the job, and the canvas shows its location.
  • Each tool in the table keeps its own strategy (Offset or Voronoi), Voronoi spacing and Pad isolation. A table with both strategies makes both.
  • If the copper perimeter needs more Voronoi sites than the limit, the spacing grows (up to half the tool diameter) with a warning.
  • Tcl isolate takes -strategy, -voronoi_spacing and -pad_isolation. The Voronoi strategy needs -boundary.

Copper Clearing and Paint

  • New Crosshatch method: 2 families of parallel lines, at the set angle and at the angle + 90 degrees. The Angle field is enabled only for this method. Tcl copper_clear and paint take -angle.
  • The factory clearing method of Copper Clearing is now Standard instead of Seed. On the measured boards a Standard job takes 21 to 51 % less machining time (fewer lifts), with the same cleared area. Saved preferences and tools keep their method.

Preprocessors (12 new)

Buildbotics, Fanuc, FluidNC, Haas, Heidenhain_ISO, LinuxCNC, Mach3, Mach4, PlanetCNC, Sinumerik, TinyG and UCCNC.

  • Fanuc and Haas programs start and end with % and an O number, and end with M30.
  • Sinumerik selects the ISO dialect (G291) and ends with M30.
  • Heidenhain ISO numbers the blocks and calls the tool with T<n> G17 S<rpm>.
  • Mach3, Mach4, UCCNC and PlanetCNC end the program with M02.
  • Fixed: a very short dwell is no longer written as 0 or with an exponent (G4 P1e-05).

PCB 3D Viewer: Export 3D PDF (new)

  • Export 3D PDF saves the selected board layers with their thicknesses, colors and opacity, an isometric view of the whole board and a static image fallback. Interactive 3D needs Acrobat Reader or Foxit, not a browser.
  • FlatCAM Evo writes the 3D model as U3D itself (no external converter). The preview and the PDF use the same layer heights and colors.
  • Reference is now Center by default. With Center, the mouse rotates the board as a trackball about the center of the objects.
  • The Transparency label is now Opacity (0 is transparent, 255 is opaque).

Updater

  • A GitHub update is much faster. The updater extracts each file one time and renames it into place. The archive is checked as a whole against the SHA-256 that GitHub publishes.
  • Help → Revert Update downloads the previous release from GitHub and installs it. The updater no longer keeps a copy of the previous version on the disk. Revert Update needs a network connection.
  • Each update job has its own backup folder. A backup that an earlier failed cleanup left no longer stops later updates.
  • The release notes in the update dialog now show the images of the GitHub release.

Fixes

  • Route optimizer: on Linux the OR-Tools route optimizer failed with a decimal comma in the system locale. A broken OR-Tools install no longer stops the application; the optimizer falls back to the greedy order. (reported in issue #83 by @OpenAISwift)
  • G-code Sender: on Windows a headless run no longer stays alive after its script ends when a camera is connected. (reported in issue #82 by @ErkanGench)
  • Isolation: a Voronoi geometry stays valid after a change of units.
  • Preprocessors: the Fanuc, Haas and Sinumerik tool change uses the Start Z of the first tool.
  • Tools database: the Crosshatch angle of a tool from an older database is saved.
  • Photo Carve: closing the Plot 3D tab of the simulation stops the simulation and closes the plugin.
  • Recent files: a missing or damaged recent file list no longer stops the load of the list.
  • Tcl: the interruption of a Tcl script works with Tcl 9.0 as well as with Tcl 8.6.
  • Translations: the labels of the editor undo history, the Calculator errors, the Photo Carve messages, the Rules Check status and some Tcl command errors are now translated.

Other

  • Help: the links open the Gerber Layer Format Specification revision 2024-05 and the XNC Format Specification revision 2021-11 at the new Ucamco addresses.
  • Help → About links to the GitHub repository and to the Wiki.
  • New dark splash image.
  • Translations: the new texts are translated in all language catalogs.

FlatCAM Evo 1.05

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 06 Nov 15:31

This release brings a new PCB 3D Viewer plugin, and the Image plugin and the Geometry Editor can import images with a live preview. It also brings a new Preferences window with search, a Keyboard Shortcuts editor and the Arabic translation with a right-to-left interface. The G-code Sender gets edge and centre probing, and Levelling now follows the G81, G82 and G83 drill cycles. All 11 language catalogs are complete.

Many thanks to @ErkanGench for the Preferences window, the shortcut editor, the right-to-left interface and the Arabic translation (PRs #78, #79, #80 and #81, proposed in issues #75, #76 and #77).

Windows: the Windows release is based on Python 3.15. The optional packages (OR-Tools, pyclipr) are installed.

Linux and macOS: the AppImage and the .dmg images are based on Python 3.11.

Update from 1.01 or newer: use Help → Check for Updates.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.05 once with the Windows installer. After that, the built-in updater works.

Highlights

PCB 3D Viewer (new plugin)

3d_viewer

Plugins → PCB 3D Viewer shows the Gerber and Excellon objects of the project as a 3D board in the Plot 3D tab.

  • Separate layers: substrate, top and bottom copper, soldermask, silkscreen overlays, board outline and drills. Each layer has a combo box with the project objects.
  • The thickness of the board, of the copper and of the soldermask, the transparency and the colors are set in the plugin. A change of the thickness or of a color does not triangulate the geometry again.
  • The meshes are built in a worker thread, one layer at a time, so the application stays responsive.
  • Reference sets the rotation point: the point under the mouse, or the center of the project. The View Cube rotates about the same point.
  • A Gerber object has a View 3D button next to its Properties button.

Image import

  • Geometry Editor → Import Image (menu and toolbar): load a raster image, convert it to paths and place it with a click. The preview of the paths follows the cursor.
  • The Image plugin has a preview of the loaded image that follows the settings.
  • New options: Invert, Mirror X and Mirror Y.
  • The threshold and the mask levels are sliders with a spin box.
  • The raster import is much faster. The conversion runs in the background with a progress dialog and a Cancel button.

Preferences window (new)

preferences_new

The Preferences open in their own window over the main window, not in a full-size tab. (merged PR #79 from @ErkanGench, issue #75)

  • A tree on the left lists the sections (Application, Gerber, Excellon, Geometry, CNC Job, Plugins, Utilities) and their pages. The plugin pages are in alphabetical order.
  • Search: a search box filters the pages by the names and the tooltips of the settings. It shows the number of matches of each page and highlights the matching names. Esc clears the search.
  • A strip under the page shows the tooltip of the setting under the mouse or with the focus.
  • A setting that differs from its factory value gets a colored bar and a reset arrow. Its page and section get a dot in the tree. Reset page to defaults resets the whole page.
  • The bottom bar holds Cancel, Apply and Save. Import and Export Preferences, Open Pref Folder, Restore Defaults and Clear GUI Settings are under the More button. Restore Defaults now asks for a confirmation.
  • The subheadings use one neutral style (bold, normal text color) that is easy to read in the dark theme.
  • The window keeps its size. Shift+P, the menu and the status bar icon open it. Ctrl+S applies the preferences.

Keyboard Shortcuts editor (new)

shortcuts_manager

Preferences → Application → Keyboard Shortcuts lists every command with its key and its context. (merged PR #81 from @ErkanGench, issue #76)

  • Search a command by name, or press a key to see which commands use it. A filter shows one context.
  • Change a key with a modifier combo box (Ctrl, Alt, Shift; Cmd on macOS) and a key field.
  • A key that another command already uses is reported before it is assigned: Assign it here and clear the other or Cancel. The fixed keys of the drawing tools and of the text fields cannot be taken.
  • Reset shortcut, Reset all shortcuts, Import and Export (JSON file). Only the changed keys are saved in the preferences.
  • The Shortcuts List (F3) and the key hints of the menus now always show the current keys. The F3 list now also shows Undo, Redo and the editor keys it missed. Wrong hints are removed (Q, Shift+O), and Cut Path shows its real key Ctrl+X.

Arabic translation and right-to-left interface (new)

  • Arabic (العربية): all texts are translated into Modern Standard Arabic with machine help and an independent review. Every entry waits for the approval of a native speaker; the review lists are in docs/translation_review/. (merged PR #80 from @ErkanGench, issue #77)
  • With a right-to-left language the whole interface is mirrored. The plot canvas, the code editors, the Tcl shell, the coordinates and the jog controls stay left to right. (merged PR #78 from @ErkanGench, issue #77)

G-code Sender

  • Edge / centre probing: Probe edge probes one edge (X+, X-, Y+, Y-) and shows the contact point. Find XY centre probes the 4 edges of a hole or a ring and shows its center. The work offsets of the controller are never changed. The probing starts only when the controller state is confirmed (Idle, units, G90, G94, check mode off).
  • Tool change: when the tool length changes, the active height map is checked against the new tool frame. If the frame can not be proven the same, the map and the levelled job are retired, and the message tells you why.
  • Camera registration: the acceptance tolerance is now a Residual warning limit. A fit above the limit is shown with a warning. The table shows the residual of each pair, and the summary shows the minimum, mean and maximum residual.

Levelling

  • G81, G82 and G83 drill cycles (G17 plane) are expanded into levelled moves that follow the height map. The moves between holes clear the highest point of the whole map.
  • G98 returns to the initial plane. G83 retracts to the R plane between the pecks.
  • A canned cycle that is not supported is left unchanged and listed in the warning.
  • Codes that do not move the machine (G4, G17 to G19, G40, G61, G64, G98, G99) no longer break the levelled segment.

Excellon

  • The tool color in the Tools table is a round swatch. Click it to choose the color of the drills of that tool (with alpha). The color is kept when Multicolored changes and when the object is plotted again.

Fixes

  • Isolation and Milling: the Milling paths that Isolation generates were offset a second time when a CNC Job was made from them in the Milling plugin.
  • CNC Job: a change of the project units now also converts the tool data of the jobs (tools_mill_ and tools_drill_ values) and the Z offset of imported Excellon tools.
  • Preprocessors: a preprocessor that imports another built-in preprocessor no longer runs that file a second time. A preprocessor could be missing from the lists after the list was loaded again.
  • Tool tables: the check box columns have the correct width on a scaled screen. Before, the check box was clipped.
  • Plot: a hidden shape now shows the new color of its layer when it is shown again.
  • Translations: if the catalog of the language is missing or corrupt, the application now falls back to English.

Other

  • Translations: all 11 language catalogs (Arabic, German, English, Spanish, French, Italian, Brazilian Portuguese, Romanian, Russian, Turkish and Chinese) are complete, with 5919 translations each. A review corrected technical terms and shortened long labels.
  • New splash image (light and dark theme).

FlatCAM Evo 1.04

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 04 Nov 10:20

This release adds the Compare plugin: it shows what changed between 2 revisions of a Gerber, Excellon or Geometry object. With the optional package pyclipr (Clipper2), many geometry operations are much faster. The optional packages now have their own installer, and the updater window follows the theme of the OS.

Windows: the Windows release is now based on Python 3.15. All packages are up to date, and the optional packages (OR-Tools, pyclipr) are installed.

Linux and macOS: the AppImage and the .dmg images are still based on Python 3.11.

Update from 1.01 or newer: use Help → Check for Updates.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.04 once with the Windows installer. After that, the built-in updater works.

Highlights

Compare (new plugin)

Plugins → Compare (Alt+5) compares 2 objects of the same type: Gerber, Excellon or Geometry.

  • The geometry that is in Old and not in New (removed) shows in burgundy. The geometry that is in New and not in Old (added) shows in forest green. 2 checkboxes show or hide each result.
  • The summary shows the counts, the area and the length of the changes.
  • Tolerance: geometry within the tolerance is never reported as changed. Geometry farther than about 1.011 × the tolerance is always reported.
  • Excellon objects are compared hole by hole. A drill or a slot matches a hole of the same diameter (within the tolerance) at the same place. Slots with reversed end points are equal.
  • Objects in MM and in inches can be compared. New is scaled to the units of Old.
  • The comparison runs in the background, and the GUI stays responsive. A new Compare click, Reset, a change of the type, of Old or of New, the close of the tab or the delete of a source object stops the running job. A large result draws in small steps.
  • A click on the color swatch of Removed or Added opens a color picker. The new color is saved in the preferences.
  • New preferences: Preferences → Plugins → Compare Plugin (tolerance and colors).
  • Translated in all 9 languages.

Performance (optional Clipper2 / pyclipr)

When the optional package pyclipr is installed, some geometry operations use Clipper2. Without pyclipr, or when a Clipper2 result is not valid, the previous (Shapely) code runs, and the result is the same.

Operation Speed with pyclipr
NCC and Paint: tool sweep of the rest machining and of the residual check 2 to 5 × faster
Paint, NCC and Geometry Editor Paint, Standard method: inset passes on concave outlines (text, logos, stars) up to 15 × faster (no change on a usual board)
Gerber Editor: save of a whole board about 20 × faster
Gerber Editor (region union and difference), Geometry Editor (Union and Subtract): 64 shapes or more about 9 × faster
  • Measured and not changed, because Clipper2 is slower there: the Gerber track buffers, the NCC area and margin, the Isolation passes and rest machining, Film, Invert Gerber, Copper Thieving and the track bend of the Gerber Editor.

Installation

  • OR-Tools and pyclipr are now optional packages in requirements-optional.txt, not in requirements.txt. They have no wheel for some platforms, and 1 failed package stops a pip install -r.
  • New install_optional.py installs each optional package separately. A package that fails is skipped with a note: python install_optional.py. setup_ubuntu.sh, the conda notes of environment.yml, the release build and the README use it.
  • requirements.txt: cycler and six removed.
  • The Windows wheels for Python 3.15 (GDAL, OR-Tools, pyclipr, rasterio) are in assets/Missing wheels. The Python 3.14 GDAL and rasterio wheels are removed.

Updater

  • The progress window of the updater follows the theme of the OS. With a dark OS theme it has dark colors and, on Windows 10 and 11, a dark title bar. On Linux the dark theme is read from GTK_THEME or the GNOME color scheme. On macOS, Tk follows the system appearance.
  • Linux source installation: the update dialog also lists the changes of the optional packages. When only the optional packages change, a note tells you to run python install_optional.py.
  • Fixed: the labels "Added" and "Removed" of the update dialog were not translated.

Fixes

  • CNCJob: a project with a multi-depth Geometry CNCJob could not be saved ("Circular reference detected"). The G-code does not change. (reported in issue #74 by @kpkrisnop)
  • Canvas: a shape hidden while its drawing was not finished showed again when the drawing finished.

Other

  • New splash image and new Gerber project icon (light and dark theme).
  • Translations: the new strings of the Compare plugin and of the update dialog are translated in all 9 languages.
  • Tests: an error in a Qt callback now fails its test, and does not abort the whole test run.

FlatCAM Evo 1.03

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 03 Nov 15:31

This release adds Photo Carve: a new plugin that carves or laser-engraves a photo, with a 3D simulation of the result. The updater can now skip a version, and it links the AppImage and macOS packages directly. The text editor gets fixes, and the German, Brazilian Portuguese and Russian translations are clearer.

Update from 1.01 or newer: use Help → Check for Updates.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.03 once with the Windows installer. After that, the built-in updater works.

photo_carve **[ Photo Carve image ]**

Highlights

Photo Carve (new plugin)

Plugins → Photo Carve (Alt+V, or the Plugins toolbar) makes a Geometry object from a raster image: PNG, JPG, BMP or TIF. The EXIF orientation is applied. The Milling plugin then makes the CNCJob.

Modes

  • V-carve: a V-bit cuts deeper where the image is dark. Raster with a scan angle, or Spiral.
  • Halftone: V-bit dots on a hexagonal grid.
  • Relief: a ball or flat cutter, with passes in X, Y or XY.
  • Lithophane: thin where the image is light, with a frame and a minimum and maximum thickness.
  • Laser: grayscale power levels, Bayer dither or Floyd-Steinberg dither, with the dot size and the overscan.

Image and paths

  • Tone mapping: Linear, Perceptual or V-bit area.
  • Image Adjust: brightness, contrast, gamma, invert, auto contrast, equalize, blur, sharpen, Mirror X and Mirror Y.
  • Roughing for Relief and Lithophane, with its own cutter, stepdown and allowance.
  • A Beginner / Advanced toggle hides the advanced fields. The fields of the other modes are hidden.
  • The generation runs in the background. A change of the parameters deletes the old result, with a warning.

3D simulation (Plot 3D tab)

  • Stock removal for a milling job, and a burn image for a laser job.
  • Materials: wood, stone, marble, metal and aluminium, with the stock thickness and the cell size.
  • Simulate, Stop, a speed slider and a progress bar.
  • It simulates the generated Geometry, or the G-code of a selected CNCJob.

Checks before the generation

  • Limits: 25 M image cells, 50 M path points, 10 000 roughing levels.
  • Valid values for each mode, and a V-bit for V-carve and Halftone.
  • The maximum depth is limited to the width of the V-bit, with a warning.
  • The relief paths are checked for gouges.

Project and scripting

  • The Geometry keeps the source image and the parameters, also in a saved project. Project → Edit in Photo Carve opens them in the plugin again. The paths of the Geometry can not be edited.
  • New Tcl command photocarve <filename>, with an option for each parameter and -outname. Example: photocarve image.png -width 100 -strategy spiral -outname engraving. It uses the Preferences as defaults and does not plot.
  • New preferences: Preferences → Engraving → Photo Carve Plugin.

Milling and CNCJob

  • For a Photo Carve Geometry, the Milling plugin locks the cutter, offset, depth, area and strategy fields, with a note. The preprocessor list shows only the checked preprocessors:
    • milling: default, GRBL_11, GRBL_11_no_M6, grblHAL, Marlin
    • laser: GRBL_laser, grblHAL_laser
  • Milling and Photo Carve share the code of the tool parameters and of the end G-code, so both write the same G-code.
  • Fixed: a change of units (mm ↔ inch) of a Geometry did not convert the values of each tool (Cut Z, feedrates, offsets, tool diameter, toolchange and end XY) or the multigeometry records. The depths, feeds and tool sizes were wrong after the change.
  • A unit change of a Photo Carve CNCJob shows a warning that its G-code is no longer checked. The warning shows again when the G-code is saved. Make the CNCJob again from the Geometry.

Updater

  • Skip this version in the update dialog: the startup check does not show that version again. Help → Check for Updates still shows it and can install it. A newer version or build shows again. A mandatory update can not be skipped.
  • AppImage and macOS: the startup check now shows the update dialog too. Before, only Help → Check for Updates showed it.
  • AppImage and macOS: the update dialog has a direct link to the package for the system (FlatCAM_EVO-<tag>-linux-x86_64.AppImage or FlatCAM_EVO-<tag>-macos-arm64.dmg), with its size. The web browser downloads it. If no package matches, the dialog shows the release page.
  • The download window shows the steps of the update (download and check, confirm, install and restart) as static text. Only the bar shows the progress.
  • Fixed: the update dialog of a manual installation said "the source archive is prepared automatically". The size line is not shown there now.
  • The update dialogs say "FlatCAM Evo".

Text editor

  • Fixed: a new search after a shown match could crash the editor (endless recursion when the old matches were cleared).
  • A click or a drag in the minimap puts the text cursor on the line under the pointer, and scrolls that line to the middle of the editor.
  • Fixed: the lens of the minimap did not reach the first and the last lines of a long text.

Other

  • 3D view: Shift + mouse wheel zooms in steps 10 times finer. It also works where the system sends the Shift wheel as a horizontal step.
  • Object Report: an option value longer than 500 characters is cut, with "... (N characters)". The tree stays fast for a Geometry that keeps a source image.
  • Translations: all 10 languages have the new strings. German, Brazilian Portuguese and Russian have clearer wording of many messages and tooltips (for example the names of the exclusion area strategies and the Milling operation types).
  • Tests: the test suite is cut from 5041 to 3161 tests. Each kept test checks a result that the user sees.
  • README: Photo Carve, Gerber X3 and XNC, Gerber Editor menus, code editor, packages and updater.

FlatCAM Evo 1.02.1

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 02 Nov 22:11

Maintenance release for 1.02. The updater now shows its progress, FlatCAM no longer freezes at start after an update, and the camera of the G-code Sender works again in the Windows build.

Update from 1.02: use Help → Check for Updates. This update still runs with no window, because an update always runs the updater of the release you have. It takes a few minutes, and then FlatCAM starts again by itself. From 1.02.1 on, each update shows the new progress window.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.02.1 once with the Windows installer. After that, the built-in updater works.

Fixes

Updater: progress window and log

Before, the updater ran with no window and no taskbar entry. An update of about 7600 files took about 5 minutes with no feedback, and the log file stayed empty.

  • New progress window with a taskbar entry and the FlatCAM icon.
  • The window shows each step: checking the archive, waiting for FlatCAM to close, extracting, checking the extracted files, replacing, checking the installed files, saving the restore point, starting FlatCAM.
  • A progress bar and a file count ("n / N") show for each step that works on files.
  • After a successful update, the window shows the new version and closes after 4 seconds.
  • After a failed update, the window shows the reason and the path of the log, with Open Log and Close. It also says whether the previous version was restored.
  • The window can not be closed while the updater replaces files.
  • updater.log now records each step and each error. Before, the failure paths lost the reason.
  • If no display is available, the updater runs with no window, as before.

No freeze at start after an update

After an update, FlatCAM froze ("Not Responding") for about 20 seconds at each start. The check of the restore point for Help → Revert Update read and hashed all of its files (about 7600) on the GUI thread.

  • The check now runs in the background. FlatCAM responds at once.
  • Revert Update becomes available a few seconds after the start, when the check is complete.
  • A click on Revert Update no longer freezes FlatCAM.
  • Before the updater restores a file, it still checks all the hashes of the restore point.

G-code Sender: camera

  • Windows build: the Qt Multimedia backends (the multimedia plugins and the FFmpeg libraries) are in the build again. In 1.02, Qt printed "No QtMultimedia backends found", and the Camera tab showed no video.
  • FlatCAM starts when Qt Multimedia can not load (on Linux it needs libpulse.so.0). Only the camera preview is not available, and the Camera tab tells why. Before, the start of FlatCAM stopped.

Linux and macOS packages

  • AppImage: the package passes the AppDir checks of the current appimagetool (file modes, and the icon is a copy, not a symbolic link).
  • The Linux release build installs libpulse0, so the camera support loads in the frozen application.
  • The Linux and macOS packages are added to this release by the release workflow.

FlatCAM Evo 1.02

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 02 Nov 21:04

This release makes Paint and NCC clear all the material that the tool can reach. It adds the grblHAL controller to the G-code Sender, a modern text editor, new Gerber Editor tools, and Gerber 2021.11 and XNC 2019.02 conformance. All 9 translations are 100 % complete.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.01 or 1.02 once with the Windows installer. After that, the built-in updater works.

Highlights

Paint and NCC: clearing rework

Paint and NCC now clear all the material in the reach of the tool. They are also faster on fine jobs.

Coverage

  • Standard (shrink) adds a pass where the insets split, end or meet around a hole. No island of copper comes back.
  • Seed continues past a ring that misses the margin. Before, it stopped at the first one.
  • Seed and Lines without a contour clear the gaps inside the margin with a local contour.
  • A slot, a neck or a trace exactly as wide as the tool now gets its path. The margin backs down 0.02 % of the radius (0.1 µm for a 1 mm tool), only in those exact-fit strips.
  • Rest machining (Paint and NCC): the smaller tool crosses the cleared area to the stock that is narrower than the larger tool. Stock thinner than the accepted error is not grown.
  • Laser Lines: lines as long as the trace caps, closed and multi-part traces, and a cleaning pass at sharp bends. A trace with no paths no longer stops the other traces.
  • The Paint simplification keeps a path that comes closer to the outline than the radius minus the accepted error.
  • The clearing reads the units of the project. Before, it could read stale units.

New preferences (Preferences → General, saved in the project):

  • Clearing Error: how far the contour of a Paint or NCC clearing can cut past the outline. Default 2 µm. It shows in µm in a mm project and in mils in an inch project. A value of 0 uses the circle steps of the object.
  • Clearing Edge:
    • Touch cuts past the outline by up to the Clearing Error.
    • Strict never cuts past the outline. It can leave up to the Clearing Error of material along the walls.

Benchmarks

Test board: 30 × 21 mm, 54 holes of 1.4 mm, 64 circle steps, Clearing Error 2 µm, best of 3 runs.

Job 1.01 1.02
Standard 0.4 mm, 15 % 0.020 s, 8.13 mm² left 0.082 s, 0 left
Standard 0.4 mm, 15 %, connect 0.044 s 0.123 s
Standard 0.2 mm, 60 % 0.086 s, 213 191 vertices 0.080 s, 18 884 vertices
Standard 0.2 mm, 60 %, connect 0.220 s 0.144 s
Seed 0.4 mm, 15 % 0.077 s 0.064 s
Seed 0.2 mm, 60 %, connect 0.486 s 0.403 s
Lines 0.4 mm, 15 % 0.042 s 0.045 s
Lines 0.2 mm, 60 %, connect 0.373 s 0.286 s
Rest Lines 0.8 + 0.4 mm 1.497 s, 0.10 mm² left 1.098 s, 0 left
Rest Standard 0.8 + 0.4 mm 0.213 s, 4.99 mm² left 0.297 s, 0 left
  • Material left inside the margin without a contour: Seed 1.27 mm² → 0, Lines 0.51 mm² → 0.
  • Squares of 1.5 to 5.4 mm with material left (Standard): 14 of 40 → 0.
  • Touch with 2 µm cuts at most 0.24 µm past the outline. Strict cuts 0 past it: the nearest path stays 1.48 µm farther than the radius.
  • Costs: Strict takes 6 to 12 ms more for each clearing of the test board. A Clearing Error of 0 at 256 circle steps makes the rest job 0.32 s slower (0.77 s → 1.09 s).

G-code Sender: grblHAL, tool change, camera

  • Controller selection: GRBL, grblHAL, E-Cut. grblHAL connects by serial, native USB or network.
  • grblHAL: the Sender reads the banner, options, axes, and the tool, WCS, SD and MPG status. An SD or MPG job blocks the motion commands.
  • Manual M6 on grblHAL: acknowledge the Tool state, jog and send commands in Tool state, then Resume.
  • New preprocessors: grblHAL, grblHAL_no_M6, grblHAL_laser, grblHAL_laser_z.
  • New Tool change tab: tool length measure with a fixed or removable touchplate, and a G10 L2 offset.
  • New Camera tab: crosshair calibration of the spindle offset, and board registration with undo.
  • A legacy E-Cut port setting selects the E-Cut controller.
  • Fixed: a lost status reply stopped the polling.
  • Fixed: a failed network connect, or a jog press while not Idle, latched the recovery state.
  • Fixed: a camera start error showed no message.
  • Fixed: after a New Project, the dock console sent commands to the deleted Sender plugin.

Modern text editor

The Script, Document, Source and G-code editors use a new code editor.

  • Gutter, current line, bracket match, editing keys, zoom, wrap, whitespace, Go to Line (Ctrl+G), fast load.
  • Find bar: case, word and regex options, "N of M" count, wrap without a dialog. Replace All is 1 undo step.
  • Status bar with the line count, and light and dark palettes. The Default theme on a dark system uses the dark palette.
  • Syntax highlight for G-code, Gerber, Excellon and Tcl, with language detection. Code folding.
  • A minimap with a lens that shows the code under the pointer. It skips the folded lines.
  • Find of 200 000 matches: 9.5 s → 0.2 s.

Document object

  • New formatting toolbar above the document: font, size, heading, bold, italic, underline, strikethrough, text and highlight color, alignment, lists, clear format. The buttons follow the format at the cursor.
  • .FlatDoc and .html now save HTML, so the formatting is kept. .txt saves plain text. .pdf saves the formatted document with the PDF margins.
  • Fixed: Save wrote plain text to a .FlatDoc file and lost the formatting.
  • Fixed: the saved font size was applied before the size list was filled.
  • The default document font size is 12 pt.
  • Project tab: a New action in the category menu.

Gerber Editor

  • Select: invert, pads / tracks / regions only, chain of connected tracks. Step and Repeat, Transcode, Snap to Grid.
  • Track Edit: clip, clip and replace with pad, stretch, insert elbow, insert 90° elbow. A right click (not a right drag) ends the tool and returns to Select.
  • Apertures: delete unused, renumber, merge duplicates, round sizes, select same type.
  • Automatic: drawn pads to flashes, teardrops, snowman fillets.
  • Each action is 1 undo step. The parameter dialogs read their defaults from the preferences.
  • New Gerber Apertures database (from the Tools Database): presets of C, R and O apertures with units and Autoload. The editor of an empty Gerber object loads the Autoload apertures.
  • A flash built in a new or changed R/O aperture now saves as a flash, not as regions.

Gerber 2021.11 conformance and X2/X3 attributes

Older files keep loading. The parser does not enforce deprecated commands.

  • Aperture macros: numbers with leading zeros, and the inner disc of the moiré.
  • LM/LR/LS flush the open path. SR copies Y first. G54/G55 prefix is accepted.
  • A G74 zero-length arc is a dot (only with an explicit G74).
  • M00/M02 end the file. A bare D01 is a zero-length draw.
  • The rectangular hole of a standard aperture does not rotate.
  • MI mirrors the coordinates. OF applies before IR. AS swaps the axes.
  • Zero-size apertures make no image. A redefinition of a D-code or AM gives a warning.
  • A G04 comment ends at the first *. An LPC block flash toggles the polarity.
  • X2/X3 attributes: TF, TA, TO and TD. Each record keeps its TO id. Copies and merges keep the ids. The export writes TF, TA and TO. The Gerber Editor keeps the TO ids.
  • The Object Report shows an Attributes section.

XNC 2019.02 conformance (Excellon)

Older Excellon dialects keep loading.

  • M15/M16: a G01/G02/G03 after M16 only moves. Files without M15/M16 cut as before.
  • G02/G03 without A use the last radius.
  • M30 ends the file. Later lines stay only in the source.
  • A file with no number format that uses decimal points reads X8Y8 as 8, 8.
  • The .xnc extension works in the open dialog, the file associations and drag and drop.
  • XNC attributes (; #@! TF./TA./TO./TD): object, file, tool (TA) and hole (TO) attributes.
  • The TO id of each hole follows the hole through the Excellon Editor, Panelize, 2-Sided, Join, Copy, and Tcl add_drill / add_slot.
  • The export writes TF, TA and TO. Files without attributes export as before.
  • The Object Report shows the attributes of an Excellon object.

Tcl

Thanks to @michaelosthege (PR #73).

  • ncc: the tool order is accepted as a string or a number. Without -order, the command now uses the NCC tool order preference. An unknown order gives an error.
  • drillcncjob / milldrills: missing or extra diameters give a warning, not an error. The warning lists the Excellon tools that were not selected.

Other

  • Translations: de, es, fr, it, pt_BR, ro, ru, tr and zh are 100 % translated (394 new strings).
  • The Clearing Edge tooltip now writes "0.02 percent".
  • The file associations get the new icon at the first start of a new version.
  • Windows source install: the app has its own taskbar icon.
  • Windows wheels for Python 3.14: GDAL 3.13.3 and rasterio 1.5.1. They replace the Python 3.10 wheels.
  • README: imports, G-code import, exports, updater.

FlatCAM Evo 1.01

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 29 Oct 04:30

This release adds new PCB importers and transforms for CNC jobs, reworks DXF export and improves the SVG and PDF import. It also has more than 100 bug fixes.

Update from 1.0: FlatCAM 1.0 can not update itself. Install 1.01 once with the Windows installer. After that, the built-in updater works, and it also updates itself.

Highlights

New PCB importers

  • DipTrace PCB (.dip): File → Import → DipTrace PCB reads native DipTrace boards. You do not need DipTrace or a Gerber export. It reads versions 37 to 60 (DipTrace 3.x to 5.x), and multilayer boards too.
    • It imports copper, pads (D-shaped pads too), vias, saved copper pours and teardrops, drills and slots, outline, mask, paste, silk, assembly and documentation layers.
    • For a board with vias, the import asks "Tent vias / Open vias".
  • Proteus PCB (.pdsprj): reads native Proteus 8 and 9 projects. Each board goes into its own project. Firmware source files open as Document objects.

CNC jobs

  • Offset, Scale, Rotate, Mirror and Skew now work on CNC jobs, also from Tcl. The G-code, the plot and the saved text change together.
  • The travel distance and the time estimate now count the Z moves, dwells, tool changes and the end move, for every preprocessor.
  • Moves, Scale and Set Origin on large jobs are about 5× faster (400 000 lines: 2.3 s instead of 11 s).

DXF

  • Export DXF works for Gerber, Excellon, Geometry and CNCJob objects. You can put more than 1 object into 1 file.
  • Each tool, aperture or object gets its own layer. Arcs, circles, slots and rounded corners are true DXF arcs and circles.
  • New DXF export preferences: Layers, Gerber (outline or centerline), Travel moves, Arcs and circles.
  • The DXF import reads the units of the file ($INSUNITS) and scales the drawing.

Project tab

  • New Export submenu: DXF, SVG, PNG, PDF.
  • New Join submenu for 2 or more objects: As Gerber, As Excellon, As Geometry.
  • New Import... dialog (also with Ctrl+I) that lists all the import types in groups, with a search box.
  • New Close All Projects.
  • New Project Caching preference (off by default). A switch back to a project does not plot it again.

SVG and PDF import

  • SVG: the import detects drill markers and puts them in a new Excellon object (<name>_drills). The import also reads the size of Illustrator files that have no width and height.
  • PDF: clipping paths, all pages of a multi-page PDF, compressed object streams (PDF 1.5+), embedded TrueType and Type0/CID text as outlines. Hidden PDF layers are skipped.

Gerber editor

  • New Copper Pour tool with clearance from the copper.
  • Track: new "Snap to pad" option. Hold Space for a grid 10× finer.
  • Rectangular and obround apertures have separate Width and Height fields.

Updater

  • The built-in updater now also updates itself (Windows build and Linux source installs). The updater of the new release does the install, from a copy in the data folder. So a bug of the installed updater can not block the release that fixes it.
  • A rollback runs a copy of the installed updater and also restores the old updater.

Other

  • Extract plugin: Extract Drills also works on a Geometry source.
  • Film: the PNG file has its real size and its DPI. The default is now 300 DPI.
  • View → Restore Layout shows the hidden toolbars and panels again.
  • Native board imports, SVG, DXF and image trace use the circle resolution of each radius, not a fixed value.
  • The default rotate angle of the Transform tool is now 45°.
  • Translations updated: de, es, fr, it, pt_BR, ro, ru, tr, zh.

Bug fixes

Many fixes in this release came from @ErkanGench (PRs #48 to #72). Thank you!

Some fixes that are important for the machine:

  • An object name with parentheses (for example board (1)-F_Cu.gbr) broke the G-code header comment. GRBL, FluidNC and LinuxCNC then stopped the job.
  • Exclusion areas with the "Over" strategy moved the tool down to the Over Z, also when the Over Z was below the travel Z.
  • The Marlin laser preprocessors turned the laser on at full power when the power was 0.
  • The Roland MDX-20 / MDX-540 plunge ran at the XY feedrate.
  • A preprocessor error made a CNC job with missing lines. Now the job fails with a message.
  • A G-code save that failed half way left a cut file. Now the save goes to a temporary file first.
  • Edits in the G-code Editor were lost without a message.
More fixes

CNC Job and G-code

  • Flip, Rotate, Skew and Move of a CNCJob now change the saved G-code, also after Undo / Redo.
  • With "Use CNC Code Snippets" unchecked, the G-code has no snippets.
  • Save of more than 1 CNC job writes each file in the selected folder, with a safe file name.
  • A transform keeps the tool change and end positions. Scale changes X and Y only.
  • With autolevelling segments set, a long path no longer fails with RecursionError.
  • The save dialog no longer adds a second extension (board_cnc.nc.NC).

Drilling and Milling

  • A Travel Z of 0 or below, or a Feedrate Z of 0, is refused.
  • Multi-Depth with a depth per pass of 0 no longer fills the memory.
  • Each tool with a Custom offset uses its own offset.
  • Extra Cut goes on along the path. It no longer cuts across a corner.
  • The solder paste preprocessors are no longer in the preprocessor lists.

Exclusion areas

  • The first corner is correct with grid snap off.
  • Escape ends the drawing and keeps the areas added before.
  • The end of the drawing is much faster on large objects.

Preferences

  • The preferences file goes to a temporary file first. A failed save keeps the old file.
  • The preferences of an older build are taken over again.
  • Many fixes for colours and alpha values. Before, these made the Preferences fail to open.
  • Excellon Restore Defaults sets the correct zeros (TZ).
  • Export Preferences works again.
  • Import Preferences keeps the update source.

Tools Database

  • The saved tools are no longer skipped after a Preferences Apply.
  • Min / Max tolerance and "Add Tool in DB" fixes.

Tcl

  • drillcncjob: correct start Z, correct tool order, laser power, aligndrillgrid tool change.
  • export_gcode returns the full text that write_gcode writes.
  • A command warns when it renames a new object because the name is in use.
  • save_sys saves the settings changed with set_sys.

Editors

  • Gerber editor: obround pads, Dims edit of rectangular apertures, Mark Area, Transform Esc, Pad Array Space, SemiDisc, Simplification menu.
  • Geometry editor: Explode, Buffer, Rectangle and Circle panels, Paint (tool diameter, method, Lines), thread safety.
  • Excellon editor: Drill / Slot Array Add, circular arrays, Copy, Enter with Move.
  • All editors: '-' and '=' zoom in the correct direction. Ctrl+E and Ctrl+A fixed.
  • Code Editor: Replace All, closing of the tab, Save as PDF, G-code highlight in the dark theme.
  • G-code Editor: memory leak of closed tabs, the Name field, Go to Line with wrapped lines.

Import

  • Gerber, HPGL2, SVG and DXF files with letters that are not ASCII no longer fail on some Windows code pages.
  • HPGL2: consecutive arcs, 3-point arcs, files without SP, all commands on 1 line.
  • SVG / DXF / HPGL2 import with a list of tool diameters in the preferences.
  • A .tap file opens as G-code or Excellon from its content.
  • PcbWizard import uses the corrected format.
  • Stop now cancels a long PDF parse.
  • An SVG that FlatCAM exported comes back at its original position.

Updater

  • The updater of the Windows build starts again.
  • A library folder named config (lib/fontTools/config) stopped every update with "The updater could not be started." Only the top-level config folder is protected now.

Application

  • Saving a project with a Document object failed. Now it works.
  • A new project with an open editor no longer leaves old editors in memory.
  • Set Origin moves the objects 1 time on a double click.
  • A rename no longer gives an object the name of another object.
  • An abort with no task running no longer cancels the next task.
  • The Tcl Shell is no longer duplicated for each project. The auto-completer works again.
  • Escape leaves the full screen mode.
  • File associations: no .h / .i by default. Extensions of other programs are no longer removed.
  • Bookmarks export and import are correct.
  • Colour changes in large projects are much faster.
  • Canvas: Jump keeps the zoom and is pixel-exact. Resizing the left panel keeps the view.
  • Fixes in Object Distance, Find Optimal, Cutout, 2-Sided, Align Objects, Film and PCB import.

Downloads

  • Windows: installer, and flatcam-evo-1.01-win64-update.zip for the built-in updater. From 1.0, use the installer.
  • macOS for ARM (manual update: download the new package)
  • Linux AppImage (manual update: download the new package)

Full Changelog: v1.0...v1.01

FlatCAM Evo 1.0

Choose a tag to compare

@MariusAdrian88 MariusAdrian88 released this 25 Oct 18:27

FlatCAM Evo 1.0 brings together the development since FlatCAM 8.994: expanded file support, improved PCB machining tools, new editing capabilities, faster processing, and a modernized interface.

This release starts the FlatCAM Evo 1.x version series. The change from 8.994 to 1.0 is a new versioning series, not a downgrade.

Highlights

Direct PCB design imports

Import PCB designs directly into Gerber and Excellon objects from:

  • KiCad .kicad_pcb
  • Altium .PcbDoc
  • Eagle .brd
  • OrCAD/Allegro .brd
  • Sprint Layout 6 .lay6

DXF, SVG, PDF, and image importing have also received substantial improvements, including better handling of text, transformations, units, holes, and filled regions.

More capable Gerber and Excellon readers

  • Expanded Gerber support: step-and-repeat, aperture blocks, aperture transformations, standard aperture holes, and preserved X2 attributes.
  • More reliable aperture macros, dark/clear polarity handling, and tracks drawn with non-circular apertures.
  • Improved Excellon routing, slots, arcs, incremental coordinates, repeat patterns, and unit detection.
  • Preservation of plated/non-plated tool information from supported file attributes.
  • New adaptive circle resolution, controlled by maximum geometric deviation, alongside the existing fixed-step mode.

Improved isolation, clearing, and painting

  • Isolation boundaries can restrict machining to the board outline.
  • Optional leftover cleanup removes reachable copper between isolation passes.
  • Corrected climb/conventional milling direction and improved rest machining.
  • New previews and multi-object processing options across Isolation, Non-Copper Clearing, Paint, Follow, and other tools.
  • Optional final cleanup for Non-Copper Clearing and final paint passes for Paint.
  • Numerous fixes prevent previous jobs or later parameter changes from affecting newly generated toolpaths.

Expanded drilling, milling, and cutout tools

  • Peck drilling, bottom dwell, spot drilling, and additional spindle and plunge controls.
  • Multiple Excellon objects in one drilling job, with offset, mirror, array, and area-selection options.
  • Improved path ordering and configurable OR-Tools optimization time.
  • Corrected exclusion-area travel and clearance handling.
  • Probe plate thickness support for probing tool changes.
  • Cutout support for internal contours, with internal cuts made before the outer board outline.
  • Improved bridges, editable manual gaps, mouse bites, and drill-cut paths.

Undo/Redo and richer editors

  • Per-project Undo/Redo for supported object creation, deletion, renaming, movement, transformations, and tool results.
  • Separate operation histories in the Geometry, Gerber, and Excellon editors.
  • On-canvas vertex and arc grips, improved snapping, path splitting and joining, size-based selection, and geometry inspection.
  • Improved Gerber track and region editing, including rectangle and text regions.
  • Excellon feature filters, selected-feature transformations, and editable slot endpoints.
  • Editor results can update the original object or be saved as a new object.

Multiple projects and a persistent tool library

  • Keep multiple projects open and switch between them.
  • Improved project loading, progress reporting, cancellation, and missing-source-file relinking.
  • Faster project saving and loading, with Zstandard compression and atomic saves.
  • A version-independent SQLite Tools Database with search, operation filters, import/export, and automatic migration from older tool libraries.
  • Clearer separation between application preferences and project options.

G-code import, levelling, and automation

  • Open external G-code as a CNC Job with toolpaths, tools, bounds, and machining information.
  • Improved parsing of arcs, drilling cycles, relative coordinates, and supported macro/subprogram constructs.
  • Imported G-code retains its original text formatting and encoding when saved without changes.
  • Expanded height-map levelling, including imported G-code and segmentation of long cutting moves.
  • Headless Tcl automation through --headless, --shellfile, and --command.
  • A dedicated Windows console executable, FlatCAM-cli.exe, for command-line workflows.
  • Expanded Tcl commands with improved error reporting, returned object names, and script cancellation.

Other tool improvements

  • Automatic and best-fit object alignment, including Gerber/Excellon feature matching.
  • Corrected etch compensation calculations, with previews and multi-object processing.
  • Expanded QR-code placement, rotation, serial numbering, variables, and soldermask options.
  • Calibrated solder-paste dispensing with additional placement and controller settings.
  • Improved image tracing, font support, multiline text, kerning, and complex text layout.
  • Expanded design-rule checking with presets, canvas markers, navigable results, and CSV export.

Interface, performance, and updates

  • Modernized PyQt6 interface with improved light/dark appearance, high-DPI behavior, and optional custom title bar.
  • Faster plotting, selection, transformations, parsing, toolpath generation, and large-project handling.
  • Improved file associations, drag-and-drop, and opening files in an existing application instance.
  • Built-in updates from GitHub Releases, with transactional application and rollback support.
  • Updated translations across nine languages.
  • Safer numeric expression handling and confirmation before running scripts opened as files.

Important upgrade notes

  • Back up your existing projects before upgrading. This version opens older projects, but projects saved by this version cannot be opened by older FlatCAM versions.
  • Project autosave has been removed. Save your work explicitly.
  • The graphical interface requires working OpenGL. The legacy Matplotlib canvas has been removed.
  • Older projects and tool libraries receive compatibility handling and migration. Review machining parameters and generated G-code before running a job.
  • The G-code Sender remains unfinished and disabled. It is not a production-ready feature of this release.

Downloads

  • Windows: use the Windows installer for a new installation.
  • Windows update ZIP: intended for the built-in updater; it is not the installer.
  • Linux: use the x86_64 AppImage when available.
  • macOS: choose the Apple Silicon or Intel DMG matching your Mac when available.
  • Source: GitHub provides source archives below.

For the complete development history, see CHANGELOG.md.

Thanks

Thanks to everyone who contributed code, translations, issue reports, and test files throughout development since 8.994.