Merge pull request #10430 from Stevecosoft/forum-80599_helix

Path: helix toolpath was not allowing Extra Offset values that it should
This commit is contained in:
sliptonic
2023-09-05 09:03:38 -05:00
committed by GitHub
2 changed files with 24 additions and 14 deletions

View File

@@ -71,6 +71,9 @@ def generate(
)
)
# inner_radius contains not a radius but the value from Extra Offset, which is the distance between the hole radius as designed and the hole radius to be cut.
# hole_radius contains the designed hole radius - inner_radius.
if type(hole_radius) not in [float, int]:
raise TypeError("Invalid type for hole radius")
@@ -83,13 +86,6 @@ def generate(
if type(tool_diameter) not in [float, int]:
raise TypeError("tool_diameter must be a float")
if inner_radius > 0 and hole_radius - inner_radius < tool_diameter:
raise ValueError(
"hole_radius - inner_radius = {0} is < tool diameter of {1}".format(
hole_radius - inner_radius, tool_diameter
)
)
if not hole_radius * 2 > tool_diameter:
raise ValueError(
"Cannot helix a hole of diameter {0} with a tool of diameter {1}".format(

View File

@@ -109,17 +109,31 @@ G0 X5.000000 Y5.000000 Z18.000000G0 Z20.000000"
args["tool_diameter"] = "5"
self.assertRaises(TypeError, generator.generate, **args)
# require tool fit 2: hole diameter not greater than tool diam
# with zero inner radius
args = _resetArgs()
# require tool fit 1: radius diff less than tool diam
args["hole_radius"] = 10.0
args["inner_radius"] = 6.0
args["hole_radius"] = 2.0
args["inner_radius"] = 0.0
args["tool_diameter"] = 5.0
self.assertRaises(ValueError, generator.generate, **args)
# require tool fit 2: hole diameter not greater than tool diam
# with zero inner radius
args["hole_radius"] = 2.0
args["inner_radius"] = 0.0
# require tool fit: actual hole diameter after taking Extra Offset into account >= tool diameter
# 1. Extra Offset just small enough to leave room for tool should not raise an error
args = _resetArgs()
designed_hole_diameter = 10.0
extra_offset = 2.49
args["hole_radius"] = designed_hole_diameter / 2 - extra_offset
args["inner_radius"] = extra_offset
args["tool_diameter"] = 5.0
result = generator.generate(**args)
self.assertTrue(result)
# 2. Extra Offset does not leave room for tool, should raise an error
args = _resetArgs()
designed_hole_diameter = 10.0
extra_offset = 2.50
args["hole_radius"] = designed_hole_diameter / 2 - extra_offset
args["inner_radius"] = extra_offset
args["tool_diameter"] = 5.0
self.assertRaises(ValueError, generator.generate, **args)