################################################################################ # centroid1.py # # Post Processor for the centroid M40 machine # # # Dan Falck, 7th March 2010 from . import nc from . import iso_modal import math import datetime now = datetime.datetime.now() ################################################################################ class Creator(iso_modal.Creator): def __init__(self): iso_modal.Creator.__init__(self) self.useCrc = True self.useCrcCenterline = True self.absolute_flag = True self.prev_g91 = "" self.safe_z = None def SPINDLE(self, format, speed): return self.SPACE() + "S" + (format % speed) ################################################################################ # cutter comp # def crc_on(self): # self.useCrc = True # self.useCrcCenterline = True # def crc_off(self): # self.useCrc = False ################################################################################ # general def comment(self, text): self.write(";" + text + "\n") def write_blocknum(self): pass ################################################################################ # settings for absolute or incremental mode def absolute(self): self.write(self.ABSOLUTE() + "\n") self.absolute_flag = True def incremental(self): self.write(self.INCREMENTAL() + "\n") self.absolute_flag = False ################################################################################ # APT style INSERT- insert anything into program def insert(self, text): self.write((text + "\n")) ################################################################################ # program begin and end def program_begin(self, id, name=""): self.write(";time:" + str(now) + "\n") self.write("G17 G20 G80 G40 G90\n") def program_end(self): self.write("M05\n") self.write("M25\n") self.write("G00 X-1.0 Y1.0\n") self.write("G17 G80 G40 G90\n") self.write("M99\n") def program_stop(self, optional=False): self.write_blocknum() if optional: self.write(self.STOP_OPTIONAL() + "\n") else: self.write("M05\n") self.write("M25\n") self.write(self.STOP() + "\n") self.prev_g0123 = "" ################################################################################ # coordinate system ie G54-G59 def workplane(self, id): self.write("M25\n") if (id >= 1) and (id <= 6): self.g_list.append(self.WORKPLANE() % (id + self.WORKPLANE_BASE())) if (id >= 7) and (id <= 9): self.g_list.append( ((self.WORKPLANE() % (6 + self.WORKPLANE_BASE())) + (".%i" % (id - 6))) ) self.prev_g0123 = "" ################################################################################ # clearance plane def clearanceplane(self, z=None): self.safe_z = z ################################################################################ # return to home def rapid_home(self, x=None, y=None, z=None, a=None, b=None, c=None): """Rapid relative to home position""" self.write("M05\n") self.write("M25\n") self.write(self.RAPID()) self.write(self.X() + (self.fmt % x)) self.write(self.Y() + (self.fmt % y)) self.write("\n") ################################################################################ # tool info def tool_change(self, id): self.write_blocknum() self.write((self.TOOL() % id) + "\n") self.t = id self.write("M25\n") if self.safe_z == None: self.write("G43 H" + str(id) + " Z") self.write("1.0") self.write("\n") else: self.write("G43 H" + str(id) + " Z") self.write(str(self.safe_z)) self.write("\n") def tool_defn(self, id, name="", params=None): # self.write('G43 \n') pass def write_spindle(self): pass def spindle(self, s, clockwise): if s < 0: clockwise = not clockwise s = abs(s) self.s = self.SPINDLE(self.FORMAT_ANG(), s) if clockwise: # self.s = self.SPINDLE_CW() + self.s self.s = self.SPINDLE_CW() self.write(self.s + "\n") self.write("G04 P2.0 \n") else: self.s = self.SPINDLE_CCW() + self.s def end_canned_cycle(self): self.write_blocknum() self.write(self.SPACE() + self.END_CANNED_CYCLE() + "\n") self.prev_drill = "" self.prev_g0123 = "" self.prev_z = "" self.prev_f = "" self.prev_retract = "" self.write("M05\n") self.write("M25\n") self.write("G00 X-1.0 Y1.0\n") nc.creator = Creator()