commit7fda555fc0Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed May 24 17:46:25 2023 +0300 - for all Editors now there is a shortcut key (key "C") that will toggle the cursor data in case the cursor data is in the way - Geometry Editor: the Path tool now has a new behavior: when key modifier SHIFT is pressed and the Grid is OFF, when the line is drawn and it is near the 0, 45 and 90 degrees, in each quadrant, then the drawn line will follow the nearest target angle (0 or 45 or 90 degrees) allowing the drawing of straight lines. commite5dd294576Author: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 19 18:18:38 2023 +0300 - Film Tool: fixed the export to PNG to be done at correct DPI commita49f54d63fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 19 13:09:08 2023 +0300 - the selection shapes are now moved from Move Plugin to AppMain - Fiducials Plugin: fixed errors due of changes in the Shapely module - Fiducials Plugin: fixed an error where in Basic mode the soldermask opening is added incorrectly commitba3152e5f9Author: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 19 02:23:40 2023 +0300 - CutOut Plugin - fixed the manual adding of gaps commit761b61668aAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed May 17 22:48:39 2023 +0300 - Thieving Plugin: fixed errors due of changes in the Shapely module commitdea367b185Author: Marius Stanciu <marius.adrian@gmail.com> Date: Tue May 16 04:34:32 2023 +0300 - NCC Plugin: fixed the Standard method of copper clearing (both normal and with Rest machining) commit6719e2ef8eAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 14 22:14:43 2023 +0300 - NCC Plugin - minor code refactoring commit5d274dd522Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 14 21:48:14 2023 +0300 - Isolation Plugin, NCC Plugin and Find Optimal Plugin: fixed not finding the optimal tool diameter (the one that will isolate completely a Gerber object) commit1d68dea61cAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 5 22:31:18 2023 +0300 - replaced some type hints with using the Union commit412872bc09Author: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 5 02:40:41 2023 +0300 - fixed an erroneous opening for a Gerber file generated by KiCAD 6.0.11, due of a rectangular flash being eliminated by the global unary_union operation commit765d7cc05bAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 15 22:15:33 2023 +0300 - when parsing a new Gerber object, I am "preparing" each geometry added therefore making the Gerber object geometry possible faster to process commit6a29bcbe7cAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 15 21:29:32 2023 +0300 - some code leftovers are commented commitb557df8fdcAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 15 21:08:48 2023 +0300 - minor fixes commitccc71eabc2Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 15 21:03:30 2023 +0300 - changed the shapely imports a bit according to the specifications of Shapely 2.0 - changed the requirements.txt file to reflect the need for at least Shapely in version 2.0 commit6f93734d3fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 8 12:43:34 2023 +0300 - minor name changes commitfaf41d7bcaAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 8 12:29:45 2023 +0300 - major change: from now on the only dimensional units available are those from ISO METRIC system commitb446ded9abAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Apr 8 12:10:02 2023 +0300 - fixed some really long strings in the Geometry Editor toolbar actions - modified the paint and buffer icons - optimized the editor menu/toolbar action names commit72dd81848fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Mar 22 16:43:27 2023 +0200 - in the toolbars now there is text under the icons (which can be turned off from the toolbar context menu) - the GUI state is now saved and restored through QSettings commit1dff9cc566Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Mar 13 23:08:57 2023 +0200 - in Tcl Commands: export_dxf and export_gerber, fixed a mistake in declaring a wrong name of a required option - in Tcl Command set_path added an optional parameter which allows to create a directory where path is to be set, if the directory does not exist commit3b3c87e953Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Mar 6 16:40:49 2023 +0200 - fixed some possible issues due of changes in version 2.0 of Shapely - removed the import * statement from most of the app commit33de5314b1Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Mar 1 18:15:10 2023 +0200 - in Tool Milling made sure that deleting the only tool will not crash the application - added a new parameter in Preferences to control the number of processes created by the Pool() - more processes better performance but also a lot of memory consumed - made sure that the display of messages in the Status Bar is done asap commit9d8852e611Author: Marius Stanciu <marius.adrian@gmail.com> Date: Fri Jan 20 19:23:34 2023 +0200 - added a new method for bilinear interpolation commit9ce9c3cb54Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Jan 18 18:22:33 2023 +0200 - in Autolevelling Plugin, preventing the add of a probe point on Excellon hole checkbox is not disabled except for the Manual mode - in Autolevelling Plugin, the status of soem checkoxes (avoid Excellon holes and plot points) is stored between app restarts - in Isolation Plugin, added an convenience shortcut button to launch the Milling Plugin. commitc85d04bc0aAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Jan 18 01:32:28 2023 +0200 - in Autolevelling Tool, when adding manual probe points, added an option that prevent adding a probe point within a drill hole of an Excellon object that is plotted on canvas commitf42f05d93eAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Jan 18 01:07:31 2023 +0200 - in Autolevelling Tool made sure that when adding manual probe points mouse dragging with the right button is not counted as end of adding operation commit220157641dAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Tue Jan 17 01:02:52 2023 +0200 - fixed the Voronoi generation in the Autolevelling Tool (removed the Foronoi package due of issues and now using the embedded functionality from Shapely) - fixed the enable of Levelling Tool only for CNCJob objects that were made from geometries that were segmented commit853b273e79Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Jan 16 23:52:30 2023 +0200 - fixed the Voronoi generation in the Autolevelling Tool (removed the Foronoi package due of issues and now using the embedded functionality from Shapely) commita1b6f78d78Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Jan 16 13:28:50 2023 +0200 - some PEP8 fixes commit6c5a468418Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Jan 16 13:02:47 2023 +0200 - fixed a decoding error in the Excellon parser commitd6ebcef38dAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Jan 15 22:31:11 2023 +0200 - PEP8 changes commit2d0ea65f1bAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Jan 15 15:25:20 2023 +0200 - minor change commitc1377d5090Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Nov 19 02:29:40 2022 +0200 - added a 'return' button when a fatal error is encountered allowing the user to continue the work - fixed a crash in Milling Plugin when trying to mill slots that do not have drills in the same file commit22f4d92be7Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Nov 9 20:56:39 2022 +0200 - minor change in the requirements.txt file commit8b4423dc0fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Nov 9 19:55:59 2022 +0200 - when changing the style for the decorations from Preferences, now change is applied immediately commit9ec2ee2920Author: Marius Stanciu <marius.adrian@gmail.com> Date: Tue Nov 8 15:59:59 2022 +0200 - in Drilling Plugin fixed a situation when having tools with the same diameter will get them multiplied by the number of those tools commitd1a4de676eAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Nov 6 00:43:34 2022 +0200 - if PikePDF module is not available then show an error but run the app (currently, for Python 3.11 is the only module not available) commit6509089dc4Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Oct 19 16:59:05 2022 +0300 - fixed an issue when exporting huge SVG files from the Film Tool by adding a fallback and using a custom XML parser with the 'huge_tree' option set commit2c229d8677Author: Marius Stanciu <marius.adrian@gmail.com> Date: Wed Oct 19 02:35:19 2022 +0300 - added a hack so the Gerber files from Allegro 17.2 (which do not follow the Gerber specifications) can be loaded commit94901686b5Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Oct 2 06:56:13 2022 +0300 - really small UI change in 2-Sided Plugin commit56033b8bc4Author: Marius Stanciu <marius.adrian@gmail.com> Date: Tue Sep 27 16:45:32 2022 +0300 - in Milling Plugin, for Excellon target, re-enabled the control over the Feedrate X-Y parameter commit8f774df30bAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Sep 25 05:57:35 2022 +0300 - small fix in ToolCutout Plugin when trying to set a checkbox state with a float value which still works in Windows but creates issues in other OS's commit9b08191660Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun Sep 25 05:44:43 2022 +0300 - added a new setting in Preferences ("3D compatibility") controlled by a checkbox. If the checkbox is checked then multithreading is disabled for the 3D mode (lower performance but perhaps more compatibility, especially for Linux) - this was done from the research done by Matti Eiden on bitbucket commit565c839460Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Sep 10 01:50:13 2022 +0300 - added insurance that the QThread where the ArgThread class is running, really receive the interruption request and it is finished commit71a3963c96Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sat Sep 10 01:06:13 2022 +0300 - hided the main UI on application quit to create a user experience of a shutdown without lag - added a way to terminate QThreads safely by waiting; should be much safer - made sure that the ArgsThread class receive the signal to stop - made sure that on application shutdown, all workers will quit before the actual exit commit3c1349a6c4Author: Marius Stanciu <marius.adrian@gmail.com> Date: Thu Sep 1 13:08:06 2022 +0300 - added a new feature for Geometry export-as-SVG, the ability to export only the paths (outlines); the new feature is controlled from a new parameter in Preferences -> Geometry -> Export commit6eeac5312eMerge:419330ee2901afd9Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Aug 1 09:29:44 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commit419330ee93Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon Aug 1 12:27:14 2022 +0300 - fixed some bugs in Geometry Editor in regards of Buffer Tool - fixed some issues in the Cutout Plugin by adding more checks - fixed issues when loading files by dragging in the UI (caused by recent code refactoring) commit4c22e52b08Author: Marius Stanciu <marius.adrian@gmail.com> Date: Thu May 26 00:20:43 2022 +0300 - upgraded the UI of Region sub-tool in the Gerber Editor commit95066e352bAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 22 14:01:21 2022 +0300 - in Gerber Editor upgraded the Simplification sub-tool GUI commit5298a59372Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 22 04:37:16 2022 +0300 - in Gerber Editor upgraded the Track sub-tool GUI commit830d500d04Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 22 03:18:51 2022 +0300 - in Gerber Editor upgraded the PadArray GUI commit9055cc1230Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sun May 22 01:40:55 2022 +0300 - in Gerber Editor upgraded the PadAdd GUI commitbfb3aa4118Author: Marius Stanciu <marius.adrian@gmail.com> Date: Sat May 21 02:13:47 2022 +0300 - added properties for the mouse position and mouse clicked position (and setters) and cleaned up the code regarding this data commit61325b7b5fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Sat May 21 01:25:14 2022 +0300 - more code refactored in the appMain.py commit77c752701fAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 20 21:19:52 2022 +0300 - refactored the code for the file registration and for the keywords update into its own class to make the main class smaller - when creating new files the file names are added to the beginning of the keywords list for the usage of Qt auto-completer commit5125f475ebMerge:c3ab0b28037a72a5Author: Marius Stanciu <marius.adrian@gmail.com> Date: Fri May 20 01:51:59 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commitc3ab0b28b3Merge:93c2ab43c0ff26dbAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Thu May 19 13:25:47 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commit93c2ab43f4Merge:8bdaaa50f82d4a4bAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Wed May 18 21:00:48 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commit8bdaaa5021Merge:1a0dfe6104bb0857Author: Marius Stanciu <marius.adrian@gmail.com> Date: Tue May 17 19:55:12 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commit1a0dfe6143Merge:9a057a40b09c55daAuthor: Marius Stanciu <marius.adrian@gmail.com> Date: Tue May 17 11:39:28 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commit9a057a40c5Merge:c1a532033a0247e7Author: Marius Stanciu <marius.adrian@gmail.com> Date: Tue May 17 09:54:28 2022 +0000 Merged Beta_8.995 into gerber_editor_upgrade commitc1a5320315Author: Marius Stanciu <marius.adrian@gmail.com> Date: Mon May 16 18:13:12 2022 +0300 - started to lay ground for upgrading the UI in the Gerber Editor - fixed and upgraded the Buffer sub-tool in the Gerber Editor - fixed adding same aperture multiple times
FlatCAM Evo (c) 2019 - by Marius Stanciu
Based on FlatCAM: 2D Computer-Aided PCB Manufacturing by (c) 2014-2018 Juan Pablo Caram
FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router. Among other things, it can take a Gerber file generated by your favorite PCB CAD program, and create G-Code for Isolation routing.
=====================================================================
-------------------------- Installation instructions ----------------
Works with Python version 3.6 or greater and PyQt6. More on the YouTube channel: https://www.youtube.com/playlist?list=PLVvP2SYRpx-AQgNlfoxw93tXUXon7G94_
You can contact me on my email address found in the app in: Menu -> Help -> About FlatCAM -> Programmers -> Marius Stanciu
- Make sure that your OS is up-to-date
- Download sources from: https://bitbucket.org/jpcgt/flatcam/downloads/
- Unzip them on an HDD location that your user has permissions for.
1.Windows
- download the provided installer (for your OS flavor 64bit or 32bit) from: https://bitbucket.org/jpcgt/flatcam/downloads/
- execute the installer and install the program. It is recommended to install as a Local User.
or from sources:
-
download the sources from the same location
-
unzip them on a safe location on your HDD that your user has permissions for
-
install WinPython e.g. WinPython 3.9 downloaded from here: https://sourceforge.net/projects/winpython/files/WinPython_3.9/ Use one of the versions (64bit or 32it) that are compatible with your OS. To save space use one of the versions that have the smaller size (they offer 2 versions: one with size of few hundred MB and one smaller with size of few tens of MB)
-
add Python folder and Python\Scripts folder to your Windows Path
-
verify that the pip package can be run by opening Command Prompt(Admin) and running the command:
pip -V
- look in the requirements.txt file (found in the sources folder) and install all the dependencies using the pip package. The required wheels can be downloaded either from: https://www.lfd.uci.edu/~gohlke/pythonlibs/ (Recommended) or if the required modules cannot be found in the previous source use: https://pypi.org/
You can download all the required wheels files into a folder (e.g D:\my_folder) and install them from Command Prompt like this:
cd D:\my_folder
and for each wheel file (*.whl) run:
D:\my_folder\> pip install --upgrade package_from_requirements.whl
Run FlatCAM beta from the installation folder (e.g D:\FlatCAM_beta) in the Command Prompt with the following command: cd D:\FlatCAM_beta python FlatCAM.py
2.Linux
-
create a folder to hold the sources somewhere on your HDD: mkdir FlatCAM-beta
-
unzip in this folder the sources downloaded from https://bitbucket.org/jpcgt/flatcam/downloads/ Using commands (e.g using the sources for FlatCAM beta 8.995): cd ~/FlatCAM-beta wget https://bitbucket.org/jpcgt/flatcam/downloads/FlatCAM_beta_8.995_sources.zip unzip FlatCAM_beta_8.995_sources.zip cd FlatCAM_beta_8.995_sources
-
make sure that Python 3.9 is installed on your OS and that the command: python3 -V confirm it
-
verify that the pip package is installed for your Python installation (e.g 3.9) by running the command:
pip3 -V
If it is not installed, install it. In Ubuntu-like OS's it is done like this:
sudo apt-get install python3-pip
or:
sudo apt-get install python3.9-pip
- verify that the file setup_ubuntu.sh has Linux line-endings (LF) and that it is executable (chmod +x setup_ubuntu.sh)
- run the file setup_ubuntu.sh and install all the dependencies with the command:
./setup_ubuntu.sh
-
if the previous command is successful and has no errors, run FlatCAM with the command: python3 FlatCAM.py
-
Alternatively you can install it on Ubuntu with:
# Optional if depencencies are missing
make install_dependencies
# Install for the current user only (using the folder in its place)
make install
# System-wide instalation
sudo make install
3.MacOS
Instructions from here: https://gist.github.com/natevw/3e6fc929aff358b38c0a#gistcomment-3111878
-
create a folder to hold the sources somewhere on your HDD: mkdir FlatCAM-beta
-
unzip in this folder the sources downloaded from https://bitbucket.org/jpcgt/flatcam/downloads/ Using commands (e.g using the sources for FlatCAM beta 8.995): cd ~/FlatCAM-beta wget https://bitbucket.org/jpcgt/flatcam/downloads/FlatCAM_beta_8.995_sources.zip unzip FlatCAM_beta_8.995_sources.zip cd FlatCAM_beta_8.995_sources
-
check if Homebrew is installed: xcode-select --install ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
install dependencies: brew install pyqt brew install gdal python3 -m ensurepip python3 -m pip install -r requirements.txt
-
run FlatCAM python3 FlatCAM.py