kopia lustrzana https://github.com/vilemduha/blendercam
111 wiersze
3.7 KiB
Python
111 wiersze
3.7 KiB
Python
# Preliminary postprocessor support for Anilam Crusader M CNC controller
|
|
# This code modified from iso.py and emc2.py distriuted with HeeksCAD as of Sep 2010
|
|
# Kurt Jensen 6 Sep 2010
|
|
# Use at your own risk.
|
|
from . import nc
|
|
from . import iso
|
|
|
|
class Creator(iso.Creator):
|
|
def init(self):
|
|
iso.Creator.init(self)
|
|
self.arc_centre_absolute = True
|
|
|
|
def SPACE(self): return(' ')
|
|
|
|
# This version of COMMENT removes comments from the resultant GCode
|
|
# Note: The Anilam hates comments when importing code.
|
|
|
|
def COMMENT(self,comment): return('')
|
|
|
|
def program_begin(self, id, comment):
|
|
self.write('%\n'); # Start of file token that Anilam Crusader M likes
|
|
# No Comments for the Anilam crusaher M, please......
|
|
#self.write( ('(' + comment + ')' + '\n') )
|
|
|
|
def program_end(self):
|
|
self.write_blocknum()
|
|
self.write('G29E\n') # End of code signal for Anilam Crusader M
|
|
self.write('%\n') # EOF signal for Anilam Crusader M
|
|
|
|
############################################################################
|
|
## Settings
|
|
|
|
def imperial(self):
|
|
self.write_blocknum()
|
|
self.write( self.IMPERIAL() + '\n')
|
|
self.fmt.number_of_decimal_places = 4
|
|
|
|
def metric(self):
|
|
self.write_blocknum()
|
|
self.write( self.METRIC() + '\n' )
|
|
self.fmt.number_of_decimal_places = 3
|
|
|
|
def absolute(self):
|
|
self.write_blocknum()
|
|
self.write( self.ABSOLUTE() + '\n')
|
|
|
|
def incremental(self):
|
|
self.write_blocknum()
|
|
self.write( self.INCREMENTAL() + '\n' )
|
|
|
|
def polar(self, on=True):
|
|
if (on) :
|
|
self.write_blocknum()
|
|
self.write(self.POLAR_ON() + '\n' )
|
|
else :
|
|
self.write_blocknum()
|
|
self.write(self.POLAR_OFF() + '\n' )
|
|
|
|
def set_plane(self, plane):
|
|
if (plane == 0) :
|
|
self.write_blocknum()
|
|
self.write('G17\n')
|
|
elif (plane == 1) :
|
|
self.write_blocknum()
|
|
self.write('G18\n')
|
|
elif (plane == 2) :
|
|
self.write_blocknum()
|
|
self.write('G19\n')
|
|
|
|
def comment(self, text):
|
|
self.write_blocknum()
|
|
|
|
############################################################################
|
|
## Tools
|
|
|
|
def tool_change(self, id):
|
|
self.write_blocknum()
|
|
self.write(('T%i' % id) + '\n')
|
|
self.t = id
|
|
|
|
def tool_defn(self, id, name='', params=None):
|
|
self.write_blocknum()
|
|
self.write(('T10%.2d' % id) + ' ')
|
|
|
|
if (radius != None):
|
|
self.write(('X%.3f' % radius) + ' ')
|
|
|
|
if (length != None):
|
|
self.write('Z%.3f' % length)
|
|
|
|
self.write('\n')
|
|
|
|
# This is the coordinate system we're using. G54->G59, G59.1, G59.2, G59.3
|
|
# These are selected by values from 1 to 9 inclusive.
|
|
def workplane(self, id):
|
|
if ((id >= 1) and (id <= 6)):
|
|
self.write_blocknum()
|
|
self.write( (self.WORKPLANE() % (id + self.WORKPLANE_BASE())) + '\n')
|
|
if ((id >= 7) and (id <= 9)):
|
|
self.write_blocknum()
|
|
self.write( ((self.WORKPLANE() % (6 + self.WORKPLANE_BASE())) + ('.%i' % (id - 6))) + '\n')
|
|
|
|
# inhibit N codes being generated for line numbers:
|
|
def write_blocknum(self):
|
|
pass
|
|
|
|
def drill(self, x=None, y=None, dwell=None, depthparams = None, retract_mode=None, spindle_mode=None, internal_coolant_on=None, rapid_to_clearance = None):
|
|
self.write('(Canned drill cycle ops are not yet supported here on this Anilam Crusader M postprocessor)')
|
|
|
|
nc.creator = Creator()
|