프로젝트

일반

사용자정보

개정판 69f7734b

ID69f7734b2642341c60287535bcd26af5ab0a02d5
상위 02bb6172
하위 f169df44

함의성이(가) 약 5년 전에 추가함

issue #663: detect and insert flange testing

Change-Id: Icdca8da303a038b89d2daab2233f5007ca87533e

차이점 보기:

DTI_PID/DTI_PID/ConfigurationDialog.py
197 197
            self.ui.radioButtonBackTextYes.setChecked(True)
198 198
            self.ui.radioButtonBackTextNo.setChecked(False)
199 199

  
200
        configs = docData.getConfigs('Default', 'Flange')
201
        self.ui.lineEditFlange.setText(configs[0].value) if 1 == len(configs) else \
202
        self.ui.lineEditFlange.setText('flange')
203

  
200 204
        properties = docData.getLineProperties()
201 205
        if properties:
202 206
            for prop in properties:
......
997 1001
            configs.append(Config('Text Recognition', 'White Character List', self.ui.lineEditWhiteCharList.text()))
998 1002
            configs.append(Config('Text Recognition', 'White Single Text', self.ui.lineEditSingleText.text()))
999 1003
            configs.append(Config('Text Recognition', 'Allowable Pair', self.ui.lineEditAllowablePair.text()))
1004
            configs.append(Config('Default', 'Flange', self.ui.lineEditFlange.text()))
1000 1005
            configs.append(Config('Text Recognition', 'Page Segmentation Modes',
1001 1006
                                  str(self.ui.comboBoxPageSegmentationModes.currentIndex())))
1002 1007
            # Add Line Color Option - 2018.07.06 by kyouho
DTI_PID/DTI_PID/QtImageViewer.py
586 586
        app_doc_data = AppDocData.instance()
587 587

  
588 588
        symbol = app_doc_data.getSymbolByQuery('Name', name)
589
        svg_file_name = symbol.sName
590
        svgFilePath = os.path.join(app_doc_data.getCurrentProject().getSvgFilePath(), symbol.getType(),
591
                                   svg_file_name + '.svg')
592
        svg = SymbolSvgItem.createItem(symbol.getType(), None, svgFilePath)
593
        connPts = None
594
        strConnPts = symbol.getConnectionPoint()
595
        if strConnPts is not None and strConnPts != '':
596
            connPts = [(float(x.split(',')[0]), float(x.split(',')[1])) if len(x.split(',')) == 2 else (
597
                x.split(',')[0], float(x.split(',')[1]), float(x.split(',')[2])) \
598
                       for x in strConnPts.split('/')]
599

  
600
        svg.buildItem(svg_file_name, symbol.getType(), 0, None, None, None, connPts, symbol.getBaseSymbol(),
601
                      symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
602

  
603
        return svg
589
        if symbol:
590
            svg_file_name = symbol.sName
591
            svgFilePath = os.path.join(app_doc_data.getCurrentProject().getSvgFilePath(), symbol.getType(),
592
                                    svg_file_name + '.svg')
593
            svg = SymbolSvgItem.createItem(symbol.getType(), None, svgFilePath)
594
            connPts = None
595
            strConnPts = symbol.getConnectionPoint()
596
            if strConnPts is not None and strConnPts != '':
597
                connPts = [(float(x.split(',')[0]), float(x.split(',')[1])) if len(x.split(',')) == 2 else (
598
                    x.split(',')[0], float(x.split(',')[1]), float(x.split(',')[2])) \
599
                        for x in strConnPts.split('/')]
600

  
601
            svg.buildItem(svg_file_name, symbol.getType(), 0, None, None, None, connPts, symbol.getBaseSymbol(),
602
                        symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
603

  
604
            return svg
605
        else:
606
            return None
604 607

  
605 608
    '''
606 609
        @brief      match symbol to line
......
609 612
        @history    humkyung 2018.08.23 change scenePos to connector's center when symbol is placed on connector
610 613
    '''
611 614
    @staticmethod
612
    def matchSymbolToLine(scene, svg, scenePos, angle=None, flip=None):
615
    def matchSymbolToLine(scene, svg, scenePos, angle=None, flip=None, strict=False):
613 616
        from EngineeringConnectorItem import QEngineeringConnectorItem
614 617
        from EngineeringLineItem import QEngineeringLineItem
615 618
        from SymbolSvgItem import SymbolSvgItem
......
662 665
                    connectors[0].sceneBoundingRect().center().y() + dy
663 666
                svg.loc = [x - svg.symbolOrigin[0], y - svg.symbolOrigin[1]]
664 667
                svg.origin = [x, y]
665
                svg.addSvgItemToScene(scene, True)
668
                svg.addSvgItemToScene(scene, True if not strict else False)
666 669

  
667 670
                items = [item for item in scene.items(scenePos) if
668 671
                        type(item) is not QGraphicsPixmapItem and type(item) is not QGraphicsTextItem]
......
689 692
                                break
690 693
                    connectors[0].connect(svg)
691 694
                    #connectors[0].highlight(False)
692
            else:
695
            elif not strict:
693 696
                svg.angle = angle if angle else 0.0
694 697
                svg.flip = flip if flip else 0
695 698
                svg.loc = [round(scenePos.x() - svg.symbolOrigin[0], 1), round(scenePos.y() - svg.symbolOrigin[1], 1)]
......
712 715
                        connectors[0].connect(svg)
713 716
                        #items[0].highlight(False)
714 717

  
715
                svg.addSvgItemToScene(scene, True)
718
                svg.addSvgItemToScene(scene, True if not strict else False)
716 719

  
717 720
            # svg.reSettingConnetors()
718 721

  
719
            scene.clearFocus()
720
            for item in scene.selectedItems():
721
                item.setSelected(False)
722
            if not strict:
723
                scene.clearFocus()
724
                for item in scene.selectedItems():
725
                    item.setSelected(False)
722 726

  
723
            #self.setFocus()
724
            svg.setSelected(True)
725
            scene.setFocusItem(svg)
727
                #self.setFocus()
728
                svg.setSelected(True)
729
                scene.setFocusItem(svg)
726 730
        except Exception as ex:
727 731
            from App import App 
728 732
            from AppDocData import MessageType
DTI_PID/DTI_PID/RecognitionDialog.py
29 29
from LineDetector import LineDetector
30 30
from symbol import Symbol
31 31
from Drawing import Drawing
32
from QtImageViewer import QtImageViewer
32 33

  
33 34
from MainWindow import MainWindow
34 35

  
......
71 72
    from PyQt5.QtCore import QThread
72 73
    from PyQt5.QtCore import QTranslator
73 74
    from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout, QListWidget
74
    from QtImageViewer import QtImageViewer
75 75
    import sys
76 76

  
77 77
    '''
......
86 86
    updateProgress = pyqtSignal(int, str)
87 87
    updateBatchProgress = pyqtSignal(int, int)
88 88
    displayLog = pyqtSignal(MessageType, str)
89
    add_detected_items_to_scene = pyqtSignal(QGraphicsScene)
89
    add_detected_items_to_scene = pyqtSignal(QGraphicsScene, list)
90 90
    add_predata_to_scene = pyqtSignal(Drawing, QGraphicsScene, bool, bool, bool, bool, bool)
91 91
    clear_scene = pyqtSignal(QGraphicsScene, QGraphicsScene, QGraphicsScene)
92 92

  
......
1281 1281
                        worker.displayLog.emit(MessageType.Error, message)
1282 1282
                    # up to here
1283 1283

  
1284

  
1285

  
1286 1284
                    # remove line has not connected item
1287 1285
                    try:
1288 1286
                        count = 1
......
1304 1302
                    # up to here
1305 1303

  
1306 1304
                worker.create_unknown_items(mainRes)
1307
                worker.add_detected_items_to_scene.emit(worker.scene)
1305
                worker.add_detected_items_to_scene.emit(worker.scene, flange_list)
1308 1306
                worker.cond.wait(worker.mutex)
1309 1307

  
1310 1308
                worker.scene._end = False
......
3098 3096
        finally:
3099 3097
            self.cond.wakeAll()
3100 3098

  
3101
    def add_detected_items_to_scene(self, scene) -> None:
3099
    def add_detected_items_to_scene(self, scene, flanges) -> None:
3102 3100
        """add detected items to scene"""
3103 3101
        from SaveWorkCommand import SaveWorkCommand
3104 3102
        from EngineeringVendorItem import QEngineeringVendorItem
......
3141 3139
                for conn in line.connectors:
3142 3140
                    conn.transfer.onPosChanged.connect(line.onConnectorPosChaned)
3143 3141

  
3142
            configs = app_doc_data.getConfigs('Default', 'Flange')
3143
            flange_name = configs[0].value if 1 == len(configs) else 'flange'
3144
            for flange in flanges:
3145
                svg = QtImageViewer.createSymbolObject(flange_name)
3146
                if svg:
3147
                    QtImageViewer.matchSymbolToLine(scene, svg, QPointF(flange[0], flange[1]), strict=True)
3148

  
3144 3149
            for unknown in app_doc_data.unknowns + app_doc_data.lineIndicators:
3145 3150
                scene.addItem(unknown)
3146 3151

  
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py
1984 1984
        self.setToolTip(self.tooltip)
1985 1985
        self.update_arrow()
1986 1986

  
1987
        self.scene().contents_changed.emit()
1987
        if hasattr(self.scene(), 'contents_changed'):
1988
            self.scene().contents_changed.emit()
1988 1989

  
1989 1990
        # register resize command
1990 1991
        pt_start = self.connectors[0].pressed_position if self.connectors[0].pressed_position else None
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
521 521
            scene_origin = self.mapToScene(self.transformOriginPoint())
522 522
            self.origin = [round(scene_origin.x(), 1), round(scene_origin.y(), 1)]
523 523

  
524
            self.scene().contents_changed.emit()
524
            if hasattr(self.scene(), 'contents_changed'):
525
                self.scene().contents_changed.emit()
525 526

  
526 527
            return value
527 528

  

내보내기 Unified diff