def setupUi(self): mw = self.getMainWindow() form = mw.findChild(QtGui.QWidget, "TaskHole") if form is None: return form.tabWidget = form.findChild(QtGui.QTabWidget, "tabWidget") # Type form.tabType = form.tabWidget.findChild(QtGui.QWidget, "tab_type") form.buttonThru = form.tabType.findChild(QtGui.QRadioButton, "buttonThru") form.buttonDepth = form.tabType.findChild(QtGui.QRadioButton, "buttonDepth") form.checkThreaded = form.tabType.findChild(QtGui.QCheckBox, "checkThreaded") form.checkCounterbore = form.tabType.findChild(QtGui.QCheckBox, "checkCounterbore") form.checkCountersink = form.tabType.findChild(QtGui.QCheckBox, "checkCountersink") # Norm form.tabNorm = form.tabWidget.findChild(QtGui.QWidget, "tab_norm") form.checkCustom = form.tabNorm.findChild(QtGui.QCheckBox, "checkCustom") form.comboNorm = form.tabNorm.findChild(QtGui.QComboBox, "comboNorm") for std in Standards.getStandards("through"): form.comboNorm.addItem(std) form.comboTolerance = form.tabNorm.findChild(QtGui.QComboBox, "comboTolerance") for tol in Standards.standards_tolerance: form.comboTolerance.addItem(tol) form.comboNormDia = form.tabNorm.findChild(QtGui.QComboBox, "comboNormDia") form.comboNormBoltWasher = form.tabNorm.findChild( QtGui.QComboBox, "comboNormBoltWasher") # Thread form.tabThread = form.tabWidget.findChild(QtGui.QWidget, "tab_thread") form.comboThreadNorm = form.tabThread.findChild( QtGui.QComboBox, "comboThreadNorm") for std in Standards.getStandards("thread"): form.comboThreadNorm.addItem(std) form.comboThreadDia = form.tabThread.findChild(QtGui.QComboBox, "comboThreadDia") form.checkCustomThreadLength = form.tabThread.findChild( QtGui.QCheckBox, "checkCustomThreadLength") form.comboFinishNorm = form.tabThread.findChild( QtGui.QComboBox, "comboFinishNorm") for std in Standards.getStandards("threaded"): form.comboFinishNorm.addItem(std) # Data form.tabData = form.tabWidget.findChild(QtGui.QWidget, "tab_data") form.spinDiameter = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinDiameter") form.spinDepth = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinDepth") form.spinCounterboreDiameter = form.tabData.findChild( QtGui.QDoubleSpinBox, "spinCounterboreDiameter") form.spinCounterboreDepth = form.tabData.findChild( QtGui.QDoubleSpinBox, "spinCounterboreDepth") form.spinCountersinkAngle = form.tabData.findChild( QtGui.QDoubleSpinBox, "spinCountersinkAngle") form.spinThreadLength = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinThreadLength") # Position form.tabPosition = form.tabWidget.findChild(QtGui.QWidget, "tab_position") form.comboType = form.tabPosition.findChild(QtGui.QComboBox, "comboType") for i in self.typestr: form.comboType.addItem(i) form.buttonSupport = form.tabPosition.findChild( QtGui.QPushButton, "buttonSupport") form.lineSupport = form.tabPosition.findChild(QtGui.QLineEdit, "lineSupport") form.buttonRef1 = form.tabPosition.findChild(QtGui.QPushButton, "buttonRef1") form.lineRef1 = form.tabPosition.findChild(QtGui.QLineEdit, "lineRef1") form.labelRef1 = form.tabPosition.findChild(QtGui.QLabel, "labelRef1") form.spinRef1 = form.tabPosition.findChild(QtGui.QDoubleSpinBox, "spinRef1") form.buttonRef2 = form.tabPosition.findChild(QtGui.QPushButton, "buttonRef2") form.lineRef2 = form.tabPosition.findChild(QtGui.QLineEdit, "lineRef2") form.labelRef2 = form.tabPosition.findChild(QtGui.QLabel, "labelRef2") form.spinRef2 = form.tabPosition.findChild(QtGui.QDoubleSpinBox, "spinRef2") self.form = form # Connect Signals and Slots # Type self.form.buttonThru.toggled.connect(self.buttonThru) self.form.buttonDepth.toggled.connect(self.buttonDepth) self.form.checkThreaded.toggled.connect(self.checkThreaded) self.form.checkCounterbore.toggled.connect(self.checkCounterbore) self.form.checkCountersink.toggled.connect(self.checkCountersink) # Norm self.form.checkCustom.toggled.connect(self.checkCustom) self.form.comboNorm.currentIndexChanged.connect(self.comboNorm) self.form.comboTolerance.currentIndexChanged.connect( self.comboTolerance) self.form.comboNormDia.currentIndexChanged.connect(self.comboNormDia) self.form.comboNormBoltWasher.currentIndexChanged.connect( self.comboNormBoltWasher) # Thread self.form.comboThreadNorm.currentIndexChanged.connect( self.comboThreadNorm) self.form.comboThreadDia.currentIndexChanged.connect( self.comboThreadDia) self.form.checkCustomThreadLength.toggled.connect( self.checkCustomThreadLength) self.form.comboFinishNorm.currentIndexChanged.connect( self.comboFinishNorm) # Data self.form.spinDiameter.valueChanged.connect(self.spinDiameter) self.form.spinDepth.valueChanged.connect(self.spinDepth) self.form.spinCounterboreDiameter.valueChanged.connect( self.spinCounterboreDiameter) self.form.spinCounterboreDepth.valueChanged.connect( self.spinCounterboreDepth) self.form.spinCountersinkAngle.valueChanged.connect( self.spinCountersinkAngle) self.form.spinThreadLength.valueChanged.connect(self.spinThreadLength) # Position self.form.comboType.currentIndexChanged.connect(self.comboType) self.form.buttonSupport.clicked.connect(self.buttonSupport) self.form.buttonRef1.clicked.connect(self.buttonRef1) self.form.spinRef1.valueChanged.connect(self.spinRef1) self.form.buttonRef2.clicked.connect(self.buttonRef2) self.form.spinRef2.valueChanged.connect(self.spinRef2) # Update the UI self.updateUI() return True
def setupUi(self): mw = self.getMainWindow() form = mw.findChild(QtGui.QWidget, "TaskHole") if form == None: return form.tabWidget = form.findChild(QtGui.QTabWidget, "tabWidget") # Type form.tabType = form.tabWidget.findChild(QtGui.QWidget, "tab_type") form.buttonThru = form.tabType.findChild(QtGui.QRadioButton, "buttonThru") form.buttonDepth = form.tabType.findChild(QtGui.QRadioButton, "buttonDepth") form.checkThreaded = form.tabType.findChild(QtGui.QCheckBox, "checkThreaded") form.checkCounterbore = form.tabType.findChild(QtGui.QCheckBox, "checkCounterbore") form.checkCountersink = form.tabType.findChild(QtGui.QCheckBox, "checkCountersink") # Norm form.tabNorm = form.tabWidget.findChild(QtGui.QWidget, "tab_norm") form.checkCustom = form.tabNorm.findChild(QtGui.QCheckBox, "checkCustom") form.comboNorm = form.tabNorm.findChild(QtGui.QComboBox, "comboNorm") for std in Standards.getStandards("through"): form.comboNorm.addItem(std) form.comboTolerance = form.tabNorm.findChild(QtGui.QComboBox, "comboTolerance") for tol in Standards.standards_tolerance: form.comboTolerance.addItem(tol) form.comboNormDia = form.tabNorm.findChild(QtGui.QComboBox, "comboNormDia") form.comboNormBoltWasher = form.tabNorm.findChild(QtGui.QComboBox, "comboNormBoltWasher") # Thread form.tabThread = form.tabWidget.findChild(QtGui.QWidget, "tab_thread") form.comboThreadNorm = form.tabThread.findChild(QtGui.QComboBox, "comboThreadNorm") for std in Standards.getStandards("thread"): form.comboThreadNorm.addItem(std) form.comboThreadDia = form.tabThread.findChild(QtGui.QComboBox, "comboThreadDia") form.checkCustomThreadLength = form.tabThread.findChild(QtGui.QCheckBox, "checkCustomThreadLength") form.comboFinishNorm = form.tabThread.findChild(QtGui.QComboBox, "comboFinishNorm") for std in Standards.getStandards("threaded"): form.comboFinishNorm.addItem(std) # Data form.tabData = form.tabWidget.findChild(QtGui.QWidget, "tab_data") form.spinDiameter = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinDiameter") form.spinDepth = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinDepth") form.spinCounterboreDiameter = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinCounterboreDiameter") form.spinCounterboreDepth = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinCounterboreDepth") form.spinCountersinkAngle = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinCountersinkAngle") form.spinThreadLength = form.tabData.findChild(QtGui.QDoubleSpinBox, "spinThreadLength") # Position form.tabPosition = form.tabWidget.findChild(QtGui.QWidget, "tab_position") form.comboType = form.tabPosition.findChild(QtGui.QComboBox, "comboType") for i in self.typestr: form.comboType.addItem(i) form.buttonSupport = form.tabPosition.findChild(QtGui.QPushButton, "buttonSupport") form.lineSupport = form.tabPosition.findChild(QtGui.QLineEdit, "lineSupport") form.buttonRef1 = form.tabPosition.findChild(QtGui.QPushButton, "buttonRef1") form.lineRef1 = form.tabPosition.findChild(QtGui.QLineEdit, "lineRef1") form.labelRef1 = form.tabPosition.findChild(QtGui.QLabel, "labelRef1") form.spinRef1 = form.tabPosition.findChild(QtGui.QDoubleSpinBox, "spinRef1") form.buttonRef2 = form.tabPosition.findChild(QtGui.QPushButton, "buttonRef2") form.lineRef2 = form.tabPosition.findChild(QtGui.QLineEdit, "lineRef2") form.labelRef2 = form.tabPosition.findChild(QtGui.QLabel, "labelRef2") form.spinRef2 = form.tabPosition.findChild(QtGui.QDoubleSpinBox, "spinRef2") self.form = form # Connect Signals and Slots # Type self.form.buttonThru.toggled.connect(self.buttonThru) self.form.buttonDepth.toggled.connect(self.buttonDepth) self.form.checkThreaded.toggled.connect(self.checkThreaded) self.form.checkCounterbore.toggled.connect(self.checkCounterbore) self.form.checkCountersink.toggled.connect(self.checkCountersink) # Norm self.form.checkCustom.toggled.connect(self.checkCustom) self.form.comboNorm.currentIndexChanged.connect(self.comboNorm) self.form.comboTolerance.currentIndexChanged.connect(self.comboTolerance) self.form.comboNormDia.currentIndexChanged.connect(self.comboNormDia) self.form.comboNormBoltWasher.currentIndexChanged.connect(self.comboNormBoltWasher) # Thread self.form.comboThreadNorm.currentIndexChanged.connect(self.comboThreadNorm) self.form.comboThreadDia.currentIndexChanged.connect(self.comboThreadDia) self.form.checkCustomThreadLength.toggled.connect(self.checkCustomThreadLength) self.form.comboFinishNorm.currentIndexChanged.connect(self.comboFinishNorm) # Data self.form.spinDiameter.valueChanged.connect(self.spinDiameter) self.form.spinDepth.valueChanged.connect(self.spinDepth) self.form.spinCounterboreDiameter.valueChanged.connect(self.spinCounterboreDiameter) self.form.spinCounterboreDepth.valueChanged.connect(self.spinCounterboreDepth) self.form.spinCountersinkAngle.valueChanged.connect(self.spinCountersinkAngle) self.form.spinThreadLength.valueChanged.connect(self.spinThreadLength) # Position self.form.comboType.currentIndexChanged.connect(self.comboType) self.form.buttonSupport.clicked.connect(self.buttonSupport) self.form.buttonRef1.clicked.connect(self.buttonRef1) self.form.spinRef1.valueChanged.connect(self.spinRef1) self.form.buttonRef2.clicked.connect(self.buttonRef2) self.form.spinRef2.valueChanged.connect(self.spinRef2) # Update the UI self.updateUI() return True
def updateUI(self): # Type self.form.buttonThru.setChecked(self.feature.HoleType == "Thru") self.form.buttonDepth.setChecked(self.feature.HoleType == "Depth") self.form.checkThreaded.setChecked(self.feature.Threaded == True) self.form.checkCounterbore.setChecked(self.feature.Counterbore == True) self.form.checkCountersink.setChecked(self.feature.Countersink == True) # Norm if self.feature.Norm == "Custom": self.form.checkCustom.setChecked(True) self.form.comboNorm.setEnabled(False) self.form.comboTolerance.setEnabled(False) self.form.comboNormDia.setEnabled(False) self.form.comboNormBoltWasher.setEnabled(False) else: if self.feature.Counterbore == True: holetype = "counterbore" elif self.feature.Countersink == True: holetype = "countersink" elif self.feature.Threaded == True: holetype = "threaded" else: holetype = "through" self.form.comboNorm.setEnabled(True) self.form.comboTolerance.setEnabled(True) self.form.comboNormDia.setEnabled(True) if holetype == "counterbore": self.form.comboNormBoltWasher.setEnabled(True) else: self.form.comboNormBoltWasher.setEnabled(False) # comboNorm standards = Standards.getStandards(holetype) self.form.comboNorm.blockSignals(True) self.form.comboNorm.clear() for std in standards: self.form.comboNorm.addItem(std) if not self.feature.Norm in standards: self.feature.Norm = standards[0] else: self.form.comboNorm.setCurrentIndex( standards.index(self.feature.Norm)) self.form.comboNorm.blockSignals(False) # comboTolerance self.form.comboTolerance.blockSignals(True) self.form.comboTolerance.setCurrentIndex( Standards.standards_tolerance.index( self.feature.NormTolerance)) self.form.comboTolerance.blockSignals(False) # comboNormDia diameters = sorted(Standards.getBaseDiameters(self.feature.Norm)) self.form.comboNormDia.blockSignals(True) self.form.comboNormDia.clear() for dia in diameters: self.form.comboNormDia.addItem("M%g" % dia) if self.feature.NormDiameter in diameters: self.form.comboNormDia.setCurrentIndex( diameters.index(self.feature.NormDiameter)) self.form.comboNormDia.blockSignals(False) # comboNormBoltWasher if holetype == "counterbore": rowStandards = sorted( Standards.getRowStandards(self.feature.Norm)) self.form.comboNormBoltWasher.blockSignals(True) self.form.comboNormBoltWasher.clear() for std in rowStandards: self.form.comboNormBoltWasher.addItem(std) if self.feature.ExtraNorm in rowStandards: self.form.comboNormBoltWasher.setCurrentIndex( rowStandards.index(self.feature.ExtraNorm)) self.form.comboNormBoltWasher.blockSignals(False) # Dependent values if holetype == "through": self.feature.Diameter = Standards.getThroughHoleDia( self.feature.Norm, self.feature.NormDiameter, self.feature.NormTolerance) elif holetype == "counterbore": throughStandard = Standards.getThroughHoleStandard( self.feature.Norm) self.feature.Diameter = Standards.getThroughHoleDia( throughStandard, self.feature.NormDiameter, self.feature.NormTolerance) self.feature.CounterboreDiameter = Standards.getCounterboreDia( self.feature.Norm, self.feature.NormDiameter, self.feature.ExtraNorm) # TODO: Calculate counter bore depth from standard for bolt and washer(s) # Requires accessing all the norms for bolts # self.feature.CounterboreDepth = calcCounterboreDepth(...) elif holetype == "countersink": throughStandard = Standards.getThroughHoleStandard( self.feature.Norm) self.feature.Diameter = Standards.getThroughHoleDia( throughStandard, self.feature.NormDiameter, self.feature.NormTolerance) self.feature.CounterboreDiameter = Standards.getCountersinkDia( self.feature.Norm, self.feature.NormDiameter) self.feature.CountersinkAngle = Standards.getCountersinkAngle( self.feature.Norm, self.feature.NormDiameter) / 2.0 # Thread if self.feature.Threaded == True: if not self.feature.Counterbore and not self.feature.Countersink: self.form.comboTolerance.setEnabled(False) else: self.form.tabNorm.setEnabled(True) self.form.comboTolerance.setEnabled(False) self.form.tabThread.setEnabled(True) self.form.comboThreadNorm.blockSignals(True) standards = Standards.getStandards("thread") if not self.feature.NormThread in standards: self.feature.NormThread = standards[0] else: self.form.comboThreadNorm.setCurrentIndex( standards.index(self.feature.NormThread)) self.form.comboThreadNorm.blockSignals(False) threadDiameters = sorted( Standards.getBaseDiameters(self.feature.NormThread)) self.form.comboThreadDia.blockSignals(True) self.form.comboThreadDia.clear() for dia in threadDiameters: self.form.comboThreadDia.addItem("M%g" % dia) if self.feature.NormDiameter in threadDiameters: self.form.comboThreadDia.setCurrentIndex( threadDiameters.index(self.feature.NormDiameter)) self.form.comboThreadDia.blockSignals(False) if self.feature.NormThreadFinish == "Custom": self.form.checkCustomThreadLength.setChecked(True) self.form.comboFinishNorm.setEnabled(False) else: self.form.checkCustomThreadLength.setChecked(False) self.form.comboFinishNorm.setEnabled(True) self.form.comboFinishNorm.blockSignals(True) standards = Standards.getStandards("threaded") if not self.feature.NormThreadFinish in standards: self.feature.NormThreadFinish = standards[0] else: self.form.comboFinishNorm.setCurrentIndex( standards.index(self.feature.NormThreadFinish)) self.form.comboFinishNorm.blockSignals(False) flength = Standards.getThreadFinishLength( self.feature.NormThreadFinish, self.feature.NormDiameter) tlength = self.feature.Depth - flength if tlength > 0: self.feature.ThreadLength = tlength # TODO: Warning message # Dependents self.feature.Diameter = Standards.getThreadCoreDiameter( self.feature.NormThread, self.feature.NormDiameter) else: self.form.tabThread.setEnabled(False) # Dependents self.form.spinDiameter.setEnabled(True) # Data self.form.spinDiameter.setValue(self.feature.Diameter) self.form.spinDepth.setValue(self.feature.Depth) if self.feature.HoleType == "Thru": self.form.spinDepth.setEnabled(False) else: self.form.spinDepth.setEnabled(True) if self.feature.Threaded == True: self.form.spinThreadLength.setEnabled(True) else: self.form.spinThreadLength.setEnabled(False) if self.feature.Counterbore == True: self.form.spinCounterboreDiameter.setEnabled(True) self.form.spinCounterboreDiameter.setValue( self.feature.CounterboreDiameter) self.form.spinCounterboreDepth.setEnabled(True) self.form.spinCounterboreDepth.setValue( self.feature.CounterboreDepth) self.form.spinCountersinkAngle.setEnabled(False) elif self.feature.Countersink == True: self.form.spinCounterboreDiameter.setEnabled(True) self.form.spinCounterboreDiameter.setValue( self.feature.CounterboreDiameter) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(True) self.form.spinCountersinkAngle.setValue( self.feature.CountersinkAngle) else: self.form.spinCounterboreDiameter.setEnabled(False) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(False) if self.feature.Norm == "Custom": self.form.spinDiameter.setEnabled(True) else: self.form.spinDiameter.setEnabled(False) if holetype == "counterbore": # Diameter is taken from Norm self.form.spinCounterboreDiameter.setEnabled(False) elif holetype == "countersink": # Values are taken from Norm self.form.spinCounterboreDiameter.setEnabled(False) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(False) if self.feature.Threaded == True: self.form.spinDiameter.setEnabled(False) if self.feature.NormThreadFinish != "Custom": self.form.spinThreadLength.setEnabled(False) self.form.spinThreadLength.setValue(self.feature.ThreadLength) # Position self.form.buttonSupport.setText("Face") if self.feature.Support is None: # First-time initialization selection = FreeCADGui.Selection.getSelectionEx() self.feature.Support = (selection[0].Object, selection[0].SubElementNames) self.form.lineSupport.setText(self.getRefText(self.feature.Support)) if self.feature.PositionType == self.types[0]: # Linear self.form.buttonRef1.setText("Line/Plane") self.form.buttonRef1.setEnabled(True) self.form.buttonRef2.setText("Line/Plane") self.form.buttonRef2.setEnabled(True) self.form.lineRef1.setEnabled(True) self.form.lineRef2.setEnabled(True) self.form.labelRef1.setEnabled(True) self.form.labelRef1.setText("Distance") axis = self.feature.HoleGroove.Sketch.Support[0].References[0][0] if len(axis.References) > 0 and axis.References[0] != None: if (len(axis.References) == 3): self.form.lineRef1.setText( self.getRefText(axis.References[1])) else: self.form.lineRef1.setText( self.getRefText(axis.References[0])) self.form.spinRef1.setEnabled(True) self.form.spinRef1.setValue(axis.Offset) self.form.labelRef2.setEnabled(True) self.form.labelRef2.setText("Distance") if len(axis.References) > 1 and axis.References[1] != None: if (len(axis.References) == 3): self.form.lineRef2.setText( self.getRefText(axis.References[2])) else: self.form.lineRef2.setText( self.getRefText(axis.References[1])) self.form.spinRef2.setEnabled(True) self.form.spinRef2.setValue(axis.Offset2) elif self.feature.PositionType == self.types[1]: # Coaxial self.form.buttonRef1.setText("Circle/Cylinder") self.form.buttonRef1.setEnabled(True) self.form.buttonRef2.setEnabled(False) self.form.lineRef1.setEnabled(True) axis = self.feature.HoleGroove.Sketch.Support[0].References[0][0] if len(axis.References) > 0 and axis.References[0] != None: self.form.lineRef1.setText(self.getRefText(axis.References[0])) self.form.lineRef2.setEnabled(False) self.form.labelRef1.setEnabled(False) self.form.spinRef1.setEnabled(False) self.form.labelRef2.setEnabled(False) self.form.spinRef2.setEnabled(False) else: # Nothing else defined yet pass
def updateUI(self): # Type self.form.buttonThru.setChecked(self.feature.HoleType == "Thru") self.form.buttonDepth.setChecked(self.feature.HoleType == "Depth") self.form.checkThreaded.setChecked(self.feature.Threaded == True) self.form.checkCounterbore.setChecked(self.feature.Counterbore == True) self.form.checkCountersink.setChecked(self.feature.Countersink == True) # Norm if self.feature.Norm == "Custom": self.form.checkCustom.setChecked(True) self.form.comboNorm.setEnabled(False) self.form.comboTolerance.setEnabled(False) self.form.comboNormDia.setEnabled(False) self.form.comboNormBoltWasher.setEnabled(False) else: if self.feature.Counterbore == True: holetype = "counterbore" elif self.feature.Countersink == True: holetype = "countersink" elif self.feature.Threaded == True: holetype = "threaded" else: holetype = "through" self.form.comboNorm.setEnabled(True) self.form.comboTolerance.setEnabled(True) self.form.comboNormDia.setEnabled(True) if holetype == "counterbore": self.form.comboNormBoltWasher.setEnabled(True) else: self.form.comboNormBoltWasher.setEnabled(False) # comboNorm standards = Standards.getStandards(holetype) self.form.comboNorm.blockSignals(True) self.form.comboNorm.clear() for std in standards: self.form.comboNorm.addItem(std) if not self.feature.Norm in standards: self.feature.Norm = standards[0] else: self.form.comboNorm.setCurrentIndex(standards.index(self.feature.Norm)) self.form.comboNorm.blockSignals(False) # comboTolerance self.form.comboTolerance.blockSignals(True) self.form.comboTolerance.setCurrentIndex(Standards.standards_tolerance.index(self.feature.NormTolerance)) self.form.comboTolerance.blockSignals(False) # comboNormDia diameters = sorted(Standards.getBaseDiameters(self.feature.Norm)) self.form.comboNormDia.blockSignals(True) self.form.comboNormDia.clear() for dia in diameters: self.form.comboNormDia.addItem("M%g" % dia) if self.feature.NormDiameter in diameters: self.form.comboNormDia.setCurrentIndex(diameters.index(self.feature.NormDiameter)) self.form.comboNormDia.blockSignals(False) # comboNormBoltWasher if holetype == "counterbore": rowStandards = sorted(Standards.getRowStandards(self.feature.Norm)) self.form.comboNormBoltWasher.blockSignals(True) self.form.comboNormBoltWasher.clear() for std in rowStandards: self.form.comboNormBoltWasher.addItem(std) if self.feature.ExtraNorm in rowStandards: self.form.comboNormBoltWasher.setCurrentIndex(rowStandards.index(self.feature.ExtraNorm)) self.form.comboNormBoltWasher.blockSignals(False) # Dependent values if holetype == "through": self.feature.Diameter = Standards.getThroughHoleDia(self.feature.Norm, self.feature.NormDiameter, self.feature.NormTolerance) elif holetype == "counterbore": throughStandard = Standards.getThroughHoleStandard(self.feature.Norm) self.feature.Diameter = Standards.getThroughHoleDia(throughStandard, self.feature.NormDiameter, self.feature.NormTolerance) self.feature.CounterboreDiameter = Standards.getCounterboreDia(self.feature.Norm, self.feature.NormDiameter, self.feature.ExtraNorm) # TODO: Calculate counter bore depth from standard for bolt and washer(s) # Requires accessing all the norms for bolts # self.feature.CounterboreDepth = calcCounterboreDepth(...) elif holetype == "countersink": throughStandard = Standards.getThroughHoleStandard(self.feature.Norm) self.feature.Diameter = Standards.getThroughHoleDia(throughStandard, self.feature.NormDiameter, self.feature.NormTolerance) self.feature.CounterboreDiameter = Standards.getCountersinkDia(self.feature.Norm, self.feature.NormDiameter) self.feature.CountersinkAngle = Standards.getCountersinkAngle(self.feature.Norm, self.feature.NormDiameter) / 2.0 # Thread if self.feature.Threaded == True: if not self.feature.Counterbore and not self.feature.Countersink: self.form.comboTolerance.setEnabled(False) else: self.form.tabNorm.setEnabled(True) self.form.comboTolerance.setEnabled(False) self.form.tabThread.setEnabled(True) self.form.comboThreadNorm.blockSignals(True) standards = Standards.getStandards("thread") if not self.feature.NormThread in standards: self.feature.NormThread = standards[0] else: self.form.comboThreadNorm.setCurrentIndex(standards.index(self.feature.NormThread)) self.form.comboThreadNorm.blockSignals(False) threadDiameters = sorted(Standards.getBaseDiameters(self.feature.NormThread)) self.form.comboThreadDia.blockSignals(True) self.form.comboThreadDia.clear() for dia in threadDiameters: self.form.comboThreadDia.addItem("M%g" % dia) if self.feature.NormDiameter in threadDiameters: self.form.comboThreadDia.setCurrentIndex(threadDiameters.index(self.feature.NormDiameter)) self.form.comboThreadDia.blockSignals(False) if self.feature.NormThreadFinish == "Custom": self.form.checkCustomThreadLength.setChecked(True) self.form.comboFinishNorm.setEnabled(False) else: self.form.checkCustomThreadLength.setChecked(False) self.form.comboFinishNorm.setEnabled(True) self.form.comboFinishNorm.blockSignals(True) standards = Standards.getStandards("threaded") if not self.feature.NormThreadFinish in standards: self.feature.NormThreadFinish = standards[0] else: self.form.comboFinishNorm.setCurrentIndex(standards.index(self.feature.NormThreadFinish)) self.form.comboFinishNorm.blockSignals(False) flength = Standards.getThreadFinishLength(self.feature.NormThreadFinish, self.feature.NormDiameter) tlength = self.feature.Depth - flength if tlength > 0: self.feature.ThreadLength = tlength # TODO: Warning message # Dependents self.feature.Diameter = Standards.getThreadCoreDiameter(self.feature.NormThread, self.feature.NormDiameter) else: self.form.tabThread.setEnabled(False) # Dependents self.form.spinDiameter.setEnabled(True) # Data self.form.spinDiameter.setValue(self.feature.Diameter) self.form.spinDepth.setValue(self.feature.Depth) if self.feature.HoleType == "Thru": self.form.spinDepth.setEnabled(False) else: self.form.spinDepth.setEnabled(True) if self.feature.Threaded == True: self.form.spinThreadLength.setEnabled(True) else: self.form.spinThreadLength.setEnabled(False) if self.feature.Counterbore == True: self.form.spinCounterboreDiameter.setEnabled(True) self.form.spinCounterboreDiameter.setValue(self.feature.CounterboreDiameter) self.form.spinCounterboreDepth.setEnabled(True) self.form.spinCounterboreDepth.setValue(self.feature.CounterboreDepth) self.form.spinCountersinkAngle.setEnabled(False) elif self.feature.Countersink == True: self.form.spinCounterboreDiameter.setEnabled(True) self.form.spinCounterboreDiameter.setValue(self.feature.CounterboreDiameter) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(True) self.form.spinCountersinkAngle.setValue(self.feature.CountersinkAngle) else: self.form.spinCounterboreDiameter.setEnabled(False) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(False) if self.feature.Norm == "Custom": self.form.spinDiameter.setEnabled(True) else: self.form.spinDiameter.setEnabled(False) if holetype == "counterbore": # Diameter is taken from Norm self.form.spinCounterboreDiameter.setEnabled(False) elif holetype == "countersink": # Values are taken from Norm self.form.spinCounterboreDiameter.setEnabled(False) self.form.spinCounterboreDepth.setEnabled(False) self.form.spinCountersinkAngle.setEnabled(False) if self.feature.Threaded == True: self.form.spinDiameter.setEnabled(False) if self.feature.NormThreadFinish != "Custom": self.form.spinThreadLength.setEnabled(False) self.form.spinThreadLength.setValue(self.feature.ThreadLength) # Position self.form.buttonSupport.setText("Face") if self.feature.Support == None: # First-time initialization selection = FreeCADGui.Selection.getSelectionEx() self.feature.Support = (selection[0].Object, selection[0].SubElementNames) self.form.lineSupport.setText(self.getRefText(self.feature.Support)) if self.feature.PositionType == self.types[0]: # Linear self.form.buttonRef1.setText("Line/Plane") self.form.buttonRef1.setEnabled(True) self.form.buttonRef2.setText("Line/Plane") self.form.buttonRef2.setEnabled(True) self.form.lineRef1.setEnabled(True) self.form.lineRef2.setEnabled(True) self.form.labelRef1.setEnabled(True) self.form.labelRef1.setText("Distance") axis = self.feature.HoleGroove.Sketch.Support[0].References[0][0] if len(axis.References) > 0 and axis.References[0] != None: if (len(axis.References) == 3): self.form.lineRef1.setText(self.getRefText(axis.References[1])) else: self.form.lineRef1.setText(self.getRefText(axis.References[0])) self.form.spinRef1.setEnabled(True) self.form.spinRef1.setValue(axis.Offset) self.form.labelRef2.setEnabled(True) self.form.labelRef2.setText("Distance") if len(axis.References) > 1 and axis.References[1] != None: if (len(axis.References) == 3): self.form.lineRef2.setText(self.getRefText(axis.References[2])) else: self.form.lineRef2.setText(self.getRefText(axis.References[1])) self.form.spinRef2.setEnabled(True) self.form.spinRef2.setValue(axis.Offset2) elif self.feature.PositionType == self.types[1]: # Coaxial self.form.buttonRef1.setText("Circle/Cylinder") self.form.buttonRef1.setEnabled(True) self.form.buttonRef2.setEnabled(False) self.form.lineRef1.setEnabled(True) axis = self.feature.HoleGroove.Sketch.Support[0].References[0][0] if len(axis.References) > 0 and axis.References[0] != None: self.form.lineRef1.setText(self.getRefText(axis.References[0])) self.form.lineRef2.setEnabled(False) self.form.labelRef1.setEnabled(False) self.form.spinRef1.setEnabled(False) self.form.labelRef2.setEnabled(False) self.form.spinRef2.setEnabled(False) else: # Nothing else defined yet pass