Animazione di ingranagi

Forum per le domande e le discussioni in Italiano
Forum rules
regole del forum e le informazioni utili

Importante: PRIMA di chiedere aiuto leggete qui!
harlekin
Posts: 19
Joined: Wed May 13, 2015 8:52 pm

Animazione di ingranagi

Postby harlekin » Mon Sep 16, 2019 8:21 am

Malgrado abbia cercato e ricercato sul web e nel forum non sono capace di fare una cosa che parrebbe essere semplice, far girare uno o due ingranaggi.
Non sono molto pratico per cui chiedo scusa in anticipo se dovessi essere andato fuori binario rispetto le regole del forum.

Queste sono le informazioni sul sistema:
OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16131 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 3129ae4296e40ed20e7b3d460b86e6969acbe1c3
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Italian/Italy (it_IT)

Qui di seguito riporto il codice che ho scopiazzato e che ho cercato di modificare.
##---------
from PySide import QtCore

i = 0
def update():
global i
App.getDocument("Unnamed").InvoluteGear.Placement=App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,0), i), App.Vector(0,0,0))
App.getDocument("Unnamed").InvoluteGear001.Placement=App.Placement(App.Vector(20,0,0), App.Rotation(App.Vector(0,0,0), i * (74.0,28.0)), App.Vector(0,0,0)) (---questa riga in realtà è la parte finale della precedente ma il sistema rimanda a capo)
i += 0.01

timer = QtCore.QTimer()
timer.timeout.connect( update )
timer.start(1 )

##--------
Spero che qualcuno possa aiutarmi dicendomi dove sbaglio.
Vi ringrazio in anticipo e Vi auguro buona Giornata
Attachments
prova_ingranaggi.FCStd
(74.3 KiB) Downloaded 14 times
renatorivo
Posts: 2437
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Animazione di ingranagi

Postby renatorivo » Mon Sep 16, 2019 11:54 am

Codie originale

Code: Select all

# animation de deux engrenages
# http://forum.freecadweb.org/viewtopic.php?f=14&t=8017#p65819

from PySide import QtCore

i=0
def update():
    global i
    App.getDocument("Unnamed").Pad001.Placement=App.Placement(App.Vector(0,127.5,0),App.Rotation(App.Vector(0,0,1),-i),App.Vector(0,0,0))
    App.getDocument("Unnamed").Pad.Placement=App.Placement(App.Vector(0,0,0),App.Rotation(App.Vector(0,0,1),i*(74.0/28.0)),App.Vector(0,0,0))
    i += 0.01
timer = QtCore.QTimer()
timer.timeout.connect( update )
timer.start( 1 )
harlekin
Posts: 19
Joined: Wed May 13, 2015 8:52 pm

Re: Animazione di ingranagi

Postby harlekin » Mon Sep 16, 2019 2:53 pm

Grazie per la risposta, ho provato con il codice suggerito
ma ricevo questo errore

timer = QtCore.QTimer()
^
SyntaxError: invalid syntax
renatorivo
Posts: 2437
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Animazione di ingranagi

Postby renatorivo » Mon Sep 16, 2019 7:01 pm

Ciao.
Il codice copiato tale e quale nella console Python mi restituisce lo stesso errore. Copiato in una macro, invece funziona.
Per prova metti il codice sottostante in una macro e poi prova ad eseguirlo con il file allegato

Code: Select all

# animation de deux engrenages
# http://forum.freecadweb.org/viewtopic.php?f=14&t=8017#p65819
# codice modificato di prova di renato

from PySide import QtCore

i=0
def update():
    global i
    App.getDocument("Senza_nome").Extrude001.Placement=App.Placement(App.Vector(0,127.5,0),App.Rotation(App.Vector(0,0,1),-i),App.Vector(0,0,0))
    App.getDocument("Senza_nome").Extrude.Placement=App.Placement(App.Vector(0,0,0),App.Rotation(App.Vector(0,0,1),i*(74.0/28.0)),App.Vector(0,0,0))
    i += 0.01
timer = QtCore.QTimer()
timer.timeout.connect( update )
timer.start( 1 )
Il file
Senza nome.FCStd
(321.56 KiB) Downloaded 11 times
La dimensione è casuale e la rotazione delle due ruote non è sincronizzata, bisogna correggere i parametri che definiscono la velocità di rotazione, ma dovresti vederle girare.
Non si riesce a interrompere la rotazione, bisogna chiudere FreeCAD.
OS: Windows 8.1
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16131 (Git)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 3129ae4296e40ed20e7b3d460b86e6969acbe1c3
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Italian/Italy (it_IT)

EDIT
Nella riga 10 quello il valore 127.5 stabilisce la distanza tra le ruote, nota 127 punto 5 altrimenti non funziona
Nella riga 11 il rapporto 74,0/28,0 è il rapporto tra le ruote, quindi nel mio esempio deve essere cambiato in 51/51
Per sincronizzare i denti applicare una rotazione sull'asse Z di 4° a un Involutegear, non alla estrusione
renatorivo
Posts: 2437
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Animazione di ingranagi

Postby renatorivo » Mon Sep 16, 2019 9:54 pm

Per facilitare la comprensione del cdice ecco un esempio con un terzo ingranaggio
Codice

Code: Select all

# animation de deux engrenages
# http://forum.freecadweb.org/viewtopic.php?f=14&t=8017#p65819
# codice modificato di prova di renato
# funziona con il file Rotazione 

from PySide import QtCore

i=0
def update():
    global i
    App.getDocument("Rotazione").Extrude002.Placement=App.Placement(App.Vector(97,0,0),App.Rotation(App.Vector(0,0,1),-i*(51.0/26.0)),App.Vector(0,0,0))
    App.getDocument("Rotazione").Extrude001.Placement=App.Placement(App.Vector(0,127.5,0),App.Rotation(App.Vector(0,0,1),-i),App.Vector(0,0,0))
    App.getDocument("Rotazione").Extrude.Placement=App.Placement(App.Vector(0,0,0),App.Rotation(App.Vector(0,0,1),i*(51.0/51.0)),App.Vector(0,0,0))
    i += 0.01
timer = QtCore.QTimer()
timer.timeout.connect( update )
timer.start( 1 )
File
Rotazione.FCStd
(420.22 KiB) Downloaded 13 times
harlekin
Posts: 19
Joined: Wed May 13, 2015 8:52 pm

Re: Animazione di ingranagi

Postby harlekin » Tue Sep 17, 2019 11:53 am

Grazie per le risposte
appena ho un attimo di tranquillità provo.
Grazie ancora
harlekin
Posts: 19
Joined: Wed May 13, 2015 8:52 pm

Re: Animazione di ingranagi

Postby harlekin » Thu Sep 19, 2019 7:12 am

Grazie a tutti, ora funziona.