Implement libarea improvements for profile Implement libarea pocketing. consolidate occ and libarea pocketing operation into one with algorithm switch consolidate occ aand libarea profile op into one with algorithm switch add basic engraving operation. Add rough UI for profile holding tags implement holding tags for libarea profile. implement basic defaults for depth settings. First move in Drilling is rapid to clearance height. UI needs lots of work but is usable.
129 lines
5.8 KiB
Python
129 lines
5.8 KiB
Python
################################################################################
|
|
# makerbot_codes.py
|
|
#
|
|
# a lot like iso_codes.py but with reprap/makerbot specific M codes.
|
|
#
|
|
# Brad Collette, 12th Sept 2010
|
|
#
|
|
# Many of these codes have nothing to do with reprap/additive machining but are left here in anticipation of future hybrid machines.
|
|
|
|
class Codes():
|
|
def SPACE(self): return(' ')
|
|
def FORMAT_FEEDRATE(self): return('%.2f')
|
|
def FORMAT_IN(self): return('%.5f')
|
|
def FORMAT_MM(self): return('%.3f')
|
|
def FORMAT_ANG(self): return('%.1f')
|
|
def FORMAT_TIME(self): return('%.2f')
|
|
def FORMAT_DWELL(self): return('P%f')
|
|
|
|
def BLOCK(self): return('N%i' + self.SPACE())
|
|
def COMMENT(self,comment): return( (' (%s)\n' % comment ) )
|
|
def VARIABLE(self): return( '#%i')
|
|
def VARIABLE_SET(self): return( '=%.3f')
|
|
|
|
def PROGRAM(self): return( 'O%i')
|
|
def PROGRAM_END(self): return( 'M02')
|
|
|
|
def SUBPROG_CALL(self): return( 'M98' + self.SPACE() + 'P%i')
|
|
def SUBPROG_END(self): return( 'M99')
|
|
|
|
def STOP_OPTIONAL(self): return('M01')
|
|
def STOP(self): return('M00')
|
|
|
|
def IMPERIAL(self): return(self.SPACE() + 'G20')
|
|
def METRIC(self): return(self.SPACE() + 'G21' + self.SPACE())
|
|
def ABSOLUTE(self): return(self.SPACE() + 'G90' + self.SPACE())
|
|
def INCREMENTAL(self): return(self.SPACE() + 'G91')
|
|
def SET_TEMPORARY_COORDINATE_SYSTEM(self): return('G92' + self.SPACE())
|
|
def REMOVE_TEMPORARY_COORDINATE_SYSTEM(self): return('G92.1' + self.SPACE())
|
|
def POLAR_ON(self): return(self.SPACE() + 'G16')
|
|
def POLAR_OFF(self): return(self.SPACE() + 'G15')
|
|
def PLANE_XY(self): return(self.SPACE() + 'G17')
|
|
def PLANE_XZ(self): return(self.SPACE() + 'G18')
|
|
def PLANE_YZ(self): return(self.SPACE() + 'G19')
|
|
|
|
def TOOL(self): return(self.SPACE() +'T%i')
|
|
def TOOL_DEFINITION(self): return('G10' + self.SPACE() + 'L1' + self.SPACE())
|
|
|
|
def WORKPLANE(self): return('G%i')
|
|
def WORKPLANE_BASE(self): return(53)
|
|
|
|
def FEEDRATE(self): return((self.SPACE() + ' F'))
|
|
def SPINDLE(self, format, speed): return(self.SPACE() + 'S' + (format % speed))
|
|
def SPINDLE_CW(self): return(self.SPACE() + 'M03')
|
|
def SPINDLE_CCW(self): return(self.SPACE() + 'M04')
|
|
def COOLANT_OFF(self): return(self.SPACE() + 'M09')
|
|
def COOLANT_MIST(self): return(self.SPACE() + 'M07')
|
|
def COOLANT_FLOOD(self): return(self.SPACE() + 'M08')
|
|
def GEAR_OFF(self): return(self.SPACE() + '?')
|
|
def GEAR(self): return('M%i')
|
|
def GEAR_BASE(self): return(37)
|
|
|
|
def RAPID(self): return('G0')
|
|
def FEED(self): return('G1')
|
|
def ARC_CW(self): return('G2')
|
|
def ARC_CCW(self): return('G3')
|
|
def DWELL(self): return('G04')
|
|
def DRILL(self): return(self.SPACE() + 'G81')
|
|
def DRILL_WITH_DWELL(self, format, dwell): return(self.SPACE() + 'G82' + (format % dwell))
|
|
def PECK_DRILL(self): return(self.SPACE() + 'G83')
|
|
def PECK_DEPTH(self, format, depth): return(self.SPACE() + 'Q' + (format % depth))
|
|
def RETRACT(self, format, height): return(self.SPACE() + 'R' + (format % height))
|
|
def END_CANNED_CYCLE(self): return(self.SPACE() + 'G80')
|
|
|
|
def X(self): return(self.SPACE() + 'X')
|
|
def Y(self): return(self.SPACE() + 'Y')
|
|
def Z(self): return(self.SPACE() + 'Z')
|
|
def A(self): return(self.SPACE() + 'A')
|
|
def B(self): return(self.SPACE() + 'B')
|
|
def C(self): return(self.SPACE() + 'C')
|
|
def CENTRE_X(self): return(self.SPACE() + 'I')
|
|
def CENTRE_Y(self): return(self.SPACE() + 'J')
|
|
def CENTRE_Z(self): return(self.SPACE() + 'K')
|
|
def RADIUS(self): return(self.SPACE() + 'R')
|
|
def TIME(self): return(self.SPACE() + 'P')
|
|
|
|
def PROBE_TOWARDS_WITH_SIGNAL(self): return('G38.2' + self.SPACE())
|
|
def PROBE_TOWARDS_WITHOUT_SIGNAL(self): return('G38.3' + self.SPACE())
|
|
def PROBE_AWAY_WITH_SIGNAL(self): return('G38.4' + self.SPACE())
|
|
def PROBE_AWAY_WITHOUT_SIGNAL(self): return('G38.5' + self.SPACE())
|
|
|
|
def MACHINE_COORDINATES(self): return('G53' + self.SPACE())
|
|
|
|
def EXTRUDER_ON (self): return('M101') #deprecated
|
|
def EXTRUDER_OFF (self): return('M103')
|
|
def EXTRUDER_TEMP (self, degree_celsius): return('M104 S' + '%s' % degree_celsius)
|
|
def EXTRUDER_TEMP_WAIT (self, degree_celsius): return('M109 S' + '%s' % degree_celsius)
|
|
def READ_EXTRUDER_TEMP (self): return('M105')
|
|
def EXTRUDER_SPEED_PWM (self, speed_in_PWM): return('M108 S' + '%s' % speed_in_PWM) #deprecated
|
|
def EXTRUDER_SPEED_RPM (self, speed_in_RPM): return('M108 P' + '%s' % speed_in_RPM) #deprecated
|
|
|
|
def STEPPERS_OFF(self): return(self.SPACE() + 'M118')
|
|
|
|
def ALL_WAIT (self): return(self.SPACE() + 'M116') # Wait for all temperature and slow-changing variables to reach set values
|
|
|
|
def FAN_ON (self): return(self.SPACE() + 'M106')
|
|
def FAN_OFF (self): return(self.SPACE() + 'M107')
|
|
|
|
def VALVE_OPEN (self, delay): return(self.SPACE() + ('M126 P' + '%' % delay) )
|
|
def VALVE_CLOSE (self, delay): return(self.SPACE() + ('M127 P' + '%' % delay) )
|
|
|
|
def BUILD_BED_TEMP (self, degree_celsius): return('M140 S' + '%s' % degree_celsius)
|
|
def BED_HOLDING_PRESSURE (self, pressure): return('M142 S' + '%s' % pressure)
|
|
|
|
def CHAMBER_TEMP (self, degree_celsius): return('M141 S' + '%s' % degree_celsius)
|
|
|
|
#The following codes are listed on the reprap wiki page at http://reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes but require more study.
|
|
#
|
|
#G28 G Y Xnnn Ynnn Znnn Move to origin (on specified axes only, if X/Y/Z parameters are present)
|
|
#M105 M N none Request current extruder and base temperatures (in Celsius)
|
|
#M110 M N none Set current line number to Nxxx value preceeding command
|
|
#M111 M N Snnn Set debug level bitfield to value of parameter (default 6)
|
|
#M112 M N none Emergency stop (stop immediately, discarding any buffered commands)
|
|
#M113 M N Snnn Set Extruder PWM (to value defined by pot, or to parameter value if present)
|
|
#M114 M N none Get Current Position (return current X, Y, Z and E values)
|
|
#M117 M N none Get Zero Position (return X, Y, Z and E values of endstop hits)
|
|
|
|
|
|
codes = Codes()
|