개정판 3521c798
load test
Change-Id: Ie055ff8a910cb34ae0baba1327ca0d471b0ac455
DTI_PID/DTI_PID/Commands/LoadCommand.py | ||
---|---|---|
98 | 98 |
app_doc_data.clearTempDBData() |
99 | 99 |
|
100 | 100 |
def load_data_from_xml(self, drawing, scene, symbol, text, line, unknown, package) -> int: |
101 |
item_dic = {} |
|
102 |
|
|
101 | 103 |
def find_item(scene, uid): |
102 | 104 |
items = [item for item in scene.items() if hasattr(item, 'uid') and str(item.uid) == str(uid)] |
103 | 105 |
return items[0] if items else None |
104 | 106 |
|
105 |
def find_items(scene, uids): |
|
107 |
def find_items(scene, uids, lineNo=None): |
|
108 |
nonlocal item_dic |
|
109 |
|
|
106 | 110 |
uids = [str(uid) for uid in uids] |
107 |
items = [(item, uids.index(str(item.uid))) for item in scene.items() if hasattr(item, 'uid') and str(item.uid) in uids] |
|
111 |
|
|
112 |
if lineNo and str(lineNo.uid) in item_dic: |
|
113 |
items = [(item, uids.index(str(item.uid))) for item in [_item for _item in item_dic[str(lineNo.uid)] if str(item.uid) in uids]] |
|
114 |
else: |
|
115 |
items = [(item, uids.index(str(item.uid))) for item in scene.items() if hasattr(item, 'uid') and str(item.uid) in uids] |
|
108 | 116 |
|
109 | 117 |
items = [item[0] for item in sorted(items, key= lambda param:param[1])] |
110 | 118 |
|
111 | 119 |
return items |
112 | 120 |
|
121 |
def add_item_dict(item): |
|
122 |
nonlocal item_dic |
|
123 |
|
|
124 |
if item._owner and str(item._owner) in item_dic: |
|
125 |
item_dic[str(item._owner)].append(item) |
|
126 |
elif item._owner: |
|
127 |
item_dic[str(item._owner)] = [item] |
|
128 |
|
|
113 | 129 |
import concurrent.futures as futures |
114 | 130 |
from xml.etree.ElementTree import Element, SubElement, dump, ElementTree, parse |
115 | 131 |
from App import App |
... | ... | |
157 | 173 |
symbols.append(item) |
158 | 174 |
#app_doc_data.symbols.append(item) |
159 | 175 |
item.addSvgItemToScene(scene) |
176 |
|
|
177 |
add_item_dict(item) |
|
160 | 178 |
else: |
161 | 179 |
pt = [float(x) for x in symbol.find('LOCATION').text.split(',')] |
162 | 180 |
size = [float(x) for x in symbol.find('SIZE').text.split(',')] |
... | ... | |
181 | 199 |
attributeValue = text.find('ATTRIBUTEVALUE') |
182 | 200 |
name = text.find('NAME').text |
183 | 201 |
item.addTextItemToScene(scene) |
184 |
# docData.texts.append(item) |
|
185 | 202 |
|
186 | 203 |
if name == 'TEXT': |
187 | 204 |
if uid is not None and attributeValue is not None: |
... | ... | |
218 | 235 |
scene.addItem(item) |
219 | 236 |
lines.append(item) |
220 | 237 |
|
238 |
add_item_dict(item) |
|
239 |
|
|
221 | 240 |
value = value + 1 |
222 | 241 |
self.show_progress.emit(value) |
223 | 242 |
|
... | ... | |
268 | 287 |
# run_item._owner = line_no |
269 | 288 |
# line_run.items.append(run_item) |
270 | 289 |
# ''' |
271 |
run_items = find_items(scene, uids) |
|
290 |
#run_items = find_items(scene, uids) |
|
291 |
run_items = find_items(scene, uids, line_no) |
|
272 | 292 |
for run_item in run_items: |
273 | 293 |
run_item._owner = line_no |
274 | 294 |
line_run.items.append(run_item) |
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py | ||
---|---|---|
1585 | 1585 |
endPoint = [float(x) for x in node.find('ENDPOINT').text.split(',')] |
1586 | 1586 |
|
1587 | 1587 |
item = QEngineeringLineItem(vertices=[startPoint, endPoint], uid=uid) |
1588 |
if owner: |
|
1589 |
item._owner = owner |
|
1588 | 1590 |
item.setVisible(False) |
1589 | 1591 |
item.lineType = node.find('TYPE').text if node.find('TYPE') is not None else 'Secondary' |
1590 | 1592 |
# assign area |
내보내기 Unified diff