示例#1
0
    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)
示例#2
0
 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")
示例#3
0
    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 ")
示例#4
0
    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")
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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)