Download src/Mod/PartDesign/Scripts/Spring.py from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 2.04 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/PartDesign/Scripts/Spring.py
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/src/Mod/PartDesign/Scripts/Spring.py
-
curl -L -o Spring.py https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/PartDesign/Scripts/Spring.py
2.04 kB
| #! python | |
| # (c) 2011 Adrian Przekwas LGPL | |
| from __future__ import division # allows floating point division from integers | |
| import FreeCAD, Part | |
| from FreeCAD import Base | |
| class MySpring: | |
| def __init__(self, obj): | |
| """Add the properties: Pitch, Diameter, Height, BarDiameter""" | |
| obj.addProperty( | |
| "App::PropertyLength", "Pitch", "MySpring", "Pitch of the helix", locked=True | |
| ).Pitch = 5.0 | |
| obj.addProperty( | |
| "App::PropertyLength", "Diameter", "MySpring", "Diameter of the helix", locked=True | |
| ).Diameter = 6.0 | |
| obj.addProperty( | |
| "App::PropertyLength", "Height", "MySpring", "Height of the helix", locked=True | |
| ).Height = 30.0 | |
| obj.addProperty( | |
| "App::PropertyLength", "BarDiameter", "MySpring", "Diameter of the bar", locked=True | |
| ).BarDiameter = 3.0 | |
| obj.Proxy = self | |
| def onChanged(self, fp, prop): | |
| if prop == "Pitch" or prop == "Diameter" or prop == "Height" or prop == "BarDiameter": | |
| self.execute(fp) | |
| def execute(self, fp): | |
| pitch = fp.Pitch | |
| radius = fp.Diameter / 2 | |
| height = fp.Height | |
| barradius = fp.BarDiameter / 2 | |
| myhelix = Part.makeHelix(pitch, height, radius) | |
| g = myhelix.Edges[0].Curve | |
| c = Part.Circle() | |
| c.Center = g.value(0) # start point of the helix | |
| c.Axis = (0, 1, 0) | |
| c.Radius = barradius | |
| p = c.toShape() | |
| section = Part.Wire([p]) | |
| makeSolid = True | |
| isFrenet = True | |
| myspring = Part.Wire(myhelix).makePipeShell([section], makeSolid, isFrenet) | |
| fp.Shape = myspring | |
| def makeMySpring(): | |
| doc = FreeCAD.activeDocument() | |
| if doc is None: | |
| doc = FreeCAD.newDocument() | |
| spring = doc.addObject("Part::FeaturePython", "My_Spring") | |
| spring.Label = "My Spring" | |
| MySpring(spring) | |
| spring.ViewObject.Proxy = 0 | |
| doc.recompute() | |
| if __name__ == "__main__": | |
| makeMySpring() | |