Macro Spring: Difference between revisions

From FreeCAD Documentation
(Added KEY template, removed file from translation plus minor fixes.)
(adding code "For FreeCAD 0.15")
Line 9: Line 9:
[[File:Spring_00.gif|left]]{{clear}}
[[File:Spring_00.gif|left]]{{clear}}
<translate>
<translate>
===Uses=== <!--T:4-->
==Uses== <!--T:4-->


<!--T:5-->
<!--T:5-->
Line 17: Line 17:
[[File:Spring_02.png|left|300px]]{{clear}}
[[File:Spring_02.png|left|300px]]{{clear}}
<translate>
<translate>
===The File=== <!--T:7-->
==The File== <!--T:7-->


</translate>
</translate>
[http://forum.freecadweb.org/download/file.php?id=7679 Spring.FCStd]
[http://forum.freecadweb.org/download/file.php?id=7679 Spring.FCStd]
<translate>
<translate>
===Script=== <!--T:9-->
==Script== <!--T:9-->


</translate>
</translate>
Line 60: Line 60:


}}
}}

'''Code for FreeCAD version 0.15'''

<syntaxhighlight>
# 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
print ii, " ",i
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 = iib
#FreeCAD.getDocument("Spring").getObject("Helix001").Height = ib

</syntaxhighlight>
<translate>
<translate>
===Link=== <!--T:10-->
==Link== <!--T:10-->
The forum discussion page: [http://forum.freecadweb.org/viewtopic.php?f=22&t=7449#p62193 scripting animations]
The forum discussion page: [http://forum.freecadweb.org/viewtopic.php?f=22&t=7449#p62193 scripting animations]
</translate>
</translate>

Revision as of 19:45, 18 March 2015

File:Text-x-python Spring Simul

Description
Spring simulation.

Author: Mario52
Author
Mario52
Download
None
Links
Macro Version
1.0
Date last modified
None
FreeCAD Version(s)
None
Default shortcut
None
See also
None

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

 
# 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
print ii, "  ",i
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 = iib
#FreeCAD.getDocument("Spring").getObject("Helix001").Height = ib

Link

The forum discussion page: scripting animations

Other languages: