Alpha 3
This commit is contained in:
@@ -757,7 +757,7 @@ class App:
|
|||||||
self.units_label.set_text("[" + self.options["units"] + "]")
|
self.units_label.set_text("[" + self.options["units"] + "]")
|
||||||
|
|
||||||
#### Check for updates ####
|
#### Check for updates ####
|
||||||
self.version = 2
|
self.version = 3
|
||||||
t1 = threading.Thread(target=self.versionCheck)
|
t1 = threading.Thread(target=self.versionCheck)
|
||||||
t1.daemon = True
|
t1.daemon = True
|
||||||
t1.start()
|
t1.start()
|
||||||
@@ -937,8 +937,6 @@ class App:
|
|||||||
percentage += delta
|
percentage += delta
|
||||||
GLib.idle_add(lambda: app_obj.set_progress_bar(percentage, "Re-plotting..."))
|
GLib.idle_add(lambda: app_obj.set_progress_bar(percentage, "Re-plotting..."))
|
||||||
|
|
||||||
#app_obj.plotcanvas.auto_adjust_axes()
|
|
||||||
#self.on_zoom_fit(None)
|
|
||||||
GLib.idle_add(app_obj.plotcanvas.auto_adjust_axes)
|
GLib.idle_add(app_obj.plotcanvas.auto_adjust_axes)
|
||||||
GLib.idle_add(lambda: self.on_zoom_fit(None))
|
GLib.idle_add(lambda: self.on_zoom_fit(None))
|
||||||
GLib.timeout_add(300, lambda: app_obj.set_progress_bar(0.0, ""))
|
GLib.timeout_add(300, lambda: app_obj.set_progress_bar(0.0, ""))
|
||||||
@@ -2308,7 +2306,7 @@ class App:
|
|||||||
"""
|
"""
|
||||||
Delete the currently selected FlatCAMObj.
|
Delete the currently selected FlatCAMObj.
|
||||||
|
|
||||||
:param widget: The widget from which this was called.
|
:param widget: The widget from which this was called. Ignored.
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -2852,7 +2850,6 @@ class Measurement:
|
|||||||
def on_click(self, event):
|
def on_click(self, event):
|
||||||
if self.point1 is None:
|
if self.point1 is None:
|
||||||
self.point1 = (event.xdata, event.ydata)
|
self.point1 = (event.xdata, event.ydata)
|
||||||
return
|
|
||||||
else:
|
else:
|
||||||
self.point2 = copy.copy(self.point1)
|
self.point2 = copy.copy(self.point1)
|
||||||
self.point1 = (event.xdata, event.ydata)
|
self.point1 = (event.xdata, event.ydata)
|
||||||
|
|||||||
74
FlatCAM.ui
74
FlatCAM.ui
@@ -2749,6 +2749,11 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label84">
|
<object class="GtkLabel" id="label84">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">The object that you want to flip around,
|
||||||
|
usually the Gerber object defining the
|
||||||
|
bottom copper layer. You can also flip
|
||||||
|
an Excellon object in case you want to drill
|
||||||
|
from the bottom side.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Bottom Layer:</property>
|
<property name="label" translatable="yes">Bottom Layer:</property>
|
||||||
@@ -2780,6 +2785,8 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label85">
|
<object class="GtkLabel" id="label85">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes"><b>X</b> flips from top to bottom,
|
||||||
|
<b>Y</b> flips from left to right.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Mirror Axis:</property>
|
<property name="label" translatable="yes">Mirror Axis:</property>
|
||||||
@@ -2840,6 +2847,8 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label86">
|
<object class="GtkLabel" id="label86">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">How the location of the axis
|
||||||
|
is specified.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Axis location:</property>
|
<property name="label" translatable="yes">Axis location:</property>
|
||||||
@@ -2862,6 +2871,8 @@ this object.</property>
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">The axis must pass through the
|
||||||
|
specified point.</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="active">True</property>
|
<property name="active">True</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
@@ -2879,6 +2890,8 @@ this object.</property>
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">False</property>
|
<property name="receives_default">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">The axis cuts a box (some Geometry object
|
||||||
|
in the project) exactly in the middle.</property>
|
||||||
<property name="xalign">0</property>
|
<property name="xalign">0</property>
|
||||||
<property name="draw_indicator">True</property>
|
<property name="draw_indicator">True</property>
|
||||||
<property name="group">rb_mirror_point</property>
|
<property name="group">rb_mirror_point</property>
|
||||||
@@ -2901,6 +2914,15 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label87">
|
<object class="GtkLabel" id="label87">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes"><b>Point:</b> Click on the desired point on the plot.
|
||||||
|
This copies the point to the clipboard. Then paste it
|
||||||
|
in the box by right-clicking and choosing paste, or
|
||||||
|
hitting Control-v.
|
||||||
|
|
||||||
|
<b>Box:</b> Choose an object in the project
|
||||||
|
that you want to use as a box for specifying
|
||||||
|
the flipping axis. If the object is not a rectangle,
|
||||||
|
a bounding box arounf the object is calculated.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Point/Box:</property>
|
<property name="label" translatable="yes">Point/Box:</property>
|
||||||
@@ -2932,6 +2954,14 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label89">
|
<object class="GtkLabel" id="label89">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">List of coordinates where to drill alignment
|
||||||
|
holes, in the format <b>(x1, y1), (x2, y2)</b>, etc.
|
||||||
|
You can click on the plot and paste each
|
||||||
|
coordinate here.
|
||||||
|
|
||||||
|
All <b>coordinates are duplicated</b> and mirrored
|
||||||
|
automatically around the axis so drill pattens are
|
||||||
|
identical when flipping your board around.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Algnmt holes:</property>
|
<property name="label" translatable="yes">Algnmt holes:</property>
|
||||||
@@ -2960,6 +2990,8 @@ this object.</property>
|
|||||||
<object class="GtkLabel" id="label90">
|
<object class="GtkLabel" id="label90">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">Diameter of the drill for
|
||||||
|
the aligment holes.</property>
|
||||||
<property name="xalign">1</property>
|
<property name="xalign">1</property>
|
||||||
<property name="xpad">3</property>
|
<property name="xpad">3</property>
|
||||||
<property name="label" translatable="yes">Drill diam.:</property>
|
<property name="label" translatable="yes">Drill diam.:</property>
|
||||||
@@ -3006,6 +3038,9 @@ this object.</property>
|
|||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">Creates an Excellon object with
|
||||||
|
the specified holes and their
|
||||||
|
mirror pairs.</property>
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<signal name="activate" handler="on_create_aligndrill" swapped="no"/>
|
<signal name="activate" handler="on_create_aligndrill" swapped="no"/>
|
||||||
<signal name="clicked" handler="on_create_aligndrill" swapped="no"/>
|
<signal name="clicked" handler="on_create_aligndrill" swapped="no"/>
|
||||||
@@ -3019,11 +3054,14 @@ this object.</property>
|
|||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkButton" id="button18">
|
<object class="GtkButton" id="button18">
|
||||||
<property name="label" translatable="yes">Create Mirror</property>
|
<property name="label" translatable="yes">Mirror Object</property>
|
||||||
<property name="width_request">120</property>
|
<property name="width_request">120</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="receives_default">True</property>
|
<property name="receives_default">True</property>
|
||||||
|
<property name="tooltip_markup" translatable="yes">Mirrors the object specified in
|
||||||
|
<b>Bottom Layer</b> around the
|
||||||
|
specified axis.</property>
|
||||||
<property name="halign">end</property>
|
<property name="halign">end</property>
|
||||||
<signal name="activate" handler="on_create_mirror" swapped="no"/>
|
<signal name="activate" handler="on_create_mirror" swapped="no"/>
|
||||||
<signal name="clicked" handler="on_create_mirror" swapped="no"/>
|
<signal name="clicked" handler="on_create_mirror" swapped="no"/>
|
||||||
@@ -3091,6 +3129,8 @@ this object.</property>
|
|||||||
<property name="label">gtk-new</property>
|
<property name="label">gtk-new</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">New project. Clears all
|
||||||
|
objects and options.</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="use_stock">True</property>
|
<property name="use_stock">True</property>
|
||||||
<signal name="activate" handler="on_file_new" swapped="no"/>
|
<signal name="activate" handler="on_file_new" swapped="no"/>
|
||||||
@@ -3101,6 +3141,9 @@ this object.</property>
|
|||||||
<property name="label">Open Gerber</property>
|
<property name="label">Open Gerber</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Load a Gerber file and create
|
||||||
|
a Gerber Object in the current
|
||||||
|
project.</property>
|
||||||
<property name="image">image2</property>
|
<property name="image">image2</property>
|
||||||
<property name="use_stock">False</property>
|
<property name="use_stock">False</property>
|
||||||
<signal name="activate" handler="on_fileopengerber" swapped="no"/>
|
<signal name="activate" handler="on_fileopengerber" swapped="no"/>
|
||||||
@@ -3111,6 +3154,9 @@ this object.</property>
|
|||||||
<property name="label">Open Excellon</property>
|
<property name="label">Open Excellon</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Load an Excellon file and create
|
||||||
|
an Excellon Object in the current
|
||||||
|
project.</property>
|
||||||
<property name="image">image1</property>
|
<property name="image">image1</property>
|
||||||
<property name="use_stock">False</property>
|
<property name="use_stock">False</property>
|
||||||
<signal name="activate" handler="on_fileopenexcellon" swapped="no"/>
|
<signal name="activate" handler="on_fileopenexcellon" swapped="no"/>
|
||||||
@@ -3121,6 +3167,9 @@ this object.</property>
|
|||||||
<property name="label">Open G-Code</property>
|
<property name="label">Open G-Code</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Load a G-Code file and create
|
||||||
|
a CNCJob Object in the current
|
||||||
|
project.</property>
|
||||||
<property name="image">image3</property>
|
<property name="image">image3</property>
|
||||||
<property name="use_stock">False</property>
|
<property name="use_stock">False</property>
|
||||||
<signal name="activate" handler="on_fileopengcode" swapped="no"/>
|
<signal name="activate" handler="on_fileopengcode" swapped="no"/>
|
||||||
@@ -3230,8 +3279,10 @@ this object.</property>
|
|||||||
<property name="label">gtk-delete</property>
|
<property name="label">gtk-delete</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
|
<property name="tooltip_text" translatable="yes">Deletes the selected object.</property>
|
||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
<property name="use_stock">True</property>
|
<property name="use_stock">True</property>
|
||||||
|
<signal name="activate" handler="on_delete" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
@@ -5059,6 +5110,27 @@ defaults.</property>
|
|||||||
<child>
|
<child>
|
||||||
<placeholder/>
|
<placeholder/>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
|||||||
13
README
13
README
@@ -5,15 +5,4 @@ FlatCAM: 2D Post-processing for Manufacturing
|
|||||||
|
|
||||||
FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router.
|
FlatCAM is a program for preparing CNC jobs for making PCBs on a CNC router.
|
||||||
Among other things, it can take a Gerber file generated by your favorite PCB
|
Among other things, it can take a Gerber file generated by your favorite PCB
|
||||||
CAD program, and create G-Code for Isolation routing. But there's more. See
|
CAD program, and create G-Code for Isolation routing. But there's more.
|
||||||
the features list below.
|
|
||||||
|
|
||||||
* Powerful user interface for visualization.
|
|
||||||
* Viewers for: Gerber, Excellon, G-Code.
|
|
||||||
* Create isolation routing geometry from Gerber.
|
|
||||||
* Create optimized G-Code from geometry.
|
|
||||||
* Double sided PCB tools.
|
|
||||||
* Clearing copper areas.
|
|
||||||
* Measuring tool (planned).
|
|
||||||
* PCB cutout tool.
|
|
||||||
* Table flattening tool.
|
|
||||||
@@ -1 +1 @@
|
|||||||
{"gerber_cutouttooldia":0.07, "geometry_paintoverlap": 0.15, "geometry_plot": true, "excellon_feedrate": 5.0, "gerber_plot": true, "gerber_mergepolys": true, "excellon_drillz": -0.1, "geometry_feedrate": 3.0, "units": "IN", "excellon_travelz": 0.1, "gerber_multicolored": false, "gerber_solid": true, "gerber_isopasses": 1, "excellon_plot": true, "gerber_isotooldia": 0.016, "cncjob_tooldia": 0.016, "geometry_travelz": 0.1, "gerber_cutoutmargin": 0.2, "excellon_solid": false, "geometry_paintmargin": 0.01, "geometry_cutz": -0.002, "geometry_cnctooldia": 0.016, "geometry_painttooldia": 0.0625, "gerber_gaps": "4", "gerber_bboxmargin": 0.0, "cncjob_plot": true, "gerber_cutoutgapsize": 0.15, "gerber_isooverlap": 0.17, "gerber_bboxrounded": false, "gerber_noncopperrounded": false, "geometry_multicolored": false, "gerber_noncoppermargin": 0.0, "geometry_solid": false}
|
{"gerber_noncopperrounded": false, "geometry_paintoverlap": 0.15, "geometry_plot": true, "excellon_feedrate": 5.0, "gerber_plot": true, "gerber_mergepolys": true, "excellon_drillz": -0.1, "geometry_feedrate": 3.0, "units": "IN", "excellon_travelz": 0.1, "gerber_multicolored": false, "gerber_solid": true, "gerber_isopasses": 1, "excellon_plot": true, "gerber_isotooldia": 0.016, "gerber_bboxmargin": 0.0, "cncjob_tooldia": 0.016, "geometry_travelz": 0.1, "gerber_cutoutmargin": 0.2, "excellon_solid": false, "geometry_paintmargin": 0.01, "geometry_cutz": -0.002, "geometry_cnctooldia": 0.016, "gerber_cutouttooldia": 0.07, "gerber_gaps": "4", "geometry_painttooldia": 0.0625, "cncjob_plot": true, "gerber_cutoutgapsize": 0.15, "gerber_isooverlap": 0.15, "gerber_bboxrounded": false, "geometry_multicolored": false, "gerber_noncoppermargin": 0.0, "geometry_solid": false}
|
||||||
Reference in New Issue
Block a user