From a2c6f966863e603be725bdc06c402e0a97ca4ef1 Mon Sep 17 00:00:00 2001 From: lo Date: Tue, 20 Mar 2018 20:26:54 +0100 Subject: [PATCH] move bevel-gear - by default to z=0 plane - set "reset_origin" to false to get old behaviour --- freecad/gears/features.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/freecad/gears/features.py b/freecad/gears/features.py index 7068f4a..3bac6d0 100644 --- a/freecad/gears/features.py +++ b/freecad/gears/features.py @@ -445,6 +445,8 @@ class bevel_gear(): "App::PropertyFloat", "clearance", "gear_parameter", "clearance") obj.addProperty("App::PropertyInteger", "numpoints", "gear_parameter", "number of points for spline") + obj.addProperty("App::PropertyBool", "reset_origin", "gear_parameter", + "if value is true the gears outer face will match the z=0 plane") obj.addProperty( "App::PropertyLength", "backlash", "gear_parameter", "backlash in mm") obj.addProperty("App::PropertyPythonObject", "gear", "gear_paramenter", "test") @@ -459,6 +461,7 @@ class bevel_gear(): obj.backlash = '0.00 mm' obj.clearance = 0.1 obj.beta = '0 deg' + obj.reset_origin = True self.obj = obj obj.Proxy = self @@ -532,7 +535,13 @@ class bevel_gear(): angle = fp.beta.Value * np.pi / 180. * np.sin(np.pi / 4) / np.sin(fp.pitch_angle.Value * np.pi / 180.) points = [np.array([self.spherical_rot(p, angle) for p in scale_i * pt]) for pt in pts] wires.append(makeBSplineWire(points)) - fp.Shape = makeLoft(wires, True) + shape = makeLoft(wires, True) + if fp.reset_origin: + mat = App.Matrix() + mat.A33 = -1 + mat.move(fcvec([0, 0, scale_1])) + shape = shape.transformGeometry(mat) + fp.Shape = shape # fp.Shape = self.create_teeth(pts, pos1, fp.teeth)