diff options
-rw-r--r-- | .settings/org.eclipse.core.resources.prefs | 1 | ||||
-rw-r--r-- | Connections/Shear/Finplate/ISection.py | 1 | ||||
-rw-r--r-- | Connections/Shear/Finplate/colWebBeamWebConnectivity.py | 89 | ||||
-rw-r--r-- | Connections/Shear/Finplate/finPlate.ui | 57 | ||||
-rw-r--r-- | Connections/Shear/Finplate/finPlateMain.py | 300 | ||||
-rw-r--r-- | Connections/Shear/Finplate/finplate_calc1.py | 127 | ||||
-rw-r--r-- | Connections/Shear/Finplate/saveINPUT1.txt | 61 | ||||
-rw-r--r-- | Connections/Shear/Finplate/shearFinPlateConnection.py | 24 | ||||
-rw-r--r-- | Connections/Shear/Finplate/ui_finPlate.py | 33 |
9 files changed, 349 insertions, 344 deletions
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 60338db..cede7ec 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,4 @@ eclipse.preferences.version=1 +encoding//Connections/Shear/Finplate/icons_rc.py=utf-8 encoding//Connections/Shear/Finplate/ui_finPlate.py=utf-8 encoding//Connections/Shear/Finplate/ui_finPlate2.py=utf-8 diff --git a/Connections/Shear/Finplate/ISection.py b/Connections/Shear/Finplate/ISection.py index 47ed464..a485b20 100644 --- a/Connections/Shear/Finplate/ISection.py +++ b/Connections/Shear/Finplate/ISection.py @@ -50,6 +50,7 @@ class ISection(object): self.secOrigin = numpy.array([0, 0, 0]) self.uDir = numpy.array([1.0, 0, 0]) self.wDir = numpy.array([0.0, 0, 1.0]) + self.computeParams() def place(self, secOrigin, uDir, wDir): diff --git a/Connections/Shear/Finplate/colWebBeamWebConnectivity.py b/Connections/Shear/Finplate/colWebBeamWebConnectivity.py index cb58633..c448092 100644 --- a/Connections/Shear/Finplate/colWebBeamWebConnectivity.py +++ b/Connections/Shear/Finplate/colWebBeamWebConnectivity.py @@ -12,32 +12,49 @@ from nut import Nut import copy class ColWebBeamWeb(object): - def __init__(self,column,beam,Fweld,plate,boltRadius,nutRadius): + def __init__(self,column,beam,Fweld,plate,boltRadius,nutRadius,boltPlaceObj): self.column = column self.beam = beam - self.weld = Fweld - self.weld2 = copy.deepcopy(Fweld) + self.weldLeft = Fweld + self.weldRight = copy.deepcopy(Fweld) self.plate = plate self.boltRadius = boltRadius self.nutRadius = nutRadius + self.pitch = boltPlaceObj['Bolt']['pitch'] + self.gauge = boltPlaceObj['Bolt']['gauge'] + self.edge = boltPlaceObj['Bolt']['edge'] + self.end = boltPlaceObj['Bolt']['enddist'] + self.row = boltPlaceObj['Bolt']['numofrow'] + self.col = boltPlaceObj['Bolt']['numofcol'] + self.columnModel = None + self.beamModel = None + self.weldModelLeft = None + self.weldModelRight = None + self.plateModel = None + self.bolts =[] + self.nuts = [] + self.boltModels = [] + self.nutModels = [] + self.clearDist = 20.0 # This distance between edge of the column web/flange and beam cross section - def create_3dmodel(self): # ISection COLUMN - origin1 = numpy.array([0, 0, 0]) - uDir1 = numpy.array([1.0, 0, 0]) + columnOrigin = numpy.array([0, 0, 0]) + column_uDir = numpy.array([1.0, 0, 0]) wDir1 = numpy.array([0.0, 0, 1.0]) t = 8.9 weldThick = 8 - self.column.place(origin1, uDir1, wDir1) + self.column.place(columnOrigin, column_uDir, wDir1) # ISection BEAM uDir2 = numpy.array([0, 1.0, 0]) wDir2 = numpy.array([1.0, 0, 0.0]) d = t/2.0 + weldThick - origin2 = numpy.array([0, 0, 500]) + (d+7.55) * wDir2 + origin2 = columnOrigin + (self.column.t/2 * self.column.uDir) + (self.column.length/2 * self.column.wDir) + (self.clearDist * self.column.uDir) + #origin2 = numpy.array([0, 0, 500]) + (d+7.55) * wDir2 + #origin2 = numpy.array([0, 0, 500]) + 20 * wDir2 #self.beam = ISection(B = 140, T = 16,D = 400,t = 8.9, R1 = 14, R2 = 7, alpha = 98,length = 500) self.beam.place(origin2, uDir2, wDir2) @@ -70,15 +87,17 @@ class ColWebBeamWeb(object): # # Weld uDir5 = numpy.array([1.0, 0.0, 0]) wDir5 = numpy.array([0.0, 0.0, 1.0]) - filletWeld1Origin = (plateOrigin + self.plate.T/2.0 *self.weld.vDir + self.weld.L/2.0 * (-self.weld.wDir) ) - self.weld.place(filletWeld1Origin, uDir5, wDir5) + filletWeld1Origin = (plateOrigin + self.plate.T/2.0 *self.weldLeft.vDir + self.weldLeft.L/2.0 * (-self.weldLeft.wDir) ) + self.weldLeft.place(filletWeld1Origin, uDir5, wDir5) uDir555 = numpy.array([0.0, -1.0, 0]) wDir5 = numpy.array([0.0, 0.0, 1.0]) - filletWeld2Origin = (filletWeld1Origin + self.plate.T * (-self.weld.vDir)) - self.weld2.place(filletWeld2Origin,uDir555,wDir5) - + filletWeld2Origin = (filletWeld1Origin + self.plate.T * (-self.weldLeft.vDir)) + self.weldRight.place(filletWeld2Origin,uDir555,wDir5) + + + # BOLT BODY bolt_T = 6.0 origin51 = (self.plate.secOrigin + (- @@ -101,7 +120,7 @@ class ColWebBeamWeb(object): bolt3 = Bolt(R = self.boltRadius,T = bolt_T, H = 30.0, r = 4.0 ) origin53 = origin51 - 50*self.plate.vDir bolt3.place(origin53, uDir5, wDir5) - bolt_list =[bolt1,bolt2,bolt3] + self.bolts =[bolt1,bolt2,bolt3] #nutbody = Nut(R = 10.0,T = 10.0, H = 6.1, innerR1 = 6.0, outerR2 = 8.3) # NUTBODY @@ -121,25 +140,33 @@ class ColWebBeamWeb(object): nut3 =Nut(R = self.nutRadius, T = 10.0, H = 11, innerR1 = 4.0, outerR2 = 8.3) nut_Origin3 = origin53 + (bolt1.T/2 * self.plate.uDir)+(self.plate.T *self.plate.uDir)+ (self.beam.T/2 * self.plate.uDir) nut3.place(nut_Origin3, uDir5, wDir5) - nut_list = [nut1,nut2,nut3] + self.nuts = [nut1,nut2,nut3] # Call for createModel - iSectionModel1 = self.column.createModel() - iSectionModel2 = self.beam.createModel() + self.columnModel = self.column.createModel() + self.beamModel = self.beam.createModel() + self.plateModel = self.plate.createModel() + self.weldModelLeft = self.weldLeft.createModel() + self.weldModelRight = self.weldRight.createModel() - plateModel = self.plate.createModel() - weldModel1 = self.weld.createModel() - weldModel2 = self.weld2.createModel() - - boltModels = [] - for bolt in bolt_list: - boltModels.append(bolt.createModel()) + for bolt in self.bolts: + self.boltModels.append(bolt.createModel()) #color = Quantity_NOC_SADDLEBROWN, - nutModels = [] - for nut in nut_list: - nutModels.append(nut.createModel()) - - memberList = [iSectionModel1,iSectionModel2,weldModel1,weldModel2,plateModel,boltModels,nutModels] - - return memberList
\ No newline at end of file + for nut in self.nuts: + self.nutModels.append(nut.createModel()) + + # memberList = [iSectionModel1,iSectionModel2,weldModel1,weldModel2, + # plateModel] + boltModels + nutModels + # objshearfinplate = ShearFinPlate(iSectionModel1,iSectionModel2,) + # + # print("memberList #####") + # print(len(memberList)) + #return memberList + + def get_models(self): + ''' + ''' + return [self.columnModel,self.beamModel, + self.weldModelLeft,self.weldModelRight, + self.plateModel]+self.boltModels + self.nutModels
\ No newline at end of file diff --git a/Connections/Shear/Finplate/finPlate.ui b/Connections/Shear/Finplate/finPlate.ui index e783838..c134c07 100644 --- a/Connections/Shear/Finplate/finPlate.ui +++ b/Connections/Shear/Finplate/finPlate.ui @@ -380,7 +380,7 @@ </property> <property name="icon"> <iconset> - <normaloff>../../../../../Downloads/ZY.png</normaloff>../../../../../Downloads/ZY.png</iconset> + <normaloff>../../../../../Pictures/Z-X.png</normaloff>../../../../../Pictures/Z-X.png</iconset> </property> <property name="iconSize"> <size> @@ -388,6 +388,9 @@ <height>22</height> </size> </property> + <property name="checkable"> + <bool>true</bool> + </property> </widget> <widget class="QToolButton" name="btn_top"> <property name="geometry"> @@ -416,7 +419,7 @@ </property> <property name="icon"> <iconset> - <normaloff>../../../../../Downloads/Y-X.png</normaloff>../../../../../Downloads/Y-X.png</iconset> + <normaloff>../../../../../Pictures/X-Y.png</normaloff>../../../../../Pictures/X-Y.png</iconset> </property> <property name="iconSize"> <size> @@ -424,6 +427,9 @@ <height>23</height> </size> </property> + <property name="checkable"> + <bool>true</bool> + </property> </widget> <widget class="QToolButton" name="btn_side"> <property name="geometry"> @@ -452,7 +458,7 @@ </property> <property name="icon"> <iconset> - <normaloff>../../../../../Downloads/Z-Y.png</normaloff>../../../../../Downloads/Z-Y.png</iconset> + <normaloff>../../../../../Pictures/Z-Y.png</normaloff>../../../../../Pictures/Z-Y.png</iconset> </property> <property name="iconSize"> <size> @@ -460,6 +466,9 @@ <height>22</height> </size> </property> + <property name="checkable"> + <bool>true</bool> + </property> </widget> </widget> </item> @@ -640,8 +649,9 @@ </property> <property name="font"> <font> - <weight>50</weight> - <bold>false</bold> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> </font> </property> <property name="floating"> @@ -651,7 +661,7 @@ <set>QDockWidget::AllDockWidgetFeatures</set> </property> <property name="windowTitle"> - <string>INPUT</string> + <string>Input dock</string> </property> <attribute name="dockWidgetArea"> <number>1</number> @@ -1247,34 +1257,12 @@ <property name="styleSheet"> <string notr="true">QComboBox { combobox-popup: 0; }</string> </property> + <property name="currentIndex"> + <number>-1</number> + </property> <property name="maxVisibleItems"> <number>5</number> </property> - <item> - <property name="text"> - <string>Thickness of Plate</string> - </property> - </item> - <item> - <property name="text"> - <string>6</string> - </property> - </item> - <item> - <property name="text"> - <string>8</string> - </property> - </item> - <item> - <property name="text"> - <string>10</string> - </property> - </item> - <item> - <property name="text"> - <string>12</string> - </property> - </item> </widget> <widget class="QLabel" name="label_42"> <property name="geometry"> @@ -3175,6 +3163,11 @@ <string>10</string> </property> </item> + <item> + <property name="text"> + <string>12</string> + </property> + </item> </widget> <widget class="QLabel" name="lbl_connectivity"> <property name="geometry"> @@ -3238,7 +3231,7 @@ </font> </property> <property name="windowTitle"> - <string>OUTPUT</string> + <string>Output dock</string> </property> <attribute name="dockWidgetArea"> <number>2</number> diff --git a/Connections/Shear/Finplate/finPlateMain.py b/Connections/Shear/Finplate/finPlateMain.py index c1d63e0..4281001 100644 --- a/Connections/Shear/Finplate/finPlateMain.py +++ b/Connections/Shear/Finplate/finPlateMain.py @@ -6,6 +6,10 @@ comment ''' from PyQt4.QtCore import QString from PyQt4.QtGui import QMessageBox +from OCC.TopoDS import topods, TopoDS_Shape +from OCC.BRepPrimAPI import BRepPrimAPI_MakeBox, BRepPrimAPI_MakeCylinder,\ + BRepPrimAPI_MakeSphere +from OCC.gp import gp_Pnt ''' Created on 21-Aug-2014 @@ -108,11 +112,42 @@ class MainController(QtGui.QMainWindow): # Initialising the qtviewer self.display,_ = self.init_display(backend_str="pyqt4") + #self.display2d,_,_ = self.init_display(backend_str="pyqt4") self.ui.btnSvgSave.clicked.connect(self.save3DtoIGES) #self.ui.btnSvgSave.clicked.connect(lambda:self.saveTopng(self.display)) + self.colWebBeamWeb = self.create3DColWebBeamWeb() + # my_box = BRepPrimAPI_MakeBox(gp_Pnt(20,0,0),10., 20., 30.).Shape() + # my_cylendar = BRepPrimAPI_MakeCylinder(10,30).Shape() + # self.memberlist = [my_box, my_cylendar, my_cylendar] + + #my_sphere = BRepPrimAPI_MakeSphere(5).Shape() + self.fuse_model = self.create2Dcad() + #self.fuse_model = my_sphere + self.validatePlateThickCombo() + + + + + def validatePlateThickCombo(self): + beam_sec = self.ui.combo_Beam.currentText() + dictbeamdata = get_beamdata(beam_sec) + beam_tw = float(dictbeamdata[QString("tw")]) + plateThickness = ['select Thickness',6,8,10,12,14,16,18,20] + newlist = ['Select Thickness'] + #comboPlateThickItenewlist = [] + for item in plateThickness[1:]: + if item >= beam_tw: + newlist.append(str(item)) + print newlist + + for i in newlist[:]: + self.ui.comboPlateThick_2.addItem(i) + + + def saveTopng(self,display): display.ExportToImage('/home/Pictures/cad.png') @@ -186,7 +221,7 @@ class MainController(QtGui.QMainWindow): uiObj = {} uiObj["Bolt"] = {} uiObj["Bolt"]["diameter(mm)"] = self.ui.comboDaimeter.currentText().toInt()[0] - uiObj["Bolt"]["grade"] = float(self.ui.comboGrade.currentText()) + uiObj["Bolt"]["grade"] = float(self.ui.comboGrade.currentText()) uiObj["Bolt"]["type"] = str(self.ui.comboType.currentText()) @@ -523,7 +558,7 @@ class MainController(QtGui.QMainWindow): # QtViewer def init_display(self,backend_str=None, size=(1024, 768)): - global display, start_display, app, _, USED_BACKEND + global display,start_display, app, _, USED_BACKEND if not backend_str: USED_BACKEND = self.get_backend() @@ -543,12 +578,12 @@ class MainController(QtGui.QMainWindow): from OCC.Display.pysideDisplay import qtViewer3d self.ui.modelTab = qtViewer3d(self) + #self.ui.model2dTab = qtViewer3d(self) + self.setWindowTitle("Osdag-%s 3d viewer ('%s' backend)" % (VERSION, USED_BACKEND)) self.ui.mytabWidget.resize(size[0], size[1]) self.ui.mytabWidget.addTab(self.ui.modelTab,"") - - #self.ui.mytabWidget.setCentralWidget(self.ui.modelTab) - #self.ui.mytabWidget.centerOnScreen() + #self.ui.mytabWidget.addTab(self.ui.model2dTab,"") self.ui.modelTab.InitDriver() display = self.ui.modelTab._display @@ -567,36 +602,40 @@ class MainController(QtGui.QMainWindow): (resolution.height() / 2) - (self.frameSize().height() / 2)) def start_display(): - self.ui.modelTab.raise_() # make the application float to the top + self.ui.modelTab.raise_() + #self.ui.model2dTab.raise_() # make the application float to the top return display, start_display def display3Dmodel(self,cadlist,component): - + self.display.EraseAll() + self.display.SetModeShaded() #self.display,_ = self.init_display(backend_str="pyqt4") self.display.set_bg_gradient_color(23,1,32,23,1,32) + if component == "Column": - self.display.EraseAll() + osdagDisplayShape(self.display, cadlist[0], update=True) elif component == "Beam": - display.EraseAll() + self.display.EraseAll() osdagDisplayShape(self.display, cadlist[1],material = Graphic3d_NOT_2D_ALUMINUM, update=True) elif component == "Finplate" : display.EraseAll() osdagDisplayShape(self.display,cadlist[2],color = 'red', update = True) osdagDisplayShape(self.display, cadlist[3], color = 'red', update = True) osdagDisplayShape(self.display, cadlist[4], color = 'blue', update = True) - self.display.DisplayShape(cadlist[5],color = Quantity_NOC_SADDLEBROWN, update=True) - self.display.DisplayShape(cadlist[6],color = Quantity_NOC_SADDLEBROWN, update = True) + self.display.DisplayShape(cadlist[5:8],color = Quantity_NOC_SADDLEBROWN, update=True) + self.display.DisplayShape(cadlist[8:11],color = Quantity_NOC_SADDLEBROWN, update = True) elif component == "Model": - + self.display.EraseAll() osdagDisplayShape(self.display, cadlist[0], update=True) osdagDisplayShape(self.display, cadlist[1],material = Graphic3d_NOT_2D_ALUMINUM, update=True) osdagDisplayShape(self.display,cadlist[2],color = 'red', update = True) osdagDisplayShape(self.display,cadlist[3],color = 'red', update = True) osdagDisplayShape(self.display, cadlist[4], color = 'blue', update = True) - self.display.DisplayShape(cadlist[5],color = Quantity_NOC_SADDLEBROWN, update=True) - self.display.DisplayShape(cadlist[6],color = Quantity_NOC_SADDLEBROWN, update = True) + self.display.DisplayShape(cadlist[5:8],color = Quantity_NOC_SADDLEBROWN, update=True) + self.display.DisplayShape(cadlist[8:11],color = Quantity_NOC_SADDLEBROWN, update = True) + else: pass @@ -616,9 +655,11 @@ class MainController(QtGui.QMainWindow): plate = Plate(L= 300,W =100, T = 10) boltRadius = 10 nutRadius = 10 - - colwebconn = ColWebBeamWeb(column,beam,Fweld1,plate,boltRadius,nutRadius) - return colwebconn.create_3dmodel() + + boltPlaceObj = finConn(self.getuser_inputs()) + colwebconn = ColWebBeamWeb(column,beam,Fweld1,plate,boltRadius,nutRadius,boltPlaceObj) + colwebconn.create_3dmodel() + return colwebconn def createColFlangeBeamWeb(self): ''' @@ -643,54 +684,55 @@ class MainController(QtGui.QMainWindow): self.ui.mytabWidget.setCurrentIndex(0) if self.ui.comboConnLoc.currentText()== "Column web-Beam web": - memberlist = self.create3DColWebBeamWeb() + connectivity = self.colWebBeamWeb else: self.ui.mytabWidget.setCurrentIndex(0) - memberlist = self.createColFlangeBeamWeb() + connectivity = self.createColFlangeBeamWeb() - #memberlist = self.create_3dmodel() - #self.ui.btn3D.setStyleSheet("background-color: red") - self.display3Dmodel(memberlist, "Model") + self.display3Dmodel(connectivity.get_models(), "Model") def call_3DBeam(self): ''' Creating and displaying 3D Beam ''' - memberlist = self.create3DColWebBeamWeb() - if self.ui.chkBxBeam.isChecked(): self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked) self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked) self.ui.mytabWidget.setCurrentIndex(0) - self.display3Dmodel(memberlist, "Beam") - #self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) + + self.display3Dmodel(self.memberlist, "Beam") def call_3DColumn(self): - memberlist = self.create3DColWebBeamWeb() + ''' + ''' if self.ui.chkBxCol.isChecked(): self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked) self.ui.mytabWidget.setCurrentIndex(0) - self.display3Dmodel(memberlist, "Column") - #self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked + self.display3Dmodel(self.memberlist, "Column") + def call_3DFinplate(self): - memberlist = self.create3DColWebBeamWeb() + '''Displaying FinPlate in 3D + ''' if self.ui.chkBxFinplate.isChecked(): self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked) self.ui.mytabWidget.setCurrentIndex(0) - self.display3Dmodel(memberlist, "Finplate") - #self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked + + self.display3Dmodel(self.memberlist, "Finplate") + - def design_btnclicked(self): - self.ui.outputDock.setFixedSize(310,710) + def design_btnclicked(self): + ''' + ''' + designLogger = logging.getLogger("Designlogger.finPlateCalc") - # self.memberlist3D = self.createColFlangeBeamWeb() - # self.mmemberlist2D + self.ui.outputDock.setFixedSize(310,710) + #self.set_designlogger() # Getting User Inputs. uiObj = self.getuser_inputs() print uiObj @@ -721,115 +763,13 @@ class MainController(QtGui.QMainWindow): def create2Dcad(self): - - - # ISection COLUMN - origin1 = numpy.array([0, 0, 0]) - uDir1 = numpy.array([1.0, 0, 0]) - wDir1 = numpy.array([0.0, 0, 1.0]) - t = 8.9 - weldThick = 8 - iSection1 = ISection(B = 83, T = 14.1, D = 250, t = 11, R1 = 12, R2 = 3.2, alpha = 98, length = 1000) - iSection1.place(origin1, uDir1, wDir1) - - # ISection BEAM - uDir2 = numpy.array([0, 1.0, 0]) - wDir2 = numpy.array([1.0, 0, 0.0]) - d = t/2.0 + weldThick - origin2 = numpy.array([0, 0, 500]) + (d+7.55) * wDir2 - iSection2 = ISection(B = 140, T = 16,D = 400,t = 8.9, R1 = 14, R2 = 7, alpha = 98,length = 400) - iSection2.place(origin2, uDir2, wDir2) - - # WELD - weld = Weld(L= 300,W =iSection2.t, T = 8) - #plateThickness = 10 - uDir3 = numpy.array([0, 1.0, 0]) - wDir3 = numpy.array([1.0, 0, 0.0]) - origin3 = (iSection1.secOrigin + - iSection1.t/2.0 * iSection1.uDir + - iSection1.length/2.0 * iSection1.wDir + - iSection2.t/2.0 * (-iSection2.uDir)+ - weld.W/2.0 * (-iSection2.uDir)) - #origin3 = numpy.array([0, 0, 500]) + t/2.0 *wDir3 + plateThickness/2.0 * (-iSection2.uDir) - weld.place(origin3, uDir3, wDir3) - - # PLATE - plate = Plate(L= weld.L,W =100, T = 10) - uDir4 = numpy.array([0, 1.0, 0]) - wDir4 = numpy.array([1.0, 0, 0.0]) - origin4 = weld.secOrigin + weld.T * weld.wDir - plate.place(origin4, uDir4, wDir4) - - # BOLT BODY - bolt_T = 6.0 - origin51 = (plate.secOrigin + (- - plate.T/2.0 - bolt_T) * plate.uDir + - plate.W/2.0 * plate.wDir) - - uDir5 = plate.wDir - wDir5 = plate.uDir - ## Bolt1 - bolt1 = Bolt(R = 10.0,T = bolt_T, H = 30.0, r = 4.0 ) - bolt1.place(origin51, uDir5, wDir5) - - ## Bolt2 - bolt2 = Bolt(R = 10.0,T = bolt_T, H = 30.0, r = 4.0 ) - origin52 = origin51 + 50 *plate.vDir - bolt2.place(origin52, uDir5, wDir5) - - ## Bolt3 - bolt3 = Bolt(R = 10.0,T = bolt_T, H = 30.0, r = 4.0 ) - origin53 = origin51 - 50*plate.vDir - bolt3.place(origin53, uDir5, wDir5) - bolt_list =[bolt1,bolt2,bolt3] - - # NUTBODY - ## Nut1 - nut1 = Nut(R = 10.0,T = 10.0, H = 6.1, innerR1 = 6.0, outerR2 = 8.3) - uDir = uDir5 - wDir = wDir5 - nut_Origin1 = origin51 + (bolt1.T/2 * plate.uDir)+(plate.T *plate.uDir)+ (iSection2.T/2 * plate.uDir) - nut1.place(nut_Origin1, uDir, wDir) - - ## Nut2 - nut2 = Nut(R = 10.0,T = 10.0, H = 6.1, innerR1 = 6.0, outerR2 = 8.3) - nut_Origin2 = origin52 + (bolt1.T/2 * plate.uDir)+(plate.T *plate.uDir)+ (iSection2.T/2 * plate.uDir) - nut2.place(nut_Origin2, uDir, wDir) - - ## Nut3 - nut3 =Nut(R = 10.0,T = 10.0, H = 6.1, innerR1 = 6.0, outerR2 = 8.3) - nut_Origin3 = origin53 + (bolt1.T/2 * plate.uDir)+(plate.T *plate.uDir)+ (iSection2.T/2 * plate.uDir) - nut3.place(nut_Origin3, uDir5, wDir5) - nut_list = [nut1,nut2,nut3] - - # Call for createModel - iSectionModel1 = iSection1.createModel() - iSectionModel2 = iSection2.createModel() - weldModel = weld.createModel() - plateModel = plate.createModel() - boltModels = [] - for bolt in bolt_list: - - boltModels.append(bolt.createModel()) - - #color = Quantity_NOC_SADDLEBROWN, - nutModels = [] - for nut in nut_list: - nutModels.append(nut.createModel()) - - isection = BRepAlgoAPI_Fuse(iSectionModel1,iSectionModel2).Shape() - weld_isection = BRepAlgoAPI_Fuse(isection,weldModel).Shape() - plate_weld = BRepAlgoAPI_Fuse(weld_isection,plateModel).Shape() - - plate_weld_bolt = plate_weld - for bolt in boltModels: - plate_weld_bolt = BRepAlgoAPI_Fuse(plate_weld_bolt, bolt).Shape() - - - final_model = plate_weld_bolt - for nt in nutModels: - final_model = BRepAlgoAPI_Fuse(final_model,nt).Shape() - return final_model + cadlist = self.colWebBeamWeb.get_models() + + final_model = cadlist[0] + for model in cadlist[1:]: + final_model = BRepAlgoAPI_Fuse(model,final_model).Shape() + return final_model + # Export to IGES def save3DtoIGES(self): @@ -841,11 +781,37 @@ class MainController(QtGui.QMainWindow): iges_writer.AddShape(shape) iges_writer.Write('/home/deepa/Pictures/osdag.iges') + def display2DModelOriginal(self, final_model, viewName): + + self.display,_ = self.init_display() + self.display.ResetView() + self.display.EraseAll() + #self.display.SetModeWireFrame() + + self.display.DisplayShape(final_model, update = True) + self.display.SetModeHLR() + + + + if (viewName == "Front"): + self.display.View_Front() + elif (viewName == "Top"): + self.display.View_Top() + elif (viewName == "Right"): + self.display.View_Right() + else: + pass + def display2DModel(self, final_model, viewName): - #display, start_display, _, _ = self.simpleGUI() + #display, start_display, _, _ = self.simpleGUI() + #self.display2d,_,_ = self.init_display(backend_str="pyqt4") + #self.display.EraseAll() self.display.set_bg_gradient_color(255, 255, 255, 255, 255, 255) + + self.display.SetModeHLR() + #self.display.SetModeShaded() # Get Context ais_context = self.display.GetContext().GetObject() @@ -864,46 +830,59 @@ class MainController(QtGui.QMainWindow): line_aspect = drawer.SeenLineAspect().GetObject() line_aspect.SetWidth(2.8) line_aspect.SetColor(Quantity_NOC_BLUE1) - self.display.EraseAll() - self.display.DisplayShape(final_model, update = True) - self.display.SetModeHLR() - self.display.FitAll() + self.display.DisplayShape(final_model, update = False) if (viewName == "Front"): + #self.display.SetModeHLR() self.display.View_Front() elif (viewName == "Top"): + #self.display.SetModeHLR() self.display.View_Top() elif (viewName == "Right"): + #self.display.SetModeHLR() self.display.View_Right() else: pass - start_display() + #start_display() def call_Frontview(self): '''Displays front view of 2Dmodel ''' - self.ui.mytabWidget.setCurrentIndex(0) - final_model = self.create2Dcad() - self.display2DModel(final_model, "Front") + self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked) + + self.display.EraseAll() + self.ui.mytabWidget.setCurrentIndex(1) + + self.display2DModel(self.fuse_model, "Front") def call_Topview(self): '''Displays Top view of 2Dmodel ''' - self.ui.mytabWidget.setCurrentIndex(0) - final_model = self.create2Dcad() - self.display2DModel(final_model, "Top") + self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked) + + self.display.EraseAll() + self.ui.mytabWidget.setCurrentIndex(1) + + self.display2DModel(self.fuse_model, "Top") def call_Sideview(self): '''Displays Side view of the 2Dmodel' ''' - self.ui.mytabWidget.setCurrentIndex(0) - final_model = self.create2Dcad() - self.display2DModel(final_model, "Right") + self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked) + self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked) + + self.ui.mytabWidget.setCurrentIndex(1) + self.display2DModel(self.fuse_model, "Right") def set_osdaglogger(): @@ -944,7 +923,6 @@ if __name__ == '__main__': rawLogger.info('''<link rel="stylesheet" type="text/css" href="log.css"/>''') - app = QtGui.QApplication(sys.argv) window = MainController() window.show() diff --git a/Connections/Shear/Finplate/finplate_calc1.py b/Connections/Shear/Finplate/finplate_calc1.py index 951e3dc..140400f 100644 --- a/Connections/Shear/Finplate/finplate_calc1.py +++ b/Connections/Shear/Finplate/finplate_calc1.py @@ -20,19 +20,39 @@ from PyQt4.Qt import QString import logging flag = 1 logger = None -design_logger = None def module_setup(): global logger logger = logging.getLogger("osdag.finPlateCalc") - -def design_setup(): - global logger - logger = logging.getLogger("osdag.Design") - module_setup() +# def set_designlogger(): +# global logger +# logger = logging.getLogger("Designlogger") +# logger.setLevel(logging.DEBUG) +# +# # create the logging file handler +# fh = logging.FileHandler("fin.log", mode="w") +# +# #,datefmt='%a, %d %b %Y %H:%M:%S' +# #formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +# +# formatter = logging.Formatter(''' +# <div class="LOG %(levelname)s"> +# <span class="DATE">%(asctime)s</span> +# <span class="LEVEL">%(levelname)s</span> +# <span class="MSG">%(message)s</span> +# </div>''') +# formatter.datefmt = '%a, %d %b %Y %H:%M:%S' +# fh.setFormatter(formatter) +# +# # add handler to logger object +# logger.addHandler(fh) +# + + + #FUNCTION DEFINITIONS--------------- #BOLT: determination of shear capacity = fu * n * A / (root(3) * Y) @@ -58,7 +78,7 @@ def web_min_h(shear, fy, thk): def finConn(uiObj): - + global logger beam_sec = uiObj['Member']['beamSection'] column_sec = uiObj['Member']['columSection'] connectivity = uiObj['Member']['connectivity'] @@ -110,7 +130,7 @@ def finConn(uiObj): #logger.error("The length of the plate is more than the available depth of %2.2f mm " % (plate_len)) logger.error(": Chosen web plate thickness is not sufficient" ) - logger.info(" : Minimum required thickness %2.2f mm" % (beam_w_t)) + logger.warning(" : Minimum required thickness %2.2f mm" % (beam_w_t)) # print "ERROR: Chosen web plate thickness is not sufficient" + "\n Minimum required thickness = " + str(beam_w_t) + "mm"; # print "\n Suggestion: Re-design with a plate thickness more than the connecting beam web thickness" @@ -123,21 +143,34 @@ def finConn(uiObj): # Height input and check if web_plate_l == 0: - web_plate_l = min_plate_height; + web_plate_l = min_plate_height +10; + if web_plate_l > max_plate_height : - print "Error: Height of plate is more than the clear depth of the beam" - print" Maximum plate height allowed is " + str(max_plate_height) + " mm" - web_plate_l = max_plate_height; + logger.error(": Height of plate is more than the clear depth of the beam") + logger.warning(": Maximum plate height allowed is %2.2f mm " % (max_plate_height)) + #print "Error: Height of plate is more than the clear depth of the beam" + #print" Maximum plate height allowed is " + str(max_plate_height) + " mm" + web_plate_l = max_plate_height ; + elif min_plate_height > max_plate_height: - print "Error: Height of plate is more than the clear depth of the beam" - print" Maximum plate height allowed is " + str(max_plate_height) + " mm" + logger.error(": Height of plate is more than the clear depth of the beam") + logger.warning(": Maximum plate height allowed is %2.2f mm " % (max_plate_height)) + + #print "Error: Height of plate is more than the clear depth of the beam" + #print" Maximum plate height allowed is " + str(max_plate_height) + " mm" web_plate_l = max_plate_height; + elif min_plate_height > web_plate_l: - print "\nERROR: Chosen plate height is not sufficient" + "\n Minimum required height = " + str(min_plate_height) + " mm"; - print "\nSuggestion: Re-design with a different plate height or thickness" - web_plate_l = min_plate_height; - + logger.error(": Plate height provided is less than the minimum required ") + logger.warning(": Minimum plate height required is %2.2f mm " % (min_plate_height)) + + # print "\nERROR: Chosen plate height is not sufficient" + "\n Minimum required height = " + str(min_plate_height) + " mm"; + # print "\nSuggestion: Re-design with a different plate height or thickness" + web_plate_l = min_plate_height + + + ######################################################################## # Bolt design: @@ -191,12 +224,13 @@ def finConn(uiObj): length_avail = (web_plate_l-2*min_edge_dist); pitch = round(length_avail/(bolts_required-1),3); + + ## Calculation of moment demand - M1 = bolt_shear_capacity * 60; + M1 = bolt_shear_capacity * (20+min_edge_dist/2); # Single line of bolts if pitch >= min_pitch: - print "\nComment: Single line of bolt is required" bolt_line =1; gauge = 0; # print " Number of bolt lines = " + str(bolt_line); @@ -212,7 +246,6 @@ def finConn(uiObj): # Multi-line of bolts if pitch < min_pitch: - print "\nComment: Double line of bolts are required" bolt_line = 2; if bolts_required % 2 == 0: bolts_one_line = bolts_required/2; @@ -220,8 +253,8 @@ def finConn(uiObj): bolts_one_line = (bolts_required/2) + 1; pitch = round(length_avail/(bolts_one_line-1),3); - gauge = min_gauge; - M1 = bolt_shear_capacity * (60+gauge/2); + gauge = min_gauge; + M1 = bolt_shear_capacity * (20+ min_edge_dist + gauge/2); if pitch >= min_pitch: K = bolts_one_line / 2; @@ -235,11 +268,11 @@ def finConn(uiObj): M2=M2*2; moment_demand = max(M1,M2); moment_demand = round(moment_demand * 0.001,3) - - # Needs discussion with Sir + + # Needs discussion with Sir else: - print "ERROR: Finplate connection is insufficient to carry the external force" - print "Suggestion: Reduce the external force or change the bolt grade/diameter" + logger.error(": Bolt strength is insufficient to carry the shear force") + logger.warning (": Increase bolt diameter and/or bolt grade") #################################################################################### # Design of plate: @@ -258,8 +291,8 @@ def finConn(uiObj): web_plate_w_req = gauge + 2 * min_edge_dist; web_plate_w = web_plate_w_req; - if web_plate_w < web_plate_w_req: - web_plate_w = web_plate_w_req; + # if web_plate_w < web_plate_w_req: + # web_plate_w = web_plate_w_req; # Moment capacity of web plate moment_capacity = 1.2 * (web_plate_fy/1.1) * (web_plate_t * web_plate_l * web_plate_l)/6 * 0.001; @@ -267,10 +300,11 @@ def finConn(uiObj): # print " Moment capacity = " + str(moment_capacity) + " Nm"; if moment_capacity > moment_demand: - print " Plate is safe to resist external moment"; + pass else: - print "ERROR: Plate does not have sufficient moment capacity"; - print "Suggestion: Re-design with increased plate dimensions"; + logger.error(": Plate moment capacity is less than the moment demand") + + logger.warning(": Re-design with increased plate dimensions") # Plate dimension optimisation @@ -294,9 +328,12 @@ def finConn(uiObj): web_plate_l_req = max(web_plate_l_req1, web_plate_l_req2, min_plate_height); if web_plate_l < web_plate_l_req: - print "ERROR: Plate height provided is less than the minimum required"; - if web_plate_w < web_plate_w_req: - print "ERROR: Plate width provided is less than the minimum required"; + logger.error(": Plate height provided is less than the minimum required") + + if web_plate_w < web_plate_w_req: + + logger.error(": Plate width provided is less than the minimum required") + logger.warning(": Minimum plate width required is %2.2f mm " %(web_plate_w_req)) ################################################################################## ## Weld design @@ -329,10 +366,9 @@ def finConn(uiObj): weld_t_req = weld_t_req; if weld_t >= weld_t_req: - print " Weld thickness is sufficient" + "\n\nThe overall fin-plate connection design is safe"; + pass else: - print " ERROR: Weld thickness is not sufficient"; - print "\n\nThe overall fin-plate connection design is not safe"; + logger.error(": Weld thickness is not sufficient") # End of calculation outputObj = {} @@ -361,10 +397,19 @@ def finConn(uiObj): outputObj['Plate']['momentcapacity'] = moment_capacity outputObj['Plate']['height'] = web_plate_l outputObj['Plate']['width'] = web_plate_w - + #return outputObj + + if web_plate_l == min_plate_height or web_plate_l == max_plate_height or web_plate_l < web_plate_l_req or web_plate_w < web_plate_w_req: + for k in outputObj.keys(): + for key in outputObj[k]: + outputObj[k][key] = "" + elif moment_capacity < moment_demand: + for k in outputObj.keys(): + for key in outputObj[k]: + outputObj[k][key] = "" + return outputObj - - + diff --git a/Connections/Shear/Finplate/saveINPUT1.txt b/Connections/Shear/Finplate/saveINPUT1.txt deleted file mode 100644 index 04b06c0..0000000 --- a/Connections/Shear/Finplate/saveINPUT1.txt +++ /dev/null @@ -1,61 +0,0 @@ -(dp0 -S'Member' -p1 -(dp2 -S'columSection' -p3 -S'Select Column' -p4 -sS'fy(MPa)' -p5 -I0 -sS'fu(MPa)' -p6 -I0 -sS'beamSection' -p7 -S'Select Designation' -p8 -sS'connectivity' -p9 -S'Select Connectivity' -p10 -ssS'Plate' -p11 -(dp12 -S'thickness(mm)' -p13 -I0 -sS'length(mm)' -p14 -I0 -sS'width(mm)' -p15 -I0 -ssS'Load' -p16 -(dp17 -S'shearForce(kN)' -p18 -I0 -ssS'Weld' -p19 -(dp20 -S'size(mm)' -p21 -I0 -ssS'Bolt' -p22 -(dp23 -S'grade' -p24 -S'' -p25 -sS'type' -p26 -S'Please Select Type' -p27 -sS'diameter(mm)' -p28 -I0 -ss.
\ No newline at end of file diff --git a/Connections/Shear/Finplate/shearFinPlateConnection.py b/Connections/Shear/Finplate/shearFinPlateConnection.py new file mode 100644 index 0000000..5223457 --- /dev/null +++ b/Connections/Shear/Finplate/shearFinPlateConnection.py @@ -0,0 +1,24 @@ +''' +Created on 04-Jun-2015 + +@author: deepa +''' +class ShearFinPlate(object): + + def __init__(self,Beam,Column,Weld,Plate,Nutlist,Boltlist,outputObj): + self.beam = Beam + self.column = Column + self.weld = Weld + self.plate = Plate + self.nutlist = Nutlist + self.boltlist = Boltlist + self.pitch = outputObj['Bolt']['pitch'] + self.gauge = outputObj['Bolt']['gauge'] + self.edge = outputObj['Bolt']['edge'] + self.end = outputObj['Bolt']['enddist'] + self.row = outputObj['Bolt']['numofrow'] + self.col = outputObj['Bolt']['numofcol'] + + + +
\ No newline at end of file diff --git a/Connections/Shear/Finplate/ui_finPlate.py b/Connections/Shear/Finplate/ui_finPlate.py index b9ba1e4..c87d3a9 100644 --- a/Connections/Shear/Finplate/ui_finPlate.py +++ b/Connections/Shear/Finplate/ui_finPlate.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'finPlate.ui' # -# Created: Tue Jun 2 11:54:41 2015 +# Created: Fri Jun 5 22:26:06 2015 # by: PyQt4 UI code generator 4.10.4 # # WARNING! All changes made in this file will be lost! @@ -151,9 +151,10 @@ class Ui_MainWindow(object): self.btn_front.setAcceptDrops(True) self.btn_front.setText(_fromUtf8("")) icon8 = QtGui.QIcon() - icon8.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Downloads/ZY.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon8.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Pictures/Z-X.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_front.setIcon(icon8) self.btn_front.setIconSize(QtCore.QSize(22, 22)) + self.btn_front.setCheckable(True) self.btn_front.setObjectName(_fromUtf8("btn_front")) self.btn_top = QtGui.QToolButton(self.frame) self.btn_top.setGeometry(QtCore.QRect(300, 0, 28, 28)) @@ -165,9 +166,10 @@ class Ui_MainWindow(object): self.btn_top.setFocusPolicy(QtCore.Qt.NoFocus) self.btn_top.setText(_fromUtf8("")) icon9 = QtGui.QIcon() - icon9.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Downloads/Y-X.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon9.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Pictures/X-Y.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_top.setIcon(icon9) self.btn_top.setIconSize(QtCore.QSize(22, 23)) + self.btn_top.setCheckable(True) self.btn_top.setObjectName(_fromUtf8("btn_top")) self.btn_side = QtGui.QToolButton(self.frame) self.btn_side.setGeometry(QtCore.QRect(330, 0, 28, 28)) @@ -179,9 +181,10 @@ class Ui_MainWindow(object): self.btn_side.setFocusPolicy(QtCore.Qt.NoFocus) self.btn_side.setText(_fromUtf8("")) icon10 = QtGui.QIcon() - icon10.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Downloads/Z-Y.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon10.addPixmap(QtGui.QPixmap(_fromUtf8("../../../../../Pictures/Z-Y.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.btn_side.setIcon(icon10) self.btn_side.setIconSize(QtCore.QSize(22, 22)) + self.btn_side.setCheckable(True) self.btn_side.setObjectName(_fromUtf8("btn_side")) self.verticalLayout_2.addWidget(self.frame) self.splitter = QtGui.QSplitter(self.centralwidget) @@ -237,8 +240,9 @@ class Ui_MainWindow(object): self.inputDock.setMaximumSize(QtCore.QSize(310, 710)) self.inputDock.setBaseSize(QtCore.QSize(310, 710)) font = QtGui.QFont() - font.setBold(False) - font.setWeight(50) + font.setBold(True) + font.setItalic(False) + font.setWeight(75) self.inputDock.setFont(font) self.inputDock.setFloating(False) self.inputDock.setFeatures(QtGui.QDockWidget.AllDockWidgetFeatures) @@ -465,11 +469,6 @@ class Ui_MainWindow(object): self.comboPlateThick_2.setStyleSheet(_fromUtf8("QComboBox { combobox-popup: 0; }")) self.comboPlateThick_2.setMaxVisibleItems(5) self.comboPlateThick_2.setObjectName(_fromUtf8("comboPlateThick_2")) - self.comboPlateThick_2.addItem(_fromUtf8("")) - self.comboPlateThick_2.addItem(_fromUtf8("")) - self.comboPlateThick_2.addItem(_fromUtf8("")) - self.comboPlateThick_2.addItem(_fromUtf8("")) - self.comboPlateThick_2.addItem(_fromUtf8("")) self.label_42 = QtGui.QLabel(self.dockWidgetContents) self.label_42.setGeometry(QtCore.QRect(1, 540, 66, 25)) font = QtGui.QFont() @@ -1020,6 +1019,7 @@ class Ui_MainWindow(object): self.comboWldSize.addItem(_fromUtf8("")) self.comboWldSize.addItem(_fromUtf8("")) self.comboWldSize.addItem(_fromUtf8("")) + self.comboWldSize.addItem(_fromUtf8("")) self.lbl_connectivity = QtGui.QLabel(self.dockWidgetContents) self.lbl_connectivity.setGeometry(QtCore.QRect(180, 210, 60, 50)) self.lbl_connectivity.setScaledContents(True) @@ -1464,6 +1464,7 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) self.mytabWidget.setCurrentIndex(-1) + self.comboPlateThick_2.setCurrentIndex(-1) self.comboWldSize.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -1494,7 +1495,7 @@ class Ui_MainWindow(object): self.menuView.setTitle(_translate("MainWindow", "View", None)) self.menuHelp.setTitle(_translate("MainWindow", "Help", None)) self.menuGraphics.setTitle(_translate("MainWindow", "Graphics", None)) - self.inputDock.setWindowTitle(_translate("MainWindow", "INPUT", None)) + self.inputDock.setWindowTitle(_translate("MainWindow", "Input dock", None)) self.txtFy.setPlaceholderText(_translate("MainWindow", "000.000", None)) self.label_3.setText(_translate("MainWindow", "<html><head/><body><p>Column section *</p></body></html>", None)) self.comboConnLoc.setItemText(0, _translate("MainWindow", "Select Connectivity", None)) @@ -1526,11 +1527,6 @@ class Ui_MainWindow(object): self.label_40.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Plate</span></p></body></html>", None)) self.label_41.setText(_translate("MainWindow", "<html><head/><body><p>Thickness (mm) *</p></body></html>", None)) self.lbl_len_2.setText(_translate("MainWindow", "Height (mm)", None)) - self.comboPlateThick_2.setItemText(0, _translate("MainWindow", "Thickness of Plate", None)) - self.comboPlateThick_2.setItemText(1, _translate("MainWindow", "6", None)) - self.comboPlateThick_2.setItemText(2, _translate("MainWindow", "8", None)) - self.comboPlateThick_2.setItemText(3, _translate("MainWindow", "10", None)) - self.comboPlateThick_2.setItemText(4, _translate("MainWindow", "12", None)) self.label_42.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Weld</span></p></body></html>", None)) self.label_43.setText(_translate("MainWindow", "<html><head/><body><p>Thickness (mm) *</p></body></html>", None)) self.label_44.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-weight:600; font-style:italic;\">Bolt</span></p></body></html>", None)) @@ -1607,8 +1603,9 @@ class Ui_MainWindow(object): self.comboWldSize.setItemText(3, _translate("MainWindow", "6", None)) self.comboWldSize.setItemText(4, _translate("MainWindow", "8", None)) self.comboWldSize.setItemText(5, _translate("MainWindow", "10", None)) + self.comboWldSize.setItemText(6, _translate("MainWindow", "12", None)) self.label_9.setText(_translate("MainWindow", "Beam section *", None)) - self.outputDock.setWindowTitle(_translate("MainWindow", "OUTPUT", None)) + self.outputDock.setWindowTitle(_translate("MainWindow", "Output dock", None)) self.t_7.setText(_translate("MainWindow", "No. of bolts", None)) self.label_152.setText(_translate("MainWindow", "Gauge (mm)", None)) self.labl123_7.setText(_translate("MainWindow", "<html><head/><body><p>Capacity of bolt (kN)</p></body></html>", None)) |