示例#1
0
    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
示例#2
0
    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
示例#3
0
 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
示例#4
0
 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