Enhance the translation support
Migrate some strings marked with `translate()` to use `QT_TRANSLATE_NOOP()`
This commit is contained in:
@@ -23,10 +23,11 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears import __version__
|
||||
from pygears._functions import arc_from_points_and_center
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
def fcvec(x):
|
||||
"""tranforms a list or numpy array to a FreeCAD Vector which is
|
||||
@@ -100,7 +101,7 @@ class BaseGear:
|
||||
"App::PropertyString",
|
||||
"version",
|
||||
"version",
|
||||
translate("BaseGear", "freecad.gears-version"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "freecad.gears-version"),
|
||||
1,
|
||||
)
|
||||
obj.version = __version__
|
||||
|
||||
@@ -20,12 +20,14 @@ from freecad import app
|
||||
from freecad import part
|
||||
|
||||
import numpy as np
|
||||
from .translateutils import translate
|
||||
|
||||
from pygears.bevel_tooth import BevelTooth
|
||||
from pygears._functions import rotation3D
|
||||
|
||||
from .basegear import BaseGear, fcvec, make_bspline_wire
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class BevelGear(BaseGear):
|
||||
"""parameters:
|
||||
@@ -40,50 +42,50 @@ class BevelGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("BevelGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("BevelGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pitch_angle",
|
||||
"involute",
|
||||
translate("BevelGear", "pitch_angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pitch_angle"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute_parameter",
|
||||
translate("BevelGear", "pressure_angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure_angle"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("BevelGear", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate("BevelGear", "clearance"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "clearance"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"numpoints",
|
||||
"precision",
|
||||
translate("BevelGear", "number of points for spline"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of points for spline"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"reset_origin",
|
||||
"base",
|
||||
translate(
|
||||
"BevelGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if value is true the gears outer face will match the z=0 plane",
|
||||
),
|
||||
)
|
||||
@@ -91,8 +93,8 @@ class BevelGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"backlash",
|
||||
"tolerance",
|
||||
translate(
|
||||
"BevelGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The arc length on the pitch circle by which the tooth thicknes is reduced.",
|
||||
),
|
||||
)
|
||||
@@ -100,19 +102,19 @@ class BevelGear(BaseGear):
|
||||
"App::PropertyPythonObject",
|
||||
"gear",
|
||||
"base",
|
||||
translate("BevelGear", "test"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "test"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("BevelGear", "angle used for spiral bevel-gears"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "angle used for spiral bevel-gears"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"dw",
|
||||
"computed",
|
||||
translate("BevelGear", "The pitch diameter."),
|
||||
QT_TRANSLATE_NOOP("App::Property", "The pitch diameter."),
|
||||
)
|
||||
obj.setExpression(
|
||||
"dw", "num_teeth * module"
|
||||
@@ -124,8 +126,8 @@ class BevelGear(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"angular_backlash",
|
||||
"computed",
|
||||
translate(
|
||||
"BevelGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The angle by which this gear can turn without moving the mating gear.",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -20,8 +20,6 @@ import os
|
||||
from freecad import app
|
||||
from freecad import gui
|
||||
|
||||
from .translateutils import translate
|
||||
|
||||
from .basegear import ViewProviderGear, BaseGear
|
||||
|
||||
from .timinggear_t import TimingGearT
|
||||
@@ -40,6 +38,8 @@ from .hypocycloidgear import HypoCycloidGear
|
||||
|
||||
from .connector import GearConnector, ViewProviderGearConnector
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class BaseCommand(object):
|
||||
NAME = ""
|
||||
@@ -101,115 +101,127 @@ class CreateInvoluteGear(BaseCommand):
|
||||
NAME = "InvoluteGear"
|
||||
GEAR_FUNCTION = InvoluteGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "involutegear.svg")
|
||||
MenuText = translate("Commands", "Involute Gear")
|
||||
ToolTip = translate("Commands", "Create an external involute gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_InvoluteGear", "Involute Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP(
|
||||
"FCGear_InvoluteGear", "Create an external involute gear"
|
||||
)
|
||||
|
||||
|
||||
class CreateInternalInvoluteGear(BaseCommand):
|
||||
NAME = "InternalInvoluteGear"
|
||||
GEAR_FUNCTION = InternalInvoluteGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "internalinvolutegear.svg")
|
||||
MenuText = translate("Commands", "Internal Involute Gear")
|
||||
ToolTip = translate("Commands", "Create an internal involute gear")
|
||||
MenuText = QT_TRANSLATE_NOOP(
|
||||
"FCGear_InternalInvoluteGear", "Internal Involute Gear"
|
||||
)
|
||||
ToolTip = QT_TRANSLATE_NOOP(
|
||||
"FCGear_InternalInvoluteGear", "Create an internal involute gear"
|
||||
)
|
||||
|
||||
|
||||
class CreateInvoluteRack(BaseCommand):
|
||||
NAME = "InvoluteRack"
|
||||
GEAR_FUNCTION = InvoluteGearRack
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "involuterack.svg")
|
||||
MenuText = translate("Commands", "Involute Rack")
|
||||
ToolTip = translate("Commands", "Create an Involute rack")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_InvoluteRack", "Involute Rack")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_InvoluteRack", "Create an Involute rack")
|
||||
|
||||
|
||||
class CreateCycloidRack(BaseCommand):
|
||||
NAME = "CycloidRack"
|
||||
GEAR_FUNCTION = CycloidGearRack
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "cycloidrack.svg")
|
||||
MenuText = translate("Commands", "Cycloid Rack")
|
||||
ToolTip = translate("Commands", "Create an Cycloid rack")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_CycloidRack", "Cycloid Rack")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_CycloidRack", "Create an Cycloid rack")
|
||||
|
||||
|
||||
class CreateCrownGear(BaseCommand):
|
||||
NAME = "CrownGear"
|
||||
GEAR_FUNCTION = CrownGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "crowngear.svg")
|
||||
MenuText = translate("Commands", "Crown Gear")
|
||||
ToolTip = translate("Commands", "Create a Crown gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_CrownGear", "Crown Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_CrownGear", "Create a Crown gear")
|
||||
|
||||
|
||||
class CreateCycloidGear(BaseCommand):
|
||||
NAME = "CycloidGear"
|
||||
GEAR_FUNCTION = CycloidGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "cycloidgear.svg")
|
||||
MenuText = translate("Commands", "Cycloid Gear")
|
||||
ToolTip = translate("Commands", "Create a Cycloid gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_CycloidGear", "Cycloid Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_CycloidGear", "Create a Cycloid gear")
|
||||
|
||||
|
||||
class CreateBevelGear(BaseCommand):
|
||||
NAME = "BevelGear"
|
||||
GEAR_FUNCTION = BevelGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "bevelgear.svg")
|
||||
MenuText = translate("Commands", "Bevel Gear")
|
||||
ToolTip = translate("Commands", "Create a Bevel gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_BevelGear", "Bevel Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_BevelGear", "Create a Bevel gear")
|
||||
|
||||
|
||||
class CreateHypoCycloidGear(BaseCommand):
|
||||
NAME = "HypocycloidGear"
|
||||
GEAR_FUNCTION = HypoCycloidGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "hypocycloidgear.svg")
|
||||
MenuText = translate("Commands", "HypoCycloid Gear")
|
||||
ToolTip = translate("Commands", "Create a HypoCycloid gear with its pins")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_HypoCycloidGear", "HypoCycloid Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP(
|
||||
"FCGear_HypoCycloidGear", "Create a HypoCycloid gear with its pins"
|
||||
)
|
||||
|
||||
|
||||
class CreateWormGear(BaseCommand):
|
||||
NAME = "WormGear"
|
||||
GEAR_FUNCTION = WormGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "wormgear.svg")
|
||||
MenuText = translate("Commands", "Worm Gear")
|
||||
ToolTip = translate("Commands", "Create a Worm gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_WormGear", "Worm Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_WormGear", "Create a Worm gear")
|
||||
|
||||
|
||||
class CreateTimingGearT(BaseCommand):
|
||||
NAME = "TimingGearT"
|
||||
GEAR_FUNCTION = TimingGearT
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "timinggear_t.svg")
|
||||
MenuText = translate("Commands", "Timing Gear T-shape")
|
||||
ToolTip = translate("Commands", "Create a Timing gear T-shape")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_TimingGearT", "Timing Gear T-shape")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_TimingGearT", "Create a Timing gear T-shape")
|
||||
|
||||
|
||||
class CreateTimingGear(BaseCommand):
|
||||
NAME = "TimingGear"
|
||||
GEAR_FUNCTION = TimingGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "timinggear.svg")
|
||||
MenuText = translate("Commands", "Timing Gear")
|
||||
ToolTip = translate("Commands", "Create a Timing gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_TimingGear", "Timing Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_TimingGear", "Create a Timing gear")
|
||||
|
||||
|
||||
class CreateLanternGear(BaseCommand):
|
||||
NAME = "LanternGear"
|
||||
GEAR_FUNCTION = LanternGear
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "lanterngear.svg")
|
||||
MenuText = translate("Commands", "Lantern Gear")
|
||||
ToolTip = translate("Commands", "Create a Lantern gear")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_LanternGear", "Lantern Gear")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_LanternGear", "Create a Lantern gear")
|
||||
|
||||
|
||||
class CreateGearConnector(BaseCommand):
|
||||
NAME = "GearConnector"
|
||||
GEAR_FUNCTION = GearConnector
|
||||
Pixmap = os.path.join(BaseCommand.ICONDIR, "gearconnector.svg")
|
||||
MenuText = translate("Commands", "Combine two gears")
|
||||
ToolTip = translate("Commands", "Combine two gears")
|
||||
MenuText = QT_TRANSLATE_NOOP("FCGear_GearConnector", "Combine two gears")
|
||||
ToolTip = QT_TRANSLATE_NOOP("FCGear_GearConnector", "Combine two gears")
|
||||
|
||||
def Activated(self):
|
||||
try:
|
||||
selection = gui.Selection.getSelection()
|
||||
|
||||
if len(selection) != 2:
|
||||
raise ValueError("Please select two gear objects.")
|
||||
raise ValueError(
|
||||
app.Qt.translate("Log", "Please select two gear objects.")
|
||||
)
|
||||
|
||||
for obj in selection:
|
||||
if not isinstance(obj.Proxy, BaseGear):
|
||||
raise TypeError("Selected object is not a gear.")
|
||||
raise TypeError(
|
||||
app.Qt.translate("Log", "Selected object is not a gear.")
|
||||
)
|
||||
|
||||
obj = app.ActiveDocument.addObject("Part::FeaturePython", self.NAME)
|
||||
GearConnector(obj, selection[0], selection[1])
|
||||
|
||||
@@ -25,13 +25,14 @@ from freecad import app
|
||||
from pygears import __version__
|
||||
from pygears.computation import compute_shifted_gears
|
||||
|
||||
from .translateutils import translate
|
||||
from .involutegear import InvoluteGear
|
||||
from .internalinvolutegear import InternalInvoluteGear
|
||||
from .involutegearrack import InvoluteGearRack
|
||||
from .cycloidgear import CycloidGear
|
||||
from .cycloidgearrack import CycloidGearRack
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class ViewProviderGearConnector(object):
|
||||
def __init__(self, vobj, icon_fn=None):
|
||||
@@ -68,35 +69,35 @@ class GearConnector(object):
|
||||
"App::PropertyString",
|
||||
"version",
|
||||
"version",
|
||||
translate("GearConnector", "freecad.gears-version"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "freecad.gears-version"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLink",
|
||||
"master_gear",
|
||||
"gear",
|
||||
translate("GearConnector", "master gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "master gear"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLink",
|
||||
"slave_gear",
|
||||
"gear",
|
||||
translate("GearConnector", "slave gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "slave gear"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"angle1",
|
||||
"gear",
|
||||
translate("GearConnector", "angle at which second gear is placed"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "angle at which second gear is placed"),
|
||||
0,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"angle2",
|
||||
"gear",
|
||||
translate("GearConnector", "angle at which second gear is placed"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "angle at which second gear is placed"),
|
||||
1,
|
||||
)
|
||||
obj.version = __version__
|
||||
|
||||
@@ -22,9 +22,10 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from .basegear import BaseGear, fcvec
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class CrownGear(BaseGear):
|
||||
"""
|
||||
@@ -40,37 +41,37 @@ class CrownGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("CrownGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"other_teeth",
|
||||
"base",
|
||||
translate("CrownGear", "number of teeth of other gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth of other gear"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("CrownGear", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("CrownGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"thickness",
|
||||
"base",
|
||||
translate("CrownGear", "thickness"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "thickness"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute",
|
||||
translate("CrownGear", "pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure angle"),
|
||||
)
|
||||
self.add_accuracy_properties(obj)
|
||||
obj.num_teeth = 15
|
||||
@@ -85,8 +86,11 @@ class CrownGear(BaseGear):
|
||||
obj.Proxy = self
|
||||
|
||||
app.Console.PrintMessage(
|
||||
"Gear module: Crown gear created, preview_mode = true for improved performance. "
|
||||
"Set preview_mode property to false when ready to cut teeth."
|
||||
app.Qt.translate(
|
||||
"Log",
|
||||
"Gear module: Crown gear created, preview_mode = true for improved performance. "
|
||||
"Set preview_mode property to false when ready to cut teeth.",
|
||||
)
|
||||
)
|
||||
|
||||
def add_accuracy_properties(self, obj):
|
||||
@@ -94,13 +98,13 @@ class CrownGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_profiles",
|
||||
"accuracy",
|
||||
translate("CrownGear", "number of profiles used for loft"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of profiles used for loft"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"preview_mode",
|
||||
"accuracy",
|
||||
translate("CrownGear", "if true no boolean operation is done"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "if true no boolean operation is done"),
|
||||
)
|
||||
|
||||
def profile(self, m, r, r0, t_c, t_i, alpha_w, y0, y1, y2):
|
||||
|
||||
@@ -20,7 +20,6 @@ from freecad import app
|
||||
from freecad import part
|
||||
|
||||
import numpy as np
|
||||
from .translateutils import translate
|
||||
from pygears.cycloid_tooth import CycloidTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
@@ -32,6 +31,8 @@ from .basegear import (
|
||||
rotate_tooth,
|
||||
)
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class CycloidGear(BaseGear):
|
||||
"""FreeCAD gear"""
|
||||
@@ -43,31 +44,31 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("CycloidGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("CycloidGear", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("CycloidGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"numpoints",
|
||||
"accuracy",
|
||||
translate("CycloidGear", "number of points for spline"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of points for spline"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyPythonObject",
|
||||
"gear",
|
||||
"base",
|
||||
translate("CycloidGear", "the python object"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "the python object"),
|
||||
)
|
||||
|
||||
self.add_helical_properties(obj)
|
||||
@@ -98,13 +99,13 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"double_helix",
|
||||
"helical",
|
||||
translate("CycloidGear", "double helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "double helix"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("CycloidGear", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
)
|
||||
|
||||
def add_fillet_properties(self, obj):
|
||||
@@ -112,8 +113,8 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"CycloidGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -121,8 +122,8 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"CycloidGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -132,14 +133,14 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate("CycloidGear", "clearance"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "clearance"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"backlash",
|
||||
"tolerance",
|
||||
translate(
|
||||
"CycloidGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The arc length on the pitch circle by which the tooth thicknes is reduced.",
|
||||
),
|
||||
)
|
||||
@@ -147,8 +148,8 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate(
|
||||
"CycloidGear", "head_value * module_value = additional length of head"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head_value * module_value = additional length of head"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -157,13 +158,17 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"inner_diameter",
|
||||
"cycloid",
|
||||
translate("CycloidGear", "inner_diameter divided by module (hypocycloid)"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "inner_diameter divided by module (hypocycloid)"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"outer_diameter",
|
||||
"cycloid",
|
||||
translate("CycloidGear", "outer_diameter divided by module (epicycloid)"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "outer_diameter divided by module (epicycloid)"
|
||||
),
|
||||
)
|
||||
|
||||
def add_computed_properties(self, obj):
|
||||
@@ -171,7 +176,7 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"dw",
|
||||
"computed",
|
||||
translate("CycloidGear", "The pitch diameter."),
|
||||
QT_TRANSLATE_NOOP("App::Property", "The pitch diameter."),
|
||||
)
|
||||
obj.setExpression(
|
||||
"dw", "num_teeth * module"
|
||||
@@ -183,8 +188,8 @@ class CycloidGear(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"angular_backlash",
|
||||
"computed",
|
||||
translate(
|
||||
"CycloidGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The angle by which this gear can turn without moving the mating gear.",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -24,10 +24,11 @@ from freecad import part
|
||||
|
||||
import numpy as np
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears._functions import reflection
|
||||
from .basegear import BaseGear, fcvec, points_to_wire, insert_fillet
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class CycloidGearRack(BaseGear):
|
||||
"""FreeCAD gear rack"""
|
||||
@@ -38,27 +39,27 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("CycloidGearRack", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("CycloidGearRack", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"thickness",
|
||||
"base",
|
||||
translate("CycloidGearRack", "thickness"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "thickness"),
|
||||
)
|
||||
obj.addProperty("App::PropertyLength", "module", "involute", "module")
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"simplified",
|
||||
"precision",
|
||||
translate(
|
||||
"CycloidGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if enabled the rack is drawn with a constant number of teeth to avoid topologic renaming.",
|
||||
),
|
||||
)
|
||||
@@ -66,13 +67,13 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"numpoints",
|
||||
"accuracy",
|
||||
translate("CycloidGearRack", "number of points for spline"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of points for spline"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyPythonObject",
|
||||
"rack",
|
||||
"base",
|
||||
translate("CycloidGearRack", "test"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "test"),
|
||||
)
|
||||
|
||||
self.add_helical_properties(obj)
|
||||
@@ -100,13 +101,13 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("CycloidGearRack", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"double_helix",
|
||||
"helical",
|
||||
translate("CycloidGearRack", "double helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "double helix"),
|
||||
)
|
||||
|
||||
def add_computed_properties(self, obj):
|
||||
@@ -114,16 +115,16 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"transverse_pitch",
|
||||
"computed",
|
||||
translate("CycloidGearRack", "pitch in the transverse plane"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pitch in the transverse plane"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"add_endings",
|
||||
"base",
|
||||
translate(
|
||||
"CycloidGearRack",
|
||||
"if enabled the total length of the rack is num_teeth x pitch, otherwise the rack starts with a tooth-flank",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if enabled the total length of the rack is teeth x pitch, otherwise the rack starts with a tooth-flank",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -132,14 +133,16 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate("CycloidGearRack", "head * module = additional length of head"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head * module = additional length of head"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate(
|
||||
"CycloidGearRack", "clearance * module = additional length of root"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "clearance * module = additional length of root"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -148,16 +151,16 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"inner_diameter",
|
||||
"cycloid",
|
||||
translate(
|
||||
"CycloidGearRack", "inner_diameter divided by module (hypocycloid)"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "inner_diameter divided by module (hypocycloid)"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"outer_diameter",
|
||||
"cycloid",
|
||||
translate(
|
||||
"CycloidGearRack", "outer_diameter divided by module (epicycloid)"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "outer_diameter divided by module (epicycloid)"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -166,8 +169,8 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"CycloidGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -175,8 +178,8 @@ class CycloidGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"CycloidGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -23,15 +23,15 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears.bevel_tooth import BevelTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
from .basegear import BaseGear, make_bspline_wire
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class HypoCycloidGear(BaseGear):
|
||||
|
||||
"""parameters:
|
||||
pressure_angle: pressureangle, 10-30°
|
||||
pitch_angle: cone angle, 0 < pitch_angle < pi/4
|
||||
@@ -43,91 +43,91 @@ class HypoCycloidGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"pin_circle_radius",
|
||||
"gear_parameter",
|
||||
translate(
|
||||
"HypoCycloidGear", "Pin ball circle radius (overrides Tooth Pitch)"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "Pin ball circle radius (overrides Tooth Pitch)"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"roller_diameter",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Roller Diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Roller Diameter"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"eccentricity",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Eccentricity"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Eccentricity"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle_lim",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Pressure angle limit"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Pressure angle limit"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"pressure_angle_offset",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Offset in pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Offset in pressure angle"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"teeth_number",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Number of teeth in Cam"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Number of teeth in Cam"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"segment_count",
|
||||
"gear_parameter",
|
||||
translate(
|
||||
"HypoCycloidGear", "Number of points used for spline interpolation"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "Number of points used for spline interpolation"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"hole_radius",
|
||||
"gear_parameter",
|
||||
translate("HypoCycloidGear", "Center hole's radius"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Center hole's radius"),
|
||||
)
|
||||
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"show_pins",
|
||||
"Pins",
|
||||
translate("HypoCycloidGear", "Create pins in place"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Create pins in place"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"pin_height",
|
||||
"Pins",
|
||||
translate("HypoCycloidGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"center_pins",
|
||||
"Pins",
|
||||
translate("HypoCycloidGear", "Center pin Z axis to generated disks"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Center pin Z axis to generated disks"),
|
||||
)
|
||||
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"show_disk0",
|
||||
"Disks",
|
||||
translate("HypoCycloidGear", "Show main cam disk"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Show main cam disk"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"show_disk1",
|
||||
"Disks",
|
||||
translate("HypoCycloidGear", "Show another reversed cam disk on top"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Show another reversed cam disk on top"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"disk_height",
|
||||
"Disks",
|
||||
translate("HypoCycloidGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
|
||||
obj.pin_circle_radius = 66
|
||||
@@ -224,7 +224,7 @@ class HypoCycloidGear(BaseGear):
|
||||
# part.Wire(part.makeCircle(minRadius, app.Vector(-e, 0, 0)))
|
||||
# part.Wire(part.makeCircle(maxRadius, app.Vector(-e, 0, 0)))
|
||||
|
||||
app.Console.PrintMessage("Generating cam disk\r\n")
|
||||
app.Console.PrintMessage(app.Qt.translate("Log", "Generating cam disk\n"))
|
||||
# generate the cam profile - note: shifted in -x by eccentricicy amount
|
||||
i = 0
|
||||
x = self.calc_x(p, d, e, n, q * i / float(n))
|
||||
@@ -264,7 +264,9 @@ class HypoCycloidGear(BaseGear):
|
||||
|
||||
# secondary cam disk
|
||||
if fp.show_disk1:
|
||||
app.Console.PrintMessage("Generating secondary cam disk\r\n")
|
||||
app.Console.PrintMessage(
|
||||
app.Qt.translate("Log", "Generating secondary cam disk\n")
|
||||
)
|
||||
second_cam = cam.copy()
|
||||
mat = app.Matrix()
|
||||
mat.rotateZ(np.pi)
|
||||
@@ -282,7 +284,7 @@ class HypoCycloidGear(BaseGear):
|
||||
|
||||
# pins
|
||||
if fp.show_pins:
|
||||
app.Console.PrintMessage("Generating pins\r\n")
|
||||
app.Console.PrintMessage(app.Qt.translate("Log", "Generating pins\n"))
|
||||
pins = []
|
||||
for i in range(0, n + 1):
|
||||
x = p * n * math.cos(2 * math.pi / (n + 1) * i)
|
||||
|
||||
@@ -23,6 +23,9 @@ from freecad import gui
|
||||
|
||||
__dirname__ = os.path.dirname(__file__)
|
||||
|
||||
# Add translations path
|
||||
gui.addLanguagePath(os.path.join(__dirname__, "translations"))
|
||||
gui.updateLocale()
|
||||
|
||||
if sys.version_info[0] == 3 and sys.version_info[1] >= 11:
|
||||
# only works with 0.21.2 and above
|
||||
@@ -33,7 +36,7 @@ if sys.version_info[0] == 3 and sys.version_info[1] >= 11:
|
||||
FC_COMMIT_REQUIRED = 33772
|
||||
|
||||
# Check FreeCAD version
|
||||
app.Console.PrintLog("Checking FreeCAD version\n")
|
||||
app.Console.PrintLog(app.Qt.translate("Log", "Checking FreeCAD version\n"))
|
||||
ver = app.Version()
|
||||
major_ver = int(ver[0])
|
||||
minor_ver = int(ver[1])
|
||||
@@ -64,7 +67,10 @@ if sys.version_info[0] == 3 and sys.version_info[1] >= 11:
|
||||
)
|
||||
):
|
||||
app.Console.PrintWarning(
|
||||
"FreeCAD version (currently {}.{}.{} ({})) must be at least {}.{}.{} ({}) in order to work with Python 3.11 and above\n".format(
|
||||
app.Qt.translate(
|
||||
"Log",
|
||||
"FreeCAD version (currently {}.{}.{} ({})) must be at least {}.{}.{} ({}) in order to work with Python 3.11 and above\n",
|
||||
).format(
|
||||
int(ver[0]),
|
||||
minor_ver,
|
||||
patch_ver,
|
||||
@@ -80,8 +86,8 @@ if sys.version_info[0] == 3 and sys.version_info[1] >= 11:
|
||||
class GearWorkbench(gui.Workbench):
|
||||
"""A freecad workbench aiming at gear design"""
|
||||
|
||||
MenuText = "Gear"
|
||||
ToolTip = "Gear Workbench"
|
||||
MenuText = app.Qt.translate("Workbench", "Gear")
|
||||
ToolTip = app.Qt.translate("Workbench", "Gear Workbench")
|
||||
Icon = os.path.join(__dirname__, "icons", "gearworkbench.svg")
|
||||
commands = [
|
||||
"FCGear_InvoluteGear",
|
||||
@@ -103,10 +109,7 @@ class GearWorkbench(gui.Workbench):
|
||||
return "Gui::PythonWorkbench"
|
||||
|
||||
def Initialize(self):
|
||||
# Add translations path
|
||||
gui.addLanguagePath(os.path.join(os.path.dirname(__file__), "translations"))
|
||||
gui.updateLocale()
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
from .commands import (
|
||||
CreateCycloidGear,
|
||||
CreateInvoluteGear,
|
||||
@@ -123,8 +126,8 @@ class GearWorkbench(gui.Workbench):
|
||||
CreateGearConnector,
|
||||
)
|
||||
|
||||
self.appendToolbar("Gear", self.commands)
|
||||
self.appendMenu("Gear", self.commands)
|
||||
self.appendToolbar(QT_TRANSLATE_NOOP("Workbench", "Gear"), self.commands)
|
||||
self.appendMenu(QT_TRANSLATE_NOOP("Workbench", "Gear"), self.commands)
|
||||
gui.addCommand("FCGear_InvoluteGear", CreateInvoluteGear())
|
||||
gui.addCommand("FCGear_InternalInvoluteGear", CreateInternalInvoluteGear())
|
||||
gui.addCommand("FCGear_CycloidGear", CreateCycloidGear())
|
||||
|
||||
@@ -21,10 +21,12 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears.involute_tooth import InvoluteTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
from .basegear import (
|
||||
BaseGear,
|
||||
points_to_wire,
|
||||
@@ -48,20 +50,20 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"simple",
|
||||
"precision",
|
||||
translate("InternalInvoluteGear", "simple"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "simple"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("InternalInvoluteGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"normal module if properties_from_tool=True, else it's the transverse module.",
|
||||
),
|
||||
)
|
||||
@@ -69,25 +71,25 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("InternalInvoluteGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"thickness",
|
||||
"base",
|
||||
translate("InternalInvoluteGear", "thickness"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "thickness"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"numpoints",
|
||||
"accuracy",
|
||||
translate("InternalInvoluteGear", "number of points for spline"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of points for spline"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyPythonObject",
|
||||
"gear",
|
||||
"base",
|
||||
translate("InternalInvoluteGear", "test"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "test"),
|
||||
)
|
||||
|
||||
self.add_involute_properties(obj)
|
||||
@@ -123,14 +125,14 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"da",
|
||||
"computed",
|
||||
translate("InternalInvoluteGear", "inside diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "inside diameter"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"df",
|
||||
"computed",
|
||||
translate("InternalInvoluteGear", "root diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "root diameter"),
|
||||
1,
|
||||
)
|
||||
|
||||
@@ -139,14 +141,14 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"dw",
|
||||
"computed",
|
||||
translate("InternalInvoluteGear", "The pitch diameter."),
|
||||
QT_TRANSLATE_NOOP("App::Property", "The pitch diameter."),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"angular_backlash",
|
||||
"computed",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The angle by which this gear can turn without moving the mating gear.",
|
||||
),
|
||||
)
|
||||
@@ -160,14 +162,14 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"transverse_pitch",
|
||||
"computed",
|
||||
translate("InternalInvoluteGear", "transverse_pitch"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "transverse_pitch"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"outside_diameter",
|
||||
"computed",
|
||||
translate("InternalInvoluteGear", "Outside diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "Outside diameter"),
|
||||
1,
|
||||
)
|
||||
|
||||
@@ -176,8 +178,8 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -185,8 +187,8 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -196,8 +198,8 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"backlash",
|
||||
"tolerance",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The arc length on the pitch circle by which the tooth thicknes is reduced.",
|
||||
),
|
||||
)
|
||||
@@ -205,14 +207,14 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"reversed_backlash",
|
||||
"tolerance",
|
||||
translate("InternalInvoluteGear", "backlash direction"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "backlash direction"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"head_value * module_value = additional length of head",
|
||||
),
|
||||
)
|
||||
@@ -220,7 +222,7 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate("InternalInvoluteGear", "clearance"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "clearance"),
|
||||
)
|
||||
|
||||
def add_involute_properties(self, obj):
|
||||
@@ -228,13 +230,13 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"shift",
|
||||
"involute",
|
||||
translate("InternalInvoluteGear", "shift"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "shift"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute",
|
||||
translate("InternalInvoluteGear", "pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure angle"),
|
||||
)
|
||||
|
||||
def add_helical_properties(self, obj):
|
||||
@@ -242,20 +244,20 @@ class InternalInvoluteGear(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("InternalInvoluteGear", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"double_helix",
|
||||
"helical",
|
||||
translate("InternalInvoluteGear", "double helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "double helix"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"properties_from_tool",
|
||||
"helical",
|
||||
translate(
|
||||
"InternalInvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if beta is given and properties_from_tool is enabled, gear parameters are internally recomputed for the rotated gear",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -21,11 +21,11 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
|
||||
from pygears.involute_tooth import InvoluteTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
from .basegear import (
|
||||
BaseGear,
|
||||
points_to_wire,
|
||||
@@ -46,7 +46,7 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyPythonObject",
|
||||
"gear",
|
||||
"base",
|
||||
translate("InvoluteGear", "python gear object"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "python gear object"),
|
||||
)
|
||||
|
||||
self.add_gear_properties(obj)
|
||||
@@ -83,14 +83,14 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("InvoluteGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"normal module if properties_from_tool=True, else it's the transverse module.",
|
||||
),
|
||||
)
|
||||
@@ -98,19 +98,19 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("InvoluteGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute",
|
||||
translate("InvoluteGear", "pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure angle"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"shift",
|
||||
"involute",
|
||||
translate("InvoluteGear", "shift"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "shift"),
|
||||
)
|
||||
|
||||
def add_fillet_properties(self, obj):
|
||||
@@ -118,14 +118,14 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"undercut",
|
||||
"fillets",
|
||||
translate("InvoluteGear", "undercut"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "undercut"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -133,8 +133,8 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -144,8 +144,8 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"properties_from_tool",
|
||||
"helical",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if beta is given and properties_from_tool is enabled, gear parameters are internally recomputed for the rotated gear",
|
||||
),
|
||||
)
|
||||
@@ -153,13 +153,13 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("InvoluteGear", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"double_helix",
|
||||
"helical",
|
||||
translate("InvoluteGear", "double helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "double helix"),
|
||||
)
|
||||
|
||||
def add_computed_properties(self, obj):
|
||||
@@ -167,14 +167,14 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"da",
|
||||
"computed",
|
||||
translate("InvoluteGear", "outside diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "outside diameter"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"df",
|
||||
"computed",
|
||||
translate("InvoluteGear", "root diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "root diameter"),
|
||||
1,
|
||||
)
|
||||
self.add_traverse_module_property(obj)
|
||||
@@ -182,15 +182,15 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"dw",
|
||||
"computed",
|
||||
translate("InvoluteGear", "The pitch diameter."),
|
||||
QT_TRANSLATE_NOOP("App::Property", "The pitch diameter."),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"angular_backlash",
|
||||
"computed",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The angle by which this gear can turn without moving the mating gear.",
|
||||
),
|
||||
)
|
||||
@@ -204,7 +204,7 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"transverse_pitch",
|
||||
"computed",
|
||||
translate("InvoluteGear", "transverse_pitch"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "transverse_pitch"),
|
||||
1,
|
||||
)
|
||||
|
||||
@@ -213,8 +213,8 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"backlash",
|
||||
"tolerance",
|
||||
translate(
|
||||
"InvoluteGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The arc length on the pitch circle by which the tooth thicknes is reduced.",
|
||||
),
|
||||
)
|
||||
@@ -222,20 +222,20 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"reversed_backlash",
|
||||
"tolerance",
|
||||
translate("InvoluteGear", "backlash direction"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "backlash direction"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate("InvoluteGear", "clearance"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "clearance"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate(
|
||||
"InvoluteGear", "head_value * module_value = additional length of head"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head_value * module_value = additional length of head"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -244,13 +244,13 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"simple",
|
||||
"accuracy",
|
||||
translate("InvoluteGear", "simple"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "simple"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"numpoints",
|
||||
"accuracy",
|
||||
translate("InvoluteGear", "number of points for spline"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of points for spline"),
|
||||
)
|
||||
|
||||
def add_traverse_module_property(self, obj):
|
||||
@@ -258,7 +258,7 @@ class InvoluteGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"traverse_module",
|
||||
"computed",
|
||||
translate("InvoluteGear", "traverse module of the generated gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "traverse module of the generated gear"),
|
||||
1,
|
||||
)
|
||||
|
||||
|
||||
@@ -21,10 +21,11 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears.involute_tooth import InvoluteRack
|
||||
from .basegear import BaseGear, fcvec, points_to_wire, insert_fillet
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class InvoluteGearRack(BaseGear):
|
||||
"""FreeCAD gear rack"""
|
||||
@@ -36,32 +37,32 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("InvoluteGearRack", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("InvoluteGearRack", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("InvoluteGearRack", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"thickness",
|
||||
"base",
|
||||
translate("InvoluteGearRack", "thickness"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "thickness"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"simplified",
|
||||
"precision",
|
||||
translate(
|
||||
"InvoluteGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if enabled the rack is drawn with a constant number of teeth to avoid topologic renaming.",
|
||||
),
|
||||
)
|
||||
@@ -69,7 +70,7 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyPythonObject",
|
||||
"rack",
|
||||
"base",
|
||||
translate("InvoluteGearRack", "test"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "test"),
|
||||
)
|
||||
|
||||
self.add_helical_properties(obj)
|
||||
@@ -97,8 +98,8 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyBool",
|
||||
"properties_from_tool",
|
||||
"helical",
|
||||
translate(
|
||||
"InvoluteGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if beta is given and properties_from_tool is enabled, gear parameters are internally recomputed for the rotated gear",
|
||||
),
|
||||
)
|
||||
@@ -106,13 +107,13 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"helical",
|
||||
translate("InvoluteGearRack", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"double_helix",
|
||||
"helical",
|
||||
translate("InvoluteGearRack", "double helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "double helix"),
|
||||
)
|
||||
|
||||
def add_computed_properties(self, obj):
|
||||
@@ -120,16 +121,16 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"transverse_pitch",
|
||||
"computed",
|
||||
translate("InvoluteGearRack", "pitch in the transverse plane"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pitch in the transverse plane"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"add_endings",
|
||||
"base",
|
||||
translate(
|
||||
"InvoluteGearRack",
|
||||
"if enabled the total length of the rack is num_teeth x pitch, otherwise the rack starts with a tooth-flank",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"if enabled the total length of the rack is teeth x pitch, otherwise the rack starts with a tooth-flank",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -138,14 +139,16 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate("InvoluteGearRack", "head * module = additional length of head"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head * module = additional length of head"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate(
|
||||
"InvoluteGearRack", "clearance * module = additional length of root"
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "clearance * module = additional length of root"
|
||||
),
|
||||
)
|
||||
|
||||
@@ -154,7 +157,7 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute",
|
||||
translate("InvoluteGearRack", "pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure angle"),
|
||||
)
|
||||
|
||||
def add_fillet_properties(self, obj):
|
||||
@@ -162,8 +165,8 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InvoluteGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -171,8 +174,8 @@ class InvoluteGearRack(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"InvoluteGearRack",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
|
||||
@@ -22,12 +22,13 @@ import scipy as sp
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears.bevel_tooth import BevelTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
from .basegear import BaseGear, fcvec, part_arc_from_points_and_center
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class LanternGear(BaseGear):
|
||||
def __init__(self, obj):
|
||||
@@ -36,37 +37,39 @@ class LanternGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"gear_parameter",
|
||||
translate("LanternGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("LanternGear", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"bolt_radius",
|
||||
"base",
|
||||
translate("LanternGear", "the bolt radius of the rack/chain"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "the bolt radius of the rack/chain"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("LanternGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"num_profiles",
|
||||
"accuracy",
|
||||
translate("LanternGear", "number of profiles used for loft"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of profiles used for loft"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate("LanternGear", "head * module = additional length of head"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head * module = additional length of head"
|
||||
),
|
||||
)
|
||||
|
||||
obj.num_teeth = 15
|
||||
|
||||
@@ -21,10 +21,11 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears._functions import reflection
|
||||
from .basegear import BaseGear, part_arc_from_points_and_center
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class TimingGear(BaseGear):
|
||||
"""FreeCAD gear rack"""
|
||||
@@ -108,40 +109,40 @@ class TimingGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("TimingGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyEnumeration",
|
||||
"type",
|
||||
"base",
|
||||
translate("TimingGear", "type of timing-gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "type of timing-gear"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("TimingGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"pitch",
|
||||
"computed",
|
||||
translate("TimingGear", "pitch of gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pitch of gear"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"h",
|
||||
"computed",
|
||||
translate("TimingGear", "radial height of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "radial height of teeth"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"u",
|
||||
"computed",
|
||||
translate(
|
||||
"TimingGear",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"radial difference between pitch diameter and head of gear",
|
||||
),
|
||||
1,
|
||||
@@ -150,28 +151,28 @@ class TimingGear(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"r0",
|
||||
"computed",
|
||||
translate("TimingGear", "radius of first arc"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "radius of first arc"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"r1",
|
||||
"computed",
|
||||
translate("TimingGear", "radius of second arc"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "radius of second arc"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"rs",
|
||||
"computed",
|
||||
translate("TimingGear", "radius of third arc"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "radius of third arc"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"offset",
|
||||
"computed",
|
||||
translate("TimingGear", "x-offset of second arc-midpoint"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "x-offset of second arc-midpoint"),
|
||||
1,
|
||||
)
|
||||
obj.num_teeth = 15
|
||||
|
||||
@@ -24,11 +24,12 @@ from scipy import optimize
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears._functions import rotation, reflection
|
||||
|
||||
from .basegear import BaseGear, fcvec, part_arc_from_points_and_center, insert_fillet
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class TimingGearT(BaseGear):
|
||||
def __init__(self, obj):
|
||||
@@ -36,32 +37,34 @@ class TimingGearT(BaseGear):
|
||||
"App::PropertyLength",
|
||||
"pitch",
|
||||
"base",
|
||||
translate("TimingGearT", "pitch of gear"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pitch of gear"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("TimingGearT", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"tooth_height",
|
||||
"base",
|
||||
translate("TimingGearT", "radial height of tooth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "radial height of tooth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"u",
|
||||
"base",
|
||||
translate("TimingGearT", "radial distance from tooth-head to pitch circle"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "radial distance from tooth-head to pitch circle"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"backlash",
|
||||
"tolerance",
|
||||
translate(
|
||||
"TimingGearT",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The arc length on the pitch circle by which the tooth thicknes is reduced.",
|
||||
),
|
||||
)
|
||||
@@ -69,8 +72,8 @@ class TimingGearT(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"head_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"TimingGearT",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-head, radius = head_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -78,8 +81,8 @@ class TimingGearT(BaseGear):
|
||||
"App::PropertyFloat",
|
||||
"root_fillet",
|
||||
"fillets",
|
||||
translate(
|
||||
"TimingGearT",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"a fillet for the tooth-root, radius = root_fillet x module",
|
||||
),
|
||||
)
|
||||
@@ -87,13 +90,13 @@ class TimingGearT(BaseGear):
|
||||
"App::PropertyAngle",
|
||||
"alpha",
|
||||
"base",
|
||||
translate("TimingGearT", "angle of tooth flanks"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "angle of tooth flanks"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("TimingGearT", "extrusion height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "extrusion height"),
|
||||
)
|
||||
obj.pitch = "5. mm"
|
||||
obj.num_teeth = 15
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
# ***************************************************************************
|
||||
# * *
|
||||
# * Copyright (c) 2020 kbwbe *
|
||||
# * *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or modify *
|
||||
# * it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
# * as published by the Free Software Foundation; either version 2 of *
|
||||
# * the License, or (at your option) any later version. *
|
||||
# * for detail see the LICENCE text file. *
|
||||
# * *
|
||||
# * This program is distributed in the hope that it will be useful, *
|
||||
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# * GNU Library General Public License for more details. *
|
||||
# * *
|
||||
# * You should have received a copy of the GNU Library General Public *
|
||||
# * License along with this program; if not, write to the Free Software *
|
||||
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
# * USA *
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
|
||||
import FreeCAD
|
||||
|
||||
|
||||
if FreeCAD.GuiUp:
|
||||
from PySide.QtCore import QT_TRANSLATE_NOOP
|
||||
from DraftGui import translate
|
||||
else:
|
||||
|
||||
def QT_TRANSLATE_NOOP(context, text):
|
||||
return text
|
||||
|
||||
def translate(context, text):
|
||||
return text
|
||||
@@ -21,12 +21,13 @@ import numpy as np
|
||||
from freecad import app
|
||||
from freecad import part
|
||||
|
||||
from .translateutils import translate
|
||||
from pygears.involute_tooth import InvoluteTooth
|
||||
from pygears._functions import rotation
|
||||
|
||||
from .basegear import BaseGear, helical_extrusion, fcvec
|
||||
|
||||
QT_TRANSLATE_NOOP = app.Qt.QT_TRANSLATE_NOOP
|
||||
|
||||
|
||||
class WormGear(BaseGear):
|
||||
"""FreeCAD gear rack"""
|
||||
@@ -37,56 +38,60 @@ class WormGear(BaseGear):
|
||||
"App::PropertyInteger",
|
||||
"num_teeth",
|
||||
"base",
|
||||
translate("WormGear", "number of teeth"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "number of teeth"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"module",
|
||||
"base",
|
||||
translate("WormGear", "module"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "module"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"height",
|
||||
"base",
|
||||
translate("WormGear", "height"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "height"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"diameter",
|
||||
"base",
|
||||
translate("WormGear", "diameter"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "diameter"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"beta",
|
||||
"computed",
|
||||
translate("WormGear", "beta"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "beta"),
|
||||
1,
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"pressure_angle",
|
||||
"involute",
|
||||
translate("WormGear", "pressure angle"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "pressure angle"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyBool",
|
||||
"reverse_pitch",
|
||||
"base",
|
||||
translate("WormGear", "reverse rotation of helix"),
|
||||
QT_TRANSLATE_NOOP("App::Property", "reverse rotation of helix"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"head",
|
||||
"tolerance",
|
||||
translate("WormGear", "head * module = additional length of head"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "head * module = additional length of head"
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyFloat",
|
||||
"clearance",
|
||||
"tolerance",
|
||||
translate("WormGear", "clearance * module = additional length of root"),
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property", "clearance * module = additional length of root"
|
||||
),
|
||||
)
|
||||
obj.num_teeth = 3
|
||||
obj.module = "1. mm"
|
||||
|
||||
Reference in New Issue
Block a user