# Macro Geneva Wheel GUI

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Other languages:
English • ‎français • ‎italiano

Geneva Wheel GUI

Description
A GUI front end that allows the user to create a Geneva wheel mechanism from scratch. Based on drei's Macro Geneva Wheel

Macro version: 1.0
Author: quick61
Author
quick61
ToolBar Icon
Macro Version
1.0
2014-09-21
All
Default shortcut
None
None

## Description

A GUI front end that allows the user to create a Geneva wheel mechanism from scratch. Based on drei's Macro Geneva Wheel

## How To Use

To use this Macro, copy it to your FreeCAD Macro directory and include the icon graphic in the same directory as the Macro.

Copy and include this graphic with the macro.

## Script

ToolBar Icon

Macro_Geneva_Wheel_GUI.FCMacro

```#Creation of a Geneva Wheel with Parametric values  By: Isaac Ayala (drei) & Mark Stephen (quick61)
#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
#t = Geneva Wheel Tolerance
#h = Geneva Wheel Height
#n = Driven Slot Quantity
#    Output
#c = Distance Between Centers
#s = Slot Center Width
#w = Slot Width
#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 math
from PySide import QtGui, QtCore
from PySide.QtGui import QApplication, QDialog, QMainWindow
import Part
import Draft
class p():

def Ggear(self):

try:
#Inputs
a = float(self.dCr.text())
#b = float(self.gWr.text())
p = float(self.dPd.text())
t = float(self.gWt.text())
h = float(self.gWh.text())
n = float(self.gWn.text())

#Outputs
#c = math.sqrt(pow(a,2) + pow(b,2))
c = a/math.sin(math.pi/n)
b = math.sqrt((math.pow(c,2))-(math.pow(a,2)))
s = a + b - c
w = p + t
y = a - (3 * p)
z = y - t
v = (b * z)/a
m = math.sqrt((v**2)+(z**2)) # Solves for location of clearance cut axis

#    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))

genevaWheelClearanceCut = Part.makeCylinder(v, h)
genevaWheelClearanceCut.translate(Base.Vector(-m,0,0))

driveCrank = driveCrank.cut(genevaWheelClearanceCut)

driveCrankBase = Part.makeCylinder((a+(2*p)), 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.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),(180/n))

for i in range(int(n)):
stopArc.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),(360/n))
genevaWheel = genevaWheel.cut(stopArc)

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

for i in range(int(n)):
slot.rotate(Base.Vector(-c,0,0),Base.Vector(0,0,1),(360/n))
genevaWheel = genevaWheel.cut(slot)

#    Display Result

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

except:

self.close()

def close(self):
self.dialog.hide()

def __init__(self):
self.dialog = None

self.dialog = QtGui.QDialog()
self.dialog.resize(240,100)

self.dialog.setWindowTitle("Geneva Wheel Macro")
la = QtGui.QVBoxLayout(self.dialog)

DCR = QtGui.QLabel("Drive Crank Radius ( A )")
self.dCr = QtGui.QLineEdit()

#GWR = QtGui.QLabel("Geneva Wheel Radius ( B )")
#self.gWr = QtGui.QLineEdit()

DPD = QtGui.QLabel("Drive Pin Radius ( C )")
self.dPd = QtGui.QLineEdit()

GWT = QtGui.QLabel("Geneva Wheel Tolerance ( D )")
self.gWt = QtGui.QLineEdit()

GWH = QtGui.QLabel("Geneva Wheel Height")
self.gWh = QtGui.QLineEdit()

GWN = QtGui.QLabel("Driven Slot Quantity")
self.gWn = QtGui.QLineEdit()

#
# - Include graphic image in dialog window -
#
# Insure that image is in the same directory as this Macro.
# Image should be available from same source as Macro.
#

import os
macro_dir = os.path.dirname(__file__)
self.PiX = QtGui.QLabel()
self.PiX.setPixmap(os.path.join(macro_dir, "GW_Dim.png"))

hbox = QtGui.QHBoxLayout()

# - End Image layout -

okbox = QtGui.QDialogButtonBox(self.dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)