def test000(self): """Test Output Generation. Empty path. Produces only the preamble and postable. """ self.docobj.Path = Path.Path([]) postables = [self.docobj] # Test generating with header # Header contains a time stamp that messes up unit testing. # Only test length of result. args = "--no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertTrue(len(gcode.splitlines()) == 13) # Test without header expected = """(begin preamble) G17 G54 G40 G49 G80 G90 G21 (begin operation: testpath) (machine units: mm/min) (finish operation: testpath) (begin postamble) M05 G17 G54 G90 G80 G40 M2 """ self.docobj.Path = Path.Path([]) postables = [self.docobj] args = "--no-header --no-show-editor" # args = ("--no-header --no-comments --no-show-editor --precision=2") gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertEqual(gcode, expected) # test without comments expected = """G17 G54 G40 G49 G80 G90 G21 M05 G17 G54 G90 G80 G40 M2 """ args = "--no-header --no-comments --no-show-editor" # args = ("--no-header --no-comments --no-show-editor --precision=2") gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertEqual(gcode, expected)
def test040(self): """ Test Post-amble """ self.docobj.Path = Path.Path([]) postables = [self.docobj] args = "--no-header --no-comments --postamble='G0 Z50\nM2' --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[-2] self.assertEqual(result, "G0 Z50") self.assertEqual(gcode.splitlines()[-1], "M2")
def test080(self): """ Test tool change """ c = Path.Command("M6 T2") c2 = Path.Command("M3 S3000") self.docobj.Path = Path.Path([c, c2]) postables = [self.docobj] args = "--no-header --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertEqual(gcode.splitlines()[5], "M5") self.assertEqual(gcode.splitlines()[6], "M6 T2 ") self.assertEqual(gcode.splitlines()[7], "G43 H2 ") self.assertEqual(gcode.splitlines()[8], "M3 S3000 ") # suppress TLO args = "--no-header --no-tlo --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertEqual(gcode.splitlines()[7], "M3 S3000 ")
def test030(self): """ Test Pre-amble """ self.docobj.Path = Path.Path([]) postables = [self.docobj] args = "--no-header --no-comments --preamble='G18 G55' --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[0] self.assertEqual(result, "G18 G55")
def test010(self): """Test command Generation. Test Precision Test imperial / inches """ c = Path.Command("G0 X10 Y20 Z30") self.docobj.Path = Path.Path([c]) postables = [self.docobj] args = "--no-header --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[5] expected = "G0 X10.000 Y20.000 Z30.000 " self.assertEqual(result, expected) args = "--no-header --precision=2 --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[5] expected = "G0 X10.00 Y20.00 Z30.00 " self.assertEqual(result, expected)
def test020(self): """ Test Line Numbers """ c = Path.Command("G0 X10 Y20 Z30") self.docobj.Path = Path.Path([c]) postables = [self.docobj] args = "--no-header --line-numbers --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[5] expected = "N160 G0 X10.000 Y20.000 Z30.000 " self.assertEqual(result, expected)
def test090(self): """ Test comment """ c = Path.Command("(comment)") self.docobj.Path = Path.Path([c]) postables = [self.docobj] args = "--no-header --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[5] expected = "(comment) " self.assertEqual(result, expected)
def test070(self): """ Test axis modal Suppress the axis coordinate if the same as previous """ c = Path.Command("G0 X10 Y20 Z30") c1 = Path.Command("G0 X10 Y30 Z30") self.docobj.Path = Path.Path([c, c1]) postables = [self.docobj] args = "--no-header --axis-modal --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) result = gcode.splitlines()[6] expected = "G0 Y30.000 " self.assertEqual(result, expected)
def test050(self): """ Test inches """ c = Path.Command("G0 X10 Y20 Z30") self.docobj.Path = Path.Path([c]) postables = [self.docobj] args = "--no-header --inches --no-show-editor" gcode = postprocessor.export(postables, "gcode.tmp", args) self.assertEqual(gcode.splitlines()[2], "G20") result = gcode.splitlines()[5] expected = "G0 X0.3937 Y0.7874 Z1.1811 " self.assertEqual(result, expected)
def testCentroid(self): from PathScripts.post import centroid_post as postprocessor args = '--no-header --no-line-numbers --no-comments --no-show-editor --axis-precision=2 --feed-precision=2' gcode = postprocessor.export(self.postlist, 'gcode.tmp', args) referenceFile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/test_centroid_00.ngc' with open(referenceFile, 'r') as fp: refGCode = fp.read() # Use if this test fails in order to have a real good look at the changes if False: with open('tab.tmp', 'w') as fp: fp.write(gcode) if gcode != refGCode: msg = ''.join(difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True))) self.fail("linuxcnc output doesn't match: " + msg)
def testLinuxCNCImperial(self): from PathScripts.post import linuxcnc_post as postprocessor args = "--no-header --no-line-numbers --no-comments --no-show-editor --precision=2 --inches" gcode = postprocessor.export(self.postlist, "gcode.tmp", args) referenceFile = (FreeCAD.getHomePath() + "Mod/Path/PathTests/test_linuxcnc_10.ngc") with open(referenceFile, "r") as fp: refGCode = fp.read() # Use if this test fails in order to have a real good look at the changes if WriteDebugOutput: with open("testLinuxCNCImplerial.tmp", "w") as fp: fp.write(gcode) if gcode != refGCode: msg = "".join( difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True))) self.fail("linuxcnc output doesn't match: " + msg)