개정판 7d49ffed
issue #538: add end break and fix owner
Change-Id: I8f8cf3f9636961201f0218acb0c51c8a17f6dd4b
DTI_PID/DTI_PID/LineNoTracer.py | ||
---|---|---|
473 | 473 |
for lineNo in lineNos: |
474 | 474 |
for end_break in lineNo.end_break(): |
475 | 475 |
end_breaks.append(end_break) |
476 |
|
|
476 | 477 |
if end_breaks: |
478 |
''' |
|
479 |
# check dulplication |
|
477 | 480 |
dupl = set() |
478 | 481 |
for i in range(len(end_breaks)): |
479 | 482 |
for j in range(len(end_breaks)): |
... | ... | |
492 | 495 |
dupl.sort(reverse=True) |
493 | 496 |
for index in dupl: |
494 | 497 |
end_breaks.pop(index) |
498 |
''' |
|
495 | 499 |
|
496 | 500 |
for end_break in end_breaks: |
497 | 501 |
end_break.addSvgItemToScene(worker.graphicsView.scene) |
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
2322 | 2322 |
QApplication.processEvents() |
2323 | 2323 |
|
2324 | 2324 |
# set symbol's owner |
2325 |
childItems = [item for item in symbols if item[1] is not None] |
|
2326 |
for item in childItems: |
|
2327 |
matches = [param for param in symbols if str(param[0].uid) == str(item[1])] |
|
2328 |
if len(matches) == 1: |
|
2329 |
item[0].owner = matches[0][0] |
|
2325 |
# childItems = [item for item in symbols if item[1] is not None]
|
|
2326 |
# for item in childItems:
|
|
2327 |
# matches = [param for param in symbols if str(param[0].uid) == str(item[1])]
|
|
2328 |
# if len(matches) == 1:
|
|
2329 |
# item[0].owner = matches[0][0]
|
|
2330 | 2330 |
# up to here |
2331 | 2331 |
|
2332 | 2332 |
""" add item to scene and tree widget """ |
DTI_PID/DTI_PID/Shapes/EngineeringEndBreakItem.py | ||
---|---|---|
26 | 26 |
def __init__(self, path, uid=None, flip=0): |
27 | 27 |
SymbolSvgItem.__init__(self, path, uid, flip=flip) |
28 | 28 |
self.setZValue(QEngineeringEndBreakItem.ZVALUE) |
29 |
self.connected_lines = [] |
|
30 |
|
|
31 |
attr = SymbolAttr() |
|
32 |
attr.Attribute = 'End Break Line 1' |
|
33 |
attr.AttributeType = 'Line Item' |
|
34 |
self.attrs[attr] = None |
|
35 |
attr = SymbolAttr() |
|
36 |
attr.Attribute = 'End Break Line 2' |
|
37 |
attr.AttributeType = 'Line Item' |
|
38 |
self.attrs[attr] = None |
|
29 |
#self.connected_lines = [] |
|
39 | 30 |
|
40 | 31 |
''' |
41 | 32 |
def setPosition(self, loc, origin): |
... | ... | |
55 | 46 |
if self.isSelected() and event.key() == Qt.Key_Delete: |
56 | 47 |
self.scene().removeItem(self) |
57 | 48 |
|
58 |
def toXml(self): |
|
59 |
'''is not finished, check later in svgitem toxml and item table widget''' |
|
60 |
return None |
|
61 | 49 |
''' |
62 | 50 |
@staticmethod |
63 | 51 |
def fromXml(node): |
DTI_PID/DTI_PID/Shapes/EngineeringLineNoTextItem.py | ||
---|---|---|
367 | 367 |
symbol = AppDocData.instance().getSymbolByQuery('name', svgFileName) |
368 | 368 |
svgFilePath = os.path.join(AppDocData.instance().getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg') |
369 | 369 |
|
370 |
if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem: |
|
371 |
end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath) |
|
372 |
pt = [line_from.connectors[0].center()[0] - float(symbol.getOriginalPoint().split(',')[0]), line_from.connectors[0].center()[1] - float(symbol.getOriginalPoint().split(',')[1])] |
|
373 |
origin = [0,0] |
|
374 |
if 2 == len(symbol.getOriginalPoint().split(',')): |
|
375 |
tokens = symbol.getOriginalPoint().split(',') |
|
376 |
origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])] |
|
377 |
end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel()) |
|
378 |
end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid] |
|
379 |
end_break.setToolTip(str(end_break.connected_lines)) |
|
380 |
end_break.area = 'Drawing' |
|
381 |
end_breaks.append(end_break) |
|
370 |
#if type(line_from) is QEngineeringLineItem and line_from.connectors[0].connectedItem is not None and type(line_from.connectors[0].connectedItem) is QEngineeringLineItem:
|
|
371 |
# end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath)
|
|
372 |
# pt = [line_from.connectors[0].center()[0] - float(symbol.getOriginalPoint().split(',')[0]), line_from.connectors[0].center()[1] - float(symbol.getOriginalPoint().split(',')[1])]
|
|
373 |
# origin = [0,0]
|
|
374 |
# if 2 == len(symbol.getOriginalPoint().split(',')):
|
|
375 |
# tokens = symbol.getOriginalPoint().split(',')
|
|
376 |
# origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])]
|
|
377 |
# end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel())
|
|
378 |
# end_break.connected_lines = [line_from.uid, line_from.connectors[0].connectedItem.uid]
|
|
379 |
# end_break.setToolTip(str(end_break.connected_lines))
|
|
380 |
# end_break.area = 'Drawing'
|
|
381 |
# end_breaks.append(end_break)
|
|
382 | 382 |
|
383 | 383 |
if type(line_to) is QEngineeringLineItem and line_to.connectors[1].connectedItem is not None and type(line_to.connectors[1].connectedItem) is QEngineeringLineItem: |
384 | 384 |
end_break = SymbolSvgItem.createItem(symbol.getType(), svgFilePath) |
... | ... | |
389 | 389 |
tokens = symbol.getOriginalPoint().split(',') |
390 | 390 |
origin = [pt[0] + float(tokens[0]), pt[1] + float(tokens[1])] |
391 | 391 |
end_break.buildItem(svgFileName, symbol.getType(), 5.7, pt, [end_break.boundingRect().width(), end_break.boundingRect().height()], origin, [], symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getHasInstrumentLabel()) |
392 |
end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid] |
|
393 |
end_break.setToolTip(str(end_break.connected_lines))
|
|
392 |
#end_break.connected_lines = [line_to.uid, line_to.connectors[1].connectedItem.uid]
|
|
393 |
end_break.setToolTip('owner : ' + str(line_to))
|
|
394 | 394 |
end_break.area = 'Drawing' |
395 |
end_break.owner = line_to |
|
395 | 396 |
end_breaks.append(end_break) |
396 | 397 |
''' |
397 | 398 |
end_break = SymbolSvgItem.createItem('End Break', dataPath) |
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py | ||
---|---|---|
91 | 91 |
''' |
92 | 92 |
@property |
93 | 93 |
def owner(self): |
94 |
import uuid |
|
95 |
|
|
96 |
if self._owner and type(self._owner) is uuid.UUID: |
|
97 |
matches = [x for x in self.scene().items() if hasattr(x, 'uid') and str(x.uid) == str(self._owner)] |
|
98 |
if matches: self._owner = matches[0] |
|
99 |
|
|
94 | 100 |
return self._owner |
95 | 101 |
|
96 | 102 |
''' |
... | ... | |
899 | 905 |
project = appDocData.getCurrentProject() |
900 | 906 |
svgFilePath = os.path.join(project.getSvgFilePath(), _type, name + '.svg') |
901 | 907 |
if os.path.isfile(svgFilePath): |
902 |
item[0] = SymbolSvgItem.createItem(_type, svgFilePath, uid, flip=flipLabel) |
|
903 |
#item[0].setVisible(False)
|
|
908 |
item[0] = SymbolSvgItem.createItem(_type, svgFilePath, uid, owner=owner, flip=flipLabel)
|
|
909 |
item[0].setVisible(False) |
|
904 | 910 |
item[0].buildItem(name, _type, angle, pt, size, origin, connPts, baseSymbol, childSymbol, hasInstrumentLabel) |
905 | 911 |
|
906 | 912 |
for prop_node in node.iter('PROPERTY'): |
... | ... | |
983 | 989 |
humkyung 2018.07.19 create nozzle instance if type is 'Nozzles' |
984 | 990 |
''' |
985 | 991 |
@staticmethod |
986 |
def createItem(type, path, uid=None, flip=0): |
|
992 |
def createItem(type, path, uid=None, owner=None, flip=0):
|
|
987 | 993 |
from QEngineeringOPCItem import QEngineeringOPCItem |
988 | 994 |
from EngineeringEquipmentItem import QEngineeringEquipmentItem |
989 | 995 |
from EngineeringInstrumentItem import QEngineeringInstrumentItem |
... | ... | |
993 | 999 |
from EngineeringErrorItem import QEngineeringErrorItem |
994 | 1000 |
from EngineeringEndBreakItem import QEngineeringEndBreakItem |
995 | 1001 |
from AppDocData import AppDocData |
1002 |
import uuid |
|
996 | 1003 |
|
997 | 1004 |
docData = AppDocData.instance() |
998 | 1005 |
|
... | ... | |
1017 | 1024 |
else: |
1018 | 1025 |
item = SymbolSvgItem(path, uid, flip=flip) |
1019 | 1026 |
|
1027 |
item.owner = uuid.UUID(owner, version=4) |
|
1028 |
|
|
1020 | 1029 |
return item |
1021 | 1030 |
|
1022 | 1031 |
''' |
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 |
#END_BREAK = "END_BREAKS"
|
|
76 | 76 |
|
77 | 77 |
''' |
78 | 78 |
@brief |
... | ... | |
394 | 394 |
lineNoListNode = Element(LINE_NOS_NODE_NAME) |
395 | 395 |
unknownListNode = Element(UNKNOWNS_NODE_NAME) |
396 | 396 |
vendorListNode = Element(VENDOR_NODE_NAME) |
397 |
endBreakListNode = Element(END_BREAK) |
|
397 |
#endBreakListNode = Element(END_BREAK)
|
|
398 | 398 |
|
399 | 399 |
node_dictionary = {SymbolSvgItem:symbolListNode, QEngineeringTextItem:textInfoListNode, QEngineeringNoteItem:noteTextInfoListNode, |
400 | 400 |
QEngineeringLineItem:lineListNode, QEngineeringLineNoTextItem:lineNoListNode, QEngineeringUnknownItem:unknownListNode, |
401 |
QEngineeringSizeTextItem:textInfoListNode, QEngineeringValveOperCodeTextItem:textInfoListNode, QEngineeringVendorItem:vendorListNode,
|
|
402 |
QEngineeringEndBreakItem:endBreakListNode} |
|
401 |
QEngineeringSizeTextItem:textInfoListNode, QEngineeringValveOperCodeTextItem:textInfoListNode, QEngineeringVendorItem:vendorListNode}
|
|
402 |
#QEngineeringEndBreakItem:endBreakListNode}
|
|
403 | 403 |
|
404 | 404 |
# trim line 추가 |
405 | 405 |
trimLineNoListNode = Element(TRIM_LINE_NOS_NODE_NAME) |
... | ... | |
436 | 436 |
if node: |
437 | 437 |
resultDic[key][0] += 1 |
438 | 438 |
_type = type(item) |
439 |
if issubclass(type(item), SymbolSvgItem) and type(item) is not QEngineeringEndBreakItem: _type = SymbolSvgItem
|
|
439 |
if issubclass(type(item), SymbolSvgItem) : _type = SymbolSvgItem |
|
440 | 440 |
if _type in node_dictionary: node_dictionary[_type].append(node) |
441 | 441 |
else: |
442 | 442 |
resultDic[key][1].append(str(item.uid)) |
... | ... | |
458 | 458 |
xml.append(unknownListNode) |
459 | 459 |
xml.append(trimLineNoListNode) |
460 | 460 |
xml.append(vendorListNode) |
461 |
xml.append(endBreakListNode) |
|
461 |
#xml.append(endBreakListNode)
|
|
462 | 462 |
ElementTree(xml).write(path) |
463 | 463 |
except Exception as ex: |
464 | 464 |
from App import App |
내보내기 Unified diff