프로젝트

일반

사용자정보

개정판 0d802026

ID0d802026c0d55517af621339326c970585c29adf
상위 e9d9cab4
하위 e08d45f9

백흠경이(가) 약 5년 전에 추가함

issue #1273: able to move label of nozzle

Change-Id: I261a9aa68c059b68680505f05b422471c3c8a057

차이점 보기:

HYTOS/HYTOS/AppDocData.py
1454 1454
        from EngineeringConnectorItem import NozzleData
1455 1455

  
1456 1456
        res = None
1457
        conn = sqlite3.connect(self.activeDrawing.path)
1458
        conn.execute('PRAGMA foreign_keys = ON')
1459
        with conn:
1457
        with sqlite3.connect(self.activeDrawing.path) as conn:
1458
            conn.execute('PRAGMA foreign_keys = ON')
1460 1459
            conn.row_factory = sqlite3.Row
1461 1460
            cursor = conn.cursor()
1462
            sql = 'select Pressure, Pressure_Drop, Elevation, Over_Design_CV, CV_Type from Nozzles where Points_UID=?'
1461
            sql = 'select Pressure, Pressure_Drop, Elevation, Over_Design_CV, CV_Type, B.X, B.Y from Nozzles A ' \
1462
                  'left join Components B on A.Points_UID=B.UID where Points_UID=?'
1463 1463
            param = (uid,)
1464 1464
            cursor.execute(sql, param)
1465 1465
            rows = cursor.fetchall()
......
1478 1478
    def getComponentListByDrawingUID(self):
1479 1479
        ComponentList = []
1480 1480

  
1481
        conn = sqlite3.connect(self.activeDrawing.path)
1482
        conn.execute('PRAGMA foreign_keys = ON')
1483
        with conn:
1481
        with sqlite3.connect(self.activeDrawing.path) as conn:
1482
            conn.execute('PRAGMA foreign_keys = ON')
1484 1483
            try:
1485 1484
                conn.row_factory = sqlite3.Row
1486 1485
                cursor = conn.cursor()
HYTOS/HYTOS/MainWindow.py
913 913

  
914 914
    def rebuild_label(self):
915 915

  
916
        items = [item for item in self.graphicsView.scene.items() if issubclass(type(item), SymbolSvgItem)]
916
        items = [item for item in self.graphicsView.scene.items() if issubclass(type(item), SymbolSvgItem) or
917
                 type(item) is QEngineeringStreamlineItem]
917 918
        for item in items:
918 919
            item.build_label()
919 920

  
......
935 936

  
936 937
            dlg = QOptionsDialog(self)
937 938
            (isAccepted, new_tag_font_size, new_tag_font_color) = dlg.show_dialog()
938
            if isAccepted == True:
939
            if isAccepted:
939 940
                if app_doc_data.activeDrawing:
940 941
                    if str(old_tag_font_size) != str(new_tag_font_size) or old_tag_font_color != new_tag_font_color:
941 942
                        self.rebuild_label()
......
2511 2512

  
2512 2513
                QApplication.processEvents()
2513 2514

  
2514
            self.rebuild_label()
2515
            #self.rebuild_label()
2515 2516

  
2516 2517
            # """ update scene """
2517 2518
            self.graphicsView.scene.update(self.graphicsView.sceneRect())
HYTOS/HYTOS/Shapes/EngineeringConnectorItem.py
29 29
        self.elevation = None
30 30
        self.over_design_cv = None
31 31
        self.cv_type = None
32
        self.pos = None
32 33

  
33 34
    def parse(self, row):
34 35
        """ parse given row """
......
44 45
                self.over_design_cv = float(row['Over_Design_CV'])
45 46
            if not row['CV_Type'] is None:
46 47
                self.cv_type = row['CV_Type']
48
            if not row['X'] is None and not row['Y'] is None:
49
                self.pos = (float(row['X']), float(row['Y']))
50

  
47 51
        except Exception as ex:
48 52
            from App import App
49 53
            from AppDocData import MessageType
HYTOS/HYTOS/Shapes/EngineeringEqpDescTextItem.py
25 25
        import uuid
26 26

  
27 27
        QGraphicsTextItem.__init__(self, text, parent)
28
        self.setFlags(QGraphicsItem.ItemIsSelectable | QGraphicsItem.ItemIsFocusable | QGraphicsItem.ItemIsMovable)
29

  
28 30
        self.type = 'EQP DESC'
29 31
        self.setHtml(text)
30 32

  
......
41 43

  
42 44
    def set_font_color(self, color):
43 45
        self.setDefaultTextColor(QColor(color))
46

  
47
    def toSql(self, conn):
48
        """ generate sql string to save label to database """
49
        res = []
50

  
51
        try:
52
            cols = ['UID', 'Symbols_UID', 'X', 'Y']
53
            values = ['?', '?', '?', '?']
54

  
55
            param = [str(conn.uid), str(self.parentItem().dbUid), self.pos().x(), self.pos().y()]
56
            sql = f"insert or replace into Components({','.join(cols)}) values({','.join(values)})"
57
            res.append((sql, tuple(param)))
58
        except Exception as ex:
59
            from App import App
60
            from AppDocData import MessageType
61

  
62
            message = 'error occurred({}) in {}:{}'.format(repr(ex), sys.exc_info()[-1].tb_frame.f_code.co_filename,
63
                                                           sys.exc_info()[-1].tb_lineno)
64
            App.mainWnd().addMessage.emit(MessageType.Error, message)
65

  
66
        return res
HYTOS/HYTOS/Shapes/EngineeringStreamNoTextItem.py
65 65
            polygon.append(QPointF(rect.width() * 0.5 + x, rect.height() * 0.5 + y))
66 66

  
67 67
        return polygon
68

  
69
    def set_font_size(self, size):
70
        """set font size"""
71

  
72
        font = QFont('Arial')
73
        font.setPointSizeF(float(size))
74
        self.setFont(font)
HYTOS/HYTOS/Shapes/EngineeringStreamlineItem.py
118 118
    @stream_no.setter
119 119
    def stream_no(self, value):
120 120
        """ set stream no with given value """
121
        from EngineeringStreamNoTextItem import QEngineeringStreamNoTextItem
121
        from AppDocData import AppDocData
122 122

  
123
        self._stream_no = value
124
        self._stream_no_text = QEngineeringStreamNoTextItem(f"{self._stream_no}", self)
125
        self.build_path()
123
        try:
124
            self._stream_no = value
125
            self.build_label()
126
            self.build_path()
127
        except Exception as ex:
128
            from App import App
129
            from AppDocData import MessageType
130

  
131
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
132
                                                           sys.exc_info()[-1].tb_lineno)
133
            App.mainWnd().addMessage.emit(MessageType.Error, message)
126 134

  
127 135
    @property
128 136
    def data(self):
......
328 336

  
329 337
        self.fittings = fittings
330 338

  
339
    def build_label(self):
340
        """build stream no"""
341
        from AppDocData import AppDocData
342
        from EngineeringStreamNoTextItem import QEngineeringStreamNoTextItem
343

  
344
        if not self._stream_no_text:
345
            self._stream_no_text = QEngineeringStreamNoTextItem(f"{self._stream_no}", self)
346

  
347
        app_doc_data = AppDocData.instance()
348
        font_size = None
349
        configs = app_doc_data.getAppConfigs('option', 'TagFontSize')
350
        if configs and len(configs) == 1:
351
            self._stream_no_text.set_font_size(configs[0].value)
352

  
331 353
    def build_path(self):
332 354
        """build path"""
333 355
        if not self._vertices or len(self._vertices) < 2:
HYTOS/HYTOS/Shapes/SymbolSvgItem.py
261 261
                index += 1
262 262
            # up to here
263 263

  
264
            '''
265
            # Output Pump, Compressor, Control Valve
266
            if self.has_attribute():
267
                attr = self.attribute
268
                for key, value in attr.items():
269
                    if key == 'Tag_No':
270
                        continue
271
                    cols = ['UID', 'Components_UID', 'Key', 'Value']
272
                    values = ['?', '?', '?', '?']
273
                    param = [str(uuid.uuid4()), str(self.uid), key, value]
274
                    sql = 'insert or replace into Result({}) values({})'.format(','.join(cols), ','.join(values))
275
                    res.append((sql, tuple(param)))
276
            '''
264
            # save nozzle label
265
            for conn, label in self.desc_labels.items():
266
                res.extend(label.toSql(conn))
267
            # up to here
277 268

  
278 269
        except Exception as ex:
279 270
            from App import App
......
367 358

  
368 359
        res = None
369 360

  
370
        label_rect = label.boundingRect()
371
        conn_rect = conn.mapRectFromParent(conn.boundingRect())
372
        dx, dy = conn.dir()
373

  
374
        if dx == 1:
375
            res = QPointF(conn_rect.x() + conn_rect.width() * 0.5, conn_rect.y())
376
        elif dy == -1:
377
            res = QPointF(conn_rect.x() + conn_rect.width()*0.5, conn_rect.y() - label_rect.height())
378
        elif dy == 1:
379
            res = QPointF(conn_rect.x() + conn_rect.width()*0.5, conn_rect.y() + conn_rect.height()*0.5)
380
        elif dx == -1:
381
            res = QPointF(conn_rect.x() - label_rect.width(), conn_rect.y() + conn_rect.height()*0.5)
361
        app_doc_data = AppDocData.instance()
362
        if conn.data.pos:
363
            res = QPointF(conn.data.pos[0], conn.data.pos[1])
364
        else:
365
            label_rect = label.boundingRect()
366
            conn_rect = conn.mapRectFromParent(conn.boundingRect())
367
            dx, dy = conn.dir()
368

  
369
            if dx == 1:
370
                res = QPointF(conn_rect.x() + conn_rect.width() * 0.5, conn_rect.y())
371
            elif dy == -1:
372
                res = QPointF(conn_rect.x() + conn_rect.width()*0.5, conn_rect.y() - label_rect.height())
373
            elif dy == 1:
374
                res = QPointF(conn_rect.x() + conn_rect.width()*0.5, conn_rect.y() + conn_rect.height()*0.5)
375
            elif dx == -1:
376
                res = QPointF(conn_rect.x() - label_rect.width(), conn_rect.y() + conn_rect.height()*0.5)
382 377

  
383 378
        return res
384 379

  
......
402 397
                        f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
403 398
                        f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
404 399

  
405
                    label_rect = self.desc_labels[conns[0]].boundingRect()
406
                    self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
407
                '''    
408
                for conn in self.connectors:
409
                    if self.tag_no:
410
                        if conn.data:
411
                            self.desc_labels[conn].setHtml(
412
                                f"{self.tag_no}<br>{convert_to_fixed_point(conn.data.pressure_drop)} {units['Pressure']}<br>"
413
                                f"{convert_to_fixed_point(conn.data.elevation)} {units['Length']}")
414

  
415
                            pos = self.get_label_pos_of_connector(conn, self.desc_labels[conn])
416
                            self.desc_labels[conn].setPos(pos)
417
                '''
400
                    pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
401
                    self.desc_labels[conns[0]].setPos(pos)
418 402
            elif self.type == 'Filter':
419 403
                if self.tag_no:
420 404
                    conns = [conn for conn in self.connectors if conn.data and conn.data.elevation is not None]
......
423 407
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
424 408
                            f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
425 409

  
426
                        label_rect = self.desc_labels[conns[0]].boundingRect()
427
                        self.desc_labels[conns[0]].setPos(
428
                            QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
429
                    '''    
430
                    for conn in self.connectors:
431
                        if conn.data:
432
                            conn_rect = conn.boundingRect()
433
                            self.desc_labels[conn].setHtml(
434
                                f"{self.tag_no}<br>{convert_to_fixed_point(conn.data.pressure_drop)} {units['Pressure']}<br>"
435
                                f"{convert_to_fixed_point(conn.data.elevation)} {units['Length']}")
436

  
437
                            pos = self.get_label_pos_of_connector(conn, self.desc_labels[conn])
438
                            self.desc_labels[conn].setPos(QPointF(conn_rect.width(), 0))
439
                    '''
410
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
411
                        self.desc_labels[conns[0]].setPos(pos)
440 412
            elif self.type == 'Heat Exchanger':
441 413
                if self.tag_no:
442 414
                    nozzles = []
......
587 559
                                f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
588 560
                                f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
589 561

  
590
                            label_rect = self.desc_labels[conns[0]].boundingRect()
591
                            self.desc_labels[conns[0]].setPos(
592
                                QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
593
                        '''
594
                        for conn in self.connectors:
595
                            if conn.data:
596
                                conn_rect = conn.boundingRect()
597
                                self.desc_labels[conn].setHtml(
598
                                    f"{self.tag_no}<br>{convert_to_fixed_point(conn.data.pressure_drop)} {units['Pressure']}<br>"
599
                                    f"{convert_to_fixed_point(conn.data.elevation)} {units['Length']}")
600

  
601
                                pos = self.get_label_pos_of_connector(conn, self.desc_labels[conn])
602
                                self.desc_labels[conn].setPos(pos)
603
                        '''
562
                            pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
563
                            self.desc_labels[conns[0]].setPos(pos)
604 564
                elif self.name == 'M_DP_E':
605 565
                    if self.tag_no:
606 566
                        nozzles = []
......
619 579
                                self.desc_labels[self.connectors[0]].setPos(
620 580
                                    QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
621 581

  
622
                                pos = self.get_label_pos_of_connector(self.connectors[2],
623
                                                                      self.desc_labels[self.connectors[2]])
582
                                pos = self.get_label_pos_of_connector(self.connectors[0],
583
                                                                      self.desc_labels[self.connectors[0]])
624 584
                                self.desc_labels[self.connectors[0]].setPos(pos)
625 585
                            elif 'N1' in nozzles:
626 586
                                self.desc_labels[self.connectors[0]].setHtml(
627 587
                                    f"{self.tag_no}<br>[V] : {convert_to_fixed_point(self.connectors[0].data.pressure_drop)} {units['Pressure']}<br>"
628 588
                                    f"[V] : {convert_to_fixed_point(self.connectors[0].data.elevation)} {units['Length']}")
629 589

  
630
                                pos = self.get_label_pos_of_connector(self.connectors[2],
631
                                                                      self.desc_labels[self.connectors[2]])
590
                                pos = self.get_label_pos_of_connector(self.connectors[0],
591
                                                                      self.desc_labels[self.connectors[0]])
632 592
                                self.desc_labels[self.connectors[0]].setPos(pos)
633 593
                            elif 'N2' in nozzles:
634 594
                                self.desc_labels[self.connectors[1]].setHtml(
......
638 598
                                pos = self.get_label_pos_of_connector(self.connectors[2],
639 599
                                                                      self.desc_labels[self.connectors[2]])
640 600
                                self.desc_labels[self.connectors[1]].setPos(pos)
641
                        '''
642
                        conns = [conn for conn in self.connectors
643
                                if conn.data and conn.data.pressure_drop is not None and conn.data.elevation is not None]
644
                        if conns:
645
                            self.desc_labels[conns[0]].setHtml(
646
                                f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} {units['Pressure']}"
647
                                f"<br>{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
648

  
649
                            label_rect = self.desc_labels[conns[0]].boundingRect()
650
                            self.desc_labels[conns[0]].setPos(
651
                                QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
652
                        '''
653 601
                elif self.name == 'M_React':
654 602
                    if self.tag_no:
655 603
                        nozzles = []
......
679 627
                                    f"[Top] : {convert_to_fixed_point(self.connectors[top_index].data.elevation)} {units['Length']}<br>"
680 628
                                    f"[Btm] : {convert_to_fixed_point(self.connectors[btm_index].data.elevation)} {units['Length']}")
681 629

  
682
                                pos = self.get_label_pos_of_connector(self.connectors[3],
683
                                                                      self.desc_labels[self.connectors[3]])
630
                                pos = self.get_label_pos_of_connector(self.connectors[top_index],
631
                                                                      self.desc_labels[self.connectors[top_index]])
684 632
                                self.desc_labels[self.connectors[top_index]].setPos(pos)
685 633

  
686 634
                            elif 'N1' in nozzles or 'N2' in nozzles or 'N6' in nozzles:
......
695 643
                                    f"[DP] : {convert_to_fixed_point(self.connectors[index].data.pressure_drop)} {units['Pressure']}<br>"
696 644
                                    f"[Top] : {convert_to_fixed_point(self.connectors[index].data.elevation)} {units['Length']}")
697 645

  
698
                                pos = self.get_label_pos_of_connector(self.connectors[3],
699
                                                                      self.desc_labels[self.connectors[3]])
646
                                pos = self.get_label_pos_of_connector(self.connectors[index],
647
                                                                      self.desc_labels[self.connectors[index]])
700 648
                                self.desc_labels[self.connectors[index]].setPos(pos)
701 649

  
702 650
                            elif 'N3' in nozzles or 'N4' in nozzles or 'N5' in nozzles:
......
711 659
                                    f"[DP] : {convert_to_fixed_point(self.connectors[index].data.pressure_drop)} {units['Pressure']}<br>"
712 660
                                    f"[Btm] : {convert_to_fixed_point(self.connectors[index].data.elevation)} {units['Length']}")
713 661

  
714
                                pos = self.get_label_pos_of_connector(self.connectors[3],
715
                                                                      self.desc_labels[self.connectors[3]])
662
                                pos = self.get_label_pos_of_connector(self.connectors[index],
663
                                                                      self.desc_labels[self.connectors[index]])
716 664
                                self.desc_labels[self.connectors[index]].setPos(pos)
717

  
718
                        '''
719
                        conns = [conn for conn in self.connectors
720
                                if conn.data and conn.data.pressure_drop is not None and conn.data.elevation is not None]
721
                        if conns:
722
                            self.desc_labels[conns[0]].setHtml(
723
                                f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} {units['Pressure']}"
724
                                f"<br>{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
725

  
726
                            label_rect = self.desc_labels[conns[0]].boundingRect()
727
                            self.desc_labels[conns[0]].setPos(
728
                                QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
729
                        '''
730 665
            elif self.type == 'Strainer':
731 666
                if self.tag_no:
732 667
                    conns = [conn for conn in self.connectors
......
736 671
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} {units['Pressure']}<br>"
737 672
                            f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
738 673

  
739
                        label_rect = self.desc_labels[conns[0]].boundingRect()
740
                        self.desc_labels[conns[0]].setPos(
741
                            QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
674
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
675
                        self.desc_labels[conns[0]].setPos(pos)
742 676
        elif self.category == 'Equipment - [ Pressurized ]':
743 677
            if self.type == 'Battery Limit':
744 678
                if self.tag_no:
......
749 683
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure)} {units['Pressure']}(g)<br>"
750 684
                            f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
751 685

  
752
                        label_rect = self.desc_labels[conns[0]].boundingRect()
753
                        self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
686
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
687
                        self.desc_labels[conns[0]].setPos(pos)
754 688
            elif self.type == 'Column':
755 689
                if self.tag_no:
756 690
                    for conn in self.connectors:
......
818 752
                                f"{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
819 753
                                f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
820 754

  
821
                            label_rect = self.desc_labels[conns[0]].boundingRect()
822
                            self.desc_labels[conns[0]].setPos(
823
                                QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
755
                            pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
756
                            self.desc_labels[conns[0]].setPos(pos)
824 757
            elif self.type == 'Pump':
825 758
                if self.tag_no:
826 759
                    conns = [conn for conn in self.connectors if conn.data and conn.data.elevation is not None]
......
830 763
                            f"{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
831 764
                            f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
832 765

  
833
                        label_rect = self.desc_labels[conns[0]].boundingRect()
834
                        self.desc_labels[conns[0]].setPos(
835
                            QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
766
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
767
                        self.desc_labels[conns[0]].setPos(pos)
836 768
        elif self.category == 'Instrument':
837 769
            if self.type == 'Flowmeter':
838 770
                if self.tag_no:
......
842 774
                            f"{self.tag_no}<br>{convert_to_fixed_point(data.pressure_drop)} "
843 775
                            f"{units['Pressure']}<br>{convert_to_fixed_point(data.elevation)} {units['Length']}")
844 776

  
845
                        label_rect = self.desc_labels[self.connectors[0]].boundingRect()
846
                        self.desc_labels[self.connectors[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
777
                        pos = self.get_label_pos_of_connector(self.connectors[0], self.desc_labels[self.connectors[0]])
778
                        self.desc_labels[self.connectors[0]].setPos(pos)
847 779
            elif self.type == 'Line Splitter':
848 780
                if self.tag_no:
849 781
                    conns = [conn for conn in self.connectors
......
853 785
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} "
854 786
                            f"{units['Pressure']}<br>{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
855 787

  
856
                        label_rect = self.desc_labels[conns[0]].boundingRect()
857
                        self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
788
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
789
                        self.desc_labels[conns[0]].setPos(pos)
858 790
            elif self.type == 'Reducer':
859 791
                if self.tag_no:
860 792
                    conns = [conn for conn in self.connectors
......
864 796
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} "
865 797
                            f"{units['Pressure']}<br>{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
866 798

  
867
                        label_rect = self.desc_labels[conns[0]].boundingRect()
868
                        self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
799
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
800
                        self.desc_labels[conns[0]].setPos(pos)
869 801
            elif self.type == 'Valve':
870 802
                if self.tag_no and self.name in ('CV_H', 'CV_V'):
871 803
                    conns = [conn for conn in self.connectors if conn.data and conn.data.elevation is not None]
......
874 806
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop) if conns[0].data.pressure_drop is not None else 0} {units['Pressure']}<br>"
875 807
                            f"{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
876 808

  
877
                        label_rect = self.desc_labels[conns[0]].boundingRect()
878
                        self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width())*0.5, rect.height()))
809
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
810
                        self.desc_labels[conns[0]].setPos(pos)
879 811
                elif self.tag_no and self.name in ('MV_H', 'MV_V'):
880 812
                    conns = [conn for conn in self.connectors
881 813
                             if conn.data and conn.data.pressure_drop is not None and conn.data.elevation is not None]
......
884 816
                            f"{self.tag_no}<br>{convert_to_fixed_point(conns[0].data.pressure_drop)} "
885 817
                            f"{units['Pressure']}<br>{convert_to_fixed_point(conns[0].data.elevation)} {units['Length']}")
886 818

  
887
                        label_rect = self.desc_labels[conns[0]].boundingRect()
888
                        self.desc_labels[conns[0]].setPos(QPointF((rect.width() - label_rect.width()) * 0.5, rect.height()))
819
                        pos = self.get_label_pos_of_connector(conns[0], self.desc_labels[conns[0]])
820
                        self.desc_labels[conns[0]].setPos(pos)
889 821

  
890 822
        font_size = None
891 823
        configs = app_doc_data.getAppConfigs('option', 'TagFontSize')

내보내기 Unified diff

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