فهرست منبع

- Calibration Tool - more work on it

Marius Stanciu 6 سال پیش
والد
کامیت
f2d7151f93
1فایلهای تغییر یافته به همراه55 افزوده شده و 43 حذف شده
  1. 55 43
      flatcamTools/ToolCalibration.py

+ 55 - 43
flatcamTools/ToolCalibration.py

@@ -558,50 +558,49 @@ class ToolCalibration(FlatCAMTool):
         # STEP 5 #
         step_5 = QtWidgets.QLabel('<b>%s</b>' % _("STEP 5: Calibrate FlatCAM Objects"))
         step_5.setToolTip(
-            _("Adjust the Excellon and Cutout Geometry objects\n"
-              "with the factors determined, and verified, above.")
+            _("Adjust the FlatCAM objects\n"
+              "with the factors determined and verified above.")
         )
         grid_lay.addWidget(step_5, 38, 0, 1, 3)
 
-        self.adj_exc_object_combo = QtWidgets.QComboBox()
-        self.adj_exc_object_combo.setModel(self.app.collection)
-        self.adj_exc_object_combo.setRootModelIndex(self.app.collection.index(1, 0, QtCore.QModelIndex()))
-        self.adj_exc_object_combo.setCurrentIndex(1)
+        self.adj_object_type_combo = QtWidgets.QComboBox()
+        self.adj_object_type_combo.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
+        self.adj_object_type_combo.setCurrentIndex(0)
 
-        self.adj_excobj_label = QtWidgets.QLabel("%s:" % _("EXCELLON"))
-        self.adj_excobj_label.setToolTip(
-            _("Excellon Object to be adjusted.")
+        self.adj_object_type_label = QtWidgets.QLabel("%s:" % _("Adjusted object type"))
+        self.adj_object_type_label.setToolTip(
+            _("Type of the FlatCAM Object to be adjusted.")
         )
 
-        grid_lay.addWidget(self.adj_excobj_label, 39, 0, 1, 3)
-        grid_lay.addWidget(self.adj_exc_object_combo, 40, 0, 1, 3)
+        grid_lay.addWidget(self.adj_object_type_label, 39, 0, 1, 3)
+        grid_lay.addWidget(self.adj_object_type_combo, 40, 0, 1, 3)
 
-        self.adj_geo_object_combo = QtWidgets.QComboBox()
-        self.adj_geo_object_combo.setModel(self.app.collection)
-        self.adj_geo_object_combo.setRootModelIndex(self.app.collection.index(2, 0, QtCore.QModelIndex()))
-        self.adj_geo_object_combo.setCurrentIndex(1)
+        self.adj_object_combo = FCComboBox()
+        self.adj_object_combo.setModel(self.app.collection)
+        self.adj_object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
+        self.adj_object_combo.setCurrentIndex(0)
 
-        self.adj_geoobj_label = QtWidgets.QLabel("%s:" % _("GEOMETRY"))
-        self.adj_geoobj_label.setToolTip(
-            _("Geometry Object to be adjusted.")
+        self.adj_object_label = QtWidgets.QLabel("%s:" % _("Adjusted object selection"))
+        self.adj_object_label.setToolTip(
+            _("The FlatCAM Object to be adjusted.")
         )
 
-        grid_lay.addWidget(self.adj_geoobj_label, 41, 0, 1, 3)
-        grid_lay.addWidget(self.adj_geo_object_combo, 42, 0, 1, 3)
+        grid_lay.addWidget(self.adj_object_label, 41, 0, 1, 3)
+        grid_lay.addWidget(self.adj_object_combo, 42, 0, 1, 3)
 
         # ## Adjust Objects Button
-        self.adj_obj_button = QtWidgets.QPushButton(_("Calibrate"))
-        self.adj_obj_button.setToolTip(
+        self.cal_button = QtWidgets.QPushButton(_("Calibrate"))
+        self.cal_button.setToolTip(
             _("Adjust (scale and/or skew) the objects\n"
               "with the factors determined above.")
         )
-        self.adj_obj_button.setStyleSheet("""
+        self.cal_button.setStyleSheet("""
                         QPushButton
                         {
                             font-weight: bold;
                         }
                         """)
-        grid_lay.addWidget(self.adj_obj_button, 43, 0, 1, 3)
+        grid_lay.addWidget(self.cal_button, 43, 0, 1, 3)
 
         separator_line2 = QtWidgets.QFrame()
         separator_line2.setFrameShape(QtWidgets.QFrame.HLine)
@@ -639,6 +638,12 @@ class ToolCalibration(FlatCAMTool):
         # if the mouse events are connected to a local method set this True
         self.local_connected = False
 
+        # reference for the tab where to open and view the verification GCode
+        self.gcode_editor_tab = None
+
+        # calibrated object
+        self.cal_object = None
+
         # ## Signals
         self.start_button.clicked.connect(self.on_start_collect_points)
         self.gcode_button.clicked.connect(self.generate_verification_gcode)
@@ -648,6 +653,9 @@ class ToolCalibration(FlatCAMTool):
         self.cal_source_radio.activated_custom.connect(self.on_cal_source_radio)
 
         self.obj_type_combo.currentIndexChanged.connect(self.on_obj_type_combo)
+        self.adj_object_type_combo.currentIndexChanged.connect(self.on_adj_obj_type_combo)
+
+        self.cal_button.clicked.connect(self.on_cal_button_click)
 
     def run(self, toggle=True):
         self.app.report_usage("ToolCalibration()")
@@ -699,6 +707,9 @@ class ToolCalibration(FlatCAMTool):
         self.skewx_entry.set_value(0.0)
         self.skewy_entry.set_value(0.0)
 
+        # calibrated object
+        self.cal_object = None
+
         self.app.inform.emit('%s...' % _("Tool initialized"))
 
     def on_obj_type_combo(self):
@@ -706,6 +717,11 @@ class ToolCalibration(FlatCAMTool):
         self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
         self.object_combo.setCurrentIndex(0)
 
+    def on_adj_obj_type_combo(self):
+        obj_type = self.adj_object_type_combo.currentIndex()
+        self.adj_object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
+        self.adj_object_combo.setCurrentIndex(0)
+
     def on_cal_source_radio(self, val):
         if val == 'object':
             self.obj_type_label.setDisabled(False)
@@ -937,25 +953,6 @@ class ToolCalibration(FlatCAMTool):
         self.gcode_editor_tab.buttonSave.clicked.disconnect()
         self.gcode_editor_tab.buttonSave.clicked.connect(
             lambda: self.gcode_editor_tab.handleSaveGCode(name='fc_ver_gcode', filt=_filter_, callback=self.close_tab))
-        #
-        # try:
-        #     dir_file_to_save = self.app.get_last_save_folder() + '/' + 'ver_gcode'
-        #     filename, _f = QtWidgets.QFileDialog.getSaveFileName(
-        #         caption=_("Export Machine Code ..."),
-        #         directory=dir_file_to_save,
-        #         filter=_filter_
-        #     )
-        # except TypeError:
-        #     filename, _f = QtWidgets.QFileDialog.getSaveFileName(caption=_("Export Machine Code ..."), filter=_filter_)
-        #
-        # filename = str(filename)
-        #
-        # if filename == '':
-        #     self.app.inform.emit('[WARNING_NOTCL] %s' % _("Export Machine Code cancelled ..."))
-        #     return
-        #
-        # with open(filename, 'w') as f:
-        #     f.write(gcode)
 
     def calculate_factors(self):
         origin_x = self.click_points[0][0]
@@ -1029,6 +1026,21 @@ class ToolCalibration(FlatCAMTool):
 
             self.skewy_entry.set_value(skew_angle_y)
 
+    def on_cal_button_click(self):
+        # get the FlatCAM object to calibrate
+        selection_index = self.adj_object_combo.currentIndex()
+        model_index = self.app.collection.index(selection_index, 0, self.adj_object_combo.rootModelIndex())
+
+        try:
+            self.cal_object = model_index.internalPointer().obj
+        except Exception as e:
+            log.debug("ToolCalibration.on_cal_button_click() --> %s" % str(e))
+            self.app.inform.emit('[WARNING_NOTCL] %s' % _("There is no FlatCAM object selected..."))
+            return 'fail'
+
+        # create a new object adjusted (calibrated)
+        # TODO
+
     def disconnect_cal_events(self):
         # restore the Grid snapping if it was active before
         if self.grid_status_memory is True: