This commit is contained in:
Juan Pablo Caram 2014-03-14 19:36:53 -04:00
parent 9d9c3f819d
commit f98f3193cb
4 changed files with 77 additions and 19 deletions

View File

@ -757,7 +757,7 @@ class App:
self.units_label.set_text("[" + self.options["units"] + "]")
#### Check for updates ####
self.version = 2
self.version = 3
t1 = threading.Thread(target=self.versionCheck)
t1.daemon = True
t1.start()
@ -937,8 +937,6 @@ class App:
percentage += delta
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(lambda: self.on_zoom_fit(None))
GLib.timeout_add(300, lambda: app_obj.set_progress_bar(0.0, ""))
@ -2308,7 +2306,7 @@ class App:
"""
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
"""
@ -2852,7 +2850,6 @@ class Measurement:
def on_click(self, event):
if self.point1 is None:
self.point1 = (event.xdata, event.ydata)
return
else:
self.point2 = copy.copy(self.point1)
self.point1 = (event.xdata, event.ydata)

View File

@ -2749,6 +2749,11 @@ this object.</property>
<object class="GtkLabel" id="label84">
<property name="visible">True</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="xpad">3</property>
<property name="label" translatable="yes">Bottom Layer:</property>
@ -2780,6 +2785,8 @@ this object.</property>
<object class="GtkLabel" id="label85">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_markup" translatable="yes">&lt;b&gt;X&lt;/b&gt; flips from top to bottom,
&lt;b&gt;Y&lt;/b&gt; flips from left to right.</property>
<property name="xalign">1</property>
<property name="xpad">3</property>
<property name="label" translatable="yes">Mirror Axis:</property>
@ -2840,6 +2847,8 @@ this object.</property>
<object class="GtkLabel" id="label86">
<property name="visible">True</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="xpad">3</property>
<property name="label" translatable="yes">Axis location:</property>
@ -2862,6 +2871,8 @@ this object.</property>
<property name="visible">True</property>
<property name="can_focus">True</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="active">True</property>
<property name="draw_indicator">True</property>
@ -2879,6 +2890,8 @@ this object.</property>
<property name="visible">True</property>
<property name="can_focus">True</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="draw_indicator">True</property>
<property name="group">rb_mirror_point</property>
@ -2901,6 +2914,15 @@ this object.</property>
<object class="GtkLabel" id="label87">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_markup" translatable="yes">&lt;b&gt;Point:&lt;/b&gt; 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.
&lt;b&gt;Box:&lt;/b&gt; 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="xpad">3</property>
<property name="label" translatable="yes">Point/Box:</property>
@ -2932,6 +2954,14 @@ this object.</property>
<object class="GtkLabel" id="label89">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_markup" translatable="yes">List of coordinates where to drill alignment
holes, in the format &lt;b&gt;(x1, y1), (x2, y2)&lt;/b&gt;, etc.
You can click on the plot and paste each
coordinate here.
All &lt;b&gt;coordinates are duplicated&lt;/b&gt; and mirrored
automatically around the axis so drill pattens are
identical when flipping your board around.</property>
<property name="xalign">1</property>
<property name="xpad">3</property>
<property name="label" translatable="yes">Algnmt holes:</property>
@ -2960,6 +2990,8 @@ this object.</property>
<object class="GtkLabel" id="label90">
<property name="visible">True</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="xpad">3</property>
<property name="label" translatable="yes">Drill diam.:</property>
@ -3006,6 +3038,9 @@ this object.</property>
<property name="visible">True</property>
<property name="can_focus">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>
<signal name="activate" handler="on_create_aligndrill" swapped="no"/>
<signal name="clicked" handler="on_create_aligndrill" swapped="no"/>
@ -3019,11 +3054,14 @@ this object.</property>
</child>
<child>
<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="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="tooltip_markup" translatable="yes">Mirrors the object specified in
&lt;b&gt;Bottom Layer&lt;/b&gt; around the
specified axis.</property>
<property name="halign">end</property>
<signal name="activate" 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="visible">True</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_stock">True</property>
<signal name="activate" handler="on_file_new" swapped="no"/>
@ -3101,6 +3141,9 @@ this object.</property>
<property name="label">Open Gerber</property>
<property name="visible">True</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="use_stock">False</property>
<signal name="activate" handler="on_fileopengerber" swapped="no"/>
@ -3111,6 +3154,9 @@ this object.</property>
<property name="label">Open Excellon</property>
<property name="visible">True</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="use_stock">False</property>
<signal name="activate" handler="on_fileopenexcellon" swapped="no"/>
@ -3121,6 +3167,9 @@ this object.</property>
<property name="label">Open G-Code</property>
<property name="visible">True</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="use_stock">False</property>
<signal name="activate" handler="on_fileopengcode" swapped="no"/>
@ -3230,8 +3279,10 @@ this object.</property>
<property name="label">gtk-delete</property>
<property name="visible">True</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_stock">True</property>
<signal name="activate" handler="on_delete" swapped="no"/>
</object>
</child>
</object>
@ -5059,6 +5110,27 @@ defaults.</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>

13
README
View File

@ -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.
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
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.
CAD program, and create G-Code for Isolation routing. But there's more.

View File

@ -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}