Macro Geneva Wheel/pl

Geneva Wheel

Opis
Pozwala użytkownikowi stworzyć mechanizm koła genewskiego od podstaw. Aby zmienić rozmiar obiektu, należy edytować wartości bezpośrednio w makrze.

Macro version: 1.0
Last modified: 2014-09-21
FreeCAD version: Wszystkie
Download: Ikona paska narzędzi
Autor: Drei
Autor
Drei
Do pobrania
Ikona paska narzędzi
Odnośniki
Wersja Makrodefinicji
1.0
Data zmian
2014-09-21
Wersja FreeCAD
Wszystkie
Domyślny skrót
Brak
Zobacz również
-

Opis

Pozwala użytkownikowi stworzyć mechanizm koła genewskiego od podstaw. Aby zmienić rozmiar obiektu, należy edytować wartości bezpośrednio w makrze.

Jak używać

To makro tworzy główne części mechanizmu koła genewskiego. Wymaga zmiany sześciu wartości w kodzie, przeczytaj komentarze w kodzie. Zmienne to:

Wejście Wyjście
  • a = Promień korby napędowej
  • b = Promień koła genewskiego
  • n = Liczba szczelin napędzanych
  • p = Średnica sworznia napędowego
  • t = Tolerancja
  • h = Wysokość
  • c = Odległość między środkami
  • s = Szerokość środka szczeliny
  • w = Szerokość szczeliny
  • y = Promień łuku zatrzymującego
  • z = Promień tarczy zatrzymującej
  • v = Łuk luzu

Łącze

Makro Geneva Wheel GUI: interfejs graficzny oparty na tym makrze, który pozwala użytkownikowi stworzyć mechanizm koła genewskiego od podstaw.

Skrypt

Ikona paska narzędzi

Macro_Geneva_Wheel.FCMacro

#Creation of a Geneva Wheel with Parametric values  By: Isaac Ayala (drei)
#This Macro creates the main parts of a Geneva Wheel Mechanism 

#It depends on six values that must be altered in the following code
#The variables are a, b, n, p, t and h. 

#Definition for each variable
#    Input
#a = Drive Crank Radius
#b = Geneva Wheel Radius
#n = Driven Slot Quantity
#p = Drive Pin Diameter
#t = Tolerance
#h = Height
#    Output
#c = Distance Between Centers
#s = Slot Center Width
#w = Slot Width
#y = Stop Arc Radius
#z = Stop Disc Radius
#v = Clearance Arc

#Please note that you can alter the code so it depends on five values exclusively
#Just replace c, and either a or b with the following
#    Keep value for a
#c = a/math.sin(math.pi/n)
#b = math.sqrt((math.pow(c,2))-(math.pow(a,2)))
#    Keep value for b
#c = b/math.cos(math.pi/n)
#a = math.sqrt((math.pow(c,2))-(math.pow(b,2)))

from __future__ import division
import time
import math
from PySide import QtCore, QtGui
from FreeCAD import Base
import Part

#Inputs
a = 25.0
b = 60.0
n = 6
p = 4
t = 0.01
h = 5
T = 60

#Outputs
c = math.sqrt(pow(a,2) + pow(b,2))
s = a + b - c
w = p + t
y = a - (1.5 * p)
z = y - t
v = (b * z)/a 

#    Create the Drive Crank (Will be placed on the origin)
driveCrank = Part.makeCylinder(z, h)
driveCrank.translate(Base.Vector(0,0,0))

genevaWheelClearanceCut = Part.makeCylinder(b, h)
genevaWheelClearanceCut.translate(Base.Vector(-c,0,0))

driveCrank = driveCrank.cut(genevaWheelClearanceCut)

driveCrankBase = Part.makeCylinder((1.5*a), h)
driveCrankBase.translate(Base.Vector(0,0,-h))

driveCrank = driveCrank.fuse(driveCrankBase)

drivePin = Part.makeCylinder(p,h)
drivePin.translate(Base.Vector(-a,0,0))

driveCrank = driveCrank.fuse(drivePin)

#    Create the Geneva  Wheel (Will be placed on the x-axis on the left side)
genevaWheel = Part.makeCylinder(b,h)
genevaWheel.translate(Base.Vector(-c,0,0))

stopArc = Part.makeCylinder(y, h)
stopArc.translate(Base.Vector(((y-(b/2)),0,0)))
stopArc.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),30)

for i in range(6):
    stopArc.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),60)
    genevaWheel = genevaWheel.cut(stopArc)

slotLength = Part.makeBox(s,(2*w),h)
slotLength.translate(Base.Vector(-a,-w,0))

slotRadius = Part.makeCylinder(w,h)
slotRadius.translate(Base.Vector(-a,0,0))

slot=slotLength.fuse(slotRadius)

for i in range(6):
    slot.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),60)
    genevaWheel = genevaWheel.cut(slot)

#    Display Result

Part.show(driveCrank)
Part.show(genevaWheel)