개정판 7bd122a8
issue #1054 스트림 데이타 입력 : Nominal Diameter 사용자 입력 가능하도록 수정 (36" 이상 입력 가능 하도록)
- 36" 이하는 DB에 정의되어있는 값들만 허용
Change-Id: Iacb8461147e04c70d5f88f9db3ce6da2ddeaa64c
HYTOS/HYTOS/AppDocData.py | ||
---|---|---|
595 | 595 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
596 | 596 |
return res |
597 | 597 |
|
598 |
def get_nominal_diameter_info(self, nominal_diameter, unit): |
|
599 |
res = [] |
|
600 |
|
|
601 |
# Creates or opens a file called mydb with a SQLite3 DB |
|
602 |
conn = sqlite3.connect(self.activeDrawing.path) |
|
603 |
conn.execute('PRAGMA foreign_keys = ON') |
|
604 |
with conn: |
|
605 |
try: |
|
606 |
# Get a cursor object |
|
607 |
cursor = conn.cursor() |
|
608 |
|
|
609 |
if unit == 'mm': |
|
610 |
sql = "select UID, Milimeter, Inch, Friction_Factor from NominalDiameter where Milimeter = ?" |
|
611 |
else: |
|
612 |
sql = "select UID, Milimeter, Inch, Friction_Factor from NominalDiameter where Inch = ?" |
|
613 |
|
|
614 |
param = (nominal_diameter,) |
|
615 |
cursor.execute(sql, param) |
|
616 |
rows = cursor.fetchall() |
|
617 |
for row in rows: |
|
618 |
res.append((row[0], row[1], row[2], row[3])) |
|
619 |
# Catch the exception |
|
620 |
except Exception as ex: |
|
621 |
from App import App |
|
622 |
|
|
623 |
# Roll back any change if something goes wrong |
|
624 |
conn.rollback() |
|
625 |
|
|
626 |
message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, |
|
627 |
sys.exc_info()[-1].tb_lineno) |
|
628 |
App.mainWnd().addMessage.emit(MessageType.Error, message) |
|
629 |
return res |
|
630 |
|
|
598 | 631 |
def getNominalDiameterByUid(self, uid): |
599 | 632 |
res = [] |
600 | 633 |
|
HYTOS/HYTOS/FittingsDialog.py | ||
---|---|---|
1881 | 1881 |
if type == 'Standard': |
1882 | 1882 |
self.ui.comboBox_2K_Pipe.addItem(name, fitting) |
1883 | 1883 |
|
1884 |
def show_dialog(self, nominal_diameter_uid, current_tab_index):
|
|
1884 |
def show_dialog(self, nominal_diameter, current_tab_index): |
|
1885 | 1885 |
|
1886 | 1886 |
self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint) |
1887 |
self.set_nominal_diameter_info(nominal_diameter_uid)
|
|
1887 |
self.set_nominal_diameter_info(nominal_diameter) |
|
1888 | 1888 |
if current_tab_index: |
1889 | 1889 |
self.ui.tabWidget.setCurrentIndex(int(current_tab_index)) |
1890 | 1890 |
self.ui.lineEdit_CraneK_Main_Size.setText(str(self.nps)) |
... | ... | |
1894 | 1894 |
|
1895 | 1895 |
return self.isAccepted, self.fittings_length, self.total_k, self.current_tab_index |
1896 | 1896 |
|
1897 |
def set_nominal_diameter_info(self, nominal_diameter_uid):
|
|
1897 |
def set_nominal_diameter_info(self, nominal_diameter): |
|
1898 | 1898 |
try: |
1899 | 1899 |
app_doc_data = AppDocData.instance() |
1900 |
nominal_diameter_list = app_doc_data.getNominalDiameterByUid(nominal_diameter_uid) |
|
1901 |
for nominalDiameter in nominal_diameter_list: |
|
1902 |
if self.pipe_diameter_unit == 'mm': |
|
1903 |
self.nps = nominalDiameter[1] |
|
1904 |
else: |
|
1905 |
self.nps = nominalDiameter[2] |
|
1900 |
# nominal_diameter_list = app_doc_data.getNominalDiameterByUid(nominal_diameter) |
|
1901 |
nominal_diameter_list = app_doc_data.get_nominal_diameter_info(nominal_diameter, self.pipe_diameter_unit) |
|
1902 |
if len(nominal_diameter_list) > 0: |
|
1903 |
for nominalDiameter in nominal_diameter_list: |
|
1904 |
if self.pipe_diameter_unit == 'mm': |
|
1905 |
self.nps = nominalDiameter[1] |
|
1906 |
else: |
|
1907 |
self.nps = nominalDiameter[2] |
|
1908 |
|
|
1909 |
self.selected_dia_in = nominalDiameter[2] |
|
1910 |
self.friction_factor = nominalDiameter[3] |
|
1911 |
else: |
|
1912 |
# DB에 정의 되어있지 않은 Nominal Diameter인 경우 |
|
1913 |
if (self.pipe_diameter_unit.upper() == 'MM' and float(nominal_diameter) > 900) or (self.pipe_diameter_unit.upper() == 'IN' and float(nominal_diameter) > 36): |
|
1914 |
# 900mm 보다 큰 값들은 900mm 와 동일하게 friction factor 처리 |
|
1915 |
# 36inch 보다 큰 값들은 36inch 와 동일하게 friction factor 처리 |
|
1916 |
if self.pipe_diameter_unit == 'mm': |
|
1917 |
self.nps = nominal_diameter |
|
1918 |
else: |
|
1919 |
self.nps = nominal_diameter |
|
1906 | 1920 |
|
1907 |
self.selected_dia_in = nominalDiameter[2]
|
|
1908 |
self.friction_factor = nominalDiameter[3]
|
|
1921 |
self.selected_dia_in = 36
|
|
1922 |
self.friction_factor = 0.012
|
|
1909 | 1923 |
except Exception as ex: |
1910 | 1924 |
from App import App |
1911 | 1925 |
from AppDocData import MessageType |
HYTOS/HYTOS/StreamDataDialog.py | ||
---|---|---|
120 | 120 |
QtGui.QDoubleValidator(self.ui.lineEdit_Mixed_Viscosity_Liquid)) |
121 | 121 |
self.ui.pushButton_Roughness.clicked.connect(self.roughness_clicked_event) |
122 | 122 |
self.ui.pushButton_Fitting.clicked.connect(self.show_fitting_dialog) |
123 |
self.ui.comboBox_Nominal_Pipe_Size.currentIndexChanged.connect(self.getInsideDiameter) |
|
124 |
self.ui.comboBox_Schedule_No.currentIndexChanged.connect(self.getInsideDiameter) |
|
123 |
self.ui.comboBox_Nominal_Pipe_Size.currentIndexChanged.connect(self.get_inside_diameter) |
|
124 |
self.ui.comboBox_Nominal_Pipe_Size.currentTextChanged.connect(self.get_inside_diameter) |
|
125 |
self.ui.comboBox_Schedule_No.currentIndexChanged.connect(self.get_inside_diameter) |
|
125 | 126 |
self.ui.comboBox_PhaseType.currentIndexChanged.connect(self.on_change_phase_type) |
126 | 127 |
self.ui.pushButton_Line_Sizing.clicked.connect(self.show_line_sizing_dialog) |
127 | 128 |
self.ui.pushButton_Diameter_Estimation.clicked.connect(self.show_diameter_estimation_dialog) |
128 |
self.ui.pushButton_Copy_InsideDiameter.clicked.connect(self.copy_inside_diameter) |
|
129 | 129 |
self.ui.pushButton_Add_GeometryData_Mixed.clicked.connect(self.show_geometry_data_dialog) |
130 | 130 |
self.ui.pushButton_Copy_Stream.clicked.connect(self.show_copy_stream_dialog) |
131 | 131 |
self.ui.pushButton_Calculation.clicked.connect(self.mixed_type_calculation) |
... | ... | |
448 | 448 |
message = None |
449 | 449 |
|
450 | 450 |
# Nominal Diameter |
451 |
nominal_diameter_uid = self.ui.comboBox_Nominal_Pipe_Size.currentData()
|
|
451 |
nominal_diameter = self.ui.comboBox_Nominal_Pipe_Size.currentText()
|
|
452 | 452 |
flowrate_mass = self.ui.lineEdit_Flowrate_Mass_Vapor.text() |
453 | 453 |
viscosity = self.ui.lineEdit_Viscosity_Vapor.text() |
454 | 454 |
molecular_weight = self.ui.lineEdit_Molecular_Weight.text() |
... | ... | |
456 | 456 |
compress_factor = self.ui.lineEdit_Compress_Factor.text() |
457 | 457 |
inside_diameter = self.ui.lineEdit_Inside_Pipe_Size.text() |
458 | 458 |
|
459 |
if nominal_diameter_uid is None:
|
|
459 |
if nominal_diameter is None or nominal_diameter == '':
|
|
460 | 460 |
message = 'Select Nominal Diameter' |
461 | 461 |
elif flowrate_mass is None or flowrate_mass == '': |
462 | 462 |
message = 'Input Flowrate' |
... | ... | |
469 | 469 |
elif compress_factor is None or compress_factor == '': |
470 | 470 |
message = 'Input Z factor' |
471 | 471 |
elif inside_diameter is None or inside_diameter == '': |
472 |
message = 'Select Schedule No.'
|
|
472 |
message = 'Input Data Error [I.D]'
|
|
473 | 473 |
|
474 | 474 |
if message: |
475 | 475 |
msg = QMessageBox(self) |
... | ... | |
485 | 485 |
def validation_check_liquid(self): |
486 | 486 |
message = None |
487 | 487 |
|
488 |
nominal_diameter_uid = self.ui.comboBox_Nominal_Pipe_Size.currentData()
|
|
488 |
nominal_diameter = self.ui.comboBox_Nominal_Pipe_Size.currentText()
|
|
489 | 489 |
flowrate_mass = self.ui.lineEdit_Flowrate_Mass_Liquid.text() |
490 | 490 |
flowrate_volume = self.ui.lineEdit_Flowrate_Volume.text() |
491 | 491 |
density = self.ui.lineEdit_Density.text() |
492 | 492 |
viscosity = self.ui.lineEdit_Viscosity_Liquid.text() |
493 | 493 |
inside_diameter = self.ui.lineEdit_Inside_Pipe_Size.text() |
494 | 494 |
|
495 |
if nominal_diameter_uid is None:
|
|
495 |
if nominal_diameter is None or nominal_diameter == '':
|
|
496 | 496 |
message = 'Select Nominal Diameter' |
497 | 497 |
elif (flowrate_mass is None or flowrate_mass == '') and (flowrate_volume is None or flowrate_volume == ''): |
498 | 498 |
message = 'Input Flowrate' |
... | ... | |
501 | 501 |
elif viscosity is None or viscosity == '': |
502 | 502 |
message = 'Input Viscosity' |
503 | 503 |
elif inside_diameter is None or inside_diameter == '': |
504 |
message = 'Select Schedule No.'
|
|
504 |
message = 'Input Data Error [I.D]'
|
|
505 | 505 |
|
506 | 506 |
if message: |
507 | 507 |
msg = QMessageBox(self) |
... | ... | |
584 | 584 |
if isAccepted == True: |
585 | 585 |
self.load_hmb(components_uid) |
586 | 586 |
|
587 |
def copy_inside_diameter(self): |
|
588 |
nominal_pipe_size = self.ui.comboBox_Nominal_Pipe_Size.currentText() |
|
589 |
if is_not_blank(nominal_pipe_size): |
|
590 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(nominal_pipe_size)) |
|
591 |
|
|
592 | 587 |
def mixed_type_calculation(self): |
593 | 588 |
from Calculation import Calculation_Mixed |
594 | 589 |
try: |
... | ... | |
856 | 851 |
if not self.validation_check_liquid(): |
857 | 852 |
return |
858 | 853 |
current_tab_index = self.ui.label_current_tab_index.text() if self.ui.label_current_tab_index else None |
859 |
nominal_diameter_uid = self.ui.comboBox_Nominal_Pipe_Size.currentData()
|
|
854 |
nominal_diameter = self.ui.comboBox_Nominal_Pipe_Size.currentText()
|
|
860 | 855 |
dialog = QFittingsDialog(self.item) |
861 |
(isAccepted, fittings_length, total_k, current_tab_index) = dialog.show_dialog(nominal_diameter_uid,
|
|
856 |
(isAccepted, fittings_length, total_k, current_tab_index) = dialog.show_dialog(nominal_diameter, |
|
862 | 857 |
current_tab_index) |
863 | 858 |
if isAccepted: |
864 | 859 |
self.ui.label_current_tab_index.setText(str(current_tab_index)) |
... | ... | |
1220 | 1215 |
self.ui.pushButton_Diameter_Estimation.setVisible(False) |
1221 | 1216 |
self.ui.pushButton_Copy_Stream.setVisible(False) |
1222 | 1217 |
|
1223 |
def getInsideDiameter(self): |
|
1218 |
def get_nominal_diameter_uid(self, nominal_diameter, pipe_size_unit): |
|
1219 |
app_doc_data = AppDocData.instance() |
|
1220 |
nominal_diameter_list = app_doc_data.get_nominal_diameter_info(nominal_diameter, pipe_size_unit) |
|
1221 |
if len(nominal_diameter_list) != 1: |
|
1222 |
return None |
|
1223 |
else: |
|
1224 |
return nominal_diameter_list[0][0] |
|
1225 |
|
|
1226 |
def get_inside_diameter(self): |
|
1224 | 1227 |
from AppDocData import AppDocData |
1225 | 1228 |
|
1226 | 1229 |
self.ui.lineEdit_Inside_Pipe_Size.clear() |
1227 | 1230 |
|
1228 |
nominal_diameter_uid = self.ui.comboBox_Nominal_Pipe_Size.currentData() |
|
1229 |
schedule_uid = self.ui.comboBox_Schedule_No.currentData() |
|
1230 |
schedule_no = self.ui.comboBox_Schedule_No.currentText() |
|
1231 |
nominal_pipe_size_unit = self.ui.label_Nominal_Pipe_Size_Unit.text() |
|
1231 | 1232 |
|
1232 |
if schedule_no == 'User Sch.': |
|
1233 |
self.ui.lineEdit_Inside_Pipe_Size.setReadOnly(False) |
|
1233 |
nominal_diameter = self.ui.comboBox_Nominal_Pipe_Size.currentText() |
|
1234 |
if (nominal_pipe_size_unit.upper() == 'MM' and float(nominal_diameter) > 900) or ( |
|
1235 |
nominal_pipe_size_unit.upper() == 'IN' and float(nominal_diameter) > 36): |
|
1236 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(nominal_diameter)) |
|
1234 | 1237 |
else: |
1235 |
self.ui.lineEdit_Inside_Pipe_Size.setReadOnly(True) |
|
1236 |
if nominal_diameter_uid and schedule_uid: |
|
1237 |
inside_diameter = AppDocData.instance().getInsideDiameter(nominal_diameter_uid, schedule_uid) |
|
1238 |
if len(inside_diameter) > 0: |
|
1239 |
if self.ui.label_Inside_Pipe_Size_Unit.text() == 'mm': |
|
1240 |
if inside_diameter[0][1]: |
|
1241 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(inside_diameter[0][1])) |
|
1242 |
else: |
|
1243 |
if inside_diameter[0][2]: |
|
1244 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(inside_diameter[0][2])) |
|
1238 |
nominal_diameter_uid = self.get_nominal_diameter_uid(nominal_diameter, nominal_pipe_size_unit) |
|
1239 |
if nominal_diameter_uid is None: |
|
1240 |
self.ui.lineEdit_Inside_Pipe_Size.clear() |
|
1241 |
else: |
|
1242 |
schedule_uid = self.ui.comboBox_Schedule_No.currentData() |
|
1243 |
schedule_no = self.ui.comboBox_Schedule_No.currentText() |
|
1244 |
|
|
1245 |
if schedule_no == 'User Sch.': |
|
1246 |
self.ui.lineEdit_Inside_Pipe_Size.setReadOnly(False) |
|
1247 |
else: |
|
1248 |
self.ui.lineEdit_Inside_Pipe_Size.setReadOnly(True) |
|
1249 |
if nominal_diameter_uid and schedule_uid: |
|
1250 |
inside_diameter = AppDocData.instance().getInsideDiameter(nominal_diameter_uid, schedule_uid) |
|
1251 |
if len(inside_diameter) > 0: |
|
1252 |
if self.ui.label_Inside_Pipe_Size_Unit.text() == 'mm': |
|
1253 |
if inside_diameter[0][1]: |
|
1254 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(inside_diameter[0][1])) |
|
1255 |
else: |
|
1256 |
if inside_diameter[0][2]: |
|
1257 |
self.ui.lineEdit_Inside_Pipe_Size.setText(str(inside_diameter[0][2])) |
|
1245 | 1258 |
|
1246 | 1259 |
def init_nominal_diameter(self): |
1247 | 1260 |
from AppDocData import AppDocData |
HYTOS/HYTOS/StreamData_UI.py | ||
---|---|---|
56 | 56 |
font.setBold(False) |
57 | 57 |
font.setWeight(50) |
58 | 58 |
self.comboBox_Nominal_Pipe_Size.setFont(font) |
59 |
self.comboBox_Nominal_Pipe_Size.setEditable(False)
|
|
59 |
self.comboBox_Nominal_Pipe_Size.setEditable(True)
|
|
60 | 60 |
self.comboBox_Nominal_Pipe_Size.setObjectName("comboBox_Nominal_Pipe_Size") |
61 | 61 |
self.horizontalLayout_7.addWidget(self.comboBox_Nominal_Pipe_Size) |
62 | 62 |
self.label_Nominal_Pipe_Size_Unit = QtWidgets.QLabel(self.groupBox_GeometryData) |
... | ... | |
66 | 66 |
self.label_Nominal_Pipe_Size_Unit.setFont(font) |
67 | 67 |
self.label_Nominal_Pipe_Size_Unit.setObjectName("label_Nominal_Pipe_Size_Unit") |
68 | 68 |
self.horizontalLayout_7.addWidget(self.label_Nominal_Pipe_Size_Unit) |
69 |
self.pushButton_Copy_InsideDiameter = QtWidgets.QPushButton(self.groupBox_GeometryData) |
|
70 |
self.pushButton_Copy_InsideDiameter.setEnabled(False) |
|
71 |
self.pushButton_Copy_InsideDiameter.setMinimumSize(QtCore.QSize(72, 0)) |
|
72 |
self.pushButton_Copy_InsideDiameter.setMaximumSize(QtCore.QSize(72, 16777215)) |
|
73 |
font = QtGui.QFont() |
|
74 |
font.setBold(False) |
|
75 |
font.setWeight(50) |
|
76 |
self.pushButton_Copy_InsideDiameter.setFont(font) |
|
77 |
self.pushButton_Copy_InsideDiameter.setObjectName("pushButton_Copy_InsideDiameter") |
|
78 |
self.horizontalLayout_7.addWidget(self.pushButton_Copy_InsideDiameter) |
|
79 | 69 |
self.verticalLayout_4.addLayout(self.horizontalLayout_7) |
80 | 70 |
self.horizontalLayout_6 = QtWidgets.QHBoxLayout() |
81 | 71 |
self.horizontalLayout_6.setObjectName("horizontalLayout_6") |
... | ... | |
1252 | 1242 |
Dialog.setTabOrder(self.pushButton_1_5, self.pushButton_2_5) |
1253 | 1243 |
Dialog.setTabOrder(self.pushButton_2_5, self.pushButton_3) |
1254 | 1244 |
Dialog.setTabOrder(self.pushButton_3, self.pushButton_4) |
1255 |
Dialog.setTabOrder(self.pushButton_4, self.pushButton_Copy_InsideDiameter) |
|
1256 | 1245 |
|
1257 | 1246 |
def retranslateUi(self, Dialog): |
1258 | 1247 |
_translate = QtCore.QCoreApplication.translate |
... | ... | |
1260 | 1249 |
self.groupBox_GeometryData.setTitle(_translate("Dialog", "Geometry Data")) |
1261 | 1250 |
self.label_8.setText(_translate("Dialog", "Nominal Diameter :")) |
1262 | 1251 |
self.label_Nominal_Pipe_Size_Unit.setText(_translate("Dialog", "-")) |
1263 |
self.pushButton_Copy_InsideDiameter.setText(_translate("Dialog", "Use as I.D")) |
|
1264 | 1252 |
self.label_10.setText(_translate("Dialog", "Schedule No. :")) |
1265 | 1253 |
self.label_12.setText(_translate("Dialog", "Inside Diameter :")) |
1266 | 1254 |
self.label_Inside_Pipe_Size_Unit.setText(_translate("Dialog", "-")) |
HYTOS/HYTOS/UI/StreamData.ui | ||
---|---|---|
113 | 113 |
</font> |
114 | 114 |
</property> |
115 | 115 |
<property name="editable"> |
116 |
<bool>false</bool>
|
|
116 |
<bool>true</bool>
|
|
117 | 117 |
</property> |
118 | 118 |
</widget> |
119 | 119 |
</item> |
... | ... | |
130 | 130 |
</property> |
131 | 131 |
</widget> |
132 | 132 |
</item> |
133 |
<item> |
|
134 |
<widget class="QPushButton" name="pushButton_Copy_InsideDiameter"> |
|
135 |
<property name="enabled"> |
|
136 |
<bool>false</bool> |
|
137 |
</property> |
|
138 |
<property name="minimumSize"> |
|
139 |
<size> |
|
140 |
<width>72</width> |
|
141 |
<height>0</height> |
|
142 |
</size> |
|
143 |
</property> |
|
144 |
<property name="maximumSize"> |
|
145 |
<size> |
|
146 |
<width>72</width> |
|
147 |
<height>16777215</height> |
|
148 |
</size> |
|
149 |
</property> |
|
150 |
<property name="font"> |
|
151 |
<font> |
|
152 |
<weight>50</weight> |
|
153 |
<bold>false</bold> |
|
154 |
</font> |
|
155 |
</property> |
|
156 |
<property name="text"> |
|
157 |
<string>Use as I.D</string> |
|
158 |
</property> |
|
159 |
</widget> |
|
160 |
</item> |
|
161 | 133 |
</layout> |
162 | 134 |
</item> |
163 | 135 |
<item> |
... | ... | |
3127 | 3099 |
<tabstop>pushButton_2_5</tabstop> |
3128 | 3100 |
<tabstop>pushButton_3</tabstop> |
3129 | 3101 |
<tabstop>pushButton_4</tabstop> |
3130 |
<tabstop>pushButton_Copy_InsideDiameter</tabstop> |
|
3131 | 3102 |
</tabstops> |
3132 | 3103 |
<resources> |
3133 | 3104 |
<include location="../res/Resource.qrc"/> |
내보내기 Unified diff