프로젝트

일반

사용자정보

개정판 5ed7b446

ID5ed7b446fe73798a8b98e494f9b0aa47eaea3e44
상위 c49057e1
하위 b89eca62

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

issue #538: add line end break

Change-Id: I3eca7cb530119a39490cd8da769a06602e984219

차이점 보기:

DTI_PID/DTI_PID/LineNoTracer.py
413 413
    from QEngineeringOPCItem import QEngineeringOPCItem
414 414
    from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
415 415
    from EngineeringVendorItem import QEngineeringVendorItem
416
    from EngineeringEndBreakItem import QEngineeringEndBreakItem
416 417

  
417 418
    try:
418 419
        symbols = []
......
421 422
        specBreak = []
422 423
        lineIndicator = []
423 424
        vendor_packages = [item for item in worker.graphicsView.scene.items() if type(item) is QEngineeringVendorItem]
425
        end_breaks = [item for item in worker.graphicsView.scene.items() if type(item) is QEngineeringEndBreakItem]
426
        for end_break in end_breaks:
427
            worker.graphicsView.scene.removeItem(end_break)
424 428

  
425 429
        configs = AppDocData.instance().getConfigs('Supplied by Tag Rule', 'by Vendor')
426 430
        vendorTag = configs[0].value if configs else 'By Vendor'
DTI_PID/DTI_PID/MainWindow.py
48 48
from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
49 49
from EngineeringErrorItem import QEngineeringErrorItem
50 50
from EngineeringVendorItem import QEngineeringVendorItem
51
from EngineeringEndBreakItem import QEngineeringEndBreakItem
51 52
from AppDocData import *
52 53
import SymbolTreeWidget, SymbolPropertyTableWidget
53 54
import SymbolEditorDialog
......
2461 2462
                    item.transfer.onRemoved.connect(self.itemRemoved)
2462 2463
                    self.graphicsView.scene.addItem(item)
2463 2464

  
2465
            if root.find('END_BREAKS') is not None:
2466
                for end_break in root.find('END_BREAKS').iter('END_BREAK'):
2467
                    item = QEngineeringEndBreakItem.fromXml(end_break)
2468
                    self.graphicsView.scene.addItem(item)
2464 2469
            # up to here
2465 2470

  
2466 2471
            """ update scene """
DTI_PID/DTI_PID/Shapes/EngineeringEndBreakItem.py
41 41
    def keyPressEvent(self, event): 
42 42
        if self.isSelected() and event.key() == Qt.Key_Delete:
43 43
            self.scene().removeItem(self)
44

  
45
    @staticmethod 
46
    def fromXml(node):
47
        import uuid
48
        from AppDocData import AppDocData
49

  
50
        end_break = None
51

  
52
        try:
53
            docdata = AppDocData.instance()
54
            dataPath = docdata.getErrorItemSvgPath()
55

  
56
            uidNode = node.find('UID')
57
            uid = uidNode.text if uidNode is not None else uuid.uuid4() # generate UUID
58

  
59
            pt = [float(x) for x in node.find('LOCATION').text.split(',')]
60
            name = node.find('NAME').text
61
            origin = [float(x) for x in node.find('ORIGINALPOINT').text.split(',')]
62
            areaNode = node.find('AREA').text
63
            connectedLineNode = [uid for uid in node.find('CONNECTED_LINE').text.split(',')]
64

  
65
            end_break = SymbolSvgItem.createItem('End Break', dataPath)
66
            end_break.setPosition(pt, origin)
67
            end_break.connected_lines = [connectedLineNode[0], connectedLineNode[1]]
68
            end_break.setToolTip(str(end_break.connected_lines))
69
            end_break.area = areaNode
70
            end_break.name = name
71
        except Exception as ex:
72
            from App import App
73
            from AppDocData import MessageType
74

  
75
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
76
            App.mainWnd().addMessage.emit(MessageType.Error, message)
77

  
78
        return end_break
79

  
44 80
    
45 81
    def toXml(self):
46
        # on going
47
        return None
82
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree
83

  
84
        try:
85
            node = Element('END_BREAK')
86
            uidNode = Element('UID')
87
            uidNode.text = str(self.uid)
88
            node.append(uidNode)
89

  
90
            nameNode = Element('NAME')
91
            nameNode.text = self.name
92
            node.append(nameNode)
93

  
94
            areaNode = Element('AREA')
95
            areaNode.text = self.area
96
            node.append(areaNode)
97

  
98
            locNode = Element('LOCATION')
99
            locNode.text = '{},{}'.format(self.loc[0], self.loc[1])
100
            node.append(locNode)
101

  
102
            originNode = Element('ORIGINALPOINT')
103
            originNode.text = '{},{}'.format(self.origin[0], self.origin[1])
104
            node.append(originNode)
105

  
106
            connectedLineNode = Element('CONNECTED_LINE')
107
            connectedLineNode.text = '{},{}'.format(self.connected_lines[0], self.connected_lines[1])
108
            node.append(connectedLineNode)
109

  
110
        except Exception as ex:
111
            from App import App
112
            from AppDocData import MessageType
113

  
114
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
115
            App.mainWnd().addMessage.emit(MessageType.Error, message)
116

  
117
            return None
118

  
119
        return node 
DTI_PID/DTI_PID/Shapes/EngineeringLineNoTextItem.py
362 362
            if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem:
363 363
                end_break = SymbolSvgItem.createItem('End Break', dataPath)
364 364
                end_break.setPosition(line_from.connectors[0].center(), origin)
365
                end_break.parent = self
365
                #end_break.parent = self
366 366
                end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid]
367 367
                end_break.setToolTip(str(end_break.connected_lines))
368 368
                end_break.area = 'Drawing'
......
372 372
            if type(line_to) is QEngineeringLineItem and line_to.connectors[1].connectedItem is not None and type(line_to.connectors[1].connectedItem) is QEngineeringLineItem:
373 373
                end_break = SymbolSvgItem.createItem('End Break', dataPath)
374 374
                end_break.setPosition(line_to.connectors[1].center(), origin)
375
                end_break.parent = self
375
                #end_break.parent = self
376 376
                end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid]
377 377
                end_break.setToolTip(str(end_break.connected_lines))
378 378
                end_break.area = 'Drawing'
DTI_PID/DTI_PID/Shapes/EngineeringTextItem.py
217 217
        @date       2018.05.25
218 218
    '''
219 219
    def deleteTextItemFromScene(self):
220
        self.transfer.onRemoved.emit(self)
220
        #self.transfer.onRemoved.emit(self)
221 221
        self.scene().removeItem(self)
222 222

  
223 223
    '''
DTI_PID/DTI_PID/Shapes/EngineeringUnknownItem.py
295 295
    '''
296 296
    def deleteUnknownItemFromScene(self):
297 297
        self.transfer.onRemoved.emit(self)
298
        self.scene().removeItem(self)
298
        #self.scene().removeItem(self)
299 299

  
300 300
    def boundingRectOnScene(self):
301 301
        rect = self.sceneBoundingRect()
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
135 135
            @author euisung
136 136
            @date   2019.04.16
137 137
        '''
138
        from EngineeringErrorItem import QEngineeringErrorItem
139 138
        from EngineeringLineItem import QEngineeringLineItem
140 139
        from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
141 140
        errors = []
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 76

  
76 77
'''
77 78
    @brief  
......
374 375
    from EngineeringValveOperCodeTextItem import QEngineeringValveOperCodeTextItem
375 376
    from SymbolSvgItem import SymbolSvgItem
376 377
    from EngineeringVendorItem import QEngineeringVendorItem
378
    from EngineeringErrorItem import QEngineeringErrorItem
377 379
    from GraphicsBoundingBoxItem import QGraphicsBoundingBoxItem
380
    from EngineeringEndBreakItem import QEngineeringEndBreakItem
378 381

  
379 382
    appDocData = AppDocData.instance()
380 383
    items = []
......
391 394
    lineNoListNode = Element(LINE_NOS_NODE_NAME)
392 395
    unknownListNode = Element(UNKNOWNS_NODE_NAME)
393 396
    vendorListNode = Element(VENDOR_NODE_NAME)
397
    endBreakListNode = Element(END_BREAK)
394 398

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

  
399 404
    # trim line 추가
400 405
    trimLineNoListNode = Element(TRIM_LINE_NOS_NODE_NAME)
......
415 420
                    node = item.toXml(name='SIZE')
416 421
                elif type(item) is QEngineeringValveOperCodeTextItem:
417 422
                    node = item.toXml(name='VALVE OPER CODE')
418
                elif issubclass(type(item), QEngineeringAbstractItem) and type(item) is not QGraphicsBoundingBoxItem:
423
                elif issubclass(type(item), QEngineeringAbstractItem) and type(item) is not QGraphicsBoundingBoxItem and type(item) is not QEngineeringErrorItem:
419 424
                    node = item.toXml()
420 425
                else:
421 426
                    continue
......
431 436
            if node:
432 437
                resultDic[key][0] += 1
433 438
                _type = type(item)
434
                if issubclass(type(item), SymbolSvgItem): _type = SymbolSvgItem
439
                if issubclass(type(item), SymbolSvgItem) and type(item) is not QEngineeringEndBreakItem: _type = SymbolSvgItem
435 440
                if _type in node_dictionary: node_dictionary[_type].append(node)
436 441
            else:
437 442
                resultDic[key][1].append(str(item.uid))
......
453 458
        xml.append(unknownListNode)
454 459
        xml.append(trimLineNoListNode)
455 460
        xml.append(vendorListNode)
461
        xml.append(endBreakListNode)
456 462
        ElementTree(xml).write(path)
457 463
    except Exception as ex:
458 464
        from App import App

내보내기 Unified diff

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