개정판 5ed7b446
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