Macro crank simul/fr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 2: Line 2:
{{Macro/fr|Icon=Text-x-python|Name=Crank Simul|Name/fr=Simulation manivelle|Description=Simulation d'une manivelle.|Author=kwahoo|Version=1.0|Date=2014-06-13}}
{{Macro/fr|Icon=Text-x-python|Name=Crank Simul|Name/fr=Simulation manivelle|Description=Simulation d'une manivelle.|Author=kwahoo|Version=1.0|Date=2014-06-13}}


<div class="mw-translate-fuzzy">
Cette animation simple utilise une esquisse et le solveur afin de déterminer la position et la rotation du piston et de la bielle.
Cette animation simple utilise une esquisse et le solveur afin de déterminer la position et la rotation du piston et de la bielle.
</div>




Line 8: Line 10:
[[File:Crank 00.gif|left]]{{clear}}
[[File:Crank 00.gif|left]]{{clear}}


<div class="mw-translate-fuzzy">
===Utilisation===
===Utilisation===
Pour tester l'animation :
Pour tester l'animation :
</div>


Télécharger les fichiers et copier le code dans la console Python de FreeCAD.
Télécharger les fichiers et copier le code dans la console Python de FreeCAD.
Line 15: Line 19:
1. Ouvrir le fichier joint
1. Ouvrir le fichier joint


Pour stopper l'animation, taper dans la console :
Pour stopper l'animation, taper dans la console :
"'''animation.stop()'''"
{{Code|code=

animation.stop()
<div class="mw-translate-fuzzy">
}}
=== Le fichier ===
=== Le fichier ===
</div>
[http://forum.freecadweb.org/download/file.php?id=5954 crank_simul.fcstd]
[http://forum.freecadweb.org/download/file.php?id=5954 crank_simul.fcstd]
<div class="mw-translate-fuzzy">
===Script===
===Script===
</div>
crank_simul.FCMacro

'''crank_simul.FCMacro'''


{{Code|code=
{{Code|code=
Line 60: Line 68:


}}
}}
<div class="mw-translate-fuzzy">
=== Liens ===
=== Liens ===
La discussion sur le forum (en anglais) [http://forum.freecadweb.org/viewtopic.php?f=24&t=6815&hilit=animation#p55092 Inline-four engine animation]
La discussion sur le forum (en anglais) [http://forum.freecadweb.org/viewtopic.php?f=24&t=6815&hilit=animation#p55092 Inline-four engine animation]
</div>


Le blogue [http://freecad-tutorial.blogspot.be/ freecad-tutorial.blogspot]
Le blogue [http://freecad-tutorial.blogspot.be/ freecad-tutorial.blogspot]

Revision as of 19:43, 7 August 2018

Other languages:

File:Text-x-python Crank Simul

Description
Simulation d'une manivelle.

Version macro : 1.0
Date dernière modification : 2014-06-13
Auteur: kwahoo
Auteur
kwahoo
Téléchargement
None
Liens
Version Macro
1.0
Dernière modification
2014-06-13
Version(s) FreeCAD
None
Raccourci clavier
None
Voir aussi
None

Cette animation simple utilise une esquisse et le solveur afin de déterminer la position et la rotation du piston et de la bielle.


Utilisation

Pour tester l'animation :

Télécharger les fichiers et copier le code dans la console Python de FreeCAD.

1. Ouvrir le fichier joint

Pour stopper l'animation, taper dans la console : "animation.stop()"

Le fichier

crank_simul.fcstd

Script

crank_simul.FCMacro

import FreeCAD as App, FreeCADGui as Gui, Part, time, sys, math, Draft, DraftGeomUtils
from PySide import QtGui,QtCore

class Animation(object):
    def __init__(self):
        App.Console.PrintMessage('init')

        App.ActiveDocument.recompute()

        self.timer = QtCore.QTimer()
        QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.my_update)
        self.timer.start(50)

        self.an = 0.1

    def my_update(self):
        string = '{0}'.format(self.an)
        self.an = self.an + 0.01 if self.an < (2 * math.pi) else 0.0

        angle = math.degrees(self.an)
        App.ActiveDocument.Sketch.setDatum(5,App.Units.Quantity(str(angle)+' deg'))
        App.ActiveDocument.recompute()
        p1 = App.ActiveDocument.Sketch.Shape.Vertexes[0].Point
        p2 = App.ActiveDocument.Sketch.Shape.Vertexes[1].Point
        conrodangle = math.degrees(Draft.DraftVecUtils.angle(App.Vector(1,0,0),(p1-p2))) - 90
        App.ActiveDocument.getObject("Cylinder").Placement = App.Placement(p1,App.Rotation(App.Vector(1,0,0),-90))
        App.ActiveDocument.getObject("Sketch001").Placement = App.Placement(p1,App.Rotation(App.Vector(0,0,1),conrodangle))

    def stop(self):
        self.timer.stop()
         

animation = Animation()

Liens

La discussion sur le forum (en anglais) Inline-four engine animation

Le blogue freecad-tutorial.blogspot