import nc import iso_codes import emc2 class CodesEMC2(iso_codes.Codes): def SPACE(self): return(' ') def TAP(self): return('G33.1') def TAP_DEPTH(self, format, depth): return(self.SPACE() + 'K' + (format % depth)) # This version of COMMENT removes comments from the resultant GCode #def COMMENT(self,comment): return('') iso_codes.codes = CodesEMC2() class CreatorEMC2tap(emc2.CreatorEMC2): def init(self): iso.CreatorEMC2.init(self) # G33.1 tapping with EMC for now # unsynchronized (chuck) taps NIY (tap_mode = 1) def tap(self, x=None, y=None, z=None, zretract=None, depth=None, standoff=None, dwell_bottom=None, pitch=None, stoppos=None, spin_in=None, spin_out=None, tap_mode=None, direction=None): # mystery parameters: # zretract=None, dwell_bottom=None,pitch=None, stoppos=None, spin_in=None, spin_out=None): # I don't see how to map these to EMC Gcode if (standoff == None): # This is a bad thing. All the drilling cycles need a retraction (and starting) height. return if (z == None): return # We need a Z value as well. This input parameter represents the top of the hole if (pitch == None): return # We need a pitch value. if (direction == None): return # We need a direction value. if (tap_mode != 0): self.comment('only rigid tapping currently supported') return self.write_preps() self.write_blocknum() self.write_spindle() self.write('\n') # rapid to starting point; z first, then x,y iff given # Set the retraction point to the 'standoff' distance above the starting z height. retract_height = z + standoff # unsure if this is needed: if self.z != retract_height: self.rapid(z = retract_height) # then continue to x,y if given if (x != None) or (y != None): self.write_blocknum() self.write(iso_codes.codes.RAPID() ) if (x != None): self.write(iso_codes.codes.X() + (self.fmt % x)) self.x = x if (y != None): self.write(iso_codes.codes.Y() + (self.fmt % y)) self.y = y self.write('\n') self.write_blocknum() self.write( iso_codes.codes.TAP() ) self.write( iso_codes.codes.TAP_DEPTH(self.ffmt,pitch) + iso_codes.codes.SPACE() ) self.write(iso_codes.codes.Z() + (self.fmt % (z - depth))) # This is the 'z' value for the bottom of the tap. self.write_misc() self.write('\n') self.z = retract_height # this cycle returns to the start position, so remember that as z value nc.creator = CreatorEMC2tap()