Просмотр исходного кода

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

Marius Stanciu 7 лет назад
Родитель
Сommit
9b61e4cc37
5 измененных файлов с 44 добавлено и 8 удалено
  1. 15 3
      FlatCAMEditor.py
  2. 1 2
      FlatCAMObj.py
  3. 3 1
      README.md
  4. 23 0
      camlib.py
  5. 2 2
      make_win.py

+ 15 - 3
FlatCAMEditor.py

@@ -3970,6 +3970,9 @@ class FlatCAMExcEditor(QtCore.QObject):
 
         for deleted_tool_dia in deleted_tool_dia_list:
 
+            # delete de tool offset
+            self.exc_obj.tool_offset.pop(float(deleted_tool_dia), None)
+
             # delete the storage used for that tool
             storage_elem = FlatCAMGeoEditor.make_storage()
             self.storage_dict[deleted_tool_dia] = storage_elem
@@ -3985,8 +3988,8 @@ class FlatCAMExcEditor(QtCore.QObject):
 
             if flag_del:
                 for tool_to_be_deleted in flag_del:
+                    # delete the tool
                     self.tool2tooldia.pop(tool_to_be_deleted, None)
-                    self.exc_obj.tool_offset.pop(tool_to_be_deleted, None)
 
                     # delete also the drills from points_edit dict just in case we add the tool again, we don't want to show the
                     # number of drills from before was deleter
@@ -4027,6 +4030,11 @@ class FlatCAMExcEditor(QtCore.QObject):
             self.olddia_newdia[dia_changed] = current_table_dia_edited
             # update the dict that holds tool_no as key and tool_dia as value
             self.tool2tooldia[key_in_tool2tooldia] = current_table_dia_edited
+
+            # update the tool offset
+            modified_offset = self.exc_obj.tool_offset.pop(dia_changed)
+            self.exc_obj.tool_offset[current_table_dia_edited] = modified_offset
+
             self.replot()
         else:
             # tool diameter is already in use so we move the drills from the prior tool to the new tool
@@ -4040,6 +4048,9 @@ class FlatCAMExcEditor(QtCore.QObject):
 
             self.on_tool_delete(dia=dia_changed)
 
+            # delete the tool offset
+            self.exc_obj.tool_offset.pop(dia_changed, None)
+
         # we reactivate the signals after the after the tool editing
         self.tools_table_exc.itemChanged.connect(self.on_tool_edit)
         # self.tools_table_exc.selectionModel().currentChanged.connect(self.on_row_selected)
@@ -4226,8 +4237,9 @@ class FlatCAMExcEditor(QtCore.QObject):
 
         self.replot()
 
-        # add a first tool in the Tool Table
-        self.on_tool_add(tooldia=1.00)
+        # add a first tool in the Tool Table but only if the Excellon Object is empty
+        if not self.tool2tooldia:
+            self.on_tool_add(tooldia=1.00)
 
     def update_fcexcellon(self, exc_obj):
         """

+ 1 - 2
FlatCAMObj.py

@@ -1328,8 +1328,6 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
 
         self.tool_offset[dia] = current_table_offset_edited
 
-        print(self.tool_offset)
-
         # we reactivate the signals after the after the tool editing
         self.ui.tools_table.itemChanged.connect(self.on_tool_offset_edit)
 
@@ -1763,6 +1761,7 @@ class FlatCAMExcellon(FlatCAMObj, Excellon):
 
             app_obj.progress.emit(20)
             job_obj.z_cut = float(self.options["drillz"])
+            job_obj.tool_offset = self.tool_offset
             job_obj.z_move = float(self.options["travelz"])
             job_obj.feedrate = float(self.options["feedrate"])
             job_obj.feedrate_rapid = float(self.options["feedrate_rapid"])

+ 3 - 1
README.md

@@ -14,6 +14,8 @@ CAD program, and create G-Code for Isolation routing.
 - whenever a FlatCAM tool is activated, if the notebook side is hidden it will be unhidden
 - reactivated the Voronoi classed
 - added a new parameter named Offset in the Excellon tool table - work in progress
+- 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.
 
 10.02.2019
 
@@ -38,7 +40,7 @@ CAD program, and create G-Code for Isolation routing.
 
 8.02.2019
 
-- when shortcut keys 1, 2, 3 (tab selection) are activated, if the splitter left side (the notebook) is hidden it will be mae visible
+- when shortcut keys 1, 2, 3 (tab selection) are activated, if the splitter left side (the notebook) is hidden it will be made visible
 - changed the menu entry Toggle Grid name to Toggle Grid Snap
 - fixed errors in Toggle Axis
 - fixed error with shortcut key triggering twice the keyPressEvent when in the Project List View

+ 23 - 0
camlib.py

@@ -4399,6 +4399,8 @@ class CNCjob(Geometry):
         self.units = units
 
         self.z_cut = z_cut
+        self.tool_offset = {}
+
         self.z_move = z_move
 
         self.feedrate = feedrate
@@ -4746,6 +4748,13 @@ class CNCjob(Geometry):
                                 if self.dwell is True:
                                     gcode += self.doformat(p.dwell_code)  # Dwell time
 
+                            if self.units == 'MM':
+                                current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"]))
+                            else:
+                                current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"]))
+                            z_offset = float(self.tool_offset[current_tooldia]) * (-1)
+                            self.z_cut += z_offset
+
                             # Drillling!
                             for k in node_list:
                                 locx = locations[k][0]
@@ -4827,6 +4836,14 @@ class CNCjob(Geometry):
                                 if self.dwell is True:
                                     gcode += self.doformat(p.dwell_code)  # Dwell time
 
+                            if self.units == 'MM':
+                                current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"]))
+                            else:
+                                current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"]))
+
+                            z_offset = float(self.tool_offset[current_tooldia]) * (-1)
+                            self.z_cut += z_offset
+
                             # Drillling!
                             for k in node_list:
                                 locx = locations[k][0]
@@ -4868,6 +4885,12 @@ class CNCjob(Geometry):
                             if self.dwell is True:
                                 gcode += self.doformat(p.dwell_code)  # Dwell time
 
+                        if self.units == 'MM':
+                            current_tooldia = float('%.2f' % float(exobj.tools[tool]["C"]))
+                        else:
+                            current_tooldia = float('%.3f' % float(exobj.tools[tool]["C"]))
+                        z_offset = float(self.tool_offset[current_tooldia]) * (-1)
+                        self.z_cut += z_offset
                         # Drillling!
                         altPoints = []
                         for point in points[tool]:

+ 2 - 2
make_win.py

@@ -79,12 +79,12 @@ else:
 
 print("INCLUDE_FILES", include_files)
 
-#execfile('clean.py')
+# execfile('clean.py')
 
 setup(
     name="FlatCAM",
     author="Juan Pablo Caram",
-    version="3000",
+    version="Beta",
     description="FlatCAM: 2D Computer Aided PCB Manufacturing",
     options=dict(build_exe=buildOptions),
     executables=[Executable("FlatCAM.py", icon='share/flatcam_icon48.ico', base=base)]