개정판 ef580b4f
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