26
import Path.Base.Generator.drill as generator
27
import Tests.PathTestUtils as PathTestUtils
29
Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule())
30
Path.Log.trackModule(Path.Log.thisModule())
33
class TestPathDrillGenerator(PathTestUtils.PathTestBase):
35
"""Test Basic Drill Generator Return"""
36
v1 = FreeCAD.Vector(0, 0, 10)
37
v2 = FreeCAD.Vector(0, 0, 0)
39
e = Part.makeLine(v1, v2)
41
result = generator.generate(e)
43
self.assertTrue(type(result) is list)
44
self.assertTrue(type(result[0]) is Path.Command)
48
self.assertTrue(command.Name == "G81")
49
self.assertTrue(command.Parameters["R"] == 10)
50
self.assertTrue(command.Parameters["X"] == 0)
51
self.assertTrue(command.Parameters["Y"] == 0)
52
self.assertTrue(command.Parameters["Z"] == 0)
55
args = {"edge": e, "repeat": 0}
56
self.assertRaises(ValueError, generator.generate, **args)
59
args = {"edge": e, "repeat": 1.5}
60
self.assertRaises(ValueError, generator.generate, **args)
63
"""Test edge alignment check"""
64
v1 = FreeCAD.Vector(0, 10, 10)
65
v2 = FreeCAD.Vector(0, 0, 0)
66
e = Part.makeLine(v1, v2)
67
self.assertRaises(ValueError, generator.generate, e)
69
v1 = FreeCAD.Vector(0, 0, 0)
70
v2 = FreeCAD.Vector(0, 0, 10)
71
e = Part.makeLine(v1, v2)
73
self.assertRaises(ValueError, generator.generate, e)
76
"""Test Basic Peck Drill Generator Return"""
77
v1 = FreeCAD.Vector(0, 0, 10)
78
v2 = FreeCAD.Vector(0, 0, 0)
80
e = Part.makeLine(v1, v2)
82
result = generator.generate(e, peckdepth=1.2)
84
self.assertTrue(type(result) is list)
85
self.assertTrue(type(result[0]) is Path.Command)
89
self.assertTrue(command.Name == "G83")
90
self.assertTrue(command.Parameters["Q"] == 1.2)
93
args = {"edge": e, "peckdepth": 1}
94
self.assertRaises(ValueError, generator.generate, **args)
97
"""Test Basic Dwell Drill Generator Return"""
98
v1 = FreeCAD.Vector(0, 0, 10)
99
v2 = FreeCAD.Vector(0, 0, 0)
101
e = Part.makeLine(v1, v2)
103
result = generator.generate(e, dwelltime=0.5)
105
self.assertTrue(type(result) is list)
106
self.assertTrue(type(result[0]) is Path.Command)
110
self.assertTrue(command.Name == "G82")
111
self.assertTrue(command.Parameters["P"] == 0.5)
114
args = {"edge": e, "dwelltime": 1}
115
self.assertRaises(ValueError, generator.generate, **args)
118
"""Specifying retract height should set R parameter to specified value"""
119
v1 = FreeCAD.Vector(0, 0, 10)
120
v2 = FreeCAD.Vector(0, 0, 0)
122
e = Part.makeLine(v1, v2)
124
result = generator.generate(e, retractheight=20.0)
128
self.assertTrue(command.Parameters["R"] == 20.0)
131
"""Not specifying retract height should set R parameter to Z position of start point"""
132
v1 = FreeCAD.Vector(0, 0, 10)
133
v2 = FreeCAD.Vector(0, 0, 0)
135
e = Part.makeLine(v1, v2)
137
result = generator.generate(e)
141
self.assertTrue(command.Parameters["R"] == 10.0)
144
"""Non-float retract height should raise ValueError"""
145
v1 = FreeCAD.Vector(0, 0, 10)
146
v2 = FreeCAD.Vector(0, 0, 0)
148
e = Part.makeLine(v1, v2)
150
args = {"edge": e, "retractheight": 1}
151
self.assertRaises(ValueError, generator.generate, **args)
152
args = {"edge": e, "retractheight": "1"}
153
self.assertRaises(ValueError, generator.generate, **args)
156
"""Test Error if dwell and peck"""
157
v1 = FreeCAD.Vector(0, 0, 10)
158
v2 = FreeCAD.Vector(0, 0, 0)
160
e = Part.makeLine(v1, v2)
163
args = {"edge": e, "dwelltime": 1.0, "peckdepth": 1.0}
164
self.assertRaises(ValueError, generator.generate, **args)
168
v1 = FreeCAD.Vector(0, 0, 10)
169
v2 = FreeCAD.Vector(0, 0, 0)
171
e = Part.makeLine(v1, v2)
173
args = {"edge": e, "peckdepth": 1.0, "chipBreak": True}
174
result = generator.generate(**args)
177
self.assertTrue(command.Name == "G73")
180
"""Test feed retract enabled produces G85"""
181
v1 = FreeCAD.Vector(0, 0, 10)
182
v2 = FreeCAD.Vector(0, 0, 0)
184
e = Part.makeLine(v1, v2)
186
args = {"edge": e, "feedRetract": True}
187
result = generator.generate(**args)
190
self.assertEqual(command.Name, "G85")
192
self.assertFalse(hasattr(command.Parameters, "Q"))
193
self.assertFalse(hasattr(command.Parameters, "P"))
196
"""Test that dwell can be used when feed retract is not enabled"""
197
v1 = FreeCAD.Vector(0, 0, 10)
198
v2 = FreeCAD.Vector(0, 0, 0)
200
e = Part.makeLine(v1, v2)
202
args = {"edge": e, "dwelltime": 0.5, "feedRetract": False}
203
result = generator.generate(**args)
207
self.assertEqual(command.Name, "G82")
208
self.assertEqual(command.Parameters["P"], 0.5)
211
"""Test that peck can be used when feed retract is not enabled"""
212
v1 = FreeCAD.Vector(0, 0, 10)
213
v2 = FreeCAD.Vector(0, 0, 0)
215
e = Part.makeLine(v1, v2)
217
args = {"edge": e, "peckdepth": 1.0, "feedRetract": False}
218
result = generator.generate(**args)
222
self.assertTrue(command.Name == "G83")
223
self.assertEqual(command.Parameters["Q"], 1.0)
226
"""Test error when feed retract and dwell are enabled"""
227
v1 = FreeCAD.Vector(0, 0, 10)
228
v2 = FreeCAD.Vector(0, 0, 0)
230
e = Part.makeLine(v1, v2)
232
args = {"edge": e, "dwelltime": 1.0, "feedRetract": True}
233
self.assertRaises(ValueError, generator.generate, **args)
236
"""Test error when feed retract and peck are enabled"""
237
v1 = FreeCAD.Vector(0, 0, 10)
238
v2 = FreeCAD.Vector(0, 0, 0)
240
e = Part.makeLine(v1, v2)
242
args = {"edge": e, "peckdepth": 1.0, "chipBreak": True, "feedRetract": True}
243
self.assertRaises(ValueError, generator.generate, **args)