## Tuesday, 11 March 2014

### FreeCAD: Simple Engine Animation.

A very simple animation to show the basics:

I do not have the time needed to go on detail plus this information will be obsolete once FreeCAD has an assembly module. So I'm posting just what I have.

Steps to animate something inside FreeCAD:

-Create parts

-Export them to STEP

-Create new document and import parts

-Determine how FreeCAD names the parts (in my script you can see "Part_Feature003", or "Part_Feature")

-Create a function that defines mathematically the mechanism (crank-slider type in mine, very simple)

-Create a timer that calls the function to make it move (look at the end of the script)

This is the python script, you can download parts here:

from PyQt4 import QtCore, QtGui

import Part
from FreeCAD import Base
import math as mt

i=0
def engine():
global i

i+=0.1

cig=mt.degrees(i)

B=mt.asin((mt.cos(i)*40.0)/140.0)
AB=mt.asin((mt.sin(i)*(40.0/140.0)))
PP=mt.cos(i)*40.0+mt.cos(AB)*140.0
alphaB=mt.radians(90.0)-B

br=FreeCAD.Rotation(FreeCAD.Vector(0,0,1),alphaB)
bd=App.Vector(mt.sin(i)*40,mt.cos(i)*40.0,20.0)
bdgc=FreeCAD.Vector(mt.sin(i)*40,mt.cos(i)*40.0,20.0)

App.getDocument("montadoanimacion").Part__Feature002.Placement=App.Placement(App.Vector(0,0,0),App.Rotation(FreeCAD.Vector(0,0,1),-cig))

#biela

App.getDocument("montadoanimacion").Part__Feature003.Placement=App.Placement(bd,App.Rotation(FreeCAD.Vector(0,0,1),(mt.degrees(AB))))

#piston

App.getDocument("montadoanimacion").Part__Feature.Placement=App.Placement(App.Vector(0,PP-35,30),App.Rotation(-0.5,0.5,0.5,0.5))

timer=QtCore.QTimer()
timer.timeout.connect(engine)
timer.start(10)

Open the file and then copy-paste this script. It should move.

That's all.

Now I hope to see how people creates new and more complex animations :)

Bye!