프로젝트

일반

사용자정보

개정판 ef580b4f

IDef580b4fb745588781f66b9d2338ae99e0e83f97
상위 1f6a4d9a
하위 61b7725a

humkyung 이(가) 약 7년 전에 추가함

fixed a routine tracing secondary line

차이점 보기:

DTI_PID/DTI_PID/LineNoTracer.py
36 36
    def execute(self, toler=50):
37 37
        from QEngineeringLineItem import QEngineeringLineItem
38 38
        from SymbolSvgItem import SymbolSvgItem
39
        from QEngineeringRunItem import QEngineeringRunItem
39 40

  
40 41
        try:
41 42
            docData = AppDocData.instance()
......
63 64
                for lineno in docData.lineNos:
64 65
                    if 1 == len(lineno.conns):
65 66
                        lineno.conns[0].owner = lineno  # set conns's owner to line no
66
                        self.findConnectedObjects(lineno, lineno.conns[0], toler=10)
67
                        connectedItems = lineno.getConnectedItems()
67
                        connectedItems = self.findConnectedObjects(lineno.conns[0], toler=10)
68 68
                        for item in connectedItems: item.owner = lineno # set item's owner
69 69
                        
70
                        pipeRun = QEngineeringRunItem()
70 71
                        connectedLines = [item for item in connectedItems if type(item) is QEngineeringLineItem]
71
                        connectedSymbols = [item for item in connectedItems if issubclass(type(item), SymbolSvgItem)]
72
                        lineno.runs.append(connectedSymbols)
72
                        pipeRun.items = [item for item in connectedItems if issubclass(type(item), SymbolSvgItem)]
73
                        lineno.runs.append(pipeRun)
73 74
                        
74 75
                        maxLength = None
75 76
                        maxLengthItem = None
......
88 89
                    matches = [x for x in self._lines if x.owner is not None and x.isConnectable(line)]
89 90
                    if matches:
90 91
                        connectedItems = self.findConnectedObjects(line, toler=10)
91
                        for item in connectedItems: item.owner = matches[0].owner
92
                        for item in connectedItems: item.owner = matches[0].owner   # set item's owner
92 93

  
94
                        pipeRun = QEngineeringRunItem()
93 95
                        connectedLines = [item for item in connectedItems if type(item) is QEngineeringLineItem]
94
                        connectedSymbols = [item for item in connectedItems if issubclass(type(item), SymbolSvgItem)]
95
                        if connectedSymbols is not None and len(connectedSymbols) > 0:
96
                            matches[0].owner.runs.append(connectedSymbols)
96
                        pipeRun.items = [item for item in connectedItems if issubclass(type(item), SymbolSvgItem)]
97
                        if pipeRun.items is not None and len(pipeRun.items) > 0:
98
                            matches[0].owner.runs.append(pipeRun)
97 99
                        
98 100
                        maxLength = None
99 101
                        maxLengthItem = None
......
114 116
        @history    humkyung 2018.05.08 find symbol or line connected to given object
115 117
                    humkyung 2018.05.10 set found object's owner
116 118
    '''
117
    def findConnectedObjects(self, owner, startLine, toler):
119
    def findConnectedObjects(self, startLine, toler):
118 120
        from QEngineeringLineItem import QEngineeringLineItem
119 121
        from SymbolSvgItem import SymbolSvgItem
120 122

  
DTI_PID/DTI_PID/QResultTreeWidget.py
102 102
        self.root.addChild(QTreeWidgetItem(['NOTES']))
103 103

  
104 104
    '''
105
        @brief  create tree item for pipe run if need
106
        @author humkyung
107
        @date   2018.05.15
108
    '''
109
    def addPipeRunTreeItemIfNeed(self, lineNoTreeItem, pipeRun):
110
        for index in range(lineNoTreeItem.childCount()):
111
            treeItem = lineNoTreeItem.child(index)
112
            itemData = treeItem.data(0, self.TREE_DATA_ROLE)
113
            if itemData is not None and itemData == pipeRun.uid:
114
                return treeItem
115

  
116
        runItem = QTreeWidgetItem(['RUNS {}'.format(lineNoTreeItem.childCount()+1)])
117
        runItem.setData(0, self.TREE_DATA_ROLE, pipeRun.uid)
118
        lineNoTreeItem.addChild(runItem)
119

  
120
        return runItem
121

  
122
    '''
105 123
        @brief      add a tree item
106 124
        @author     humkyung
107 125
        @date       2018.04.17
......
151 169
                        if type(parentData) is QEngineeringLineNoTextItem:
152 170
                            for index in range(len(parentData.runs)):
153 171
                                runGroup = parentData.runs[index]
154
                                if data in runGroup:
155
                                    item.parent().removeChild(item)
156
                                    runParent = parent.child(index)
172
                                if data in runGroup.items:
173
                                    item.parent().removeChild(item) # remove item from original parent
174
                                    runItem = self.addPipeRunTreeItemIfNeed(parent, runGroup) #parent.child(index)
157 175
                                    brush = parent.foreground(0)
158 176
                                    item.setForeground(0, brush)
159 177
                                    item.data(0, self.TREE_DATA_ROLE).setColor(brush.color().name())
160 178
                                    item.setFont(0, item.font(0))
161
                                    runParent.addChild(item)
179
                                    runItem.addChild(item)
162 180
                                else:
163 181
                                    print(item.text(0) + " Not Found on " + parent.text(0))
164

  
165 182
                        #brush = parent.foreground(0)
166 183
                        #item.setForeground(0, brush)
167 184
                        #item.data(0, self.TREE_DATA_ROLE).setColor(brush.color().name())
......
174 191
                for item in foundItems:
175 192
                    data = item.data(0, self.TREE_DATA_ROLE)
176 193
                    if data is not None and (data == child):
177
                        for index in range(len(data.runs)):
178
                            item.addChild(QTreeWidgetItem(['RUNS' + str(index+1)]))
194
                        #for index in range(len(data.runs)):
195
                        #    item.addChild(QTreeWidgetItem(['RUNS' + str(index+1)]))
179 196
                        return item
180 197

  
181 198
        return item
DTI_PID/DTI_PID/Shapes/QEngineeringLineNoTextItem.py
28 28
    def __init__(self, parent=None):
29 29
        import uuid
30 30
        
31
        self.runs = []
32

  
33 31
        QEngineeringTextItem.__init__(self, parent)
34 32
        
35 33
        self._runs = []
DTI_PID/DTI_PID/Shapes/QEngineeringRunItem.py
12 12
    except ImportError:
13 13
        raise ImportError("ImageViewerQt: Requires PyQt5 or PyQt4.")
14 14

  
15
from QGraphicsPolylineItem import QGraphicsPolylineItem
16

  
17
class QEngineeringRunItem(QGraphicsPolylineItem):
18
    def __init__(self, parent=None):
19
        QGraphicsPolylineItem.__init__(self, parent)
15
from QEngineeringAbstractItem import QEngineeringAbstractItem
20 16

  
17
class QEngineeringRunItem(QEngineeringAbstractItem):
18
    def __init__(self):
19
        import uuid
20
        QEngineeringAbstractItem.__init__(self)
21 21

  
22
        self.uid = uuid.uuid4() # generate UUID
23
        self._items = []
22 24

  
25
    '''
26
        @brief  getter of items
27
        @author humkyung
28
        @date   2018.05.15
29
    '''
30
    @property
31
    def items(self):
32
        return self._items
23 33

  
34
    '''
35
        @brief  setter of items
36
        @author humkyung
37
        @date   2018.05.15
38
    '''
39
    @items.setter
40
    def items(self, value):
41
        self._items = value

내보내기 Unified diff

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