From 2522f044cd7ba46da485897db79f1c25f3e0b2e2 Mon Sep 17 00:00:00 2001 From: Matt Mets Date: Fri, 22 Apr 2011 10:46:39 -0400 Subject: [PATCH] Add generator script to make multiple toolhead touchdowns, to be used with a depth indicator to determine platform levelness. --- scripts/gcode_generator/platform_leveler.py | 27 ++++++++++++++++++++ scripts/gcode_generator/toolpathgenerator.py | 16 +++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100755 scripts/gcode_generator/platform_leveler.py mode change 100644 => 100755 scripts/gcode_generator/toolpathgenerator.py diff --git a/scripts/gcode_generator/platform_leveler.py b/scripts/gcode_generator/platform_leveler.py new file mode 100755 index 0000000..325cb4c --- /dev/null +++ b/scripts/gcode_generator/platform_leveler.py @@ -0,0 +1,27 @@ +#!/usr/bin/python + +from toolpathgenerator import * + +startCode = '''\ +(*** Tool Path Generator ***) +G21 (set units to mm) +G90 (set positioning to absolute) +M103 (Make sure extruder is off) +(**** begin homing ****) +G162 Z F500 (home Z axis maximum) +G161 X Y F2500 (home XY axes minimum) +M132 X Y Z A B (Recall stored home offsets for XYZAB axis) +''' + +gen = ToolpathGenerator() +gen.open('platform_leveler.gcode', startcode=startCode) +gen.moveToXYZ(0,0,20,1500) + +for x in range(-40,41,40): + for y in range(-50,51,50): + gen.moveToXYZ(x,y,10,1500) + gen.moveToXYZ(x,y,0,1500) + gen.prompt("Ok.") + gen.moveToXYZ(x,y,10,1500) + +gen.close(shutdowncode="") diff --git a/scripts/gcode_generator/toolpathgenerator.py b/scripts/gcode_generator/toolpathgenerator.py old mode 100644 new mode 100755 index 8f77204..247cec0 --- a/scripts/gcode_generator/toolpathgenerator.py +++ b/scripts/gcode_generator/toolpathgenerator.py @@ -42,8 +42,12 @@ M103 (extruder off) ''' +promptTemplate = Template('M1 ($msg)\n') + moveXYPointTemplate = Template('G1 X$xpos Y$ypos F$speed (move to point)\n') +moveXYZPointTemplate = Template('G1 X$xpos Y$ypos Z$zpos F$speed (move to point)\n') + class ToolpathGenerator: """ simple state machine for a gcode generator """ def __init__(self): @@ -58,14 +62,18 @@ def open(self, filename, startcode=""): self.output = open(self.filename, 'w') self.output.write(startcode) - def close(self, shutdowncode=""): - if (shutdowncode==""): - shutdowncode = defaultShutdownCode + def close(self, shutdowncode=defaultShutdownCode): self.output.write(shutdowncode) self.output.close() def moveToXY(self, X, Y, S): self.output.write(moveXYPointTemplate.substitute(xpos=X, ypos=Y, speed=S)) + + def moveToXYZ(self, X, Y, Z, S): + self.output.write(moveXYZPointTemplate.substitute(xpos=X, ypos=Y, zpos=Z, speed=S)) + + def prompt(self, message=""): + self.output.write(promptTemplate.substitute(msg=message)) def engageTool(self): self.output.write(engageTool) @@ -97,4 +105,4 @@ def makeXYZigZag(generator, startX, startY, lenX, lenY, speed, Zags): x += lenX generator.moveToXY(x,y,speed) - generator.disengageTool() \ No newline at end of file + generator.disengageTool()