En suivant les conseils de flachyjoe, j'en suis à un résultat qui est vraiment pas mal.
voilà le code : (et le fichier freecad est en P.J.).
Merci, je vais quand même regarder la macro dont tu me parles.
Code: Select all
#-*- coding: utf-8 -*-
from PySide import QtCore
import math
class Spring:
def __init__(self,doc,obj):
self._doc=doc
self._obj=obj
self._i=0
self._j=0
def step(self):
self._i = self._i % 190
self._j = math.sin(self._i*math.pi/180)*10 + 2
self._i += 10
self._obj.Pitch = self._j
self._obj.Height = self._j
self._doc.Clone.Placement=App.Placement(App.Vector(0,0,self._j), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
self._doc.Clone001.Placement=App.Placement(App.Vector(0,0,self._j*2), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
self._doc.Clone002.Placement=App.Placement(App.Vector(0,0,self._j*3), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0))
self._doc.recompute()
myspring = Spring(FreeCAD.ActiveDocument, FreeCAD.ActiveDocument.getObject("Helix"))
timer = QtCore.QTimer()
timer.timeout.connect( myspring.step )
timer.start(50)
#Stoppe le timer au bout de 20s.
QtCore.QTimer().singleShot(20000, timer.stop)