فهرست منبع

Updated Ubuntu setup script to support rtree. Removed defaults.json and recent.json from the main dir.

Juan Pablo Caram 11 سال پیش
والد
کامیت
ac667682b3
7فایلهای تغییر یافته به همراه47 افزوده شده و 20 حذف شده
  1. 12 7
      FlatCAMApp.py
  2. 30 6
      FlatCAMDraw.py
  3. 3 1
      ObjectUI.py
  4. 0 4
      camlib.py
  5. 0 1
      defaults.json
  6. 0 1
      recent.json
  7. 2 0
      setup_ubuntu.sh

+ 12 - 7
FlatCAMApp.py

@@ -239,13 +239,13 @@ class App(QtCore.QObject):
         chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
         if self.defaults['serial'] == 0 or len(str(self.defaults['serial'])) < 10:
             self.defaults['serial'] = ''.join([random.choice(chars) for i in range(20)])
-            self.save_defaults()
+            self.save_defaults(silent=True)
 
         self.propagate_defaults()
 
         def auto_save_defaults():
             try:
-                self.save_defaults()
+                self.save_defaults(silent=True)
             finally:
                 QtCore.QTimer.singleShot(self.defaults["defaults_save_period_ms"], auto_save_defaults)
 
@@ -819,7 +819,7 @@ class App(QtCore.QObject):
 
         self.save_defaults()
 
-    def save_defaults(self):
+    def save_defaults(self, silent=False):
         """
         Saves application default options
         ``self.defaults`` to defaults.json.
@@ -863,7 +863,8 @@ class App(QtCore.QObject):
             self.inform.emit("[error] Failed to write defaults to file.")
             return
 
-        self.inform.emit("Defaults saved.")
+        if not silent:
+            self.inform.emit("Defaults saved.")
 
     def on_edit_join(self):
         """
@@ -2327,9 +2328,11 @@ class App(QtCore.QObject):
         full_url = App.version_url + \
             "?s=" + str(self.defaults['serial']) + \
             "&v=" + str(self.version) + \
+            "&os=" + str(self.os) + \
             "&" + urllib.urlencode(self.defaults["stats"])
         App.log.debug("Checking for updates @ %s" % full_url)
 
+        ### Get the data
         try:
             f = urllib.urlopen(full_url)
         except:
@@ -2348,6 +2351,7 @@ class App(QtCore.QObject):
 
         f.close()
 
+        ### Latest version?
         if self.version >= data["version"]:
             App.log.debug("FlatCAM is up to date!")
             self.inform.emit("[success] FlatCAM is up to date!")
@@ -2356,9 +2360,10 @@ class App(QtCore.QObject):
         App.log.debug("Newer version available.")
         self.message.emit(
             "Newer Version Available",
-            "There is a newer version of FlatCAM\n" +
-            "available for download:\n\n" +
-            data["name"] + "\n\n" + data["message"],
+            QtCore.QString("There is a newer version of FlatCAM " +
+                           "available for download:<br><br>" +
+                           "<B>" + data["name"] + "</b><br>" +
+                           data["message"].replace("\n", "<br>")),
             "info"
         )
 

+ 30 - 6
FlatCAMDraw.py

@@ -16,7 +16,14 @@ from mpl_toolkits.axes_grid.anchored_artists import AnchoredDrawingArea
 
 from rtree import index as rtindex
 
+
 class DrawTool(object):
+    """
+    Abstract Class representing a tool in the drawing
+    program. Can generate geometry, including temporary
+    utility geometry that is updated on user clicks
+    and mouse motion.
+    """
     def __init__(self, draw_app):
         self.draw_app = draw_app
         self.complete = False
@@ -40,6 +47,10 @@ class FCShapeTool(DrawTool):
 
 
 class FCCircle(FCShapeTool):
+    """
+    Resulting type: Polygon
+    """
+
     def __init__(self, draw_app):
         DrawTool.__init__(self, draw_app)
         self.start_msg = "Click on CENTER ..."
@@ -60,7 +71,7 @@ class FCCircle(FCShapeTool):
         if len(self.points) == 1:
             p1 = self.points[0]
             p2 = data
-            radius = sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)
+            radius = sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
             return Point(p1).buffer(radius)
 
         return None
@@ -68,12 +79,16 @@ class FCCircle(FCShapeTool):
     def make(self):
         p1 = self.points[0]
         p2 = self.points[1]
-        radius = sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)
+        radius = sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
         self.geometry = Point(p1).buffer(radius)
         self.complete = True
 
 
 class FCRectangle(FCShapeTool):
+    """
+    Resulting type: Polygon
+    """
+
     def __init__(self, draw_app):
         DrawTool.__init__(self, draw_app)
         self.start_msg = "Click on 1st corner ..."
@@ -107,6 +122,10 @@ class FCRectangle(FCShapeTool):
 
 
 class FCPolygon(FCShapeTool):
+    """
+    Resulting type: Polygon
+    """
+
     def __init__(self, draw_app):
         DrawTool.__init__(self, draw_app)
         self.start_msg = "Click on 1st point ..."
@@ -139,6 +158,10 @@ class FCPolygon(FCShapeTool):
 
 
 class FCPath(FCPolygon):
+    """
+    Resulting type: LineString
+    """
+
     def make(self):
         self.geometry = LineString(self.points)
         self.complete = True
@@ -166,10 +189,11 @@ class FCSelect(DrawTool):
             if self.draw_app.key != 'control':
                 shape["selected"] = False
 
-            distance = Point(point).distance(shape["geometry"])
-            if distance < min_distance:
+            # TODO: Do this with rtree?
+            dist = Point(point).distance(shape["geometry"])
+            if dist < min_distance:
                 closest_shape = shape
-                min_distance = distance
+                min_distance = dist
 
         if closest_shape is not None:
             closest_shape["selected"] = True
@@ -799,4 +823,4 @@ class FlatCAMDraw(QtCore.QObject):
 
 
 def distance(pt1, pt2):
-    return sqrt((pt1[0]-pt2[0])**2 + (pt1[1]-pt2[1])**2)
+    return sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2)

+ 3 - 1
ObjectUI.py

@@ -295,7 +295,9 @@ class GeometryObjectUI(ObjectUI):
         # Method
         methodlabel = QtGui.QLabel('Method:')
         methodlabel.setToolTip(
-            "Algorithm to paint the polygon."
+            "Algorithm to paint the polygon:<BR>"
+            "<B>Standard</B>: Fixed step inwards.<BR>"
+            "<B>Seed-based</B>: Outwards from seed."
         )
         grid2.addWidget(methodlabel, 3, 0)
         self.paintmethod_combo = RadioSet([

+ 0 - 4
camlib.py

@@ -125,19 +125,15 @@ class Geometry(object):
         log.debug("Geometry->bounds()")
         if self.solid_geometry is None:
             log.debug("solid_geometry is None")
-            log.warning("solid_geometry not computed yet.")
             return 0, 0, 0, 0
 
         if type(self.solid_geometry) is list:
-            log.debug("type(solid_geometry) is list")
             # TODO: This can be done faster. See comment from Shapely mailing lists.
             if len(self.solid_geometry) == 0:
                 log.debug('solid_geometry is empty []')
                 return 0, 0, 0, 0
-            log.debug('solid_geometry is not empty, returning cascaded union of items')
             return cascaded_union(self.solid_geometry).bounds
         else:
-            log.debug("type(solid_geometry) is not list, returning .bounds property")
             return self.solid_geometry.bounds
 
     def flatten_to_paths(self, geometry=None, reset=True):

+ 0 - 1
defaults.json

@@ -1 +0,0 @@
-{"cncjob_append": "", "gerber_noncopperrounded": false, "geometry_paintoverlap": 0.15, "geometry_plot": true, "zoom_ratio": 1.5, "shell_at_startup": false, "gerber_isotooldia": 0.016, "serial": "32qac2m529hogh3lo33a", "shell_shape": [500, 300], "zoom_in_key": "3", "zoom_out_key": "2", "stats": {"save_defaults": 30}, "recent_limit": 10, "gerber_plot": true, "defaults_save_period_ms": 20000, "gerber_cutoutgapsize": 0.15, "geometry_feedrate": 3.0, "units": "IN", "excellon_travelz": 0.1, "gerber_multicolored": false, "gerber_solid": true, "gerber_isopasses": 1, "fit_key": "1", "excellon_plot": true, "excellon_feedrate": 3.0, "cncjob_tooldia": 0.016, "geometry_travelz": 0.1, "gerber_cutoutmargin": 0.1, "excellon_solid": false, "geometry_paintmargin": 0.0, "geometry_cutz": -0.002, "gerber_noncoppermargin": 0.0, "gerber_cutouttooldia": 0.07, "zdownrate": null, "gerber_gaps": "4", "last_folder": null, "gerber_bboxmargin": 0.0, "point_clipboard_format": "(%.4f, %.4f)", "cncjob_plot": true, "excellon_drillz": -0.1, "gerber_isooverlap": 0.15, "gerber_bboxrounded": false, "geometry_cnctooldia": 0.016, "geometry_painttooldia": 0.07}

+ 0 - 1
recent.json

@@ -1 +0,0 @@
-[]

+ 2 - 0
setup_ubuntu.sh

@@ -12,3 +12,5 @@ easy_install -U distribute
 apt-get install python-pip
 pip install --upgrade matplotlib
 pip install --upgrade Shapely
+apt-get install libspatialindex-dev
+pip install rtree