blendercam/scripts/addons/fabex/post_processors/makerbot_codes.py

282 wiersze
6.6 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"
# Wait for all temperature and slow-changing variables to reach set values
def ALL_WAIT(self):
return self.SPACE() + "M116"
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()