From ea904a2a7da0e96c2f69daa79954221ebeb64cb7 Mon Sep 17 00:00:00 2001 From: looooo Date: Thu, 2 Dec 2021 12:44:34 +0100 Subject: [PATCH] add prototype for gear connector --- freecad/gears/commands.py | 17 +++++++++++++++++ freecad/gears/features.py | 2 +- freecad/gears/init_gui.py | 5 ++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/freecad/gears/commands.py b/freecad/gears/commands.py index be3d910..20777a6 100644 --- a/freecad/gears/commands.py +++ b/freecad/gears/commands.py @@ -21,6 +21,7 @@ import FreeCAD import FreeCADGui as Gui from .features import ViewProviderGear, InvoluteGear, InternalInvoluteGear, InvoluteGearRack, CycloidGearRack from .features import CycloidGear, BevelGear, CrownGear, WormGear, TimingGear, LanternGear, HypoCycloidGear +from .connector import GearConnector, ViewProviderGearConnector class BaseCommand(object): @@ -157,3 +158,19 @@ class CreateLanternGear(BaseCommand): Pixmap = os.path.join(BaseCommand.ICONDIR, 'lanterngear.svg') MenuText = 'Lantern gear' ToolTip = 'Create a Lantern gear' + +class CreateGearConnector(BaseCommand): + NAME = "gearconnector" + GEAR_FUNCTION = GearConnector + Pixmap = os.path.join(BaseCommand.ICONDIR, 'gearconnector.svg') + MenuText = 'Combine two gears' + ToolTip = 'Combine two gears' + + def Activated(self): + obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython", self.NAME) + gear1 = Gui.Selection.getSelection()[0] + gear2 = Gui.Selection.getSelection()[1] + # check if selected objects are beams + GearConnector(obj, gear1, gear2) + ViewProviderGearConnector(obj.ViewObject) + return obj diff --git a/freecad/gears/features.py b/freecad/gears/features.py index fb6fce3..a20294c 100644 --- a/freecad/gears/features.py +++ b/freecad/gears/features.py @@ -55,7 +55,7 @@ def fcvec(x): class ViewProviderGear(object): def __init__(self, obj, icon_fn=None): - ''' Set this object to the proxy object of the actual view provider ''' + # Set this object to the proxy object of the actual view provider obj.Proxy = self self._check_attr() dirname = os.path.dirname(__file__) diff --git a/freecad/gears/init_gui.py b/freecad/gears/init_gui.py index 7588311..04f7c37 100644 --- a/freecad/gears/init_gui.py +++ b/freecad/gears/init_gui.py @@ -46,7 +46,8 @@ class GearWorkbench(Workbench): "CreateWormGear", "CreateTimingGear", "CreateLanternGear", - "CreateHypoCycloidGear"] + "CreateHypoCycloidGear", + "CreateGearConnector"] def GetClassName(self): return "Gui::PythonWorkbench" @@ -56,6 +57,7 @@ class GearWorkbench(Workbench): from .commands import CreateBevelGear, CreateInvoluteRack, CreateCrownGear from .commands import CreateWormGear, CreateTimingGear, CreateLanternGear from .commands import CreateHypoCycloidGear, CreateCycloidRack + from .commands import CreateGearConnector self.appendToolbar("Gear", self.commands) self.appendMenu("Gear", self.commands) @@ -71,6 +73,7 @@ class GearWorkbench(Workbench): Gui.addCommand('CreateTimingGear', CreateTimingGear()) Gui.addCommand('CreateLanternGear', CreateLanternGear()) Gui.addCommand('CreateHypoCycloidGear', CreateHypoCycloidGear()) + Gui.addCommand('CreateGearConnector', CreateGearConnector()) def Activated(self): pass