프로젝트

일반

사용자정보

개정판 e72e864f

IDe72e864ff780401cdbff94eec8b366ffed2f1c17
상위 5397ef28
하위 f194b4d2

백흠경이(가) 5년 이상 전에 추가함

issue #481: 검증 - SPPID Converter에서 사용한 Rule 적용
참조 : #1176

Change-Id: I394e4881f82dd7063e6814956d526f2bb011ea8d

차이점 보기:

DTI_PID/DTI_PID/MainWindow.py
241 241
            self.actionOCR_Training.setVisible(False)
242 242
            self.pushButtonBatchRecognition.setVisible(False)
243 243

  
244
        # removedItems
245
        '''
246
        self.removedItems = {}
247
        self.removedItems['LINE'] = []
248
        self.removedItems['EQUIP'] = []
249
        self.removedItems['INST'] = []
250
        self.removedItems['NOTE'] = []
251
        '''
252

  
253 244
        self.delimiter = '"'
254 245
    
255 246
        self.resizeDocks({self.dockWidget}, {self.dockWidgetObjectExplorer.sizeHint().width()}, Qt.Horizontal)
......
284 275
        # up to here
285 276

  
286 277
        # inconsistency table
287
        self.tableWidgetInconsistency.setColumnCount(2)
288
        self.tableWidgetInconsistency.setHorizontalHeaderLabels(['Owner', 'Message'])
278
        self.tableWidgetInconsistency.setColumnCount(3)
279
        self.tableWidgetInconsistency.setHorizontalHeaderLabels(['Owner', 'Type', 'Message'])
289 280
        self.tableWidgetInconsistency.setEditTriggers(QAbstractItemView.NoEditTriggers)
290 281
        self.tableWidgetInconsistency.itemClicked.connect(self.inconsistencyItemClickEvent)
291 282
        self.tableWidgetInconsistency.keyPressEvent = self.inconsistencyTableKeyPressEvent
......
313 304
                if row is not self.tableWidgetInconsistency.rowCount() - 1:
314 305
                    errorItem = self.tableWidgetInconsistency.item(row + 1, 1).tag
315 306
                    HighlightCommand(self.graphicsView).execute(errorItem)
307
            elif event.key() == Qt.Key_Delete:
308
                item = self.tableWidgetInconsistency.item(row, 0).tag
309
                if item and item.scene(): item.scene().removeItem(item)
310
                self.tableWidgetInconsistency.removeRow(row)
316 311
        except Exception as ex:
317
            pass
312
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
313
            self.addMessage.emit(MessageType.Error, message)
318 314
        #finally:
319 315
        #    return QTableView.keyPressEvent(self.tableWidgetInconsistency, event)
320 316

  
......
324 320
        @author euisung
325 321
        @date   2019.04.01
326 322
        """
323
        from ValidateCommand import ValidateCommand
324

  
327 325
        if not self.graphicsView.hasImage():
328 326
            self.showImageSelectionMessageBox()
329 327
            return
330 328

  
331
        errors = []
332

  
333 329
        try:
330
            # remove error items
334 331
            for item in self.graphicsView.scene.items():
335 332
                if type(item) is QEngineeringErrorItem:
336 333
                    item.transfer.onRemoved.emit(item)
337
                elif type(item) is QEngineeringLineItem or issubclass(type(item), SymbolSvgItem):
338
                    for error in item.validate():
339
                        errors.append(error)
334
            # up to here
340 335

  
336
            cmd = ValidateCommand(self.graphicsView)
337
            errors = cmd.execute(self.graphicsView.scene.items())
341 338
            for error in errors:
342 339
                error.transfer.onRemoved.connect(self.itemRemoved)
343 340
                self.graphicsView.scene.addItem(error)
......
345 342
            self.tableWidgetInconsistency.clearContents()
346 343
            self.tableWidgetInconsistency.setRowCount(len(errors))
347 344
            for index in range(len(errors)):
348
                items = self.makeInconsistencyTableRow(errors[index])
349
                self.tableWidgetInconsistency.setItem(index, 0, items[0])
350
                self.tableWidgetInconsistency.setItem(index, 1, items[1])
345
                self.makeInconsistencyTableRow(index, errors[index])
351 346
        except Exception as ex:
352 347
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
353 348
            self.addMessage.emit(MessageType.Error, message)
354 349

  
355
    def makeInconsistencyTableRow(self, errorItem):
350
    def makeInconsistencyTableRow(self, row, errorItem):
356 351
        '''
357 352
            @brief  make row data for inconsistency widget
358 353
            @author euisung
359 354
            @date   2019.04.16
360 355
        '''
361
        items = []
362
        if type(errorItem.parent) is QEngineeringLineItem:
363
            item = QTableWidgetItem('line')
364
            #item.setFlags(Qt.ItemIsEnabled)
365
        elif issubclass(type(errorItem.parent), SymbolSvgItem):
366
            item = QTableWidgetItem('symbol')
367
            #item.setFlags(Qt.ItemIsEnabled)
368
        #elif
356

  
357
        item = QTableWidgetItem(str(errorItem.parent))
369 358
        item.tag = errorItem
370
        items.append(item)
359
        self.tableWidgetInconsistency.setItem(row, 0, item)
371 360

  
372
        item = QTableWidgetItem(errorItem.msg)
373
        #item.setFlags(Qt.ItemIsEnabled)
361
        item = QTableWidgetItem(str(type(errorItem.parent)))
374 362
        item.tag = errorItem
375
        items.append(item)
363
        self.tableWidgetInconsistency.setItem(row, 1, item)
376 364

  
377
        return items
365
        item = QTableWidgetItem(errorItem.msg)
366
        item.tag = errorItem
367
        self.tableWidgetInconsistency.setItem(row, 2, item)
378 368

  
379 369
    def inconsistencyItemClickEvent(self, item):
380 370
        """
......
1705 1695
                        break
1706 1696
                #if done: break
1707 1697

  
1708
            #if type(item) is QEngineeringFlowMarkItem and item.parentItem():
1709
            #    if item in item.parentItem()._flowMark:
1710
            #        item.parentItem()._flowMark.pop(item.parentItem()._flowMark.index(item))
1698
            # remove error item from inconsistency list
1699
            if type(item) is QEngineeringErrorItem:
1700
                for row in range(self.tableWidgetInconsistency.rowCount()):
1701
                    if item is self.tableWidgetInconsistency.item(row, 0).tag:
1702
                        self.tableWidgetInconsistency.removeRow(row)
1703
                        break
1711 1704

  
1712 1705
            if item.scene() is not None: item.scene().removeItem(item)
1713 1706
        except Exception as ex:
DTI_PID/DTI_PID/MainWindow_UI.py
1 1
# -*- coding: utf-8 -*-
2 2

  
3
# Form implementation generated from reading ui file '.\ui\MainWindow.ui'
3
# Form implementation generated from reading ui file '.\UI\MainWindow.ui'
4 4
#
5 5
# Created by: PyQt5 UI code generator 5.13.0
6 6
#
......
14 14
    def setupUi(self, MainWindow):
15 15
        MainWindow.setObjectName("MainWindow")
16 16
        MainWindow.resize(1280, 888)
17
        MainWindow.setBaseSize(QtCore.QSize(0, 300))
17 18
        font = QtGui.QFont()
18 19
        font.setFamily("맑은 고딕")
19 20
        font.setBold(True)
......
154 155
        self.EditToolbar.setObjectName("EditToolbar")
155 156
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.EditToolbar)
156 157
        self.dockWidgetOutputWnd = QtWidgets.QDockWidget(MainWindow)
158
        self.dockWidgetOutputWnd.setMinimumSize(QtCore.QSize(145, 202))
159
        self.dockWidgetOutputWnd.setBaseSize(QtCore.QSize(0, 202))
157 160
        self.dockWidgetOutputWnd.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable|QtWidgets.QDockWidget.DockWidgetMovable)
158 161
        self.dockWidgetOutputWnd.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas)
159 162
        self.dockWidgetOutputWnd.setObjectName("dockWidgetOutputWnd")
......
197 200
        self.tableWidgetInconsistency.setObjectName("tableWidgetInconsistency")
198 201
        self.tableWidgetInconsistency.setColumnCount(0)
199 202
        self.tableWidgetInconsistency.setRowCount(0)
203
        self.tableWidgetInconsistency.horizontalHeader().setSortIndicatorShown(True)
204
        self.tableWidgetInconsistency.horizontalHeader().setStretchLastSection(True)
200 205
        self.verticalLayout_2.addWidget(self.tableWidgetInconsistency)
201 206
        self.gridLayout_8.addLayout(self.verticalLayout_2, 0, 0, 1, 1)
202 207
        self.tabWidget_2.addTab(self.tabInconsistency, "")
......
561 566
        self.dockWidgetOutputWnd.setWindowTitle(_translate("MainWindow", "Output Window"))
562 567
        self.pushButtonClearLog.setToolTip(_translate("MainWindow", "Clear"))
563 568
        self.pushButtonClearLog.setText(_translate("MainWindow", "X"))
564
        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tabTerminal), _translate("MainWindow", "Terminal"))
569
        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tabTerminal), _translate("MainWindow", "Output"))
565 570
        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tabInconsistency), _translate("MainWindow", "Inconsistency"))
566 571
        self.actionOpen.setText(_translate("MainWindow", "Open"))
567 572
        self.actionOpen.setToolTip(_translate("MainWindow", "Open(Ctrl + O)"))
DTI_PID/DTI_PID/Scripts/Associations.sql
1
CREATE TABLE IF NOT EXISTS Associations (
2
    UID            TEXT PRIMARY KEY
3
                        NOT NULL,
4
    Type           TEXT NOT NULL,
5
    Components_UID TEXT REFERENCES Components (UID) 
6
                        NOT NULL,
7
    Association    TEXT REFERENCES Components (UID) 
8
);
DTI_PID/DTI_PID/Scripts/Attributes.sql
1
CREATE TABLE IF NOT EXISTS Attributes (
2
    UID TEXT PRIMARY KEY, 
3
    Components_UID TEXT NOT NULL REFERENCES Components (UID), 
4
    SymbolAttribute_UID TEXT NOT NULL REFERENCES SymbolAttribute (UID), 
5
    Value TEXT, 
6
    FOREIGN KEY (SymbolAttribute_UID) REFERENCES SymbolAttribute (UID), 
7
    UNIQUE (Components_UID, SymbolAttribute_UID)
8
);
9

  
10

  
DTI_PID/DTI_PID/Scripts/Colors.sql
1
CREATE TABLE IF NOT EXISTS Colors (
2
	UID INTEGER NOT NULL,
3
	RED INTEGER,
4
	GREEN INTEGER,
5
	BLUE INTEGER,
6
	PROPERTY TEXT,
7
	VALUE TEXT,
8
	CONSTRAINT Colors_PK PRIMARY KEY (UID)
9
);
DTI_PID/DTI_PID/Scripts/Components.sql
1
CREATE TABLE IF NOT EXISTS Components (
2
    UID TEXT PRIMARY KEY,
3
	Drawings_UID TEXT REFERENCES Drawings (UID) NOT NULL,
4
	Symbol_UID TEXT REFERENCES Symbol (UID) NOT NULL,
5
	X INTEGER,
6
	Y INTEGER,
7
	Width INTEGER,
8
	Height INTEGER,
9
	Rotation INTEGER
10
);
DTI_PID/DTI_PID/Scripts/Configuration.sql
1
CREATE TABLE IF NOT EXISTS Configuration (
2
	"Section" TEXT NOT NULL,
3
	"Key" TEXT NOT NULL,
4
	Value TEXT,
5
	CONSTRAINT Configuration_PK PRIMARY KEY ("Section","Key")
6
);
DTI_PID/DTI_PID/Scripts/Drawings.sql
1
CREATE TABLE IF NOT EXISTS Drawings (
2
	[UID] TEXT CONSTRAINT [FluidCode_PK] PRIMARY KEY NOT NULL, 
3
	[NAME] TEXT NOT NULL,
4
	[DATETIME] TEXT
5
);
6

  
7
CREATE UNIQUE INDEX IF NOT EXISTS [DRAWINGS_NAME_IDX] ON [Drawings]([NAME]);
DTI_PID/DTI_PID/Scripts/EQUIPMENT_DATA_LIST.sql
1
CREATE TABLE IF NOT EXISTS EQUIPMENT_DATA_LIST (
2
	UID TEXT,
3
	ITEM_NO TEXT,
4
	SERVICE TEXT,
5
	NO_REQ TEXT,
6
	FLUID TEXT,
7
	DESC_OF_PART TEXT,
8
	OPERATION_CONDITION_TEMP TEXT,
9
	OPERATION_CONDITION_PRESS TEXT,
10
	DESIGN_CONDITION_TEMP TEXT,
11
	DESIGN_CONDITION_PRESS TEXT,
12
	MATERIAL TEXT,
13
	WEIGHT TEXT,
14
	POWER TEXT,
15
	INSULATION TEXT,
16
	PNID_NO TEXT,
17
	REV TEXT,
18
	CONSTRAINT EQUIPMENT_DATA_LIST_PK PRIMARY KEY (UID)
19
);
20
CREATE UNIQUE INDEX IF NOT EXISTS EQUIPMENT_DATA_LIST_TAG_NO_IDX ON EQUIPMENT_DATA_LIST (UID);
DTI_PID/DTI_PID/Scripts/EqpTagNames.sql
1
CREATE TABLE IF NOT EXISTS [EqpTagNames](
2
  [UID] TEXT CONSTRAINT [EqpTagNames_PK] PRIMARY KEY NOT NULL, 
3
  [Code] TEXT NOT NULL UNIQUE, 
4
  [Description] TEXT,
5
  [Allowables] TEXT);
6

  
7
CREATE UNIQUE INDEX IF NOT EXISTS [EqpTagNames_Code_IDX] ON [EqpTagNames]([Code]);
DTI_PID/DTI_PID/Scripts/FluidCode.sql
1
CREATE TABLE IF NOT EXISTS [FluidCode](
2
  `UID`	TEXT NOT NULL,
3
	`CODE`	TEXT NOT NULL,
4
	`DESCRIPTION`	TEXT,
5
	`Allowables`	TEXT,
6
	CONSTRAINT `FluidCode_PK` PRIMARY KEY(`UID`)
7
);
DTI_PID/DTI_PID/Scripts/HMB.sql
1
CREATE TABLE IF NOT EXISTS HMB (
2
	UID TEXT NOT NULL,
3
	DWG_NAME TEXT NOT NULL,
4
	NAME TEXT NOT NULL,
5
	UNIT TEXT,
6
	VALUE TEXT,
7
	CONSTRAINT HMB_PK PRIMARY KEY (UID)
8
) ;
DTI_PID/DTI_PID/Scripts/ID2.sql
1
CREATE TABLE IF NOT EXISTS SpecialItemTypes (
2
    UID         VARCHAR (37) CONSTRAINT SpecialItemTypes_PK PRIMARY KEY
3
                     NOT NULL,
4
    Code        VARCHAR (32) NOT NULL
5
                     UNIQUE,
6
    Type TEXT,
7
    Allowables  TEXT
8
);
9

  
10
CREATE TABLE IF NOT EXISTS SymbolType (
11
    UID      INTEGER      PRIMARY KEY,
12
    Category TEXT,
13
    Type     VARCHAR (64) NOT NULL
14
);
15

  
16
CREATE TABLE IF NOT EXISTS SymbolName (
17
    UID            INTEGER      NOT NULL
18
                                PRIMARY KEY,
19
    SymbolType_UID INTEGER      REFERENCES SymbolType (UID),
20
    Category       TEXT         NOT NULL,
21
    Type           VARCHAR (64),
22
    Name           TEXT         NOT NULL
23
);
24

  
25
CREATE TABLE IF NOT EXISTS Symbol (
26
    UID                INTEGER      PRIMARY KEY AUTOINCREMENT,
27
    Name               VARCHAR (64) NOT NULL,
28
    SymbolType_UID     INTEGER      NOT NULL,
29
    Type               TEXT,
30
    Threshold          NUMERIC      NOT NULL
31
                                    DEFAULT (0.4),
32
    MinMatchPoint      INTEGER      NOT NULL
33
                                    DEFAULT 0,
34
    IsDetectOrigin     INTEGER      NOT NULL
35
                                    DEFAULT 0,
36
    RotationCount      INTEGER      NOT NULL
37
                                    DEFAULT 4,
38
    OCROption          INTEGER      NOT NULL
39
                                    DEFAULT 0,
40
    IsContainChild     INTEGER      NOT NULL
41
                                    DEFAULT 0,
42
    OriginalPoint      TEXT,
43
    ConnectionPoint    TEXT,
44
    BaseSymbol         TEXT,
45
    AdditionalSymbol   TEXT,
46
    IsExceptDetect     INTEGER      DEFAULT 0,
47
    HasInstrumentLabel INTEGER      DEFAULT 0,
48
    Width              INTEGER,
49
    Height             INTEGER,
50
    Flip               INTEGER,
51
    FOREIGN KEY (
52
        SymbolType_UID
53
    )
54
    REFERENCES SymbolType (UID) 
55
);
56

  
57
CREATE TABLE IF NOT EXISTS Drawings (
58
    UID      VARCHAR (37)  CONSTRAINT FluidCode_PK PRIMARY KEY
59
                           NOT NULL,
60
    NAME     VARCHAR (256) NOT NULL,
61
    DATETIME TEXT
62
);
63

  
64
CREATE TABLE IF NOT EXISTS Components (
65
    UID                  VARCHAR (37) PRIMARY KEY,
66
    Drawings_UID         VARCHAR (37) REFERENCES Drawings (UID) 
67
                                      NOT NULL,
68
    Symbol_UID           VARCHAR (37) REFERENCES Symbol (UID) 
69
                                      NOT NULL,
70
    X                    INTEGER,
71
    Y                    INTEGER,
72
    Width                INTEGER,
73
    Height               INTEGER,
74
    Rotation             REAL,
75
    Area                 TEXT,
76
    Value                VARCHAR (64),
77
    Owner                VARCHAR (37),
78
    Connected            VARCHAR (37),
79
    [Supplied By]        TEXT,
80
    SpecialItemTypes_UID VARCHAR (37) REFERENCES SpecialItemTypes (UID),
81
    OriginIndex          INTEGER      DEFAULT (0) 
82
);
83

  
84
CREATE TABLE IF NOT EXISTS Associations (
85
    UID            VARCHAR (37) PRIMARY KEY
86
                                NOT NULL,
87
    Type           TEXT         NOT NULL,
88
    Components_UID VARCHAR (37) REFERENCES Components (UID) 
89
                                NOT NULL,
90
    Association    VARCHAR (37) REFERENCES Components (UID) 
91
);
92

  
93
CREATE TABLE IF NOT EXISTS SymbolAttribute (
94
    UID              VARCHAR (37) NOT NULL,
95
    SymbolType_UID   INTEGER,
96
    Attribute        VARCHAR (32),
97
    DisplayAttribute TEXT         NOT NULL,
98
    AttributeType    TEXT         NOT NULL,
99
    Expression       BLOB,
100
    AttrAt           INTEGER      DEFAULT 0,
101
    Length           INTEGER,
102
    Target           TEXT         DEFAULT 'ALL',
103
    Property         INTEGER      DEFAULT 0,
104
    [index]          INT          NOT NULL,
105
    FOREIGN KEY (
106
        SymbolType_UID
107
    )
108
    REFERENCES SymbolType (UID),
109
    PRIMARY KEY (
110
        SymbolType_UID,
111
        Attribute
112
    )
113
);
114

  
115
CREATE TABLE IF NOT EXISTS Attributes (
116
    UID                 VARCHAR (37) PRIMARY KEY,
117
    Components_UID      VARCHAR (37) NOT NULL
118
                                     REFERENCES Components (UID),
119
    SymbolAttribute_UID VARCHAR (37) NOT NULL
120
                                     REFERENCES SymbolAttribute (UID),
121
    Value               TEXT,
122
    UNIQUE (
123
        Components_UID,
124
        SymbolAttribute_UID
125
    )
126
);
127

  
128
CREATE TABLE IF NOT EXISTS Colors (
129
    UID      INTEGER NOT NULL,
130
    RED      INTEGER,
131
    GREEN    INTEGER,
132
    BLUE     INTEGER,
133
    PROPERTY TEXT,
134
    VALUE    TEXT,
135
    CONSTRAINT Colors_PK PRIMARY KEY (
136
        UID
137
    )
138
);
139

  
140
CREATE TABLE IF NOT EXISTS Configuration (
141
    Section TEXT NOT NULL,
142
    [Key]   TEXT NOT NULL,
143
    Value   TEXT,
144
    CONSTRAINT Configuration_PK PRIMARY KEY (
145
        Section,
146
        [Key]
147
    )
148
);
149

  
150
CREATE TABLE IF NOT EXISTS EqpTagNames (
151
    UID         VARCHAR (37) CONSTRAINT EqpTagNames_PK PRIMARY KEY
152
                             NOT NULL,
153
    Code        VARCHAR (32) NOT NULL
154
                             UNIQUE,
155
    Description TEXT,
156
    Allowables  TEXT
157
);
158

  
159
CREATE TABLE IF NOT EXISTS EQUIPMENT_DATA_LIST (
160
    UID                       VARCHAR (37) CONSTRAINT EQUIPMENT_DATA_LIST_PK PRIMARY KEY,
161
    ITEM_NO                   TEXT,
162
    SERVICE                   TEXT,
163
    NO_REQ                    TEXT,
164
    FLUID                     TEXT,
165
    DESC_OF_PART              TEXT,
166
    OPERATION_CONDITION_TEMP  TEXT,
167
    OPERATION_CONDITION_PRESS TEXT,
168
    DESIGN_CONDITION_TEMP     TEXT,
169
    DESIGN_CONDITION_PRESS    TEXT,
170
    MATERIAL                  TEXT,
171
    WEIGHT                    TEXT,
172
    POWER                     TEXT,
173
    INSULATION                TEXT,
174
    PNID_NO                   TEXT,
175
    REV                       TEXT
176
);
177

  
178
CREATE TABLE IF NOT EXISTS FluidCode (
179
    UID         VARCHAR (37) NOT NULL,
180
    CODE        VARCHAR (32) NOT NULL,
181
    DESCRIPTION TEXT,
182
    Allowables  TEXT,
183
    CONSTRAINT FluidCode_PK PRIMARY KEY (
184
        UID
185
    ),
186
    UNIQUE (
187
        CODE
188
    )
189
);
190

  
191
CREATE TABLE IF NOT EXISTS HMB (
192
    UID       VARCHAR (37) NOT NULL,
193
    STREAM_NO TEXT         NOT NULL,
194
    NAME      TEXT         NOT NULL,
195
    UNIT      TEXT,
196
    VALUE     TEXT,
197
    PRIMARY KEY (
198
        UID
199
    )
200
);
201

  
202
CREATE TABLE IF NOT EXISTS INSTRUMENT_DATA_LIST (
203
    UID               VARCHAR (37),
204
    ITEM_NO           TEXT,
205
    SERVICE           TEXT,
206
    FLOW_RATE         TEXT,
207
    PRESSURE          TEXT,
208
    TEMPERATURE       TEXT,
209
    TYPE              TEXT,
210
    RANGE             TEXT,
211
    NOR_LEVEL_MM      TEXT,
212
    NOR_LEVEL_PERCENT TEXT,
213
    DEL_PRESS         TEXT,
214
    SHUT_OFF          TEXT,
215
    LOCATION          TEXT,
216
    PNID_NO           TEXT,
217
    REV               TEXT,
218
    CONSTRAINT EQUIPMENT_DATA_LIST_PK PRIMARY KEY (
219
        UID
220
    )
221
);
222

  
223
CREATE TABLE IF NOT EXISTS InsulationPurpose (
224
    UID         VARCHAR (37) CONSTRAINT InsulationPurpose_PK PRIMARY KEY
225
                             NOT NULL,
226
    CODE        VARCHAR (32) NOT NULL
227
                             UNIQUE,
228
    DESCRIPTION TEXT,
229
    Allowables  TEXT
230
);
231

  
232
CREATE TABLE IF NOT EXISTS LINE_DATA_LIST (
233
    UID                       VARCHAR (37),
234
    LINE_SIZE                 TEXT,
235
    LINE_SYMBOL               TEXT,
236
    LINE_NO                   TEXT,
237
    LINE_CLASS                TEXT,
238
    LINE_ROUTING_FROM         TEXT,
239
    LINE_ROUTING_TO           TEXT,
240
    SERVICE_FLUID             TEXT,
241
    SERVICE_DENSITY           TEXT,
242
    SERVICE_STATE             TEXT,
243
    OPERATION_CONDITION_TEMP  TEXT,
244
    OPERATION_CONDITION_PRESS TEXT,
245
    DESIGN_CONDITION_TEMP     TEXT,
246
    DESIGN_CONDITION_PRESS    TEXT,
247
    TEST_CONDITION_TEMP       TEXT,
248
    TEST_CONDITION_PRESS      TEXT,
249
    INSUL_CODE                TEXT,
250
    PAINT_CODE                TEXT,
251
    NDE_CODE                  TEXT,
252
    PWHT                      TEXT,
253
    PNID_NO                   TEXT,
254
    STREAM_NO                 TEXT,
255
    CONSTRAINT LINE_DATA_LIST_PK PRIMARY KEY (
256
        UID
257
    )
258
);
259

  
260
CREATE TABLE IF NOT EXISTS LineProperties (
261
    UID         VARCHAR (37) NOT NULL,
262
    Name        TEXT         NOT NULL,
263
    DisplayName TEXT,
264
    Type        TEXT,
265
    LimitNumber INTEGER,
266
    [Index]     INTEGER,
267
    PRIMARY KEY (
268
        UID
269
    )
270
);
271

  
272
CREATE TABLE IF NOT EXISTS LineNoAttributes (
273
    UID                VARCHAR (37) PRIMARY KEY,
274
    Components_UID     VARCHAR (37) NOT NULL
275
                                    REFERENCES Components (UID),
276
    LineProperties_UID VARCHAR (37) NOT NULL
277
                                    REFERENCES LineProperties (UID),
278
    Value              TEXT,
279
    UNIQUE (
280
        Components_UID,
281
        LineProperties_UID
282
    )
283
);
284

  
285
CREATE TABLE IF NOT EXISTS LineTypes (
286
    UID         VARCHAR (37) NOT NULL,
287
    Name        VARCHAR (64) NOT NULL,
288
    Type1       TEXT,
289
    Conditions1 TEXT,
290
    Type2       TEXT,
291
    Conditions2 TEXT,
292
    PRIMARY KEY (
293
        UID
294
    ),
295
    UNIQUE (
296
        Name
297
    )
298
);
299

  
300
CREATE TABLE IF NOT EXISTS NominalDiameter (
301
    UID                VARCHAR (37) PRIMARY KEY,
302
    Code               VARCHAR (32) NOT NULL,
303
    Metric             REAL,
304
    Inch               REAL,
305
    InchStr            VARCHAR (32),
306
    AllowableInchStr   VARCHAR (32),
307
    MetricStr          VARCHAR (32),
308
    AllowableMetricStr VARCHAR (32) 
309
);
310

  
311
CREATE TABLE IF NOT EXISTS NOTE_DATA_LIST (
312
    UID         VARCHAR (37),
313
    NOTE_NO     VARCHAR (32),
314
    DESCRIPTION TEXT,
315
    PNID_NO     TEXT,
316
    CONSTRAINT NOTE_DATA_LIST_PK PRIMARY KEY (
317
        UID
318
    )
319
);
320

  
321
CREATE TABLE IF NOT EXISTS OPCRelations (
322
    From_Drawings_UID VARCHAR (37) REFERENCES Drawings (UID),
323
    From_LineNo_UID   VARCHAR (37) REFERENCES Components (UID),
324
    From_OPC_UID      VARCHAR (37) REFERENCES Components (UID) 
325
                                   PRIMARY KEY,
326
    To_Drawings_UID   VARCHAR (37) REFERENCES Drawings (UID),
327
    To_LineNo_UID     VARCHAR (37) REFERENCES Components (UID),
328
    To_OPC_UID        VARCHAR (37) REFERENCES Components (UID) 
329
);
330

  
331
CREATE TABLE IF NOT EXISTS PipeRuns (
332
    UID          VARCHAR (37) PRIMARY KEY
333
                              NOT NULL,
334
    Drawings_UID VARCHAR (37) REFERENCES Drawings (UID) 
335
                              NOT NULL,
336
    Type         TEXT,
337
    Owner        VARCHAR (37) REFERENCES Components (UID) 
338
                              NOT NULL,
339
    [Index]      INTEGER      NOT NULL
340
);
341

  
342
CREATE TABLE IF NOT EXISTS PipeRunItems (
343
    UID            VARCHAR (37) PRIMARY KEY
344
                                NOT NULL,
345
    PipeRuns_UID   VARCHAR (37) REFERENCES PipeRuns (UID) 
346
                                NOT NULL,
347
    [Index]        INTEGER      NOT NULL,
348
    Components_UID VARCHAR (37) REFERENCES Components (UID) 
349
                                NOT NULL
350
);
351

  
352
CREATE TABLE IF NOT EXISTS PipingMaterialsClass (
353
    UID         VARCHAR (37) CONSTRAINT PipingMaterialsClass_PK PRIMARY KEY
354
                             NOT NULL,
355
    CODE        VARCHAR (32) NOT NULL
356
                             UNIQUE,
357
    DESCRIPTION TEXT,
358
    Allowables  TEXT
359
);
360

  
361
CREATE TABLE IF NOT EXISTS PnIDNumber (
362
    UID         VARCHAR (37) CONSTRAINT PnIDNumber_PK PRIMARY KEY
363
                             NOT NULL,
364
    CODE        VARCHAR (32) NOT NULL
365
                             UNIQUE,
366
    DESCRIPTION TEXT,
367
    Allowables  TEXT
368
);
369

  
370
CREATE TABLE IF NOT EXISTS Points (
371
    Components_UID VARCHAR (37) NOT NULL,
372
    [Index]        INTEGER      NOT NULL,
373
    X              REAL         NOT NULL,
374
    Y              REAL         NOT NULL,
375
    Connected      VARCHAR (37),
376
    Connected_At   TEXT,
377
    CONSTRAINT FK_Components_UID FOREIGN KEY (
378
        Components_UID
379
    )
380
    REFERENCES Components (UID),
381
    UNIQUE (
382
        Components_UID,
383
        [Index]
384
    )
385
);
386

  
387
CREATE TABLE IF NOT EXISTS ReservedWords (
388
    UID         VARCHAR (37) CONSTRAINT ReservedWords_PK PRIMARY KEY
389
                             NOT NULL,
390
    Code        VARCHAR (32) NOT NULL
391
                             UNIQUE,
392
    Description TEXT,
393
    Allowables  TEXT
394
);
395

  
396
CREATE TABLE IF NOT EXISTS TitleBlockProperties (
397
    UID  VARCHAR (37) CONSTRAINT TitleBlockProperties_PK PRIMARY KEY
398
                      NOT NULL,
399
    NAME VARCHAR (32) NOT NULL
400
                      UNIQUE,
401
    AREA TEXT
402
);
403

  
404
CREATE TABLE IF NOT EXISTS TitleBlockValues (
405
    UID                      VARCHAR (37) PRIMARY KEY,
406
    Drawings_UID             VARCHAR (37) REFERENCES Drawings (UID),
407
    TitleBlockProperties_UID VARCHAR (37) REFERENCES TitleBlockProperties (UID),
408
    VALUE                    TEXT
409
);
410

  
411
CREATE TABLE IF NOT EXISTS UnitNumber (
412
    UID         VARCHAR (37) CONSTRAINT UnitNumber_PK PRIMARY KEY
413
                             NOT NULL,
414
    CODE        VARCHAR (32) NOT NULL
415
                             UNIQUE,
416
    DESCRIPTION TEXT,
417
    Allowables  TEXT
418
);
419

  
420
CREATE TABLE IF NOT EXISTS VALVE_DATA_LIST (
421
    UID      VARCHAR (37),
422
    ITEM_NO  TEXT,
423
    MainSize TEXT,
424
    SubSize  TEXT,
425
    PNID_NO  TEXT,
426
    CONSTRAINT VALVE_DATA_LIST_PK PRIMARY KEY (
427
        UID
428
    )
429
);
430

  
431
CREATE TABLE IF NOT EXISTS ValveOperCodes (
432
    UID         VARCHAR (37) CONSTRAINT ValveOperCodes_PK PRIMARY KEY
433
                             NOT NULL,
434
    Code        VARCHAR (32) NOT NULL
435
                             UNIQUE,
436
    Description TEXT,
437
    Allowables  TEXT
438
);
DTI_PID/DTI_PID/Scripts/INSTRUMENT_DATA_LIST.sql
1
CREATE TABLE IF NOT EXISTS INSTRUMENT_DATA_LIST (
2
	UID TEXT,
3
	ITEM_NO TEXT,
4
	SERVICE TEXT,
5
	FLOW_RATE TEXT,
6
	PRESSURE TEXT,
7
	TEMPERATURE TEXT,
8
	TYPE TEXT,
9
	RANGE TEXT,
10
	NOR_LEVEL_MM TEXT,
11
	NOR_LEVEL_PERCENT TEXT,
12
	DEL_PRESS TEXT,
13
	SHUT_OFF TEXT,
14
	LOCATION TEXT,
15
	PNID_NO TEXT,
16
	REV TEXT,
17
	CONSTRAINT EQUIPMENT_DATA_LIST_PK PRIMARY KEY (UID)
18
);
19
CREATE UNIQUE INDEX IF NOT EXISTS INSTRUMENT_DATA_LIST_TAG_NO_IDX ON INSTRUMENT_DATA_LIST (UID);
DTI_PID/DTI_PID/Scripts/InsulationPurpose.sql
1
CREATE TABLE IF NOT EXISTS [InsulationPurpose](
2
`UID`	TEXT NOT NULL,
3
	`CODE`	TEXT NOT NULL UNIQUE,
4
	`DESCRIPTION`	TEXT,
5
	`Allowables`	TEXT,
6
	CONSTRAINT `InsulationPurpose_PK` PRIMARY KEY(`UID`)
7
);
8

  
9
CREATE UNIQUE INDEX IF NOT EXISTS [InsulationPurpose_CODE_IDX] ON [InsulationPurpose]([CODE]);
DTI_PID/DTI_PID/Scripts/LINE_DATA_LIST.sql
1
CREATE TABLE IF NOT EXISTS LINE_DATA_LIST (
2
	UID TEXT,
3
	LINE_SIZE TEXT,
4
	LINE_SYMBOL TEXT,
5
	LINE_NO TEXT,
6
	LINE_CLASS TEXT,
7
	LINE_ROUTING_FROM TEXT,
8
	LINE_ROUTING_TO TEXT,
9
	SERVICE_FLUID TEXT,
10
	SERVICE_DENSITY TEXT,
11
	SERVICE_STATE TEXT,
12
	OPERATION_CONDITION_TEMP TEXT,
13
	OPERATION_CONDITION_PRESS TEXT,
14
	DESIGN_CONDITION_TEMP TEXT,
15
	DESIGN_CONDITION_PRESS TEXT,
16
	TEST_CONDITION_TEMP TEXT,
17
	TEST_CONDITION_PRESS TEXT,
18
	INSUL_CODE TEXT,
19
	PAINT_CODE TEXT,
20
	NDE_CODE TEXT,
21
	PWHT TEXT,
22
	PNID_NO TEXT,
23
	STREAM_NO TEXT,
24
	CONSTRAINT LINE_DATA_LIST_PK PRIMARY KEY (UID)
25
);
26
CREATE UNIQUE INDEX IF NOT EXISTS LINE_DATA_LIST_TAG_NO_IDX ON LINE_DATA_LIST (UID);
DTI_PID/DTI_PID/Scripts/LineNoAttributes.sql
1
CREATE TABLE IF NOT EXISTS LineNoAttributes (
2
    UID                TEXT PRIMARY KEY,
3
    Components_UID     TEXT NOT NULL
4
                            REFERENCES Components (UID),
5
    LineProperties_UID TEXT NOT NULL
6
                            REFERENCES LineProperties (UID),
7
    Value              TEXT,
8
    FOREIGN KEY (
9
        LineProperties_UID
10
    )
11
    REFERENCES SymbolAttribute (UID),
12
    UNIQUE (
13
        Components_UID,
14
        LineProperties_UID
15
    )
16
);
DTI_PID/DTI_PID/Scripts/LineProperties.sql
1
CREATE TABLE IF NOT EXISTS LineProperties (
2
	UID TEXT NOT NULL,
3
        Name TEXT NOT NULL,
4
	[DisplayName] TEXT,
5
	[Type] TEXT,
6
	[LimitNumber] INTEGER,
7
	[Index] INTEGER,
8
	CONSTRAINT LineProperties_PK PRIMARY KEY (UID)
9
);
10
CREATE UNIQUE INDEX IF NOT EXISTS LineProperties_Name_IDX ON LineProperties (Name);
DTI_PID/DTI_PID/Scripts/LineTypes.sql
1
CREATE TABLE IF NOT EXISTS LineTypes (
2
    UID         TEXT NOT NULL,
3
    Name        TEXT NOT NULL UNIQUE,
4
    Type1       TEXT,
5
    Conditions1 TEXT,
6
    Type2       TEXT,
7
    Conditions2 TEXT,
8
    PRIMARY KEY (
9
        UID
10
    )
11
);
DTI_PID/DTI_PID/Scripts/NOMINAL PIPE SIZE.sql
1
CREATE TABLE IF NOT EXISTS "NOMINAL PIPE SIZE"(
2
Code VARCHAR(2147483647) NOT NULL,
3
Metric REAL,
4
Inch REAL,
5
InchStr VARCHAR(2147483647),
6
MetricStr VARCHAR(2147483647)
7
);
DTI_PID/DTI_PID/Scripts/NOTE_DATA_LIST.sql
1
CREATE TABLE IF NOT EXISTS NOTE_DATA_LIST (
2
	UID TEXT,
3
	NOTE_NO TEXT,
4
	DESCRIPTION TEXT,
5
	PNID_NO TEXT,
6
	CONSTRAINT NOTE_DATA_LIST_PK PRIMARY KEY (UID)
7
);
8
CREATE UNIQUE INDEX IF NOT EXISTS NOTE_DATA_LIST_TAG_NO_IDX ON NOTE_DATA_LIST (UID);
DTI_PID/DTI_PID/Scripts/OPCRelations.sql
1
CREATE TABLE IF NOT EXISTS OPCRelations (
2
    UID               TEXT PRIMARY KEY
3
                           NOT NULL,
4
    From_Drawings_UID TEXT REFERENCES Drawings (UID),
5
    From_LineNo_UID   TEXT REFERENCES Components (UID),
6
    From_OPC_UID      TEXT REFERENCES Components (UID),
7
    To_Drawings_UID   TEXT REFERENCES Drawings (UID),
8
    To_LineNo_UID     TEXT REFERENCES Components (UID),
9
    To_OPC_UID        TEXT REFERENCES Components (UID) 
10
);
DTI_PID/DTI_PID/Scripts/PipeRunItems.sql
1
CREATE TABLE IF NOT EXISTS PipeRunItems (
2
    UID            TEXT    PRIMARY KEY
3
                           NOT NULL,
4
    PipeRuns_UID   TEXT    REFERENCES PipeRuns (UID) 
5
                           NOT NULL,
6
    [Index]        INTEGER NOT NULL,
7
    Components_UID TEXT    REFERENCES Components (UID) 
8
                           NOT NULL
9
);
DTI_PID/DTI_PID/Scripts/PipeRuns.sql
1
CREATE TABLE IF NOT EXISTS PipeRuns (
2
    UID          TEXT    PRIMARY KEY
3
                         NOT NULL,
4
    Drawings_UID TEXT    REFERENCES Drawings (UID) 
5
                         NOT NULL,
6
    Type         TEXT,
7
    Owner        TEXT    REFERENCES Components (UID) 
8
                         NOT NULL,
9
    [Index]      INTEGER NOT NULL
10
);
DTI_PID/DTI_PID/Scripts/PipingMaterialsClass.sql
1
CREATE TABLE IF NOT EXISTS [PipingMaterialsClass](
2
  `UID`	TEXT NOT NULL,
3
	`CODE`	TEXT NOT NULL UNIQUE,
4
	`DESCRIPTION`	TEXT,
5
	`Allowables`	TEXT,
6
	CONSTRAINT `PipingMaterialsClass_PK` PRIMARY KEY(`UID`)
7
);
8

  
9
CREATE UNIQUE INDEX IF NOT EXISTS [PipingMaterialsClass_CODE_IDX] ON [PipingMaterialsClass]([CODE]);
DTI_PID/DTI_PID/Scripts/PnIDNumber.sql
1
CREATE TABLE IF NOT EXISTS [PnIDNumber](
2
  [UID] TEXT CONSTRAINT [PnIDNumber_PK] PRIMARY KEY NOT NULL, 
3
  [CODE] TEXT NOT NULL UNIQUE, 
4
  [DESCRIPTION] TEXT);
5

  
6
CREATE UNIQUE INDEX IF NOT EXISTS [PnIDNumber_CODE_IDX] ON [PnIDNumber]([CODE]);
DTI_PID/DTI_PID/Scripts/Points.sql
1
CREATE TABLE IF NOT EXISTS Points (
2
    UID            TEXT    NOT NULL,
3
    Components_UID TEXT    NOT NULL,
4
    [Index]        INTEGER NOT NULL,
5
    X              REAL    NOT NULL,
6
    Y              REAL    NOT NULL,
7
    CONSTRAINT PK_Points PRIMARY KEY (
8
        UID
9
    ),
10
    CONSTRAINT FK_Components_UID FOREIGN KEY (
11
        Components_UID
12
    )
13
    REFERENCES Components (UID) 
14
);
DTI_PID/DTI_PID/Scripts/ReservedWords.sql
1
CREATE TABLE IF NOT EXISTS ReservedWords (
2
UID TEXT CONSTRAINT ReservedWords_PK PRIMARY KEY NOT NULL, Code TEXT NOT NULL UNIQUE, Description TEXT, Allowables TEXT
3
);
DTI_PID/DTI_PID/Scripts/SpecialItemTypes.sql
1
CREATE TABLE IF NOT EXISTS SpecialItemTypes (
2
    UID         TEXT CONSTRAINT SpecialItemTypes_PK PRIMARY KEY
3
                     NOT NULL,
4
    Code        TEXT NOT NULL
5
                     UNIQUE,
6
    Type TEXT,
7
    Allowables  TEXT
8
);
DTI_PID/DTI_PID/Scripts/Symbol.sql
1
CREATE TABLE IF NOT EXISTS "Symbol" (
2
	`UID`	INTEGER PRIMARY KEY AUTOINCREMENT,
3
	`Name`	TEXT NOT NULL,
4
	`SymbolType_UID`	TEXT NOT NULL,
5
	`Type`	TEXT,
6
	`Threshold`	NUMERIC NOT NULL DEFAULT (0.4),
7
	`MinMatchPoint`	TEXT NOT NULL DEFAULT 0,
8
	`IsDetectOrigin`	INTEGER NOT NULL DEFAULT 0,
9
	`RotationCount`	INTEGER NOT NULL DEFAULT 4,
10
	`OCROption`	INTEGER NOT NULL DEFAULT 0,
11
	`IsContainChild`	INTEGER NOT NULL DEFAULT 0,
12
	`OriginalPoint`	TEXT,
13
	`ConnectionPoint`	TEXT,
14
	`BaseSymbol`	TEXT,
15
	`AdditionalSymbol`	TEXT,
16
	`IsExceptDetect`	INTEGER DEFAULT 0,
17
	`HasInstrumentLabel`	INTEGER DEFAULT 0,
18
	`Width`	INTEGER,
19
	`Height`	INTEGER,
20
	`Flip`	INTEGER,
21
	FOREIGN KEY(`SymbolType_UID`) REFERENCES `SymbolType`(`UID`)
22
);
DTI_PID/DTI_PID/Scripts/SymbolAttribute.sql
1
CREATE TABLE IF NOT EXISTS SymbolAttribute (
2
    UID              VARCHAR (37) NOT NULL,
3
    SymbolType_UID   INTEGER,
4
    Attribute        VARCHAR (32),
5
    DisplayAttribute TEXT         NOT NULL,
6
    AttributeType    TEXT         NOT NULL,
7
    Expression       BLOB,
8
    AttrAt           INTEGER      DEFAULT 0,
9
    Length           INTEGER,
10
    Target           TEXT         DEFAULT 'ALL',
11
    Property         INTEGER      DEFAULT 0,
12
    [index]          INT          NOT NULL,
13
    FOREIGN KEY (
14
        SymbolType_UID
15
    )
16
    REFERENCES SymbolType (UID),
17
    PRIMARY KEY (
18
        SymbolType_UID,
19
        Attribute
20
    )
21
);
22

  
23

  
24
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '3bf98d8c-5736-4b4a-8008-deb36e09056b',-1,'LineType','Line Type','String',0 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='LineType' AND SymbolType_UID=-1);
25
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '2c413303-cc5a-4d4c-af24-a837041276f4',-1,'Thickness','Thickness','Int',1 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='Thickness' AND SymbolType_UID=-1);
26
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT 'b8f6c3a5-4abb-462b-b90f-66afac591aab',-1,'FlowMark','Flow Mark','String',2 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='FlowMark' AND SymbolType_UID=-1);
27
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '60c3f3bc-a69d-42b2-b198-9b6ee0dd2594',-1,'LineIndicator','Line Indicator','String',3 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='LineIndicator' AND SymbolType_UID=-1);
28
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '86699578-706a-4158-b636-6b5dc8a11ad7',-1,'From','From','String',4 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='From' AND SymbolType_UID=-1);
29
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '3329313c-cd06-4b89-a10b-795dcdf5830f',-1,'To','To','Int',5 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='To' AND SymbolType_UID=-1);
30
--INSERT INTO SymbolAttribute(UID,SymbolType_UID,Attribute,DisplayAttribute,AttributeType,[Index]) SELECT '61190fa0-8074-4f25-8b47-8b0b686e1ede',-1,'Freeze','Freeze','Int',6 FROM SymbolAttribute WHERE not EXISTS(SELECT 1 FROM SymbolAttribute WHERE Attribute='Freeze' AND SymbolType_UID=-1);
DTI_PID/DTI_PID/Scripts/SymbolName.sql
1
CREATE TABLE IF NOT EXISTS "SymbolName" (
2
	`UID`	INTEGER NOT NULL,
3
	`SymbolType_UID`	INTEGER,
4
	`Category`	TEXT ( 2000000000 ) NOT NULL,
5
	`Type`	TEXT ( 2000000000 ),
6
	`Name`	TEXT ( 2000000000 ) NOT NULL,
7
	FOREIGN KEY(`SymbolType_UID`) REFERENCES `SymbolType`(`UID`),
8
	PRIMARY KEY(`UID`)
9
);
DTI_PID/DTI_PID/Scripts/SymbolType.sql
1
CREATE TABLE IF NOT EXISTS SymbolType(
2
`UID`	INTEGER,
3
	`Category`	TEXT ( 2000000000 ),
4
	`Type`	TEXT ( 2000000000 ),
5
	PRIMARY KEY(`UID`)
6
);
DTI_PID/DTI_PID/Scripts/TitleBlockProperties.sql
1
CREATE TABLE IF NOT EXISTS [TitleBlockProperties](
2
  [UID] TEXT CONSTRAINT [TitleBlockProperties_PK] PRIMARY KEY NOT NULL, 
3
  [NAME] TEXT NOT NULL UNIQUE, 
4
  [AREA] TEXT
5
);
6
CREATE UNIQUE INDEX IF NOT EXISTS [TitleBlockProperties_NAME_IDX] ON [TitleBlockProperties]([NAME]);
DTI_PID/DTI_PID/Scripts/TitleBlockValues.sql
1
CREATE TABLE IF NOT EXISTS TitleBlockValues (
2
    UID                      TEXT PRIMARY KEY,
3
    Drawings_UID             TEXT REFERENCES Drawings (UID),
4
    TitleBlockProperties_UID TEXT REFERENCES TitleBlockProperties (UID),
5
    VALUE                    TEXT
6
);
7
CREATE UNIQUE INDEX IF NOT EXISTS [TitleBlockValues_UNIQUE_IDX] ON [TitleBlockValues]([Drawings_UID],[TitleBlockProperties_UID]);
DTI_PID/DTI_PID/Scripts/UnitNumber.sql
1
CREATE TABLE IF NOT EXISTS [UnitNumber](
2
  `UID`	TEXT NOT NULL,
3
	`CODE`	TEXT NOT NULL UNIQUE,
4
	`DESCRIPTION`	TEXT,
5
	`Allowables`	TEXT,
6
	CONSTRAINT `UnitNumber_PK` PRIMARY KEY(`UID`)
7
);
DTI_PID/DTI_PID/Scripts/VALVE_DATA_LIST.sql
1
CREATE TABLE IF NOT EXISTS VALVE_DATA_LIST (
2
	UID TEXT,
3
	ITEM_NO TEXT,
4
	MainSize TEXT,
5
  SubSize  TEXT,
6
	PNID_NO TEXT,
7
	CONSTRAINT VALVE_DATA_LIST_PK PRIMARY KEY (UID)
8
);
9
CREATE UNIQUE INDEX IF NOT EXISTS VALVE_DATA_LIST_TAG_NO_IDX ON VALVE_DATA_LIST (UID);
DTI_PID/DTI_PID/Scripts/ValveOperCodes.sql
1
CREATE TABLE IF NOT EXISTS [ValveOperCodes](
2
  [UID] TEXT CONSTRAINT [ValveOperCodes_PK] PRIMARY KEY NOT NULL, 
3
  [Code] TEXT NOT NULL UNIQUE, 
4
  [Description] TEXT,
5
  [Allowables] TEXT);
6

  
7
CREATE UNIQUE INDEX IF NOT EXISTS [ValveOperCodes_Code_IDX] ON [ValveOperCodes]([Code]);
DTI_PID/DTI_PID/Scripts/VendorPackages.sql
1
CREATE TABLE IF NOT EXISTS VendorPackages (
2
    UID          TEXT PRIMARY KEY,
3
    Drawings_UID TEXT REFERENCES Drawings (UID) NOT NULL,
4
    PTS          TEXT
5
);
DTI_PID/DTI_PID/Shapes/EngineeringConnectorItem.py
490 490
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
491 491
            App.mainWnd().addMessage.emit(MessageType.Error, message)
492 492

  
493
    def validate(self):
494
        """ validate connector """
495
        from AppDocData import AppDocData
496
        from SymbolSvgItem import SymbolSvgItem
497
        from EngineeringLineItem import QEngineeringLineItem
498

  
499
        errors = []
500
        if type(self.parentItem()) is QEngineeringLineItem: return errors
501

  
502
        if self.boundingRect().center() == self.sceneBoundingRect().center():
503
            _translate = QCoreApplication.translate
504

  
505
            app_doc_data = AppDocData.instance()
506
            path = app_doc_data.getErrorItemSvgPath()
507

  
508
            error = SymbolSvgItem.createItem('Error', path)
509
            error.setPosition(self.center())
510
            error.parent = self.parentItem()
511
            error.msg = "connection point's position error"
512
            error.setToolTip(error.msg)
513
            error.area = 'Drawing'
514
            error.name = 'Error'
515
            errors.append(error)
516

  
517
        return errors
518

  
493 519
    @staticmethod
494 520
    def fromXml(node):
495 521
        """ generate connector instance from xml node """
......
510 536
            connectedItemNode = Element('CONNECTEDITEM')
511 537
            connectedItemNode.text = str(self.connectedItem.uid) if self.connectedItem and not type(self.connectedItem) is uuid.UUID else 'None'
512 538
            connectPointNode = Element('CONNECTPOINT')
513
            connectPointNode.text = str(self.connectPoint[0]) + ',' + str(self.connectPoint[1])
539
            center = self.boundingRect().center()
540
            connectPointNode.text = str(center.x()) + ',' + str(center.y())
514 541
            sceneConnectPointNode = Element('SCENECONNECTPOINT')
515 542
            center = self.sceneBoundingRect().center()
516 543
            sceneConnectPointNode.text = str(center.x()) + ',' + str(center.y())
DTI_PID/DTI_PID/Shapes/EngineeringErrorItem.py
18 18
from UserInputAttribute import UserInputAttribute
19 19

  
20 20
class QEngineeringErrorItem(SymbolSvgItem):
21
    """
22
    This is Engineering Error Item class
23
    """
21
    """ This is Engineering Error Item class """
24 22
    clicked = pyqtSignal(QGraphicsSvgItem)
25 23

  
26 24
    '''
......
31 29
        self.setZValue(QEngineeringErrorItem.ZVALUE)
32 30
        self.msg = None
33 31

  
34
    def setPosition(self, loc, origin):
35
        transform = QTransform()
36
        transform.translate(loc[0] - origin[0], loc[1] - origin[1])
37
        self.origin = origin
32
    def setPosition(self, loc):
33
        rect = self.boundingRect()
38 34
        self.loc = loc
39
        self.setTransform(transform)
40
    
35
        self.setPos(loc[0] - rect.width(), loc[1] - rect.height())
36

  
37
    def mouseDoubleClickEvent(self, event):
38
        """ do not start rotating """
39
        pass
40

  
41
    def keyPressEvent(self, event):
42
        pass
43

  
41 44
    def toXml(self):
42 45
        # do not save
43 46
        return None
DTI_PID/DTI_PID/Shapes/EngineeringLineItem.py
991 991
            @author euisung
992 992
            @date   2019.04.01
993 993
        '''
994
        from EngineeringAbstractItem import QEngineeringAbstractItem
994 995
        from SymbolSvgItem import SymbolSvgItem
996
        from EngineeringEquipmentItem import QEngineeringEquipmentItem
995 997
        from AppDocData import AppDocData
996 998
        errors = []
997 999

  
998 1000
        try:
1001
            _translate = QCoreApplication.translate
1002

  
999 1003
            docdata = AppDocData.instance()
1000 1004
            dataPath = docdata.getErrorItemSvgPath()
1001
            origin = [int(pt) for pt in docdata.getAppConfigs('app', 'error origin point')[0].value.split(',')]
1002 1005
            needFlowCheck = True
1003 1006
            for connector in self.connectors:
1007
                # check if there is not connected connector
1004 1008
                if connector.connectedItem is None:
1005 1009
                    error = SymbolSvgItem.createItem('Error', dataPath)
1006
                    error.setPosition(connector.center(), origin)
1010
                    error.setPosition(connector.center())
1007 1011
                    error.parent = self
1008 1012
                    error.msg = 'disconnected'
1009 1013
                    error.setToolTip(error.msg)
......
1011 1015
                    error.name = 'Error'
1012 1016
                    errors.append(error)
1013 1017
                    needFlowCheck = False
1018
                # check if two items are connected each other
1019
                elif issubclass(type(connector.connectedItem), SymbolSvgItem) and type(connector.connectedItem) is QEngineeringEquipmentItem:
1020
                    matches = [conn for conn in connector.connectedItem.connectors if conn.connectedItem is self]
1021
                    if not matches:
1022
                        error = SymbolSvgItem.createItem('Error', dataPath)
1023
                        error.setPosition(connector.center())
1024
                        error.parent = self
1025
                        error.msg = self.tr('disconnected')
1026
                        error.setToolTip(error.msg)
1027
                        error.area = 'Drawing'
1028
                        error.name = 'Error'
1029
                        errors.append(error)
1030
                # check if connected two lines has same direction
1031
                elif issubclass(type(connector.connectedItem), QEngineeringLineItem):
1032
                    if connector._connected_at == QEngineeringAbstractItem.CONNECTED_AT_PT:
1033
                        center = connector.center()
1034

  
1035
                        indices = [0, 0]
1036
                        indices[0] = 1 if QPointF(center[0], center[1]) == self.line().p1() else 2
1037
                        matches = [conn for conn in connector.connectedItem.connectors if conn.connectedItem == self and conn._connected_at == QEngineeringAbstractItem.CONNECTED_AT_PT]
1038
                        if matches:
1039
                            indices[1] = 1 if QPointF(matches[0].center()[0], matches[0].center()[1]) == connector.connectedItem.line().p1() else 2
1040

  
1041
                        if indices[0] == indices[1]: 
1042
                            error = SymbolSvgItem.createItem('Error', dataPath)
1043
                            error.setPosition(connector.center())
1044
                            error.parent = self
1045
                            error.msg = _translate('flow direction error', 'flow direction error')
1046
                            error.setToolTip(error.msg)
1047
                            error.area = 'Drawing'
1048
                            error.name = 'Error'
1049
                            errors.append(error)
1050

  
1051
                        if self.lineType != connector.connectedItem.lineType:
1052
                            error = SymbolSvgItem.createItem('Error', dataPath)
1053
                            error.setPosition(connector.center())
1054
                            error.parent = self
1055
                            error.msg = _translate('line type error', 'line type error')
1056
                            error.setToolTip(error.msg)
1057
                            error.area = 'Drawing'
1058
                            error.name = 'Error'
1059
                            errors.append(error)
1060

  
1061
                errors.extend(connector.validate())
1062

  
1014 1063
            if needFlowCheck and type(self.connectors[0].connectedItem) is QEngineeringLineItem and type(self.connectors[1].connectedItem) is QEngineeringLineItem:
1015 1064
                pass
1016 1065

  
DTI_PID/DTI_PID/Shapes/EngineeringSpecBreakItem.py
8 8
from PyQt5.QtSvg import *
9 9
from PyQt5.QtWidgets import (QApplication, QGraphicsItem)
10 10

  
11
from AppDocData import *
12 11
from SymbolSvgItem import SymbolSvgItem
13 12
from SymbolAttr import SymbolAttr
14 13
from UserInputAttribute import UserInputAttribute
15 14
from EngineeringConnectorItem import QEngineeringConnectorItem
16 15

  
17 16
class QEngineeringSpecBreakItem(SymbolSvgItem):
18
    """
19
    This is engineering specbreak item class
20
    """
17
    """ This is engineering specbreak item class """
21 18

  
22 19
    ZVALUE = 20
23 20
    clicked = pyqtSignal(QGraphicsSvgItem)
......
63 60
                    euisung 2019.01.15  return self.attrs
64 61
    '''
65 62
    def getAttributes(self):
66
        """
67
            attributes MUST have UpStream, DownStream attribute
68
        """
63
        """ attributes MUST have UpStream, DownStream attribute """
69 64
        return self.attrs
70 65

  
71
    '''
72
        @brief      generate xml code for nozzle
73
        @author     humkyung
74
        @date       2018.07.19
75
    '''
76
    '''
77
    def toXml(self):
78
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree
79
        from EngineeringTextItem import QEngineeringTextItem
80
        from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
81
        from SymbolAttr import SymbolAttr
82

  
83
        try:
84
            node = Element('SYMBOL')
85
            uidNode = Element('UID')
86
            uidNode.text = str(self.uid)
87
            node.append(uidNode)
88

  
89
            nameNode = Element('NAME')
90
            nameNode.text = self.name
91
            node.append(nameNode)
92

  
93
            typeNode = Element('TYPE')
94
            typeNode.text = self.type
95
            node.append(typeNode)
96

  
97
            # write owner's uid to xml
98
            if self.owner is not None:
99
                ownerNode = Element('OWNER')
100
                ownerNode.text = str(self.owner.uid)
101
                node.append(ownerNode)
102
            # up to here
103

  
104
            originNode = Element('ORIGINALPOINT')
105
            originNode.text = '{},{}'.format(self.origin[0], self.origin[1])
106
            node.append(originNode)
107

  
108
            connectorsNode = Element('CONNECTORS')
109
            for connector in self.connectors:
110
                connectorNode = Element('CONNECTOR')
111
                connectedItemNode = Element('CONNECTEDITEM')
112
                connectedItemNode.text = str(connector.connectedItem.uid) if connector.connectedItem is not None else 'None'
113
                connectPointNode = Element('CONNECTPOINT')
114
                connectPointNode.text = str(connector.connectPoint[0]) + ',' + str(connector.connectPoint[1])
115
                sceneConnectPointNode = Element('SCENECONNECTPOINT')
116
                sceneConnectPointNode.text = str(connector.sceneConnectPoint[0]) + ',' + str(connector.sceneConnectPoint[1])
117

  
118
                connectorNode.append(connectedItemNode)
119
                connectorNode.append(connectPointNode)
120
                connectorNode.append(sceneConnectPointNode)
121
                connectorsNode.append(connectorNode)
122
            node.append(connectorsNode)
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff

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