개정판 0819fd28
issue #000: fixing initializtion for line tracer
Change-Id: I53d652bbc3b265cc18819444b95da76aa6003430
DTI_PID/DTI_PID/ItemTreeWidget.py | ||
---|---|---|
221 | 221 |
for i in reversed(range(self.LineNoTreeItem.childCount())): |
222 | 222 |
if not self.LineNoTreeItem.child(i).data(0, self.TREE_DATA_ROLE).prop('Freeze'): |
223 | 223 |
self.explode_line_no(self.LineNoTreeItem.child(i), remainFromTo) |
224 |
|
|
225 |
#for item in [item for item in self.scene.items() if hasattr(item, 'owner') |
|
224 | 226 |
|
225 | 227 |
def reverse_line_flow(self, lineNoTreeWidgetItem): |
226 | 228 |
""" reverse line flow """ |
DTI_PID/DTI_PID/LineNoTracer.py | ||
---|---|---|
148 | 148 |
from EngineeringLineItem import QEngineeringLineItem |
149 | 149 |
from SymbolSvgItem import SymbolSvgItem |
150 | 150 |
from EngineeringRunItem import QEngineeringRunItem |
151 |
from QEngineeringTrimLineNoTextItem import QEngineeringTrimLineNoTextItem |
|
152 |
from App import App |
|
153 | 151 |
|
154 | 152 |
try: |
155 | 153 |
docData = AppDocData.instance() |
... | ... | |
295 | 293 |
if updateProgress: updateProgress.emit(maxValue) |
296 | 294 |
|
297 | 295 |
### make trim lines |
298 |
pastTrim = docData.tracerLineNos |
|
299 |
treeWidget = App.mainWnd().itemTreeWidget |
|
300 |
for pastTrimIndex in reversed(range(len(pastTrim))): |
|
301 |
if type(pastTrim[pastTrimIndex]) is QEngineeringTrimLineNoTextItem: |
|
302 |
try: |
|
303 |
connected_items = pastTrim[pastTrimIndex].getConnectedItems() |
|
304 |
for item in connected_items: |
|
305 |
treeWidget.addTreeItem(treeWidget.SymbolsTreeItem, item) |
|
306 |
|
|
307 |
pastTrim[pastTrimIndex].explode() |
|
308 |
finally: |
|
309 |
pass |
|
310 |
|
|
311 | 296 |
updateProgress.emit(-1) # reset progressbar |
312 | 297 |
displayMessage.emit('Unknown line Topology Construction') |
313 | 298 |
orphanLines = [line for line in self._lines if line.owner is None] |
... | ... | |
457 | 442 |
from EngineeringVendorItem import QEngineeringVendorItem |
458 | 443 |
from EngineeringEndBreakItem import QEngineeringEndBreakItem |
459 | 444 |
from EngineeringReservedWordTextItem import QEngineeringReservedWordTextItem |
445 |
from QEngineeringTrimLineNoTextItem import QEngineeringTrimLineNoTextItem |
|
460 | 446 |
|
461 | 447 |
try: |
448 |
docdata = AppDocData.instance() |
|
462 | 449 |
symbols = [] |
463 | 450 |
lines = [] |
464 | 451 |
lineNos = [] |
... | ... | |
469 | 456 |
for end_break in end_breaks: |
470 | 457 |
worker.graphicsView.scene.removeItem(end_break) |
471 | 458 |
|
472 |
configs = AppDocData.instance().getConfigs('Supplied by Tag Rule', 'by Vendor')
|
|
459 |
configs = docdata.getConfigs('Supplied by Tag Rule', 'by Vendor')
|
|
473 | 460 |
vendorTag = configs[0].value if configs else 'By Vendor' |
474 | 461 |
for item in worker.graphicsView.scene.items(): |
475 | 462 |
if type(item) is QEngineeringSpecBreakItem: |
... | ... | |
492 | 479 |
elif issubclass(type(item), QEngineeringTextItem): |
493 | 480 |
item.owner = None |
494 | 481 |
|
482 |
# remove unknown line's |
|
483 |
pastTrim = docdata.tracerLineNos |
|
484 |
treeWidget = App.mainWnd().itemTreeWidget |
|
485 |
for pastTrimIndex in reversed(range(len(pastTrim))): |
|
486 |
if type(pastTrim[pastTrimIndex]) is QEngineeringTrimLineNoTextItem: |
|
487 |
try: |
|
488 |
connected_items = pastTrim[pastTrimIndex].getConnectedItems() |
|
489 |
for item in connected_items: |
|
490 |
treeWidget.addTreeItem(treeWidget.SymbolsTreeItem, item) |
|
491 |
pastTrim[pastTrimIndex].explode() |
|
492 |
finally: |
|
493 |
pass |
|
494 |
|
|
495 | 495 |
# trace line no |
496 | 496 |
tracer = LineNoTracer(symbols, lines, lineNos, specBreak, lineIndicator, vendor_packages) |
497 | 497 |
tracer.execute(worker.displayMessage, worker.updateProgress) |
... | ... | |
499 | 499 |
|
500 | 500 |
# connect attribute |
501 | 501 |
texts = [item for item in worker.graphicsView.scene.items() if issubclass(type(item), QEngineeringTextItem)] |
502 |
for text in texts: |
|
503 |
text.onwer = None |
|
502 | 504 |
for symbol in symbols: |
503 | 505 |
try: |
504 | 506 |
symbol.connectAttribute(texts) |
... | ... | |
526 | 528 |
for line in lines: line.update_line_type() |
527 | 529 |
|
528 | 530 |
"""make end break""" |
529 |
docdata = AppDocData.instance() |
|
530 |
|
|
531 | 531 |
end_break_names = docdata.getSymbolListByType('type', 'End Break') |
532 | 532 |
if len(end_break_names) is not 0: |
533 | 533 |
|
534 | 534 |
svgFileName = end_break_names[0].sName |
535 |
symbol = AppDocData.instance().getSymbolByQuery('name', svgFileName)
|
|
536 |
svgFilePath = os.path.join(AppDocData.instance().getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg')
|
|
535 |
symbol = docdata.getSymbolByQuery('name', svgFileName)
|
|
536 |
svgFilePath = os.path.join(docdata.getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg')
|
|
537 | 537 |
|
538 | 538 |
end_breaks = [] |
539 | 539 |
lineNo_froms = [] |
DTI_PID/DTI_PID/Shapes/EngineeringEquipmentItem.py | ||
---|---|---|
89 | 89 |
for attr in attrs: |
90 | 90 |
if rect.contains(attr.center()): |
91 | 91 |
self.add_assoc_item(attr) |
92 |
attr.onwer = self |
|
92 | 93 |
|
93 | 94 |
# not have equipment name which is located inside equipment |
94 | 95 |
if not 'Tag No' in self._associations or not self._associations['Tag No']: |
... | ... | |
103 | 104 |
minDist = dist |
104 | 105 |
selected = attr |
105 | 106 |
|
106 |
if selected is not None: self.add_assoc_item(selected) |
|
107 |
if selected is not None: |
|
108 |
self.add_assoc_item(selected) |
|
109 |
selected.onwer = self |
|
107 | 110 |
except Exception as ex: |
108 | 111 |
from App import App |
109 | 112 |
from AppDocData import MessageType |
DTI_PID/DTI_PID/Shapes/EngineeringInstrumentItem.py | ||
---|---|---|
175 | 175 |
attr.owner = self # set owner of text |
176 | 176 |
self.add_assoc_item(attr) |
177 | 177 |
elif issubclass(type(attr), SymbolSvgItem): |
178 |
attr._owner = self.uid # set owner of symbol
|
|
178 |
attr.owner = self # set owner of symbol
|
|
179 | 179 |
self.add_assoc_item(attr) |
180 | 180 |
except Exception as ex: |
181 | 181 |
from App import App |
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py | ||
---|---|---|
181 | 181 |
if self._owner and type(self._owner) is uuid.UUID: |
182 | 182 |
matches = [x for x in self.scene().items() if hasattr(x, 'uid') and str(x.uid) == str(self._owner)] |
183 | 183 |
if matches: self._owner = matches[0] |
184 |
|
|
185 |
return self._owner |
|
184 |
|
|
185 |
if type(self._owner) is not uuid.UUID and type(self._owner) is not str: |
|
186 |
return self._owner |
|
187 |
else: |
|
188 |
self._owner = None |
|
189 |
return None |
|
186 | 190 |
|
187 | 191 |
''' |
188 | 192 |
@brief setter owner |
DTI_PID/DTI_PID/Shapes/EngineeringNozzleItem.py | ||
---|---|---|
63 | 63 |
minDist = dist |
64 | 64 |
selected = attr |
65 | 65 |
|
66 |
if selected is not None: self.attrs.append(selected) |
|
66 |
if selected is not None: |
|
67 |
self.attrs.append(selected) |
|
68 |
selected.onwer = self |
DTI_PID/DTI_PID/Shapes/EngineeringReducerItem.py | ||
---|---|---|
101 | 101 |
dy = attr.center().y() - center.y() |
102 | 102 |
if math.sqrt(dx*dx + dy*dy) < dist*2: |
103 | 103 |
self.add_assoc_item(attr) |
104 |
attr.owner = self |
|
104 | 105 |
|
105 | 106 |
if selected is not None: |
106 | 107 |
self.add_assoc_item(selected) |
DTI_PID/DTI_PID/Shapes/EngineeringTextItem.py | ||
---|---|---|
74 | 74 |
return matches[0] if matches else None |
75 | 75 |
# up to here |
76 | 76 |
|
77 |
return self._owner |
|
77 |
if type(self._owner) is not uuid.UUID and type(self._owner) is not str: |
|
78 |
return self._owner |
|
79 |
else: |
|
80 |
self._owner = None |
|
81 |
return None |
|
78 | 82 |
|
79 | 83 |
''' |
80 | 84 |
@brief Set owner |
DTI_PID/DTI_PID/Shapes/QEngineeringOPCItem.py | ||
---|---|---|
86 | 86 |
for attr in attributes: |
87 | 87 |
if rect.contains(attr.center()): |
88 | 88 |
self.add_assoc_item(attr) |
89 |
attr.owner = self |
|
89 | 90 |
|
90 | 91 |
if 'Text Item' in self._associations and self._associations['Text Item']: |
91 | 92 |
if 0 == self.angle: |
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py | ||
---|---|---|
102 | 102 |
matches = [x for x in self.scene().items() if hasattr(x, 'uid') and str(x.uid) == str(self._owner)] |
103 | 103 |
if matches: self._owner = matches[0] |
104 | 104 |
|
105 |
return self._owner |
|
105 |
if type(self._owner) is not uuid.UUID and type(self._owner) is not str: |
|
106 |
return self._owner |
|
107 |
else: |
|
108 |
self._owner = None |
|
109 |
return None |
|
106 | 110 |
|
107 | 111 |
''' |
108 | 112 |
@brief setter owner |
... | ... | |
728 | 732 |
dy = attr.center().y() - center.y() |
729 | 733 |
if math.sqrt(dx*dx + dy*dy) < dist*2: |
730 | 734 |
self.add_assoc_item(attr) |
735 |
attr.owner = self |
|
731 | 736 |
|
732 | 737 |
if selected is not None: |
733 | 738 |
self.add_assoc_item(selected) |
내보내기 Unified diff