프로젝트

일반

사용자정보

개정판 7d49ffed

ID7d49ffed5c220586b29db369760268080654644d
상위 811c7c26
하위 f0e763e8

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

issue #538: add end break and fix owner

Change-Id: I8f8cf3f9636961201f0218acb0c51c8a17f6dd4b

차이점 보기:

DTI_PID/DTI_PID/LineNoTracer.py
473 473
        for lineNo in lineNos:
474 474
            for end_break in lineNo.end_break():
475 475
                end_breaks.append(end_break)
476

  
476 477
        if end_breaks:
478
            '''
479
            # check dulplication
477 480
            dupl = set()
478 481
            for i in range(len(end_breaks)):
479 482
                for j in range(len(end_breaks)):
......
492 495
            dupl.sort(reverse=True)
493 496
            for index in dupl:
494 497
                end_breaks.pop(index)
498
            '''
495 499

  
496 500
            for end_break in end_breaks:
497 501
                end_break.addSvgItemToScene(worker.graphicsView.scene)
DTI_PID/DTI_PID/MainWindow.py
2322 2322
            QApplication.processEvents()
2323 2323

  
2324 2324
            # set symbol's owner
2325
            childItems = [item for item in symbols if item[1] is not None]
2326
            for item in childItems:
2327
                matches = [param for param in symbols if str(param[0].uid) == str(item[1])]
2328
                if len(matches) == 1:
2329
                    item[0].owner = matches[0][0]
2325
            # childItems = [item for item in symbols if item[1] is not None]
2326
            # for item in childItems:
2327
            #     matches = [param for param in symbols if str(param[0].uid) == str(item[1])]
2328
            #     if len(matches) == 1:
2329
            #         item[0].owner = matches[0][0]
2330 2330
            # up to here
2331 2331
           
2332 2332
            """ add item to scene and tree widget """
DTI_PID/DTI_PID/Shapes/EngineeringEndBreakItem.py
26 26
    def __init__(self, path, uid=None, flip=0):
27 27
        SymbolSvgItem.__init__(self, path, uid, flip=flip)
28 28
        self.setZValue(QEngineeringEndBreakItem.ZVALUE)
29
        self.connected_lines = []
30

  
31
        attr = SymbolAttr()
32
        attr.Attribute = 'End Break Line 1'
33
        attr.AttributeType = 'Line Item'
34
        self.attrs[attr] = None
35
        attr = SymbolAttr()
36
        attr.Attribute = 'End Break Line 2'
37
        attr.AttributeType = 'Line Item'
38
        self.attrs[attr] = None
29
        #self.connected_lines = []
39 30

  
40 31
    '''
41 32
    def setPosition(self, loc, origin):
......
55 46
        if self.isSelected() and event.key() == Qt.Key_Delete:
56 47
            self.scene().removeItem(self)
57 48

  
58
    def toXml(self):
59
        '''is not finished, check later in svgitem toxml and item table widget'''
60
        return None
61 49
    '''
62 50
    @staticmethod 
63 51
    def fromXml(node):
DTI_PID/DTI_PID/Shapes/EngineeringLineNoTextItem.py
367 367
            symbol = AppDocData.instance().getSymbolByQuery('name', svgFileName)
368 368
            svgFilePath = os.path.join(AppDocData.instance().getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg')
369 369

  
370
            if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem:
371
                end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath)
372
                pt = [line_from.connectors[0].center()[0] - float(symbol.getOriginalPoint().split(',')[0]), line_from.connectors[0].center()[1] - float(symbol.getOriginalPoint().split(',')[1])]
373
                origin = [0,0]
374
                if 2 == len(symbol.getOriginalPoint().split(',')):
375
                    tokens = symbol.getOriginalPoint().split(',')
376
                    origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])]
377
                end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
378
                end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid]
379
                end_break.setToolTip(str(end_break.connected_lines))
380
                end_break.area = 'Drawing'
381
                end_breaks.append(end_break)
370
            #if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem:
371
            #    end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath)
372
            #    pt = [line_from.connectors[0].center()[0] - float(symbol.getOriginalPoint().split(',')[0]), line_from.connectors[0].center()[1] - float(symbol.getOriginalPoint().split(',')[1])]
373
            #    origin = [0,0]
374
            #    if 2 == len(symbol.getOriginalPoint().split(',')):
375
            #        tokens = symbol.getOriginalPoint().split(',')
376
            #        origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])]
377
            #    end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
378
            #    end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid]
379
            #    end_break.setToolTip(str(end_break.connected_lines))
380
            #    end_break.area = 'Drawing'
381
            #    end_breaks.append(end_break)
382 382

  
383 383
            if type(line_to) is QEngineeringLineItem and line_to.connectors[1].connectedItem is not None and type(line_to.connectors[1].connectedItem) is QEngineeringLineItem:
384 384
                end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath)
......
389 389
                    tokens = symbol.getOriginalPoint().split(',')
390 390
                    origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])]
391 391
                end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
392
                end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid]
393
                end_break.setToolTip(str(end_break.connected_lines))
392
                #end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid]
393
                end_break.setToolTip('owner : ' + str(line_to))
394 394
                end_break.area = 'Drawing'
395
                end_break.owner = line_to
395 396
                end_breaks.append(end_break)
396 397
                '''
397 398
                end_break = SymbolSvgItem.createItem('End Break', dataPath)
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
91 91
    '''
92 92
    @property
93 93
    def owner(self):
94
        import uuid
95

  
96
        if self._owner and type(self._owner) is uuid.UUID:
97
            matches = [x for x in self.scene().items() if hasattr(x, 'uid') and str(x.uid) == str(self._owner)]
98
            if matches: self._owner = matches[0]
99

  
94 100
        return self._owner
95 101

  
96 102
    '''
......
899 905
            project = appDocData.getCurrentProject()
900 906
            svgFilePath = os.path.join(project.getSvgFilePath(), _type, name + '.svg')
901 907
            if os.path.isfile(svgFilePath):
902
                item[0] = SymbolSvgItem.createItem(_type, svgFilePath, uid, flip=flipLabel)
903
                #item[0].setVisible(False)
908
                item[0] = SymbolSvgItem.createItem(_type, svgFilePath, uid, owner=owner, flip=flipLabel)
909
                item[0].setVisible(False)
904 910
                item[0].buildItem(name, _type, angle, pt, size, origin, connPts, baseSymbol, childSymbol, hasInstrumentLabel)
905 911

  
906 912
                for prop_node in node.iter('PROPERTY'):
......
983 989
                    humkyung 2018.07.19 create nozzle instance if type is 'Nozzles'
984 990
    '''
985 991
    @staticmethod
986
    def createItem(type, path, uid=None, flip=0):
992
    def createItem(type, path, uid=None, owner=None, flip=0):
987 993
        from QEngineeringOPCItem import QEngineeringOPCItem
988 994
        from EngineeringEquipmentItem import QEngineeringEquipmentItem
989 995
        from EngineeringInstrumentItem import QEngineeringInstrumentItem
......
993 999
        from EngineeringErrorItem import QEngineeringErrorItem
994 1000
        from EngineeringEndBreakItem import QEngineeringEndBreakItem
995 1001
        from AppDocData import AppDocData
1002
        import uuid
996 1003

  
997 1004
        docData = AppDocData.instance()
998 1005

  
......
1017 1024
        else:
1018 1025
            item = SymbolSvgItem(path, uid, flip=flip)
1019 1026

  
1027
        item.owner = uuid.UUID(owner, version=4)
1028

  
1020 1029
        return item
1021 1030

  
1022 1031
    '''
DTI_PID/DTI_PID/XmlGenerator.py
72 72

  
73 73
UNKNOWNS_NODE_NAME = "UNKNOWNS"
74 74
VENDOR_NODE_NAME = "VENDORS"
75
END_BREAK = "END_BREAKS"
75
#END_BREAK = "END_BREAKS"
76 76

  
77 77
'''
78 78
    @brief  
......
394 394
    lineNoListNode = Element(LINE_NOS_NODE_NAME)
395 395
    unknownListNode = Element(UNKNOWNS_NODE_NAME)
396 396
    vendorListNode = Element(VENDOR_NODE_NAME)
397
    endBreakListNode = Element(END_BREAK)
397
    #endBreakListNode = Element(END_BREAK)
398 398

  
399 399
    node_dictionary = {SymbolSvgItem:symbolListNode, QEngineeringTextItem:textInfoListNode, QEngineeringNoteItem:noteTextInfoListNode, 
400 400
        QEngineeringLineItem:lineListNode, QEngineeringLineNoTextItem:lineNoListNode, QEngineeringUnknownItem:unknownListNode,
401
        QEngineeringSizeTextItem:textInfoListNode, QEngineeringValveOperCodeTextItem:textInfoListNode, QEngineeringVendorItem:vendorListNode,
402
        QEngineeringEndBreakItem:endBreakListNode}
401
        QEngineeringSizeTextItem:textInfoListNode, QEngineeringValveOperCodeTextItem:textInfoListNode, QEngineeringVendorItem:vendorListNode}
402
        #QEngineeringEndBreakItem:endBreakListNode}
403 403

  
404 404
    # trim line 추가
405 405
    trimLineNoListNode = Element(TRIM_LINE_NOS_NODE_NAME)
......
436 436
            if node:
437 437
                resultDic[key][0] += 1
438 438
                _type = type(item)
439
                if issubclass(type(item), SymbolSvgItem) and type(item) is not QEngineeringEndBreakItem: _type = SymbolSvgItem
439
                if issubclass(type(item), SymbolSvgItem) : _type = SymbolSvgItem
440 440
                if _type in node_dictionary: node_dictionary[_type].append(node)
441 441
            else:
442 442
                resultDic[key][1].append(str(item.uid))
......
458 458
        xml.append(unknownListNode)
459 459
        xml.append(trimLineNoListNode)
460 460
        xml.append(vendorListNode)
461
        xml.append(endBreakListNode)
461
        #xml.append(endBreakListNode)
462 462
        ElementTree(xml).write(path)
463 463
    except Exception as ex:
464 464
        from App import App

내보내기 Unified diff

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