Split out thread milling generator into its own file
This commit is contained in:
@@ -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))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user