[0.20][PartDesign] Sprocket - Allow multiple...
... standard reference sprockets rather than just ANSI as well as capturing the thickness as stated in the particular standard. The user is not bound by this but it saves them looking it up manually. See recent posts in discussion : https://forum.freecadweb.org/viewtopic.php?f=22&t=44525
This commit is contained in:
@@ -87,12 +87,14 @@ class Sprocket:
|
||||
obj.addProperty("App::PropertyInteger","NumberOfTeeth","Sprocket","Number of gear teeth")
|
||||
obj.addProperty("App::PropertyLength","Pitch","Sprocket","Chain Pitch")
|
||||
obj.addProperty("App::PropertyLength","RollerDiameter","Sprocket","Roller Diameter")
|
||||
obj.addProperty("App::PropertyString","ANSISize","Sprocket","ANSI Size")
|
||||
obj.addProperty("App::PropertyString","SprocketReference","Sprocket","Sprocket Reference")
|
||||
obj.addProperty("App::PropertyLength","Thickness","Sprocket","Thickness as stated in the reference specification")
|
||||
|
||||
obj.NumberOfTeeth = 50
|
||||
obj.Pitch = "0.375 in"
|
||||
obj.RollerDiameter = "0.20 in"
|
||||
obj.ANSISize = "35"
|
||||
obj.SprocketReference = "ANSI 35"
|
||||
obj.Thickness = "0.11 in"
|
||||
|
||||
obj.Proxy = self
|
||||
|
||||
@@ -154,7 +156,8 @@ class SprocketTaskPanel:
|
||||
QtCore.QObject.connect(self.form.Quantity_Pitch, QtCore.SIGNAL("valueChanged(double)"), self.pitchChanged)
|
||||
QtCore.QObject.connect(self.form.Quantity_RollerDiameter, QtCore.SIGNAL("valueChanged(double)"), self.rollerDiameterChanged)
|
||||
QtCore.QObject.connect(self.form.spinBox_NumberOfTeeth, QtCore.SIGNAL("valueChanged(int)"), self.numTeethChanged)
|
||||
QtCore.QObject.connect(self.form.comboBox_ANSISize, QtCore.SIGNAL("currentTextChanged(const QString)"), self.ANSISizeChanged)
|
||||
QtCore.QObject.connect(self.form.comboBox_SprocketReference, QtCore.SIGNAL("currentTextChanged(const QString)"), self.SprocketReferenceChanged)
|
||||
QtCore.QObject.connect(self.form.Quantity_Thickness, QtCore.SIGNAL("valueChanged(double)"), self.ThicknessChanged)
|
||||
|
||||
self.update()
|
||||
|
||||
@@ -166,10 +169,11 @@ class SprocketTaskPanel:
|
||||
"""
|
||||
Transfer from the dialog to the object
|
||||
"""
|
||||
self.obj.NumberOfTeeth = self.form.spinBox_NumberOfTeeth.value()
|
||||
self.obj.Pitch = self.form.Quantity_Pitch.text()
|
||||
self.obj.RollerDiameter = self.form.Quantity_RollerDiameter.text()
|
||||
self.obj.ANSISize = self.form.comboBox_ANSISize.currentText()
|
||||
self.obj.NumberOfTeeth = self.form.spinBox_NumberOfTeeth.value()
|
||||
self.obj.Pitch = self.form.Quantity_Pitch.text()
|
||||
self.obj.RollerDiameter = self.form.Quantity_RollerDiameter.text()
|
||||
self.obj.SprocketReference = self.form.comboBox_SprocketReference.currentText()
|
||||
self.obj.Thickness = self.form.Quantity_Thickness.text()
|
||||
|
||||
def transferFrom(self):
|
||||
"""
|
||||
@@ -178,37 +182,56 @@ class SprocketTaskPanel:
|
||||
self.form.spinBox_NumberOfTeeth.setValue(self.obj.NumberOfTeeth)
|
||||
self.form.Quantity_Pitch.setText(self.obj.Pitch.UserString)
|
||||
self.form.Quantity_RollerDiameter.setText(self.obj.RollerDiameter.UserString)
|
||||
self.form.comboBox_ANSISize.setCurrentText(self.obj.ANSISize)
|
||||
self.form.comboBox_SprocketReference.setCurrentText(self.obj.SprocketReference)
|
||||
self.form.Quantity_Thickness.setText(self.obj.Thickness.UserString)
|
||||
|
||||
def pitchChanged(self, value):
|
||||
self.obj.Pitch = value
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
FreeCAD.Gui.SendMsgToActiveView("ViewFit")
|
||||
|
||||
def ANSISizeChanged(self, size):
|
||||
def SprocketReferenceChanged(self, size):
|
||||
"""
|
||||
ANSI B29.1-2011 standard roller chain sizes in USCS units (inches)
|
||||
{size: [Pitch, Roller Diameter]}
|
||||
"""
|
||||
ANSIRollerTable = {"25": [0.250, 0.130],
|
||||
"35": [0.375, 0.200],
|
||||
"41": [0.500, 0.306],
|
||||
"40": [0.500, 0.312],
|
||||
"50": [0.625, 0.400],
|
||||
"60": [0.750, 0.469],
|
||||
"80": [1.000, 0.625],
|
||||
"100":[1.250, 0.750],
|
||||
"120":[1.500, 0.875],
|
||||
"140":[1.750, 1.000],
|
||||
"160":[2.000, 1.125],
|
||||
"180":[2.250, 1.460],
|
||||
"200":[2.500, 1.562],
|
||||
"240":[3.000, 1.875]}
|
||||
SprocketReferenceRollerTable = {"ANSI 25": [0.250, 0.130, 0.110],
|
||||
"ANSI 35": [0.375, 0.200, 0.168],
|
||||
"ANSI 41": [0.500, 0.306, 0.227],
|
||||
"ANSI 40": [0.500, 0.312, 0.284],
|
||||
"ANSI 50": [0.625, 0.400, 0.343],
|
||||
"ANSI 60": [0.750, 0.469, 0.459],
|
||||
"ANSI 80": [1.000, 0.625, 0.575],
|
||||
"ANSI 100":[1.250, 0.750, 0.692],
|
||||
"ANSI 120":[1.500, 0.875, 0.924],
|
||||
"ANSI 140":[1.750, 1.000, 0.924],
|
||||
"ANSI 160":[2.000, 1.125, 1.156],
|
||||
"ANSI 180":[2.250, 1.460, 1.301],
|
||||
"ANSI 200":[2.500, 1.562, 1.389],
|
||||
"ANSI 240":[3.000, 1.875, 1.738],
|
||||
"Motorcycle 420":[0.500, 0.3125, 0.227],
|
||||
"Motorcycle 425":[0.500, 0.3125, 0.284],
|
||||
"Motorcycle 428":[0.500, 0.335, 0.284],
|
||||
"Motorcycle 520":[0.625, 0.400, 0.227],
|
||||
"Motorcycle 525":[0.625, 0.400, 0.284],
|
||||
"Motorcycle 530":[0.625, 0.400, 0.343],
|
||||
"Motorcycle 630":[0.75, 0.400, 0.343],
|
||||
"Bicycle with Derailleur":[0.500, 0.3125, 0.11],
|
||||
"Bicycle without Derailleur":[0.500, 0.3125, 0.084],
|
||||
"ISO 606 06B":[0.375, 5.72/25.4, 5.2/25.4],
|
||||
"ISO 606 08B":[0.500, 7.75/25.4, 7.0/25.4],
|
||||
"ISO 606 10B":[0.625, 9.65/25.4, 9.1/25.4],
|
||||
"ISO 606 12B":[0.750, 11.68/25.4, 11.1/25.4],
|
||||
"ISO 606 16B":[1.000, 17.02/25.4, 16.2/25.4],
|
||||
"ISO 606 20B":[1.250, 19.56/25.4, 18.5/25.4],
|
||||
"ISO 606 24B":[1.5, 25.4/25.4, 24.1/25.4]}
|
||||
|
||||
self.obj.Pitch = str(ANSIRollerTable[size][0]) + " in"
|
||||
self.obj.RollerDiameter = str(ANSIRollerTable[size][1]) + " in"
|
||||
self.obj.Pitch = str(SprocketReferenceRollerTable[size][0]) + " in"
|
||||
self.obj.RollerDiameter = str(SprocketReferenceRollerTable[size][1]) + " in"
|
||||
self.obj.Thickness = str(SprocketReferenceRollerTable[size][2]) + " in"
|
||||
self.form.Quantity_Pitch.setText(self.obj.Pitch.UserString)
|
||||
self.form.Quantity_RollerDiameter.setText(self.obj.RollerDiameter.UserString)
|
||||
self.form.Quantity_Thickness.setText(self.obj.Thickness.UserString)
|
||||
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
FreeCAD.Gui.SendMsgToActiveView("ViewFit")
|
||||
@@ -221,6 +244,10 @@ class SprocketTaskPanel:
|
||||
self.obj.NumberOfTeeth = value
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
FreeCAD.Gui.SendMsgToActiveView("ViewFit")
|
||||
|
||||
def ThicknessChanged(self, value):
|
||||
self.obj.Thickness = str(value)
|
||||
self.obj.Proxy.execute(self.obj)
|
||||
|
||||
def getStandardButtons(self):
|
||||
return int(QtGui.QDialogButtonBox.Ok) | int(QtGui.QDialogButtonBox.Cancel)| int(QtGui.QDialogButtonBox.Apply)
|
||||
|
||||
Reference in New Issue
Block a user