FlatCAM fork for modern systems
|
|
%!s(int64=6) %!d(string=hai) anos | |
|---|---|---|
| config | %!s(int64=6) %!d(string=hai) anos | |
| doc | %!s(int64=7) %!d(string=hai) anos | |
| flatcamEditors | %!s(int64=6) %!d(string=hai) anos | |
| flatcamGUI | %!s(int64=6) %!d(string=hai) anos | |
| flatcamParsers | %!s(int64=6) %!d(string=hai) anos | |
| flatcamTools | %!s(int64=6) %!d(string=hai) anos | |
| locale | %!s(int64=6) %!d(string=hai) anos | |
| locale_template | %!s(int64=6) %!d(string=hai) anos | |
| postprocessors | %!s(int64=6) %!d(string=hai) anos | |
| share | %!s(int64=6) %!d(string=hai) anos | |
| tclCommands | %!s(int64=6) %!d(string=hai) anos | |
| tests | %!s(int64=6) %!d(string=hai) anos | |
| .gitignore | %!s(int64=7) %!d(string=hai) anos | |
| FlatCAM.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMApp.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMCommon.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMObj.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMPool.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMPostProc.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMProcess.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMTool.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMTranslation.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMWorker.py | %!s(int64=6) %!d(string=hai) anos | |
| FlatCAMWorkerStack.py | %!s(int64=6) %!d(string=hai) anos | |
| LICENSE | %!s(int64=7) %!d(string=hai) anos | |
| ObjectCollection.py | %!s(int64=6) %!d(string=hai) anos | |
| README.md | %!s(int64=6) %!d(string=hai) anos | |
| camlib.py | %!s(int64=6) %!d(string=hai) anos | |
| make_win.py | %!s(int64=6) %!d(string=hai) anos | |
| requirements.txt | %!s(int64=6) %!d(string=hai) anos | |
| setup_ubuntu.sh | %!s(int64=6) %!d(string=hai) anos | |
| upgrade_geos.sh | %!s(int64=7) %!d(string=hai) anos |
(c) 2014-2019 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.
=================================================
17.09.2019
16.09.2019
15.09.2019
14.09.2019
13.09.2019
12.09.2019
11.09.2019
10.09.2019
9.09.2019
8.09.2019
7.09.2019
6.09.2019
5.09.2019
4.09.2019
3.09.2019
2.09.2019
1.09.2019
27.08.2019
26.08.2019
25.08.2019
24.08.2019
23.08.2019
22.08.2019
21.08.2019
20.08.2019
19.08.2019
18.08.2019
17.08.2019
17.08.2019
16.08.2019
15.08.2019
14.08.2019
13.08.2019
12.08.2019
11.08.2019
10.08.2019
9.08.2019
7.08.2019
6.08.2019
5.08.2019
3.08.2019
31.07.2019
30.07.2019
28.07.2019
20.07.2019
19.07.2019
17.07.2019
16.07.2019
15.07.2019
13.07.2019
9.07.2019
8.07.2019
5.07.2019
1.07.2019
28.06.2019
27.06.2019
23.06.2019
22.06.2019
20.06.2019
19.06.2019
17.06.2019
15.06.2019
11.06.2019
9.06.2019
8.06.2019
7.06.2019
5.06.2019
4.06.2019
3.06.2019
2.06.2019
1.06.2019
31.05.2019
30.05.2019
24.05.2019
23.05.2019
22.05.2019
21.05.2019
20.05.2019
19.05.2019
18.05.2019
17.05.2019
16.05.2019
15.05.2019
12.05.2019
11.05.2019
10.05.2019
9.05.2019
8.05.2019
7.05.2019
6.05.2019
5.05.2019
4.05.2019
01.05.2019
30.04.2019
29.04.2019
26.04.2019
25.04.2019
24.04.2019
23.04.2019
22.04.2019
21.04.2019
20.04.2019
19.04.2019
18.04.2019
17.04.2019
16.04.2019
15.04.2019
14.04.2019
13.04.2019
12.04.2019
11.04.2019
10.04.2019
9.04.2019
7.04.2019
6.04.2019
5.04.2019
4.04.2019
3.04.2019
31.03.2019
29.03.2019
28.03.2019
27.03.2019
26.03.2019
25.03.2019
22.03.2019
20.03.2019
19.03.2019
18.03.2019
17.03.2019
16.03.2019
13.03.2019
11.03.2019
10.03.2019
8.03.2019
7.03.2019
6.03.2019
5.03.2019
4.03.2019
3.03.2019
02.03.2019
28.02.2019
27.02.2019
26.02.2019
25.02.2019
24.02.2019
23.02.2019
22.02.2019
21.02.2019
20.02.2019
19.02.2019
18.02.2019
17.02.2019
16.02.2019
15.02.2019
14.02.2019
13.02.2019
12.02.2019
10.02.2019
9.02.2019
8.02.2019
7.02.2019
6.02.2019
5.02.3019
4.02.2019
3.3.2019
2.2.2019
1.02.2019
31.01.2019
30.01.2019
29.01.2019
28.01.2018
27.01.2018
26.01.2019
25.01.2019
24.01.2019
23.01.2019
21.01.2019
20.01.2019
19.01.2019
11.01.2019
9.01.2019
8.01.2019
7.01.2019
6.01.2019
5.01.2019
3.01.2019
28.12.2018
25.12.2018
23.12.2018
22.12.2018
21.12.2018
20.12.2018
19.12.2018
18.12.2018
17.12.2018
16.12.2018
14.12.2018
13.12.2018
NEW Geometry Object and CNC Object architecture (3rd attempt) which allow multiple tools for one geometry
12.12.2018
11.12.2018
10.12.2018
9.12.2018
5.12.2018
4.12.2018
3.12.2018
2.12.2018
1.12.2018
30.11.2018
29.11.2018
28.11.2018
27.11.2018
25.11.2018
24.11.2018
21.11.2018
19.11.2018
18.11.2018
17.11.2018
12.11.2018
9.11.2018
30.10.2018
29.10.2018
28.10.2018
27.10.2018
26.10.2018
25.10.2018
20.10.2018
19.10.2018
18.10.2018
17.10.2018
16.10.2018
15.10.2018
13.10.2018
12.10.2018
10.10.2018
9.10.2018
8.10.2018
7.10.2018
6.10.2018
5.10.2018
4.10.2018
2.10.2018
1.10.2018
Excellon Editor: finished Copy Drill action
fixed issue: when an object is selected before entering the Editor mode, now the selecting shape is deleted before entry in the Editor (be it Geometry or Excellon).
fixed a few glitches regarding the units change
when an object is deselected on the Plot Area, the notebook will switch to Project Tab
changed the selection behavior for the dragging rectangle selection box in Editor (Geometry, Excellon): by dragging a selection box and selecting is cumulative: it just adds. To remove from selection press key Ctrl (or Shift depending of the setting in the Preferences) and drag the rectangle across the objects you want to deselect.
29.09.2018
28.09.2018
27.09.2018
26.09.2018
changed names in classes, functions to prepare for the Excellon editor
fixed bugs in Paint All function
fixed a bug in ParseSVG module in parse_svg_transform(), related to 'scale'
moved all the Editor menu/toolbar creation to FlatCAMUI where they belong
fixed a Gerber parse number issue when Gerber zeros are TZ (keep trailing zeros)
changed the way of how the solid_geometry for Excellon files is stored and plotted. Before everything was put in the same "container". Now, the geometries of drills and slots are organized into dictionaries having as keys the tool diameters and as values list of Shapely objects (polygons)
fix for Excellon plotting for newly created empty Excellon Object
fixed geometry.bounds() in camlib to work with the new format of the Excellon geometry (list of dicts)
24.09.2018
23.09.2018
22.09.2018
21.09.2018
19.09.2018
optimized loading FlatCAM project by double clicking on project file; there is no need to clean up everything by using the function not Thread Safe: on_file_new() because there is nothing to clean since FlatCAM just started.
added a workspace delimitation with sizes A3, A4 and landscape or portrait format
The Workspace checkbox in Preferences GUI is doing toggle on the workspace
made the workspace app default state = False
made the workspace to resize when units are changed
disabled automatic defaults save (might create SSD wear)
added an automatic defaults save on FlatCAM application close
made the draw method for the Workspace lines 'agg' so the quality of the FC objects will not be affected
added Area constrain to the Panelization Tool: if the resulting area is too big to fit within constrains, the number of columns and/or rows will be reduced to the maximum that still fits is.
removed the Flip command from Panelization Tools because Flipping (Mirroring) should be done properly with the Transform Tool or using the provided shortcut keys.
made Font parsing threaded so the application will not wait for the font parsing to complete therefore the app start is faster
17.09.2018
15.09.2018
14.09.2018
12.09.2018
09.09.2018
28.08.2018
27.08.2018
26.08.2018
23.08.2018
21.08.2018
17.07.2018
03.07.2018
27.06.2018
25.06.2018
22.06.2018
solved a small bug when using the 'C' key to copy name of the selected object to clipboard
fixed millholes() function and isolate() so now it works even when the tool diameter is the same as the hole diameter.
Actually if the passed value to the buffer() function is zero, I artificially add a value of 0.0000001 (FlatCAM has a precision of 6 decimals so I use a tenth of that value as a pseudo "zero") because the value has to be positive. This may have solved for some use cases the user complaints that on clearing the areas of copper there is still copper leftovers.
changed color of the grid from 'gray' to 'dimgray'
the selection shape is deleted when the object is deleted
the plot area is now in a TAB.
solved bug that allowed middle button click to create selection
fixed issue with main window geometry restore (hopefully).
made view toolbar to be hidden by default as it is not really needed (we have the functions in menu, zoom is done with mouse wheel, and there is also the canvas context menu that holds the functionality)
remade the GUIElements.FCInput() and made a GUIElements.FCTab()
on visibility plot toogle the selection shape is deleted
made sure that on panning in Geometry editor, the context menu is not displayed
disabled App shortcut keys on entry in Geometry Editor so only the local shortcut keys are working
deleted metric units in canvas context menu
added protection so object deletion can't be done until Geometry Editor session is finished. Solved bug when the shapes on Geometry Editor were not transfered to the New_geometry object yet and the New_Geometry object is deleted. In this case the drawn shapes are left in a intermediary state on canvas.
added selection shape drawing in Geometry Editor preserving the current behavior: click to select, click on canvas clear selection, CTRL+click add to selection new shape but remove from selection if already selected. Drag LMB from left to right select enclosed shapes, drag LMB from right to left select touching shapes. Now the selection is made based on
added info message to be displayed in infobar, when a object is renamed
20.06.2018
18.06.2018 Update 1
18.06.2018
15.06.2018
14.06.2018
9.06.2018
6.06.2018 Update
6.06.2018
4.06.2018
3.06.2018
Move tool is moved to Menu -> Edit under the name Move Object
solved some internal bugs (info command was creating an non-fatal error in PyQt, regarding using QPixMaps outside GUI thread
reworked camlib number parsing (still had some bugs)
working in porting the application from usage of PyQt4 to PyQt4
added TclCommands save_sys and list_sys. save_sys is saving all the system default parameters and list_sys is listing them by the first letters. listsys with no arguments will list all the system parameters.
29.05.2018
28.05.2018
27.04.2018
added drill count column in Excellon Tool Table which displays the total number of drills for each tool
added a new menu entry in Menu -> EDIT named "Join Excellon". It will merge a selection of Excellon files into a new Excellon file
added menu stubs for other Excellon based actions
solved bug that was not possible to generate film from joined geometry
improved toggle active/inactive of the object through SPACE key. Now the command works not only for one object but also for a selection
26.05.2018
24.05.2015
23.05.2018
Added key shortcut's in FlatCAMApp and in Geometry Editor.
FlatCAMApp shortcut list: 1 Zoom Fit 2 Zoom Out 3 Zoom In C Copy Obj_Name E Edit Geometry (if selected) G Grid On/Off M Move Obj
N New Geometry R Rotate S Shell Toggle V View Fit X Flip on X_axis Y Flip on Y_axis ~ Show Shortcut List
Space: En(Dis)able Obj Plot CTRL+A Select All CTRL+C Copy Obj CTRL+E Open Excellon File CTRL+G Open Gerber File CTRL+M Measurement Tool CTRL+O Open Project CTRL+S Save Project As Delete Delete Obj'''
Geometry Editor Key shortcut list: A Add an 'Arc' C Copy Geo Item G Grid Snap On/Off K Corner Snap On/Off M Move Geo Item
N Add an 'Polygon' O Add a 'Circle' P Add a 'Path' R Add an 'Rectangle' S Select Tool Active
~ Show Shortcut List Space: Rotate Geometry Enter: Finish Current Action Escape: Abort Current Action Delete: Delete Obj
22.05.2018
21.05.2018
small GUI modification: on each "New File" command it will switch to the Project Tab regardless on which tab we were.
removed the global shear entries and checkbox as they can be damaging and it will build effect upon effect, which is not good
solved bug in that the Edit -> Shear on X (Y)axis could adjust only in integers. Now the angle can be adjusted in float with 3 decimals.
changed the tile of QInputDialog to a more general one
changed the "follow" Tcl command to the new format
added a new entry in the Menu -> File, to open a Gerber with the follow parameter = True
added a new checkbox in the Gerber Object Selection Tab that when checked it will create a "follow" geometry
added a few lines in Mill Holes Tcl command to check if there are promises and raise an Tcl error if there are any.
started to modify the Export_Svg Tcl command
20.05.2018
"X" key will flip the selected objects on X axis
"Y" key will flip the selected objects on Y axis
"R" key will rotate CW with a 45 degrees step
changed the layout for the top of th Options page. Added a checkbox and entries for parameters for skew command. When the checkbox is checked it will save (and load at the next startup of the program) the option that at each CNCJob generation (be it from Excellon or Geometry) it will perform the Skew command with the parametrs set in the nearby field boxes (Skew X and Skey Y angles). It is useful in case the CNC router is not perfectly alligned between the X and Y axis
added some protection in case the skew command receive a None parameter
BUG solved: made an UGLY (really UGLY) HACK so now, when there is a panel geometry generated from GUI, the project WILL save. I had to create a copy of the generated panel geometry and delete the original panel geometry. This way there is no complain from JSON module about circular reference.
Supplimentary:
19.05.2018
last object that is opened (created) is always automatically selected and the name of the object is automatically copied to clipboard; useful when using the TCL command :)
added new commands in MENU -> EDIT named: "Copy Object" and "Copy Obj as Geom". The first command will duplicate any object (Geometry, Gerber, Excellon). The second command will duplicate the object as a geometry. For example, holes in Excello now are just circles that can be "painted" if one wants it.
added new Tool named ToolFreeformCutout. It does what it says, it will make a board cutout from a "any shape" Gerber or Geometry file
solved bug in the TCL command "drillcncjob" that always used the endz parameter value as the toolchangez parameter value and for the endz value used a default value = 1
added postprocessor name into the TCL command "drillcncjob" parameters
when adding a new geometry the default name is now: "New_Geometry" instead of "New Geometry". TCL commands don't handle the spaces inside the name and require adding quotes.
solved bug in "cncjob" TCL command in which it used multidepth parameter as always True regardless of the argument provided
added a checkbox for Multidepth in the Options Tab -> Application Defaults
18.05.2018
17.05.2018
The ones with upper indicate how many digits are allocated for the units and the ones with lower indicate how many digits from coordinates are alocated for the decimals.
[ Eg: Excellon format 2:4 in INCH excellon_format_upper_in = 2 excellon_format_lower_in = 4 where the first 2 digits are for units and the last 4 digits are decimals so from a number like 235589 we will get a coordinate 23.5589 ]
After each change of those parameters the user will have to press "Save defaults" from File menu in order to propagate the new values, or wait for the autosave to kick in (each 20sec).
Those parameters can be set in the set_sys TCL command.
15.05.2018
added new GUI commands in Options -> Transform object. Added Rotate selection, Flip on X axis of the selection and Flip on Y axis of the selection For the Rotate selection command, negative numbers means rotation CCW and positive numbers means rotation CW.
cleaned up a bit the module imports
worked on the excellon parsing for the case of trailing zeros. If there are more than 6digits in the coordinates, in case that there is no period, now the software will identify the issue and attempt to correct it by dividing the coordinate further by 10 for each additional digit over 6. If the number of digits is less than 6 then the software will multiply by 10 the coordinates
14.05.2018
13.05.2018
Previously:
24.04.2018
Renamed the tools files starting with Tool so they are grouped (in the future they may have their own folder like for TCL Commands)
Commented some shortcut keys and functions for features that are not present anymore or they are planned to be in the future but unfinished (like buffer tool, paint tool)
minor corrections regarding PEP8 (Pycharm complains about the m)
solved bug in TclCommandsSetSys.py Everytime that the command was executed it complain about the parameter not being in the list (something like this). There was a missing “else:”
when using the command “set_sys excellon_zeros” with parameter in lower case (either ‘l’ or ‘t’) now it is always written in the defaults file as capital letter
solved a bug introduced by me: when apertures macros were detected in Excellon file, FlatCam will complain about missing dictionary key “size”. Now it first check if the aperture is a macro and perform the check for zero value only for apertures with “size” key
solved a bug that didn't allowed FC to detect if Excellon file has leading zeros or trailing zeros
solved a bug that FC was searching for char ‘%’ that signal end of Excellon header even in commented lines (latest versions of Eagle end the commented line with a ‘%’)
============================================
This fork features:
============================================
Previously added features by Dennis