def returnToHome(self):
     """Where does it finish ?"""
     side_X, side_Y, corner_radius = self.getGrooveAdjustments()
     file_text = addDebugFrame(inspect.currentframe())
     file_text += self.machine.setMode('INCR')
     file_text += G.G0_XY((side_X / 2, -corner_radius + (side_Y / 2)))
     return file_text
    def _getGCode(self, order_int):
        file_text = self._startProgram()
        # move to start, at safe-Z, in INCR mode
        file_text += G.set_INCR_mode()
        file_text += G.G0_XY(( \
            self.startRefs['x_starting_ref'], \
            self.startRefs['y_starting_ref'] \
        ))

        height_to_cut = self.workpiece_params['stock_height']

        while height_to_cut > 0:
            # move down to top of stock
            file_text += G.set_ABS_mode()
            file_text += G.G0_Z(height_to_cut)
            # get to cutting height
            height_to_cut = max(
                height_to_cut - self.cutting_params['cut_per_pass'], 0)
            file_text += G.set_ABS_mode()
            file_text += G.G1_Z(
                height_to_cut)  # could be G0 here, but it's good practice

            # This is other magic for A/B: special order of paths.
            file_text += self.cutFingers(order_int)
            file_text += self.returnToStart(order_int)

        file_text += self.returnToHome()
        file_text += self._endProgram()
        return file_text
 def moveToStart(self):
     """Where does it start ?"""
     side_X, side_Y, corner_radius = self.getGrooveAdjustments()
     file_text = addDebugFrame(inspect.currentframe())
     file_text += self.machine.setMode('INCR')
     file_text += G.G0_XY((-side_X / 2, corner_radius - (side_Y / 2)))
     return file_text
예제 #4
0
 def returnToHome(self):
     """Reference position is the center, return from corner."""
     side_X, side_Y = self.getGrooveAdjustments()
     file_text = addDebugFrame(inspect.currentframe())
     file_text += self.machine.setMode('INCR')
     file_text += G.G0_XY((side_X / 2, side_Y / 2))
     return file_text
 def returnToHome(self):
     file_text = self.machine.moveToSafeZ()
     file_text += G.set_INCR_mode()
     file_text += G.G0_XY(( \
         - self.startRefs['x_starting_ref'], \
         - self.startRefs['y_starting_ref'], \
     ))
     return file_text
예제 #6
0
 def returnToHome(self):
     log('LinearDistribution returnToHome: %s' % (self.__repr__()))
     delta_X = self.option_queries[DeltaXQuery].getValue()
     delta_Y = self.option_queries[DeltaYQuery].getValue()
     num_repeats = self.option_queries[NumRepeatQuery].getValue() - 1
     file_text = self.machine.setMode('INCR')
     file_text += G.G0_XY(
         (-(delta_X * num_repeats), -(delta_Y * num_repeats)))
     return file_text
 def returnFromReference(self):
     """Core interface."""
     file_text = addDebugFrame(inspect.currentframe())
     ref_X = self.option_queries[ReferenceXQuery].getValue()
     ref_Y = self.option_queries[ReferenceYQuery].getValue()
     file_text += self.returnToHome()
     file_text += self.machine.setMode('INCR')
     file_text += G.G0_XY((-ref_X, -ref_Y))
     return file_text
 def returnToHome(self):
     # for starting point reference point
     params = self.getParams()
     delta_X = params['delta_X']
     delta_Y = params['delta_Y']
     file_text = ''
     if not self.at_start:
         file_text = self.machine.setMode('INCR')
         file_text += G.G0_XY((-delta_X, -delta_Y))
         self.at_start = True
     return file_text
예제 #9
0
 def distributeChildFeature(self):
     log('LinearDistribution distributeChildFeature: %s' %
         (self.__repr__()))
     log('LinearDistribution feature: %s' % (self.features[0].__repr__()))
     file_text = self.features[0].getGCode()
     delta_X = self.option_queries[DeltaXQuery].getValue()
     delta_Y = self.option_queries[DeltaYQuery].getValue()
     for _ in xrange(self.option_queries[NumRepeatQuery].getValue() - 1):
         log('LinearDistribution REPEAT: %s' % (self.__repr__()))
         file_text += self.machine.setMode('INCR')
         file_text += G.G0_XY((delta_X, delta_Y))
         file_text += self.features[0].getGCode()
     return file_text
 def returnToStart(self, order_int):
     distribution = self.getDistribution()
     stock_span = self.workpiece_params[
         'stock_width'] + self.machine_params['bit_diameter']
     file_text = self.machine.moveToSafeZ()
     file_text += G.set_INCR_mode()
     if distribution['num_fingers'] % 2 == 0:
         file_text += G.G0_XY(( \
             0, \
             - stock_span \
         ))
     else:
         if order_int == 1:
             file_text += G.G0_XY((\
                 - self.cutting_params['finger_depth'], \
                 - stock_span \
             ))
         else:
             file_text += G.G0_XY((\
                 self.cutting_params['finger_depth'], \
                 - stock_span \
             ))
     return file_text
 def returnToHome(self):
     """Assumes reference point at center."""
     diameter = self._getAdjustedDiameter()
     file_text = self.machine.setMode('INCR')
     file_text += G.G0_XY((diameter / 2, 0))
     return file_text