Macro Spring

From FreeCAD Documentation
Revision as of 17:10, 13 June 2019 by Mario52 (talk | contribs) (icon)
Other languages:

Spring Simul

Description
Simulates the compression and decompression of a spring.

Macro version: 1.0
Last modified: 2014-09-29
FreeCAD version: All
Download: The file Spring.FCStd
ToolBar Icon
Author: Mario52
Author
Mario52
Download
The file Spring.FCStd
ToolBar Icon
Links
Macro Version
1.0
Date last modified
2014-09-29
FreeCAD Version(s)
All
Default shortcut
None
See also
None

Description

Simulates the compression and decompression of a spring.

Uses

Open the 2 files below (Spring.FCMacro and Spring.FCStd) in FreeCAD with 2 screens (Menu: Windows → Tile) and click in the window and the macro then press F6 (debug macro) to run the macro or run the macro with File:Macro-execute.svg

The File

Spring.FCStd

Script

Spring.FCMacro

import FreeCAD, FreeCADGui, Draft, Part
from FreeCAD import Base
import time

ii = iib = FreeCAD.getDocument("Spring").getObject("Helix001").Pitch
i = ib = FreeCAD.getDocument("Spring").getObject("Helix001").Height

pas = 1

for ii2 in range(int(60)):
    if pas == 0:
        if ii > iib-1:
            pas = 1
        else:
            ii += 1
            i = (ii * 10)
    else:
        if ii < 2:
            pas = 0
        else:
            ii -= 1
            i = (ii * 10)
   
    FreeCAD.getDocument("Spring").getObject("Helix001").Pitch = ii
    FreeCAD.getDocument("Spring").getObject("Helix001").Height = i
    App.Console.PrintMessage(str(ii2)+"  " + str(ii)+"  " + str(i)+"  " + str(pas) +"\n")
    Gui.updateGui()
    time.sleep(0.1) # modify the time here
#FreeCAD.getDocument("Spring").getObject("Helix001").Pitch = iib
#FreeCAD.getDocument("Spring").getObject("Helix001").Height = ib

Code for FreeCAD version 0.15

Spring_FC-0-15.FCMacro

# For FreeCAD 0.15
import FreeCAD, FreeCADGui, Draft, Part
from FreeCAD import Base
import time

ii = iib = FreeCAD.getDocument("Spring").getObject("Helix001").Pitch.Value
i = ib = FreeCAD.getDocument("Spring").getObject("Helix001").Height.Value

pas = 1

for ii2 in range(int(60)):
    if pas == 0:
        print pas
        if ii > iib-1:
            pas = 1
        else:
            ii += 1
            i = (ii * 10)
            print i," ",ii," else1"
    else:
        print pas
        if ii < 2:
            pas = 0
        else:
            ii -= 1
            i = (ii * 10)
            print i," ",ii," else2"
    FreeCAD.getDocument("Spring").getObject("Helix001").Pitch.Value = ii
    FreeCAD.getDocument("Spring").getObject("Helix001").Height.Value = i
#    App.Console.PrintMessage(str(ii2)+"  " + str(ii)+"  " + str(i)+"  " + str(pas) +"\n")
    Gui.updateGui()
    time.sleep(0.1) # modify the time here
#FreeCAD.getDocument("Spring").getObject("Helix001").Pitch.Value = iib
#FreeCAD.getDocument("Spring").getObject("Helix001").Height.Value = ib

Link

The forum discussion page: scripting animations