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
Animazione di ingranagi
Forum rules
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!
Animazione di ingranagi
- Attachments
-
- prova_ingranaggi.FCStd
- (74.3 KiB) Downloaded 46 times
-
- Veteran
- Posts: 2611
- Joined: Tue Feb 21, 2012 8:07 pm
- Location: Torino - Italy
Re: Animazione di ingranagi
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 )
Re: Animazione di ingranagi
Grazie per la risposta, ho provato con il codice suggerito
ma ricevo questo errore
timer = QtCore.QTimer()
^
SyntaxError: invalid syntax
ma ricevo questo errore
timer = QtCore.QTimer()
^
SyntaxError: invalid syntax
-
- Veteran
- Posts: 2611
- Joined: Tue Feb 21, 2012 8:07 pm
- Location: Torino - Italy
Re: Animazione di ingranagi
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
Il file
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
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 )
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
-
- Veteran
- Posts: 2611
- Joined: Tue Feb 21, 2012 8:07 pm
- Location: Torino - Italy
Re: Animazione di ingranagi
Per facilitare la comprensione del cdice ecco un esempio con un terzo ingranaggio
Codice
File
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 )
Re: Animazione di ingranagi
Grazie per le risposte
appena ho un attimo di tranquillità provo.
Grazie ancora
appena ho un attimo di tranquillità provo.
Grazie ancora
Re: Animazione di ingranagi
Grazie a tutti, ora funziona.