Split out thread milling generator into its own file

This commit is contained in:
Markus Lampert
2022-03-01 17:35:02 -08:00
committed by mlampert
parent 69a17578d3
commit c02dedbb3c
6 changed files with 461 additions and 378 deletions

View File

@@ -92,213 +92,3 @@ class TestPathThreadMilling(PathTestBase):
PathThreadMilling.threadPasses(5, radii, False, 10, 9, 0, 0),
[9.552786, 9.367544, 9.225403, 9.105573, 9],
)
def test40(self):
"""Verify thread commands for a single thread"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 1
pitch = 1
radius = 3
leadInOut = False
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
"G1 Y3.000000",
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
"G1 X0.000000 Y2.000000",
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(0, 2, zFinal))
def test41(self):
"""Verify thread commands for a thwo threads"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 2
pitch = 1
radius = 3
leadInOut = False
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
"G1 Y3.000000",
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
"G2 J-3.000000 Y-3.000000 Z1.500000",
"G2 J3.000000 Y3.000000 Z2.000000",
"G1 X0.000000 Y2.000000",
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(0, 2, zFinal))
def test42(self):
"""Verify thread commands for a one and a half threads"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 1.5
pitch = 1
radius = 3
leadInOut = False
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
"G1 Y3.000000",
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
"G2 J-3.000000 Y-3.000000 Z1.500000",
"G1 X0.000000 Y-2.000000",
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(0, -2, zFinal))
def test43(self):
"""Verify thread commands for a one and 3 quarter threads"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 1.75
pitch = 1
radius = 3
leadInOut = False
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
"G1 Y3.000000",
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
"G2 J-3.000000 Y-3.000000 Z1.500000",
#'(------- finish-thread -------)',
"G2 J3.000000 X-3.000000 Y0.000000 Z1.750000",
#'(------- finish-thread -------)',
"G1 X-2.000000 Y0.000000",
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(-2, 0, zFinal))
def test44(self):
"""Verify thread commands for a one and 3 quarter threads - CCW"""
center = FreeCAD.Vector()
cmd = "G3"
zStart = 0
zFinal = 1.75
pitch = 1
radius = 3
leadInOut = False
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
"G1 Y3.000000",
"G3 J-3.000000 Y-3.000000 Z0.500000",
"G3 J3.000000 Y3.000000 Z1.000000",
"G3 J-3.000000 Y-3.000000 Z1.500000",
#'(------- finish-thread -------)',
"G3 J3.000000 X3.000000 Y0.000000 Z1.750000",
#'(------- finish-thread -------)',
"G1 X2.000000 Y0.000000",
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(2, 0, zFinal))
def test50(self):
"""Verify lead in/out commands for a single thread"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 1
pitch = 1
radius = 3
leadInOut = True
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
#'(------- lead-in -------)',
"G2 J0.500000 Y3.000000",
#'(------- lead-in -------)',
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
#'(------- lead-out -------)',
"G2 I0.000000 J-0.500000 X0.000000 Y2.000000",
#'(------- lead-out -------)',
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(0, 2, zFinal))
def test51(self):
"""Verify lead in/out commands for one and a half threads"""
center = FreeCAD.Vector()
cmd = "G2"
zStart = 0
zFinal = 1.5
pitch = 1
radius = 3
leadInOut = True
elevator = 2
path, start = PathThreadMilling.threadCommands(
center, cmd, zStart, zFinal, pitch, radius, leadInOut, elevator, None
)
gcode = [
"G0 X0.000000 Y2.000000",
"G0 Z0.000000",
#'(------- lead-in -------)',
"G2 J0.500000 Y3.000000",
#'(------- lead-in -------)',
"G2 J-3.000000 Y-3.000000 Z0.500000",
"G2 J3.000000 Y3.000000 Z1.000000",
"G2 J-3.000000 Y-3.000000 Z1.500000",
#'(------- lead-out -------)',
"G2 I0.000000 J0.500000 X0.000000 Y-2.000000",
#'(------- lead-out -------)',
]
self.assertEqual([p.toGCode() for p in path], gcode)
self.assertCoincide(start, FreeCAD.Vector(0, -2, zFinal))