프로젝트

일반

사용자정보

개정판 ba959d7e

IDba959d7ecda6ee372dfb75dcbced943d65700a1b
상위 6ecd216e
하위 fe9b2bbf

함의성이(가) 2년 이상 전에 추가함

cad symbol import

Change-Id: I5c2d175057ba402ca224b008a38176667291b961

차이점 보기:

DTI_PID/DTI_PID/BMSettingDialog.py
32 32
    def __init__(self, parent=None, *args):
33 33
        QStandardItemModel.__init__(self, parent, *args)
34 34

  
35
        self.SymbolList = [ "CAP", "DRAIN CUP", "EOL", "FLANGE", "FLANGE BLIND", "ORIFICE", "SCREW CAP", \
35
        self.SymbolList = [ "CAP", "DRAIN CUP", "EOL", "FLANGE", "FLANGE BLIND", "ORIFICE", "PLUG", "SCREW CAP", \
36 36
            "3WAY", "4WAY", "ANGLE", "BALL", "BUTTERFLY", "CHECK", "DIAPHRAMVALVE", "GATE", "GLOBE", "NEEDLE", "PLUGVALVE", \
37 37
            "CONTROL(ANGLE)", "CONTROL(BALL)", "CONTROL(BUTTERFLY)", "CONTROL(CHECK)", "CONTROL(GATE)", "CONTROL(GLOBE)", "CONTROL(NEEDLE)", "CONTROL(PLUG)", \
38 38
            "MOV(ANGLE)", "MOV(BALL)", "MOV(BUTTERFLY)", "MOV(CHECK)", "MOV(GATE)", "MOV(GLOBE)", "MOV(NEEDLE)", "MOV(PLUG)", "MAGNETIC FLOW METER", "MASS FLOW METER", "ULTRASONIC FLOW METER", "VORTEX FLOW METER", "OPC", \
DTI_PID/DTI_PID/ImportTextFromCADDialog.py
10 10
from functools import reduce, partial
11 11
import subprocess
12 12
from xml.etree.ElementTree import Element, SubElement, dump, ElementTree, parse
13
from SymbolRegiDataListDialog import QSymbolRegiDataListDialog
13 14

  
14 15
import ImportTextFromCAD_UI
15 16

  
......
472 473
                from App import App
473 474
                from AppDocData import MessageType
474 475

  
475
                message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
476
                          f"{sys.exc_info()[-1].tb_lineno}"
477
                QMessageBox.warning(self, 'Warning', message)
476
                message = f'error occurred({ex}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:' \
477
                      f'{sys.exc_info()[-1].tb_lineno}'
478
                App.mainWnd().addMessage.emit(MessageType.Error, message)
478 479

  
479 480
    def on_load_line_type_mapping(self):
480 481
        """load ID2-AutoCAD """
......
511 512
                from App import App
512 513
                from AppDocData import MessageType
513 514

  
514
                message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
515
                          f"{sys.exc_info()[-1].tb_lineno}"
516
                QMessageBox.warning(self, 'Warning', message)
515
                message = f'error occurred({ex}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:' \
516
                      f'{sys.exc_info()[-1].tb_lineno}'
517
                App.mainWnd().addMessage.emit(MessageType.Error, message)
517 518

  
518 519
        model = LineTypeMappingModel()
519 520
        model.invisibleRootItem()
......
588 589
                from App import App
589 590
                from AppDocData import MessageType
590 591

  
591
                message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
592
                          f"{sys.exc_info()[-1].tb_lineno}"
593
                QMessageBox.warning(self, 'Warning', message)
592
                message = f'error occurred({ex}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:' \
593
                      f'{sys.exc_info()[-1].tb_lineno}'
594
                App.mainWnd().addMessage.emit(MessageType.Error, message)
594 595

  
595 596
        model = SymbolMappingModel()
596 597
        model.invisibleRootItem()
......
798 799
        import XmlGenerator as xg
799 800
        import uuid
800 801
        from Drawing import Drawing
801
        from SymbolEditorDialog import QSymbolEditorDialog
802 802
        from App import App
803 803

  
804 804
        if not self._dwgs:
......
857 857
                            if node[0] not in symbols:
858 858
                                symbols[node[0]] = node
859 859

  
860
                    dialog = QSymbolRegiDataListDialog(self, image, symbols)
861
                    dialog.show()
862
                    
863
                    '''
860 864
                    for key, value in symbols.items():
861 865
                        symbolEditorDialog = QSymbolEditorDialog(self, image.copy(math.floor(value[2][0]), math.floor(value[2][1]), \
862 866
                                                                    math.ceil(value[3] + 1), math.ceil(value[4] + 1)), \
......
867 871
                            reply = QMessageBox.question(self, self.tr('Stop?'), self.tr('Do you want to stop registering symbols?'), QMessageBox.Yes, QMessageBox.Cancel)
868 872
                            if reply == QMessageBox.Yes:
869 873
                                break
874
                    '''
870 875
                    
871
                    App.mainWnd().symbolTreeWidget.initSymbolTreeView()
876
                    #App.mainWnd().symbolTreeWidget.initSymbolTreeView()
872 877

  
873 878
                except Exception as ex:
874 879
                    from App import App 
......
1146 1151

  
1147 1152
            message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
1148 1153
                      f"{sys.exc_info()[-1].tb_lineno}"
1149

  
1150 1154
            App.mainWnd().addMessage.emit(MessageType.Error, message)
1151 1155

  
1152 1156
        return None
......
1231 1235

  
1232 1236
            message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
1233 1237
                      f"{sys.exc_info()[-1].tb_lineno}"
1234

  
1235 1238
            App.mainWnd().addMessage.emit(MessageType.Error, message)
1236 1239

  
1237 1240
        return None
......
1296 1299

  
1297 1300
            message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
1298 1301
                      f"{sys.exc_info()[-1].tb_lineno}"
1299

  
1300 1302
            App.mainWnd().addMessage.emit(MessageType.Error, message)
1301 1303

  
1302 1304
    def lines_to_xml(self, layers: list, line_types: list, line_node) -> list:
......
1381 1383

  
1382 1384
            message = f"error occurred({repr(ex)}) in {sys.exc_info()[-1].tb_frame.f_code.co_filename}:" \
1383 1385
                      f"{sys.exc_info()[-1].tb_lineno}"
1384

  
1385 1386
            App.mainWnd().addMessage.emit(MessageType.Error, message)
1386 1387

  
1387 1388
        return None
DTI_PID/DTI_PID/SymbolRegiDataListDialog.py
1
import sys
2
from PyQt5.QtCore import *
3
from PyQt5.QtGui import *
4
from PyQt5.QtWidgets import *
5
from AppDocData import AppDocData
6
import SymbolRegiDataList_UI
7
from SpellTextEdit import SpellTextEdit
8
from SymbolEditorDialog import QSymbolEditorDialog
9
import math
10

  
11

  
12
class forDoubleClicked():
13
    def buttons(self):
14
        return Qt.LeftButton
15

  
16

  
17
class QSymbolRegiDataListDialog(QDialog):
18
    """ This is text image data list dialog class """
19

  
20
    def __init__(self, parent, image, symbolInfos):
21
        QDialog.__init__(self, parent)
22
        self.parent = parent
23
        self.symbolInfos = symbolInfos
24
        self.image = image
25
        self.isAccepted = False
26

  
27
        self.ui = SymbolRegiDataList_UI.Ui_SymbolRegiDataList()
28
        self.ui.setupUi(self)
29
        self.ui.buttonBox.button(QDialogButtonBox.Close).setIcon(QIcon(':/newPrefix/Remove.svg'))
30
        self.setWindowFlag(Qt.WindowMinMaxButtonsHint)
31

  
32
        # for List 
33
        self.ui.tableWidget.setSelectionMode(QAbstractItemView.SingleSelection)
34
        self.ui.tableWidget.setColumnCount(2)
35
        self.ui.tableWidget.setSortingEnabled(True)
36

  
37
        # column header 명 설정
38
        self.ui.tableWidget.setHorizontalHeaderLabels([self.tr('Symbol Image'), self.tr('Symbol Info')])
39
        self.ui.tableWidget.horizontalHeaderItem(1).setSizeHint(QSize(30, 30))
40
        self.ui.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
41
        self.ui.tableWidget.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
42
        self.ui.tableWidget.resizeColumnsToContents()
43
        self.ui.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
44

  
45
        # connect signals and slots
46
        self.ui.tableWidget.cellDoubleClicked.connect(self.listCellDoubleClicked)
47
        self.ui.pushButtonEdit.clicked.connect(self.pushButtonEditClicked)
48

  
49
        self.ui.tableWidget.verticalHeader().setDefaultSectionSize(60)
50
        self.ui.tableWidget.setRowCount(len(self.symbolInfos))
51
        self.ui.tableWidget.keyPressEvent = self.keyPressEvent
52
        
53
        row = 0
54
        for key, symbolInfo in self.symbolInfos.items():
55
            imageWidget = QTableWidgetItem()
56
            symbolImage = self.image.copy(math.floor(symbolInfo[2][0]), math.floor(symbolInfo[2][1]), math.ceil(symbolInfo[3] + 1), math.ceil(symbolInfo[4] + 1))
57
            
58
            symbolImage = symbolImage.scaled(500, 60, Qt.KeepAspectRatio, Qt.SmoothTransformation)
59
            imageWidget.setData(Qt.DecorationRole, symbolImage)
60
            self.ui.tableWidget.setItem(row, 0, imageWidget)
61

  
62
            textWidget = QTableWidgetItem(str(symbolInfo))
63
            textWidget.tag = symbolInfo
64
            self.ui.tableWidget.setItem(row, 1, textWidget)
65
            font = QFont('Consolas', 15, QFont.Bold)
66
            text_edit = SpellTextEdit(str(symbolInfo))
67
            text_edit.setFont(font)
68
            text_edit.setEnabled(False)
69
            self.ui.tableWidget.setCellWidget(row, 1, text_edit)
70
            row = row + 1
71

  
72
    def listCellDoubleClicked(self, row, col):
73
        self.pushButtonEditClicked(row, col)
74

  
75
    def pushButtonEditClicked(self, row=None, col=None):
76
        try:
77
            if not row:
78
                row = self.ui.tableWidget.selectedIndexes()[0].row()
79
            col = 1
80
            symbolItem = self.ui.tableWidget.item(row, col).tag
81

  
82
            symbolEditorDialog = QSymbolEditorDialog(self, self.image.copy(math.floor(symbolItem[2][0]), math.floor(symbolItem[2][1]), \
83
                                                        math.ceil(symbolItem[3] + 1), math.ceil(symbolItem[4] + 1)), \
84
                                                        AppDocData.instance().getCurrentProject(), symbolItem[1], False)
85
            (isAccepted, _, _, _, _) = symbolEditorDialog.showDialog()
86
            if isAccepted:
87
                self.isAccepted = True
88

  
89
        except Exception as ex:
90
            from App import App
91
            from AppDocData import MessageType
92
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
93
                                                           sys.exc_info()[-1].tb_lineno)
94
            App.mainWnd().addMessage.emit(MessageType.Error, message)
95

  
96
    def keyPressEvent(self, event):
97
        try:
98
            if Qt.Key_Return == event.key():
99
                self.pushButtonEditClicked()
100

  
101
            try:
102
                row = self.ui.tableWidget.selectedIndexes()[0].row()
103
                col = self.ui.tableWidget.selectedIndexes()[0].column()
104
                if event.key() == Qt.Key_Up:
105
                    if row != 0:
106
                        row -= 1
107
                        self.ui.tableWidget.setCurrentItem(self.ui.tableWidget.item(row, col))
108
                        self.ui.tableWidget.scrollToItem(self.ui.tableWidget.item(row, col),
109
                                                         QAbstractItemView.EnsureVisible)
110
                elif event.key() == Qt.Key_Down:
111
                    if row is not self.ui.tableWidget.rowCount() - 1:
112
                        row += 1
113
                        self.ui.tableWidget.setCurrentItem(self.ui.tableWidget.item(row, col))
114
                        self.ui.tableWidget.scrollToItem(self.ui.tableWidget.item(row, col),
115
                                                         QAbstractItemView.EnsureVisible)
116
            except Exception as ex:
117
                pass
118

  
119
            # QDialog.keyPressEvent(self, event)
120

  
121
        except Exception as ex:
122
            from App import App
123
            from AppDocData import MessageType
124
            message = 'error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
125
                                                           sys.exc_info()[-1].tb_lineno)
126
            App.mainWnd().addMessage.emit(MessageType.Error, message)
DTI_PID/DTI_PID/SymbolRegiDataList_UI.py
1
# -*- coding: utf-8 -*-
2

  
3
# Form implementation generated from reading ui file './UI/SymbolRegiDataList.ui'
4
#
5
# Created by: PyQt5 UI code generator 5.9.2
6
#
7
# WARNING! All changes made in this file will be lost!
8

  
9
from PyQt5 import QtCore, QtGui, QtWidgets
10

  
11
class Ui_SymbolRegiDataList(object):
12
    def setupUi(self, SymbolRegiDataList):
13
        SymbolRegiDataList.setObjectName("SymbolRegiDataList")
14
        SymbolRegiDataList.resize(1160, 775)
15
        self.gridLayout = QtWidgets.QGridLayout(SymbolRegiDataList)
16
        self.gridLayout.setObjectName("gridLayout")
17
        self.verticalLayout = QtWidgets.QVBoxLayout()
18
        self.verticalLayout.setObjectName("verticalLayout")
19
        self.horizontalLayout = QtWidgets.QHBoxLayout()
20
        self.horizontalLayout.setObjectName("horizontalLayout")
21
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
22
        self.horizontalLayout.addItem(spacerItem)
23
        self.pushButtonEdit = QtWidgets.QPushButton(SymbolRegiDataList)
24
        self.pushButtonEdit.setFocusPolicy(QtCore.Qt.NoFocus)
25
        self.pushButtonEdit.setObjectName("pushButtonEdit")
26
        self.horizontalLayout.addWidget(self.pushButtonEdit)
27
        self.verticalLayout.addLayout(self.horizontalLayout)
28
        self.tableWidget = QtWidgets.QTableWidget(SymbolRegiDataList)
29
        self.tableWidget.setObjectName("tableWidget")
30
        self.tableWidget.setColumnCount(3)
31
        self.tableWidget.setRowCount(0)
32
        item = QtWidgets.QTableWidgetItem()
33
        self.tableWidget.setHorizontalHeaderItem(0, item)
34
        item = QtWidgets.QTableWidgetItem()
35
        self.tableWidget.setHorizontalHeaderItem(1, item)
36
        item = QtWidgets.QTableWidgetItem()
37
        self.tableWidget.setHorizontalHeaderItem(2, item)
38
        self.verticalLayout.addWidget(self.tableWidget)
39
        self.buttonBox = QtWidgets.QDialogButtonBox(SymbolRegiDataList)
40
        self.buttonBox.setFocusPolicy(QtCore.Qt.StrongFocus)
41
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
42
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close)
43
        self.buttonBox.setObjectName("buttonBox")
44
        self.verticalLayout.addWidget(self.buttonBox)
45
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
46

  
47
        self.retranslateUi(SymbolRegiDataList)
48
        self.buttonBox.accepted.connect(SymbolRegiDataList.accept)
49
        self.buttonBox.rejected.connect(SymbolRegiDataList.reject)
50
        QtCore.QMetaObject.connectSlotsByName(SymbolRegiDataList)
51

  
52
    def retranslateUi(self, SymbolRegiDataList):
53
        _translate = QtCore.QCoreApplication.translate
54
        SymbolRegiDataList.setWindowTitle(_translate("SymbolRegiDataList", "Symbol Registration"))
55
        self.pushButtonEdit.setText(_translate("SymbolRegiDataList", "Create"))
56
        item = self.tableWidget.horizontalHeaderItem(0)
57
        item.setText(_translate("SymbolRegiDataList", "No."))
58
        item = self.tableWidget.horizontalHeaderItem(1)
59
        item.setText(_translate("SymbolRegiDataList", "Symbol Image"))
60
        item = self.tableWidget.horizontalHeaderItem(2)
61
        item.setText(_translate("SymbolRegiDataList", "Registration"))
62

  
63

  
64
if __name__ == "__main__":
65
    import sys
66
    app = QtWidgets.QApplication(sys.argv)
67
    SymbolRegiDataList = QtWidgets.QDialog()
68
    ui = Ui_SymbolRegiDataList()
69
    ui.setupUi(SymbolRegiDataList)
70
    SymbolRegiDataList.show()
71
    sys.exit(app.exec_())
72

  
DTI_PID/DTI_PID/UI/SymbolRegiDataList.ui
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ui version="4.0">
3
 <class>SymbolRegiDataList</class>
4
 <widget class="QDialog" name="SymbolRegiDataList">
5
  <property name="geometry">
6
   <rect>
7
    <x>0</x>
8
    <y>0</y>
9
    <width>1160</width>
10
    <height>775</height>
11
   </rect>
12
  </property>
13
  <property name="windowTitle">
14
   <string>Symbol Registration</string>
15
  </property>
16
  <layout class="QGridLayout" name="gridLayout">
17
   <item row="0" column="0">
18
    <layout class="QVBoxLayout" name="verticalLayout">
19
     <item>
20
      <layout class="QHBoxLayout" name="horizontalLayout">
21
       <item>
22
        <spacer name="horizontalSpacer">
23
         <property name="orientation">
24
          <enum>Qt::Horizontal</enum>
25
         </property>
26
         <property name="sizeHint" stdset="0">
27
          <size>
28
           <width>40</width>
29
           <height>20</height>
30
          </size>
31
         </property>
32
        </spacer>
33
       </item>
34
       <item>
35
        <widget class="QPushButton" name="pushButtonEdit">
36
         <property name="focusPolicy">
37
          <enum>Qt::NoFocus</enum>
38
         </property>
39
         <property name="text">
40
          <string>Create</string>
41
         </property>
42
        </widget>
43
       </item>
44
      </layout>
45
     </item>
46
     <item>
47
      <widget class="QTableWidget" name="tableWidget">
48
       <column>
49
        <property name="text">
50
         <string>No.</string>
51
        </property>
52
       </column>
53
       <column>
54
        <property name="text">
55
         <string>Symbol Image</string>
56
        </property>
57
       </column>
58
       <column>
59
        <property name="text">
60
         <string>Registration</string>
61
        </property>
62
       </column>
63
      </widget>
64
     </item>
65
     <item>
66
      <widget class="QDialogButtonBox" name="buttonBox">
67
       <property name="focusPolicy">
68
        <enum>Qt::StrongFocus</enum>
69
       </property>
70
       <property name="orientation">
71
        <enum>Qt::Horizontal</enum>
72
       </property>
73
       <property name="standardButtons">
74
        <set>QDialogButtonBox::Close</set>
75
       </property>
76
      </widget>
77
     </item>
78
    </layout>
79
   </item>
80
  </layout>
81
 </widget>
82
 <resources/>
83
 <connections>
84
  <connection>
85
   <sender>buttonBox</sender>
86
   <signal>accepted()</signal>
87
   <receiver>SymbolRegiDataList</receiver>
88
   <slot>accept()</slot>
89
   <hints>
90
    <hint type="sourcelabel">
91
     <x>248</x>
92
     <y>254</y>
93
    </hint>
94
    <hint type="destinationlabel">
95
     <x>157</x>
96
     <y>274</y>
97
    </hint>
98
   </hints>
99
  </connection>
100
  <connection>
101
   <sender>buttonBox</sender>
102
   <signal>rejected()</signal>
103
   <receiver>SymbolRegiDataList</receiver>
104
   <slot>reject()</slot>
105
   <hints>
106
    <hint type="sourcelabel">
107
     <x>316</x>
108
     <y>260</y>
109
    </hint>
110
    <hint type="destinationlabel">
111
     <x>286</x>
112
     <y>274</y>
113
    </hint>
114
   </hints>
115
  </connection>
116
 </connections>
117
</ui>

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)