summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Connections/Shear/Finplate/fin.log22
-rw-r--r--Connections/Shear/Finplate/finPlate.ui2
-rw-r--r--Connections/Shear/Finplate/finPlateMain.py59
-rw-r--r--Connections/Shear/Finplate/finplate_calc1.py67
-rw-r--r--Connections/Shear/Finplate/nutBoltPlacement.py4
-rw-r--r--Connections/Shear/Finplate/saveINPUT.txt2
-rw-r--r--Connections/Shear/Finplate/ui_finPlate.py4
7 files changed, 106 insertions, 54 deletions
diff --git a/Connections/Shear/Finplate/fin.log b/Connections/Shear/Finplate/fin.log
index 82081b6..a45941d 100644
--- a/Connections/Shear/Finplate/fin.log
+++ b/Connections/Shear/Finplate/fin.log
@@ -1,13 +1,31 @@
<link rel="stylesheet" type="text/css" href="log.css"/>
<div class="LOG INFO">
- <span class="DATE">Thu, 11 Jun 2015 23:54:20</span>
+ <span class="DATE">Fri, 12 Jun 2015 18:51:34</span>
<span class="LEVEL">INFO</span>
<span class="MSG">: Overall finplate connection design is safe</span>
</div>
<div class="LOG INFO">
- <span class="DATE">Thu, 11 Jun 2015 23:54:20</span>
+ <span class="DATE">Fri, 12 Jun 2015 18:51:34</span>
+ <span class="LEVEL">INFO</span>
+ <span class="MSG">: Overall finplate connection design is safe</span>
+ </div>
+
+ <div class="LOG INFO">
+ <span class="DATE">Fri, 12 Jun 2015 18:54:45</span>
+ <span class="LEVEL">INFO</span>
+ <span class="MSG">: Overall finplate connection design is safe</span>
+ </div>
+
+ <div class="LOG INFO">
+ <span class="DATE">Fri, 12 Jun 2015 18:56:23</span>
+ <span class="LEVEL">INFO</span>
+ <span class="MSG">: Overall finplate connection design is safe</span>
+ </div>
+
+ <div class="LOG INFO">
+ <span class="DATE">Fri, 12 Jun 2015 18:56:23</span>
<span class="LEVEL">INFO</span>
<span class="MSG">: Overall finplate connection design is safe</span>
</div>
diff --git a/Connections/Shear/Finplate/finPlate.ui b/Connections/Shear/Finplate/finPlate.ui
index 07555b9..02ceab0 100644
--- a/Connections/Shear/Finplate/finPlate.ui
+++ b/Connections/Shear/Finplate/finPlate.ui
@@ -171,7 +171,7 @@
<enum>Qt::NoFocus</enum>
</property>
<property name="toolTip">
- <string>Save Image</string>
+ <string>Save 3D Images</string>
</property>
<property name="text">
<string>...</string>
diff --git a/Connections/Shear/Finplate/finPlateMain.py b/Connections/Shear/Finplate/finPlateMain.py
index a8e0371..e36c791 100644
--- a/Connections/Shear/Finplate/finPlateMain.py
+++ b/Connections/Shear/Finplate/finPlateMain.py
@@ -110,6 +110,8 @@ class MainController(QtGui.QMainWindow):
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.actionSave_3D_model_as.triggered.connect(self.save3DcadImages)
+ self.ui.actionSave_current_2D_image_as.triggered.connect(self.save2DcadImages)
self.ui.combo_Beam.addItems(get_beamcombolist())
@@ -133,7 +135,7 @@ class MainController(QtGui.QMainWindow):
# Initialising the qtviewer
self.display,_ = self.init_display(backend_str="pyqt4")
- self.ui.btnSvgSave.clicked.connect(self.save3DtoIGES)
+ self.ui.btnSvgSave.clicked.connect(self.save3DcadImages)
#self.ui.btnSvgSave.clicked.connect(lambda:self.saveTopng(self.display))
self.connectivity = None
@@ -157,7 +159,18 @@ class MainController(QtGui.QMainWindow):
def callZoomin(self):
self.display.DynamicZoom()
+
+ 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
@@ -199,8 +212,7 @@ class MainController(QtGui.QMainWindow):
self.ui.comboPlateThick_2.addItem(str(i))
self.ui.comboPlateThick_2.setCurrentIndex(0)
- def saveTopng(self,display):
- display.ExportToImage('/home/Pictures/cad.png')
+
def retrieve_prevstate(self):
uiObj = self.get_prevstate()
@@ -370,6 +382,7 @@ class MainController(QtGui.QMainWindow):
'''(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()))
@@ -381,8 +394,9 @@ class MainController(QtGui.QMainWindow):
QtGui.QApplication.restoreOverrideCursor()
#self.setCurrentFile(fileName);
+
QtGui.QMessageBox.about(self,'Information',"File saved")
- return True
+
def save_yaml(self,outObj,uiObj):
@@ -452,6 +466,9 @@ class MainController(QtGui.QMainWindow):
self.ui.txtWeldStrng.clear()
self.ui.textEdit.clear()
+ #------ Erase Display
+ self.display.EraseAll()
+
def dockbtn_clicked(self,widget):
'''(QWidget) -> NoneType
@@ -871,16 +888,14 @@ class MainController(QtGui.QMainWindow):
def create2Dcad(self,connectivity):
cadlist = self.connectivity.get_models()
- print len(cadlist)
final_model = cadlist[0]
#model = cadlist[1]
for model in cadlist[1:]:
final_model = BRepAlgoAPI_Fuse(model,final_model).Shape()
return final_model
-
- # Export to IGES
- def save3DtoIGES(self):
+ # Export to IGS,STEP,STL,BREP
+ def save3DcadImages(self):
if self.connectivity == None:
self.connectivity = self.create3DColWebBeamWeb()
if self.fuse_model == None:
@@ -888,7 +903,8 @@ class MainController(QtGui.QMainWindow):
shape = self.fuse_model
files_types = "IGS (*.igs);;STEP (*.stp);;STL (*.stl);;BREP(*.brep)"
- fileName = QtGui.QFileDialog.getSaveFileName(self, 'Export', "/home/Cadfiles/untitled.igs", files_types )
+ fileName = QtGui.QFileDialog.getSaveFileName(self, 'Export', "/home/deepa/Cadfiles/untitled.igs", files_types )
+
fName = str(fileName)
file_extension = fName.split(".")[-1]
@@ -917,11 +933,13 @@ class MainController(QtGui.QMainWindow):
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.ResetView()
self.display.EraseAll()
#self.display.SetModeWireFrame()
@@ -987,6 +1005,7 @@ class MainController(QtGui.QMainWindow):
'''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)
@@ -1001,12 +1020,11 @@ class MainController(QtGui.QMainWindow):
self.fuse_model = self.create2Dcad(self.connectivity)
self.display2DModel( self.fuse_model,"Front")
-
-
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)
@@ -1014,20 +1032,29 @@ class MainController(QtGui.QMainWindow):
self.display.EraseAll()
self.ui.mytabWidget.setCurrentIndex(1)
- final_model = self.create2Dcad()
- self.display2DModel(final_model, "Top")
+ 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")
+
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)
self.ui.mytabWidget.setCurrentIndex(1)
- final_model = self.create2Dcad()
- self.display2DModel(final_model, "Right")
+
+ 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")
def closeEvent(self, event):
'''
diff --git a/Connections/Shear/Finplate/finplate_calc1.py b/Connections/Shear/Finplate/finplate_calc1.py
index 5f934c8..c7a776c 100644
--- a/Connections/Shear/Finplate/finplate_calc1.py
+++ b/Connections/Shear/Finplate/finplate_calc1.py
@@ -153,17 +153,17 @@ def finConn(uiObj):
elif min_plate_height > max_plate_height:
logger.error(": Minimum required plate height is more than the clear depth of the beam")
- logger.warning(": Minimum plate height required is %2.2f mm " % (min_plate_height))
+ logger.warning(": Plate height required should be more than %2.2f mm " % (min_plate_height))
logger.warning(": Maximum plate height allowed is %2.2f mm " % (max_plate_height))
logger.info(": Increase the plate thickness")
#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:
+ elif min_plate_height >= web_plate_l:
logger.error(": Plate height provided is less than the minimum required ")
- logger.warning(": Minimum plate height required is %2.2f mm " % (min_plate_height))
+ logger.warning(": Plate height required should be more than %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"
@@ -282,18 +282,24 @@ def finConn(uiObj):
# Design of plate:
# Width input (optional) and validation
- if bolt_line == 1:
- web_plate_w_req = 2 * min_edge_dist
- if bolt_line == 2:
- web_plate_w_req = gauge + 2 * min_edge_dist
+ if web_plate_w != 0:
+ if bolt_line == 1:
+ web_plate_w_req = 2 * min_edge_dist
+ end_dist = web_plate_w/2
+ if bolt_line == 2:
+ web_plate_w_req = gauge + 2 * min_edge_dist
+ end_dist = (web_plate_w - gauge)/2
if web_plate_w == 0:
if bolt_line == 1:
web_plate_w_req = 2 * min_edge_dist;
web_plate_w = web_plate_w_req
+ end_dist = web_plate_w /2
if bolt_line == 2:
web_plate_w_req = gauge + 2 * min_edge_dist;
web_plate_w = web_plate_w_req;
+ end_dist = (web_plate_w - gauge)/2
+
# if web_plate_w < web_plate_w_req:
# web_plate_w = web_plate_w_req;
@@ -376,6 +382,7 @@ def finConn(uiObj):
pass
else:
logger.error(": Weld thickness is not sufficient")
+ logger.warning(": Minimum weld thickness is required is %2.2f mm " % (weld_t_req))
# End of calculation
outputObj = {}
@@ -389,9 +396,9 @@ def finConn(uiObj):
outputObj['Bolt']['numofrow'] = bolts_one_line
outputObj['Bolt']['numofcol'] = bolt_line
outputObj['Bolt']['pitch'] = pitch
- outputObj['Bolt']['enddist'] = min_edge_dist
- outputObj['Bolt']['edge'] = min_edge_dist
- outputObj['Bolt']['gauge'] = gauge
+ outputObj['Bolt']['enddist'] = float(end_dist)
+ outputObj['Bolt']['edge'] = float(min_edge_dist)
+ outputObj['Bolt']['gauge'] = float(gauge)
outputObj['Weld'] = {}
outputObj['Weld']['thickness'] = weld_t_req
@@ -410,31 +417,35 @@ def finConn(uiObj):
#return outputObj
if web_plate_l == (min_plate_height+10) or web_plate_l == ((max_plate_height-10)//10*10):
- if bolt_line==2:
- if pitch < min_pitch:
+ if bolt_line==1:
+ 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 or weld_t_req > weld_t:
+ for k in outputObj.keys():
+ for key in outputObj[k].keys():
+ outputObj[k][key] = ""
+ elif moment_capacity < moment_demand:
for k in outputObj.keys():
for key in outputObj[k].keys():
outputObj[k][key] = ""
- else:
- return outputObj
- elif web_plate_l == (min_plate_height+10) or web_plate_l == ((max_plate_height-10)//10*10):
- 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].keys():
- outputObj[k][key] = ""
- elif moment_capacity < moment_demand:
- for k in outputObj.keys():
- for key in outputObj[k].keys():
- outputObj[k][key] = ""
- elif bolt_line==2:
+ if bolt_line==2:
if pitch < min_pitch:
for k in outputObj.keys():
for key in outputObj[k].keys():
outputObj[k][key] = ""
-
+ elif 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 or weld_t_req > weld_t:
+ for k in outputObj.keys():
+ for key in outputObj[k].keys():
+ outputObj[k][key] = ""
+ elif moment_capacity < moment_demand:
+ for k in outputObj.keys():
+ for key in outputObj[k].keys():
+ outputObj[k][key] = ""
+ else:
+
+ pass
+
else:
- 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:
+ 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 or weld_t_req > weld_t:
for k in outputObj.keys():
for key in outputObj[k].keys():
outputObj[k][key] = ""
@@ -448,10 +459,6 @@ def finConn(uiObj):
for key in outputObj[k].keys():
outputObj[k][key] = ""
-# 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:
-# outputObj = {}
-#
-# elif moment_capacity < moment_demand:
# outputObj = {}
if outputObj['Bolt']['status'] == True:
diff --git a/Connections/Shear/Finplate/nutBoltPlacement.py b/Connections/Shear/Finplate/nutBoltPlacement.py
index 627f9c9..5956037 100644
--- a/Connections/Shear/Finplate/nutBoltPlacement.py
+++ b/Connections/Shear/Finplate/nutBoltPlacement.py
@@ -54,9 +54,9 @@ class NutBoltArray():
for rw in range(self.row):
for col in range(self.col):
pos = self.origin
- pos = pos + self.edge * self.gaugeDir
+ pos = pos + self.end * self.gaugeDir
pos = pos + col * self.gauge * self.gaugeDir
- pos = pos + self.end * self.pitchDir
+ pos = pos + self.edge * self.pitchDir
pos = pos + rw * self.pitch * self.pitchDir
self.positions.append(pos)
diff --git a/Connections/Shear/Finplate/saveINPUT.txt b/Connections/Shear/Finplate/saveINPUT.txt
index 478e639..54ca750 100644
--- a/Connections/Shear/Finplate/saveINPUT.txt
+++ b/Connections/Shear/Finplate/saveINPUT.txt
@@ -56,5 +56,5 @@ S'HSFG'
p26
sS'diameter(mm)'
p27
-I20
+I12
ss. \ No newline at end of file
diff --git a/Connections/Shear/Finplate/ui_finPlate.py b/Connections/Shear/Finplate/ui_finPlate.py
index cb41631..5f85414 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: Thu Jun 11 17:13:02 2015
+# Created: Fri Jun 12 17:55:33 2015
# by: PyQt4 UI code generator 4.10.4
#
# WARNING! All changes made in this file will be lost!
@@ -1484,7 +1484,7 @@ class Ui_MainWindow(object):
self.btnZmOut.setText(_translate("MainWindow", "...", None))
self.btnZmIn.setToolTip(_translate("MainWindow", "Zoom Out", None))
self.btnZmIn.setText(_translate("MainWindow", "...", None))
- self.btnSvgSave.setToolTip(_translate("MainWindow", "Save Image", None))
+ self.btnSvgSave.setToolTip(_translate("MainWindow", "Save 3D Images", None))
self.btnSvgSave.setText(_translate("MainWindow", "...", None))
self.btnTotatAcw.setToolTip(_translate("MainWindow", "Rotate Left", None))
self.btnTotatAcw.setText(_translate("MainWindow", "...", None))