flatcam/README.md

75 KiB
Raw Blame History

FlatCAM: 2D Computer-Aided PCB Manufacturing

(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.

=================================================

23.01.2019

  • added a new postprocessor file named 'line_xyz' which have x, y, z values on the same GCode line
  • fixed calculation of total path for Excellon Gcode file
  • modified the way FlatCAM preferences are saved. Now they can be saved as new files with .FlatConfig extension by the user and shared.

21.01.2019

  • changed some tooltips
  • added tooltips in Excellon tool table headers
  • in Excellon Tool Table the columns are now only selectable by clicking on the header (sorting is done automatically)
  • if CNCJob from Excellon then hide the CNC tools table in CNCJob Object

20.01.2019

  • fixed the HPGL code geometry rendering when travel
  • fixed the message box layout when asking to save the current work
  • made sure that whenever the HPGL postprocessor is selected the Toolchange is always ON and the MultiDepth is OFF
  • the HPGL postprocessor entry is not allowed in Excellon Object postprocessor selection combobox as it is only applicable for Geometry
  • when saving HPGL code it will be saved as a file with extension .plt
  • the units mentioned in HPGL format are only METRIC therefore if FlatCAM units are in INCH they will be transform to METRIC
  • the minimum unit in HPGL is 0.025mm therefore the coordinates are rounded to a multiple of 0.025mm
  • removed the raise statement in do_worker_task() function as this is fatal in conjunction with PyQt5
  • added a try - except clause for the situations when for a font can't be determined the family and name
  • moved font parsing to the Geometry Editor: it is done everytime the Text tool is invoked
  • made sure that the HPGL postprocessor is not populated in the Excellon postprocessors in Preferences as it make no sense (HPGL is useful only for Geometries)

19.01.2019

  • added initial implementation of HPGL postprocessor
  • fixed display HPGL code geometry on canvas

11.01.2019

  • added a status message for font parsing

9.01.2019

  • added a fix to allow creating of Excellon geometry even when there are points with no tools by skipping those points and warning the user about this in a Tcl message
  • added a message box asking users if they want to save the project in case that either New Project menu entry is clicked or if Exit menu entry is clicked or if the app is closed from the close button. The message box will be showed only if there are objects in the collection.
  • modified the first line in the Gcode header to show the FlatCAM version and version_date

8.01.2019

  • added checkboxes in Preferences -> General -> Global Preferences to switch on/off version check at application startup and also to control if the app will send anonymous statistics about FlatCAM usage to help improve FlatCAM

7.01.2019

  • added tooltips in Edit->Convert menu
  • fixed cutting from copper features when doing Gerber isolation with multiple passes

6.01.2019

  • fixed the Marlin postprocessor detection in GCode header
  • the version date in GCode header is now the one set in FlatCAMApp.App.version_date
  • fixed bug in postprocessor files: number of drills is now calculated only for the Excellon objects in toolchange function (only Excellon objects have drills)

5.01.2019

  • fixed cncjob TclCommand - it used the default values for parameters
  • fixed the layout in ToolTransform
  • fixed the initial text in the ToolShell
  • reactivated the version check in case the release is not BETA; FlatCAMApp.App has now a beta object that when set True the application will show in the Title and help-> About that is Beta (and it disable version checking)
  • added a new name (mine: for good and/or bad) to the contributors list
  • fixed the Join function to work on Gerber and Excellon, Gerber and Gerber, Excellon and Excelon combination of objects. The merged property is the solid_geometry and the result is a FlatCAMGeometry object.

3.01.2019

  • initial merge into FlatCAM regular

28.12.2018

  • changed the workspace drawing from 'gl' to 'agg'. 'gl' has better performance but it messes with the overlapping graphics
  • removed the initial obj.build_ui() in App.editor2object()

25.12.2018

  • fixed bugs in Excellon Editor due of PyQt5 port
  • fixed bug when loading Gerber with follow
  • fixed bug that when a Gerber was loaded with -follow parameter it could not be isolated external and full
  • changed multiple status bar messages
  • changed some assertions to (status error message + return) combo
  • fixed issues in 32bit installers
  • added protection against using Excellon joining on different kind of objects
  • fixed bug in ToolCutout where the Rectangular Cutout used the Type of Gaps from Freeform Cutout
  • fixed bug that didn't allowed saving SVG file from a Gerber file
  • modified setup_ubuntu.sh file for PyQt5 packages

23.12.2018

  • added move (as in Tool Move) capability for CNCJob object and the GCode is updated on each move --> finished both for Gcode loaded and for CNCJob generated in the app
  • fixed some errors related to DialogOpen widget that I've missed in PyQt5 porting
  • added a bounds() method for CNCJob class in camlib (perhaps overdone as it worked well with the one inherited)
  • small changes in Paint Tool - the rest machining is working only partially
  • added more columns in CNCjob Tool Table showing more info about the present tools
  • make the columns in CNCJob Tool Table not editable as it has no sense

22.12.2018

  • fixed issues in Transform Tool regarding the message boxes
  • fixed more error in Double Sided Tool and added some more information's in ToolTips
  • added more information's in CutOut Tool ToolTips
  • updated the tooltips in amost all FlatCAM tools; in Tool Tables added column header ToolTips
  • fixed NCC rest machining in NCC Tool; added status message and stop object creation if there is no geometry on any tool
  • fixed version number: now it will made of a number in format main_version.secondary_version/working_version
  • modified the makefile for windows builds to accommodate both 32bit and 64bit executable generation

21.12.2018

  • added shortcut "SHIFT + W" for workspace toggle
  • updated the list of shortcuts
  • forbid editing for the MultiGeo type of Geometry because the Geometry Editor is not prepared for this
  • finished a "sort" of rest-machining for Non Copper Clearing Tool but it's time consuming operation
  • reworked the NCC Tool as it was fundamental wrong - still has issues on the rest machining
  • added a parameter reset for each run of Paint Tool and NCC Tool

20.12.2018

  • porting application to PyQt5
  • adjusted the level of many status bar messages
  • created new bounds() methods for Excellon and Gerber objects as the one inherited from Geometry failed in conjunction with PyQt5
  • fixed some small bugs where a string was divided by a float finally casting the result to an integer
  • removed the 'raise' conditions everywhere I could and make protections against loading files in the wrong place
  • fixed a "PyCharm stupid paste on the previous tab level even after one free line " in Excellon.bounds()
  • in Geometry object fixed error in tool_delete regarding deletion while iterating a dict
  • started to rework the NCC Tool to generate one file only
  • in Geometry Tool Table added checkboxes for individual plot of tools in case of MultiGeo Geometry
  • rework of NCC Tool UI
  • added a automatic selector: if the system is 32bit the OR-tools imports are not done and the OR-tools drill path optimizations are replaced by a default Travelling Salesman drill path optimization
  • created a Win32 make file to generate a Win32 executable
  • disabled the Plot column in Geometry Tool Table when the geometry is SingleGeo as it is not needed
  • solved a issue when doing isolation, if the solid_geometry is not a list will make it a list
  • added tooltips in the Geometry Tool Table headers explaining each column
  • added a new Tcl Command: clear. It clears the Tcl Shell of all text and restore it to the original state
  • fixed Properties Tool area calculation; added status bar messages if there is no object selected show an error and successful showing properties is confirmed in status bar
  • when Preferences are saved, now the default values are instantly propagated within the application
  • when a geometry is MultiGeo and all the tools are deleted, it will have no geometry at all therefore all that it's plotted on canvas that used to belong to it has to be deleted and because now it is an empty object we demote it to SingleGeo so it can be edited

19.12.2018

  • fixed SVG_export for MultiGeo Geometries
  • fixed DXF_export for MultiGeo Geometries
  • fixed SingleGeo to MultiGeo conversion plotting bug

18.12.2018

  • small changes in FlatCAMGeometry.plot()
  • updated the FlatCAMGeometry.merge() function and the Join Geometry feature to accommodate the different types of geometries: singlegeo and multigeo type
  • added Conversion submenu in Edit where I moved the Join features and added the Convert from MultiGeo to SingleGeo type and the reverse
  • added Copy Tool (on a selection of tools) feature in Geometry Object UI
  • fixed the bounds() method for the MultiGeo geometry object so the canvas selection is working and also the Properties Tool
  • fixed Move Tool to support MultiGeo geometry objects moving
  • added tool edit in Geometry Object Tool Table
  • added Tool Table context menu in Geometry Object and in Paint Tool
  • modified some Status Bar messages in Geometry Object

17.12.2018

  • added support for multiple solid_geometry in a geometry object; each tool can now have it's own geometry. Plot, project save/load are OK.
  • added support for single GCode file generation from multi-tool PaintTool job
  • added protection for results of Paint Tool job that do not have geometry at all. An Error will be issued. It can happen if the combination of Paint parameters is not good enough
  • solved a small bug that didn't allow the Paint Job to be done with lines when the results were geometries not iterable
  • added protection for the case when trying to run the cncjob Tcl Command on a Geometry object that do not have solid geometry or one that is multi-tool
  • Paint Tool Table: now it is possible to edit a tool to a new diameter and then edit another tool to the former diameter of the first edited tool
  • added a new type of warning, [warning_notcl]
  • fixed conflict with "space" keyboard shortcut for CNC job

16.12.2018

  • redone the Options menu; removed the Transfer Options as they were not used
  • deleted some folders in the project structure that were never used
  • Paint polygon Single works only for left mouse click allowing mouse panning
  • added ability to print errors in status bar without raising Tcl Shell
  • fixed small bug: when doing interiors isolation on a Gerber that don't allow it, no object is created now and an error in the status bar is issued
  • fixed bug in Paint All for Geometry made from exteriors Gerber isolation
  • fixed the join geometry: when the geometries has different tools the join will fail with a status bar message (as it should). Allow joining of geometries that have no tool. // Reverted on 18.12.2018
  • changed the error messages that are simple to the kind that do not open the TCl shell
  • fixed some issues in Geometry Object
  • Paint Tool - reworked the UI and made it compatible with the Geometry Object UI
  • Paint Tool - tool edit functional
  • added Clear action in the Context menu of the TCl Shell

14.12.2018

  • fixed typo in setup_ubuntu.sh
  • minor changes in Excellon Object UI
  • added Tool Table in Paint Tool
  • now in Paint Tool and Non Copper Clearing Tool a selection of tools can be deleted (not only one by one)
  • minor GUI changes (added/corrected tooltips)
  • optimized vispy startup time from about >6 sec to ~3 seconds
  • removed vispy text collection starting in plotcanvas as it did nothing // RESTORED 18.12.2018 as it messed the graphical presentation
  • fixed cncjob TclCommand for the new type of Geometry
  • make sure that when using the TclCommands, the object names are case insensitive
  • updated the TCL Shell auto-complete function; now it will index also the names of objects created or loaded in the application
  • on object removal the name is removed from the Shell auto-complete model

13.12.2018

NEW Geometry Object and CNC Object architecture (3rd attempt) which allow multiple tools for one geometry

  • fixed issue with cumulative G-code after successive delete/create of a CNCJob on the same geometry (some references were kept after deletion of CNCJob object which kept the deleted tools data and added it to a new one)
  • fixed plot and export G-code in new format
  • fixed project save/load in the new format for geometry
  • added new feature in CNCJob Object UI: since we may have multiple tools per CNCJob object due of having multiple tool in Geometry Object, now there is a Tool Table in CNC Object UI and each tool GCode can be enabled or disabled

12.12.2018

  • Geometry Tool Table: when the Offset type is 'custom' each tool it's storing the value and it is updated on UI when that tool is selected in UI table
  • Geometry Tool Table: fixed tool offset conversion when the Offset in Tool Table UI is set to Custom

11.12.2018

  • cleaned up the generatecncjob() function in FlatCAMObj
  • created a new function for generating cncjob out of multitool geometry, mtool_generate_cncjob()
  • cleaned up the generate_from_geometry_2() method in camlib
  • Geometry Tool Table: new tool added copy all the form fields (data) from the last tool
  • finished work on generation of a single CNC Job file (therefore a single GCODE file) even for multiple tools in Geo Tool Table
  • GCode header is added only on saving the file therefore the time generation will be reflected in the file
  • modified postprocessors to accommodate the new CNC Job file with multiple tools
  • modified postprocessors so the last X,Y move will be to the toolchange X,Y pos (set in Preferences)
  • save_project and load_project now work with the new type of multitool geometry and cncjob objects

10.12.2018

  • added new feature in Geometry Tool Table: if the Offset type in tool table is 'Offset' then a new entry is unhidden and the user can use custom offset
  • Geometry Tool Table: fixed add new tool with diameter with many decimals
  • Geometry Tool Table: when editing the tip dia or tip angle for the V Shape tool, the CutZ is automatically calculated

9.12.2018

  • new Geometry Tool Table has functional unit conversion
  • when entering a float number in Spindle Speed now there is no error and only the integer part is used, the decimals are discarded
  • finished the Geometry Tool Table in the form that generates only multiple files
  • if tool type is V-Shape ('V') then the Cut Z entry is disabled and new 'Tip Dia' and 'Tip Angle' fields are showed. The values entered will calculate the Cut Z parameter

5.12.2018

  • remade the Geometry Tool Table, before this change each tool could not store it's own set of data in case of multiple tools with same diameter
  • added a new column in Geo Tool Table where to specify which type of tool to use: C for circular, B for Ball and V for V-shape

4.12.2018

  • new geometry/excellon object name is now only "new_g"/"new_e" as the type is clear from the category is into (and the associated icon)
  • always autoselect the first tool in the Geometry Tool table
  • issue error message if the user is trying to generate CNCJob without a tool selected in Geometry Tool Table
  • add the whole data from Geometry Object GUI as dict in the geometry tool dict so each tool (file) will have it's own set of data

3.12.2018

  • Geometry Tool table: delete multiple tools with same diameter = DONE
  • Geometry Tool table: possibility to cut a path inside or outside or on path = DONE
  • Geometry Tool table: fixed situation when user tries to add a tool but there is no tool diameter entered
  • if a geometry is a closed shape then create a Polygon out of it
  • some fixes in Non Copper Clearing Tool
  • Geometry Tool table: added option to delete_tool function for delete_all
  • Geometry Tool table: added ability to delete even the last tool in tool_table and added an warning if the user try to generate a CNC Job without a tool in tool table
  • if a geometry is painted inside the Geometry Editor then it will store the tool diameter used for this painting. Only one tool cn be stored (the last one) so if multiple paintings are done with different tools in the same geometry it will store only the last used tool.
  • if multiple geometries have different tool diameters associated (contain a paint geometry) they aren't allowed to be joined and a message is displayed letting the user know

2.12.2018

  • started to work on a geometry Tool Table
  • renamed FlatCAMShell as ToolShell and moved it (and termwidget) to flatcamTools folder
  • cleaned up the ToolShell by removing the termwidget separate file and added those classes to ToolShell
  • added autocomplete for TCL Shell - the autocomplete key is 'TAB'
  • covered some possible exceptions in rotate/skew/mirror functions
  • Geometry Tool table: add/delete tools = DONE
  • Geometry Tool table: add multiple tools with same diameter = DONE

1.12.2018

  • fixed Gerber parser so now the Gerber regions that have D02 operation code just before the end of the region will be processed correctly. Autotrax Dex Gerbers are now loaded
  • fixed an issue with temporary geo storage "geo" being referenced before assignment
  • moved all FlatCAM Tools into a single directory

30.11.2018

  • remade the CutOut Tool. I've put together the former Freeform Cutout tool and the Cutout Object fount in Gerber Object GUI and left only a link in the Gerber Object GUI. This tidy the GUI a bit.
  • created a Paint Tool and replaced the Paint Area section in Geometry Object GUI with a link to this tool.
  • fixed bug in former Paint Area and in the new Paint Tool that made the paint method not to be saved in App preferences
  • solved a bug in Gerber parser: in case that an operation code D? was encountered alone it was not remembered - fixed
  • fixed bug related to the newly entered toolchange feature for Geometry: it was trying to evaluate toolchange_z as a comma separated value like for toolchange x,y
  • fixed bug in scaling units in CNC Job which made the unit change between INCH and MM not possible if a CNC Job was present in the project objects

29.11.2018

  • added checks for using a Z Cut with positive value. The Z Cut parameter has to be negative so if the app will detect a positive value it will automatically convert it to negative
  • started to implement rest-machining for Non Copper clearing Tool - for now the results are not great
  • added Toolchange X,Y position parameters and modified the default and manual_toolchange postprocessor file to use them For now they are used only for Excellon objects who do have toolchange events
  • added Toolchange event selection for Geometry objects; for now it is as before, single tool on each file
  • remade the GUI for objects and in Preferences to have uniformity
  • fixed bug: after editing a newly created excellon/geometry object the object UI used to not keep the original settings
  • fixed some bugs in Tool Add feature of the new Non Copper Clear Tool
  • added some messages in the Non Copper Clear Tool
  • added parameters for coordinates no of decimals and for feedrate no of decimals used in the resulting GCODE. They are in EDIT -> Preferences -> CNC Job Options
  • modified the postprocessors to use the "decimals" parameters

28.11.2018

  • added different methods of copper clearing (standard, seed, line_based) and "connect", "contour" options found in Paint function
  • remake of the non-copper clearing tool as a separate tool
  • modified the "About" menu entry to mention the main contributors to FlatCAM 3000
  • modified Marlin postprocessor according to modifications made by @redbull0174 user from FlatCAM.org forum
  • modified Move Tool so it will detect if there is no object to move and issue a message

27.11.2018

  • fixed bug in isolation with multiple passes
  • cosmetic changes in Buffer and Paint tool from Geometry Editor
  • changed the way selection box is working in Geometry Editor; now cumulative selection is done with modifier key (SHIFT or CONTROL) - before it was done by default
  • changed the default value for CNCJob tooldia to 1mm

25.11.2018

  • each Tool change the name of the Tools tab to it's name
  • all open objects are no longer autoselected upon creation. Only on new Geometry/Excellon object creation it will be autoselected

24.11.2018

  • restored the selection method in Geometry Editor to the original one found in FlatCAM 8.5
  • minor changes in Clear Copper function
  • minor changes in some postprocessors
  • change Join Geometry menu entry to Join Geo/Gerber
  • added menu entry for Toggle Axis in Menu -> View
  • added menu entry for Toggle Workspace in Menu -> View
  • added Bounding box area to the Properties (when metric units, in cm2)
  • non-copper clearing function optimization
  • fixed Z_toolchange value in the GCODE header

21.11.2018

  • not very precise jump to location function
  • added shortcut key for jump to coordinates (J) and for Tool Transform (T)
  • some work in shortcut key

19.11.2018

  • fixed issue with nested comment in postprocessors
  • fixed issue in Paint All; reverted changes

18.11.2018

  • renamed FlatCAM 2018 to FlatCAM 3000
  • added new entries in the Help menu; one will show shortcut list and the other will start a YouTube webpage with a playlist where I will publish future training videos for this version of FlatCAM
  • if a Gerber region has issues the file will be loaded bypassing the error but there will be a TCL message letting the user know that there are parser errors.

17.11.2018

  • added Excellon parser support for units defined outside header

12.11.2018

  • fixed bug in Paint Single Polygon
  • added spindle speed in laser postprocessor
  • added Z start move parameter. It controls the height at which the tool travel on the fist move in the job. Leave it blank if you don't need it.

9.11.2018

  • fixed a reported bug generated by a typo for feedrate_z object in camlib.py. Because of that, the project could not be saved.
  • fixed a G01 usage (should be G1) in Marlin postprocessor.
  • changed the position of the Tool Dia entry in the Object UI and in FlatCAMGUI
  • fixed issues in the installer

30.10.2018

  • fixed a bug in Freeform Cutout Tool - it was missing a change in the name of an object

29.10.2018

  • added Excellon export menu entry and functionality that can export in fixed format 2:4 LZ INCH (format that Altium can load and it is a more generic format). It will be usefull for those who need FlatCAM to only convert the Excellon to a more useful format and visualize Gerbers. The other Excellon Export menu entry is exporting in units either Metric or INCH depending on the current units in FlatCAM, but it will always use the decimal format which may not be loaded in all cases.
  • disabled the Selected Tab while in Geometry Editor; the user is not supposed to have access to those functions while in Geometry Editor
  • added an menu entry in Menu -> File -> Recent Files named Clear Recent files which does exactly that
  • fixed issue: when a New Project is created but there is a Geometry still in Geometry Editor (or Excellon Editor) not saved, now that geometry is deleted
  • fixed problem when doing Clear Copper with Cut over 1st point option active. When the shape is not closed then it may cut over copper features. Originally the feature was meant to be used only with isolation geometry which is closed. Fixed

28.10.2018

  • fixed Excellon Editor shortcut messages; also fixed differences in messages between usage by shortcuts and usage by menu toolbar actions
  • fixed Excellon Editor bug: it was triggering exceptions when the user selected a tool in tooltable and then tried to add a drill (or array) by clicking on canvas Clicking on canvas by default clear all the used tools, therefore the action could not be done. Fixed.
  • fixed bug Excellon Editor: when all the drills from a tool are resized, after resize they can't be selected.
  • Excellon Editor: added ability to delete multiple tools at once by doing multiple selection on the tooltable
  • Excellon Editor: if there are no more drills to a tool after doing drills resize then delete that tool from the tooltable
  • Excellon Editor: always select the last tool added to the tooltable
  • Excellon Editor: added a small canvas context menu for Excellon Editor

27.10.2018

  • added a Paint tool toolbar icon and added shortcut key 'I' for Paint Tool
  • fixed unreliable multiple selection in Geometry Editor; some clicks were not registered
  • added utility geometry for Add Drill Array in Excellon Editor
  • fixed bug Excellon Editor: drills in drill array start now from the array start point (x, y); previously array start point was used only for calculating the radius
  • fixed bug Excellon Editor: Measurement Tool was not acting correctly in Exc Editor regarding connect/disconnect of events
  • in Excellon Editor every time a tool is clicked (except Select which is the default) the focus will return to Selected tab
  • added protection in Excellon Editor: if there is no tool/drill selected no operation over drills can be performed and a status bar message will be displayed
  • Excellon Editor: added relevant messages for all actions
  • fixed bug Excellon Editor: multiple selection with key modifier pressed (CTRL/SHIFT) either by simple click or through selection box is now working
  • fixed dwell parameter for Excellon in Preferences to be default Off

26.10.2018

  • when objects are disabled they can't be selected
  • added Feedrate_z (Plunge) parameter for Geometry Object
  • fixed bug in units convert for Geometry Tab; added some missing parameters to the conversion list
  • fixed bug in isolation Geometry when the isolated Gerber was a single Polygon
  • updated the Paint function in Geometry Editor

25.10.2018

  • added a verification on project saving to make sure that the project was saved successfully. If not, a message will be displayed in the status bar saying so.

20.10.2018

  • fixed the SVG import as Gerber. But unfortunately, when there is a ground pour in a imported PCB SVG, the ground pour will be isolated inside instead to be isolated outside like every other feature. That's no way around this. The end result will be thinner features for the ground pour and if one is relying on those thin connections as GND links then it will not work as intended ,they may be broken. Of course one can edit the isolation geometry and delete the isolation for the ground pour.
  • delete selection shapes on double clicking on object as we may not want to have selection shape while Selected tab is active

19.10.2018

  • solved some value update bugs in tool_table in Excellon Editor when editing tools followed by deleting another tool, and then re-adding the just-deleted tool.
  • added support for chaining blocks in DXF Import
  • fixed the DXF arc import
  • added support for a type of Gerber files generated by OrCAD where the Number format is combined with G74 on the same line
  • in Geometry Editor added the possibility for buffer to use different kinds of corners
  • added protection against loading an GCODE file as Excellon through drag & drop on canvas or file open dialog
  • added shortcut key 'B' for buffer operation inside Geometry Editor
  • added shell message in case the Font used in Text Tool in Geometry editor is not supported. Only Regular, Bold, Italic adn BoldItalic are supported as of yet.
  • added shortcut key 'T' for Text Tool inside Geometry Editor
  • added possibility for Drag & Drop on FlatCAM GUI with multiple files at once

18.10.2018

  • fixed DXF arc import in case of extrusion enabled
  • added on Geo Editor Toolbar the button for Buffer Geometry; added the possibility to create exterior and interior buffer
  • fixed a numpy import error

17.10.2018

  • added Spline support and Ellipse (chord) support in DXF Import: chord might have issues (borrowed from the work of Vasilis Vlachoudis, https://github.com/vlachoudis/bCNC)
  • added Block support in DXF Import - no support yet for chained blocks (INSERT in block)
  • support for repasted block insertions

16.10.2018

  • added persistent toolbar view: the enabled toolbars will be active at the next app startup while those that are not enabled will not be enabled at the next app startup. To enable/disable toolbars right click on the toolbar.

15.10.2018

  • DXF Export works now also for Exteriors only and Interiors only geometry generated from Gerber Object
  • when a Geometry is edited, now the interiors and exterior of a Polygon that is part of the Geometry can be selected individually. In practice, if doing full isolation geometry, now both external and internal trace can be selected individually.

13.10.2018

  • solved issue in CNC Code Editor: it appended text to the previous one even if the CNC Code Editor was closed
  • added .GBD Gerber extension to the lists
  • added support for closed polylines/lwpolylines in Import DXF; now PCB patterns found in PDF format can be imported in INKSCAPE and saved as DXF. FlatCAM can import DXF as Gerber and the user now can do isolation on it.

12.10.2018

  • added zoom in, zoom out and zoom fit buttons on the View toolbar
  • fixed bug that on Double Sided Tool when a Excellon Alignment is created does not reset the list of Alignment drills
  • added a message warning the user to add Point coordinates in case the reference used in Double Sided Tool is Point
  • added new feature: DXF Export for Geometry

10.10.2018

  • fixed a small bug in Setup Recent Files
  • small fix in Freeform Cutout Tool regarding objects populating the combo boxes
  • Excellon object name will reflect the number of edits performed on it

9.10.2018

  • In Geometry Editor, now Path and Polygon draw mode can be finished not only with shortcut key Enter but also with right click on canvas
  • fixes regarding of circle linear approximation - final touch
  • fix for interference between Geo Editor and Excellon Editor
  • fixed Cut action in Geometry Editor so it can now be done multiple times on the target geometry without need for saving in between.
  • initial work on DXF import; made the GUI interface and functional structure
  • added import functions for DXF import
  • finished DXF Import (no blocks support, no SPLINE support for now)

8.10.2018

  • completed toggle canvas selection when there is only one object under click position for the case when clicking the object is done while other object is already selected.
  • added static utility geometry just upon activating an Editor function
  • changed the way the canvas is showed on FlatCAM startup

7.10.2018

  • solved mouse click not setting relative measurement origin to zero
  • solved bug that always added one drill when copying a selection of drills in the EXCELLON EDITOR
  • solved bug that the number of copied drills in Excellon Editor was not updated in the tool table
  • work in the Excellon Editor: found useful to change the diameter of one tool to another already in the list; could help for all those tools that are a fraction difference that comes from imperial to mm (or reverse) conversion, to reduce the tool changes - Done
  • in Excellon Editor, always auto-select the last tool added
  • in Excellon Editor fixed shortcuts for drill add and drill_array add: they were reversed. Now key 'A' is for array add and key 'D' is for drill add
  • solved a small bug in Excellon export: even when there were no slots in the file, it always added the tools list that acted as unnecessary toolchanges
  • after Move action, all objects are deselected

6.10.2018

  • Added basic support for SVG text in SVG import. Will not work if some letters in a word have different style (italic bold or both)
  • added toggle selection to the canvas selection if there is only one object under the click position
  • added support for "repeat" command in Excellon file
  • added support for Allegro Gerber and Excellon files
  • Python 3.7 is used again; solved bug where the activity icon was not playing when FlatCAM active

5.10.2018

  • fixed undesired setting focus to Project Tab when doing the SHIFT + LMB combo (to capture the click coordinates)

4.10.2018

  • Excellon Editor: finished Add Drill Array - Linear type action
  • Excellon Editor: finished Add Drill Array - Circular type action
  • detected bug in shortcuts: Fixed
  • Excellon Editor: added constrain for adding circular array, if the number of drills multiplied by angle is more than 360 the app will return with an message
  • solved sorting bug in the Excellon Editor tool table
  • solved bug in Menu -> Edit -> Sort Origin ; the selection box was not updated after offset
  • added Excellon Export in Menu -> File -> Export -> Export Excellon
  • added support to save the slots in the Excellon file in case there were some in the original file
  • fixed Double Sided Tool for the case of using the box as mirroring reference.

2.10.2018

  • made slots persistent after edit
  • bug detected: in Excellon Editor if new tool added diameter is bigger than 10 it mess things up: SOLVED
  • Excellon Editor: finished Drill Resize action
  • after an object is deleted from the Project list, if the current tab in notebook is not Project, always focus in the Project Tab (deletion can be done by shortcut key also)
  • changed the initial view to include the possible enabled workspace guides

1.10.2018

  • added GUI for Excellon Editor in the Tool Tab

  • Excellon Editor: created and populated the tool list

  • Excellon Editor: added possibility to add new tools in the list

  • Excellon Editor: added possibility to delete a tool (and the drills that it contain) by selecting a row in the tool table and clicking the Delete Tool button

  • Excellon Editor: added possibility to change the tool diameter in the tool list for existing tool diameters.

  • Excellon Editor: when selecting a drill, it will highlight the tool in the Tool table

  • Excellon Editor: optimized single click selection

  • Excellon Editor: added selection for all drills with same diameter upon tool selection in tool table; fix in tool_edit

  • Excellon Editor: added constrain to selection by single click, it will select if within a certain area around the drill

  • Excellon Editor: finished Add Drill action

  • Excellon Editor: finished Move Drill action

  • 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

  • optimized the combobox item population in Panelization Tool and in Film Tool
  • FlatCAM now remember the last path for saving files not only for opening
  • small fix in GUI
  • work on Excellon Editor. Excellon editor working functions are: loading an Excellon object into Editor, saving an Excellon object from editor to FlatCAM, selecting drills by left click, selection of drills by dragging rectangle, deletion of drills.
  • fixed Excellon merge
  • added more Gcode details (depthperpass parameter in Gcode header) in postprocessors
  • deleted the Tool informations from header in postprocessors due to Mach3 not liking the lot of square brackets
  • more corrections in postprocessors

28.09.2018

  • added a save_defaults() call on App exit from action on Menu -> File -> Exit
  • solved a small bug in Measurement Tool
  • disabled right mouse click functions when Measurement Tools is active so the user can do panning and find the destination point easily
  • added a new button named "Measure" in Measurement Tool that allow easy access to Measurement Tool from within the tool
  • fixed a bug in Gerber parser that when there was a rectangular aperture used within a region, some artifacts were generated.
  • some more work on Excellon Editor

27.09.2018

  • fixed bug when creating a new project, if a previous object was selected on screen, the selection shape survived the creation of a new project
  • added compatibility with old type of FlatCAM projects
  • reverted modifications to the way that Excellon geometry was stored to the old way.
  • added exceptions for Paint functions so the user can know if something failed.
  • modified confirmation messages to use the color coded messages (error = red, success = green, warning = yellow)
  • restored activity icon

26.09.2018

  • disabled selection of objects in Project Tab when in Editor

  • the Editor Toolbar is hidden in normal mode and it is showed when Editor is activated. I may change this behaviour back.

  • 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

  • added packages in the Requirements and setup_ubuntu.sh. Tested in Ubuntu and it's OK
  • added Replace (All) feature in the CNC Code Editor
  • made CNC Code generation for Excellon to show progress
  • added information about transforms in the object properties (like skew and how much, if it was mirrored and so on)
  • made all the transforms threaded and make them show progress in the progress bar
  • made FlatCAM project saving, threaded.

23.09.2018

  • added support for "header-less" Excellon files. It seems that Mentor PADS does generate such non-standard Excellon files. The user will have to guess: units (IN/MM), type of zero suppression LZ/TZ (leading zeros or trailing zeros are kept) and Excellon number format(digits and decimals). All of those can be adjusted in Menu -> Edit -> Preferences -> Excellon Object -> Excellon format
  • fixed svgparse for Path. Now PCB rasted images can traced in Inkscape or PDF's can be converted and then saved as SVG files which can be imported into FlatCAM. This is a convolute way to convert a PDF to Gerber file.

22.09.2018

  • added Drag & Drop capability. Now the user can drag and drop to FlatCAM GUI interface a file (with the right extension) that can be a FlatCAM project file (.FlatPrj) a Gerber file, an Excellon file, a G-Code file or a SVG file.
  • made the Move Tool command threaded
  • added Image import into FlatCAM

21.09.2018

  • added new information's in the object properties: all used Tool-Table items are included in a new entry in self.options dictionary
  • modified the postprocessor files so they now include information's about how many drills (or slots) are for each tool. The Gcode will have this information displayed on the message from ToolChange.
  • removed some log.debug and add new log.debug especially for moments when some process is finished
  • fixed the utility geometry for Font geometry in Geometry Editor
  • work on selection in Geometry Editor
  • added multiple selection key as a Preference in Menu -> Edit -> Preferences It can be either Shift or Ctrl.
  • fixed bug in Gerber Object -> Copper Clearing.
  • added more comprehensive tooltips in Non-copper Clearing as advice on how to proceed.
  • adjusted make_win32.py file so it will work with Python 3.7 (cx_freeze can't copy OpenGL files, so it has to be done manually)

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

  • fixed Measuring Tool not working when grid is turned OFF
  • fixed Roland MDX20 postprocessor
  • added a .GBR extension in the open_gerber filter
  • added ability to Scale and Offset (for all types of objects) to just press Enter after entering a value in the Entry just like in Tool Transform
  • added capability in Tool Transform to mirror(flip) around a certain Point. The point coordinates can either be entered by hand or they can be captured by left clicking while pressing key "SHIFT" and then clicking the Add button
  • added the .ROL extension when saving Machine Code
  • replaced strings that reference to G-Code from G-Code to CNC Code
  • added capability to open a project by serving the path/project_name.FlatPrj as a parameter to FlatCAM.py

15.09.2018

  • removed dwell line generator and included dwell generation in the postprocessor files
  • added a proposed RML1 Roland_MDX20 postprocessor file.
  • added a limit of 15mm/sec (900mm/min) to the feedrate and to the feedrate_rapid. Anything faster than this will be capped to 900mm/min regardless what is entered in the program GUI. This is because Roland MDX-20 has a mechanical limit of the speed to 15mm/sec (900mm/min in GUI)

14.09.2018

  • remade the Double Sided Tool so it now include mirroring of Excellon and Geometry Objects along Gerber. Made adding points easier by adding buttons to GUI that allow adding the coordinates captured by left mouse click + SHIFT key
  • added a few fixes in code to the other FlatCAM tools regarding reset_fields() function. The issue was present when clicking New Project entry in Menu -> File.
  • FIXED: fix adding/updating bounding box coords for the mirrored objects in Double side Tool.
  • FIXED: fix the bounding box values from within FlatCAM objects, upon units change.
  • fixed issue with running again the constructor of the drawing tools after the tool action was complete, in Geometry Editor
  • fixed issue with Tool tab not closed after Text Input tool is finished.
  • fixed issue with TEXT to GEOMETRY tool, the resulting geometry was not scaled depending of current units
  • fixed case when user is clicking on the canvas to place a Font Geometry without clicking apply button first or the Font Geometry is empty, in Geometry Editor - > Text Input tool
  • reworked Measuring Tool by adding more information's (START, STOP point coordinates) and remade the strings
  • added to Double Sided Tool the ability to use as reference box Excellon and Geometry Objects

12.09.2018

  • fixed Excellon Object class such that Excellon files that have both drills and slots are supported
  • remade the GUI interface for the Excellon Object in a more compact way; added a column with slots numbers (if any) along the drills numbers so now there is only one tool table for drills and slots.
  • remade the GUI in Preferences and removed unwanted stretch that was broken the layout.
  • if for a certain tool, the slots number is zero it will not be displayed
  • reworked Text to Geometry feature to work in Linux and MacOS
  • remade the Text to Geometry so font collection process is done once at app start-up improving the performance

09.09.2018

  • added TEXT ENTRY SUPPORT in Geometry Editor. It will convert strings of True Type Fonts to geometry. The actual dimensions are approximations because font size is in points and not in metric or inch units. For now full support is limited to Windows. In Linux/MacOS only the fonts for which the font name is the same as the font filename are supported. Italic and Bold functions may not work in Linux/MacOS.
  • solved bug: some Drawing menu entries not having connected functions

28.08.2018

  • fixed Gerber parser so now G01 "moving" rectangular aperture is supported.
  • fixed import_svg function; it can import SVG as geometry (solved bug)
  • fixed import_svg function; it can import SVG as Gerber (it did not work previously)
  • added menu entry's for SVG import as Gerber and separated import as Geometry

27.08.2018

  • fixed Gerber parser so now FlatCAM can load Gerber files generated by Mentor Graphics EDA programs.

26.08.2018

  • added awareness for missing coordinates in Gerber parsing. It will try to use the previous coordinates but if there are not any those lines will be ignored and an Warning will be printed in Tcl Shell.
  • fixed TCL commands AlignDrillGrid and DrilCncJob
  • added TCL script file load_and_run support in GUI
  • made the tool_table in Excellon to automatically adjust the table height depending on the number of rows such that all the rows will be displayed.
  • structural changes in the Excellon build_ui()
  • icon changes and menu compress

23.08.2018

  • added Excellon routing support
  • solved a small bug that crippled Excellon slot G85 support when the coordinates are with period.
  • changed the way selection is done in Geometry Editor; now it should work in all cases (although the method used may be computationally intensive, because sometimes you have to click twice to make selection if you do it too fast)

21.08.2018

  • added Excellon slots support when using G85 command for generation of the slots file. Inspired from the work of @mgix. Thanks. Routing format support for slots will follow.
  • minor bug solved: option "Cut over 1st pt" now has same name both in Preferences -> Geometry Options and in Selected tab -> Geomety Object. Solves #3
  • added option to select Climb or Conventional Milling in Gerber Object options Solves #4
  • made "Combine passes" option to be saved as an app preference
  • added Generate Exteriors Geo and Generate Interiors Geo buttons in the Gerber Object properties
  • added configuration for the number of steps used for Gerber circular aperture linear approximation. The option is in Preferences -> Gerber Options
  • added configuration for the number of steps used for Gcode circular aperture linear approximation. The option is in Preferences -> CNCjob Options
  • added configuration for the number of steps used for Geometry circular aperture linear approximation. The option is in Preferences -> Geometry Options. It is used on circles/arcs made in Geometry Editor and for other types of geometries generated in the app.

17.07.2018

  • added the required packages in Requirements.txt file
  • added required packages in setup_ubuntu.sh file
  • added color control over almost all the colors in the application; those settings are in Menu -> Edit -> Preferences -> General Tab
  • added configuration of which mouse button to be used when panning (MMB or RMB)
  • fixed bug with missing 'drillz' parameter in function generate_from_excellon_by_tool() (credits for finding it goes to Stefan Smith https://bitbucket.org/stefan064/)
  • load Factory defaults in Preferences will load the defaults that are used just after first install. Load Defaults option in Preferences will load the User saved Defaults.

03.07.2018

  • fixed bug in rotate function that didn't update the bounding box of the modified object (rotated) due of not emitting the right signal parameter.
  • removed the Options tab from the Notebook (the left area where is located also the Project tab). Replaced it with the Preferences Tab launched with Menu -> Edit -> Preferences
  • when FlatCAM is used under MacOS, multiple selection of shapes in Editor mode is done using SHIFT key instead of CTRL key due of MacOS interpreting CTRL+LMB_click as a RMB click
  • when in Editor, clicking not on a shape, reset the index of selected shapes to zero
  • added a new Tab in the Plot Area named Gcode Editor. It allow the user to edit the Gcode and then Save it or Print it.
  • added a fix so the 'preamble' Gcode is correctly inserted between the comments header and the actual GCODE
  • added Find function in G-Code Editor

27.06.2018

  • the Plot Area tab is changing name to "Editor Area" when the Editor is activated and returns to the "Plot Area" name upon exiting the Editor
  • made the labels shorter in Transform Tool in anticipation of Options Tab removal from Notebook and replacing it with Preferences
  • the Excellon Editor is not finished (not even started yet) so the Plot Area title should stay "Plot Area" not change to "Editor Area" when attempting to edit an Excellon file. Solved.
  • added a header comment block in the generated Gcode with useful information's
  • fixed issue that did not allow the Nightly's to be run in Windows 7 x64. The reason was an outdated DLL file (freetype.dll) used by Vispy python module.

25.06.2018

  • "New" menu entry in Menu -> File is renamed to "New Project"
  • on "New Project" action, all the Tools are reinitialized so the Tools tab will work as expected
  • fixed issue in Film Tool when generating black film
  • fixed Measurement Tool acquiring and releasing the mouse/key events
  • fixed cursor shape is updated on grid_toggle
  • added some infobar messages to show the user when the Editor was activated and when it was closed (control returned to App).
  • added thread usage for Film tool; now the App is no longer blocked on film generation and there is a visual clue that the App is working

22.06.2018

  • added export PNG image functionality and menu entry in Menu -> File -> Export PNG ...

  • added a command to set focus on canvas inside the mouve move event handler; once the mouse is moved the focus is moved to canvas so the shortcuts work immediatly.

  • 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.

  • added shortcut "SHIFT+G" to toggle the axis presence. Useful when one wants to save a PNG file.

  • 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

  • there are two types of mouse drag selection (rectangle selection) If there is a rectangle selection from left to right, the color of the selection rectangle is blue and the selection is "enclosing" - this means that the object to be selected has to be enclosed by the selecting blue rectangle shape. If there is a rectangle selection fro right to left, the color of the selection rectangle is green and the selection is "touching" - this means that it's enough to touch with the selecting green rectangle the object(s) to be selected so they become selected
  • changed the modifier key required to be pressed when LMB is ckicked over canvas in order to copy to clipboard the coordinates of the click, from CTRL to SHIFT. CTRL will be used for multiple selection.
  • change the entry names in the canvas context menu
  • disconnected the app mouse event functions while in geometry editor since the geometry editor has it's own mouse event functions and there was interference between object and geometry items. Exception for the mouse release event so the canvas context menu still work.
  • solved a bug that did not update the obj.options after a geometry object was edited in geometry editor
  • solved a bug in the signal that saved the position and dimensions of the application window.
  • solved a bug in app.on_preferences() that created an error when run in Linux

18.06.2018 Update 1

  • reverted the 'units' parameter change to 'global_units' due of a bug that did not allow saving of the project
  • modified the camlib transform (rotate, mirror, scale etc) functions so now they work with Gerber file loaded with 'follow' parameter

18.06.2018

  • reworked the Properties context menu option to a Tool that displays more informations on the selected object(s)
  • remade the FlatCAM project extension as .FlatPrj
  • rearranged the toolbar menu entries to a more properly order
  • objects can now be selected on canvas, a blue polygon is drawn around when selected
  • reworked the Tool Move so it will work with the new canvas selection
  • reworked the Measurement Tool so it will work with the new canvas selection
  • canvas selection can now be done by dragging left mouse boutton and creating a selection box over the objects
  • when the objects are overlapped on canvas, the mouse click selection works in a circular way, selecting the first, then the second, then ..., then the last and then again the first and so on.
  • double click on a object on canvas will open the Selected Tab
  • each object store the bounding box coordinates in the options dict
  • the bbox coordinates are updated on the obj options when the object is modified by a transform function (rotate, scale etc)

15.06.2018

  • the selection marker when moving is now a semitransparent Polygon with a blue border
  • rectified a small typo in the ToolTip for Excellon Format for Diptrace excellon format; from 4:2 to 5:2
  • corrected an error that cause no Gcode could be saved

14.06.2018

  • more work on the contextual menu
  • added Draw context menu
  • added a new tool that bring together all the transformations, named Transformation Tool (Rotate, Skew, Scale, Offset, Flip)
  • added shorcut key 'Q' which toggle the units between IN and MM
  • remade the Move tool, there is now a selection box to show where the move is done
  • remade the Measurement tool, there is now a line between the start point of measurement and the end point of the measurement.
  • renamed most of the system variables that have a global app effect to global_name where name is the parameter (variable)

9.06.2018

  • reverted to PyQt4. PyQt5 require too much software rewrite
  • added calculators: units_calculator and V-shape Tool calculator
  • solved bug in Join Excellon
  • added right click menu over canvas

6.06.2018 Update

  • fixed bug: G-Code could not be saved
  • fixed bug: double clicking a category in Project Tab made the app to crash
  • remade the bounds() function to work with nested lists of objects as per advice from JP which made the operation less performance taxing.
  • added shortcut Shift+R that is complement to 'R'
  • shorcuts 'R' and 'SHIFT+R' are working now in steps of 90 degrees instead of previous 45 degrees.
  • added filters in the open ... FlatCAM projects are saved automatically as *.flat, the Gerber files have few categories. So the Excellons and G-Code and SVG.

6.06.2018

  • remade the transform functions (rotate, flip, skew) so they are now working for joined objects, too
  • modified the Skew and Rotate comamands: if they are applied over a selection of objects than the origin point will be the center of the biggest bounding box. That allow for perfect sync between the selected objects
  • started to modify the program so the exceptions are handled correctly
  • solved bug where a crash occur when ObjCollection.setData didn't return a bool value
  • work in progress for handling situations when a different file is loaded as another (like loading a Gerber file using Open Excellon commands.
  • added filters on open_gerber and open_excellon Dialogs. There is still the ability to select All Files but this should reduce the cases when the user is trying to oprn a file from a wrong place.

4.06.2018

  • finished PyQt4 to PyQt4 port on the Vispy variant (there were some changes compared with the Matplotlib version for which the port was finished some time ago)
  • added Ctrl+S shortcut for the Geometry Editor. When is activated it will save de geometry ("update") and return to the main App.
  • modified the Mirror command for the case when multiple objects are selected and we want to mirror all together. In this case they should mirror around a bounding box to fill all.

3.06.2018

  • removed the current drill path optimizations as they are inefficient

  • implemented Google OR-tools drill path optimization in 2 flavors; Basic OR-tools TSP algorithm and OR-Tools Metaheuristics Guided Local Path

  • 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

  • modified the labels for the X,Y and Dx,Dy coordinates
  • modified the menu entries, added more icons
  • added initial work on a Excellon Editor
  • modified the behavior of when clicking on canvas the coordinates were copied to cliboard: now it is required to press CTRL key for this to happen, and it will only happen just for left mouse button click
  • removed the autocopy of the object name on new object creation
  • remade the Tcl commands drillcncjob and cncjob
  • added fix so the canvas is focused on the start of the program, therefore the shortcuts work without the need for doing first a click on canvas.

28.05.2018

  • added total drill count column in Excellon Tool Table which displays the total number of drills
  • added aliases in panelize Tool (pan and panel should work)
  • modified generate_milling method which had issues from the Python3 port (it could not sort the tools due of dict to dict comparison no longer possible).
  • modified the 'default' postprocessor in order to include a space between the value of Xcoord and the following Y
  • made optional the using of threads for the milling command; by default it is OFF (False) because in the current configuration it creates issues when it is using threads
  • modified the Panelize function and Tcl command Panelize. It was having issues due to multithreading (kept trying to modify a dictionary in redraw() method)and automatically selecting the last created object (feature introduced by me). I've added a parameter to the new_object method, named autoselected (by default it is True) and in the panelize method I initialized it with False. By initializing the plot parameter with False for the temporary objects, I have increased dramatically the generation speed of the panel because now the temporary object are no longer ploted which consumed time.
  • replaced log.warn() with log.warning() in camlib.py. Reason: deprecated
  • fixed the issue that the "Defaults" button was having no effect when clicked and Options Combo was in Project Options
  • fixed issue with Tcl Shell loosing focus after each command, therefore needing to click in the edit line before we type a new command (borrowed from @brainstorm
  • added a header in the postprocessor files mentioning that the GCODE files were generated by FlatCAM.
  • modified the number of decimals in some of the line entries to 4.
  • added an alias for the millholes Tcl Command: 'mill'

27.04.2018

  • modified the Gerber.scale() function from camlib.py in order to allow loading Gerber files with 'follow' parameter in other units than the current ones

  • snap_max_entry is disabled when the DRAW toolbar is disabled (previous fix didn't work)

  • 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

  • made conversion to Python3
  • added Rtree Indexing drill path optimization
  • added a checkbox in Options Tab -> App Defaults -> Excellon Group named Excellon Optim. Type from which it can be selected the default optimization type: TS stands for Travelling Salesman algorithm and Rtree stands for Rtree Indexing
  • added a checkbox on the Grid Toolbar that when checked (default status is checked) whatever value entered in the GridX entry will be used instead of the now disabled GridY entry
  • modified the default behavior on when a line_entry is clicked. Now, on each click on a line_entry, the content is automatically selected.
  • snap_max_entry is disabled when the DRAW toolbar is disabled

24.05.2015

  • in Geometry Editor added a initial form of Rotate Geometry command in toolbar
  • changed the way the geometry is finished if it requires a key: before it was using key 'Space' now it uses 'Enter'
  • added Shortcut for Rotate Geometry to key 'Space'
  • after using a tool in Geometry Editor it automatically defaults to 'Select Tool'

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

  • Added Marlin postprocessor
  • Added a new entry into the Geometry and Excellon Object's UI: Feedrate rapid: the purpose is to set a feedrate for the G0 command that some firmwares like Marlin don't intepret as 'move with highest speed'
  • FlatCAM was not making the conversion from one type of units to another for a lot of parameters. Corrected that.
  • Modified the Marlin Postprocessor so it will generate the required GCODE.

21.05.2018

  • added new icons for menu entries

  • added shortcuts that work on the Project tab but also over Plot. Shorcut list is accesed with shortcut key '~' sau '`'

  • 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

  • changed the interpretation of the axis for the rotate and skew commands. Actually I reversed them to reflect reality.
  • for the rotate command a positive angle now rotates CW. It was reversed.
  • added shortcuts (for outside CANVAS; the CANVAS has it's own set of shortcuts) CTRL+C will copy to clipboard the name of the selected object CTRL+A will Select All objects

"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:

  • removed the Save buttons previously added on each Group in Application Defaults. Replaced them with a single Save button that stays always on top of the Options TAB
  • added settings for defaults for the Grid that are persistent
  • changed the default view at FlatCAM startup: now the origin is in the center of the screen

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

  • added an "Defaults" button in Excellon Defaults Group; it loads the following configuration (Excellon_format_in 2:4, Excellon_format_mm 3:3, Excellon_zeros LZ)
  • added Save buttons for each Defaults Group; in the future more parameters will be propagated in the app, for now they are a few
  • added functions for Skew on X axis and for Skew on Y menu stubs. Now, clicking on those Menu -> Options -> Transform Object menu entries will trigger those functions
  • added a CheckBox button in the Options Tab -> Application Defaults that control the behaviour of the TCL shell: checking it will make the TCL shell window visible at each start-up, unchecking it the TCL shell window will be hidden until needed
  • Depth/pass parameter from Geometry Object CNC Job is now in the defaults and it will keep it's value until changed in the Application Defaults.

17.05.2018

  • added messages box for the Flip commands to show error in case there is no object selected when the command is executed
  • added field entries in the Options TAB - > Application Defaults for the following newly introduced parameters: excellon_format_upper_in excellon_format_lower_in excellon_format_upper_mm excellon_format_lower_mm

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 ]

  • added Radio button in the Options TAB - > Application Defaults for the Excellon_zeros parameter

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

  • modified SetSys TCL command: now it can change units

  • modified SetSys TCL command: now it can set new parameters: excellon_format_mm and excellon_format_in. the first one is when the excellon units are MM and the second is for when the excellon units are in INCH. Those parameters can be set with a number between 1 and 5 and it signify how many digits are before coma.

  • added new GUI command in EDIT -> Select All. It will select all objects on the first mouse click and on the second will deselect all (toggle action)

  • 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

  • fixed bug in Geometry CNCJob generation that prevented generating the object
  • added GRBL 1.1 postprocessor and Laser postprocessor (adapted from the work of MARCO A QUEZADA)

13.05.2018

  • added postprocessing in correct form
  • added the possibility to select an postprocessor for Excellon Object
  • added a new postprocessor, manual_toolchange.py. It allows to change the tools and adjust the drill tip to touch the surface manually, always in the X=0, Y=0, Z = toolchangeZ coordinates.
  • fixed drillcncjob TCL command by adding toolchangeZ parameter
  • fixed the posprocessor file template 'default.py' in the toolchange command section
  • after I created a feature that the message in infobar is cleared by moving mouse on canvas, it generated a bug in TCL shell: everytime mouse was moved it will add a space into the TCL read only section. Now this bug is fixed.
  • added an EndZ parameter for the drillcncjob and cncjob TCL commands: it will specify at what Z value to park the CNC when job ends
  • the spindle will be turned on after the toolchange and it will be turned off just before the final end move.

Previously:

  • added GRID based working of FLATCAM
  • added Set Origin command
  • added FilmTool, PanelizeTool GUI, MoveTool
  • and others

24.04.2018

  • Remade the Measurement Tool: it now ask for the Start point of the measurement and then for the Stop point. After it will display the measurement until we left click again on the canvas and so on. Previously you clicked the start point and reset the X and Y coords displayed and then you moved the mouse pointer wherever you wanted to measure, but moving the mouse from there you lost the measurement.

  • Added Relative measurement on the main plot

  • Now both the measuring tool and the relative measurement will work only with the left click of the mouse button because middle mouse click and right mouse click are used for panning

  • 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:

  • Added buttons in the menu bar for opening of Gerber and Excellon files;
  • Reduced number of decimals for drill bits to two decimals;
  • Updated make_win32.py so it will work with cx_freeze 5.0.1
  • Added capability so FlatCAM can now read Gerber files with traces having zero value (aperture size is zero);
  • Added Paint All / Seed based Paint functions from the JP's FlatCAM;
  • Added Excellon move optimization (travelling salesman algorithm) cherry-picked from David Kahler: https://bitbucket.org/dakahler/flatcam
  • Updated make_win32.py so it will work with cx_freeze 5.0.1 Corrected small typo in DblSidedTool.py
  • Added the TCL commands in the new format. Picked from FLATCAM master.
  • Hack to fix the issue with geometry not being updated after a TCL command was executed. Now after each TCL command the plot_all() function is executed and the canvas is refreshed.
  • Added GUI for panelization TCL command
  • Added GUI tool for the panelization TCL command: Changed some ToolTips.

============================================

Previously added features by Dennis

  • "Clear non-copper" feature, supporting multi-tool work.
  • Groups in Project view.
  • Pan view by dragging in visualizer window with pressed MMB.
  • OpenGL-based visualizer.