개정판 1430097d
display connectivity on result property window
DTI_PID/DTI_PID/DTI_PID.py | ||
---|---|---|
883 | 883 |
pool.extend(rhs) |
884 | 884 |
visited.extend(rhs) |
885 | 885 |
for item in rhs: |
886 |
item.arrangeLinePosition(line)
|
|
886 |
item.arrangeVertexOrder(line)
|
|
887 | 887 |
|
888 | 888 |
# skip jointed symbols |
889 | 889 |
symbolPool = [item for item in symbols if item not in visited and item.isJointed(line)] |
... | ... | |
908 | 908 |
pool.extend(rhs) |
909 | 909 |
visited.extend(rhs) |
910 | 910 |
for item in rhs: |
911 |
item.arrangePosition(line)
|
|
911 |
item.arrangeVertexOrder(line)
|
|
912 | 912 |
# up to here |
913 | 913 |
# up to here |
914 | 914 |
except Exception as ex: |
DTI_PID/DTI_PID/LineNoTracer.py | ||
---|---|---|
90 | 90 |
Jeongwoo 2018.05.17 Modify find secondary lines with 'while' |
91 | 91 |
Modify find secondary lines with 'while' used sublist for unconnected line |
92 | 92 |
humkyung 2018.05.18 set start line's owner before tracing |
93 |
humkyung 2018.07.05 update line type |
|
93 | 94 |
''' |
94 | 95 |
def execute(self, displayMessage, updateProgress, toler=50): |
95 | 96 |
from QEngineeringLineItem import QEngineeringLineItem |
... | ... | |
160 | 161 |
updateProgress.emit(maxValue) |
161 | 162 |
|
162 | 163 |
docData.lineNos.append(trimLineNo) |
163 |
|
|
164 |
|
|
164 | 165 |
updateProgress.emit(maxValue) |
165 | 166 |
except Exception as ex: |
166 | 167 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
746 | 746 |
approx = cv2.approxPolyDP(contour, epsilon, True) |
747 | 747 |
approx = [pt[0] for pt in approx] |
748 | 748 |
item = QEngineeringUnknownItem(approx) |
749 |
item.setPen(QPen(Qt.red, 5, Qt.DashDotLine)) |
|
749 |
item.setPen(QPen(Qt.red, 1, Qt.DashDotLine)) |
|
750 |
item.setBrush(QBrush(QColor(255, 255, 0, 127))) |
|
750 | 751 |
item.transfer.removed.connect(self.itemRemoved) |
751 | 752 |
self.addUnknownItemToScene(item) |
752 | 753 |
# up to here |
DTI_PID/DTI_PID/QConnectAttrDialog.py | ||
---|---|---|
145 | 145 |
import timeit |
146 | 146 |
|
147 | 147 |
try: |
148 |
# add flow mark |
|
149 |
''' |
|
150 |
self.ui.listWidget.addItem("FlowMark 생성") |
|
151 |
docData = AppDocData.instance() |
|
152 |
for lineno in docData.lineNos: |
|
153 |
for run in lineno.runs: |
|
154 |
run.addFlowMark() |
|
155 |
''' |
|
148 |
# update line type |
|
149 |
lines = [item for item in self.graphicsView.scene.items() if type(item) is QEngineeringLineItem] |
|
150 |
for line in lines: |
|
151 |
line.updateLineType() |
|
156 | 152 |
# up to here |
157 | 153 |
|
158 | 154 |
self.ui.progressBar.setValue(self.ui.progressBar.maximum()) |
DTI_PID/DTI_PID/QResultPropertyTableWidget.py | ||
---|---|---|
56 | 56 |
pt = item.endPoint() |
57 | 57 |
self.setItem(2, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1]))) |
58 | 58 |
|
59 |
self.setItem(3, 1, QTableWidgetItem('{}'.format('None' if item.conns[0] is None else item.conns[0]))) |
|
60 |
self.setItem(4, 1, QTableWidgetItem('{}'.format('None' if item.conns[1] is None else item.conns[1]))) |
|
61 |
|
|
59 | 62 |
''' |
60 | 63 |
@brief Initialize TableWidget |
61 | 64 |
@author Jeongwoo |
... | ... | |
146 | 149 |
|
147 | 150 |
try: |
148 | 151 |
if issubclass(type(item), SymbolSvgItem) or type(item) is SymbolSvgItem: |
152 |
self.setRowCount(3) |
|
153 |
|
|
149 | 154 |
widgetItem = QTableWidgetItem("심볼명") |
150 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
151 | 155 |
self.setItem(0, 0, widgetItem) |
152 | 156 |
widgetItem = QTableWidgetItem("타입") |
153 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
154 | 157 |
self.setItem(1, 0, widgetItem) |
155 | 158 |
widgetItem = QTableWidgetItem("각도") |
156 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
157 | 159 |
self.setItem(2, 0, widgetItem) |
158 | 160 |
elif type(item) is QEngineeringNoteItem: |
161 |
self.setRowCount(1) |
|
162 |
|
|
159 | 163 |
widgetItem = QTableWidgetItem("노트번호") |
160 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
161 | 164 |
self.setItem(0, 0, widgetItem) |
162 |
widgetItem = QTableWidgetItem("노트내용") |
|
163 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
164 |
self.setItem(1, 0, widgetItem) |
|
165 | 165 |
elif type(item) is QEngineeringLineNoTextItem: |
166 | 166 |
''' |
167 | 167 |
DO NOTHING / initLineNoCell |
168 | 168 |
''' |
169 | 169 |
elif type(item) is QEngineeringLineItem: |
170 |
self.setRowCount(5) |
|
171 |
|
|
170 | 172 |
widgetItem = QTableWidgetItem("타입") |
171 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
172 | 173 |
self.setItem(0, 0, widgetItem) |
173 | 174 |
widgetItem = QTableWidgetItem("시작점") |
174 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
175 | 175 |
self.setItem(1, 0, widgetItem) |
176 | 176 |
widgetItem = QTableWidgetItem("끝점") |
177 |
widgetItem.setFlags(Qt.ItemIsEnabled) |
|
178 | 177 |
self.setItem(2, 0, widgetItem) |
178 |
widgetItem = QTableWidgetItem("CONN1") |
|
179 |
self.setItem(3, 0, widgetItem) |
|
180 |
widgetItem = QTableWidgetItem("CONN2") |
|
181 |
self.setItem(4, 0, widgetItem) |
|
179 | 182 |
|
180 | 183 |
for index in range(self.rowCount()): |
181 | 184 |
item = self.item(index, 0) |
182 | 185 |
if item is not None: |
186 |
item.setFlags(Qt.ItemIsEnabled) |
|
183 | 187 |
item.setBackground(QColor(220, 220, 220)) |
184 | 188 |
except Exception as ex: |
185 | 189 |
print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)) |
... | ... | |
189 | 193 |
@author Jeongwoo |
190 | 194 |
@date 18.04.13 |
191 | 195 |
@history humkyung 2018.06.14 display symbol attributes |
196 |
humkyung 2018.07.05 display connectivity |
|
192 | 197 |
''' |
193 | 198 |
def initContentsCell(self): |
194 | 199 |
from QEngineeringInstrumentItem import QEngineeringInstrumentItem |
195 | 200 |
|
196 | 201 |
if self.symData is not None: |
202 |
self.setRowCount(3 + len(self.symData.getAttributes()) + len(self.symData.conns)) |
|
203 |
|
|
197 | 204 |
self.setItem(0, 1, QTableWidgetItem(self.symData.name)) |
198 | 205 |
self.setItem(1, 1, QTableWidgetItem(self.symData.type)) |
199 | 206 |
self.setItem(2, 1, QTableWidgetItem(str(round(math.degrees(self.symData.angle))))) |
200 | 207 |
|
208 |
row = 3 |
|
201 | 209 |
# display attributes of symbol |
202 | 210 |
attrs = self.symData.getAttributes() |
203 | 211 |
if attrs is not None: |
... | ... | |
207 | 215 |
value = attrItems[index][1] |
208 | 216 |
keyItem = QTableWidgetItem(key) |
209 | 217 |
keyItem.setBackground(QColor(220, 220, 220)) |
210 |
self.setItem(1 + index, 0, keyItem) |
|
211 |
self.setItem(1 + index, 1, QTableWidgetItem(value)) |
|
218 |
self.setItem(3 + index, 0, keyItem) |
|
219 |
self.setItem(3 + index, 1, QTableWidgetItem(value)) |
|
220 |
row = row + 1 |
|
221 |
# up to here |
|
222 |
|
|
223 |
# display connectivity |
|
224 |
count = 1 |
|
225 |
self.setRowCount(row + len(self.symData.conns)) |
|
226 |
for conn in self.symData.conns: |
|
227 |
item = QTableWidgetItem('CONN{}'.format(count)) |
|
228 |
item.setFlags(Qt.ItemIsEnabled) |
|
229 |
item.setBackground(QColor(220, 220, 220)) |
|
230 |
self.setItem(row, 0, item) |
|
231 |
|
|
232 |
item = QTableWidgetItem('{}'.format('None' if conn is None else conn)) |
|
233 |
item.setFlags(Qt.ItemIsEnabled) |
|
234 |
self.setItem(row, 1, item) |
|
235 |
row = row + 1 |
|
236 |
count = count + 1 |
|
212 | 237 |
# up to here |
213 | 238 |
else: |
214 |
for index in range(self.rowCount()): |
|
215 |
item = self.item(index, 1) |
|
216 |
if item is not None: |
|
217 |
item.setText("") |
|
239 |
self.setRowCount(0) |
|
218 | 240 |
|
219 | 241 |
''' |
220 | 242 |
@brief Initialize Note Contents Cell |
... | ... | |
223 | 245 |
''' |
224 | 246 |
def initNoteCell(self, noteNoStr, noteContentsList): |
225 | 247 |
self.setItem(0, 1, QTableWidgetItem(noteNoStr)) |
248 |
|
|
249 |
row = self.rowCount() |
|
250 |
count = 1 |
|
251 |
self.setRowCount(row + len(noteContentsList)) |
|
226 | 252 |
for index in range(len(noteContentsList)): |
227 |
self.setItem(1+index, 1, QTableWidgetItem(noteContentsList[index])) |
|
253 |
item = QTableWidgetItem("노트내용{}".format(count)) |
|
254 |
item.setFlags(Qt.ItemIsEnabled) |
|
255 |
self.setItem(row, 0, item) |
|
256 |
self.setItem(row, 1, QTableWidgetItem(noteContentsList[index])) |
|
257 |
row = row + 1 |
|
258 |
count = count + 1 |
|
228 | 259 |
|
229 | 260 |
''' |
230 | 261 |
@brief Initialize Line No Contents Cell |
... | ... | |
232 | 263 |
@date 18.05.10 |
233 | 264 |
''' |
234 | 265 |
def initLineNoCell(self, lineNoItem): |
266 |
self.setRowCount(1 + len(lineNoItem.getLineNoAttributes())) |
|
267 |
|
|
235 | 268 |
lineNoTitleItem = QTableWidgetItem("Line No.") |
236 | 269 |
lineNoTitleItem.setBackground(QColor(220, 220, 220)) |
270 |
lineNoTitleItem.setFlags(Qt.ItemIsEnabled) |
|
237 | 271 |
self.setItem(0, 0, lineNoTitleItem) |
238 | 272 |
self.setItem(0, 1, QTableWidgetItem(lineNoItem.text())) |
273 |
|
|
239 | 274 |
attrs = lineNoItem.getLineNoAttributes() |
240 | 275 |
if attrs is not None: |
241 | 276 |
attrItems = list(attrs.items()) |
... | ... | |
243 | 278 |
key = attrItems[index][0] |
244 | 279 |
value = attrItems[index][1] |
245 | 280 |
keyItem = QTableWidgetItem(key) |
281 |
keyItem.setFlags(Qt.ItemIsEnabled) |
|
246 | 282 |
keyItem.setBackground(QColor(220, 220, 220)) |
247 | 283 |
self.setItem(1 + index, 0, keyItem) |
248 | 284 |
self.setItem(1 + index, 1, QTableWidgetItem(value)) |
... | ... | |
253 | 289 |
@date 2018.05.27 |
254 | 290 |
''' |
255 | 291 |
def initLineRunCell(self, item): |
256 |
lineTypeItem = QTableWidgetItem("Line Type") |
|
292 |
self.setRowCount(1) |
|
293 |
|
|
294 |
lineTypeItem = QTableWidgetItem("라인 타입") |
|
257 | 295 |
lineTypeItem.setBackground(QColor(220, 220, 220)) |
296 |
lineTypeItem.setFlags(Qt.ItemIsEnabled) |
|
258 | 297 |
self.setItem(0, 0, lineTypeItem) |
259 | 298 |
self.setItem(0, 1, QTableWidgetItem(item.lineType)) |
DTI_PID/DTI_PID/Shapes/QEngineeringInstrumentItem.py | ||
---|---|---|
22 | 22 |
|
23 | 23 |
SymbolSvgItem.__init__(self, path) |
24 | 24 |
|
25 |
self._measuredVairableCode = None |
|
26 |
self._typeModifier = None |
|
27 |
self._tagSeqNo = None |
|
28 |
self._tagSuffix = None |
|
29 |
|
|
25 | 30 |
''' |
26 | 31 |
@brief getter of measured variable code |
27 | 32 |
@author humkyung |
DTI_PID/DTI_PID/Shapes/QEngineeringLineItem.py | ||
---|---|---|
336 | 336 |
return False |
337 | 337 |
|
338 | 338 |
''' |
339 |
@brief arrange position
|
|
339 |
@brief arrange vertex order
|
|
340 | 340 |
@author humkyung |
341 | 341 |
@date 2018.07.04 |
342 | 342 |
''' |
343 |
def arrangePosition(self, arranged):
|
|
343 |
def arrangeVertexOrder(self, arranged):
|
|
344 | 344 |
import math |
345 | 345 |
|
346 | 346 |
lhs = [arranged.startPoint(), arranged.endPoint()] |
... | ... | |
689 | 689 |
self.buildItem() |
690 | 690 |
self.update() |
691 | 691 |
|
692 |
''' |
|
693 |
@brief update line type |
|
694 |
@author humkyung |
|
695 |
@date 2018.07.05 |
|
696 |
''' |
|
697 |
def updateLineType(self): |
|
698 |
from QEngineeringInstrumentItem import QEngineeringInstrumentItem |
|
699 |
|
|
700 |
if len(self.conns) == 2: |
|
701 |
lines = [item for item in self.conns if item is not None and type(item) is QEngineeringLineItem] |
|
702 |
insts = [item for item in self.conns if item is not None and type(item) is QEngineeringInstrumentItem] |
|
703 |
|
|
704 |
if (len(lines) == 1 and len(insts) == 1) or (len(lines) == 0 and len(insts) == 1): |
|
705 |
instType = insts[0].measuredVariableCode + insts[0].typeModifier |
|
706 |
if instType in ['FT', 'PT', 'TT']: |
|
707 |
self.lineType = 'Connect To Process' |
|
708 |
elif len(insts) == 2: |
|
709 |
self.lineType = 'Electric' |
|
710 |
|
|
692 | 711 |
def hoverEnterEvent(self, event): |
693 | 712 |
pass |
694 | 713 |
|
내보내기 Unified diff