- reverted this change: "selected object in Project used to ask twice for UI build" because it will not build the UI when a tab is closed for Document object and the object is selected
- small fixes: selected object in Project used to ask twice for UI build; if scale factor in Object UI is 1 do nothing as there is no point in scaling with a factor of 1
- renamed Calibrate Excellon Tool to a simpler Calibrate Tool
- Calibrate Tool - when generating verification GCode it will always load into an Editor from which it can be edited and/or saved. On save the editor will close.
- updated the CNCJob and Drillcncjob Tcl Commands to use 0 and 1 as values for the parameters that are stated as of bool type, beside the normal keywords of False and True
- cleaned up the Excellon parser and fixed some bugs (old and new); Excellon parser has it's own convert_units() method no longer inheriting from Geometry
- in Excellon UI fixed bug that did not allow editing of the Offset Z parameter from the Tool table
- in NCC Tool, the new Geometry object that is created on copper clear now has the solid_geometry attribute where the geometry is stored not only in the obj.tools attribute
- changed the FCDoubleSpinner, FCSpinner and FCEntry GUI elements to allow passing an alignment value: left, right or center (not yet available in the app)
- in Properties Tool added more information's regarding the Excellon tools, about travelled distance and job time; fixed issues when doing Properties on the CNCjob objects
- TODO: I need to solve the mess in units conversion: it's too convoluted
- made sure that if an older preferences file is detected then there are no errors and only the parameters that are currently active are loaded; the factory defaults file is deleted and recreated in the new format
- modified the GUI in all tools making the text of the buttons bold and adding a new button named Reset Tool which have to reset the tool GUI and variables (need to check all tools to see if happen)
- when the Tool tab is in focus, clicking on canvas will no longer change the focus to Project tab
- Copper Thieving Tool - when creating the pattern platting mask will make a new Gerber object with it
- in Preferences added an Apply button which apply the modified preferences but does not save to a file, minimizing the file IO operations; CTRL+S key combo does the Apply now.
- modified the default values for the METRIC system; the app now starts in the METRIC units since the majority of the world use the METRIC units system
- updated the drawing of the workspace such that the application overall start time is improved and after first turn on of the workspace, toggling it will have no performance penalty
- updated the 'single' isolation of Gerber polygons to remove the polygon if clicked on it and it is already in the list of single polygons to be isolated
- remade the Paint Tool - single polygon painting; now it can single paint a list of polygons that are clicked onto (right click will start the actual painting)
- fixed issue #341 that affected both postprocessors that have inlined feedrate: marlin and repetier. THe used feedrate was the Feedrate X-Y and instead had to be Feedrate Z.
- fixed issue #335. The FCDoubleSPinBox (and FCSpinBox) value was not used when the user entered data but just hovered away the mouse expecting the data to be already confirmed
- trying to improve the performance of View CNC Code command by using QPlainTextEdit; made the mods for it
- when using the Find function in the TextEditor and the result reach the bottom of the document, the next find will be the first in the document (before it defaulted to the beginning of the document)
- in Tools Database added a contextual menu to add/copy/delete tool; CTRL+C, DEL keys work too; key T for adding a tool is now only partially working
- in Tools Database made the status bar messages show when adding/copying/deleting tools in DB
- changed all Except statements that were single to except Exception as recommended in some PEP
- renamed the Copper Fill Tool to Copper Thieving Tool as this is a more appropriate name; started to add ability for more types of copper thieving besides solid
- fixed some issues recently introduced in ParseSVG
- QRCode Tool: added ability to add negative QRCodes (perhaps they can be isolated on copper?); added a clear area surrounding the QRCode in case it is dropped on a copper pour (region); fixed the Gerber export
- QRCode Tool: all parameters are hard-coded for now
- added a new FlatCAM Tool: Copper Fill Tool. It will pour copper into a Gerber filling all empty space with copper, at a clearance distance of the Gerber features
- Copper Fill Tool: added possibility to select between a bounding box rectangular or convex hull when the reference is the geometry of the source Gerber object
- Copper Fill Tool: cleanup on not regular tool exit
- working on QRCode Tool; finished adding the QRCode geometry to the selected Gerber object and also finished adding the 'follow' geometry needed when exporting the Gerber object as a Gerber file in addition to the 'solid' geometry in the obj.apertures
- updated the Objects menu signals so whenever an object is (de)selected in the Project Tab, it's state will reflect the (un)checked state of the actions in the Object menu
- finished the Objects menu by adding the ability of actions to be checked so they will show the selected status of the objects and by adding to actions to (de)select all objects
- fixed and optimized the click selection on canvas
- fixed Gerber parsing for very simple Gerber files that have only one Polygon but many LPC zones
- fixed bug in Panelization Tool for which in case of Excellon objects, the panel kept a reference to the source object which created issues when moving or disabling/enabling the plots
- cleaned up the module imports throughout the app (the TclCommands are not yet verified)
- fixed an issue that caused the impossibility to load a GCode file that contained the % symbol even when was loaded in a regular way from the File menu
- re-added the CNC tool diameter entry for the CNCjob object in Selected tab.FCSpinner
- since the CNCjob geometry creation is only useful for graphical purposes and have no impact on the GCode creation I have removed the cascaded union on the GCode geometry therefore speeding up the Gcode display by many factors (perhaps hundreds of times faster)
- fixed a whole load of PyQT signal problems generated by recent changes to the usage of SpinBoxes; added a signal returnPressed for the FCSpinner and for FCDoubleSpinner
- fixed issue in Paint Tool where the first added tool was expected to have a float diameter but it was a string
- updated the translation files to the latest state in the app
- added support for key-based panning in 3D graphic engine. Moving the mouse wheel while pressing the CTRL key will pan up-down and while pressing SHIFT key will pan left-right
- modified the Bookmark manager to be installed as a widget tab in Plot Area; fixed the drag & drop function for the table rows that have CellWidgets inside
- marked in gray color the rows in the Bookmark Manager table that will populate the BookMark menu
- made sure that only one instance of the BookmarkManager class is active at one time
- modified the FCSpinner and FCDoubleSpinner GUI elements such that the wheel event will not change the values inside unless there is a focus in the lineedit of the SpinBox
- in Preferences General, Gerber, Geometry, Excellon, CNCJob sections made all the input fields of type SpinBox (where possible)
- updated the Distance Tool utility geometry color to adapt to the dark theme canvas
- updated Optimal Tool to display both points coordinates that made a distance (and the minimum) not only the middle point (which is still the place where the jump happen)
- updated the Film Tool and added the ability to generate Punched Positive films (holes in the pads) when a Gerber file is the film's source. The punch holes source can be either an Excellon file or the pads center
- in Gerber isolation section, the tool dia value is updated when changing from Circular to V-shape and reverse
- in Tool Film, when punching holes in a positive film, if the resulting object geometry is the same as the source object geometry, the film will not ge generated
- fixed a bug that when a Gerber object is edited and it has as solid_geometry a single Polygon, saving the result was failing due of len() function not working on a single Polygon
- fixed bug in Geometry Editor that did not allow the copy of geometric elements
- created a new class that holds all the Code Editor functionality and integrated as a Editor in FlatCAM, the location is in flatcamEditors folder
- remade all the functions for view_source, scripts and view_code to use the new TextEditor class; now all the Code Editor tabs are being kept alive, before only one could be in an open state
- changed the name of the new object FlatCAMNotes to a more general one FlatCAMDocument
- changed the way a new FlatCAMScript object is made, the method that is processing the Tcl commands when the Run button is clicked is moved to the FlatCAMObj.FlatCAMScript() class
- reused the Multiprocessing Pool declared in the App for the ToolRulesCheck() class
- adapted the Project context menu for the new types of FLatCAM objects
- modified the setup_recent_files to accommodate the new FlatCAM objects
- fixed the FCSpinner and FCDoubleSpinner GUI elements to select all on first click and deselect on second click in the Spinbox LineEdit
- for Gerber object in Selected Tab added ability to chose a V-Shape tool and therefore control the isolation better by adjusting the cut width of the isolation in function of the cut depth, tip width of the tool and the tip angle of the tool
- when in Gerber UI is selected the V-Shape tool, all those parameters (tip dia, tip angle, tool_type = 'V' and cut Z) are transferred to the generated Geometry and prefilled in the Geoemtry UI
- added a fix in the Gerber parser to work even when there is no information about zero suppression in the Gerber file
- added new settings in Edit -> Preferences -> Gerber for Gerber Units and Gerber Zeros to be used as defaults in case that those informations are missing from the Gerber file
- added new settings for the Gerber newly introduced feature to isolate with the V-Shape tools (tip dia, tip angle, tool_type and cut Z) in Edit -> Preferences -> Gerber Advanced
- made the Minimum Distance Tool more precise for the Excellon Editor since in the Excellon Editor the holes shape are represented as a cross line but in reality they should be evaluated as circles
- in Rules Check Tool added the functionality for Copper to Outline Clearance, Silk to Silk Clearance, Silk to Solder Mask Clearance, Silk to Outline Clearance, Minimum Solder Mask Sliver, Minimum Annular Ring
- added a new tool named "Optimal Tool" which will determine the minimum distance between the copper features for a Gerber object, in fact determining the maximum diameter for a isolation tool that can be used for a complete isolation
- fixed a bug in Excellon Editor that crashed the app when editing the first tool added automatically into a new black Excellon file
- made sure that if the big mouse cursor is selected, the utility geometry in Excellon Editor has a thicker line width (2 pixels now) so it is visible over the geometry of the mouse cursor
- replaced in FlatCAM Tools and in FLatCAMObj.py and in Editors all references to hardcoded decimals in string formats for tools with a variable declared in the __init__()
- added possibility of using a big mouse cursor or a small mouse cursor. The big mouse cursor is made from 2 infinite lines. This was implemented for both graphic engines
- if there are (x, y) coordinates in the clipboard, when launching the "Jump to" function, those coordinates will be preloaded in the Dialog box.
- when the combo SHIFT + LMB is executed there is no longer a deselection of objects
- when the "Jump to" function is called, the mouse cursor (if active) will be moved to the new position and the screen position labels will be updated accordingly
- added a Copy All button in the Code Editor, clicking this button will copy all text in the editor to the clipboard
- added a 'Milling Type' radio button in Geometry Editor Preferences to contorl the type of geometry will be generated in the Geo Editor (for conventional milling or for the climb milling)
- added the functionality to allow climb/conventional milling selection for the geometry created in the Geometry Editor
- now any Geometry that is edited in Geometry editor will have coordinates ordered such that the resulting Gcode will allow the selected milling type in the 'Milling Type' radio button in Geometry Editor Preferences (which depends also of the spindle direction)
- fixed issue when rebooting from within in cx_freezed state (it issued a startup arg with the path to FlatCAM.exe but that triggered the last sys.exit(2) that I had in the App.args_at_startup())
- modified the make_win script for the presence of MatPlotLib
- fixed the fullscreen method to show the application window in fullscreen wherever the mouse pointer it is therefore on the screen we are working on; before it was showing always on the primary screen
- unfortunately the fix for issue where while zooming the mouse cursor shape was not updated braked something in way that Matplotlib work with PyQt5, therefore I removed it
- fixed a bug in legacy graphic engine: when doing the self.app.collection.delete_all() in new_project an app crash occurred
- added a new TclCommand named "set_origin" which will set the origin for all loaded objects to zero if the -auto True argument is used and to a certain x,y location if the format is: set_origin 5,7
- added a new TclCommand named "bounds" which will return a list of bounds values from a supplied list of objects names. For use in Tcl Scripts
- fixed bug in display of the apertures marked in the Aperture table found in the Gerber Selected tab and through this made it to also work with the legacy graphic engine
- fixed annotation in Mark Area Tool in Gerber Editor to work in legacy graphic engine
- FlatCAM can be run in HEADLESS mode now. This mode can be selected by using the --headless=1 command line argument or by changing the line headless=False to True in config/configuration.txt file. In this mod the Sys Tray Icon menu will hold only the Run Scrip menu entry and Exit entry.
- fixed bug in Gerber editor that did not allow to display all shapes after it encountered one shape without 'solid' geometry
- fixed bug in Gerber Editor -> selection area handler where if some of the selected shapes did not had the 'solid' geometry will silently abort selection of further shapes
- added new control in Edit -> Preferences -> General -> Gui Preferences -> Activity Icon. Will select a GIF from a selection, the one used to show that FlatCAM is working.
- fixed bug with losing the visibility of toolbars if at first startup the user tries to change something in the Preferences before doing a first save of Preferences
- added possibility to edit the custom keywords used by the autocompleter (in Tcl Shell and in the Code Editor). It is done in the Edit -> Preferences -> Utilities
- added option to run a script from the context menu of the sys tray icon. Changed the color of the sys tray icon to a green one so it will be visible on light and dark themes
- fixed an bug where the pywrapcp name from Google OR-Tools is not defined; fix issue #316
- if FlatCAM is started with the 'quit' or 'exit' as argument it will close immediately and it will close also another instance of FlatCAM that may be running
- added a new command line parameter for FlatCAM named '--shellvars' which can load a text file with variables for Tcl Shell in the format: one variable assignment per line and looking like: 'a=3' without quotes
- made --shellvars into --shellvar and make it only one list of commands passed to the Tcl. The list is separated by comma but without spaces. The variables are accessed in Tcl with the names shellvar_x where x is the index in the list of command comma separated values
- fixed an issue in the TclShell that generated an exception IndexError which crashed the software
- fixed the --shellvar and --shellfile FlatCAM arguments to work together but the --shellvar has precedence over --shellfile as it is most likely that whatever variable set by --shellvar will be used in the script file run by --shellfile
- modified the TclCommand New so it will no longer close all tabs when called (it closed the Code Editor tab which may have been holding the code that run)
- fixed the App.on_view_source() method for CNCJob objects: the Gcode will now contain the Prepend and Append code from the Edit -> Preferences -> CNCJob -> CNCJob Options
- added a new parameter named 'muted' for the TclCommands: cncjob, drillcncjob and write_gcode. Setting it as -muted 1 will disable the error reporting in TCL Shell
- made the splashscreen to be showed on the current monitor on systems with multiple monitors
- added a new entry in Menu -> View -> Redraw All which is doing what the name says: redraw all loaded objects
- fixed issue where in TCl Shell the Windows paths were not understood due of backslash symbol understood as escape symbol instead of path separator
- made sure that in for the TclCommand cncjob and for the drillcncjob if one of the args is stated but no value then the value used will be the default one
- made available the TSA algorithm for drill path optimization when the used OS is 64bit. When used OS is 32bit the only available algorithm is TSA
- fixed the TclCommandCncjob to work for multigeometry Geometry objects; still I had to fix the list of tools parameter, right now I am setting it to an empty list
- added a new TclCommand named PlotObjects which will plot a list of FlatCAM objects
- made that after opening an object in FlatCAM it is not automatically plotted. If the user wants to plot it can use the TclCommands PlotAll or PlotObjects
- fixed Scripts repeating multiple time when the Code Editor is used. This repetition was correlated with multiple openings of the Code Editor window (especially after an error)
- added the autocomplete keywords that can be changed to the defaults dictionary
- added a new parameter in the TclCommands: DrillCNCJob, MillDrills, MillSlots named tol (from tolerance). If the diameters of the milled (drilled) dias are within the tolerance specified of the diameters in the Excellon object than those diameters will be processed. This is to help account for rounding errors when having units conversion
- changed the triangulation type in VisPyVisuals for ShapeCollectionVisual class
- added a setting in Preferences -> Gerber -> Gerber General named Buffering. If set to 'no' the Gerber objects load a lot more faster (perhaps 10 times faster than when set to 'full') but the visual look is not so great as all the aperture polygons can be seen
- added for NCC Tool and Paint Tool a setting in the Preferences -> Tools --> (NCC Tool/ Paint Tool) that can set a progressive plotting (plot shapes as they are processed)
- some fixes in Paint Tool when done over the Gerber objects in case that the progressive plotting is selected
- some fixes in Gerber isolation in case that the progressive plotting is selected; added a 'Buffer solid geometry' button shown only when progressive plotting for Gerber object is selected. It will buffer the entire geometry of the object and plot it, in a threaded way.
- fixed issue when loading unbuffered a Gerber file that has negative regions
- fixed Panelize Tool to save the aperture geometries into the panel apertures. Also made the tool faster by removing the buffering at the end of the job
- modified FlatCAMEditor's files to the new string format that will allow easier translations
- remade the handlers for the Enable/Disable Project Tree context menu so they are threaded and activity is shown in the lower right corner of the main window
- modified all the FlatCAM tools strings to the new format in which the status is no longer included in the translated strings to make it easier for the future translations
- in NCC tool there is now a depth of cut parameter named 'Cut Z' which will dictate how deep the tool will enter into the PCB material
- in NCC tool added possibility to choose between the type of tools to be used and when V-shape is used then the tool diameter is calculated from the desired depth of cut and from the V-tip parameters
- finished the work on file extensions registration with FlatCAM. If the file extensions are deleted in the Preferences -> File Associations then those extensions are unregistered with FlatCAM
- fixed bug in NCC Tools and in SolderPaste Tool if in Edit -> Preferences only one tool is entered
- fixed bug in camblib.clear_polygon3() which caused that some copper clearing / paintings were not complete (some polygons were not processed) when the Straight Lines method was used
- some changes in NCC Tools regarding of the clearing itself
- made FlatCAM so that whenever an associated file is double clicked, if there is an opened instance of FlatCAM, the file will be opened in the first instance without launching a new instance of FlatCAM. If FlatCAM is launched again it will spawn a new process (hopefully it will work when freezed).
- fixed issue #298. The changes in postprocessors done in Preferences dis not update the object UI layout as it was supposed to. The selection of Marlin postproc. did not unhidden the Feedrate Rapids entry.
- fixed crash due of Properties Tool trying to have a convex hull area on FlatCAMCNCJob objects which is not possible due of their nature
- modified Tcl Command SubtractRectangle
- fixed and modernized the Tcl Command Scale to be able to scale on X axis or on Y axis or on both and having as scale reference either the (0, 0) point or the minimum point of the bounding box or the center of the bounding box.
- modified the Paint Tool. Now the Single Polygon and Area/Reference Object painting works with multiple tools too. The tools have to be selected in the Tool Table.
- remade the TclCommand Paint to work in the new configuration of the the app (the painting functions are now in their own tool, Paint Tool)
- in NCC Tool added ability to add multiple zones to clear when Area option is checked and the modifier key is pressed (either CTRL or SHIFT as set in Preferences). Right click of the mouse is an additional way to finish the job.
- fixed a bug in Excellon Editor that made that the selection of drills is always cumulative
- in Paint Tool added ability to add multiple zones to paint when Area option is checked and the modifier key is pressed (either CTRL or SHIFT as set in Preferences). Right click of the mouse is an additional way to finish the job.
- in Paint Tool and NCC Tool, for the Area option, now mouse panning is allowed while adding areas to process
- for all the FlatCAM tools launched from toolbar the behavior is modified: first click it will launch the tool; second click: if the Tool tab has focus it will close the tool but if another tab is selected, the tool will have focus
- added ability to turn ON/OFF the detachable capability of the tabs in Notebook through a context menu activated by right mouse button click on the Notebook header
- added ability to turn ON/OFF the detachable capability of the tabs in Plot Tab Area through a context menu activated by right mouse button click on the Notebook header
- added new entry in Properties Tool which is the calculated Convex Hull Area (should give a more precise area for the irregular shapes than the box area)
- added some more strings in Properties Tool for the translation
- added messages in the application window title which show the progress in loading a project (which is not thread-safe therefore keeping the app from fully initialize until finished)
- in NCC Tool added a new parameter (radio button) that offer the choice on the order of the tools both in tools table and in execution of engraving; added as a parameter also in Edit -> Preferences -> Tools -> NCC Tool
- finished adding in Paint Tool the usage of an external object to set the extent of th area painted. For simple shapes (single Polygon) the shape can be anything, for the rest will be a convex hull of the reference object
- modified NCC tool so for simple objects (single Polygon) the external object used as reference can have any shape, for the other types of objects the copper cleared area will be the convex hull of the reference object
- modified the strings of the app wherever they contained the char seq <b></b> so it is not included in the translated string
- added ability to lock toolbars within the context menu that is popped up on any toolbars right mouse click. The value is saved in QSettings and it is persistent between application startup's.
- fixed error when creating CNCJob due of having the annotations disabled from preferences but the plot2() function from camlib.CNCJob class still performed operations who yielded TypeError exceptions
- coded a more accurate way to estimate the job time in CNCJob, taking into consideration if there is a usage of multi depth which generate more passes
- another fix (final one) for the Exception generated by the annotations set not to show in Preferences
- fixed bug in Geometry Editor, in disconnect_canvas_event_handlers() where I left some part of code without adding a try - except block which was required
- moved the initialization of the FlatCAM editors after a read of the default values. If I don't do this then only at the first start of the application the Editors are not functional as the Editor objects are most likely destroyed
- fixed bug in FlatCAM editors that caused the shapes to be drawn without resolution when the app units where INCH
- modified the transformation functions in all classes in camlib.py and FlatCAMObj.py to work with empty geometries
- fixed a weird error that created a crash in the following scenario: create a new excellon, edit it, add some drills/slots, delete it without saving, create a new excellon, try to edit and a crash is issued due of a wrapped C++ error
- fixed bug selection in Excellon editor that caused not to select the corresponding row (tool dia) in the tool table when a selection rectangle selected an even number of geometric elements
- made sure that if multi depth is choosed when creating GCode then if the multidepth is more than the depth of cut only one cut is made (to the depth of cut)
- added new menu category in File -> Backup with two menu entries that duplicate the functions of the export/import preferences buttons from the bottom of the Preferences window
- in Excellon Editor -> Resize tool, made sure that when the slot is resized, it's length remain the same, because the tool should influence only the 'thickness' of the slot. Since I don't know anything but the geometry and tool diameters (old and new), this is only an approximation and computationally intensive
- in Excellon Editor -> remade the Tool edit made by editing the diameter values in the Tools Table to work for slots too
- stored inside FlatCAM app the VisPy data files and at the first start the application will try to copy those files to the APPDATA (roaming) folder in case of running under Windows OS
- created a configuration file in the root/config/configuration.txt with a configuration line for portability. Set portable to True to run the app as portable
- added the Slot Type parameter for exporting Excellon in Edit -> Preferences -> Excellon -> Export Excellon. Now the Excellon object can be exported also with drilled slot command G85
- fixed bug in Excellon export when there are no zero suppression (coordinates with decimals)
- added new option in ToolSub: the ability to close (or not) the resulting paths when using tool on Geometry objects. Added also a new category in the Edit -> Preferences -> Tools, the Substractor Tool Options
- added new settings in Edit -> Preferences -> General for Notebook Font size (set font size for the items in Project Tree and for text in Selected Tab) and for canvas Axis font size. The values are stored in QSettings.
- done regression to solve the bug with multiple passes cutting from the copper features (I should remember not to make mods here)
- if 'combine' is checked in Gerber isolation but there is only one pass, the resulting geometry will still be single geo
- the 'passes' entry was changed to a IntSpinner so it will allow passes to be entered only in range (1, 999) - it will not allow entry of 0 which may create some issues
- improved the FlatCAMGerber.isolate() function to work for geometry in the form of list and also in case that the elements of the list are LinearRings (like when doing the Exterior Isolation)
- in NCC Tool made sure that at each run the old objects are deleted
- fixed bug that created a choppy geometry for CNCJob when working in INCH
- fixed bug that did not asked the user to save the preferences after importing a new set of preferences, after the user is trying to close the Preferences tab window
- fixed bug that crashed the app after creating a new geometry, if a new object is loaded and the new geometry is deleted and then trying to select the just loaded new object
- made some GUI elements in Edit -> Preferences to have a minimum width as opposed to the previous fixed one
- fixed bug that when isolating a Gerber file made out of a single polygon, an RecursionException was issued together with inability to create tbe isolation
- fulfilled request: When saving a CNC file, if the file name is changed in the OS window, the new name does appear in the “Selected” (in name) and “Project” tabs (in cnc_job)
- solved bug such that the app is not crashing when some apertures in the Gerber file have no geometry. More than that, now the apertures that have geometry elements are bolded as opposed to the ones without geometry for which the text is unbolded
- added a detection if any values are changed in the Edit -> Preferences window and on close it will ask the user if he wants to save the changes or not
- created a new menu entry in the File menu named Recent projects that will hold the recent projects and the previous "Recent files" will hold only the previous loaded files
- fixed bug in FlatCAMObj.FlatCAMGeometry.ui_disconnect(); the widgets signals were not disconnected from handlers when required therefore the signals were connected in an exponential way
- some changes in the widgets used in the Selected tab for Geometry object
- added a new tool in Gerber Editor: Mark Area Tool. It will mark the polygons in a edited Gerber object with areas within a defined range, allowing to delete some of the not necessary copper features
- added new menu links in the Gerber Editor menu for Eraser Tool and Mark Area Tool
- added key shortcuts for Eraser Tool (CTRL+E) and Mark Area Tool (ALT+A) and updated the shortcuts list
- some GUI layout optimizations in Edit -> Preferences
- added the possibility for multiple tool diameters in the Edit -> Preferences -> Geometry -> Geometry General -> Tool dia separated by comma
- fixed scaling for the multiple tool diameters in Edit -> Preferences -> Geometry -> Geometry General -> Tool dia, for NCC tools more than 2 and for Solderpaste nozzles more than 2
- fixed bug in CNCJob where the CNC Tools table will show always only 2 decimals for Tool diameters regardless of the current measuring units
- made the tools diameters decimals in case of INCH FlatCAM units to be 4 instead of 3
- fixed bug in updating Grid values whenever toggling the FlatCAM units and the X, Y Grid values are linked, bugs which caused the Y value to be scaled incorrectly
- set the decimals for Grid values to be set to 6 if the units of FlatCAM is INCH and to set to 4 if FlatCAM units are METRIC
- fixed bug where for Geometry objects after a successful object rename done in the Object collection view (Project tab), deselect the object and reselect it and then in the Selected tab the name is not the new one but the old one
- for Geometry objects, adding a new tool to the Tools table after a successful rename will now store the new name in the tool data
- fixed bug in Gerber editor - on multiple edits on the same object, the aperture size and dims were continuously multiplied due of the file units not being updated
- added a new toggle option in Edit -> Preferences -> General Tab -> App Preferences -> "Open" Behavior. It controls which path is used when opening a new file. If checked the last saved path is used when saving files and the last opened path is used when opening files. If unchecked then the path for the last action (either open or save) is used.
- remade the Properties Tool such that it works with the new Gerber data structure in the obj.apertures. Also changed the view for the Gerber object in Properties
- fixed issue with false warning that the Gerber object has no geometry after an empty Gerber was edited and added geometry elements
- Gerber Export: made sure that if some of the coordinates in a Gerber object geometry are repeating then the resulting Gerber code include only one copy
- added a new parameter/feature: now the spindle can work in clockwise mode (CW) or counter clockwise mode (CCW)
- fixed issue in camlib.CNCjob.generate_from_excellon_by_tool() in the drill path optimization algorithm selection when selecting the MH algorithm. The new API's for Google OR-tools required some changes and also the time parameter can be now just an integer therefore I modified the GUI
- made the Feedrate Rapids parameter to depend on the type of postprocessor choosed. It will be showed only for a postprocessor which the name contain 'marlin' and for any postprocessor's that have 'custom' in the name
- Gerber Editor: added a threshold limit for how many elements a move selection can have. If above the threshold only a bounding box Poly will be painted on canvas as utility geometry.
- made sure that only units toggle done in Edit -> Preferences will toggle the data in Preferences. The menu entry Edit -> Toggle Units and the shortcut key 'Q' will change only the display units in the app
- added a new parameter in the Edit -> Preferences -> App Preferences named Geo Tolerance. This parameter control the level of geometric detail throughout FlatCAM. It directly influence the effect of Circle Steps parameter.
- renamed the menu entry Edit -> Copy as Geo to Convert Any to Geo and moved it in the Edit -> Conversion
- created a new function named Convert Any to Gerber and installed it in Edit -> Conversion. It's doing what the name say: it will convert an Geometry or Excellon FlatCAM object to a Gerber object.
- the project items color is now controlled from Foreground Role in ObjectCollection.data()
- made again plot functions threaded but moved the dataChanged signal (update_view() ) to the main thread by using an already existing signal (plots_updated signal) to avoid the errors with register QVector
- Geometry Editor: restored the old behavior: a tool is active until it is voluntarily exited: either by using the 'ESC' key, or selecting the Select tool or new: right click on canvas
- in ObjectCollection class, made sure that renaming an object in Project View does not result in an empty name. If new name is blank the rename is cancelled.
- made ObjectCollection.TreeItem() inherit KeySensitiveListVIew and implicitly QTreeView (in the hope that the theme applied on app will be applied on the tree items, too (for MacOs new DarkUI theme)
- renamed SilkScreen Tool to Substract Tool and move it's menu location in Edit -> Conversion
- solved bug in Excellon Editor: when selecting a drill hole on canvas the selected row in the Tools Table was not the correct one but the next highest row
- Geometry Editor: modified the intersection (if the selected shapes don't intersects preserve them) and substract functions (delete all shapes that were used in the process)
- added a toggle button in Preferences to toggle on/off the display of the selection box on canvas when the user is clicking an object or selecting it by mouse dragging.
- New tool: Silkscreen Tool: I am trying to remove the overlapped geo with the soldermask layer from overlay layer; layed out the class and functions - not working yet
- Gerber Editor: made Add Pad repeat until user exits the Add Pad through either mouse right click, or ESC key or deselecting the Add Pad menu item
- Gerber and Geometry Editors: fixed some issues with the Add Arc/Add Semidisc; in mode 132, the norm() function was not the one from numpy but from a FlatCAM Class. Also fixed some of the texts and made sure that when changing the mode, the current points are reset to prepare for the newly selected mode.
- PDF import tool: added support for save/restore Graphics stack. Only for scale and offset transformations and for the linewidth. This is the final fix for Microsoft PDF printer who saves in PDF format 1.7
- PDF Import tool: added support for PDF files that embed multiple Gerber layers (top, bottom, outline, silkscreen etc). Each will be opened in it's own Gerber file. The requirement is that each one is drawn in a different color
- PDF Import tool: fixed bugs when drag & dropping PDF files on canvas the files geometry previously opened was added to the new one. Also scaling issues. Solved.
- PDF Import tool: added support for detection of circular geometry drawn with white color which means actually invisible color. When detected, FlatCAM will build an Excellon file out of those geoms.
- PDF Import tool: fixed storing geometries in apertures with the right size (before they were all stored in aperture D10)
- fixed the PDF import tool to work with files generated by the Microsoft PDF printer (chained subpaths)
- in PDF import tool added support for paths filled and at the same time stroked ('B' and 'B*'commands)
- added a shortcut key for PDF Import Tool (ALT+Q) and updated the Shortcut list (also with the 'T' and 'R' keys for Gerber Editor where they control the bend in Track and Region tool and the 'M' and 'D' keys for Add Arc tool in Geometry Editor)
- Gerber Editor: added custom mouse cursors for each mode in Add Track Tool
- Gerber Editor: Poligonize Tool will first fuse polygons that touch each other and at a second try will create a polygon. The polygon will be automatically moved to Aperture '0' (regions).
- Gerber Editor: added multiple modes to lay a Region: 45-degrees, reverse 45-degrees, 90-degrees, reverse 90-degrees and free-angle. Added also key shortcuts 'T' and 'R' to cycle forward, respectively in reverse through the modes.
- Gerber Editor: Add Track Tool: added 5 modes for laying a track: 45-degrees, reverse-45 degrees, 90-degrees, reverse 90-degrees and free angle. Key 'T' will cycle forward through the modes and key 'R' will cycle in reverse through the track laying modes.
- Gerber Editor: Add Track Tool: first right click will finish the track. Second right click will exit the Track Tool and return to Select Tool.
- Gerber Editor: added protections for the Pad Array and Pad Tool for the case when the aperture size is zero (the aperture where to store the regions)
- Gerber Editor: reduced the delay to show UI when editing an empty Gerber object
- update the order of event handlers connection in Editors to first connect new handlers then disconnect old handlers. It seems that if nothing is connected some VispY functions like canvas panning no longer works if there is at least once nothing connected to the 'mouse_move' event
- Excellon Editor: update so always there is a tool selected even after the Excellon object was just edited; before it always required a click inside of the tool table, not you do it only if needed.
- added support in Excellon parser for autodetection of Excellon file format for the Excellon files generated by the following ECAD sw: DipTrace, Eagle, Altium, Sprint Layout
- Gerber Editor: finished a new tool: Poligonize Tool (ALT+N in Editor). It will fuse a selection of tracks into a polygon. It will fill a selection of polygons if they are apart and it will make a single polygon if the selection is overlapped. All the newly created filled polygons will be stored in aperture '0' (if it does not exist it will be automatically created)
- fixed a bug in Move command in context menu who crashed the app when triggered
- Gerber Editor: when adding a new aperture it will be store as the last selected and it will be used for any tools that are triggered until a new aperture is selected.
- Gerber Editor: Remade the processing of 'clear_geometry' (geometry generated by polygons made with Gerber LPC command) to work if more than one such polygon exists
- Editors: activated an old function that was no longer active: each tool can have it's own set of shortcut keys, the Editor general shortcut keys that are letters are overridden
- Gerber and Geometry editors, when using the Backspace keys for certain tools, they will backtrack one point but now the utility geometry is immediately updated
- fixed an issue with automatically filled in aperture code when the edited Gerber file has no apertures; established an default with value 10 (according to Gerber specifications)
- fixed a bug in editing a blank Gerber object
- added handlers for the Gerber Editor context menu
- when adding an aperture with code '0' (zero) it will automatically be set with size zero and type: 'REG' (from region); here we store all the regions from a Gerber file, the ones without a declared aperture
- in all Editors, manually deactivating a button in the editor toolbar will automatically select the 'Select' button
- fixed Excellon Editor selection: when a tool is selected in Tools Table, all the drills belonging to that tool are selected. When a drill is selected on canvas, the associated tool will be selected without automatically selecting all other drills with same tool
- created menu links and shortcut keys for adding a new empty Gerber objects; on update of the edited Gerber, if the source object was an empty one (new blank one) this source obj will be deleted
- removed the old apertures editing from Gerber Obj selected tab
- modified the bogus diameters series for Excellon objects that do not have tool diameter info
- made Excellon Editor aware of the fact that the Excellon object that is edited has fake (bogus) tool diameters and therefore it will not sort the tools based on diameter but based on tool number
- fixed bug on Excellon Editor: when diameter is edited in Tools Table and the target diameter is already in the tool table, the drills from current tool are moved to the new tool (with new dia) - before it crashed
- working on Gerber Editor - added the key shortcuts: wip
- made saving of the project file non-blocking and also while saving the project file, if the user tries again to close the app while project file is being saved, the app will close only after saving is complete (the project file size is non zero)
- fix on the Gerber parser that makes searching for '%%' char optional when doing regex search for mode, units or image polarity. This allow loading Gerber files generated by the ECAD software TCl4.4
- fixed an issue where the Geometry plot function protested that it does not have an parameter that is used by the CNCJob plot function. But both inherit from FaltCAMObj plot function which does not have that parameter so something may need to be changed. Until then I provided a phony keyboard parameter to make that function 'shut up'
- fixed an error that created a situation that when saving a project with some of the CNCJob objects disabled, on project reload the CNCJob objects are no longer loaded
- fixed the Gerber.merge() function. When some of the Gerber files have apertures with same id, create a new aperture id for the object that is fused because each aperture id may hold different geometries.
- in Code Editor added shortcut combo key CTRL+SHIFT+V to function as a Special Paste that will replace the '\' char with '/' so the Windows paths will be pasted correctly for TCL Shell. Also doing SHIFT + LMB on the Paste in contextual menu is doing the same.
- added a fix in the Gerber parser when adding the geometry in the self.apertures dict for the case that the current aperture is None (Allegro does that)
- finished support for internationalization by adding a set of .po/.mo files for the English language. Unfortunately the final action can be done only when Beta will be out of Beta (no more changes) or when I will decide to stop working on this app.
- changed the tooltip for 'feedrate_rapids' parameter to point out that this parameter is useful only for the Marlin postprocessor
- fixed an issue created by the fact that I used the '_' char inside the app to designate unused info and that conflicted with the _() function used by gettext
- made impossible to try to reapply current language that it's already applied (un-necessary)
- fix for issue #262: when doing Edit-> Save & Close Editor on a Geometry that is not generated through first entering into an Editor, the geometry disappear
- added a change that when a double click is performed in a object on canvas resulting in a selection, if the notebook is hidden then it will be displayed
- made the Custom ToolChange Text area in CNCJob Selected Tab depend on the status of the ToolChange Enable Checkbox even in the init stage.
- added some parameters throughout camlib gcode generation functions; handled some possible errors (e.g like when attempting to use an empty Custom GCode Toolchange)
- added toggle effect for the tools in the toolbar.
- enhanced the toggle effect for the tools in the Tools Toolbar and also for Notebook Tab selection: if the current tool is activated it will toggle the notebook side but only if the installed widget is itself. If coming from another tool, the notebook will stay visible
- fixed the geometry adding to the self.apertures in the case when regions are done without declaring any aperture first (Allegro does that). Now, that geometry will be stored in the '0' aperture with type REG
- in ToolChange Custom Code replacement, the Text Box in the CNCJob Selected tab will be active only if there is a 'toolchange_custom' in the name of the postprocessor file. This assume that it is, or was created having as template the Toolchange Custom postprocessor file.
- remade the SolderPaste geometry generation function in ToolSoderPaste to work in certain scenarios where the Gerber pads in the SolderPaste mask Gerber may be just pads outlines
- added protection, not allowing the user to make a Paint job on a MultiGeo geometry (one that is converted in the Edit -> Conversion menu)) because it is not supported
- removed "added ability to regenerate objects (it's actually deletion followed by recreation)" because of the way Python pass parameters to functions by reference instead of copy
- added the ability of context menu inside the GuiElements.FCCombobox() object.
- remade the UI for ToolSolderPaste. The object comboboxes now have context menu's that allow object deletion. Also the last object created is set as current item in comboboxes.
- added protection against trying to create a CNCJob from a solder_paste dispenser geometry. This one is different than the default Geometry and can be handled only by SolderPaste Tool.
- finished the Edit -> Preferences defaults section
- finished the UI, created the postprocessor file template
- finished the multi-tool solder paste dispensing: it will start using the biggest nozzle, fill the pads it can, and then go to the next smaller nozzle until there are no pads without solder.
- added the ability to compress the FlatCAM project on save with LZMA compression. There is a setting in Edit -> Preferences -> Compression Level between 0 and 9. 9 level yields best compression at the price of RAM usage and time spent.
- removed the Open Gerber with 'follow' menu entry and also the open_gerber Tcl Command attribute 'follow'. This is no longer required because now the follow_geometry is stored by default in a Gerber object attribute gerber_obj.follow_geometry
- added a new parameter for the Tcl CommandIsolate, named: 'follow'. When follow = 1 (True) the resulting geometry will follow the Gerber paths.
- added a new setting in Edit -> Preferences -> General that allow to select the type of saving for the FlatCAM project: either compressed or uncompressed. Compression introduce an time overhead to the saving/restoring of a FlatCAM project.
- added protections again wrong values for the Buffer and Paint Tool in Geometry Editor
- the Paint Tool in Geometry Editor will load the default values from Tool Paint in Preferences
- when the Tools in Geometry Editor are activated, the notebook with the Tool Tab will be unhidden. After execution the notebook will hide again for the Buffer Tool.
- in Geometry Editor by selecting a shape with a selection shape, that object was added multiple times (one per each selection) to the selected list, which is not intended. Bug fixed.
- fixed a bug in Tool Transform that made the user to not be able to capture the click coordinates with SHIFT + LMB click combo
- added the ability to choose an App QStyle out of the offered choices (different for each OS) to be applied at the next app start (Preferences -> General -> Gui Pref -> Style Combobox)
- added support for FlatCAM usage with High DPI monitors (4k). It is applied on the next app startup after change in Preferences -> General -> Gui Settings -> HDPI Support Checkbox
- made the app not remember the window size if the app is maximized and remember in QSettings if it was maximized. This way we can restore the maximized state but restore the windows size unmaximized
- added key shortcuts for the shape transformations within Geometry Editor: X, Y keys for Flip(mirror), SHIFT+X, SHIFT+Y combo keys for Skew and ALT+X, ALT+Y combo keys for Offset
- adjusted the plotcanvas.zomm_fit() function so the objects are better fit into view (with a border around)
- modified the GUI in Objects Selected Tab to accommodate 2 different modes: basic and Advanced. In Basic mode, some of the functionality's are hidden from the user.
- made the output of Panelization Tool a choice out of Gerber and Geometry type of objects. Useful for those who want to engrave multiple copies of the same design.
- New feature: added the capability to view the source code of the Gerber/Excellon file that was loaded into the app. The file is also stored as an object attribute for later use. The view option is in the project context menu and in Menu -> Options -> View Source
- Serialized the source_file of the Objects so it is saved in the FlatCAM project and restored.
- if there is a single tool in the tool list (Geometry , Excellon) and the user click the Generate GCode, use that tool even if it is not selected
- in Editors, if the modifier key set in Preferences (CTRL or SHIFT key) is pressed at the end of one tool operation it will automatically continue to that action until the modifier is no longer pressed when Select tool will be automatically selected.
- in Geometry Editor, on entry the notebook is automatically hidden and restored on Geometry Editor exit.
- added ability to save the Gerber file content that is stored in FlatCAM on Gerber file loading. It's useful to recover from saved FlatCAM projects when the source files are no longer available.
- fixed an issue where the function handler that changed the layout had a parameter changed accidentally by an index value passed by the 'activate' signal to which was connected
- fixed bug in paint function in Geometry Editor that didn't allow painting due of overlap value
- added messages in info bar when selecting objects in the Project View list
- fixed DblSided Tool so it correctly creates the Alignment Drills Excellon file using the new structure
- fixed DblSided Tool so it will not crash the app if the user tries to make a mirror using no coordinates
- added some relevant status bar messages in DblSided Tool
- fixed DblSided Tool to correctly use the Box object (until now it used as reference only Gerber object in spite of Excellon or Geometry objects being available)
- fixed DblSided Tool crash when trying to create Alignment Drills object without a Tool diameter specified
- remade the Excellon export function to work with parameters entered in Edit -> Preferences -> Excellon Export
- added a new entry in the Project Context Menu named 'Save'. It will actually work for Geometry and it will do Export DXF and for Excellon and it will do Export Excellon
- reworked the offer to save a project so it is done only if there are objects in the project but those objects are new and/or are modified since last project load (if an old project was loaded.)
- remade the Grids context menu (right mouse button click on canvas). Now it has values linked to the units type (inch or mm). Added ability to add or delete grid values and they are persistent.
- updated the function for the project context menu 'Generate CNC' menu entry (Action) to use the modernized function FlatCAMObj.FlatCAMGeometry.on_generatecnc_button_click()
- the notebook is automatically collapsed when there are no objects in the collection and it is showed when adding an object
- added new options in Edit -> Preferences -> General -> App Preferences to control if the Notebook is showed at startup and if the notebook is closed when there are no objects in the collection and showed when the collection has objects.
- added new parameter for Excellon Object in Preferences: Fast Retract. If the checkbox is checked then after reaching the drill depth, the drill bit will be raised out of the hole asap.
- started to work on GUI forms simplification
- changed the Preferences GUI for Geometry and Excellon Objects to make a difference between parameters that are changed often and those that are not.
- finished work on Offset parameter in Excellon Object (Excellon Editor, camlib, FlatCAMObj updated to take this param in consideration)
- fixed a bug where in Excellon editor when editing a file, a tool was automatically added. That is supposed to happen only for empty newly created Excellon Objects.
- repurposed shortcut key 'Delete' to delete tools in tooltable when the mouse is over the Seleted tab (with Geometry inside) or in Tools tab (when NCC Tool or Paint Tool is inside). Or in Excellon Editor when mouse is hovering the Selected tab selecting a tool, 'Delete' key will delete that tool, if on canvas 'Delete' key will delete a selected shape (drill). In rest, will delete selected objects.
- fixed an error in Excellon Editor -> add drill array that could appear by starting the function to add a drill array by shortcut before any mouse move is registered while in Editor
- changed the messages from status bar on new object creation/selection
- in Geometry Editor fixed the handler for the Rotate shortcut key ('R')
- in Excellon Editor added a protection for Tool_dia field in case numbers using comma as decimal separator are used. Also added a QDoubleValidator forcing a number with max 4 decimals and from 0.0000 to 9.9999
- in Excellon Editor added a shortcut key 'T' that popup a window allowing to enter a new Tool with the set diameter
- in App added a shortcut key 'T' that popup a windows allowing to enter a new Tool with set diameter only when the Selected tab is on focus and only if a Geometry object is selected
- changed the shortcut key for Transform Tool from 'T' to 'ALT+T'
- fixed bug in Geometry Selected tab that generated error when used tool offset was less than half of either total length or half of total width. Now the app signal the issue with a status bar message
- added Double Validator for the Offset value so only float numbers can be entered.
- in App added a shortcut key 'T' that popup a windows allowing to enter a new Tool with set diameter only when the Tool tab is on focus and only if a NCC Tool or Paint Area Tool object is installed in the Tool Tab
- moved some graphical classes out of Tool Shell to GUIElements.py where they belong
- when selecting an object on canvas by single click, it's name is displayed in status bar. When nothing is selected a blank message (nothing) it's displayed
- in Move Tool I've added the type of object that was moved in the status bar message
- color coded the status bar bullet to blue for selection
- the name of the selected objects are displayed in the status bar color coded: green for Gerber objects, Brown for Excellon, Red for Geometry and Blue for CNCJobs.
- added a text in the Selected Tab which is showed whenever the Selected Tab is selected but without having an object selected to display it's properties
- added a new parameter to set the feedrate of the probing in case the used postprocessor does probing (has toolchange_probe in it's name)
- fixed bug in Marlin postprocessor for the Excellon files; the header and toolchange event always used the parenthesis witch is not compatible with GCode for Marlin
- fixed a issue with a move to Z_move before any toolchange
- added a new parameter in the Tool Film which control the thickness of the stroke width in the resulting SVG. It's a scale parameter.
- whatever was the visibility of the corresponding toolbar when we enter in the Editor, it will be set after exit from the Editor (either Geometry Editor or Excellon Editor).
- added ability to be detached for the tabs in the Notebook section (Project, Selected and Tool)
- added ability for all detachable tabs to be restored to the same position from where they were detached.
- changed the shortcut keys for Zoom In, Zoom Out and Zoom Fit from 1, 2, 3 to '-', '=' respectively 'V'. Added new shortcut keys '1', '2', '3' for Select Project Tab, Select Selected Tab and Select Tool Tab.
- updated the new shortcut list with the shortcuts added lately
- now the special messages in the Shell are color coded according to the level. Before they all were RED. Now the WARNINGS are yellow, ERRORS are red and SUCCESS is a dark green. Also the level is in CAPS LOCK to make them more obvious
- some more changes to GUI interface (solved issues)
- added some status bar messages in the Geometry Editor to guide the user when using the Geometry Tools
- now the '`' shortcut key that shows the 'shortcut key list' in Editors points to the same window which is created in a tab no longer as a pop-up window. This tab can be detached if needed.
- added a remove_tools() function before install_tools() in the init_tools() that is called when creating a new project. Should solve the issue with having double menu entry's in the TOOLS menu
- added a parameter ('Fast plunge' in Edit -> Preferences -> Geometry Options and Excellon Options) to control if the fast move to Z_move is done or not
- updated the camlib.CNCJob.scale() function so now the GCode is scaled also (quite a HACK :( it will need to be replaced at some point)). Units change work now on the GCODE also.
- Plot Area Tab view can now be toggled, added entry in View Menu and shortcut key CTRL+F10
- All the tabs in the GUI right side are (Plot Are, Preferences etc) are now detachable to a separate windows which when closed it returns in the previous location in the toolbar. Those detached tabs can be also reattached by drag and drop.
- added a traceback report in the TCL Shell for the errors that don't allow creation of an object; useful to trace exceptions/errors
- in case that the Toolchange X,Y parameter in Selected (or in Preferences) are deleted then the app will still do the job using the current coordinates for toolchange
- fixed an issue in camlib.CNCJob where tha variable self.toolchange_xy was used for 2 different purposes which created loss of information.
- added more shortcut keys in the Geometry Editor and in Excellon Editor; activated also the zoom (fit, in, out) shortcut keys ('1' , '2', '3') for the editors
- optimized the FlatCAMCNCJob.on_plot_cb_click_table() plot function and solved a bug regarding having tools numbers not in sync with the cnc tool table
- added a new menu entry for the Gerber Join function: Edit -> Conversions -> "Join Gerber(s) to Gerber" allowing joining Gerber objects into a final Gerber object
- added more key shortcuts into the application; they are now displayed in the GUI menu's
- reorganized the Edit -> Preferences -> Global
- redesigned the messagebox that is showed when quiting ot creating a New Project: now it has an option ('Cancel') to abort the process returning to the app
- added options for trace segmentation that can be useful for auto-levelling (code snippet from Lei Zheng from a rejected pull request on FlatCAM https://bitbucket.org/realthunder/ )
- modified grbl_laser postprocessor file so it includes a Sxxxx command on the line with M03 (laser active) whenever a value is enter in the Spindlespeed entry field
- modified the panelize TclCommand to take advantage of the new panelize() function; added a 'threaded' parameter (default value is 1) which controls the execution of the panelize TclCommand: threaded or non-threaded
- added multiple object selection on Open ... and Import ... (idea and code snippet came from Travers Carter, BitBucket user https://bitbucket.org/travc/)
- 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)
- 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.
- 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
- 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)
- 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.
- 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
- 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 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
- 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.