프로젝트

일반

사용자정보

개정판 7bd122a8

ID7bd122a89419fd7cce47ede716ec925ff480b3b9
상위 6e6d9261
하위 f93e6d5e

김연진이(가) 약 5년 전에 추가함

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

클립보드 이미지 추가 (최대 크기: 500 MB)