summaryrefslogtreecommitdiff
path: root/Connections/Shear/Finplate/osdag_gui.py
diff options
context:
space:
mode:
authordeepa-chaudhari2015-12-09 19:56:36 +0530
committerdeepa-chaudhari2015-12-09 19:56:36 +0530
commit2612ef3f3a7eb263b304006079e5208c71dcdbf0 (patch)
tree808b5f9600c8796bfa4294aecd1aca1d77bf5964 /Connections/Shear/Finplate/osdag_gui.py
parent24380b7be6c7985dcff6dc1a65118db4d3442bdd (diff)
downloadOsdagLive-2612ef3f3a7eb263b304006079e5208c71dcdbf0.tar.gz
OsdagLive-2612ef3f3a7eb263b304006079e5208c71dcdbf0.tar.bz2
OsdagLive-2612ef3f3a7eb263b304006079e5208c71dcdbf0.zip
svg-2d drawings
Diffstat (limited to 'Connections/Shear/Finplate/osdag_gui.py')
-rw-r--r--Connections/Shear/Finplate/osdag_gui.py1284
1 files changed, 0 insertions, 1284 deletions
diff --git a/Connections/Shear/Finplate/osdag_gui.py b/Connections/Shear/Finplate/osdag_gui.py
deleted file mode 100644
index 9017dbb..0000000
--- a/Connections/Shear/Finplate/osdag_gui.py
+++ /dev/null
@@ -1,1284 +0,0 @@
-'''
-Created on 05-Aug-2015
-
-@author: deepa
-'''
-'''
-Created on 07-May-2015
-comment
-
-@author: deepa
-'''
-from PyQt4.QtCore import QString, pyqtSignal
-from OCC.TopoDS import topods, TopoDS_Shape
-from OCC.gp import gp_Pnt
-from nutBoltPlacement import NutBoltArray
-from OCC import VERSION, BRepTools, OSD
-from ui_finPlate import Ui_MainWindow
-from model import *
-from finPlateCalc import finConn
-import yaml
-import pickle
-from OCC.BRepAlgoAPI import BRepAlgoAPI_Fuse
-from OCC._Quantity import Quantity_NOC_RED,Quantity_NOC_BLUE1,Quantity_NOC_SADDLEBROWN
-from ISection import ISection
-from OCC.Graphic3d import Graphic3d_NOT_2D_ALUMINUM
-from weld import Weld
-from plate import Plate
-from bolt import Bolt
-from nut import Nut
-import os.path
-from utilities import osdagDisplayShape
-from OCC.Display.pyqt4Display import qtViewer3d
-from colWebBeamWebConnectivity import ColWebBeamWeb
-from colFlangeBeamWebConnectivity import ColFlangeBeamWeb
-from OCC import IGESControl
-from filletweld import FilletWeld
-from OCC.STEPControl import STEPControl_Writer, STEPControl_AsIs
-from OCC.Interface import Interface_Static_SetCVal
-from OCC.IFSelect import IFSelect_RetDone
-from OCC.StlAPI import StlAPI_Writer
-# Developed by deepa
-
-class MainController(QtGui.QMainWindow):
-
- closed = pyqtSignal()
-
-
-
-
-
-
-
- def __init__(self):
- QtGui.QMainWindow.__init__(self)
- self.ui = Ui_MainWindow()
- self.ui.setupUi(self)
-
- self.ui.combo_Beam.addItems(get_beamcombolist())
- self.ui.comboColSec.addItems(get_columncombolist())
-
- self.ui.inputDock.setFixedSize(310,710)
-
- self.gradeType ={'Please Select Type':'',
- 'HSFG': [8.8,10.8],
- 'Black Bolt':[3.6,4.6,4.8,5.6,5.8,6.8,9.8,12.9]}
- self.ui.comboType.addItems(self.gradeType.keys())
- self.ui.comboType.currentIndexChanged[str].connect(self.combotype_currentindexchanged)
- self.ui.comboType.setCurrentIndex(0)
-
-
- self.ui.comboConnLoc.currentIndexChanged[str].connect(self.setimage_connection)
- self.retrieve_prevstate()
- self.ui.btnInput.clicked.connect(lambda: self.dockbtn_clicked(self.ui.inputDock))
- self.ui.btnOutput.clicked.connect(lambda: self.dockbtn_clicked(self.ui.outputDock))
-
- self.ui.btn_front.clicked.connect(self.call_Frontview)
- self.ui.btn_top.clicked.connect(self.call_Topview)
- self.ui.btn_side.clicked.connect(self.call_Sideview)
-
- self.ui.btn3D.clicked.connect(lambda:self.call_3DModel(True))
- self.ui.chkBxBeam.clicked.connect(self.call_3DBeam)
- self.ui.chkBxCol.clicked.connect(self.call_3DColumn)
- self.ui.chkBxFinplate.clicked.connect(self.call_3DFinplate)
-
- validator = QtGui.QIntValidator()
- self.ui.txtFu.setValidator(validator)
- self.ui.txtFy.setValidator(validator)
-
- dbl_validator = QtGui.QDoubleValidator()
- self.ui.txtPlateLen.setValidator(dbl_validator)
- self.ui.txtPlateLen.setMaxLength(7)
- self.ui.txtPlateWidth.setValidator(dbl_validator)
- self.ui.txtPlateWidth.setMaxLength(7)
- self.ui.txtShear.setValidator(dbl_validator)
- self.ui.txtShear.setMaxLength(7)
-
- minfuVal = 290
- maxfuVal = 590
- self.ui.txtFu.editingFinished.connect(lambda: self.check_range(self.ui.txtFu,self.ui.lbl_fu, minfuVal, maxfuVal))
-
- minfyVal = 165
- maxfyVal = 450
- self.ui.txtFy.editingFinished.connect(lambda: self.check_range(self.ui.txtFy,self.ui.lbl_fy, minfyVal, maxfyVal))
-
- ##### MenuBar #####
- self.ui.actionQuit_fin_plate_design.setShortcut('Ctrl+Q')
- self.ui.actionQuit_fin_plate_design.setStatusTip('Exit application')
- self.ui.actionQuit_fin_plate_design.triggered.connect(QtGui.qApp.quit)
-
- self.ui.actionCreate_design_report.triggered.connect(self.save_design)
- self.ui.actionSave_log_messages.triggered.connect(self.save_log)
- self.ui.actionEnlarge_font_size.triggered.connect(self.showFontDialogue)
- self.ui.actionZoom_in.triggered.connect(self.callZoomin)
- self.ui.actionZoom_out.triggered.connect(self.callZoomout)
- self.ui.actionSave_3D_model_as.triggered.connect(self.save3DcadImages)
- self.ui.actionSave_current_2D_image_as.triggered.connect(self.save2DcadImages)
- self.ui.actionView_2D_on_ZX.triggered.connect(self.call_Frontview)
- self.ui.actionView_2D_on_XY.triggered.connect(self.call_Topview)
- self.ui.actionView_2D_on_YZ.triggered.connect(self.call_Sideview)
- self.ui.actionPan.triggered.connect(self.call_Pannig)
-
- # self.ui.combo_Beam.addItems(get_beamcombolist())
- # self.ui.comboColSec.addItems(get_columncombolist())
- self.ui.combo_Beam.currentIndexChanged[str].connect(self.fillPlateThickCombo)
- self.ui.comboColSec.currentIndexChanged[str].connect(self.populateWeldThickCombo)
- self.ui.comboConnLoc.currentIndexChanged[str].connect(self.populateWeldThickCombo)
- self.ui.comboPlateThick_2.currentIndexChanged[str].connect(self.populateWeldThickCombo)
-
-
- self.ui.menuView.addAction(self.ui.inputDock.toggleViewAction())
- self.ui.menuView.addAction(self.ui.outputDock.toggleViewAction())
- self.ui.btn_CreateDesign.clicked.connect(self.save_design)#Saves the create design report
- self.ui.btn_SaveMessages.clicked.connect(self.save_log)
-
-
- # Saving and Restoring the finPlate window state.
- #self.retrieve_prevstate()
-
- self.ui.btnZmIn.clicked.connect(self.callZoomin)
- self.ui.btnZmOut.clicked.connect(self.callZoomout)
- self.ui.btnRotatCw.clicked.connect(self.callRotation)
- self.ui.btn_Reset.clicked.connect(self.resetbtn_clicked)
-
- self.ui.btn_Design.clicked.connect(self.design_btnclicked)
-
- # Initialising the qtviewer
- self.display,_ = self.init_display(backend_str="pyqt4")
-
- self.ui.btnSvgSave.clicked.connect(self.save3DcadImages)
- #self.ui.btnSvgSave.clicked.connect(lambda:self.saveTopng(self.display))
-
- self.connectivity = None
- self.fuse_model = None
- self.disableViewButtons()
-
- def showFontDialogue(self):
-
- font, ok = QtGui.QFontDialog.getFont()
- if ok:
- self.ui.inputDock.setFont(font)
- self.ui.outputDock.setFont(font)
- self.ui.textEdit.setFont(font)
-
- def callZoomin(self):
- self.display.ZoomFactor(2)
-
- def callZoomout(self):
- self.display.ZoomFactor(0.5)
-
- def callRotation(self):
- self.display.Rotation(15,0)
- def call_Pannig(self):
- self.display.Pan(50,0)
-
-
- def save2DcadImages(self):
- files_types = "PNG (*.png);;JPG (*.jpg);;GIF (*.gif)"
- fileName = QtGui.QFileDialog.getSaveFileName(self, 'Export', "/home/deepa/Cadfiles/untitled.png", files_types )
- fName = str(fileName)
- file_extension = fName.split(".")[-1]
-
- if file_extension == 'png' or file_extension == 'jpg' or file_extension == 'gif':
- self.display.ExportToImage(fName)
- QtGui.QMessageBox.about(self,'Information',"File saved")
-
-
- def disableViewButtons(self):
- '''
- Disables the all buttons in toolbar
- '''
- self.ui.btn_front.setEnabled(False)
- self.ui.btn_top.setEnabled(False)
- self.ui.btn_side.setEnabled(False)
-
- self.ui.btn3D.setEnabled(False)
- self.ui.chkBxBeam.setEnabled(False)
- self.ui.chkBxCol.setEnabled(False)
- self.ui.chkBxFinplate.setEnabled(False)
-
- def enableViewButtons(self):
- '''
- Enables the all buttons in toolbar
- '''
- self.ui.btn_front.setEnabled(True)
- self.ui.btn_top.setEnabled(True)
- self.ui.btn_side.setEnabled(True)
-
- self.ui.btn3D.setEnabled(True)
- self.ui.chkBxBeam.setEnabled(True)
- self.ui.chkBxCol.setEnabled(True)
- self.ui.chkBxFinplate.setEnabled(True)
-
- def fillPlateThickCombo(self):
- '''Populates the plate thickness on the basis of beam web thickness and plate thickness check
- '''
- dictbeamdata = self.fetchBeamPara()
- beam_tw = float(dictbeamdata[QString("tw")])
- plateThickness = [6,8,10,12,14,16,18,20]
- newlist = ['Select plate thickness']
- for ele in plateThickness[1:]:
- item = int(ele)
- if item >= beam_tw:
- newlist.append(str(item))
- self.ui.comboPlateThick_2.clear()
- for i in newlist[:]:
- self.ui.comboPlateThick_2.addItem(str(i))
- self.ui.comboPlateThick_2.setCurrentIndex(1)
-
- def populateWeldThickCombo(self):
- '''
- Returns the weld thickness on the basis column flange and plate thickness check
- '''
- newlist = ["Select weld thickness"]
- weldlist = [3,4,5,6,8,10,12,16]
- dictcoldata = self.fetchColumnPara()
- column_tf = float(dictcoldata[QString("T")])
- column_tw = float(dictcoldata[QString("tw")])
- plate_thick = float(self.ui.comboPlateThick_2.currentText())
-
- if self.ui.comboConnLoc.currentText() == "Column flange-Beam web":
-
- thickerPart = column_tf > plate_thick and column_tf or plate_thick
-
- else:
- thickerPart = column_tw > plate_thick and column_tw or plate_thick
-
- if thickerPart in range(0,11):
- weld_index = weldlist.index(3)
- newlist.extend(weldlist[weld_index:])
- elif thickerPart in range (11,21):
- weld_index = weldlist.index(5)
- newlist.extend(weldlist[weld_index:])
- elif thickerPart in range(21,33):
- weld_index = weldlist.index(6)
- newlist.extend(weldlist[weld_index: ])
- else:
- weld_index = weldlist.index(8)
- newlist.extend(weldlist[weld_index: ])
-
- self.ui.comboWldSize.clear()
- for element in newlist[:]:
- self.ui.comboWldSize.addItem(str(element))
-
-
- def retrieve_prevstate(self):
- uiObj = self.get_prevstate()
- if(uiObj != None):
-
- self.ui.combo_Beam.setCurrentIndex(self.ui.combo_Beam.findText(uiObj['Member']['BeamSection']))
- self.ui.comboColSec.setCurrentIndex(self.ui.comboColSec.findText(uiObj['Member']['ColumSection']))
-
- self.ui.txtFu.setText(str(uiObj['Member']['fu (MPa)']))
- self.ui.txtFy.setText(str(uiObj['Member']['fy (MPa)']))
-
- self.ui.comboConnLoc.setCurrentIndex(self.ui.comboConnLoc.findText(str(uiObj['Member']['Connectivity'])))
-
- self.ui.txtShear.setText(str(uiObj['Load']['ShearForce (kN)']))
-
- self.ui.comboDaimeter.setCurrentIndex(self.ui.comboDaimeter.findText(str(uiObj['Bolt']['Diameter (mm)'])))
- comboTypeIndex = self.ui.comboType.findText(str(uiObj['Bolt']['Type']))
- self.ui.comboType.setCurrentIndex(comboTypeIndex)
- self.combotype_currentindexchanged(str(uiObj['Bolt']['Type']))
-
- prevValue = str(uiObj['Bolt']['Grade'])
-
- comboGradeIndex = self.ui.comboGrade.findText(prevValue)
-
- self.ui.comboGrade.setCurrentIndex(comboGradeIndex)
-
-
- selection = str(uiObj['Plate']['Thickness (mm)'])
- selectionIndex = self.ui.comboPlateThick_2.findText(selection)
- self.ui.comboPlateThick_2.setCurrentIndex(selectionIndex)
- self.ui.txtPlateLen.setText(str(uiObj['Plate']['Height (mm)']))
- self.ui.txtPlateWidth.setText(str(uiObj['Plate']['Width (mm)']))
-
- self.ui.comboWldSize.setCurrentIndex(self.ui.comboWldSize.findText(str(uiObj['Weld']['Size (mm)'])))
-
- def setimage_connection(self):
- '''
- Setting image to connctivity.
- '''
- self.ui.lbl_connectivity.show()
- loc = self.ui.comboConnLoc.currentText()
- if loc == "Column flange-Beam web":
-
- pixmap = QtGui.QPixmap(":/newPrefix/images/beam2.jpg")
- pixmap.scaledToHeight(50)
- pixmap.scaledToWidth(60)
- self.ui.lbl_connectivity.setPixmap(pixmap)
- #self.ui.lbl_connectivity.show()
- elif(loc == "Column web-Beam web"):
- picmap = QtGui.QPixmap(":/newPrefix/images/beam.jpg")
- picmap.scaledToHeight(50)
- picmap.scaledToWidth(60)
- self.ui.lbl_connectivity.setPixmap(picmap)
- else:
- self.ui.lbl_connectivity.hide()
-
-
- def getuser_inputs(self):
- '''(nothing) -> Dictionary
-
- Returns the dictionary object with the user input fields for designing fin plate connection
-
- '''
- uiObj = {}
- uiObj["Bolt"] = {}
- uiObj["Bolt"]["Diameter (mm)"] = self.ui.comboDaimeter.currentText().toInt()[0]
- uiObj["Bolt"]["Grade"] = float(self.ui.comboGrade.currentText())
- uiObj["Bolt"]["Type"] = str(self.ui.comboType.currentText())
-
-
- uiObj["Weld"] = {}
- uiObj["Weld"]['Size (mm)'] = self.ui.comboWldSize.currentText().toInt()[0]
-
- uiObj['Member'] = {}
- uiObj['Member']['BeamSection'] = str(self.ui.combo_Beam.currentText())
- uiObj['Member']['ColumSection'] = str(self.ui.comboColSec.currentText())
- uiObj['Member']['Connectivity'] = str(self.ui.comboConnLoc.currentText())
- uiObj['Member']['fu (MPa)'] = self.ui.txtFu.text().toInt()[0]
- uiObj['Member']['fy (MPa)'] = self.ui.txtFy.text().toInt()[0]
-
- uiObj['Plate'] = {}
- uiObj['Plate']['Thickness (mm)'] = self.ui.comboPlateThick_2.currentText().toInt()[0]
- uiObj['Plate']['Height (mm)'] = self.ui.txtPlateLen.text().toInt()[0] # changes the label length to height
- uiObj['Plate']['Width (mm)'] = self.ui.txtPlateWidth.text().toInt()[0]
-
- uiObj['Load'] = {}
- uiObj['Load']['ShearForce (kN)'] = self.ui.txtShear.text().toInt()[0]
-
-
- return uiObj
-
- def save_inputs(self,uiObj):
-
- '''(Dictionary)--> None
-
- '''
- inputFile = QtCore.QFile('saveINPUT.txt')
- if not inputFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text):
- QtGui.QMessageBox.warning(self, "Application",
- "Cannot write file %s:\n%s." % (inputFile, file.errorString()))
- #yaml.dump(uiObj, inputFile,allow_unicode=True, default_flow_style = False)
- pickle.dump(uiObj, inputFile)
-
-
- def get_prevstate(self):
- '''
- '''
- fileName = 'saveINPUT.txt'
-
- if os.path.isfile(fileName):
- fileObject = open(fileName,'r')
- uiObj = pickle.load(fileObject)
- return uiObj
- else:
- return None
-
-
- def outputdict(self):
-
- ''' Returns the output of design in dictionary object.
- '''
- outObj = {}
- outObj['Plate'] ={}
- #outObj['Plate']["Thickness(mm)"] = float(self.ui.txtPlateThick.text())
- outObj['Plate']["External Moment (kN-m)"] = float(self.ui.txtExtMomnt.text())
- outObj['Plate']["Moment Capacity (kN-m)"] = float(self.ui.txtMomntCapacity.text())
-
- outObj['Weld'] ={}
- #outObj['Weld']["Weld Thickness(mm)"] = float(self.ui.txtWeldThick.text())
- outObj['Weld']["Resultant Shear (kN/mm)"] = float(self.ui.txtResltShr.text())
- outObj['Weld']["Weld Strength (kN/mm)"] = float(self.ui.txtWeldStrng.text())
-
- outObj['Bolt'] = {}
- outObj['Bolt']["Shear Capacity (kN)"] = float(self.ui.txtShrCapacity.text())
- outObj['Bolt']["Bearing Capacity (kN)"] = float(self.ui.txtbearCapacity.text())
- outObj['Bolt']["Capacity Of Bolt (kN)"] = float(self.ui.txtBoltCapacity.text())
- outObj['Bolt']["No Of Bolts"] = float(self.ui.txtNoBolts.text())
- outObj['Bolt']["No.Of Row"] = int(self.ui.txt_row.text())
- outObj['Bolt']["No.Of Column"] = int(self.ui.txt_col.text())
- outObj['Bolt']["Pitch Distance (mm)"] = float(self.ui.txtPitch.text())
- outObj['Bolt']["Guage Distance (mm)"] = float(self.ui.txtGuage.text())
- outObj['Bolt']["End Distance (mm)"]= float(self.ui.txtEndDist.text())
- outObj['Bolt']["Edge Distance (mm)"]= float(self.ui.txtEdgeDist.text())
-
- return outObj
-
-
- def save_design(self):
- self.outdict = self.outputdict()
- self.inputdict = self.getuser_inputs()
- self.save_yaml(self.outdict,self.inputdict)
-
- #self.save(self.outdict,self.inputdict)
-
- def save_log(self):
-
- fileName,pat =QtGui.QFileDialog.getSaveFileNameAndFilter(self,"Save File As","/home/deepa/SaveMessages","Text files (*.txt)")
- return self.save_file(fileName+".txt")
-
- def save_file(self, fileName):
- '''(file open for writing)-> boolean
- '''
- fname = QtCore.QFile(fileName)
-
- if not fname.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text):
- QtGui.QMessageBox.warning(self, "Application",
- "Cannot write file %s:\n%s." % (fileName, fname.errorString()))
- return False
-
- outf = QtCore.QTextStream(fname)
- QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
- outf << self.ui.textEdit.toPlainText()
- QtGui.QApplication.restoreOverrideCursor()
-
- #self.setCurrentFile(fileName);
-
- #QtGui.QMessageBox.about(self,'Information',"File saved")
-
-
-
- def save_yaml(self,outObj,uiObj):
- '''(dictiionary,dictionary) -> NoneType
- Saving input and output to file in following format.
- Bolt:
- diameter: 6
- grade: 8.800000190734863
- type: HSFG
- Load:
- shearForce: 100
-
- '''
- newDict = {"INPUT": uiObj, "OUTPUT": outObj}
- fileName = QtGui.QFileDialog.getSaveFileName(self,"Save File As","/home/deepa/SaveDesign","Text File (*.txt)")
- f = open(fileName,'w')
- yaml.dump(newDict,f,allow_unicode=True, default_flow_style=False)
-
- #return self.save_file(fileName+".txt")
- #QtGui.QMessageBox.about(self,'Information',"File saved")
-
-
- def resetbtn_clicked(self):
- '''(NoneType) -> NoneType
-
- Resets all fields in input as well as output window
-
- '''
- # user Inputs
- self.ui.combo_Beam.setCurrentIndex((0))
- self.ui.comboColSec.setCurrentIndex((0))
- self.ui.comboConnLoc.setCurrentIndex((0))
- self.ui.txtFu.clear()
- self.ui.txtFy.clear()
-
- self.ui.txtShear.clear()
-
- self.ui.comboDaimeter.setCurrentIndex(0)
- self.ui.comboType.setCurrentIndex((0))
- self.ui.comboGrade.setCurrentIndex((0))
-
- self.ui.comboPlateThick_2.setCurrentIndex((0))
- self.ui.txtPlateLen.clear()
- self.ui.txtPlateWidth.clear()
-
- self.ui.comboWldSize.setCurrentIndex((0))
-
- #----Output
- self.ui.txtShrCapacity.clear()
- self.ui.txtbearCapacity.clear()
- self.ui.txtBoltCapacity.clear()
- self.ui.txtNoBolts.clear()
- self.ui.txtboltgrpcapacity.clear()
- self.ui.txt_row.clear()
- self.ui.txt_col.clear()
- self.ui.txtPitch.clear()
- self.ui.txtGuage.clear()
- self.ui.txtEndDist.clear()
- self.ui.txtEdgeDist.clear()
-
- #self.ui.txtPlateThick.clear()
- self.ui.txtplate_ht.clear()
- self.ui.txtplate_width.clear()
- self.ui.txtExtMomnt.clear()
- self.ui.txtMomntCapacity.clear()
-
- #self.ui.txtWeldThick.clear()
- self.ui.txtResltShr.clear()
- self.ui.txtWeldStrng.clear()
- self.ui.textEdit.clear()
-
- #------ Erase Display
- self.display.EraseAll()
-
- def dockbtn_clicked(self,widget):
-
- '''(QWidget) -> NoneType
-
- This method dock and undock widget(QdockWidget)
- '''
-
- flag = widget.isHidden()
- if(flag):
-
- widget.show()
- else:
- widget.hide()
-
- def combotype_currentindexchanged(self,index):
-
- '''(Number) -> NoneType
- '''
- items = self.gradeType[str(index)]
-
- self.ui.comboGrade.clear()
- strItems = []
- for val in items:
- strItems.append(str(val))
-
- self.ui.comboGrade.addItems(strItems)
-
-
- def check_range(self, widget,lblwidget, minVal, maxVal):
-
- '''(QlineEdit,QLable,Number,Number)---> NoneType
- Validating F_u(ultimate Strength) and F_y (Yeild Strength) textfields
- '''
- textStr = widget.text()
- val = int(textStr)
- if( val < minVal or val > maxVal):
- QtGui.QMessageBox.about(self,'Error','Please Enter a value between %s-%s' %(minVal, maxVal))
- widget.clear()
- widget.setFocus()
- palette = QtGui.QPalette()
- palette.setColor(QtGui.QPalette.Foreground,QtCore.Qt.red)
- lblwidget.setPalette(palette)
- else:
- palette = QtGui.QPalette()
- lblwidget.setPalette(palette)
-
- def display_output(self, outputObj):
- '''(dictionary) --> NoneType
- Setting design result values to the respective textboxes in the output window
- '''
- for k in outputObj.keys():
- for key in outputObj[k].keys():
- if (outputObj[k][key] == ""):
- resultObj = outputObj
- else:
- resultObj = outputObj
-
- # resultObj['Bolt']
- shear_capacity = resultObj['Bolt']['shearcapacity']
- self.ui.txtShrCapacity.setText(str(shear_capacity))
-
- bearing_capacity = resultObj['Bolt']['bearingcapacity']
- self.ui.txtbearCapacity.setText(str(bearing_capacity))
-
- bolt_capacity = resultObj['Bolt']['boltcapacity']
- self.ui.txtBoltCapacity.setText(str(bolt_capacity))
-
- no_ofbolts = resultObj['Bolt']['numofbolts']
- self.ui.txtNoBolts.setText(str(no_ofbolts))
- #newly added field
- boltGrp_capacity = resultObj['Bolt']['boltgrpcapacity']
- self.ui.txtboltgrpcapacity.setText(str(boltGrp_capacity))
-
- no_ofrows = resultObj['Bolt']['numofrow']
- self.ui.txt_row.setText(str(no_ofrows))
-
- no_ofcol = resultObj['Bolt']['numofcol']
- self.ui.txt_col.setText(str(no_ofcol))
-
- pitch_dist = resultObj['Bolt']['pitch']
- self.ui.txtPitch.setText(str(pitch_dist))
-
- gauge_dist = resultObj['Bolt']['gauge']
- self.ui.txtGuage.setText(str(gauge_dist))
-
- end_dist = resultObj['Bolt']['enddist']
- self.ui.txtEndDist.setText(str(end_dist))
-
- edge_dist = resultObj['Bolt']['edge']
- self.ui.txtEdgeDist.setText(str(edge_dist))
-
- resultant_shear = resultObj['Weld']['resultantshear']
- self.ui.txtResltShr.setText(str(resultant_shear))
-
- weld_strength = resultObj['Weld']['weldstrength']
- self.ui.txtWeldStrng.setText(str(weld_strength))
-
-
- # Newly included fields
- plate_ht = resultObj['Plate']['height']
- self.ui.txtplate_ht.setText(str(plate_ht))
-
- plate_width = resultObj['Plate']['width']
- self.ui.txtplate_width.setText(str(plate_width))
-
- moment_demand = resultObj['Plate']['externalmoment']
- self.ui.txtExtMomnt.setText(str(moment_demand))
-
- moment_capacity = resultObj['Plate']['momentcapacity']
- self.ui.txtMomntCapacity.setText(str(moment_capacity))
-
-
- def displaylog_totextedit(self):
- '''
- This method displaying Design messages(log messages)to textedit widget.
- '''
-
- afile = QtCore.QFile('./Connections/Shear/Finplate/fin.log')
-
- if not afile.open(QtCore.QIODevice.ReadOnly):#ReadOnly
- QtGui.QMessageBox.information(None, 'info', afile.errorString())
-
- stream = QtCore.QTextStream(afile)
- self.ui.textEdit.clear()
- self.ui.textEdit.setHtml(stream.readAll())
- vscrollBar = self.ui.textEdit.verticalScrollBar();
- vscrollBar.setValue(vscrollBar.maximum());
- afile.close()
-
-
- def get_backend(self):
- """
- loads a backend
- backends are loaded in order of preference
- since python comes with Tk included, but that PySide or PyQt4
- is much preferred
- """
- try:
- from PySide import QtCore, QtGui
- return 'pyside'
- except:
- pass
- try:
- from PyQt4 import QtCore, QtGui
- return 'pyqt4'
- except:
- pass
- # Check wxPython
- try:
- import wx
- return 'wx'
- except:
- raise ImportError("No compliant GUI library found. You must have either PySide, PyQt4 or wxPython installed.")
- sys.exit(1)
-
- # QtViewer
- def init_display(self,backend_str=None, size=(1024, 768)):
-
- global display,start_display, app, _, USED_BACKEND
-
- if not backend_str:
- USED_BACKEND = self.get_backend()
- elif backend_str in [ 'pyside', 'pyqt4']:
- USED_BACKEND = backend_str
- else:
- raise ValueError("You should pass either 'qt' or 'tkinter' to the init_display function.")
- sys.exit(1)
-
- # Qt based simple GUI
- if USED_BACKEND in ['pyqt4', 'pyside']:
- if USED_BACKEND == 'pyqt4':
- from PyQt4 import QtCore, QtGui, QtOpenGL
- from OCC.Display.pyqt4Display import qtViewer3d
- elif USED_BACKEND == 'pyside':
- from PySide import QtCore, QtGui, QtOpenGL
- 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.addTab(self.ui.model2dTab,"")
-
- self.ui.modelTab.InitDriver()
- display = self.ui.modelTab._display
- #display_2d = self.ui.model2dTab._display
-
-
- # background gradient
- display.set_bg_gradient_color(23,1,32,23,1,32)
- #display_2d.set_bg_gradient_color(255,255,255,255,255,255)
- # display black trihedron
- display.display_trihedron()
- display.View.SetProj(1, 1, 1)
- def centerOnScreen(self):
- '''Centers the window on the screen.'''
- resolution = QtGui.QDesktopWidget().screenGeometry()
- self.move((resolution.width() / 2) - (self.frameSize().width() / 2),
- (resolution.height() / 2) - (self.frameSize().height() / 2))
- def start_display():
-
- self.ui.modelTab.raise_()
- #self.ui.model2dTab.raise_() # make the application float to the top
-
- return display, start_display
-
- def display3Dmodel(self, component):
- self.display.EraseAll()
- self.display.SetModeShaded()
- display.DisableAntiAliasing()
- self.display.set_bg_gradient_color(23,1,32,23,1,32)
- self.display.View_Front()
- self.display.View_Iso()
- self.display.FitAll()
- if component == "Column":
- osdagDisplayShape(self.display, self.connectivity.columnModel, update=True)
- elif component == "Beam":
- osdagDisplayShape(self.display, self.connectivity.get_beamModel(), material = Graphic3d_NOT_2D_ALUMINUM, update=True)
- #osdagDisplayShape(self.display, self.connectivity.beamModel, material = Graphic3d_NOT_2D_ALUMINUM, update=True)
- elif component == "Finplate" :
- osdagDisplayShape(self.display, self.connectivity.weldModelLeft, color = 'red', update = True)
- osdagDisplayShape(self.display, self.connectivity.weldModelRight, color = 'red', update = True)
- osdagDisplayShape(self.display,self.connectivity.plateModel,color = 'blue', update = True)
- nutboltlist = self.connectivity.nutBoltArray.getModels()
- for nutbolt in nutboltlist:
- osdagDisplayShape(self.display,nutbolt,color = Quantity_NOC_SADDLEBROWN,update = True)
- #self.display.DisplayShape(self.connectivity.nutBoltArray.getModels(), color = Quantity_NOC_SADDLEBROWN, update=True)
- elif component == "Model":
- osdagDisplayShape(self.display, self.connectivity.columnModel, update=True)
- osdagDisplayShape(self.display, self.connectivity.beamModel, material = Graphic3d_NOT_2D_ALUMINUM, update=True)
- osdagDisplayShape(self.display, self.connectivity.weldModelLeft, color = 'red', update = True)
- osdagDisplayShape(self.display, self.connectivity.weldModelRight, color = 'red', update = True)
- osdagDisplayShape(self.display,self.connectivity.plateModel,color = 'blue', update = True)
- nutboltlist = self.connectivity.nutBoltArray.getModels()
- for nutbolt in nutboltlist:
- osdagDisplayShape(self.display,nutbolt,color = Quantity_NOC_SADDLEBROWN,update = True)
- #self.display.DisplayShape(self.connectivity.nutBoltArray.getModels(), color = Quantity_NOC_SADDLEBROWN, update=True)
-
- def fetchBeamPara(self):
- beam_sec = self.ui.combo_Beam.currentText()
- dictbeamdata = get_beamdata(beam_sec)
- return dictbeamdata
-
- def fetchColumnPara(self):
- column_sec = self.ui.comboColSec.currentText()
- dictcoldata = get_columndata(column_sec)
- return dictcoldata
-
- def create3DColWebBeamWeb(self):
- '''
- creating 3d cad model with column web beam web
- '''
- uiObj = self.getuser_inputs()
- resultObj = finConn(uiObj)
-
- dictbeamdata = self.fetchBeamPara()
- ##### BEAM PARAMETERS #####
- beam_D = int(dictbeamdata[QString("D")])
- beam_B = int(dictbeamdata[QString("B")])
- beam_tw = float(dictbeamdata[QString("tw")])
- beam_T = float(dictbeamdata[QString("T")])
- beam_alpha = float(dictbeamdata[QString("FlangeSlope")])
- beam_R1 = float(dictbeamdata[QString("R1")])
- beam_R2 = float(dictbeamdata[QString("R2")])
- beam_length = 500.0 # This parameter as per view of 3D cad model
-
- #beam = ISection(B = 140, T = 16,D = 400,t = 8.9, R1 = 14, R2 = 7, alpha = 98,length = 500)
- beam = ISection(B = beam_B, T = beam_T,D = beam_D,t = beam_tw,
- R1 = beam_R1, R2 = beam_R2, alpha = beam_alpha,
- length = beam_length)
-
- ##### COLUMN PARAMETERS ######
- dictcoldata = self.fetchColumnPara()
-
- column_D = int(dictcoldata[QString("D")])
- column_B = int(dictcoldata[QString("B")])
- column_tw = float(dictcoldata[QString("tw")])
- column_T = float(dictcoldata[QString("T")])
- column_alpha = float(dictcoldata[QString("FlangeSlope")])
- column_R1 = float(dictcoldata[QString("R1")])
- column_R2 = float(dictcoldata[QString("R2")])
-
- #column = ISection(B = 83, T = 14.1, D = 250, t = 11, R1 = 12, R2 = 3.2, alpha = 98, length = 1000)
- column = ISection(B = column_B, T = column_T, D = column_D,
- t = column_tw, R1 = column_R1, R2 = column_R2, alpha = column_alpha, length = 1000)
- #### WELD,PLATE,BOLT AND NUT PARAMETERS #####
-
- fillet_length = resultObj['Plate']['height']
- fillet_thickness = resultObj['Weld']['thickness']
- plate_width = resultObj['Plate']['width']
- plate_thick = uiObj['Plate']['Thickness (mm)']
- bolt_dia = uiObj["Bolt"]["Diameter (mm)"]
- bolt_r = bolt_dia/2
- bolt_R = bolt_r + 7
- nut_R = bolt_R
- bolt_T = 10.0 # minimum bolt thickness As per Indian Standard
- bolt_Ht = 50.0 # minimum bolt length as per Indian Standard IS 3750(1985)
- nut_T = 12.0 # minimum nut thickness As per Indian Standard
- nut_Ht = 12.2 #
-
- #plate = Plate(L= 300,W =100, T = 10)
- plate = Plate(L= fillet_length,W =plate_width, T = plate_thick)
-
- #Fweld1 = FilletWeld(L= 300,b = 6, h = 6)
- Fweld1 = FilletWeld(L= fillet_length,b = fillet_thickness, h = fillet_thickness)
-
- #bolt = Bolt(R = bolt_R,T = bolt_T, H = 38.0, r = 4.0 )
- bolt = Bolt(R = bolt_R,T = bolt_T, H = bolt_Ht, r = bolt_r )
-
- #nut =Nut(R = bolt_R, T = 10.0, H = 11, innerR1 = 4.0, outerR2 = 8.3)
- nut = Nut(R = bolt_R, T = nut_T, H = nut_Ht, innerR1 = bolt_r)
-
- gap = beam_tw + plate_thick+ nut_T
-
- nutBoltArray = NutBoltArray(resultObj,nut,bolt,gap)
-
- colwebconn = ColWebBeamWeb(column,beam,Fweld1,plate,nutBoltArray)
- colwebconn.create_3dmodel()
-
- return colwebconn
-
- def create3DColFlangeBeamWeb(self):
- '''
- Creating 3d cad model with column flange beam web connection
-
- '''
- uiObj = self.getuser_inputs()
- resultObj = finConn(uiObj)
-
- dictbeamdata = self.fetchBeamPara()
- fillet_length = resultObj['Plate']['height']
- fillet_thickness = resultObj['Weld']['thickness']
- plate_width = resultObj['Plate']['width']
- plate_thick = uiObj['Plate']['Thickness (mm)']
- ##### BEAM PARAMETERS #####
- beam_D = int(dictbeamdata[QString("D")])
- beam_B = int(dictbeamdata[QString("B")])
- beam_tw = float(dictbeamdata[QString("tw")])
- beam_T = float(dictbeamdata[QString("T")])
- beam_alpha = float(dictbeamdata[QString("FlangeSlope")])
- beam_R1 = float(dictbeamdata[QString("R1")])
- beam_R2 = float(dictbeamdata[QString("R2")])
- beam_length = 500.0 # This parameter as per view of 3D cad model
-
- #beam = ISection(B = 140, T = 16,D = 400,t = 8.9, R1 = 14, R2 = 7, alpha = 98,length = 500)
- beam = ISection(B = beam_B, T = beam_T,D = beam_D,t = beam_tw,
- R1 = beam_R1, R2 = beam_R2, alpha = beam_alpha,
- length = beam_length)
-
- ##### COLUMN PARAMETERS ######
- dictcoldata = self.fetchColumnPara()
-
- column_D = int(dictcoldata[QString("D")])
- column_B = int(dictcoldata[QString("B")])
- column_tw = float(dictcoldata[QString("tw")])
- column_T = float(dictcoldata[QString("T")])
- column_alpha = float(dictcoldata[QString("FlangeSlope")])
- column_R1 = float(dictcoldata[QString("R1")])
- column_R2 = float(dictcoldata[QString("R2")])
-
- #column = ISection(B = 83, T = 14.1, D = 250, t = 11, R1 = 12, R2 = 3.2, alpha = 98, length = 1000)
- column = ISection(B = column_B, T = column_T, D = column_D,
- t = column_tw, R1 = column_R1, R2 = column_R2, alpha = column_alpha, length = 1000)
-
- #### WELD,PLATE,BOLT AND NUT PARAMETERS #####
-
- fillet_length = resultObj['Plate']['height']
- fillet_thickness = resultObj['Weld']['thickness']
- plate_width = resultObj['Plate']['width']
- plate_thick = uiObj['Plate']['Thickness (mm)']
- bolt_dia = uiObj["Bolt"]["Diameter (mm)"]
- bolt_r = bolt_dia/2
- bolt_R = bolt_r + 7
- nut_R = bolt_R
- bolt_T = 10.0 # minimum bolt thickness As per Indian Standard
- bolt_Ht = 50.0 # minimum bolt length as per Indian Standard
- nut_T = 12.0 # minimum nut thickness As per Indian Standard
- nut_Ht = 12.2 #
-
- #plate = Plate(L= 300,W =100, T = 10)
- plate = Plate(L= fillet_length,W =plate_width, T = plate_thick)
-
- #Fweld1 = FilletWeld(L= 300,b = 6, h = 6)
- Fweld1 = FilletWeld(L= fillet_length,b = fillet_thickness, h = fillet_thickness)
-
- #bolt = Bolt(R = bolt_R,T = bolt_T, H = 38.0, r = 4.0 )
- bolt = Bolt(R = bolt_R,T = bolt_T, H = bolt_Ht, r = bolt_r )
-
- #nut =Nut(R = bolt_R, T = 10.0, H = 11, innerR1 = 4.0, outerR2 = 8.3)
- nut = Nut(R = bolt_R, T = nut_T, H = nut_Ht, innerR1 = bolt_r)
-
- gap = beam_tw + plate_thick+ nut_T
-
- nutBoltArray = NutBoltArray(resultObj,nut,bolt,gap)
-
- colflangeconn = ColFlangeBeamWeb(column,beam,Fweld1,plate,nutBoltArray)
- colflangeconn.create_3dmodel()
- return colflangeconn
-
-
- def call_3DModel(self,flag):
- self.ui.btnSvgSave.setEnabled(True)
- if self.ui.btn3D.isEnabled():
- 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(0)
-
- if flag == True:
- if self.ui.comboConnLoc.currentText()== "Column web-Beam web":
- #self.create3DColWebBeamWeb()
- self.connectivity = self.create3DColWebBeamWeb()
- self.fuse_model = None
- else:
- self.ui.mytabWidget.setCurrentIndex(0)
- self.connectivity = self.create3DColFlangeBeamWeb()
- self.fuse_model = None
-
- self.display3Dmodel("Model")
- # beamOrigin = self.connectivity.beam.secOrigin + self.connectivity.beam.t/2 * (-self.connectivity.beam.uDir)
- # gpBeamOrigin = getGpPt(beamOrigin)
- # my_sphere2 = BRepPrimAPI_MakeSphere(gpBeamOrigin,1).Shape()
- # self.display.DisplayShape(my_sphere2,color = 'red',update = True)
- # beamOrigin = self.connectivity.beam.secOrigin
- # gpBeamOrigin = getGpPt(beamOrigin)
- # my_sphere2 = BRepPrimAPI_MakeSphere(gpBeamOrigin,1).Shape()
- # self.display.DisplayShape(my_sphere2,color = 'blue',update = True)
- # plateOrigin = (self.connectivity.plate.secOrigin + self.connectivity.plate.T/2.0 *(self.connectivity.plate.uDir)+ self.connectivity.weldLeft.L/2.0 * (self.connectivity.plate.vDir) + self.connectivity.plate.T * (-self.connectivity.weldLeft.uDir))
- # gpPntplateOrigin= getGpPt(plateOrigin)
- # my_sphere = BRepPrimAPI_MakeSphere(gpPntplateOrigin,2).Shape()
- # self.display.DisplayShape(my_sphere,update=True)
-
- else:
- self.display.EraseAll()
- self.display.DisplayMessage(gp_Pnt(1000,0,400),"Sorry, can not create 3D model",height = 23.0)
-
- def call_3DBeam(self):
- '''
- Creating and displaying 3D Beam
- '''
- 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("Beam")
-
- def call_3DColumn(self):
- '''
- '''
- 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( "Column")
-
- def call_3DFinplate(self):
- '''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( "Finplate")
-
-
- def design_btnclicked(self):
- '''
- '''
- self.ui.outputDock.setFixedSize(310,710)
- self.enableViewButtons()
-
- #self.set_designlogger()
- # Getting User Inputs.
- uiObj = self.getuser_inputs()
-
- # FinPlate Design Calculations.
- resultObj = finConn(uiObj)
-
- # Displaying Design Calculations To Output Window
- self.display_output(resultObj)
-
- # Displaying Messages related to FinPlate Design.
- self.displaylog_totextedit()
-
- # Displaying 3D Cad model
- status = resultObj['Bolt']['status']
- self.call_3DModel(status)
-
-
- def create2Dcad(self,connectivity):
- ''' Returns the fuse model of finplate
- '''
- cadlist = self.connectivity.get_models()
- final_model = cadlist[0]
- for model in cadlist[1:]:
- final_model = BRepAlgoAPI_Fuse(model,final_model).Shape()
- return final_model
-
- # Export to IGS,STEP,STL,BREP
- def save3DcadImages(self):
- if self.connectivity == None:
- self.connectivity = self.create3DColWebBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- shape = self.fuse_model
-
- files_types = "IGS (*.igs);;STEP (*.stp);;STL (*.stl);;BREP(*.brep)"
- fileName = QtGui.QFileDialog.getSaveFileName(self, 'Export', "/home/deepa/Cadfiles/untitled.igs", files_types )
-
- fName = str(fileName)
- file_extension = fName.split(".")[-1]
-
- if file_extension == 'igs':
- IGESControl.IGESControl_Controller().Init()
- iges_writer = IGESControl.IGESControl_Writer()
- iges_writer.AddShape(shape)
- iges_writer.Write(fName)
-
- elif file_extension == 'brep':
-
- BRepTools.breptools.Write(shape, fName)
-
- elif file_extension == 'stp':
- # initialize the STEP exporter
- step_writer = STEPControl_Writer()
- Interface_Static_SetCVal("write.step.schema", "AP203")
-
- # transfer shapes and write file
- step_writer.Transfer(shape, STEPControl_AsIs)
- status = step_writer.Write(fName)
-
- assert(status == IFSelect_RetDone)
-
- else:
- stl_writer = StlAPI_Writer()
- stl_writer.SetASCIIMode(True)
- stl_writer.Write(shape,fName)
-
- QtGui.QMessageBox.about(self,'Information',"File saved")
-
-
- def display2DModelOriginal(self, final_model, viewName):
-
- self.display,_ = self.init_display()
- 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()
- #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()
-
- # Get Prs3d_drawer from previous context
- drawer_handle = ais_context.DefaultDrawer()
- drawer = drawer_handle.GetObject()
- drawer.EnableDrawHiddenLine()
-
- hla = drawer.HiddenLineAspect().GetObject()
- hla.SetWidth(2)
- hla.SetColor(Quantity_NOC_RED)
-
- # increase line width in the current viewer
- # This is only viewed in the HLR mode (hit 'e' key for instance)
-
- line_aspect = drawer.SeenLineAspect().GetObject()
- line_aspect.SetWidth(2.8)
- line_aspect.SetColor(Quantity_NOC_BLUE1)
-
- self.display.DisplayShape(final_model, update = False)
-
- if (viewName == "Front"):
- self.display.View_Front()
- elif (viewName == "Top"):
- self.display.View_Top()
- elif (viewName == "Right"):
- self.display.View_Right()
- elif (viewName == "Left"):
- self.display.View_Left()
- else:
- pass
-
- #start_display()
-
- def call_Frontview(self):
-
- '''Displays front view of 2Dmodel
- '''
- self.ui.btnSvgSave.setEnabled(False)
- self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked)
- if self.ui.comboConnLoc.currentText()== "Column web-Beam web":
- self.display.EraseAll()
- self.ui.mytabWidget.setCurrentIndex(1)
- if self.connectivity == None:
- self.connectivity = self.create3DColWebBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Front")
- else:
- self.display.EraseAll()
- self.ui.mytabWidget.setCurrentIndex(0)
- if self.connectivity == None:
- self.connectivity = self.create3DColFlangeBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Left")
-
- def call_Topview(self):
-
- '''Displays Top view of 2Dmodel
- '''
- self.ui.btnSvgSave.setEnabled(False)
- self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked)
-
- if self.ui.comboConnLoc.currentText()== "Column web-Beam web":
- self.display.EraseAll()
- self.ui.mytabWidget.setCurrentIndex(1)
-
- if self.connectivity == None:
- self.connectivity = self.create3DColWebBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Top")
- else:
- self.display.EraseAll()
- self.ui.mytabWidget.setCurrentIndex(0)
-
- if self.connectivity == None:
- self.connectivity = self.create3DColFlangeBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Top")
-
-
- def call_Sideview(self):
-
- '''Displays Side view of the 2Dmodel'
- '''
- self.ui.btnSvgSave.setEnabled(False)
- self.ui.chkBxBeam.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxCol.setChecked(QtCore.Qt.Unchecked)
- self.ui.chkBxFinplate.setChecked(QtCore.Qt.Unchecked)
-
- if self.ui.comboConnLoc.currentText()== "Column web-Beam web":
- self.ui.mytabWidget.setCurrentIndex(1)
-
- if self.connectivity == None:
- self.connectivity = self.create3DColWebBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Right")
- else:
- self.ui.mytabWidget.setCurrentIndex(0)
-
- if self.connectivity == None:
- self.connectivity = self.create3DColFlangeBeamWeb()
- if self.fuse_model == None:
- self.fuse_model = self.create2Dcad(self.connectivity)
- self.display2DModel( self.fuse_model,"Front")
-
- def closeEvent(self, event):
- '''
- Closing finPlate window.
- '''
- uiInput = self.getuser_inputs()
- self.save_inputs(uiInput)
- reply = QtGui.QMessageBox.question(self, 'Message',
- "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
-
- if reply == QtGui.QMessageBox.Yes:
- self.closed.emit()
- event.accept()
- else:
- event.ignore()
-
-
-def set_osdaglogger():
-
- logger = logging.getLogger("osdag")
- logger.setLevel(logging.DEBUG)
-
- # create the logging file handler
- fh = logging.FileHandler("./Connections/Shear/Finplate/fin.log", mode="a")
-
- #,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)
-
-def launchFinPlateController(osdagMainWindow):
- set_osdaglogger()
- rawLogger = logging.getLogger("raw")
- rawLogger.setLevel(logging.INFO)
- fh = logging.FileHandler("./Connections/Shear/Finplate/fin.log", mode="w")
- formatter = logging.Formatter('''%(message)s''')
- fh.setFormatter(formatter)
- rawLogger.addHandler(fh)
- rawLogger.info('''<link rel="stylesheet" type="text/css" href="./Connections/Shear/Finplate/log.css"/>''')
-
- #app = QtGui.QApplication(sys.argv)
- window = MainController()
- osdagMainWindow.hide()
-
- window.show()
- window.closed.connect(osdagMainWindow.show)
-
- #sys.exit(app.exec_())
-
-
-
-if __name__ == '__main__':
- #launchFinPlateController(None)
-
- # linking css to log file to display colour logs.
- set_osdaglogger()
- rawLogger = logging.getLogger("raw")
- rawLogger.setLevel(logging.INFO)
- fh = logging.FileHandler("fin.log", mode="w")
- formatter = logging.Formatter('''%(message)s''')
- fh.setFormatter(formatter)
- rawLogger.addHandler(fh)
- rawLogger.info('''<link rel="stylesheet" type="text/css" href="log.css"/>''')
-
- app = QtGui.QApplication(sys.argv)
- window = MainController()
- window.show()
- sys.exit(app.exec_())
-
-
-
-
-