프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ 9133d5d8

이력 | 보기 | 이력해설 | 다운로드 (203 KB)

1 4f359afa Gyusu
Imports System.IO
2
Imports System.Data.SqlClient
3
Imports System.Data.SQLite
4
Imports Plaice
5
Imports Llama
6 b08338e3 Gyusu
Imports ComUtil.MessageLog.CEventLog
7 e282643f Gyusu
8
Imports System.Threading
9
10 4f359afa Gyusu
Public Class Main
11 54b98e09 Gyusu
    'Dim _Mapping_DB As DataTable = New DataTable()
12 94c7557d gaqhf
    Public _Mapping_DB As DataSet = New DataSet()
13 171ac39d Gyusu
    Dim _Attribute_DB As DataTable = New DataTable()
14 39d43554 Gyusu
    Dim _PIDSymbol_DB As DataTable = New DataTable()
15 e4000111 Gyusu
    Dim _ResultModeling_DT As DataTable = New DataTable()
16 76f465d0 Gyusu
    Dim _AllLine_DT As New DataTable()
17
    Dim _AllSymbol_DT As New DataTable()
18 79326880 Gyusu
    Dim _ModelingLine_Dt As New DataTable()
19 e38f99a7 Gyusu
    Dim _ModelingSymbol_Dt As New DataTable()
20 4f359afa Gyusu
    Dim _Placement As New Placement
21 e4000111 Gyusu
    Dim _DWG_X = 0.875 '0.695 '1 '
22
    Dim _DWG_Y = 0.617 '0.585 '0.8 '
23 c2c36314 Gyusu
    'Dim _DWG_X = 0.842 '0.695 '1 '
24
    'Dim _DWG_Y = 0.614 '0.585 '0.8 '
25 7e561f5b gaqhf
    Public _IMG_X = 0
26
    Public _IMG_Y = 0
27 171ac39d Gyusu
    Dim _Unit As String
28 31d47a80 Gyusu
    'Drawing 전역변수
29
    Dim _objPIDADrawing As Object
30 e282643f Gyusu
    '현재선택한 폴더경로
31
    Dim _selectFolderPath As String
32
    Private _Main_trd As Thread
33 54b98e09 Gyusu
    Private _Opc_trd As Thread
34
    Private _CompleteConvert As Boolean = False
35 171ac39d Gyusu
    Private _DrawingsList As List(Of Drawing)
36 9e1e7135 Gyusu
    Private _iPipeLineNocnt As Integer
37
    Private _iPipecnt As Integer
38
    Private _iFittingcnt As Integer
39
    Private _iValvecnt As Integer
40
    Private _iInstrumentcnt As Integer
41
    Private _iEquipmentcnt As Integer
42
    Private _iNozzlecnt As Integer
43 e4000111 Gyusu
    Private _iPipintOpccnt As Integer
44 41e4023e Gyusu
    Private _allItem As Integer
45
    Private _Itemcnt As Integer
46 b08338e3 Gyusu
    Dim _Gembox As New CGembox()
47 1bfcc921 Gyusu
48 1406fef4 gaqhf
    Dim PipeRunPoint As Dictionary(Of String, List(Of PointdInfo)) = New Dictionary(Of String, List(Of PointdInfo))
49
50 4f359afa Gyusu
    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
51 54b98e09 Gyusu
        LoadDB()
52
    End Sub
53 1bfcc921 Gyusu
    ''' <summary>
54
    ''' brief
55
    ''' </summary>
56 272662f9 Gyusu
57 54b98e09 Gyusu
    Private Sub LoadDB()
58 e282643f Gyusu
        If My.Settings.DBPath <> "" And My.Settings.Plant_Hierarchy <> "" Then
59
            Dim sDBPath As String = My.Settings.DBPath
60 54b98e09 Gyusu
61
            _Gembox.isLoadFile(My.Settings.SymbolLibrary)
62
            _Mapping_DB = _Gembox.LoadFileFunc()
63 171ac39d Gyusu
            _Attribute_DB = Load_DB(sDBPath, _DB_TABLE_ATTRIBUTE)
64 39d43554 Gyusu
            _PIDSymbol_DB = Load_DB(sDBPath, _DB_TABLE_SYMBOLNAME)
65 e4000111 Gyusu
            _ResultModeling_DT = ModelingResult_Dt()
66 e282643f Gyusu
        Else
67
            MessageBox.Show("설정값을 먼저 확인해주세요")
68
        End If
69
    End Sub
70 41e4023e Gyusu
71 94c7557d gaqhf
    Public Function GetDataFromMappingDB(ByVal sSymbolName As String, ByVal sColumn As String) As String
72 171ac39d Gyusu
        Dim sValue As String = ""
73 94c7557d gaqhf
74
        'Debug.WriteLine(_Mapping_DB.Tables.Count)
75
76 54b98e09 Gyusu
        For Each oDt As DataTable In _Mapping_DB.Tables
77
            If oDt.Rows.Count > 0 Then
78 94c7557d gaqhf
                Dim oSelectRow() As DataRow = oDt.Select("[Img_symbolname] = '" + sSymbolName + "'")
79 54b98e09 Gyusu
                If oSelectRow.Length = 1 Then
80
                    If sColumn = _DB_COLUMN_MAPPING_SPPID_SYMBOLNAME Then
81
                        sValue = oSelectRow(0).Item("SYM FILE NAME").ToString()
82
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH Then
83
                        sValue = "\" & oSelectRow(0).Item("SYMBOL PATH").ToString() & "\" & oSelectRow(0).Item("SYM FILE NAME").ToString()
84
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_COMPTPYE Then
85
                        sValue = oSelectRow(0).Item("ITEM TYPE").ToString()
86
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_CLASS Then
87
                        sValue = oSelectRow(0).Item("CLASS").ToString()
88
                    Else
89
                        sValue = oSelectRow(0).Item("SYMBOL PATH").ToString() & "\" & oSelectRow(0).Item("SYM FILE NAME").ToString()
90
                    End If
91
                End If
92 e282643f Gyusu
            End If
93 54b98e09 Gyusu
        Next
94 171ac39d Gyusu
        Return sValue
95 4f359afa Gyusu
    End Function
96
97 171ac39d Gyusu
    Private Function GetAttributeMapping(ByVal sAttributeName As String, ByVal sColumn As String) As String
98
        Dim sSPPIDAttribute As String = ""
99
        If _Attribute_DB.Rows.Count > 0 Then
100
            Dim oSelectRow() As DataRow = _Attribute_DB.Select("[pid_attribute] = '" + sAttributeName + "'")
101
            If oSelectRow.Length = 1 Then
102
                sSPPIDAttribute = oSelectRow(0).Item(sColumn).ToString()
103
            End If
104
        End If
105
        Return sSPPIDAttribute
106
    End Function
107 e282643f Gyusu
108 e6ef24be gaqhf
109
110 171ac39d Gyusu
    Private Function LoadSymbolInXml(ByVal sXmlPath As String) As Drawing
111 54b98e09 Gyusu
        Try
112
            ''  _TempSymbolDt = Symbol_Dt()
113
            Dim CDrawing As Drawing = New Drawing()
114 f291ddcb Gyusu
            '     Dim oDt As DataTable = LoadSymbol_DT()
115 54b98e09 Gyusu
            Dim oElement As XElement = XElement.Load(sXmlPath)
116
            If oElement IsNot Nothing Then
117
                CDrawing.DwgName = oElement.Element(_XML_DWGNAME).Value
118
                CDrawing.Size = oElement.Element(_XML_DWGSIZE).Value
119
                SplitLocation(CDrawing.Size, _IMG_X, _IMG_Y)
120 e6ef24be gaqhf
121
                CDrawing.LINES = LoadLines(oElement)
122
                CDrawing.SYMBOLS = LoadSymbols(oElement)
123
                CDrawing.LINENUMBERS = LoadLineNumbers(oElement)
124
                CDrawing.TRIMLINES = LoadTrimLines(oElement)
125 94c7557d gaqhf
                CDrawing.TEXTS = LoadTexts(oElement)
126 54b98e09 Gyusu
            End If
127
            Return CDrawing
128
        Catch ex As Exception
129
            Return Nothing
130
        End Try
131
132 4f359afa Gyusu
    End Function
133
134 76f465d0 Gyusu
    Private Function FindConnection(ByVal oLine_Dt As DataTable, ByVal oSymbol_Dt As DataTable, ByVal sUid As String, ByVal dPos_x As Double, ByVal dPos_y As Double) As String
135
136
        Dim sReturnUid As String = ""
137
        Try
138
            Dim oFindLineRow As DataRow() = oLine_Dt.Select(
139
            "[" & _XML_LINE_DWG_STARTPOINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
140
            "[" & _XML_LINE_DWG_STARTPOINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
141
            "[" & _XML_LINE_DWG_STARTPOINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
142
            "[" & _XML_LINE_DWG_STARTPOINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
143
            "[" & _XML_LINE_UID & "] <> '" & sUid & "' And " &
144
            "[" & _XML_LINE_Conn1_Uid & "] = ''")
145
            If oFindLineRow.Length = 0 Then
146
                oFindLineRow = oLine_Dt.Select(
147
                "[" & _XML_LINE_DWG_ENDPOINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
148
                "[" & _XML_LINE_DWG_ENDPOINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
149
                "[" & _XML_LINE_DWG_ENDPOINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
150
                "[" & _XML_LINE_DWG_ENDPOINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
151
                "[" & _XML_LINE_UID & "] <> '" & sUid & "' And " &
152
                "[" & _XML_LINE_Conn2_Uid & "] = ''")
153
                If oFindLineRow.Length = 0 Then
154
                    oFindLineRow = oSymbol_Dt.Select(
155
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
156
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
157
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
158
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
159
              "[" & _XML_SYMBOL_UID & "] <> '" & sUid & "' And " &
160
              "[" & _XML_SYMBOL_Conn1_Uid & "] = ''")
161
                    If oFindLineRow.Length = 0 Then
162
                        oFindLineRow = oSymbol_Dt.Select(
163
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
164
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
165
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
166
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
167
                   "[" & _XML_SYMBOL_UID & "] <> '" & sUid & "' And " &
168
                   "[" & _XML_SYMBOL_Conn2_Uid & "] = ''")
169
                        If oFindLineRow.Length = 0 Then
170
                        Else
171
                            oFindLineRow(0)(_XML_SYMBOL_Conn2_Uid) = sUid
172
                            sReturnUid = oFindLineRow(0)(_XML_SYMBOL_UID).ToString()
173
                        End If
174
                    Else
175
                        oFindLineRow(0)(_XML_SYMBOL_Conn1_Uid) = sUid
176
                        sReturnUid = oFindLineRow(0)(_XML_SYMBOL_UID).ToString()
177
                    End If
178
                Else
179
                    oFindLineRow(0)(_XML_LINE_Conn2_Uid) = sUid
180
                    sReturnUid = oFindLineRow(0)(_XML_LINE_UID).ToString()
181
                End If
182
            Else
183
                oFindLineRow(0)(_XML_LINE_Conn1_Uid) = sUid
184
                sReturnUid = oFindLineRow(0)(_XML_LINE_UID).ToString()
185
            End If
186
        Catch ex As Exception
187
188
        End Try
189
190
        Return sReturnUid
191
    End Function
192
193
194
    Private Function SetConnectionInfo(ByRef oLine_Dt As DataTable, ByRef oSymbol_Dt As DataTable)
195
        Try
196
            For Each oLineInfo In oLine_Dt.Rows
197
                Dim sLineUid As String = oLineInfo(_XML_LINE_UID).ToString()
198
                Dim dStartPos_x As Double = oLineInfo(_XML_LINE_DWG_STARTPOINT_X)
199
                Dim dStartPos_y As Double = oLineInfo(_XML_LINE_DWG_STARTPOINT_Y)
200
                Dim dEndPos_x As Double = oLineInfo(_XML_LINE_DWG_ENDPOINT_X)
201
                Dim dEndPos_y As Double = oLineInfo(_XML_LINE_DWG_ENDPOINT_Y)
202
                Dim sConn1Uid As String = ""
203
                Dim sConn2Uid As String = ""
204
                sConn1Uid = FindConnection(oLine_Dt, oSymbol_Dt, sLineUid, dStartPos_x, dStartPos_y)
205
                If sConn1Uid <> "" Then
206
                    oLineInfo(_XML_LINE_Conn1_Uid) = sConn1Uid
207
                End If
208
                sConn2Uid = FindConnection(oLine_Dt, oSymbol_Dt, sLineUid, dEndPos_x, dEndPos_y)
209
                If sConn2Uid <> "" Then
210
                    oLineInfo(_XML_LINE_Conn2_Uid) = sConn2Uid
211
                End If
212
            Next
213
            For Each oSymbolInfo In oSymbol_Dt.Rows
214
                Dim sSymbolUid As String = oSymbolInfo(_XML_SYMBOL_UID).ToString()
215
                Dim dConn1Pos_x As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_X)
216
                Dim dConn1Pos_y As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_Y)
217
                Dim sConn1Uid As String = ""
218
                Dim sConn2Uid As String = ""
219
                sConn1Uid = FindConnection(oLine_Dt, oSymbol_Dt, sSymbolUid, dConn1Pos_x, dConn1Pos_y)
220
                If sConn1Uid <> "" Then
221
                    oSymbolInfo(_XML_SYMBOL_Conn1_Uid) = sConn1Uid
222
                End If
223
                Try
224
                    Dim dConn2Pos_x As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN2_POINT_X)
225
                    Dim dConn2Pos_y As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN2_POINT_Y)
226
                    sConn2Uid = FindConnection(oLine_Dt, oSymbol_Dt, sSymbolUid, dConn2Pos_x, dConn2Pos_y)
227
                    If sConn2Uid <> "" Then
228
                        oSymbolInfo(_XML_SYMBOL_Conn2_Uid) = sConn2Uid
229
                    End If
230
                Catch ex As Exception
231
                End Try
232
            Next
233
        Catch ex As Exception
234
        End Try
235
    End Function
236
237 76f5e1a8 Gyusu
    Private Function GetFlowDirection(ByRef dStart_x As Double, ByRef dStart_y As Double, ByRef dEnd_x As Double, ByRef dEnd_y As Double, ByRef sDirection As String, ByRef sFlowdirection As String) As Boolean
238
        Dim bValidLine As Boolean = True
239 76f465d0 Gyusu
        If Math.Abs(dStart_x - dEnd_x) > Math.Abs(dStart_y - dEnd_y) Then
240
            If dStart_x > dEnd_x Then
241
                sDirection = "X"
242
                sFlowdirection = "Left_x"
243
                If Math.Abs(dStart_y - dEnd_y) < 5 Then
244
                    dEnd_y = dStart_y
245
                End If
246
            Else
247
                sDirection = "X"
248
                sFlowdirection = "Right_x"
249
                If Math.Abs(dStart_y - dEnd_y) < 5 Then
250
                    dEnd_y = dStart_y
251
                End If
252
            End If
253 79326880 Gyusu
            If Math.Abs(dStart_x - dEnd_x) <= 15 Then
254 76f5e1a8 Gyusu
                bValidLine = False
255
            End If
256 76f465d0 Gyusu
        Else
257
            If dStart_y > dEnd_y Then
258
                sDirection = "Y"
259
                sFlowdirection = "Down_y"
260
                If Math.Abs(dStart_x - dEnd_x) < 5 Then
261
                    dEnd_x = dStart_x
262
                End If
263
264
            Else
265
                sDirection = "Y"
266
                sFlowdirection = "Up_y"
267
                If Math.Abs(dStart_x - dEnd_x) < 5 Then
268
                    dEnd_x = dStart_x
269
                End If
270
            End If
271 79326880 Gyusu
            If Math.Abs(dStart_y - dEnd_y) <= 20 Then
272 76f5e1a8 Gyusu
                bValidLine = False
273
            End If
274 76f465d0 Gyusu
        End If
275 76f5e1a8 Gyusu
        Return bValidLine
276 76f465d0 Gyusu
    End Function
277 4f359afa Gyusu
278 e6ef24be gaqhf
    Private Function LoadLines(ByVal oElement As XElement) As List(Of Line)
279
        Dim result As List(Of Line) = New List(Of Line)
280
281
        Dim lineInfos As XElement = oElement.Element(_XML_LINEINFOS)
282
283
        For Each oLine As XElement In lineInfos.Elements(_XML_LINEINFOS_LINE)
284
            Dim _line As Line = New Line()
285
            Try
286
                _line.UID = oLine.Element(_XML_LINEINFOS_LINE_UID).Value
287
                _line.STARTPOINT = oLine.Element(_XML_LINEINFOS_LINE_STARTPOINT).Value
288
                _line.ENDPOINT = oLine.Element(_XML_LINEINFOS_LINE_ENDPOINT).Value
289
                _line.TYPE = oLine.Element(_XML_LINEINFOS_LINE_TYPE).Value
290
                _line.AREA = oLine.Element(_XML_LINEINFOS_LINE_AREA).Value
291
                _line.CONNECTORS = GetConnector(oLine)
292 94c7557d gaqhf
                _line.SPPIDMAPPINGNAME = GetPipeType(_line.TYPE)
293
294
                _line.AfterSetting()
295
296 e6ef24be gaqhf
                result.Add(_line)
297
            Catch ex As Exception
298 94c7557d gaqhf
                Console.WriteLine(ex.Message)
299 e6ef24be gaqhf
            End Try
300
        Next
301
302
        Return result
303
    End Function
304
305
    Private Function LoadSymbols(ByVal oElement As XElement) As List(Of Symbol)
306
        Dim result As List(Of Symbol) = New List(Of Symbol)
307
308
        Dim symbols As XElement = oElement.Element(_XML_SYMBOLS)
309
310
        For Each oSymbol As XElement In symbols.Elements(_XML_SYMBOLS_SYMBOL)
311
            Dim _symbol As Symbol = New Symbol()
312
            Try
313 94c7557d gaqhf
                _symbol.ANGLE = oSymbol.Element(_XML_SYMBOLS_SYMBOL_ANGLE).Value
314 e6ef24be gaqhf
                _symbol.UID = oSymbol.Element(_XML_SYMBOLS_SYMBOL_UID).Value
315
                _symbol.NAME = oSymbol.Element(_XML_SYMBOLS_SYMBOL_NAME).Value
316
                _symbol.TYPE = oSymbol.Element(_XML_SYMBOLS_SYMBOL_TYPE).Value
317
                _symbol.ORIGINALPOINT = oSymbol.Element(_XML_SYMBOLS_SYMBOL_ORIGINALPOINT).Value
318
                _symbol.CONNECTORS = GetConnector(oSymbol)
319
                _symbol.LOCATION = oSymbol.Element(_XML_SYMBOLS_SYMBOL_LOCATION).Value
320
                _symbol.SIZE = oSymbol.Element(_XML_SYMBOLS_SYMBOL_SIZE).Value
321
                _symbol.PARENT = oSymbol.Element(_XML_SYMBOLS_SYMBOL_PARENT).Value
322 9133d5d8 gaqhf
                Dim strChild As String = oSymbol.Element(_XML_SYMBOLS_SYMBOL_CHILD).Value
323
                Dim arrChild As String() = strChild.Split("/")
324
                For Each _child As String In arrChild
325
                    Dim info As String() = _child.Split(",")
326
                    Dim childMappingName = GetDataFromMappingDB(info(1), _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
327
                    If String.IsNullOrEmpty(childMappingName) = False Then
328
                        _symbol.CHILD.Add(info(0) + "," + childMappingName)
329
                    Else
330
                        Console.WriteLine("Mapping Fail : " + info(1))
331
                    End If
332
                Next
333 e6ef24be gaqhf
                _symbol.HASINSTRUMENTLABEL = oSymbol.Element(_XML_SYMBOLS_SYMBOL_HASINSTRUMENTLABEL).Value
334
                _symbol.AREA = oSymbol.Element(_XML_SYMBOLS_SYMBOL_AREA).Value
335
                _symbol.CURRENTPOINTMODEINDEX = oSymbol.Element(_XML_SYMBOLS_SYMBOL_CURRENTPOINTMODEINDEX).Value
336 94c7557d gaqhf
                _symbol.SPPIDMAPPINGNAME = GetDataFromMappingDB(_symbol.PARENT, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
337
338
                _symbol.AfterSetting()
339 e6ef24be gaqhf
340
                result.Add(_symbol)
341
            Catch ex As Exception
342 94c7557d gaqhf
                Console.WriteLine(ex.Message)
343 e6ef24be gaqhf
            End Try
344
        Next
345
346
        Return result
347
    End Function
348
349
    Private Function LoadLineNumbers(ByVal oElement As XElement) As List(Of LineNumber)
350
        Dim result As List(Of LineNumber) = New List(Of LineNumber)
351
352
        Dim lineNos As XElement = oElement.Element(_XML_LINENOS)
353
354
        For Each oLineNo As XElement In lineNos.Elements(_XML_LINENOS_LINENO)
355
            Dim _lineNo As LineNumber = New LineNumber()
356
            Try
357
                _lineNo.UID = oLineNo.Element(_XML_LINEINFOS_LINE_UID).Value
358 94c7557d gaqhf
                _lineNo.ANGLE = oLineNo.Element("ANGLE").Value
359
                _lineNo.TEXT = oLineNo.Element("TEXT").Value
360 e6ef24be gaqhf
                _lineNo.SYMBOLRUNITEMS = GetSymbolRunItems(oLineNo)
361
                _lineNo.LINERUNITEMS = GetLineRunItems(oLineNo)
362 94c7557d gaqhf
                If oLineNo.Element("CONNLINE") IsNot Nothing Then
363
                    _lineNo.CONNECTLINE = oLineNo.Element("CONNLINE").Value
364
                End If
365
                _lineNo.LOCATION = oLineNo.Element("LOCATION").Value
366
367
                Console.WriteLine("임시 Line Number Labeling and Attribute")
368
                _lineNo.SPPIDMAPPINGNAME = "\Piping\Labels - Piping Segments\Line Number.sym"
369
370
                For Each attrElement As XElement In oLineNo.Elements("ATTRIBUTE")
371
                    Dim attr As Attribute = New Attribute()
372
                    attr.UID = attrElement.Attribute("UID").Value
373
                    attr.NAME = attrElement.Attribute("DisplayAttribute").Value.Replace(" ", "")
374
                    If attrElement.Value <> "None" Then
375
                        attr.VALUE = attrElement.Value
376
                    Else
377
                        attr.VALUE = ""
378
                    End If
379
                    _lineNo.ATTRIBUTES.Add(attr)
380
                Next
381
382
                _lineNo.AfterSetting()
383 e6ef24be gaqhf
384
                result.Add(_lineNo)
385
            Catch ex As Exception
386 94c7557d gaqhf
                Console.WriteLine(ex.Message)
387 e6ef24be gaqhf
            End Try
388
        Next
389
390
        Return result
391
    End Function
392
393
    Private Function LoadTrimLines(ByVal oElement As XElement) As List(Of LineNumber)
394
        Dim result As List(Of LineNumber) = New List(Of LineNumber)
395
396
        Dim trimNos As XElement = oElement.Element(_XML_TRIMLINENOS)
397
398
        For Each oTrimLine As XElement In trimNos.Elements(_XML_TRIMLINENOS_TRIM_LINE_NO)
399
            Dim _lineNo As LineNumber = New LineNumber()
400
            Try
401
                _lineNo.UID = oTrimLine.Element(_XML_LINEINFOS_LINE_UID).Value
402
403
                _lineNo.SYMBOLRUNITEMS = GetSymbolRunItems(oTrimLine)
404
                _lineNo.LINERUNITEMS = GetLineRunItems(oTrimLine)
405
406
                result.Add(_lineNo)
407
            Catch ex As Exception
408
409
            End Try
410
        Next
411
412
        Return result
413
    End Function
414
415 94c7557d gaqhf
    Private Function LoadTexts(ByVal oElement As XElement) As List(Of Text)
416
        Dim result As List(Of Text) = New List(Of Text)
417
418
        Dim textInfos As XElement = oElement.Element(_XML_TEXTINFOS)
419
420
        For Each oText As XElement In textInfos.Elements("ATTRIBUTE")
421
            Dim _text As Text = New Text()
422
            Try
423
                _text.UID = oText.Element("UID").Value
424
                _text.NAME = oText.Element("NAME").Value
425
                _text.LOCATION = oText.Element("LOCATION").Value
426
                _text.TEXT = oText.Element("VALUE").Value
427
                _text.ANGLE = oText.Element("ANGLE").Value
428
                _text.AREA = oText.Element("AREA").Value
429
430
                If oText.Element("OWNER") IsNot Nothing Then
431
                    _text.OWNER = oText.Element("OWNER").Value
432
                End If
433
434
                Console.WriteLine("임시 Text Labeling")
435
                If _text.NAME = "TEXT" Then
436
                    _text.SPPIDMAPPINGNAME = "\Design\Annotation\Labels\Drawing Notes Label.sym"
437
                ElseIf _text.NAME = "SIZE" Then
438
                    '_text.SPPIDMAPPINGNAME = "\Piping\Labels - Piping Components\Nominal Diameter.sym"
439
                End If
440 e6ef24be gaqhf
441
442 94c7557d gaqhf
                _text.AfterSetting()
443
444
                result.Add(_text)
445
            Catch ex As Exception
446
                Console.WriteLine(ex.Message)
447
            End Try
448 e6ef24be gaqhf
        Next
449
450
        Return result
451
    End Function
452
453 94c7557d gaqhf
    Private Function GetSymbolRunItems(ByVal oElement As XElement) As List(Of String)
454 e6ef24be gaqhf
        Dim result As List(Of String) = New List(Of String)
455
        Dim oRun As XElement = oElement.Element(_XML_RUN)
456 94c7557d gaqhf
        If oRun IsNot Nothing Then
457
            For Each oSymbol As XElement In oRun.Elements(_XML_RUN_SYMBOL)
458
                result.Add(oSymbol.Element(_XML_SYMBOLS_SYMBOL_UID))
459
            Next
460
        End If
461
        Return result
462
    End Function
463 e6ef24be gaqhf
464 94c7557d gaqhf
    Private Function GetLineRunItems(ByVal oElement As XElement) As List(Of String)
465
        Dim result As List(Of String) = New List(Of String)
466
        Dim oRun As XElement = oElement.Element(_XML_RUN)
467
        If oRun IsNot Nothing Then
468
            For Each oLine As XElement In oRun.Elements(_XML_RUN_LINE)
469
                result.Add(oLine.Element(_XML_LINEINFOS_LINE_UID))
470
            Next
471
        End If
472 e6ef24be gaqhf
        Return result
473
    End Function
474
475
476
477
    Private Function GetConnector(ByVal oElement As XElement) As List(Of Connector)
478
        Dim result As List(Of Connector) = New List(Of Connector)
479
        Dim oElementConnectors As XElement = oElement.Element(_XML_CONNECTORS)
480
        For Each oConnector As XElement In oElementConnectors.Elements(_XML_CONNECTORS_CONNECTOR)
481
            Dim _connector As Connector = New Connector()
482
            Try
483
                _connector.CONNECTEDITEM = oConnector.Element(_XML_CONNECTORS_CONNECTOR_CONNECTEDITEM).Value
484
                _connector.CONNECTPOINT = oConnector.Element(_XML_CONNECTORS_CONNECTOR_CONNECTPOINT).Value
485
                _connector.SCENECONNECTPOINT = oConnector.Element(_XML_CONNECTORS_CONNECTOR_SCENECONNECTPOINT).Value
486
                result.Add(_connector)
487
            Catch ex As Exception
488
            End Try
489
        Next
490
491
        Return result
492
    End Function
493
494 3acffcee Gyusu
    Private Function LoadLineNo(ByVal oElement As XElement, ByVal sLineType As String) As List(Of Line_no)
495
496
        Dim oLineno_list As New List(Of Line_no)
497
        For Each oLineNo As Object In oElement.Elements(sLineType)
498
            Dim CLineNo As Line_no = New Line_no()
499
            Try
500
                CLineNo.Uid = oLineNo.Element(_XML_LINENO_UID).Value
501
                CLineNo.Text = oLineNo.Element(_XML_LINENO_TEXT).Value
502
                CLineNo.Location = oLineNo.Element(_XML_LINENO_LOCATION).Value
503
                CLineNo.Angle = oLineNo.Element(_XML_LINENO_ANGLE).Value
504
                CLineNo.SystemPath = "\Piping\Labels - Piping Segments\Kemya Line Number.sym" 'GetDataFromMappingDB(_XML_CATEGORY_LINENO, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
505
            Catch ex As Exception
506
            End Try
507
            Dim oLine_Dt As DataTable = Line_Dt()
508
            Dim oSymbol_Dt As DataTable = Symbol_Dt()
509
            Dim oAttribute_Dt As DataTable = Attribute_Dt()
510 76f465d0 Gyusu
            Dim iRunCnt As Integer = 0
511 3acffcee Gyusu
            For Each oRun As Object In oLineNo.Elements(_XML_CATEGORY_RUN)
512 76f465d0 Gyusu
                iRunCnt = iRunCnt + 1
513
                Dim sRunName As String = CLineNo.Text & "_" & iRunCnt
514
                For Each oMERGEDLine As Object In oRun.Elements(_XML_CATEGORY_MERGEDLINE)
515
                    For Each oLine As Object In oMERGEDLine.Elements(_XML_CATEGORY_LINE)
516
                        Try
517
                            Dim oAddrow As DataRow = oLine_Dt.NewRow()
518
                            Dim oEleObj As XElement
519
                            Dim sUid As String
520
                            Dim sStartpoint As String
521
                            Dim sEndpoint As String
522
                            Dim sType As String
523
                            Dim sConnectionUids As String = ""
524
                            Dim dStartPos_x As Double = 0.0
525
                            Dim dStartPos_y As Double = 0.0
526
                            Dim dEndPos_x As Double = 0.0
527
                            Dim dEndPos_y As Double = 0.0
528
                            Dim dDWG_StartPos_x As Double = 0.0
529
                            Dim dDWG_StartPos_y As Double = 0.0
530
                            Dim dDWG_EndPos_x As Double = 0.0
531
                            Dim dDWG_EndPos_y As Double = 0.0
532
                            oEleObj = oLine.Element(_XML_LINE_UID)
533
                            sUid = oEleObj.Value
534 b08338e3 Gyusu
535 76f465d0 Gyusu
                            If oLine_Dt.Select(_XML_LINE_UID & "='" & sUid & "'").Length = 0 Then
536
                                oEleObj = oLine.Element(_XML_LINE_STARTPOINT)
537
                                sStartpoint = oEleObj.Value
538
                                oEleObj = oLine.Element(_XML_LINE_ENDPOINT)
539
                                sEndpoint = oEleObj.Value
540
                                oEleObj = oLine.Element(_XML_LINE_TYPE)
541
                                sType = oEleObj.Value
542 f291ddcb Gyusu
543 76f465d0 Gyusu
                                oAddrow(_XML_LINE_Conn1_Uid) = ""
544
                                oAddrow(_XML_LINE_Conn2_Uid) = ""
545
                                oAddrow(_XML_LINE_UID) = sUid
546
                                oAddrow(_XML_LINE_RUNNAME) = sRunName
547
                                oAddrow(_XML_LINE_LINENOUID) = CLineNo.Uid
548
                                oAddrow(_XML_LINENO_TEXT) = CLineNo.Text
549
                                oAddrow(_XML_LINE_STARTPOINT) = sStartpoint
550
                                oAddrow(_XML_LINE_ENDPOINT) = sEndpoint
551 f291ddcb Gyusu
                                If sUid = "0bda520b-9c01-4dc1-9ddd-73adb5f7a871" Then
552
                                    MsgBox("")
553
                                End If
554 76f465d0 Gyusu
                                ConvertPointBystring(sStartpoint, dStartPos_x, dStartPos_y)
555
                                ConvertPointBystring(sEndpoint, dEndPos_x, dEndPos_y)
556
                                Dim sDirection As String = ""
557 76f5e1a8 Gyusu
                                Dim sFlowDirection As String = ""
558
                                Dim bValidLine As Boolean = GetFlowDirection(dStartPos_x, dStartPos_y, dEndPos_x, dEndPos_y, sDirection, sFlowDirection)
559
                                oAddrow(_XML_LINE_FlowDirection) = sFlowDirection
560 76f465d0 Gyusu
                                oAddrow(_XML_LINE_Direction) = sDirection
561 76f5e1a8 Gyusu
                                oAddrow(_XML_LINE_ValieLine) = bValidLine
562 76f465d0 Gyusu
                                dDWG_StartPos_x = dStartPos_x
563
                                dDWG_StartPos_y = dStartPos_y
564
                                ConvertPointByImage(dDWG_StartPos_x, dDWG_StartPos_y, _IMG_X, _IMG_Y)
565
                                dDWG_EndPos_x = dEndPos_x
566
                                dDWG_EndPos_y = dEndPos_y
567
                                ConvertPointByImage(dDWG_EndPos_x, dDWG_EndPos_y, _IMG_X, _IMG_Y)
568
569
                                oAddrow(_XML_LINE_STARTPOINT_X) = dStartPos_x
570
                                oAddrow(_XML_LINE_STARTPOINT_Y) = dStartPos_y
571
                                oAddrow(_XML_LINE_ENDPOINT_X) = dEndPos_x
572
                                oAddrow(_XML_LINE_ENDPOINT_Y) = dEndPos_y
573
574
                                oAddrow(_XML_LINE_DWG_STARTPOINT_X) = dDWG_StartPos_x
575
                                oAddrow(_XML_LINE_DWG_STARTPOINT_Y) = dDWG_StartPos_y
576
                                oAddrow(_XML_LINE_DWG_ENDPOINT_X) = dDWG_EndPos_x
577
                                oAddrow(_XML_LINE_DWG_ENDPOINT_Y) = dDWG_EndPos_y
578
579
                                oAddrow(_XML_LINE_SYSTEMPATH) = GetDataFromMappingDB(_XML_CATEGORY_LINE, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
580
                                If oAddrow(_XML_LINE_SYSTEMPATH) = "" Then
581
                                    MessageBox.Show("")
582 b08338e3 Gyusu
                                End If
583 76f465d0 Gyusu
                                oAddrow(_XML_LINE_DRAWING_TF) = "FALSE"
584
                                oAddrow(_XML_LINE_TYPE) = sType
585
                                '  _AllLine_DT.Rows.Add(oAddrow)
586
                                oLine_Dt.Rows.Add(oAddrow)
587
                            Else
588 b08338e3 Gyusu
                            End If
589 76f465d0 Gyusu
                        Catch ex As Exception
590
                        End Try
591
                    Next
592 3acffcee Gyusu
                Next
593
594
                For Each oSymbol As Object In oRun.Elements(_XML_CATEGORY_SYMBOL)
595
                    Try
596 76f465d0 Gyusu
597 3acffcee Gyusu
                        Dim oAddrow As DataRow = oSymbol_Dt.NewRow()
598
                        Dim oEleObj As XElement
599
                        Dim sUid As String
600
                        Dim sName As String
601
                        Dim sLocation As String
602
                        Dim sSize As String
603
                        Dim sAngle As String
604
                        Dim sOriginalPoint As String = ""
605 bb2a0c79 Gyusu
                        Dim sConnectionPoint As String = ""
606 b08338e3 Gyusu
                        Dim sConnectionUids As String = ""
607
                        Dim sConnArray As String()
608 e38f99a7 Gyusu
                        Dim sSizeArray As String()
609
                        Dim sLocationArray As String()
610 9c86a823 Gyusu
                        Dim sChild As String = ""
611 76f465d0 Gyusu
                        Dim dCenterPos_x As Double = 0.0
612
                        Dim dCenterPos_y As Double = 0.0
613
                        Dim dDwgCenterPos_x As Double = 0.0
614
                        Dim dDwgCenterPos_y As Double = 0.0
615
616
                        Dim dConn1Pos_x As Double = 0.0
617
                        Dim dConn1Pos_y As Double = 0.0
618
                        Dim dConn2Pos_x As Double = 0.0
619
                        Dim dConn2Pos_y As Double = 0.0
620
                        Dim dConn3Pos_x As Double = 0.0
621
                        Dim dConn3Pos_y As Double = 0.0
622
                        Dim dConn4Pos_x As Double = 0.0
623
                        Dim dConn4Pos_y As Double = 0.0
624
625
                        Dim dDwg_Conn1Pos_x As Double = 0.0
626
                        Dim dDwg_Conn1Pos_y As Double = 0.0
627
                        Dim dDwg_Conn2Pos_x As Double = 0.0
628
                        Dim dDwg_Conn2Pos_y As Double = 0.0
629
                        Dim dDwg_Conn3Pos_x As Double = 0.0
630
                        Dim dDwg_Conn3Pos_y As Double = 0.0
631
                        Dim dDwg_Conn4Pos_x As Double = 0.0
632
                        Dim dDwg_Conn4Pos_y As Double = 0.0
633
634 3acffcee Gyusu
                        oEleObj = oSymbol.Element(_XML_SYMBOL_UID)
635
                        sUid = oEleObj.Value
636
                        oEleObj = oSymbol.Element(_XML_SYMBOL_PARENT)
637
                        sName = oEleObj.Value
638
                        oEleObj = oSymbol.Element(_XML_SYMBOL_LOCATION)
639
                        sLocation = oEleObj.Value
640
                        oEleObj = oSymbol.Element(_XML_SYMBOL_SIZE)
641
                        sSize = oEleObj.Value
642
                        oEleObj = oSymbol.Element(_XML_SYMBOL_ANGLE)
643
                        sAngle = oEleObj.Value
644 bb2a0c79 Gyusu
                        oEleObj = oSymbol.Element(_XML_SYMBOL_CONNECTIONPOINT)
645
                        sConnectionPoint = oEleObj.Value
646 9c86a823 Gyusu
                        oEleObj = oSymbol.Element(_XML_SYMBOL_CHILD)
647
                        sChild = oEleObj.Value
648 3acffcee Gyusu
                        Try
649
                            oEleObj = oSymbol.Element(_XML_SYMBOL_ORIGINALPOINT)
650
                            sOriginalPoint = oEleObj.Value
651
                        Catch ex As Exception
652
653
                        End Try
654 76f465d0 Gyusu
                        'oEleObj = oSymbol.Element(_XML_LINE_CONNS)
655
                        'sConnectionUids = oEleObj.Value
656
                        'sConnArray = sConnectionUids.Split(",")
657
                        'If sConnArray.Length > 4 Then
658
                        '    MessageBox.Show(sConnArray.Length)
659
                        'End If
660
                        'For i = 0 To sConnArray.Length - 1
661
                        '    If i = 0 Then
662
                        '        oAddrow(_XML_SYMBOL_Conn1_Uid) = sConnArray(i)
663
                        '    ElseIf i = 1 Then
664
                        '        oAddrow(_XML_SYMBOL_Conn2_Uid) = sConnArray(i)
665
                        '    ElseIf i = 2 Then
666
                        '        oAddrow(_XML_SYMBOL_Conn3_Uid) = sConnArray(i)
667
                        '    ElseIf i = 3 Then
668
                        '        oAddrow(_XML_SYMBOL_Conn4_Uid) = sConnArray(i)
669
                        '    End If
670
                        'Next
671
                        oAddrow(_XML_SYMBOL_Conn1_Uid) = ""
672
                        oAddrow(_XML_SYMBOL_Conn2_Uid) = ""
673
                        oAddrow(_XML_SYMBOL_Conn3_Uid) = ""
674
                        oAddrow(_XML_SYMBOL_Conn4_Uid) = ""
675
                        ConvertPointBystring(sOriginalPoint, dCenterPos_x, dCenterPos_y)
676
                        dDwgCenterPos_x = dCenterPos_x
677
                        dDwgCenterPos_y = dCenterPos_y
678
                        ConvertPointByImage(dDwgCenterPos_x, dDwgCenterPos_y, _IMG_X, _IMG_Y)
679
680
                        oAddrow(_XML_SYMBOL_CENTERPOINT_X) = dCenterPos_x
681
                        oAddrow(_XML_SYMBOL_CENTERPOINT_Y) = dCenterPos_y
682
                        oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_X) = dDwgCenterPos_x
683
                        oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_Y) = dDwgCenterPos_y
684
                        sConnArray = sConnectionPoint.Split("/")
685 e38f99a7 Gyusu
                        sSizeArray = sSize.Split(",")
686
                        sLocationArray = sLocation.Split(",")
687 b08338e3 Gyusu
                        If sConnArray.Length > 4 Then
688
                            MessageBox.Show(sConnArray.Length)
689
                        End If
690
                        For i = 0 To sConnArray.Length - 1
691
                            If i = 0 Then
692 76f465d0 Gyusu
                                oAddrow(_XML_SYMBOL_Conn1_Point) = sConnArray(i)
693
                                ConvertPointBystring(sConnArray(i), dConn1Pos_x, dConn1Pos_y)
694
                                dDwg_Conn1Pos_x = dConn1Pos_x
695
                                dDwg_Conn1Pos_y = dConn1Pos_y
696
                                ConvertPointByImage(dDwg_Conn1Pos_x, dDwg_Conn1Pos_y, _IMG_X, _IMG_Y)
697
698
                                oAddrow(_XML_SYMBOL_CONN1_POINT_X) = dConn1Pos_x
699
                                oAddrow(_XML_SYMBOL_CONN1_POINT_Y) = dConn1Pos_y
700
                                oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_X) = dDwg_Conn1Pos_x
701
                                oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_Y) = dDwg_Conn1Pos_y
702 b08338e3 Gyusu
                            ElseIf i = 1 Then
703 76f465d0 Gyusu
                                oAddrow(_XML_SYMBOL_Conn2_Point) = sConnArray(i)
704
                                ConvertPointBystring(sConnArray(i), dConn2Pos_x, dConn2Pos_y)
705
                                dDwg_Conn2Pos_x = dConn2Pos_x
706
                                dDwg_Conn2Pos_y = dConn2Pos_y
707
                                ConvertPointByImage(dDwg_Conn2Pos_x, dDwg_Conn2Pos_y, _IMG_X, _IMG_Y)
708
                                oAddrow(_XML_SYMBOL_CONN2_POINT_X) = dConn2Pos_x
709
                                oAddrow(_XML_SYMBOL_CONN2_POINT_Y) = dConn2Pos_y
710
                                oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_X) = dDwg_Conn2Pos_x
711
                                oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_Y) = dDwg_Conn2Pos_y
712 b08338e3 Gyusu
                            ElseIf i = 2 Then
713 76f465d0 Gyusu
                                oAddrow(_XML_SYMBOL_Conn3_Point) = sConnArray(i)
714
                                ConvertPointBystring(sConnArray(i), dConn3Pos_x, dConn3Pos_y)
715
                                dDwg_Conn3Pos_x = dConn3Pos_x
716
                                dDwg_Conn3Pos_y = dConn3Pos_y
717
                                ConvertPointByImage(dDwg_Conn3Pos_x, dDwg_Conn3Pos_y, _IMG_X, _IMG_Y)
718
                                oAddrow(_XML_SYMBOL_CONN3_POINT_X) = dConn3Pos_x
719
                                oAddrow(_XML_SYMBOL_CONN3_POINT_Y) = dConn3Pos_y
720
                                oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_X) = dDwg_Conn3Pos_x
721
                                oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_Y) = dDwg_Conn3Pos_y
722 b08338e3 Gyusu
                            ElseIf i = 3 Then
723 76f465d0 Gyusu
                                oAddrow(_XML_SYMBOL_Conn4_Point) = sConnArray(i)
724
                                ConvertPointBystring(sConnArray(i), dConn4Pos_x, dConn4Pos_y)
725
                                dDwg_Conn4Pos_x = dConn4Pos_x
726
                                dDwg_Conn4Pos_y = dConn4Pos_y
727
                                ConvertPointByImage(dDwg_Conn4Pos_x, dDwg_Conn4Pos_y, _IMG_X, _IMG_Y)
728
                                oAddrow(_XML_SYMBOL_CONN4_POINT_X) = dConn4Pos_x
729
                                oAddrow(_XML_SYMBOL_CONN4_POINT_Y) = dConn4Pos_y
730
                                oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_X) = dDwg_Conn4Pos_x
731
                                oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_Y) = dDwg_Conn4Pos_y
732 b08338e3 Gyusu
                            End If
733
                        Next
734
735 e38f99a7 Gyusu
                        Dim sXLength As String = ""
736
                        Dim sYLength As String = ""
737
738
                        Dim dMin_x As Double = 0
739
                        Dim dMax_x As Double = 0
740
                        Dim dMin_y As Double = 0
741
                        Dim dMax_y As Double = 0
742
743
                        For i = 0 To sSizeArray.Length - 1
744
                            If i = 0 Then
745
                                sXLength = sSizeArray(i)
746
                            ElseIf i = 1 Then
747
                                sYLength = sSizeArray(i)
748
                            End If
749
                        Next
750
751
                        For i = 0 To sLocationArray.Length - 1
752
                            If i = 0 Then
753
                                dMin_x = sLocationArray(i)
754
                                dMax_x = dMin_x + sXLength
755
                            ElseIf i = 1 Then
756
                                'Y축은 반전
757
                                dMax_y = sLocationArray(i)
758
                                dMin_y = dMax_y + sYLength
759
                            End If
760
                        Next
761
                        ConvertPointByImage(dMin_x, dMin_y, _IMG_X, _IMG_Y)
762
                        ConvertPointByImage(dMax_x, dMax_y, _IMG_X, _IMG_Y)
763
764
                        oAddrow(_XML_SYMBOL_MIN_X) = dMin_x
765
                        oAddrow(_XML_SYMBOL_MAX_X) = dMax_x
766
                        oAddrow(_XML_SYMBOL_MIN_Y) = dMin_y
767
                        oAddrow(_XML_SYMBOL_MAX_Y) = dMax_y
768 3acffcee Gyusu
                        oAddrow(_XML_SYMBOL_UID) = sUid
769 b08338e3 Gyusu
                        oAddrow(_XML_LINE_LINENOUID) = CLineNo.Uid
770 76f465d0 Gyusu
                        oAddrow(_XML_SYMBOL_RUNNAME) = sRunName
771 b08338e3 Gyusu
                        oAddrow(_XML_LINENO_TEXT) = CLineNo.Text
772 3acffcee Gyusu
                        oAddrow(_XML_SYMBOL_NAME) = IO.Path.GetFileNameWithoutExtension(GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYMBOLNAME))
773
                        oAddrow(_XML_SYMBOL_LOCATION) = sLocation
774
                        oAddrow(_XML_SYMBOL_SIZE) = sSize
775
                        oAddrow(_XML_SYMBOL_ANGLE) = sAngle
776
                        oAddrow(_XML_SYMBOL_SYSTEMPATH) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
777
                        oAddrow(_XML_SYMBOL_TYPE) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_COMPTPYE)
778
                        oAddrow(_XML_SYMBOL_CLASS) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_CLASS)
779
                        oAddrow(_XML_SYMBOL_ORIGINALPOINT) = sOriginalPoint
780 76f465d0 Gyusu
781 bb2a0c79 Gyusu
                        oAddrow(_XML_SYMBOL_CONNECTIONPOINT) = sConnectionPoint
782 e4000111 Gyusu
                        oAddrow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
783 9c86a823 Gyusu
                        oAddrow(_XML_SYMBOL_CHILD) = sChild
784 76f465d0 Gyusu
                        '   _AllSymbol_DT.Rows.Add(oAddrow)
785 3acffcee Gyusu
                        oSymbol_Dt.Rows.Add(oAddrow)
786
                    Catch ex As Exception
787
                    End Try
788
                Next
789
790
                For Each oAtrribute As Object In oRun.Elements(_XML_CATEGORY_ATTRIBUTE)
791
                    Try
792
                        Dim oAddrow As DataRow = oAttribute_Dt.NewRow()
793
                        Dim oEleObj As XElement
794
                        Dim sUid As String
795
                        Dim sName As String
796
                        Dim sValue As String
797
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_UID)
798
                        sUid = oEleObj.Value
799
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_NAME)
800
                        sName = oEleObj.Value
801
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_VALUE)
802
                        sValue = oEleObj.Value
803
                        oAddrow(_XML_ATTRIBUTE_UID) = sUid
804
                        oAddrow(_XML_ATTRIBUTE_NAME) = sName
805
                        oAddrow(_XML_ATTRIBUTE_VALUE) = sValue
806
                        oAttribute_Dt.Rows.Add(oAddrow)
807
                    Catch ex As Exception
808
                    End Try
809
                Next
810
            Next
811
            'Line No Attribute
812
            For Each oAtrribute As Object In oLineNo.Elements(_XML_CATEGORY_ATTRIBUTE)
813
                Try
814
                    Dim oAddrow As DataRow = oAttribute_Dt.NewRow()
815
                    Dim oEleObj As XElement
816
                    Dim sUid As String = ""
817
                    Dim sName As String
818
                    Dim sValue As String
819
820
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_UID)
821
                    sUid = oEleObj.Value
822
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_NAME)
823
                    sName = oEleObj.Value
824
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_VALUE)
825
                    sValue = oEleObj.Value
826
                    oAddrow(_XML_ATTRIBUTE_UID) = sUid
827
                    oAddrow(_XML_ATTRIBUTE_NAME) = sName
828
                    oAddrow(_XML_ATTRIBUTE_VALUE) = sValue
829
                    oAttribute_Dt.Rows.Add(oAddrow)
830
                Catch ex As Exception
831
                End Try
832
            Next
833 76f465d0 Gyusu
            SetConnectionInfo(oLine_Dt, oSymbol_Dt)
834
            _AllLine_DT.Merge(oLine_Dt)
835
            _AllSymbol_DT.Merge(oSymbol_Dt)
836 3acffcee Gyusu
            CLineNo.Dt_Line = oLine_Dt
837
            CLineNo.Dt_Symbol = oSymbol_Dt
838
            CLineNo.Dt_Attribute = oAttribute_Dt
839
            oLineno_list.Add(CLineNo)
840
        Next
841
        Return oLineno_list
842
    End Function
843
844 7e561f5b gaqhf
    Public Sub ConvertPointByImage(ByRef dX As Double, ByRef dY As Double, ByVal dDwgX As Double, ByVal dDwgY As Double)
845 4f359afa Gyusu
846
        Dim calcx As Double = 0
847
        Dim calcy As Double = 0
848
        calcx = (dX * _DWG_X) / dDwgX 'Math.Round((dX * _DWG_X) / dDwgX, 2)
849 76f465d0 Gyusu
        calcx = Math.Truncate(calcx * 1000) / 1000
850 171ac39d Gyusu
        calcy = _DWG_Y - ((dY * _DWG_Y) / dDwgY) '_DWG_Y - Math.Round((dY * _DWG_Y) / dDwgY, 2)
851 76f465d0 Gyusu
        calcy = Math.Truncate(calcy * 1000) / 1000
852 4f359afa Gyusu
        dX = calcx
853
        dY = calcy
854
    End Sub
855 e1cde8f2 Gyusu
    '@brief Convert To SPPID
856
    '@author : Gyusu Park
857
    '@date : 2018-04-10
858
    '@history:
859 171ac39d Gyusu
    Private Sub SplitLocation(ByVal sLocation As String, ByRef dX As Double, ByRef dY As Double)
860
861
        Dim opointstr As String() = Split(sLocation, ",")
862
        If (opointstr.Length > 1) Then
863
            If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
864
                dX = opointstr(0)
865
                dY = opointstr(1)
866
            End If
867
        End If
868
869
    End Sub
870
871
    Private Function Load_DB(ByVal sDBPath As String, ByVal sTableName As String) As DataTable
872 4f359afa Gyusu
873
        Try
874 171ac39d Gyusu
            Dim oDt As New DataTable
875 4f359afa Gyusu
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
876
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
877
            conn.Open()
878 171ac39d Gyusu
            Dim sQuery As String = "Select * from " & sTableName
879 4f359afa Gyusu
            Dim cmd As SQLiteCommand = conn.CreateCommand()
880
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
881
            Dim oDataSet As DataSet = New DataSet()
882
            adapter.Fill(oDataSet)
883 171ac39d Gyusu
            oDt = oDataSet.Tables(0)
884
            Return oDt
885 4f359afa Gyusu
        Catch ex As Exception
886 171ac39d Gyusu
            Return Nothing
887 4f359afa Gyusu
        End Try
888 171ac39d Gyusu
    End Function
889 4f359afa Gyusu
890 31d47a80 Gyusu
    Private Function LoadAllDrawing() As DataTable
891 e1cde8f2 Gyusu
        SetListBoxItems(ListBox_Result, "도면정보 로드중....")
892 b08338e3 Gyusu
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "도면정보 로드중....")
893 31d47a80 Gyusu
        Dim oDt As DataTable = Drawing_Dt()
894 e282643f Gyusu
        Dim sHierarchy As String = My.Settings.Plant_Hierarchy
895
        Dim files() As String
896
        files = Directory.GetFiles(sHierarchy, "*.pid", SearchOption.AllDirectories)
897
        For Each FileName As String In files
898
            Dim sName As String = FileName
899 31d47a80 Gyusu
            Dim oAddRow As DataRow = oDt.NewRow()
900 e282643f Gyusu
            oAddRow("Name") = Path.GetFileNameWithoutExtension(sName)
901
            oAddRow("Path") = FileName
902 31d47a80 Gyusu
            oDt.Rows.Add(oAddRow)
903
        Next
904
        Return oDt
905
    End Function
906
907 272662f9 Gyusu
    Dim _XMLList As ListView = New ListView()
908 e282643f Gyusu
909 171ac39d Gyusu
    Private Function CheckOpenDrawing() As Boolean
910
        Try
911
912
            Dim lobjDatasource As Object
913
            _Placement = CreateObject("Plaice.Placement", "")
914
            lobjDatasource = _Placement.PIDDataSource
915
            Return True
916
        Catch ex As Exception
917
            Return False
918
        End Try
919
920
    End Function
921
922
923
    Private Sub Btn_Convert_Click(sender As Object, e As EventArgs) Handles Btn_Convert.Click
924
        Main_Tab.SelectedIndex = 1
925
        ListBox_Result.Items.Clear()
926
        Me.ProgressBar_Status.Visible = True
927
        ProgressBar_Status.Maximum = 100
928
        ProgressBar_Status.Value = 0
929 94c7557d gaqhf
930 54b98e09 Gyusu
        _Main_trd = New Thread(AddressOf ThreadConvert)
931 171ac39d Gyusu
        _Main_trd.IsBackground = True
932
        _Main_trd.Start()
933 54b98e09 Gyusu
        FineOPCForm()
934
    End Sub
935 171ac39d Gyusu
936 54b98e09 Gyusu
    Private Sub FineOPCForm()
937
        _Opc_trd = New Thread(AddressOf ThreadOPCRemove)
938
        _Opc_trd.IsBackground = True
939
        _Opc_trd.Start()
940 171ac39d Gyusu
    End Sub
941 54b98e09 Gyusu
942 31d47a80 Gyusu
943 b08338e3 Gyusu
    Dim _objPIDAutoApp As Object
944 e282643f Gyusu
945 b08338e3 Gyusu
    Private Function OpenSPPID(ByVal oDwg_Dt As DataTable, ByVal sDwgName As String) As Boolean
946
        Dim bCheckOpen As Boolean = False
947
        '   Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgPath)
948
        SetListBoxItems(ListBox_Result, sDwgName & " 도면 Open....")
949
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, sDwgName & " 도면 Open....")
950
        _objPIDAutoApp = CreateObject("PIDAutomation.Application")
951 e1cde8f2 Gyusu
952 b08338e3 Gyusu
        Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
953
        If sPath <> "" Then
954
            Process.Start(sPath)
955
        Else
956
            Return bCheckOpen
957
        End If
958 171ac39d Gyusu
959 1bfcc921 Gyusu
        Dim bCheckOpenDrawing As Boolean = False
960
        While (True)
961
            bCheckOpenDrawing = CheckOpenDrawing()
962
            If bCheckOpenDrawing = True Then
963
                bCheckOpen = True
964
                Exit While
965
            Else
966
                Thread.Sleep(2000)
967
            End If
968
        End While
969 171ac39d Gyusu
970
971 1bfcc921 Gyusu
        Return bCheckOpen
972 171ac39d Gyusu
    End Function
973
974
    Private Function GetDrawing(ByVal sDwgName As String) As Drawing
975
        For Each CDrawing In _DrawingsList
976 559daf6d Gyusu
            If CDrawing.DwgName.ToUpper() = sDwgName.ToUpper() Then
977 171ac39d Gyusu
                Return CDrawing
978
            End If
979
        Next
980
        Return Nothing
981
    End Function
982
983
    Private Function GetLineNo(ByVal CDrawing As Drawing, ByVal sLineNoUid As String) As Line_no
984
        For Each CLineNo In CDrawing.Line_nos
985
            If CLineNo.Uid = sLineNoUid Then
986
                Return CLineNo
987
            End If
988
        Next
989
        Return Nothing
990
    End Function
991
992 3acffcee Gyusu
    Private Function GetTrimLineNo(ByVal CDrawing As Drawing, ByVal sLineNoUid As String) As Line_no
993
        For Each CLineNo In CDrawing.TrimLine_nos
994
            If CLineNo.Uid = sLineNoUid Then
995
                Return CLineNo
996
            End If
997
        Next
998
        Return Nothing
999
    End Function
1000
1001
1002 bb2a0c79 Gyusu
1003
    Private Function GetPipeFromConnection(ByVal CDrawing As Drawing, ByVal sSymbolUid As String, ByRef sConnTypeNo As String) As DataTable
1004 6a6d8ab4 Gyusu
        For Each CLineNo In CDrawing.Line_nos
1005
            Dim odt As DataTable = CLineNo.Dt_Line
1006
            If odt.Rows.Count > 0 Then
1007 bb2a0c79 Gyusu
                If odt.Rows(0)(_XML_LINE_Conn1_Uid).ToString = sSymbolUid Then
1008
                    sConnTypeNo = "1"
1009
                    Return odt
1010
                ElseIf odt.Rows(0)(_XML_LINE_Conn2_Uid).ToString() = sSymbolUid Then
1011
                    sConnTypeNo = "2"
1012
                    Return odt
1013 6a6d8ab4 Gyusu
                End If
1014
            End If
1015
        Next
1016 bb2a0c79 Gyusu
        Return New DataTable
1017 6a6d8ab4 Gyusu
    End Function
1018
1019 bb2a0c79 Gyusu
    Private Function GetSymbolFromConnection(ByVal CDrawing As Drawing, ByVal sSymbolUid As String, ByRef sConnTypeNo As String) As DataTable
1020
        For Each CLineNo In CDrawing.Line_nos
1021
            Dim odt As DataTable = CLineNo.Dt_Symbol
1022
            If odt.Rows.Count > 0 Then
1023
                If odt.Rows(0)(_XML_SYMBOL_Conn1_Uid).ToString = sSymbolUid Then
1024
                    sConnTypeNo = "1"
1025
                    Return odt
1026
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn2_Uid).ToString() = sSymbolUid Then
1027
                    sConnTypeNo = "2"
1028
                    Return odt
1029
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn3_Uid).ToString() = sSymbolUid Then
1030
                    sConnTypeNo = "3"
1031
                    Return odt
1032
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn4_Uid).ToString() = sSymbolUid Then
1033
                    sConnTypeNo = "4"
1034
                    Return odt
1035
                End If
1036
            End If
1037
        Next
1038
        Return New DataTable
1039
    End Function
1040 6a6d8ab4 Gyusu
1041
    Private Function GetEqpNo(ByVal CDrawing As Drawing, ByVal sEqpUid As String) As Eqp_no
1042
        For Each CEqpNo In CDrawing.Eqp_nos
1043
            If CEqpNo.Uid = sEqpUid Then
1044
                Return CEqpNo
1045
            End If
1046
        Next
1047
        Return Nothing
1048
    End Function
1049 7e561f5b gaqhf
    Public Function ConvertPointBystring(ByVal sPoint As String, ByRef dX As Double, ByRef dY As Double) As Boolean
1050 171ac39d Gyusu
        Try
1051
            Dim opointstr As String() = Split(sPoint, ",")
1052
            If (opointstr.Length > 1) Then
1053
                If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
1054
                    dX = opointstr(0)
1055
                    dY = opointstr(1)
1056 9e1e7135 Gyusu
1057 171ac39d Gyusu
                Else
1058
                    dX = 0
1059
                    dY = 0
1060
                    Return False
1061
                End If
1062
            End If
1063 e1cde8f2 Gyusu
            Return True
1064
        Catch ex As Exception
1065
            Return False
1066
        End Try
1067 171ac39d Gyusu
    End Function
1068
1069 54b98e09 Gyusu
1070
    Dim _DrawLine_Dt As DataTable = DrawLind_Dt()
1071
1072 e1cde8f2 Gyusu
1073 b08338e3 Gyusu
    Private Sub PlaceEquipment(ByVal sUid As String, ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sEqpName As String)
1074 41e4023e Gyusu
        Try
1075
            Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_UID & " = '" + sUid + "'")
1076
            Dim oAttributeRow() As DataRow
1077
            If oAttribute_Dt.Rows.Count > 0 Then
1078
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sUid + "'")
1079
            End If
1080
            If oSymbolRow.Length > 0 Then
1081
                Dim oDatasource As Object = _Placement.PIDDataSource
1082 f291ddcb Gyusu
                Dim sSymbolName As String = oSymbolRow(0)(_XML_SYMBOL_NAME).ToString()
1083 41e4023e Gyusu
                Dim sSymbolCompType As String = oSymbolRow(0)(_XML_SYMBOL_TYPE).ToString()
1084
                Dim sSystemPath As String = oSymbolRow(0)(_XML_SYMBOL_SYSTEMPATH).ToString()
1085
                Dim sClass As String = oSymbolRow(0)(_XML_SYMBOL_CLASS).ToString()
1086
                Dim sLocation As String = oSymbolRow(0)(_XML_SYMBOL_LOCATION).ToString()
1087
                Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
1088
                Dim dAngle As Double = 0.0
1089
                If IsNumeric(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString()) Then
1090
                    dAngle = Double.Parse(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString())
1091
                End If
1092
                Dim dLocationX As Double = 0.0
1093
                Dim dLocationY As Double = 0.0
1094 f291ddcb Gyusu
                ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
1095
                Dim dX As Double = dLocationX
1096
                Dim dY As Double = dLocationY
1097
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1098
                Dim oReturnSymbol As LMSymbol = Nothing
1099
                If sSymbolCompType.ToUpper() = "NOZZLE" Then
1100
                    Dim sOwnerUid As String = oSymbolRow(0)(_XML_SYMBOL_OWNER).ToString()
1101
                    Dim oFineRow() As DataRow = _ModelingSymbol_Dt.Select("Uid = '" & sOwnerUid & "'")
1102
                    If oFineRow.Length = 1 Then
1103
                        Dim sEqpModelID As String = oFineRow(0)(_XML_SYMBOL_SPID).ToString()
1104
1105
                        Dim objVessel As LMVessel
1106
                        objVessel = _Placement.PIDDataSource.GetVessel(sEqpModelID)
1107
                        Dim oVesselLocation As LMLocations = objVessel.Locations
1108
                        Dim oEqpSymbol As LMSymbol = _Placement.PIDDataSource.GetSymbol(objVessel.Representations.Nth(1).Id)
1109
1110
                        Dim objNozzle As LMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY,
1111
                                                    TargetItem:=oEqpSymbol.AsLMRepresentation)
1112
                        SetListBoxItems(ListBox_Result, "Place Nozzle.." & sUid & " (" & dLocationX & "," & dLocationY & ")..." & _iEquipmentcnt & " count ")
1113
                        _iNozzlecnt = _iNozzlecnt + 1
1114
                        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Nozzle : " & sUid)
1115
                        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Nozzle Name : " & sSymbolName)
1116
                        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1117
                        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
1118
                        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Nozzle Count : " & _iNozzlecnt)
1119
                    End If
1120
                Else
1121
                    oReturnSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1122 b08338e3 Gyusu
                    SetListBoxItems(ListBox_Result, "Place Equipment.." & sUid & " (" & dLocationX & "," & dLocationY & ")..." & _iEquipmentcnt & " count ")
1123
                    _iEquipmentcnt = _iEquipmentcnt + 1
1124
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Equipment : " & sUid)
1125 f291ddcb Gyusu
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Equipment Name : " & sSymbolName)
1126 b08338e3 Gyusu
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1127
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
1128
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Equipment Count : " & _iEquipmentcnt)
1129 41e4023e Gyusu
                End If
1130 f291ddcb Gyusu
                '모델링 된 Symbol 데이터 테이블 저장
1131
                Dim oAddRow As DataRow = _ModelingSymbol_Dt.NewRow
1132
                oAddRow(_XML_SYMBOL_UID) = sUid
1133
                oAddRow(_XML_SYMBOL_SPID) = oReturnSymbol.ModelItemID
1134
                oAddRow(_XML_SYMBOL_LMSYMBOL) = oReturnSymbol
1135
                oAddRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
1136
                oAddRow(_XML_SYMBOL_CENTERPOINT_X) = dLocationX
1137
                oAddRow(_XML_SYMBOL_CENTERPOINT_Y) = dLocationY
1138
                _ModelingSymbol_Dt.Rows.Add(oAddRow)
1139 41e4023e Gyusu
            End If
1140
        Catch ex As Exception
1141
        End Try
1142
    End Sub
1143 54b98e09 Gyusu
1144 76f465d0 Gyusu
    Private Sub AddProgress()
1145
        _Itemcnt = _Itemcnt + 1
1146
        Dim dCalcProgressValue As Double = (_Itemcnt / _allItem) * 100
1147
        SetProgressbar(ProgressBar_Status, dCalcProgressValue)
1148
        Label_Progress.Text = Math.Round(dCalcProgressValue, 0) & "%"
1149
    End Sub
1150 6a6d8ab4 Gyusu
1151 171ac39d Gyusu
1152 94c7557d gaqhf
    Dim _라인보정기준값 As Integer = 10
1153 171ac39d Gyusu
1154 54b98e09 Gyusu
1155 94c7557d gaqhf
    Private Function GetAllCheckNodeCount() As Integer
1156
        _allItem = 0
1157
        For i = 0 To Tree_Result.Nodes.Count - 1
1158
            For j = 0 To Tree_Result.Nodes(i).Nodes.Count - 1
1159
                For k = 0 To Tree_Result.Nodes(i).Nodes(j).Nodes.Count - 1
1160
                    For l = 0 To Tree_Result.Nodes(i).Nodes(j).Nodes(k).Nodes.Count - 1
1161
                        If Tree_Result.Nodes(i).Nodes(j).Nodes(k).Nodes(l).Checked = True Then
1162
                            _allItem = _allItem + 1
1163
                        End If
1164
                    Next
1165
                Next
1166
            Next
1167
        Next
1168
        Return _allItem
1169
    End Function
1170 54b98e09 Gyusu
1171
1172 94c7557d gaqhf
    Private Sub ManualCheckNode(ByRef oDt As DataTable)
1173
        For Each oDrwing As TreeNode In Tree_Result.Nodes
1174
            For Each oDwgNode As TreeNode In oDrwing.Nodes
1175
                For Each oNode As TreeNode In oDwgNode.Nodes
1176
                    For Each oSymbolNode As TreeNode In oNode.Nodes
1177
                        Dim sUid As String = oSymbolNode.Name
1178
                        'Dim oSelectRows() As DataRow = oDt.Select("[" & _XML_SYMBOL_UID & "] = '" & sUid &
1179
                        '                                      "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False'")
1180
                        If oSymbolNode.Checked Then
1181
                            Dim oSelectRows() As DataRow = oDt.Select("[" & _XML_SYMBOL_UID & "] = '" & sUid & "'")
1182
                            If oSelectRows.Length = 1 Then
1183
                                oSelectRows(0)(_XML_SYMBOL_DRAWING_TF) = "FALSE"
1184
                                If oSymbolNode.Checked Then
1185
                                    oSelectRows(0)(_XML_SYMBOL_Check) = "TRUE"
1186 d039e347 Gyusu
                                Else
1187 94c7557d gaqhf
                                    oSelectRows(0)(_XML_SYMBOL_Check) = "FALSE"
1188 d039e347 Gyusu
                                End If
1189 94c7557d gaqhf
                            End If
1190 d039e347 Gyusu
                        End If
1191 94c7557d gaqhf
                    Next
1192
                Next
1193
            Next
1194
        Next
1195 d039e347 Gyusu
1196 94c7557d gaqhf
    End Sub
1197 d039e347 Gyusu
1198 94c7557d gaqhf
    Private Function GetChildSymbolDirection(ByVal sDirection As String) As Double
1199
        Dim sReturnDirection As String = ""
1200
        If sDirection.ToUpper() = "RIGHT" Then
1201
            Return 3.14
1202
        ElseIf sDirection.ToUpper() = "LEFT" Then
1203
            Return 0
1204
        ElseIf sDirection.ToUpper = "DOWN" Then
1205
            Return 1.57
1206
        ElseIf sDirection.ToUpper() = "UP" Then
1207
            Return 4.71
1208
        Else
1209
            Return 0
1210
        End If
1211
    End Function
1212 d039e347 Gyusu
1213 94c7557d gaqhf
    Private Function CheckExistModeling(ByVal oRow As DataRow) As String
1214
        If oRow(_XML_LINE_DRAWING_TF).ToString() = "FALSE" And oRow(_XML_LINE_Check).ToString() = "TRUE" Then
1215
            Return oRow(_XML_LINE_UID).ToString()
1216
        End If
1217
        Return String.Empty
1218
    End Function
1219
1220
1221
    Private Sub AddLog(ByVal sUid As String, ByVal sSystemPath As String,
1222
                             ByVal dStart_Dwg_x As Double, ByVal dStart_Dwg_y As Double, ByVal dEnd_Dwg_x As Double, ByVal dEnd_Dwg_y As Double,
1223
                       ByVal sLineNoText As String, ByVal sConn1Uid As String, ByVal sConn2Uid As String)
1224
        SetListBoxItems(ListBox_Result, "Place Pipe.." & sUid & " (" & dStart_Dwg_x & "," & dStart_Dwg_y & ") - (" & dEnd_Dwg_x & "," & dEnd_Dwg_y & ")..." & _iPipecnt & " count ")
1225
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & sUid)
1226
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
1227
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & sConn1Uid)
1228
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & sConn2Uid)
1229
        'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1230
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "StartPoint : " & dStart_Dwg_x & "," & dStart_Dwg_y)
1231
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "EndPoint : " & dEnd_Dwg_x & "," & dEnd_Dwg_y)
1232
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Pipe Count : " & _iPipecnt)
1233
    End Sub
1234
1235
    Private Sub AddAttribute(ByVal oPipeRun As LMPipeRun, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String)
1236
        Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
1237
        If oAttributeRow.Length > 0 Then
1238
            For Each oAttribute In oAttributeRow
1239
                Try
1240
                    Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
1241
                    Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
1242
                    If sPIDValue.Contains("'") Then
1243
                        sPIDValue = sPIDValue.Replace("'", """")
1244 171ac39d Gyusu
                    End If
1245 94c7557d gaqhf
                    Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
1246
                    oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
1247
                Catch ex As Exception
1248
                End Try
1249
            Next
1250
            oPipeRun.Commit()
1251
        End If
1252
    End Sub
1253 e4000111 Gyusu
1254 94c7557d gaqhf
    Private Sub AddModelingDT(ByVal sUid As String, ByVal sModelID As String, ByVal oCurrentConnector As LMConnector,
1255
                              ByVal dStart_Dwg_x As Double, ByVal dStart_Dwg_y As Double,
1256
                              ByVal dEnd_Dwg_x As Double, ByVal dEnd_Dwg_y As Double)
1257
        Dim oAddRow As DataRow = _ModelingLine_Dt.NewRow
1258
        oAddRow(_XML_LINE_UID) = sUid
1259
        oAddRow(_XML_LINE_SPID) = sModelID
1260
        oAddRow(_XML_LINE_LMCONNECTOR) = oCurrentConnector
1261
        oAddRow(_XML_LINE_DRAWING_TF) = "TRUE"
1262
        oAddRow(_XML_LINE_DWG_STARTPOINT_X) = dStart_Dwg_x
1263
        oAddRow(_XML_LINE_DWG_STARTPOINT_Y) = dStart_Dwg_y
1264
        oAddRow(_XML_LINE_DWG_ENDPOINT_X) = dEnd_Dwg_x
1265
        oAddRow(_XML_LINE_DWG_ENDPOINT_Y) = dEnd_Dwg_y
1266
        _ModelingLine_Dt.Rows.Add(oAddRow)
1267
    End Sub
1268 171ac39d Gyusu
1269 94c7557d gaqhf
    Private Function JoinPipeRun(ByVal sID_1 As String, ByVal sID_2 As String) As Boolean
1270
        Try
1271
            Dim objSurvivorItem As LMAItem = Nothing
1272
            Dim oPipeRun1 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_1)
1273
            Dim oPipeRun2 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_2)
1274
            _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
1275
            Return True
1276 54b98e09 Gyusu
        Catch ex As Exception
1277
            Return False
1278
        End Try
1279
    End Function
1280
1281
1282 94c7557d gaqhf
    Private Function LineModeling(ByVal objInputs As PlaceRunInputs, ByVal sSystemPath As String) As LMConnector
1283
        Dim oCurrentConnector As LMConnector = Nothing
1284
        Dim objItem As LMAItem
1285
        objItem = _Placement.PIDCreateItem(sSystemPath)
1286 54b98e09 Gyusu
        Try
1287 94c7557d gaqhf
            oCurrentConnector = _Placement.PIDPlaceRun(objItem, objInputs)
1288
            AddProgress()
1289 54b98e09 Gyusu
        Catch ex As Exception
1290
        End Try
1291 94c7557d gaqhf
        Return oCurrentConnector
1292
    End Function
1293 54b98e09 Gyusu
1294 94c7557d gaqhf
    Private Sub GetPrimaryLineInNode(ByVal list As List(Of Line), ByVal node As TreeNode)
1295 7e561f5b gaqhf
1296
        If node.Tag IsNot Nothing Then
1297
            If TypeOf node.Tag Is Line Then
1298
                Dim line As Line = node.Tag
1299
                If line.TYPE = "Primary" And node.Checked Then
1300
                    list.Add(line)
1301
                End If
1302
            End If
1303
        End If
1304
1305
        For Each child As TreeNode In node.Nodes()
1306
            GetPrimaryLineInNode(list, child)
1307
        Next
1308
    End Sub
1309
1310 94c7557d gaqhf
    Private Sub GetSymbolInNode(ByVal list As List(Of Symbol), ByVal node As TreeNode)
1311
1312
        If node.Tag IsNot Nothing Then
1313
            If TypeOf node.Tag Is Symbol Then
1314
                Dim symbol As Symbol = node.Tag
1315
                list.Add(symbol)
1316
            End If
1317
        End If
1318
1319
        For Each child As TreeNode In node.Nodes()
1320
            GetSymbolInNode(list, child)
1321
        Next
1322
    End Sub
1323
1324 7e561f5b gaqhf
    Private Function FindBranchLine(ByVal lines As List(Of Line)) As List(Of Line)
1325
        Dim branchLines As List(Of Line) = New List(Of Line)
1326
1327
        For Each line As Line In lines
1328
            For Each conn As Connector In line.CONNECTORS
1329
                If String.IsNullOrEmpty(conn.CONNECTEDITEM) = False Then
1330 1406fef4 gaqhf
                    If IsBranchLine(conn.CONNECTEDITEM, line.UID, lines) Then
1331
                        branchLines.Add(line)
1332 7e561f5b gaqhf
                    End If
1333
                End If
1334
            Next
1335
        Next
1336
1337
        Return branchLines
1338
    End Function
1339
1340 1406fef4 gaqhf
    Private Function IsBranchLine(ByVal connectedUID As String, ByVal UID As String, ByVal lines As List(Of Line)) As Boolean
1341
        Dim connLine = FindLineByUID(lines, connectedUID)
1342
        If connLine IsNot Nothing Then
1343
            If connLine.CONNECTORS(0).CONNECTEDITEM <> UID And connLine.CONNECTORS(1).CONNECTEDITEM <> UID Then
1344
                Return True
1345
            End If
1346
        End If
1347
1348
        Return False
1349
    End Function
1350
1351 7e561f5b gaqhf
    Private Function FindLineByUID(ByVal lines As List(Of Line), ByVal uid As String) As Line
1352
        For Each line As Line In lines
1353
            If line.UID = uid Then
1354
                Return line
1355
            End If
1356
        Next
1357
1358
        Return Nothing
1359
    End Function
1360
1361
1362
    Private Function FindSymbolByUID(ByVal symbols As List(Of Symbol), ByVal uid As String) As Symbol
1363
        For Each symbol As Symbol In symbols
1364
            If symbol.UID = uid Then
1365
                Return symbol
1366
            End If
1367
        Next
1368
1369
        Return Nothing
1370
    End Function
1371
1372
    Private Function IsHorizontal(ByVal line As Line)
1373
        If line.END_X - line.START_X = 0 Then
1374
            Return False
1375
        Else
1376
            Dim angle = Math.Atan(Math.Abs(line.END_Y - line.START_Y) / Math.Abs(line.END_X - line.START_X)) * 180 / Math.PI
1377
            If angle < 10 Then
1378
                Return True
1379
            Else
1380
                Return False
1381
            End If
1382
        End If
1383
    End Function
1384
1385 1406fef4 gaqhf
    Private Function IsHorizontal(ByVal point1 As Pointd, ByVal point2 As Pointd)
1386
        If point1.X - point2.X = 0 Then
1387
            Return False
1388
        Else
1389
            Dim angle = Math.Atan(Math.Abs(point2.Y - point1.Y) / Math.Abs(point2.X - point1.X)) * 180 / Math.PI
1390 94c7557d gaqhf
            If angle < 10 Then
1391
                Return True
1392
            Else
1393
                Return False
1394 1406fef4 gaqhf
            End If
1395 94c7557d gaqhf
        End If
1396 1406fef4 gaqhf
    End Function
1397
1398
    Private Function GetLMConnectorByPoint(ByVal ModelId As String, ByVal point As Pointd) As LMConnector
1399
        Dim objPlacement As Placement = New Placement
1400
        Dim objConnector As LMConnector = Nothing
1401
1402
        Dim distance As Double = Double.MaxValue
1403
        Dim lmPipeRun As LMPipeRun = objPlacement.PIDDataSource.GetPipeRun(ModelId)
1404
        For Each oRep As LMRepresentation In lmPipeRun.Representations
1405
            If oRep.Attributes("RepresentationType").Value = "Connector" And oRep.Attributes("ItemStatus").Value = "Active" Then
1406
                Dim _conn As LMConnector = objPlacement.PIDDataSource.GetConnector(oRep.Id)
1407
                For Each vertex As LMConnectorVertex In _conn.ConnectorVertices
1408
                    Dim _distance As Double = CalcPointToPointdDistance(point, New Pointd(vertex.XCoordinate, vertex.YCoordinate))
1409
1410
                    If _distance < distance Then
1411
                        distance = _distance
1412
                        objConnector = _conn
1413
                    End If
1414
                Next
1415
            End If
1416
        Next
1417
1418
        Return objConnector
1419
    End Function
1420
1421
    Private Function GetLMConnectorBySP_ID(ByVal ModelId As String, ByVal SP_ID1 As String, ByVal SP_ID2 As String) As LMConnector
1422
        Dim objPlacement As Placement = New Placement
1423
        Dim objConnector As LMConnector = Nothing
1424
1425
        Dim distance As Double = Double.MaxValue
1426
        Dim lmPipeRun As LMPipeRun = objPlacement.PIDDataSource.GetPipeRun(ModelId)
1427
        For Each oRep As LMRepresentation In lmPipeRun.Representations
1428
            If oRep.Attributes("RepresentationType").Value = "Connector" And oRep.Attributes("ItemStatus").Value = "Active" Then
1429
                Dim _conn As LMConnector = objPlacement.PIDDataSource.GetConnector(oRep.Id)
1430
1431
                Dim find1 As Boolean = False
1432
                Dim find2 As Boolean = False
1433
1434
                If _conn.ConnectItem1SymbolID IsNot Nothing Then
1435
                    If _conn.ConnectItem1SymbolID.ToString = SP_ID1 Or _conn.ConnectItem1SymbolID.ToString = SP_ID2 Then
1436
                        find1 = True
1437
                    End If
1438
                End If
1439
1440
                If _conn.ConnectItem2SymbolID IsNot Nothing Then
1441
                    If _conn.ConnectItem2SymbolID.ToString = SP_ID1 Or _conn.ConnectItem2SymbolID.ToString = SP_ID2 Then
1442
                        find2 = True
1443
                    End If
1444
                End If
1445
1446
                If find1 And find2 Then
1447
                    Return _conn
1448
                End If
1449
            End If
1450
        Next
1451
1452
        If objConnector Is Nothing Then
1453
            Debug.WriteLine("Error At GetLMConnectorBySP_ID")
1454
        End If
1455
1456
        Return objConnector
1457
    End Function
1458
1459 cb364170 gaqhf
    Private Function CalcLineToPointdDistance(ByVal point1 As Pointd, ByVal point2 As Pointd, ByVal targetPointd As Pointd) As Double
1460
        If point1.X = point2.X Then
1461
            Return Math.Abs(targetPointd.X - point1.X)
1462
        ElseIf point1.Y = point2.Y Then
1463
            Return Math.Abs(targetPointd.Y - point1.Y)
1464
        Else
1465
            ' y = ax + c
1466
            Dim a As Double = (point2.Y - point1.Y) / (point2.X - point1.X)
1467
            Dim c As Double = point2.Y - a * point2.X
1468
1469
            ' ax + by + c = 0
1470
            Dim b As Double = -1
1471
            Return Math.Abs(a * targetPointd.X + b * targetPointd.Y + c) / Math.Pow(a * a + b * b, 0.5)
1472
        End If
1473
    End Function
1474
1475 1406fef4 gaqhf
    Private Function CalcPointToPointdDistance(ByVal point1 As Pointd, ByVal point2 As Pointd) As Double
1476
1477
        Return Math.Pow(Math.Pow(point1.X - point2.X, 2) + Math.Pow(point1.Y - point2.Y, 2), 0.5)
1478
1479
    End Function
1480
1481 cb364170 gaqhf
    Private Function GetConnectorTarget(ByVal Connector_ModelID As String, ByVal targetPoint As Pointd) As LMConnector
1482
        Dim objPlacement As Placement = New Placement
1483
1484
        Dim lmPipeRun As LMPipeRun = objPlacement.PIDDataSource.GetPipeRun(Connector_ModelID)
1485
1486
        Dim connList As List(Of LMConnector) = New List(Of LMConnector)
1487
        Dim oConnector As LMConnector = Nothing
1488
1489
        For Each oRep As LMRepresentation In lmPipeRun.Representations
1490
            If oRep.Attributes("RepresentationType").Value = "Connector" And oRep.Attributes("ItemStatus").Value = "Active" Then
1491
                connList.Add(objPlacement.PIDDataSource.GetConnector(oRep.Id))
1492
            End If
1493
        Next
1494
1495
        '' 자기 자신의 Line 찾기
1496
        Dim distance As Double = Double.MaxValue
1497
        For Each lmLine As LMConnector In connList
1498
            '' Connector의 포인트 정리
1499
1500
            '' 임시
1501
            oConnector = lmLine
1502
            '_Placement.PIDDataSource.GetPipingPoint()
1503
1504
            Dim pointList As List(Of Pointd) = New List(Of Pointd)
1505
1506
            For index = 1 To Integer.MaxValue
1507
                Dim point As LMConnectorVertex = lmLine.ConnectorVertices.Nth(index)
1508
                If point IsNot Nothing Then
1509
                    Dim _pointd As Pointd = New Pointd()
1510
                    _pointd.X = point.XCoordinate
1511
                    _pointd.Y = point.YCoordinate
1512
                    pointList.Add(_pointd)
1513
                Else
1514
                    Exit For
1515
                End If
1516
            Next
1517
1518
            For index = 0 To pointList.Count - 1
1519
                If pointList.Count > index + 1 Then
1520
                    Dim _tempDistance As Double = CalcLineToPointdDistance(pointList(index), pointList(index + 1), targetPoint)
1521
                    If _tempDistance < distance Then
1522
                        oConnector = lmLine
1523
                        distance = _tempDistance
1524
                    End If
1525
                End If
1526
            Next
1527
        Next
1528
1529
        Return oConnector
1530
    End Function
1531
1532
    Private Function FindFirstLine(ByVal primaryLineList As List(Of Line), ByVal symbols As List(Of Symbol), ByVal symbol As Symbol, ByVal UID As String) As Line
1533
1534
        For Each conn As Connector In symbol.CONNECTORS
1535
            '' 자기 자신일 경우 제외
1536
            If conn.CONNECTEDITEM = UID Then
1537
                Continue For
1538
            End If
1539
1540
            Dim _symbol As Symbol = FindSymbolByUID(symbols, conn.CONNECTEDITEM)
1541
            Dim _line As Line = FindLineByUID(primaryLineList, conn.CONNECTEDITEM)
1542 94c7557d gaqhf
1543
            If _line IsNot Nothing Then
1544
                If _line.GROUPING = False Then
1545
                    Return _line
1546 7e561f5b gaqhf
                End If
1547 94c7557d gaqhf
            ElseIf _symbol IsNot Nothing Then
1548
                Return FindFirstLine(primaryLineList, symbols, _symbol, symbol.UID)
1549 7e561f5b gaqhf
            End If
1550
        Next
1551
1552 94c7557d gaqhf
        Return Nothing
1553 7e561f5b gaqhf
1554
    End Function
1555
1556 94c7557d gaqhf
    Structure Pointd
1557
        Public Sub New(ByVal X As Double, ByVal Y As Double)
1558
            Me.X = X
1559
            Me.Y = Y
1560
        End Sub
1561
        Public X As Double
1562
        Public Y As Double
1563
    End Structure
1564 7e561f5b gaqhf
1565 94c7557d gaqhf
    Class PointdInfo
1566
        Public Sub New(ByVal Pointd As Pointd, ByVal Type As String)
1567
            Me.Pointd = Pointd
1568
            Me.Type = Type
1569
        End Sub
1570 7e561f5b gaqhf
1571 94c7557d gaqhf
        Public Sub New(ByVal Pointd As Pointd, ByVal Type As String, ByVal SP_ID As String)
1572
            Me.Pointd = Pointd
1573
            Me.Type = Type
1574
            Me.SP_ID = SP_ID
1575
        End Sub
1576 7e561f5b gaqhf
1577 94c7557d gaqhf
        Public Pointd As Pointd
1578
        Public Type As String
1579
        Public SP_ID As String
1580
    End Class
1581 7e561f5b gaqhf
1582 94c7557d gaqhf
    Private Function CalcDistance(ByVal point1 As Pointd, ByVal point2 As Pointd) As Double
1583
        Return Math.Pow(Math.Sqrt(Math.Abs(point1.X - point2.X)) + Math.Sqrt(Math.Abs(point1.Y - point2.Y)), 0.5)
1584 7e561f5b gaqhf
    End Function
1585 b08338e3 Gyusu
1586
    Private Sub FindNearPoint(ByVal oOPCSymbol As LMSymbol, ByRef dNear_x As Double, ByRef dNear_y As Double)
1587
        Dim oConnectionPoints_x(4) As Double
1588
        Dim oConnectionPoints_y(4) As Double
1589
1590
        Try
1591
            _Placement.PIDConnectPointLocation(oOPCSymbol, 1, oConnectionPoints_x(0), oConnectionPoints_y(0))
1592
            _Placement.PIDConnectPointLocation(oOPCSymbol, 2, oConnectionPoints_x(1), oConnectionPoints_y(1))
1593
            _Placement.PIDConnectPointLocation(oOPCSymbol, 3, oConnectionPoints_x(2), oConnectionPoints_y(2))
1594
            _Placement.PIDConnectPointLocation(oOPCSymbol, 4, oConnectionPoints_x(3), oConnectionPoints_y(3))
1595
            Dim iNearPoint As Integer = 0
1596
            Dim dGap As Double = 0
1597
            For i = 0 To 3
1598
                If dGap = 0 Then
1599
                    iNearPoint = i
1600
                    dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
1601
                Else
1602
                    If dGap >= Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y) Then
1603
                        iNearPoint = i
1604
                        dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
1605
                    End If
1606
                End If
1607
            Next
1608
            dNear_x = oConnectionPoints_x(iNearPoint)
1609
            dNear_y = oConnectionPoints_y(iNearPoint)
1610
        Catch ex As Exception
1611 e4000111 Gyusu
1612 bb2a0c79 Gyusu
        End Try
1613 e4000111 Gyusu
1614 bb2a0c79 Gyusu
    End Sub
1615
1616
    Private Function GetPipeType(ByVal sType As String) As String
1617
        Dim sSystempath As String = "\Piping\Routing\Process Lines\Primary Piping.sym" ' oPipeRow(0)(_XML_LINE_SYSTEMPATH).ToString()
1618
        If sType.ToUpper() = "ELECTRIC" Then
1619
            sSystempath = "\Instrumentation\Signal Line\Electric.sym"
1620
        ElseIf sType.ToUpper() = "CONNECT TO PROCESS" Then
1621 94c7557d gaqhf
            sSystempath = "\Instrumentation\Signal Line\Connect To Process.sym"
1622 9c86a823 Gyusu
        ElseIf sType.ToUpper() = "SOFTWARE" Then
1623
            sSystempath = "\Instrumentation\Signal Line\Software Link.sym"
1624
        ElseIf sType.ToUpper() = "PNEUMATIC" Then
1625
            sSystempath = "\Instrumentation\Signal Line\Pneumatic.sym"
1626 bb2a0c79 Gyusu
        End If
1627
        Return sSystempath
1628
    End Function
1629
1630
    Private Sub InitAutoRouting()
1631
        For Each oDrwing As TreeNode In Tree_Result.Nodes
1632
            For Each oDwgNode As TreeNode In oDrwing.Nodes
1633
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
1634
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
1635
                If CDrawing IsNot Nothing Then
1636
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
1637
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
1638
                    SetListBoxItems(ListBox_Result, "Place " & CDrawing.DwgName & "....")
1639 b08338e3 Gyusu
1640 bb2a0c79 Gyusu
                    For Each oNode As TreeNode In oDwgNode.Nodes
1641
                        Dim iItemcnt As Integer = 0
1642
                        Dim sNodeUid As String = oNode.Name
1643
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
1644
                        Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
1645
                        If CLineNo IsNot Nothing Then
1646
                            Dim oLine_Dt As DataTable = CLineNo.Dt_Line
1647
                            Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
1648
1649
                            For Each oLineRow In oLine_Dt.Rows
1650 76f465d0 Gyusu
                                ' oLineRow(_XML_LINE_UID) = ""
1651
                                oLineRow(_XML_LINE_SPID) = ""
1652
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
1653
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
1654
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
1655 94c7557d gaqhf
                                oLineRow(_XML_LINE_DRAWING_TF) = "False"
1656
                                oLineRow(_XML_LINE_Check) = "False"
1657 76f465d0 Gyusu
                            Next
1658
                            For Each oSymbolRow In oSymbol_Dt.Rows
1659
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
1660
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
1661
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
1662
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
1663
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
1664
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
1665
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
1666 94c7557d gaqhf
                                oSymbolRow(_XML_SYMBOL_Check) = "False"
1667
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "False"
1668 76f465d0 Gyusu
1669
                            Next
1670
1671
                        End If
1672
1673
                        Dim CTRIMLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
1674
                        If CTRIMLineNo IsNot Nothing Then
1675
                            Dim oLine_Dt As DataTable = CTRIMLineNo.Dt_Line
1676
                            Dim oSymbol_Dt As DataTable = CTRIMLineNo.Dt_Symbol
1677
1678
                            For Each oLineRow In oLine_Dt.Rows
1679
                                ' oLineRow(_XML_LINE_UID) = ""
1680 bb2a0c79 Gyusu
                                oLineRow(_XML_LINE_SPID) = ""
1681 76f465d0 Gyusu
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
1682
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
1683
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
1684 94c7557d gaqhf
                                oLineRow(_XML_LINE_DRAWING_TF) = "False"
1685
                                oLineRow(_XML_LINE_Check) = "False"
1686 bb2a0c79 Gyusu
                            Next
1687
                            For Each oSymbolRow In oSymbol_Dt.Rows
1688 76f465d0 Gyusu
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
1689 bb2a0c79 Gyusu
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
1690 76f465d0 Gyusu
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
1691
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
1692
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
1693
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
1694
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
1695 94c7557d gaqhf
                                oSymbolRow(_XML_SYMBOL_Check) = "False"
1696
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "False"
1697 76f465d0 Gyusu
1698 bb2a0c79 Gyusu
                            Next
1699
1700
                        End If
1701
                    Next
1702
                End If
1703
            Next
1704
        Next
1705
    End Sub
1706
1707
1708
1709
1710
1711 79326880 Gyusu
    Private Function UpdateCheckBranchLine(ByRef dX As Double, ByRef dY As Double,
1712 1bfcc921 Gyusu
                                  ByRef oLMConnector As LMConnector, ByRef sUid As String) As Boolean
1713 dd46ca83 Gyusu
        Dim oDataSource As LMADataSource = _Placement.PIDDataSource
1714 1bfcc921 Gyusu
        Dim bCheckBranchItem As Boolean = False
1715 79326880 Gyusu
        Dim iGapCheck As Integer = 0
1716
        Try
1717
            For Each oModelrow In _ModelingLine_Dt.Rows
1718
                Dim d기준x As Double = dX
1719
                Dim d기준y As Double = dY
1720
                Dim dGap As Double = 0.001
1721
                Dim oRun As LMPipeRun = Nothing
1722
                Dim dModelStartX As Double
1723
                Dim dModelStartY As Double
1724
                Dim dModelEndX As Double
1725
                Dim dModelEndY As Double
1726
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
1727
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
1728
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
1729
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
1730
                d기준x = (dModelStartX + dModelEndX) / 2
1731
                d기준y = (dModelStartY + dModelEndY) / 2
1732
1733
                Dim dMax_X As Double = 0.0
1734
                Dim dMax_Y As Double = 0.0
1735
                Dim dMin_X As Double = 0.0
1736
                Dim dMin_Y As Double = 0.0
1737
                If dModelEndX > dModelStartX Then
1738
                    dMax_X = dModelEndX
1739
                    dMin_X = dModelStartX
1740
                Else
1741
                    dMax_X = dModelStartX
1742
                    dMin_X = dModelEndX
1743
                End If
1744
1745
                If dModelEndY > dModelStartY Then
1746
                    dMax_Y = dModelEndY
1747
                    dMin_Y = dModelStartY
1748
                Else
1749
                    dMax_Y = dModelStartY
1750
                    dMin_Y = dModelEndY
1751
                End If
1752
1753
                If dX <= dMax_X + dGap And dX >= dMin_X - dGap And
1754
                  dY <= dMax_Y + dGap And dY >= dMin_Y - dGap Then
1755
                    If Math.Abs(dMax_X - dMin_X) > Math.Abs(dMax_Y - dMin_Y) Then
1756
                        dY = dMax_Y
1757
                    Else
1758
                        dX = dMax_X
1759
                    End If
1760 1bfcc921 Gyusu
1761
                    Try
1762
                        Dim sModelItemID As String = oModelrow(_XML_LINE_SPID).ToString()
1763
                        sUid = oModelrow(_XML_LINE_UID).ToString()
1764 dd46ca83 Gyusu
                        oRun = oDataSource.GetPipeRun(sModelItemID)
1765 1bfcc921 Gyusu
                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
1766
                    Catch ex As Exception
1767
                    End Try
1768
                    Try
1769
                        If oRun IsNot Nothing Then
1770
                            Dim dResultCalc As Double = -1
1771 dd46ca83 Gyusu
                            Dim bBranchFlag As Boolean = False
1772
                            Dim dBranchX As Double = 0
1773
                            Dim dBranchY As Double = 0
1774 1bfcc921 Gyusu
                            For Each objRep In oRun.Representations
1775 dd46ca83 Gyusu
                                '  Dim sAttriName As String
1776
                                'For Each objAttr In objRep.Attributes
1777
                                '    sAttriName = objAttr.name
1778
                                'Next
1779
                                'MsgBox(objRep.RepresentationType)
1780 1bfcc921 Gyusu
                                If objRep.RepresentationType = "Connector" Then
1781 dd46ca83 Gyusu
                                    Dim objConnector As LMConnector = oDataSource.GetConnector(objRep.ID)
1782
                                    '     Dim sItemStatus As String = objConnector.Attributes("ItemStatus").Value
1783
                                    '   Dim sModelTypeName As String = objConnector.ModelItemObject.Attributes("ItemTypeName").Value
1784 1bfcc921 Gyusu
1785
                                    'Dim dConn_SX As Double = 0
1786
                                    'Dim dConn_SY As Double = 0
1787
                                    'Dim dConn_EX As Double = 0
1788
                                    'Dim dConn_EY As Double = 0
1789
                                    Dim dConn_X As Double = 0
1790
                                    Dim dConn_Y As Double = 0
1791
                                    For Each objConnectorVertex In objConnector.ConnectorVertices
1792
                                        dConn_X = objConnectorVertex.Attributes("XCoordinate").Value
1793
                                        dConn_Y = objConnectorVertex.Attributes("YCoordinate").Value
1794
                                        'If dConn_SX = 0 Then
1795
                                        '    dConn_SX = objConnectorVertex.Attributes("XCoordinate").Value
1796
                                        '    dConn_SY = objConnectorVertex.Attributes("YCoordinate").Value
1797
                                        'Else
1798
                                        '    dConn_EX = objConnectorVertex.Attributes("XCoordinate").Value
1799
                                        '    dConn_EY = objConnectorVertex.Attributes("YCoordinate").Value
1800
                                        'End If
1801
                                        Dim dCalc As Double = Math.Abs(dConn_X - dX) + Math.Abs(dConn_Y - dY)
1802 dd46ca83 Gyusu
                                        If bBranchFlag = False Then
1803
                                            If dResultCalc = -1 Or dResultCalc > dCalc Then
1804
                                                dResultCalc = dCalc
1805
                                                oLMConnector = objConnector
1806
                                                bCheckBranchItem = True
1807
                                            End If
1808
                                        Else
1809
                                            If (dConn_X >= dX And dBranchX <= dX And dConn_Y >= dY And dBranchY <= dY) Or
1810
                                               (dConn_X <= dX And dBranchX >= dX And dConn_Y <= dY And dBranchY >= dY) Then
1811
                                                If dResultCalc = -1 Or dResultCalc > dCalc Then
1812
                                                    dResultCalc = dCalc
1813
                                                    oLMConnector = objConnector
1814
                                                    bCheckBranchItem = True
1815
                                                End If
1816
                                            End If
1817 1bfcc921 Gyusu
                                        End If
1818
1819 dd46ca83 Gyusu
1820 1bfcc921 Gyusu
                                        'If dConn_EX <> 0 And dConn_EY <> 0 Then
1821
                                        '    If dConn_SX >= dX And dConn_EX <= dX And dConn_SY >= dY And dConn_EY <= dY Then
1822
                                        '        oLMConnector = objConnector
1823
                                        '        Exit For
1824
                                        '    ElseIf dConn_SX <= dX And dConn_EX >= dX And dConn_SY <= dY And dConn_EY >= dY Then
1825
                                        '        oLMConnector = objConnector
1826
                                        '        Exit For
1827
                                        '    Else
1828
                                        '        If dConn_EX > 0 Then
1829
                                        '            dConn_SX = dConn_EX
1830
                                        '            dConn_SY = dConn_EY
1831
                                        '        End If
1832
                                        '    End If
1833
                                        'End If
1834
1835
                                    Next
1836
                                    'If oLMConnector IsNot Nothing Then
1837
                                    '    Exit For
1838
                                    'End If
1839 dd46ca83 Gyusu
                                ElseIf objRep.RepresentationType = "Branch" Then
1840
                                    Dim objConnector As LMSymbol = oDataSource.GetSymbol(objRep.ID)
1841
                                    dBranchX = objConnector.Attributes("XCoordinate").Value
1842
                                    dBranchY = objConnector.Attributes("YCoordinate").Value
1843
                                    bBranchFlag = True
1844 1bfcc921 Gyusu
                                End If
1845
                                'If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
1846
                                '    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
1847
                                '    For Each objConnectorVertex In objConnector.ConnectorVertices
1848
                                '        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
1849
                                '        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
1850
                                '        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
1851
                                '            oLMConnector = objConnector
1852
                                '            dX = dConn_X
1853
                                '            dY = dConn_Y
1854
                                '            bConnectionFlag = True
1855
                                '        End If
1856
                                '    Next
1857
                                'End If
1858
                            Next
1859
                        End If
1860
                    Catch ex As Exception
1861
                    End Try
1862
                    '    oUid = oModelrow(_XML_LINE_UID).ToString()
1863 b82166d4 Gyusu
                    ' Dim oID As String = oModelrow(_XML_LINE_SPID)
1864 1bfcc921 Gyusu
                    '    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
1865 b82166d4 Gyusu
                    '    oID = oLMConnector.ModelItemID
1866
                    '  oLMConnector = _Placement.PIDDataSource.GetConnector(oID)
1867 1bfcc921 Gyusu
                    'If oLMConnector IsNot Nothing Then
1868
                    '    Exit For
1869
                    'End If
1870 79326880 Gyusu
                End If
1871
1872
1873
            Next
1874
        Catch ex As Exception
1875 1bfcc921 Gyusu
            bCheckBranchItem = False
1876 79326880 Gyusu
            oLMConnector = Nothing
1877
        End Try
1878 1bfcc921 Gyusu
        Return bCheckBranchItem
1879 79326880 Gyusu
    End Function
1880
1881 3b7a4470 Gyusu
    ''' <summary>
1882
    ''' 라인과 특정 포인트에 커넥션을 확인하는 메서드
1883
    ''' </summary>
1884
    ''' <param name="oModelingLineRows"></param>
1885
    ''' <param name="dX"></param>
1886
    ''' <param name="dY"></param>
1887
    ''' <param name="oLMConnector"></param>
1888
    ''' <param name="dPreConnX"></param>
1889
    ''' <param name="dPreConnY"></param>
1890
    ''' <returns></returns>
1891
1892 79326880 Gyusu
    Private Function CheckConnectionLine(ByRef dX As Double, ByRef dY As Double,
1893 b82166d4 Gyusu
                                  ByRef oLMConnector As LMConnector, ByRef sUid As String) As Boolean
1894 b08338e3 Gyusu
        Dim bConnectionFlag As Boolean = False
1895 76f465d0 Gyusu
        Dim iGapCheck As Integer = 0
1896 b08338e3 Gyusu
        Try
1897 79326880 Gyusu
            For Each oModelrow In _ModelingLine_Dt.Rows
1898 76f465d0 Gyusu
                Dim d기준x As Double = dX
1899
                Dim d기준y As Double = dY
1900 1bfcc921 Gyusu
                Dim dGap As Double = 0.001
1901 76f465d0 Gyusu
                Dim oRun As LMPipeRun = Nothing
1902 b08338e3 Gyusu
                Dim dModelStartX As Double
1903
                Dim dModelStartY As Double
1904
                Dim dModelEndX As Double
1905
                Dim dModelEndY As Double
1906 76f465d0 Gyusu
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
1907
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
1908
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
1909
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
1910
                d기준x = (dModelStartX + dModelEndX) / 2
1911
                d기준y = (dModelStartY + dModelEndY) / 2
1912 79326880 Gyusu
1913
                Dim bCheckEqual As Boolean = False
1914
                If dX <= dModelStartX + dGap And dX >= dModelStartX - dGap And
1915
                        dY <= dModelStartY + dGap And dY >= dModelStartY - dGap Then
1916
                    bCheckEqual = True
1917
                ElseIf dX <= dModelEndX + dGap And dX >= dModelEndX - dGap And
1918
                        dY <= dModelEndY + dGap And dY >= dModelEndY - dGap Then
1919
                    bCheckEqual = True
1920
                End If
1921
                If bCheckEqual Then
1922
                    Try
1923
                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
1924 b82166d4 Gyusu
                        sUid = oModelrow(_XML_LINE_UID)
1925 79326880 Gyusu
                        oRun = _Placement.PIDDataSource.GetPipeRun(oLMConnector.ModelItemID)
1926
                    Catch ex As Exception
1927
                    End Try
1928
                    Try
1929
                        If oRun IsNot Nothing Then
1930
                            Dim dResultCalc As Double = -1
1931
                            For Each objRep In oRun.Representations
1932
                                If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
1933
                                    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
1934
                                    For Each objConnectorVertex In objConnector.ConnectorVertices
1935
                                        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
1936
                                        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
1937
                                        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
1938
                                            oLMConnector = objConnector
1939
                                            dX = dConn_X
1940
                                            dY = dConn_Y
1941
                                            bConnectionFlag = True
1942
                                        End If
1943
                                    Next
1944
                                End If
1945
                            Next
1946
                        End If
1947
                    Catch ex As Exception
1948
                    End Try
1949
                Else
1950
                End If
1951 b08338e3 Gyusu
            Next
1952
        Catch ex As Exception
1953 76f465d0 Gyusu
            bConnectionFlag = False
1954
            oLMConnector = Nothing
1955 b08338e3 Gyusu
        End Try
1956
        Return bConnectionFlag
1957
    End Function
1958
1959 1bfcc921 Gyusu
    Private Function CheckAlreadyBranchLine(ByVal sSystemPath As String, ByVal dStartX As Double, ByVal dStartY As Double, ByVal dEndX As Double, ByVal dEndY As Double) As Boolean
1960
        '현재선의 방향을 보고 상대라인이 직교되는 방향인지 체크
1961
        '오차범위를 줘서 현재선을 통과하는지 체크
1962
        '통과하는 상대라인 갯수를 먼저 구한다음 라인 갯수만큼 라인을 그린다.
1963
        Dim bCheckBranchLine As Boolean = False
1964 dd46ca83 Gyusu
        Dim sCurrentDirection As String = ""
1965
1966
        Dim oModel_Dt As New DataTable()
1967
        oModel_Dt.Columns.Add("X")
1968
        oModel_Dt.Columns.Add("Y")
1969
        oModel_Dt.Columns.Add("Type")
1970
        oModel_Dt.Columns.Add("SPID")
1971
        Dim dGap = 0.001
1972
        If Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
1973
            sCurrentDirection = "X"
1974
            If dStartX > dEndX Then
1975
                Dim dTempX As Double = dEndX
1976
                dEndX = dStartX
1977
                dStartX = dTempX
1978
                Dim dTempY As Double = dEndY
1979
                dEndY = dStartY
1980
                dStartY = dTempY
1981
            End If
1982
            '현재선이 X축방향
1983
            Try
1984
                For Each oModelrow In _ModelingLine_Dt.Rows
1985
                    Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
1986
                    Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
1987
                    Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
1988
                    Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
1989
                    Dim sSPID As String = oModelrow(_XML_LINE_SPID)
1990
                    If dStartX < dModelStart_X And dStartX < dModelEnd_X And
1991
                       dEndX > dModelStart_X And dEndX > dModelEnd_X Then
1992 496a0241 Gyusu
                        Dim dAddX As Double = dStartX
1993 dd46ca83 Gyusu
                        Dim dAddY As Double = dStartY
1994
                        Dim sType As String = ""
1995 496a0241 Gyusu
                        Dim dAddLineX As Double = 0
1996
                        Dim dAddLineY As Double = 0
1997 dd46ca83 Gyusu
                        If dStartY = dModelStart_Y Then
1998 496a0241 Gyusu
                            dAddX = 0
1999
                            '    dAddX = dModelStart_X
2000 dd46ca83 Gyusu
                        ElseIf dStartY = dModelEnd_Y Then
2001 496a0241 Gyusu
                            dAddX = 0
2002
                            '      dAddX = dModelEnd_X
2003 dd46ca83 Gyusu
                        ElseIf dStartY <= dModelStart_Y + dGap And dStartY >= dModelStart_Y - dGap Then
2004
                            dAddX = dModelStart_X
2005 496a0241 Gyusu
                            If dStartY <= dModelStart_Y Then
2006 dd46ca83 Gyusu
                                sType = "AddLine"
2007 496a0241 Gyusu
                                dAddLineX = dModelStart_X
2008
                                dAddLineY = dModelStart_Y
2009 dd46ca83 Gyusu
                            End If
2010
                        ElseIf dStartY <= dModelEnd_Y + dGap And dStartY >= dModelEnd_Y - dGap Then
2011
                            dAddX = dModelEnd_X
2012 496a0241 Gyusu
                            If dStartY <= dModelEnd_Y Then
2013 dd46ca83 Gyusu
                                sType = "AddLine"
2014 496a0241 Gyusu
                                dAddLineX = dModelEnd_X
2015
                                dAddLineY = dModelEnd_Y
2016 dd46ca83 Gyusu
                            End If
2017
                        End If
2018 496a0241 Gyusu
                        If sType = "AddLine" Then
2019
                            Dim objInputs As PlaceRunInputs
2020
                            objInputs = New PlaceRunInputs
2021
                            Dim oLMConnector As LMConnector = Nothing
2022
                            CheckConnectionLine(dAddLineX, dAddLineY, oLMConnector, "")
2023
                            objInputs.AddPoint(dAddLineX, dAddY)
2024
                            objInputs.AddConnectorTarget(oLMConnector, dAddLineX, dAddLineY)
2025
                            Dim AddLMConnector As LMConnector = LineModeling(objInputs, sSystemPath)
2026
                            JoinPipeRun(oLMConnector.ModelItemID, AddLMConnector.ModelItemID)
2027
                            dStartY = dAddY
2028
                        End If
2029
2030 dd46ca83 Gyusu
                        If dAddX <> 0 Then
2031
                            Dim oDatarow As DataRow = oModel_Dt.NewRow()
2032
                            oDatarow("X") = dAddX
2033
                            oDatarow("Y") = dAddY
2034
                            oDatarow("Type") = sType
2035
                            oDatarow("SPID") = sSPID
2036
                            oModel_Dt.Rows.Add(oDatarow)
2037
                        End If
2038
                    End If
2039
                Next
2040
            Catch ex As Exception
2041
            End Try
2042
        Else
2043
            '현재선이 y축방향
2044
            sCurrentDirection = "Y"
2045
            Try
2046
                For Each oModelrow In _ModelingLine_Dt.Rows
2047
                    Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
2048
                    Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
2049
                    Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
2050
                    Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
2051
                    Dim sSPID As String = oModelrow(_XML_LINE_SPID)
2052
                    If dStartY < dModelStart_Y And dStartY < dModelEnd_Y And
2053
                       dEndY > dModelStart_Y And dEndY > dModelEnd_Y Then
2054
                        Dim dAddX As Double = dStartX
2055 496a0241 Gyusu
                        Dim dAddY As Double = dStartY
2056 dd46ca83 Gyusu
                        Dim sType As String = ""
2057 496a0241 Gyusu
                        Dim dAddLineX As Double = 0
2058
                        Dim dAddLineY As Double = 0
2059 dd46ca83 Gyusu
                        If dStartX = dModelStart_X Then
2060 496a0241 Gyusu
                            dAddY = 0
2061
                            '       dAddY = dModelStart_Y
2062 dd46ca83 Gyusu
                        ElseIf dStartX = dModelEnd_X Then
2063 496a0241 Gyusu
                            dAddY = 0
2064
                            '        dAddY = dModelEnd_Y
2065 dd46ca83 Gyusu
                        ElseIf dStartX <= dModelStart_X + dGap And dStartX >= dModelStart_X - dGap Then
2066 496a0241 Gyusu
                            '         dAddY = dModelStart_Y
2067
                            If dStartX <= dModelStart_X Then
2068
                                dAddLineX = dModelStart_X
2069
                                dAddLineY = dModelStart_Y
2070 dd46ca83 Gyusu
                                sType = "AddLine"
2071
                            End If
2072
                        ElseIf dStartX <= dModelEnd_X + dGap And dStartX >= dModelEnd_X - dGap Then
2073 496a0241 Gyusu
                            '        dAddY = dModelEnd_Y
2074
                            If dStartX <= dModelEnd_X Then
2075
                                dAddLineX = dModelEnd_X
2076
                                dAddLineY = dModelEnd_Y
2077 dd46ca83 Gyusu
                                sType = "AddLine"
2078
                            End If
2079
                        End If
2080 496a0241 Gyusu
                        If sType = "AddLine" Then
2081
                            Dim objInputs As PlaceRunInputs
2082
                            objInputs = New PlaceRunInputs
2083
                            Dim oLMConnector As LMConnector = Nothing
2084
                            CheckConnectionLine(dAddLineX, dAddLineY, oLMConnector, "")
2085
                            objInputs.AddPoint(dAddX, dAddLineY)
2086
                            objInputs.AddConnectorTarget(oLMConnector, dAddLineX, dAddLineY)
2087
                            Dim AddLMConnector As LMConnector = LineModeling(objInputs, sSystemPath)
2088
                            JoinPipeRun(oLMConnector.ModelItemID, AddLMConnector.ModelItemID)
2089
                            dStartX = dAddX
2090
                        End If
2091
2092
                        If dAddY <> 0 Then
2093 dd46ca83 Gyusu
                            Dim oDatarow As DataRow = oModel_Dt.NewRow()
2094
                            oDatarow("X") = dAddX
2095
                            oDatarow("Y") = dAddY
2096
                            oDatarow("Type") = sType
2097
                            oDatarow("SPID") = sSPID
2098
                            oModel_Dt.Rows.Add(oDatarow)
2099
                        End If
2100
                    End If
2101
                Next
2102
            Catch ex As Exception
2103
            End Try
2104
        End If
2105
2106
        '//못미치는 라인은 라인길이를 더한후 나머지 모델링(2018.09.27)
2107
2108
        If oModel_Dt.Rows.Count > 0 Then
2109
            If sCurrentDirection = "X" Then
2110
                'X좌표 정렬
2111
                oModel_Dt.DefaultView.Sort = "X desc"
2112
                oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
2113
            Else
2114
                'Y좌표 정렬
2115
                oModel_Dt.DefaultView.Sort = "Y desc"
2116
                oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
2117
            End If
2118
            Dim oLMConnector As LMConnector = Nothing
2119
            Dim oPreLMConnector As LMConnector = Nothing
2120
            Dim dStartFlag As Boolean = True
2121
            For Each oModelRow In oModel_Dt.Rows
2122
                Dim objInputs As PlaceRunInputs
2123
                objInputs = New PlaceRunInputs
2124
                Dim dX As Double = oModelRow("X")
2125
                Dim dY As Double = oModelRow("Y")
2126
                Dim sType As String = oModelRow("Type")
2127
                Dim sUid As String = ""
2128 496a0241 Gyusu
2129
2130 dd46ca83 Gyusu
                CheckConnectionLine(dX, dY, oLMConnector, sUid)
2131
                If oLMConnector IsNot Nothing Then
2132
                    If dStartFlag Then
2133
                        objInputs.AddPoint(dStartX, dStartY)
2134
                        objInputs.AddConnectorTarget(oLMConnector, dX, dY)
2135
                    Else
2136
                        objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
2137
                        objInputs.AddConnectorTarget(oLMConnector, dX, dY)
2138
                    End If
2139
                    oPreLMConnector = LineModeling(objInputs, sSystemPath)
2140
                    '모델링후 StartX를 현재 X로 변경
2141
                    dStartX = dX
2142
                    dStartY = dY
2143
                End If
2144
            Next
2145
            If oPreLMConnector IsNot Nothing Then
2146
                Dim objInputs As PlaceRunInputs
2147
                objInputs = New PlaceRunInputs
2148
                objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
2149
                objInputs.AddPoint(dEndX, dEndY)
2150
                LineModeling(objInputs, sSystemPath)
2151
            End If
2152
        End If
2153 1bfcc921 Gyusu
        Return bCheckBranchLine
2154
    End Function
2155
2156
2157 b08338e3 Gyusu
    Private Function CheckLineBranch(ByVal oLine_Dt As DataTable, ByRef dX As Double, ByRef dY As Double,
2158
                                     ByVal sDirection As String, ByRef oLMConnector As LMConnector) As Boolean
2159
2160 496a0241 Gyusu
        Dim oModelingLineRows() As DataRow = oLine_Dt.Select(" Then[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And " &
2161 b08338e3 Gyusu
                                                                "[" & _XML_LINE_SPID & "] <> ''")
2162
2163
        Dim bConnectionFlag As Boolean = False
2164
        Try
2165
            For Each oModelrow In oModelingLineRows
2166
                Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
2167
                Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
2168
                Dim dModelStartX As Double
2169
                Dim dModelStartY As Double
2170
                Dim dModelEndX As Double
2171
                Dim dModelEndY As Double
2172
                ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
2173
                ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
2174
                ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
2175
                ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
2176
                Dim dGap As Double = 0.0002
2177
2178
                If Math.Abs(dModelStartX - dModelEndX) <= Math.Abs(dModelStartY - dModelEndY) Then
2179
                    'Vertical
2180
                    If sDirection = "X" Then
2181
                        'x Direction Line
2182
                        If (dModelStartY + dGap >= dY And dModelEndY - dGap <= dY) Or
2183
                        (dModelStartY - dGap <= dY And dModelEndY + dGap >= dY) Then
2184
                            If (dX > dModelStartX And dX < dModelEndX) Or (dX > dModelEndX And dX < dModelStartX) Then
2185
                                If Math.Abs(dX - dModelStartX) > Math.Abs(dX - dModelEndX) Then
2186
                                    dX = dModelEndX
2187
                                Else
2188
                                    dX = dModelStartX
2189
                                End If
2190
                                Try
2191
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
2192
                                Catch ex As Exception
2193
2194
                                End Try
2195
                                bConnectionFlag = True
2196
                            End If
2197
                        End If
2198
                    End If
2199
                Else
2200
                    'Horizontal 
2201
                    If sDirection = "Y" Then
2202
                        If (dModelStartX + dGap >= dX And dModelEndX - dGap <= dX) Or
2203
                       (dModelStartX - dGap <= dX And dModelEndX + dGap >= dX) Then
2204
                            If (dY > dModelStartY And dY < dModelEndY) Or (dY > dModelEndY And dY < dModelStartY) Then
2205
                                If Math.Abs(dY - dModelStartY) > Math.Abs(dY - dModelEndY) Then
2206
                                    dY = dModelEndY
2207
                                Else
2208
                                    dY = dModelStartY
2209
                                End If
2210
                                Try
2211
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
2212
                                Catch ex As Exception
2213
                                End Try
2214
                                bConnectionFlag = True
2215
                            End If
2216
                        End If
2217
                    End If
2218
                End If
2219
            Next
2220
        Catch ex As Exception
2221
        End Try
2222
        Return bConnectionFlag
2223
    End Function
2224
    Private Function LineModeling(ByVal oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sStartLineUid As String, ByVal sEndLineUid As String, ByVal dStart_x As Double, ByVal dStart_y As Double, ByVal dEnd_x As Double, ByVal dEnd_y As Double,
2225
                              ByVal sLineNoUid As String, ByVal sLineUid As String, ByVal sSystemPath As String, ByRef oLMConnector As LMConnector) As Boolean
2226 76f465d0 Gyusu
        'Try
2227
        '    Dim oDatasource As Object = _Placement.PIDDataSource
2228
        '    Dim oPipeRun As LMPipeRun = Nothing
2229
        '    Dim objInputs As PlaceRunInputs
2230
        '    objInputs = New PlaceRunInputs
2231
        '    Dim objItem As LMAItem
2232
        '    '       Dim objConnector As LMConnector
2233
2234
        '    Dim oStartLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sStartLineUid & "' And " &
2235
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
2236
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
2237
        '    If oStartLineRow.Length = 0 Then
2238
        '        oStartLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sStartLineUid & "' And " &
2239
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
2240
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
2241
        '    End If
2242
        '    Dim oEndLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sEndLineUid & "' And " &
2243
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
2244
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
2245
2246
        '    oEndLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sEndLineUid & "' And " &
2247
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
2248
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
2249
        '    Dim sStartConnectionType As String = ""
2250
        '    Dim sEndConnectionType As String = ""
2251
2252
        '    Dim oStartLMConnector As LMConnector = Nothing
2253
        '    Dim oEndLMConnector As LMConnector = Nothing
2254
        '    Dim oDirectionLine As String = ""
2255
2256
        '    If Math.Abs(dStart_x - dEnd_x) > Math.Abs(dStart_y - dEnd_y) Then
2257
        '        oDirectionLine = "X"
2258
        '    Else
2259
        '        oDirectionLine = "Y"
2260
        '    End If
2261 b08338e3 Gyusu
2262 76f465d0 Gyusu
        '    Dim bCheckFlag As Boolean = False
2263 b08338e3 Gyusu
2264 76f465d0 Gyusu
        '    Dim bStartCheckFlag As Boolean = CheckConnectionLine(oStartLineRow, dStart_x, dStart_y, oStartLMConnector)
2265
        '    If bStartCheckFlag = False Then
2266
        '        bStartCheckFlag = CheckConnectionLine(oStartLineRow, dEnd_x, dEnd_y, oStartLMConnector)
2267
        '        bCheckFlag = True
2268
        '    End If
2269
        '    Dim bEndCheckFlag As Boolean = CheckConnectionLine(oEndLineRow, dEnd_x, dEnd_y, oEndLMConnector)
2270 b08338e3 Gyusu
2271 76f465d0 Gyusu
        '    If bEndCheckFlag = False Then
2272 b08338e3 Gyusu
2273 76f465d0 Gyusu
        '        bEndCheckFlag = CheckConnectionLine(oEndLineRow, dStart_x, dStart_y, oEndLMConnector)
2274
        '        bCheckFlag = True
2275
        '    End If
2276 b08338e3 Gyusu
2277 76f465d0 Gyusu
        '    If bStartCheckFlag = True And bEndCheckFlag = False Then
2278
        '        If bCheckFlag Then
2279
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
2280
        '            objInputs.AddPoint(dStart_x, dStart_y)
2281
        '        Else
2282
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
2283
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
2284
        '        End If
2285
2286
        '    ElseIf bStartCheckFlag = False And bEndCheckFlag = True Then
2287
        '        If bCheckFlag Then
2288
2289
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
2290
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
2291
        '        Else
2292
        '            objInputs.AddPoint(dStart_x, dStart_y)
2293
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
2294
        '        End If
2295
2296
        '    ElseIf bStartCheckFlag = True And bEndCheckFlag = True Then
2297
        '        objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
2298
        '        objInputs.AddConnectorTarget(oEndLMConnector, dEnd_x, dEnd_y)
2299
        '    Else
2300
        '        objInputs.AddPoint(dStart_x, dStart_y)
2301
        '        objInputs.AddPoint(dEnd_x, dEnd_y)
2302
        '    End If
2303
        '    SetListBoxItems(ListBox_Result, "Place Pipe..(" & dStart_x & "," & dStart_y & ") - (" & dEnd_x & "," & dEnd_y & ")..." & _iPipecnt & " count ")
2304
        '    _iPipecnt = _iPipecnt + 1
2305
        '    objItem = _Placement.PIDCreateItem(sSystemPath)
2306
        '    oLMConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2307 b08338e3 Gyusu
2308 76f465d0 Gyusu
        '    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + sLineUid + "'")
2309
        '    If oUpdateRow.Length = 1 Then
2310
        '        oUpdateRow(0)(_XML_LINE_SPID) = oLMConnector.ModelItemID
2311
        '        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = oLMConnector
2312 b08338e3 Gyusu
2313 76f465d0 Gyusu
        '        oUpdateRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2314
        '    End If
2315 b08338e3 Gyusu
2316 76f465d0 Gyusu
        '    oPipeRun = oDatasource.GetPipeRun(oLMConnector.ModelItemID)
2317
2318
        '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2319
        '    If oAttributeRow.Length > 0 Then
2320
        '        For Each oAttribute In oAttributeRow
2321
        '            Try
2322
        '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2323
        '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2324
        '                If sPIDValue.Contains("'") Then
2325
        '                    sPIDValue = sPIDValue.Replace("'", """")
2326
        '                End If
2327
        '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2328
        '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
2329
        '            Catch ex As Exception
2330
        '            End Try
2331
        '        Next
2332
        '        oPipeRun.Commit()
2333
        '    End If
2334
        '    Dim sID_1 As String = ""
2335
        '    Dim sID_2 As String = ""
2336
        '    If oStartLMConnector IsNot Nothing Then
2337
        '        sID_1 = oStartLMConnector.ModelItemID
2338
        '        sID_2 = oLMConnector.ModelItemID
2339
        '    ElseIf oEndLMConnector IsNot Nothing Then
2340
        '        sID_1 = oEndLMConnector.ModelItemID
2341
        '        sID_2 = oLMConnector.ModelItemID
2342
        '    End If
2343
        '    If sID_1 <> "" And sID_2 <> "" Then
2344
        '        Dim objSurvivorItem As LMAItem = Nothing
2345
        '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
2346
        '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
2347
        '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
2348
        '    End If
2349
        '    Return True
2350
        'Catch ex As Exception
2351
        '    Return False
2352
        'End Try
2353 b08338e3 Gyusu
2354
    End Function
2355
2356
    Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
2357
                                        ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String,
2358
                                        ByRef oLMConnector As LMConnector) As String
2359
        Dim sReturnUid As String = ""
2360
        Try
2361
            Dim sLineUid As String = ""
2362
2363
            Dim iConnType As Integer = 0
2364
2365
            Dim sStartpoint As String = ""
2366
            Dim sEndpoint As String = ""
2367 bb2a0c79 Gyusu
            Dim dOriginalStart_x As Double = 0.0
2368
            Dim dOriginalStart_y As Double = 0.0
2369
            Dim dOriginalEnd_x As Double = 0.0
2370
            Dim dOriginalEnd_y As Double = 0.0
2371
2372 b08338e3 Gyusu
            Dim dStart_x As Double = 0
2373
            Dim dStart_y As Double = 0
2374
            Dim dEnd_x As Double = 0
2375
            Dim dEnd_y As Double = 0
2376
            Dim sStartLineUid As String = sConnLineUid
2377
            Dim sEndLineUid As String = ""
2378
            Dim sDirection As String = ""
2379
            Dim sSystemPath As String = GetPipeType(sType)
2380
2381
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
2382
                                                                    "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2383
                                                                     "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2384
                                                                     "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2385
            If oPipeRow.Length > 0 Then
2386 bb2a0c79 Gyusu
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2387
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2388 e4000111 Gyusu
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2389
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2390 b08338e3 Gyusu
                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
2391
                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
2392
                If dStart_x = 0 And dStart_y = 0 Then
2393
                    dStart_x = dOriginalStart_x
2394
                    dStart_y = dOriginalStart_y
2395
                    dEnd_x = dOriginalEnd_x
2396
                    dEnd_y = dOriginalEnd_y
2397
                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2398
                        sDirection = "X"
2399
                    Else
2400
                        sDirection = "Y"
2401
                    End If
2402
                    oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2403
                    sLineUid = sConnLineUid
2404
                End If
2405
            End If
2406 bb2a0c79 Gyusu
2407 b08338e3 Gyusu
            While True
2408
                sLineUid = ""
2409
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
2410 f9b63682 Gyusu
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2411
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2412
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2413 b08338e3 Gyusu
2414
                If oPipeRow.Length = 0 Then
2415
                    oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
2416 f9b63682 Gyusu
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2417
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2418
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2419 bb2a0c79 Gyusu
                Else
2420 b08338e3 Gyusu
                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2421
                    'sConnLineUid = sLineUid
2422
                    sLineUid = sConnLineUid
2423
                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2424
                    iConnType = 1
2425
                End If
2426
2427
                If oPipeRow.Length > 0 Then
2428
                    If sLineUid = "" Then
2429
                        'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2430
                        'sConnLineUid = sLineUid
2431
                        sLineUid = sConnLineUid
2432
                        sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2433
                        iConnType = 2
2434
                    End If
2435
                    If iConnType = 1 Then
2436
2437
                    ElseIf iConnType = 2 Then
2438
2439
                    End If
2440
                    sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2441
                    sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2442
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2443
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2444
                    ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
2445
                    ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
2446
2447
                    If dStart_x = 0 And dStart_y = 0 Then
2448
                        dStart_x = dOriginalStart_x
2449
                        dStart_y = dOriginalStart_y
2450
                        dEnd_x = dOriginalEnd_x
2451
                        dEnd_y = dOriginalEnd_y
2452
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2453
                            sDirection = "X"
2454
                        Else
2455
                            sDirection = "Y"
2456
                        End If
2457
                        sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
2458
                        sSystemPath = GetPipeType(sType)
2459
                    Else
2460
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2461
                            If sDirection = "Y" Then
2462
                                '방향이 바꼈음 Y - > X
2463
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2464
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
2465
                                dStart_x = dOriginalStart_x
2466
                                dStart_y = dOriginalStart_y
2467
                                dEnd_x = dOriginalEnd_x
2468
                                dEnd_y = dOriginalEnd_y
2469
                                sStartLineUid = sConnLineUid
2470
                            Else
2471
                                dEnd_x = dOriginalEnd_x
2472
                                dEnd_y = dOriginalEnd_y
2473
                            End If
2474
                            sDirection = "X"
2475
                        Else
2476
                            If sDirection = "X" Then
2477
                                '방향이 바꼈음 X - > Y
2478
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2479
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
2480
                                dStart_x = dOriginalStart_x
2481
                                dStart_y = dOriginalStart_y
2482
                                dEnd_x = dOriginalEnd_x
2483
                                dEnd_y = dOriginalEnd_y
2484
                                sStartLineUid = sConnLineUid
2485
                            Else
2486
2487
                                dEnd_x = dOriginalEnd_x
2488
                                dEnd_y = dOriginalEnd_y
2489
                            End If
2490
                            sDirection = "Y"
2491
                        End If
2492
                    End If
2493
                    '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2494
                Else
2495
                    If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
2496
                        LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2497
                         sLineNoUid, sLineUid, sSystemPath, oLMConnector)
2498
                    End If
2499
                    sReturnUid = sConnLineUid
2500
                    Exit While
2501
                End If
2502
            End While
2503
2504
            If sStartLineUid <> "" And sEndLineUid <> "" Then
2505
                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2506
                             sLineNoUid, sLineUid, sSystemPath, oLMConnector)
2507
                dStart_x = 0
2508
                dStart_y = 0
2509
                dEnd_x = 0
2510
                dEnd_y = 0
2511
            End If
2512
        Catch ex As Exception
2513
2514
        End Try
2515
2516
        Return sReturnUid
2517
    End Function
2518
2519
2520
    'Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
2521
    '                                    ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String) As String
2522
    '    Dim sReturnUid As String = ""
2523
    '    Try
2524
    '        Dim sLineUid As String = ""
2525
2526
    '        Dim iConnType As Integer = 0
2527
2528
    '        Dim sStartpoint As String = ""
2529
    '        Dim sEndpoint As String = ""
2530
    '        Dim dOriginalStart_x As Double = 0.0
2531
    '        Dim dOriginalStart_y As Double = 0.0
2532
    '        Dim dOriginalEnd_x As Double = 0.0
2533
    '        Dim dOriginalEnd_y As Double = 0.0
2534
2535
    '        Dim dStart_x As Double = 0
2536
    '        Dim dStart_y As Double = 0
2537
    '        Dim dEnd_x As Double = 0
2538
    '        Dim dEnd_y As Double = 0
2539
    '        Dim sStartLineUid As String = sConnLineUid
2540
    '        Dim sEndLineUid As String = ""
2541
    '        Dim sDirection As String = ""
2542
    '        Dim sSystemPath As String = GetPipeType(sType)
2543
2544
    '        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
2545
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2546
    '                                                                 "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2547
    '                                                                 "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2548
    '        If oPipeRow.Length > 0 Then
2549
    '            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2550
    '            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2551
    '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2552
    '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2553
    '            ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
2554
    '            ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
2555
    '            If dStart_x = 0 And dStart_y = 0 Then
2556
    '                dStart_x = dOriginalStart_x
2557
    '                dStart_y = dOriginalStart_y
2558
    '                dEnd_x = dOriginalEnd_x
2559
    '                dEnd_y = dOriginalEnd_y
2560
    '                If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2561
    '                    sDirection = "X"
2562
    '                Else
2563
    '                    sDirection = "Y"
2564
    '                End If
2565
    '                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2566
    '                sLineUid = sConnLineUid
2567
    '            End If
2568
    '        End If
2569
2570
    '        While True
2571
    '            sLineUid = ""
2572
    '            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
2573
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2574
    '                                                                         "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2575
    '                                                                         "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2576
2577
    '            If oPipeRow.Length = 0 Then
2578
    '                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
2579
    '                                         "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
2580
    '                                       "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
2581
    '                                      "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
2582
    '            Else
2583
    '                'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2584
    '                'sConnLineUid = sLineUid
2585
    '                sLineUid = sConnLineUid
2586
    '                sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2587
    '                iConnType = 1
2588
    '            End If
2589
2590
    '            If oPipeRow.Length > 0 Then
2591
    '                If sLineUid = "" Then
2592
    '                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2593
    '                    'sConnLineUid = sLineUid
2594
    '                    sLineUid = sConnLineUid
2595
    '                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2596
    '                    iConnType = 2
2597
    '                End If
2598
    '                If iConnType = 1 Then
2599
2600
    '                ElseIf iConnType = 2 Then
2601
2602
    '                End If
2603
    '                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2604
    '                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2605
    '                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2606
    '                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2607
    '                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
2608
    '                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
2609
2610
2611
2612
    '                If dStart_x = 0 And dStart_y = 0 Then
2613
    '                    dStart_x = dOriginalStart_x
2614
    '                    dStart_y = dOriginalStart_y
2615
    '                    dEnd_x = dOriginalEnd_x
2616
    '                    dEnd_y = dOriginalEnd_y
2617
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2618
    '                        sDirection = "X"
2619
    '                    Else
2620
    '                        sDirection = "Y"
2621
    '                    End If
2622
    '                    sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
2623
    '                    sSystemPath = GetPipeType(sType)
2624
    '                Else
2625
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
2626
    '                        If sDirection = "Y" Then
2627
    '                            '방향이 바꼈음 Y - > X
2628
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2629
    '                            sLineNoUid, sLineUid, sSystemPath)
2630
    '                            dStart_x = dOriginalStart_x
2631
    '                            dStart_y = dOriginalStart_y
2632
    '                            dEnd_x = dOriginalEnd_x
2633
    '                            dEnd_y = dOriginalEnd_y
2634
    '                            sStartLineUid = sConnLineUid
2635
    '                        Else
2636
    '                            dEnd_x = dOriginalEnd_x
2637
    '                            dEnd_y = dOriginalEnd_y
2638
    '                        End If
2639
    '                        sDirection = "X"
2640
    '                    Else
2641
    '                        If sDirection = "X" Then
2642
    '                            '방향이 바꼈음 X - > Y
2643
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2644
    '                            sLineNoUid, sLineUid, sSystemPath)
2645
    '                            dStart_x = dOriginalStart_x
2646
    '                            dStart_y = dOriginalStart_y
2647
    '                            dEnd_x = dOriginalEnd_x
2648
    '                            dEnd_y = dOriginalEnd_y
2649
    '                            sStartLineUid = sConnLineUid
2650
    '                        Else
2651
2652
    '                            dEnd_x = dOriginalEnd_x
2653
    '                            dEnd_y = dOriginalEnd_y
2654
    '                        End If
2655
    '                        sDirection = "Y"
2656
    '                    End If
2657
    '                End If
2658
    '                '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2659
    '            Else
2660
    '                If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
2661
    '                    LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2662
    '                     sLineNoUid, sLineUid, sSystemPath)
2663
    '                End If
2664
2665
2666
    '                sReturnUid = sConnLineUid
2667
    '                Exit While
2668
    '            End If
2669
    '        End While
2670
2671
    '        If sStartLineUid <> "" And sEndLineUid <> "" Then
2672
    '            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
2673
    '                         sLineNoUid, sLineUid, sSystemPath)
2674
    '            dStart_x = 0
2675
    '            dStart_y = 0
2676
    '            dEnd_x = 0
2677
    '            dEnd_y = 0
2678
    '        End If
2679
    '    Catch ex As Exception
2680
2681
    '    End Try
2682
2683
    '    Return sReturnUid
2684
    'End Function
2685
2686
2687
    Private Function SymbolToLine_Modeling(ByVal oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
2688
                                       ByVal sSymbolUid As String, ByVal oLMSymbol As LMSymbol) As String
2689
2690
2691
        Dim oDatasource As Object = _Placement.PIDDataSource
2692
        Dim oPipeRun As LMPipeRun = Nothing
2693
        Dim objItem As LMAItem
2694
        Dim objConnector As LMConnector
2695
        Dim objInputs As PlaceRunInputs
2696
        objInputs = New PlaceRunInputs
2697
2698
2699
        Dim sPipeUid As String = ""
2700
        Dim iConnType As Integer = 0
2701
        Dim sStartpoint As String = ""
2702
        Dim sEndpoint As String = ""
2703
        Dim dOriginalStart_x As Double = 0.0
2704
        Dim dOriginalStart_y As Double = 0.0
2705
        Dim dOriginalEnd_x As Double = 0.0
2706
        Dim dOriginalEnd_y As Double = 0.0
2707
        Dim dStart_x As Double = 0.0
2708
        Dim dStart_y As Double = 0.0
2709
        Dim dEnd_x As Double = 0.0
2710
        Dim dEnd_y As Double = 0.0
2711
2712
        Dim sReturnUid As String = ""
2713
        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sSymbolUid + "' And " &
2714
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2715
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
2716
        If oPipeRow.Length = 0 Then
2717
            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sSymbolUid + "' And " &
2718
                                     "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2719
                                    _XML_SYMBOL_Check & "] = 'TRUE'")
2720
        Else
2721
            sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2722
            iConnType = 1
2723
        End If
2724
2725
        If oPipeRow.Length = 1 Then
2726
            If sPipeUid = "" Then
2727
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2728
                iConnType = 2
2729
            End If
2730
            sReturnUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2731
            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2732
            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2733
            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2734
            dStart_x = dOriginalStart_x
2735
            dStart_y = dOriginalStart_y
2736
            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2737
            dEnd_x = dOriginalEnd_x
2738
            dEnd_y = dOriginalEnd_y
2739
            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
2740
            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
2741
            'OPC Connection Point가져와서 연결(2018-07-12)
2742
            If iConnType = 1 Then
2743
                FindNearPoint(oLMSymbol, dStart_x, dStart_y)
2744
                objInputs.AddSymbolTarget(oLMSymbol, dStart_x, dStart_y)
2745
                objInputs.AddPoint(dEnd_x, dEnd_y)
2746
            Else
2747
                FindNearPoint(oLMSymbol, dEnd_x, dEnd_y)
2748
                objInputs.AddSymbolTarget(oLMSymbol, dEnd_x, dEnd_y)
2749
                objInputs.AddPoint(dStart_x, dStart_y)
2750
            End If
2751
            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2752
2753
            Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
2754
            Dim sSystemPath As String = GetPipeType(sType)
2755
2756
2757
2758
2759
            objItem = _Placement.PIDCreateItem(sSystemPath)
2760
            objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2761
            oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
2762
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2763
            If oAttributeRow.Length > 0 Then
2764
                For Each oAttribute In oAttributeRow
2765
                    Try
2766
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2767
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2768
                        If sPIDValue.Contains("'") Then
2769
                            sPIDValue = sPIDValue.Replace("'", """")
2770
                        End If
2771
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2772
                        oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
2773
                    Catch ex As Exception
2774
                    End Try
2775
                Next
2776
                oPipeRun.Commit()
2777
            End If
2778
        End If
2779
        Return sReturnUid
2780
    End Function
2781
2782
    Private Function LineToSymbol_Modeling(ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
2783
                                       ByVal sLineUid As String, ByVal oLMConnector As LMConnector, ByRef oLMSymbol As LMSymbol) As String
2784
2785
2786
        Dim oDatasource As Object = _Placement.PIDDataSource
2787
        Dim objItem As LMAItem
2788
        Dim objConnector As LMConnector
2789
        Dim objInputs As PlaceRunInputs
2790
        objInputs = New PlaceRunInputs
2791
2792
2793
        Dim sSymbolUid As String = ""
2794
        Dim iConnType As Integer = 0
2795
        Dim dOriginalPoint_x As Double = 0.0
2796
        Dim dORiginalPoint_y As Double = 0.0
2797
        Dim dX As Double = 0.0
2798
        Dim dY As Double = 0.0
2799
        Dim sReturnUid As String = ""
2800
        Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn1_Uid & " = '" + sLineUid + "' And " &
2801
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2802
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
2803
        If oSymbolRow.Length = 0 Then
2804
            oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
2805
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2806
                                                                                 _XML_SYMBOL_Check & "] = 'TRUE'")
2807
            If oSymbolRow.Length = 0 Then
2808
                oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
2809
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2810
                                                                          _XML_SYMBOL_Check & "] = 'TRUE'")
2811
                If oSymbolRow.Length = 0 Then
2812
                    oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
2813
                                                   "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
2814
                                                            _XML_SYMBOL_Check & "] = 'TRUE'")
2815
                    If oSymbolRow.Length = 0 Then
2816
2817
                    Else
2818
                        sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2819
                        iConnType = 4
2820
                    End If
2821
                Else
2822
                    sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2823
                    iConnType = 3
2824
                End If
2825
            Else
2826
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2827
                iConnType = 2
2828
            End If
2829
2830
        Else
2831
            sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2832
            iConnType = 1
2833
        End If
2834
2835
        If oSymbolRow.Length = 1 Then
2836
            If sSymbolUid = "" Then
2837
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2838
                iConnType = 2
2839
            End If
2840
            sReturnUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
2841
            Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
2842
            ConvertPointBystring(sOriginalPoint, dOriginalPoint_x, dORiginalPoint_y)
2843
            dX = dOriginalPoint_x
2844
            dY = dORiginalPoint_y
2845
            ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
2846
            'OPC Connection Point가져와서 연결(2018-07-12)
2847
2848
            oSymbolRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2849
2850
            Dim sType As String = oSymbolRow(0)(_XML_LINE_TYPE).ToString()
2851
            Dim sSystemPath As String = GetPipeType(sType)
2852
2853
            oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, ExistingItem:=oLMConnector.AsLMAItem,
2854
          TargetItem:=oLMSymbol.AsLMAItem)
2855
2856
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2857
            If oAttributeRow.Length > 0 Then
2858
                For Each oAttribute In oAttributeRow
2859
                    Try
2860
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2861
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2862
                        If sPIDValue.Contains("'") Then
2863
                            sPIDValue = sPIDValue.Replace("'", """")
2864
                        End If
2865
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2866
                        oLMSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
2867
                    Catch ex As Exception
2868
                    End Try
2869
                Next
2870
            End If
2871
        End If
2872
        Return sReturnUid
2873
    End Function
2874
2875
2876
    Private Sub OPCTOLineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal oOPCSymbol As LMSymbol,
2877
                            ByVal sOPCUid As String, ByVal sLineNoUid As String)
2878
        Try
2879
            Dim oDatasource As Object = _Placement.PIDDataSource
2880
            Dim objItem As LMAItem
2881
            Dim objConnector As LMConnector
2882
            Dim objInputs As PlaceRunInputs
2883
            objInputs = New PlaceRunInputs
2884
            Dim dOriginalStart_x As Double = 0.0
2885
            Dim dOriginalStart_y As Double = 0.0
2886
            Dim dOriginalEnd_x As Double = 0.0
2887
            Dim dOriginalEnd_y As Double = 0.0
2888
            Dim dStart_x As Double = 0.0
2889
            Dim dStart_y As Double = 0.0
2890
            Dim dEnd_x As Double = 0.0
2891
            Dim dEnd_y As Double = 0.0
2892
2893
            Dim oPipeRun As LMPipeRun = Nothing
2894
            Dim sStartpoint As String = ""
2895
            Dim sEndpoint As String = ""
2896
            Dim iConnType As Integer = 0
2897
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sOPCUid + "' And [" &
2898
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
2899
            Dim sPipeUid As String = ""
2900
            If oPipeRow.Length = 0 Then
2901
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sOPCUid + "' And [" &
2902
                        _XML_SYMBOL_Check & "] = 'TRUE'")
2903
            Else
2904
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2905
                iConnType = 1
2906
            End If
2907
            Dim oAddUid_List As New List(Of String)
2908
            If oPipeRow.Length = 1 Then
2909
                If sPipeUid = "" Then
2910
                    sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
2911
                    iConnType = 2
2912
                End If
2913
                oAddUid_List.Add(sPipeUid)
2914
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2915
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2916
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2917
                dStart_x = dOriginalStart_x
2918
                dStart_y = dOriginalStart_y
2919
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2920
                dEnd_x = dOriginalEnd_x
2921
                dEnd_y = dOriginalEnd_y
2922
                ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
2923
                ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
2924
2925
                'OPC Connection Point가져와서 연결(2018-07-12)
2926
                If iConnType = 1 Then
2927
                    FindNearPoint(oOPCSymbol, dStart_x, dStart_y)
2928
                    objInputs.AddSymbolTarget(oOPCSymbol, dStart_x, dStart_y)
2929
                    objInputs.AddPoint(dEnd_x, dEnd_y)
2930
                Else
2931
                    FindNearPoint(oOPCSymbol, dEnd_x, dEnd_y)
2932
                    objInputs.AddSymbolTarget(oOPCSymbol, dEnd_x, dEnd_y)
2933 bb2a0c79 Gyusu
                    objInputs.AddPoint(dStart_x, dStart_y)
2934
                End If
2935
                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2936
2937
                While True
2938
                    '    objInputs.Clear()
2939
                    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
2940
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
2941
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
2942
                    If oAddPipeRow.Length = 0 Then
2943
                        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
2944
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
2945
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
2946
                        sPipeUid = ""
2947
                    Else
2948
                        iConnType = 1
2949
                        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
2950
                    End If
2951
                    If oAddPipeRow.Length = 1 Then
2952
                        If sPipeUid = "" Then
2953
                            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
2954
                            iConnType = 2
2955
                        End If
2956
                        oAddUid_List.Add(sPipeUid)
2957
                        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
2958
                        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
2959
                        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2960
                        dStart_x = dOriginalStart_x
2961
                        dStart_y = dOriginalStart_y
2962
                        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2963
                        dEnd_x = dOriginalEnd_x
2964
                        dEnd_y = dOriginalEnd_y
2965
                        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
2966
                        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
2967
                        If iConnType = 1 Then
2968
                            objInputs.AddPoint(dEnd_x, dEnd_y)
2969
                            ' objInputs.AddPoint(dStart_x, dStart_y)
2970
                        Else
2971
                            'objInputs.AddConnectorTarget(objConnector, dStart_x, dStart_y)
2972
                            '  objInputs.AddPoint(dStart_x, dStart_y)
2973
                            '  objInputs.AddPoint(dEnd_x, dEnd_y)
2974
                            objInputs.AddPoint(dStart_x, dStart_y)
2975
                        End If
2976 e4000111 Gyusu
2977 bb2a0c79 Gyusu
                        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
2978
                    Else
2979
                        Exit While
2980
                    End If
2981 e4000111 Gyusu
2982 bb2a0c79 Gyusu
                End While
2983
                Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
2984
                Dim sSystemPath As String = GetPipeType(sType)
2985 e4000111 Gyusu
2986 bb2a0c79 Gyusu
                objItem = _Placement.PIDCreateItem(sSystemPath)
2987
                objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2988
                For i = 0 To oAddUid_List.Count - 1
2989
                    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
2990
                    If oUpdateRow.Length = 1 Then
2991
                        oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
2992
                        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
2993
                    End If
2994
                Next
2995
2996
2997
                oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
2998
                Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2999
                If oAttributeRow.Length > 0 Then
3000
                    For Each oAttribute In oAttributeRow
3001
                        Try
3002
                            Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3003
                            Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3004
                            If sPIDValue.Contains("'") Then
3005
                                sPIDValue = sPIDValue.Replace("'", """")
3006
                            End If
3007
                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3008
                            oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
3009
                        Catch ex As Exception
3010
                        End Try
3011
                    Next
3012
                    oPipeRun.Commit()
3013
                End If
3014
3015
            End If
3016
3017
        Catch ex As Exception
3018
        End Try
3019
    End Sub
3020
3021
    Private Function AddUidList중복체크(ByVal sUidList As List(Of String), ByVal sAddUid As String) As Boolean
3022 e4000111 Gyusu
3023 bb2a0c79 Gyusu
        For Each sUid In sUidList
3024
            If sUid = sAddUid Then
3025
                Return False
3026
            End If
3027
        Next
3028
        Return True
3029
    End Function
3030
3031 b08338e3 Gyusu
    Private Sub LineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String, ByVal sLineNoText As String)
3032 bb2a0c79 Gyusu
        Try
3033
            Dim oDatasource As Object = _Placement.PIDDataSource
3034
            Dim objItem As LMAItem
3035
            Dim objConnector As LMConnector
3036
            Dim objInputs As PlaceRunInputs
3037
            objInputs = New PlaceRunInputs
3038
            Dim dOriginalStart_x As Double = 0.0
3039
            Dim dOriginalStart_y As Double = 0.0
3040
            Dim dOriginalEnd_x As Double = 0.0
3041
            Dim dOriginalEnd_y As Double = 0.0
3042
            Dim dStart_x As Double = 0.0
3043
            Dim dStart_y As Double = 0.0
3044
            Dim dEnd_x As Double = 0.0
3045
            Dim dEnd_y As Double = 0.0
3046
            Dim oPipeRun As LMPipeRun = Nothing
3047
            Dim sStartpoint As String = ""
3048
            Dim sEndpoint As String = ""
3049
            Dim iConnType As Integer = 0
3050
            Dim pLMConnector As LMConnector = Nothing
3051
            For Each oLinerow In oLine_Dt.Rows
3052
                objInputs.Clear()
3053 b08338e3 Gyusu
                Dim sCheck As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
3054
                If sCheck = "FALSE" Then
3055
                    Dim sUid As String = oLinerow(_XML_LINE_UID).ToString()
3056
                    sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
3057
                    sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
3058
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
3059
                    dStart_x = dOriginalStart_x
3060
                    dStart_y = dOriginalStart_y
3061
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
3062
                    dEnd_x = dOriginalEnd_x
3063
                    dEnd_y = dOriginalEnd_y
3064
                    ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
3065
                    ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
3066 bb2a0c79 Gyusu
3067 b08338e3 Gyusu
                    objInputs.AddPoint(dStart_x, dStart_y)
3068
                    objInputs.AddPoint(dEnd_x, dEnd_y)
3069 bb2a0c79 Gyusu
                    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
3070
                    Dim sSystemPath As String = GetPipeType(sType)
3071
                    objItem = _Placement.PIDCreateItem(sSystemPath)
3072
                    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
3073 b08338e3 Gyusu
                    SetListBoxItems(ListBox_Result, "Place Pipe.." & sUid & " (" & dOriginalStart_x & "," & dOriginalStart_y & ") - (" & dOriginalEnd_x & "," & dOriginalEnd_y & ")..." & _iPipecnt & " count ")
3074
3075
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & sUid)
3076
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
3077
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oLinerow(_XML_SYMBOL_Conn1_Uid).ToString())
3078
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oLinerow(_XML_SYMBOL_Conn2_Uid).ToString())
3079
                    'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
3080
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "StartPoint : " & dOriginalStart_x & "," & dOriginalStart_y)
3081
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "EndPoint : " & dOriginalEnd_x & "," & dOriginalEnd_y)
3082
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Pipe Count : " & _iPipecnt)
3083
3084
                    _iPipecnt = _iPipecnt + 1
3085
                    oLinerow(_XML_LINE_SPID) = objConnector.ModelItemID
3086
                    oLinerow(_XML_LINE_LMCONNECTOR) = objConnector
3087
3088
                    oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
3089 bb2a0c79 Gyusu
                    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
3090
3091
                    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
3092
                    If oAttributeRow.Length > 0 Then
3093
                        For Each oAttribute In oAttributeRow
3094
                            Try
3095
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3096
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3097
                                If sPIDValue.Contains("'") Then
3098
                                    sPIDValue = sPIDValue.Replace("'", """")
3099
                                End If
3100
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3101
                                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
3102
                            Catch ex As Exception
3103
                            End Try
3104
                        Next
3105
                        oPipeRun.Commit()
3106
                    End If
3107
                End If
3108
3109
3110
3111
3112
3113 b08338e3 Gyusu
                'Dim sPipeUid As String = oLinerow(_XML_LINE_UID).ToString()
3114
                'Dim sCheckModeling As Boolean = False
3115
                'objInputs.Clear()
3116
                'Dim oAddUid_List As New List(Of String)
3117
                'Try
3118
                '    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
3119
                '                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
3120
                '                                            _XML_SYMBOL_Check & "] = 'TRUE'")
3121
                '    If oAddPipeRow.Length = 0 Then
3122
                '        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
3123
                '                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
3124
                '                                        _XML_SYMBOL_Check & "] = 'TRUE'")
3125
                '        sPipeUid = ""
3126
                '    Else
3127
                '        iConnType = 1
3128
                '        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
3129
                '    End If
3130
                '    If oAddPipeRow.Length = 1 Then
3131
                '        sCheckModeling = True
3132
                '        If sPipeUid = "" Then
3133
                '            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
3134
                '            iConnType = 2
3135
                '        End If
3136
                '        If AddUidList중복체크(oAddUid_List, sPipeUid) Then
3137
                '            oAddUid_List.Add(sPipeUid)
3138
                '        End If
3139
                '        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
3140
                '        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
3141
                '        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
3142
                '        dStart_x = dOriginalStart_x
3143
                '        dStart_y = dOriginalStart_y
3144
                '        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
3145
                '        dEnd_x = dOriginalEnd_x
3146
                '        dEnd_y = dOriginalEnd_y
3147
                '        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
3148
                '        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
3149
                '        Dim sBranchType As String = ""
3150
                '        If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
3151
                '            Try
3152
                '                If pLMConnector Is Nothing Then
3153
                '                    objInputs.AddPoint(dStart_x, dStart_y)
3154
                '                    objInputs.AddPoint(dEnd_x, dEnd_y)
3155
                '                Else
3156
                '                    If sBranchType = "1" Then
3157
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
3158
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
3159
                '                    ElseIf sBranchType = "2" Then
3160
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
3161
                '                        objInputs.AddPoint(dStart_x, dStart_y)
3162
                '                    ElseIf sBranchType = "3" Then
3163
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
3164
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
3165
                '                    ElseIf sBranchType = "4" Then
3166
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
3167
                '                        objInputs.AddPoint(dStart_x, dStart_y)
3168
                '                    End If
3169
                '                End If
3170
                '            Catch ex As Exception
3171
                '            End Try
3172
                '        Else
3173
                '            objInputs.AddPoint(dStart_x, dStart_y)
3174
                '            objInputs.AddPoint(dEnd_x, dEnd_y)
3175
                '        End If
3176
                '        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
3177
                '    Else
3178
                '        Dim CheckTF As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
3179
                '        Dim CheckSelect As String = oLinerow(_XML_LINE_Check).ToString()
3180
                '        If CheckTF = "FALSE" And CheckSelect = "TRUE" Then
3181
                '            sPipeUid = oLinerow(_XML_LINE_UID).ToString()
3182
                '            oAddUid_List.Clear()
3183
                '            oAddUid_List.Add(sPipeUid)
3184
                '            sCheckModeling = True
3185
                '            sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
3186
                '            sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
3187
                '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
3188
                '            dStart_x = dOriginalStart_x
3189
                '            dStart_y = dOriginalStart_y
3190
                '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
3191
                '            dEnd_x = dOriginalEnd_x
3192
                '            dEnd_y = dOriginalEnd_y
3193
                '            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
3194
                '            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
3195
                '            Dim sBranchType As String = ""
3196
                '            If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
3197
                '                Try
3198
                '                    If sBranchType = "1" Then
3199
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
3200
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
3201
                '                    ElseIf sBranchType = "2" Then
3202
                '                        objInputs.AddPoint(dStart_x, dStart_y)
3203
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
3204
                '                    ElseIf sBranchType = "3" Then
3205
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
3206
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
3207
                '                    ElseIf sBranchType = "4" Then
3208
                '                        objInputs.AddPoint(dStart_x, dStart_y)
3209
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
3210
                '                    End If
3211
                '                Catch ex As Exception
3212
3213
                '                End Try
3214
                '            Else
3215
                '                objInputs.AddPoint(dStart_x, dStart_y)
3216
                '                objInputs.AddPoint(dEnd_x, dEnd_y)
3217
                '            End If
3218
                '            oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
3219
                '        End If
3220
                '    End If
3221
                'Catch ex As Exception
3222
                'End Try
3223
                'If sCheckModeling Then
3224
                '    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
3225
                '    Dim sSystemPath As String = GetPipeType(sType)
3226
                '    objItem = _Placement.PIDCreateItem(sSystemPath)
3227
                '    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
3228
                '    For i = 0 To oAddUid_List.Count - 1
3229
                '        Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
3230
                '        If oUpdateRow.Length = 1 Then
3231
                '            oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
3232
                '            oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
3233
                '        End If
3234
                '    Next
3235
3236
                '    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
3237
                '    oAddUid_List.Clear()
3238
3239
                '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
3240
                '    If oAttributeRow.Length > 0 Then
3241
                '        For Each oAttribute In oAttributeRow
3242
                '            Try
3243
                '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3244
                '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3245
                '                If sPIDValue.Contains("'") Then
3246
                '                    sPIDValue = sPIDValue.Replace("'", """")
3247
                '                End If
3248
                '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3249
                '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
3250
                '            Catch ex As Exception
3251
                '            End Try
3252
                '        Next
3253
                '        oPipeRun.Commit()
3254
                '    End If
3255
3256
                '    If pLMConnector IsNot Nothing Then
3257
                '        Dim sID_1 As String = pLMConnector.ModelItemID
3258
                '        Dim sID_2 As String = objConnector.ModelItemID
3259
                '        Dim objSurvivorItem As LMAItem = Nothing
3260
                '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
3261
                '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
3262
                '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
3263
                '        '     oDatasource.CommitTransaction()
3264
                '        '_Placement.PIDAutoJoin(oPipeRun1.AsLMAItem, AutoJoinEndConstants.autoJoin_End, objSurvivorItem)
3265
                '        'oPipeRun1.Commit()
3266
                '        'oDatasource.CommitTransaction()
3267
                '        'objSurvivorItem = Nothing
3268
                '        '_Placement.PIDAutoJoin(oPipeRun2.AsLMAItem, AutoJoinEndConstants.autoJoin_Start, objSurvivorItem)
3269
                '        'oPipeRun2.Commit()
3270
                '        'oDatasource.CommitTransaction()
3271
                '    End If
3272
                '    sCheckModeling = False
3273
                '  End If
3274
            Next
3275 bb2a0c79 Gyusu
        Catch ex As Exception
3276
        End Try
3277
    End Sub
3278 e4000111 Gyusu
3279 b08338e3 Gyusu
3280
    Private Sub SymbolModeling(ByVal CDrawing As Drawing, ByVal oLine_DT As DataTable, ByVal oSymbolRow As DataRow, ByVal oAttribute_Dt As DataTable,
3281
                               ByVal sLineNoText As String)
3282 bb2a0c79 Gyusu
        Try
3283 b08338e3 Gyusu
3284
            Dim sCheckModeling As String = oSymbolRow(_XML_SYMBOL_DRAWING_TF).ToString()
3285
            If sCheckModeling = "FALSE" Then
3286
                Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
3287
                Dim oSymbol As LMSymbol = Nothing
3288
                Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
3289
                Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
3290 bb2a0c79 Gyusu
                Dim oDatasource As Object = _Placement.PIDDataSource
3291
                Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
3292
                Dim dLocationX As Double = 0.0
3293
                Dim dLocationY As Double = 0.0
3294
                Dim dX As Double = 0.0
3295
                Dim dY As Double = 0.0
3296 b08338e3 Gyusu
                Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
3297
                ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
3298
                dX = dLocationX
3299
                dY = dLocationY
3300
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
3301
3302
                Dim dAngle As Double = oSymbolRow(_XML_SYMBOL_ANGLE)
3303
3304
3305
                'Dim oDatarow() As DataRow = oLine_DT.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sSymbolUid & "'")
3306
                'If oDatarow.Length = 0 Then
3307
                '    oDatarow = oLine_DT.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sSymbolUid & "'")
3308
                'End If
3309
                'Dim dFix_X As Double = 0.0
3310
                'Dim dFix_Y As Double = 0.0
3311
                'If oDatarow.Length > 0 Then
3312
                '    If dAngle <> 0 Then
3313
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
3314
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
3315
3316
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
3317
                '        dX = dLocationX
3318
                '    Else
3319
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
3320
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
3321
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
3322
                '        dY = dLocationY
3323
                '    End If
3324
3325
                'End If
3326
3327
3328
3329
                oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY,, dAngle)
3330
                SetListBoxItems(ListBox_Result, "Place Fitting.." & sSymbolUid & " (" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
3331
3332
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Fitting : " & sSymbolUid)
3333
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
3334
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oSymbolRow(_XML_SYMBOL_Conn1_Uid).ToString())
3335
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oSymbolRow(_XML_SYMBOL_Conn2_Uid).ToString())
3336
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection3 : " & oSymbolRow(_XML_SYMBOL_Conn3_Uid).ToString())
3337
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection4 : " & oSymbolRow(_XML_SYMBOL_Conn4_Uid).ToString())
3338
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
3339
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
3340
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Fitting Count : " & _iFittingcnt)
3341
3342
3343
                _iFittingcnt = _iFittingcnt + 1
3344
                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
3345
                Dim oAttributeRow() As DataRow
3346
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
3347
                If oAttribute_Dt.Rows.Count > 0 Then
3348
3349 bb2a0c79 Gyusu
                    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
3350 b08338e3 Gyusu
                        Dim oInstrument As LMInstrument
3351
                        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
3352 bb2a0c79 Gyusu
                        Try
3353
                            If oAttributeRow.Length > 0 Then
3354
                                For Each oAttribute In oAttributeRow
3355
                                    Try
3356
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3357
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3358
                                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3359
                                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
3360
                                    Catch ex As Exception
3361
                                    End Try
3362
                                Next
3363
                                oInstrument.Commit()
3364
                            End If
3365
                        Catch ex As Exception
3366
                        End Try
3367
                    Else
3368 b08338e3 Gyusu
                        Try
3369
                            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
3370
                                For Each oAttribute In oAttributeRow
3371
                                    Try
3372
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3373
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3374 e4000111 Gyusu
3375 b08338e3 Gyusu
                                        If sPIDAttribute = "SIZE" Then
3376
3377
                                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
3378
                                            If sPIDValue.Contains("x") Then
3379
                                                Dim sSplitSize() As String = sPIDValue.Split("x")
3380
                                                If sSplitSize.Count > 1 Then
3381
                                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
3382
                                                    Dim oConnector_1 As LMConnector = Nothing
3383
                                                    Dim oConnector_2 As LMConnector = Nothing
3384
                                                    If oSymbol IsNot Nothing Then
3385
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
3386
                                                            For Each Tconnector In oSymbol.Connect1Connectors
3387
                                                                If Tconnector.ItemStatus = "Active" Then
3388
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
3389
                                                                        oConnector_1 = Tconnector
3390
                                                                    End If
3391
                                                                End If
3392
                                                            Next
3393
                                                        End If
3394
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
3395
                                                            For Each Tconnector In oSymbol.Connect1Connectors
3396
                                                                If Tconnector.ItemStatus = "Active" Then
3397
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
3398
                                                                        oConnector_2 = Tconnector
3399
                                                                    End If
3400
                                                                End If
3401
                                                            Next
3402
                                                        End If
3403
                                                    End If
3404
                                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
3405
                                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
3406
                                                    If dAngle = 3.14 Then
3407
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
3408
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
3409
                                                    Else
3410
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
3411
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
3412
                                                    End If
3413 e4000111 Gyusu
3414
3415 b08338e3 Gyusu
                                                End If
3416 e4000111 Gyusu
3417 b08338e3 Gyusu
                                            Else
3418
                                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3419
                                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
3420
                                            End If
3421
                                        Else
3422
                                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3423
                                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
3424
                                        End If
3425 e4000111 Gyusu
3426 b08338e3 Gyusu
                                    Catch ex As Exception
3427
                                    End Try
3428
                                Next
3429
                                oSymbol.Commit()
3430
                            End If
3431
                        Catch ex As Exception
3432
                        End Try
3433
                    End If
3434
                End If
3435 e4000111 Gyusu
3436
3437
3438 b08338e3 Gyusu
            End If
3439 e4000111 Gyusu
3440
3441
3442 b08338e3 Gyusu
            'Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
3443
            'Dim sConnTypeNo As String = ""
3444
            '' Line과 연결되어있는 Symbol인지 확인
3445
            'Dim oLine_Dt As DataTable = GetPipeFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
3446
            ''Symbol과 연결되어 있는 Symbol인지 확인
3447
            'Dim oSymbol_Dt As DataTable = GetSymbolFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
3448
            'Dim oSymbol As LMSymbol = Nothing
3449
            'Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
3450
            'Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
3451
            'Dim oDatasource As Object = _Placement.PIDDataSource
3452
            'Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
3453 e4000111 Gyusu
3454 b08338e3 Gyusu
            'Dim dAngle As Double = 0.0
3455
            'If IsNumeric(oSymbolRow(_XML_SYMBOL_ANGLE).ToString()) Then
3456
            '    dAngle = Double.Parse(oSymbolRow(_XML_SYMBOL_ANGLE).ToString())
3457
            'End If
3458 e4000111 Gyusu
3459 b08338e3 Gyusu
            'Dim dLocationX As Double = 0.0
3460
            'Dim dLocationY As Double = 0.0
3461
            'Dim dX As Double = 0.0
3462
            'Dim dY As Double = 0.0
3463
            'Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
3464
            'ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
3465
            'dX = dLocationX
3466
            'dY = dLocationY
3467
            'ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
3468
            'Dim bCheckModeling As Boolean = False
3469
3470
            'If oLine_Dt.Rows.Count > 0 Then
3471
3472
            '    If sSPID <> "" Then
3473
            '        Dim dX1 As Double = 0
3474
            '        Dim dX2 As Double = 0
3475
            '        Dim dY1 As Double = 0
3476
            '        Dim dY2 As Double = 0
3477
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
3478
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3479
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3480
3481
            '        Dim dCalcPoint As Double = -1
3482
            '        Dim dModeling_X As Double = 0
3483
            '        Dim dModeling_Y As Double = 0
3484
            '        If dX1 <> 0 And dY1 <> 0 Then
3485
            '            dCalcPoint = Math.Abs(dX1 - dX) + Math.Abs(dY1 - dY)
3486
            '            dModeling_X = dX1
3487
            '            dModeling_Y = dY1
3488
            '        End If
3489
            '        If dX2 <> 0 And dY2 <> 0 Then
3490 e4000111 Gyusu
3491 b08338e3 Gyusu
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
3492
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
3493
            '                dModeling_X = dX2
3494
            '                dModeling_Y = dY2
3495
            '            End If
3496
            '        End If
3497 e4000111 Gyusu
3498
3499
3500 b08338e3 Gyusu
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
3501
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
3502
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
3503
            '            bCheckModeling = True
3504
            '        End If
3505 e4000111 Gyusu
3506
3507 b08338e3 Gyusu
            '    End If
3508
            'End If
3509
            'If oSymbol_Dt.Rows.Count > 0 Then
3510
            '    If sSPID <> "" Then
3511
            '        Dim dX1 As Double = 0
3512
            '        Dim dX2 As Double = 0
3513
            '        Dim dX3 As Double = 0
3514
            '        Dim dX4 As Double = 0
3515
            '        Dim dY1 As Double = 0
3516
            '        Dim dY2 As Double = 0
3517
            '        Dim dY3 As Double = 0
3518
            '        Dim dY4 As Double = 0
3519
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
3520
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3521
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3522
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 3, dX3, dY3)
3523
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 4, dX4, dY4)
3524
3525
            '        Dim dCalcPoint As Double = -1
3526
            '        Dim dModeling_X As Double = 0
3527
            '        Dim dModeling_Y As Double = 0
3528
            '        If dX1 <> 0 And dY1 <> 0 Then
3529
            '            dCalcPoint = Math.Abs(dX1 - dX) + Math.Abs(dY1 - dY)
3530
            '            dModeling_X = dX1
3531
            '            dModeling_Y = dY1
3532
            '        End If
3533
            '        If dX2 <> 0 And dY2 <> 0 Then
3534 41e4023e Gyusu
3535 b08338e3 Gyusu
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
3536
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
3537
            '                dModeling_X = dX2
3538
            '                dModeling_Y = dY2
3539
            '            End If
3540
            '        End If
3541
            '        If dX3 <> 0 And dY3 <> 0 Then
3542
            '            If (Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY) > dCalcPoint) Then
3543
            '                dCalcPoint = Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY)
3544
            '                dModeling_X = dX3
3545
            '                dModeling_Y = dY3
3546
            '            End If
3547
            '        End If
3548
            '        If dX4 <> 0 And dY4 <> 0 Then
3549
            '            If (Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY) > dCalcPoint) Then
3550
            '                dCalcPoint = Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY)
3551
            '                dModeling_X = dX4
3552
            '                dModeling_Y = dY4
3553
            '            End If
3554
            '        End If
3555
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
3556
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
3557
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
3558
            '            bCheckModeling = True
3559
            '        End If
3560 41e4023e Gyusu
3561 e4000111 Gyusu
3562 b08338e3 Gyusu
            '    End If
3563 e4000111 Gyusu
3564 b08338e3 Gyusu
            'End If
3565 e4000111 Gyusu
3566 b08338e3 Gyusu
            'If (oLine_Dt.Rows.Count = 0 And oSymbol_Dt.Rows.Count = 0) Or bCheckModeling = False Then
3567
            '    oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
3568
            '    SetListBoxItems(ListBox_Result, "Place Fittings..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
3569
            '    _iFittingcnt = _iFittingcnt + 1
3570
            'End If
3571
            'Dim oAttributeRow() As DataRow
3572
            'oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
3573
            'If oAttribute_Dt.Rows.Count > 0 Then
3574
3575
            '    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
3576
            '        Dim oInstrument As LMInstrument
3577
            '        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
3578
            '        Try
3579
            '            If oAttributeRow.Length > 0 Then
3580
            '                For Each oAttribute In oAttributeRow
3581
            '                    Try
3582
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3583
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3584
            '                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3585
            '                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
3586
            '                    Catch ex As Exception
3587
            '                    End Try
3588
            '                Next
3589
            '                oInstrument.Commit()
3590
            '            End If
3591
            '        Catch ex As Exception
3592
            '        End Try
3593
            '    Else
3594
            '        Try
3595
            '            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
3596
            '                For Each oAttribute In oAttributeRow
3597
            '                    Try
3598
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
3599
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
3600
3601
            '                        If sPIDAttribute = "SIZE" Then
3602
3603
            '                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
3604
            '                            If sPIDValue.Contains("x") Then
3605
            '                                Dim sSplitSize() As String = sPIDValue.Split("x")
3606
            '                                If sSplitSize.Count > 1 Then
3607
            '                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
3608
            '                                    Dim oConnector_1 As LMConnector = Nothing
3609
            '                                    Dim oConnector_2 As LMConnector = Nothing
3610
            '                                    If oSymbol IsNot Nothing Then
3611
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
3612
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
3613
            '                                                If Tconnector.ItemStatus = "Active" Then
3614
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
3615
            '                                                        oConnector_1 = Tconnector
3616
            '                                                    End If
3617
            '                                                End If
3618
            '                                            Next
3619
            '                                        End If
3620
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
3621
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
3622
            '                                                If Tconnector.ItemStatus = "Active" Then
3623
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
3624
            '                                                        oConnector_2 = Tconnector
3625
            '                                                    End If
3626
            '                                                End If
3627
            '                                            Next
3628
            '                                        End If
3629
            '                                    End If
3630
            '                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
3631
            '                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
3632
            '                                    If dAngle = 3.14 Then
3633
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
3634
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
3635
            '                                    Else
3636
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
3637
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
3638
            '                                    End If
3639
3640
3641
            '                                End If
3642
3643
            '                            Else
3644
            '                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3645
            '                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
3646
            '                            End If
3647
            '                        Else
3648
            '                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
3649
            '                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
3650
            '                        End If
3651
3652
            '                    Catch ex As Exception
3653
            '                    End Try
3654
            '                Next
3655
            '                oSymbol.Commit()
3656
            '            End If
3657
            '        Catch ex As Exception
3658
            '        End Try
3659
            '    End If
3660
            'End If
3661
        Catch ex As Exception
3662
        End Try
3663
    End Sub
3664 e4000111 Gyusu
3665
    Private Function AutoModeling() As Boolean
3666
        Try
3667 e38f99a7 Gyusu
            '_AllLine_DT = Line_Dt()
3668
            '_AllSymbol_DT = Symbol_Dt()
3669 79326880 Gyusu
            _ModelingLine_Dt = Line_Dt()
3670 e38f99a7 Gyusu
            _ModelingSymbol_Dt = Symbol_Dt()
3671 e4000111 Gyusu
            _CompleteConvert = False
3672
            Label_Progress.Text = "0%"
3673
            SetListBoxItems(ListBox_Result, " Auto converting 시작....")
3674 b08338e3 Gyusu
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 시작....")
3675 e4000111 Gyusu
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
3676 b08338e3 Gyusu
            _Log_File = "AutoConverting_" + DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("HHmmss")
3677 e4000111 Gyusu
            _allItem = GetAllCheckNodeCount()
3678 76f465d0 Gyusu
            _Itemcnt = 0
3679 e4000111 Gyusu
            '1.Equipment
3680
            '2.Piping OPC
3681
            '3.OPC 시작되는 Line
3682 e6ef24be gaqhf
3683 7e561f5b gaqhf
            'InitAutoRouting()
3684
            'EquipmentModeling(oDwg_Dt)
3685
            'PipingModeling()
3686
3687 1406fef4 gaqhf
            '' 1. Primary Line만 먼저 그림
3688 94c7557d gaqhf
            'PrimaryPipeModeling()
3689 1406fef4 gaqhf
            '' 2. Draw Symbols Prinmary에 붙는 Symbol만 / Reducer 제외
3690 94c7557d gaqhf
            'PrimarySymbolModeling()
3691 1406fef4 gaqhf
3692 94c7557d gaqhf
            ''
3693
            Dim auto As AutoModeling = New AutoModeling(_DrawingsList(0), ListBox_Result)
3694
            auto.StartModeling()
3695 1406fef4 gaqhf
3696
3697
3698 bb2a0c79 Gyusu
3699
            '   PipeLine_Fitting_Modeling()
3700 e4000111 Gyusu
3701 171ac39d Gyusu
            SetProgressbar(ProgressBar_Status, 100)
3702 41e4023e Gyusu
            Label_Progress.Text = "100%"
3703 171ac39d Gyusu
            SetListBoxItems(ListBox_Result, " Auto converting 완료")
3704 b08338e3 Gyusu
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 완료")
3705 54b98e09 Gyusu
            _CompleteConvert = True
3706 171ac39d Gyusu
            Return True
3707
        Catch ex As Exception
3708
            Return False
3709
        End Try
3710
    End Function
3711
3712 54b98e09 Gyusu
    Private Sub ThreadConvert()
3713 559daf6d Gyusu
        If _DrawingsList IsNot Nothing Then
3714
            If _DrawingsList.Count > 0 Then
3715 b82166d4 Gyusu
                'TestBranchLine()
3716 559daf6d Gyusu
                AutoModeling()
3717
            End If
3718 171ac39d Gyusu
        End If
3719 e282643f Gyusu
    End Sub
3720
3721 54b98e09 Gyusu
    Private Sub ThreadOPCRemove()
3722
        While _CompleteConvert = False
3723
            Dim oFindOPC As New FindOpc
3724
            oFindOPC.RemoveOPCDlg()
3725
        End While
3726 e282643f Gyusu
3727 54b98e09 Gyusu
    End Sub
3728 171ac39d Gyusu
3729 e282643f Gyusu
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
3730
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
3731
        Dim oPath As String = ""
3732
        If oRows.Length > 0 Then
3733
            oPath = oRows(0).Item("Path").ToString()
3734
        End If
3735
        Return oPath
3736
    End Function
3737
3738 272662f9 Gyusu
    Private Sub LoadXmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadXmlToolStripMenuItem.Click
3739 3b7a4470 Gyusu
3740 171ac39d Gyusu
        If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then
3741 54b98e09 Gyusu
            LoadDB()
3742 171ac39d Gyusu
            LoadXmlItem(FolderBrowserDialog1.SelectedPath)
3743
        End If
3744
    End Sub
3745
    Private Sub LoadXmlItem(ByVal sFolderPath As String)
3746
        _DrawingsList = New List(Of Drawing)
3747
        Dim sfileEntries As String() = Directory.GetFiles(sFolderPath)
3748
        If Tree_Result.Nodes.Count > 0 Then
3749
            Tree_Result.Nodes(0).Nodes.Clear()
3750
            For Each sfileName In sfileEntries
3751
                Dim sExtension As String = Path.GetExtension(sfileName)
3752
                If sExtension = ".xml" Then
3753
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(sfileName)
3754
                    Dim sDwgPath As String = sfileName
3755
                    Dim oNode As TreeNode = Tree_Result.Nodes(0).Nodes.Add(sDwgPath, sDwgName, 15)
3756
                    Dim oDwg As Drawing = AddSymbolItem(sDwgPath, oNode)
3757 bb2a0c79 Gyusu
3758 171ac39d Gyusu
                    _DrawingsList.Add(oDwg)
3759
                End If
3760
            Next
3761
            Tree_Result.Nodes(0).Expand()
3762
        End If
3763
    End Sub
3764 272662f9 Gyusu
3765 e4000111 Gyusu
    Private Sub GenerateRelation(ByRef oDwg_Ds As Drawing)
3766
        Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
3767
        Dim oEqpLists As List(Of Eqp_no) = oDwg_Ds.Eqp_nos
3768
        Dim oTrimLineLists As List(Of Line_no) = oDwg_Ds.TrimLine_nos
3769
        Dim oRelation As New GenerateRelation()
3770
        For Each oLinelist In oLineLists
3771 bb2a0c79 Gyusu
            oRelation.CalcLineConnectionItem_Equal(oLinelist.Dt_Line, oLineLists)
3772
            oRelation.CalcLineConnectionItem_NonEqual(oLinelist.Dt_Line, oLineLists)
3773
            oRelation.CalcSymbolConnectionItem_Equal(oLinelist.Dt_Symbol, oLineLists)
3774
            oRelation.CalcSymbolConnectionItem_NonEqual(oLinelist.Dt_Symbol, oLineLists)
3775 e4000111 Gyusu
        Next
3776
    End Sub
3777
3778 e6ef24be gaqhf
    Private Sub SetSymbol_LineNumberByUID(ByVal symbols As List(Of Symbol), ByVal lineNumber As LineNumber, ByVal uid As String)
3779
        For Each symbol As Symbol In symbols
3780
            If symbol.UID = uid Then
3781
                symbol.LINENUMBER = lineNumber
3782
                Exit For
3783
            End If
3784
        Next
3785
    End Sub
3786
3787
    Private Sub SetLine_LineNumberByUID(ByVal lines As List(Of Line), ByVal lineNumber As LineNumber, ByVal uid As String)
3788
        For Each line As Line In lines
3789
            If line.UID = uid Then
3790
                line.LINENUMBER = lineNumber
3791
                Exit For
3792
            End If
3793
        Next
3794
    End Sub
3795 e4000111 Gyusu
3796 20c84e05 Gyusu
    ''' <summary>
3797
    '''  XML Tree 구조 생성 
3798
    ''' </summary>
3799
    ''' <param name="sDwgPath"></param>
3800 171ac39d Gyusu
    Private Function AddSymbolItem(ByVal sDwgPath As String, ByVal oParentNode As TreeNode) As Drawing
3801
        Dim oDwg_Ds As Drawing = LoadSymbolInXml(sDwgPath)
3802 e4000111 Gyusu
3803 54b98e09 Gyusu
        If oDwg_Ds IsNot Nothing Then
3804
3805 e6ef24be gaqhf
            Dim oLineNos As List(Of LineNumber) = oDwg_Ds.LINENUMBERS
3806 3acffcee Gyusu
3807 e6ef24be gaqhf
            Dim oTrimLines As List(Of LineNumber) = oDwg_Ds.TRIMLINES
3808 3acffcee Gyusu
3809 e6ef24be gaqhf
            Dim oSymbols As List(Of Symbol) = oDwg_Ds.SYMBOLS
3810 54b98e09 Gyusu
3811 e6ef24be gaqhf
            Dim oLines As List(Of Line) = oDwg_Ds.LINES
3812 9c86a823 Gyusu
3813 e6ef24be gaqhf
            '' TreeView 구성 및 하위 아이템 상위 구성
3814
            ' LIne Number
3815
            For Each lineNo As LineNumber In oLineNos
3816 94c7557d gaqhf
                Dim node As TreeNode = New TreeNode(lineNo.TEXT)
3817 7e561f5b gaqhf
                node.Name = lineNo.UID
3818
                node.Tag = lineNo
3819
3820
                oParentNode.Nodes.Add(node)
3821 9c86a823 Gyusu
3822 e6ef24be gaqhf
                For Each uid In lineNo.SYMBOLRUNITEMS
3823
                    SetSymbol_LineNumberByUID(oSymbols, lineNo, uid)
3824 54b98e09 Gyusu
                Next
3825 9c86a823 Gyusu
3826 e6ef24be gaqhf
                For Each uid In lineNo.LINERUNITEMS
3827
                    SetLine_LineNumberByUID(oLines, lineNo, uid)
3828 54b98e09 Gyusu
                Next
3829
            Next
3830 3acffcee Gyusu
3831 e6ef24be gaqhf
            ' Trim Line
3832
            For index = 0 To oTrimLines.Count - 1
3833
                Dim trimLine As LineNumber = oTrimLines(index)
3834 7e561f5b gaqhf
3835
                Dim node As TreeNode = New TreeNode("TrimLine" + index.ToString)
3836
                node.Name = trimLine.UID
3837
                node.Tag = trimLine
3838
3839
                oParentNode.Nodes.Add(node)
3840 d039e347 Gyusu
3841 e6ef24be gaqhf
                For Each uid In trimLine.SYMBOLRUNITEMS
3842
                    SetSymbol_LineNumberByUID(oSymbols, trimLine, uid)
3843
                Next
3844 54b98e09 Gyusu
3845 e6ef24be gaqhf
                For Each uid In trimLine.LINERUNITEMS
3846
                    SetLine_LineNumberByUID(oLines, trimLine, uid)
3847 54b98e09 Gyusu
                Next
3848 171ac39d Gyusu
            Next
3849 e6ef24be gaqhf
            ' symbol
3850
            For Each symbol As Symbol In oSymbols
3851 7e561f5b gaqhf
3852 94c7557d gaqhf
                Dim node As TreeNode = New TreeNode(symbol.PARENT)
3853 7e561f5b gaqhf
                node.Name = symbol.UID
3854
                node.Tag = symbol
3855
3856 94c7557d gaqhf
                If symbol.SPPIDMAPPINGNAME = "" Then
3857
                    node.ForeColor = Color.Red
3858
                End If
3859
3860 e6ef24be gaqhf
                If symbol.LINENUMBER IsNot Nothing Then
3861
                    Dim nodeIndex As Integer = oParentNode.Nodes.IndexOfKey(symbol.LINENUMBER.UID)
3862 7e561f5b gaqhf
                    oParentNode.Nodes.Item(nodeIndex).Nodes.Add(node)
3863 e6ef24be gaqhf
                Else
3864 7e561f5b gaqhf
                    oParentNode.Nodes.Add(node)
3865 e6ef24be gaqhf
                End If
3866
            Next
3867
            ' line
3868
            For Each line As Line In oLines
3869 7e561f5b gaqhf
3870
                Dim node As TreeNode = New TreeNode(line.TYPE)
3871
                node.Name = line.UID
3872
                node.Tag = line
3873
3874 e6ef24be gaqhf
                If line.LINENUMBER IsNot Nothing Then
3875
                    Dim nodeIndex As Integer = oParentNode.Nodes.IndexOfKey(line.LINENUMBER.UID)
3876 7e561f5b gaqhf
                    oParentNode.Nodes.Item(nodeIndex).Nodes.Add(node)
3877 e6ef24be gaqhf
                Else
3878 7e561f5b gaqhf
                    oParentNode.Nodes.Add(node)
3879 e6ef24be gaqhf
                End If
3880 94c7557d gaqhf
3881
                For index = 0 To 1
3882
                    If line.CONNECTORS(index).CONNECTEDITEM = line.UID Then
3883
                        Console.WriteLine("")
3884
                    End If
3885
                Next
3886 3acffcee Gyusu
            Next
3887
3888 54b98e09 Gyusu
        End If
3889
3890 171ac39d Gyusu
        Return oDwg_Ds
3891
    End Function
3892 272662f9 Gyusu
    Private Sub Tree_Result_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterCheck
3893
        If e.Node.Checked = True Then
3894
            For Each oNode As TreeNode In e.Node.Nodes
3895
                oNode.Checked = True
3896
            Next
3897
        Else
3898
            For Each oNode As TreeNode In e.Node.Nodes
3899
                oNode.Checked = False
3900
            Next
3901
        End If
3902
    End Sub
3903 171ac39d Gyusu
3904 559daf6d Gyusu
    Private Sub Btn_Setting_Click(sender As Object, e As EventArgs) Handles Btn_Setting.Click
3905
        Dim oSettings As Settings = New Settings()
3906
        oSettings.ShowDialog()
3907
    End Sub
3908 42c0013c Gyusu
3909 b82166d4 Gyusu
3910
    Private Sub TestBranchLine()
3911
        Dim objPlacement As Placement
3912
        objPlacement = New Placement
3913
        Dim PipeRunLocation As String
3914
        Dim objItem As LMAItem
3915
        Dim objConnector As LMConnector
3916
        Dim objInputs As PlaceRunInputs
3917
        Dim objSymbol As LMSymbol
3918
        Dim ValveLocation As String
3919
        PipeRunLocation = "\Piping\Routing\Process Lines\Primary Piping.sym"
3920
        objInputs = New PlaceRunInputs
3921
        objInputs.AddPoint(0.1, 0.1)
3922
        objInputs.AddPoint(0.2, 0.1)
3923
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
3924
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
3925
        ValveLocation = "\Piping\Valves\2 Way Common\Ball Valve.sym"
3926
        objSymbol = objPlacement.PIDPlaceSymbol(ValveLocation, 0.15, 0.3, , 1.57)
3927
        objInputs = New PlaceRunInputs
3928
        objInputs.AddConnectorTarget(objConnector, 0.15, 0.1)
3929
        '   objInputs.AddConnectorTarget(objConnector, 0.12, 0.1)
3930
        objInputs.AddPoint(0.15, 0.15)
3931
        objInputs.AddPoint(0.12, 0.15)
3932
        objInputs.AddPoint(0.12, 0.2)
3933
        objInputs.AddPoint(0.15, 0.2)
3934
        objInputs.AddSymbolTarget(objSymbol, 0.15, 0.3)
3935
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
3936
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
3937
3938
        objInputs = New PlaceRunInputs
3939
        objInputs.AddConnectorTarget(objConnector, 0.17, 0.1)
3940
        objInputs.AddPoint(0.17, 0.15)
3941
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
3942
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
3943
3944
        objInputs = New PlaceRunInputs
3945
        objInputs.AddConnectorTarget(objConnector, 0.19, 0.1)
3946
        objInputs.AddPoint(0.19, 0.15)
3947
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
3948
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
3949
3950
        objInputs = New PlaceRunInputs
3951
        objInputs.AddConnectorTarget(objConnector, 0.12, 0.1)
3952
        objInputs.AddPoint(0.12, 0.15)
3953
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
3954
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
3955
    End Sub
3956
3957 42c0013c Gyusu
    Private Sub Btn_TestNozzle_Click(sender As Object, e As EventArgs) Handles Btn_TestNozzle.Click
3958
3959
        Dim sVessel_ID As String = "841D5E640AE5421B9A017DDC2E87FF11"
3960
        Dim objVessel As LMVessel
3961
        objVessel = _Placement.PIDDataSource.GetVessel(sVessel_ID)
3962
        Dim oVesselLocation As LMLocations = objVessel.Locations
3963
        Dim symVessel As LMSymbol = _Placement.PIDDataSource.GetSymbol(objVessel.Representations.Nth(1).Id)
3964
        Dim XCoordinate As String = symVessel.Attributes("XCoordinate").Value
3965
        Dim YCoordinate As String = symVessel.Attributes("YCoordinate").Value
3966
        symVessel.Attributes("XCoordinate").Value = XCoordinate + 0.01
3967
        symVessel.Attributes("YCoordinate").Value = YCoordinate + 0.01
3968
        symVessel.Commit()
3969
        Dim sValve_ID As String = "DB7B0CA8A2664A6BA7A9615764BA62B0"
3970
        Dim objValve As LMSymbol
3971
        Dim objValves As LMPipingComp = _Placement.PIDDataSource.GetPipingComp(sValve_ID)
3972
        objValve = _Placement.PIDDataSource.GetSymbol(objValves.Representations.Nth(1).Id)
3973
        objValve.Commit()
3974
        Dim dVesselX As Double = XCoordinate
3975
        Dim dVesselY As Double = YCoordinate
3976
        Dim X1 As Double, Y1 As Double, X2 As Double, Y2 As Double
3977
3978
        _Placement.PIDConnectPointLocation(objValve, 1, X1, Y1)
3979
3980
        _Placement.PIDConnectPointLocation(objValve, 2, X2, Y2)
3981
3982
        Dim nozzlename As String = "\Equipment Components\Nozzles\Flanged Nozzle.sym"
3983
        Dim dCalc_x As Double = 0
3984
        Dim dCalc_y As Double = 0
3985
3986
        If dVesselX - X2 > 0 Then
3987
            dCalc_x = dVesselX - (dVesselX - X2)
3988
        Else
3989
            dCalc_x = dVesselX + (X2 - dVesselX)
3990
        End If
3991
        If dVesselY - Y2 > 0 Then
3992
            dCalc_y = dVesselY - (dVesselY - Y2)
3993
        Else
3994
            dCalc_y = dVesselY + (Y2 - dVesselY)
3995
        End If
3996
3997
        Dim objNozzle As LMSymbol = _Placement.PIDPlaceSymbol(nozzlename, dCalc_x, dCalc_y,
3998
            TargetItem:=symVessel.AsLMRepresentation)
3999
4000
        Dim blnSuccess As Boolean = _Placement.PIDConnectPointLocation(objNozzle, 1, X1, Y1)
4001
        blnSuccess = _Placement.PIDConnectPointLocation(objNozzle, 2, X1, Y1)
4002
4003
        objValve = _Placement.PIDPlaceSymbol(objValve.FileName, X1, Y1, ExistingItem:=objValve.AsLMAItem,
4004
          TargetItem:=objNozzle.AsLMRepresentation)
4005
4006
4007
4008
    End Sub
4009 39d43554 Gyusu
4010
    Private Sub Btn_SymbolLibrary_Click(sender As Object, e As EventArgs) Handles Btn_SymbolLibrary.Click
4011
        Dim oMapping As New Mapping(_PIDSymbol_DB)
4012
        oMapping.Show()
4013
    End Sub
4014 41e4023e Gyusu
4015
    Private Sub Btn_Stop_Click(sender As Object, e As EventArgs) Handles Btn_Stop.Click
4016
        Try
4017
            SetListBoxItems(ListBox_Result, " Auto converting 중지....")
4018 b08338e3 Gyusu
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 중지....")
4019 41e4023e Gyusu
            _Main_trd.Abort()
4020
            _Opc_trd.Abort()
4021
        Catch ex As Exception
4022
4023
        End Try
4024
    End Sub
4025 b08338e3 Gyusu
4026
    Private Sub AutoCheckTreeNode(ByVal iType As Integer, ByVal bCheck As Boolean)
4027
4028
        For Each oDrwing As TreeNode In Tree_Result.Nodes
4029
            For Each oDwgNode As TreeNode In oDrwing.Nodes
4030
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
4031
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
4032
                If CDrawing IsNot Nothing Then
4033
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
4034
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
4035
                    For Each oNode As TreeNode In oDwgNode.Nodes
4036
                        Dim iItemcnt As Integer = 0
4037
                        Dim sNodeUid As String = oNode.Name
4038
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
4039
4040
                        If iType = 0 Then 'Symbol
4041
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
4042
                            If CLineNo IsNot Nothing Then
4043
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
4044
                                For Each oSymbolRow In oSymbol_Dt.Rows
4045
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
4046
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
4047
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
4048
                                        If sSymbolNodeUid = sSymbolUid Then
4049
                                            oSymbolNode.Checked = bCheck
4050
                                            Exit For
4051
                                        End If
4052
                                    Next
4053
                                Next
4054
                            End If
4055
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
4056
                            If TrimLineNo IsNot Nothing Then
4057
                                Dim oSymbol_Dt As DataTable = TrimLineNo.Dt_Symbol
4058
                                For Each oSymbolRow In oSymbol_Dt.Rows
4059
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
4060
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
4061
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
4062
                                        If sSymbolNodeUid = sSymbolUid Then
4063
                                            oSymbolNode.Checked = bCheck
4064
                                            Exit For
4065
                                        End If
4066
                                    Next
4067
                                Next
4068
                            End If
4069
                        End If
4070
                        If iType = 1 Then 'Line
4071
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
4072
                            If CLineNo IsNot Nothing Then
4073
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
4074
                                For Each oLineRow In oLine_Dt.Rows
4075
                                    Dim sLineUid As String = oLineRow(_XML_LINE_UID).ToString()
4076
                                    For Each oLineNode As TreeNode In oNode.Nodes
4077
                                        Dim sLineNodeUid As String = oLineNode.Name
4078
                                        If sLineNodeUid = sLineUid Then
4079
                                            oLineNode.Checked = bCheck
4080
                                            Exit For
4081
                                        End If
4082
                                    Next
4083
                                Next
4084
                            End If
4085
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
4086
                            If TrimLineNo IsNot Nothing Then
4087
                                Dim oLine_Dt As DataTable = TrimLineNo.Dt_Line
4088
                                For Each oLineRow In oLine_Dt.Rows
4089
                                    Dim sLineUid As String = oLineRow(_XML_SYMBOL_UID).ToString()
4090
                                    For Each oLineNode As TreeNode In oNode.Nodes
4091
                                        Dim sLineNodeUid As String = oLineNode.Name
4092
                                        If sLineNodeUid = sLineUid Then
4093
                                            oLineNode.Checked = bCheck
4094
                                            Exit For
4095
                                        End If
4096
                                    Next
4097
                                Next
4098
                            End If
4099
                        End If
4100
                        If iType = 2 Then 'Equipment
4101
                            Dim CEqpNo As Eqp_no = GetEqpNo(CDrawing, sNodeUid)
4102
                            If CEqpNo IsNot Nothing Then
4103
                                Dim oEqp_Dt As DataTable = CEqpNo.Dt_Equipment
4104
                                For Each oEqpRow In oEqp_Dt.Rows
4105
                                    Dim sEqpUid As String = oEqpRow(_XML_LINE_UID).ToString()
4106
                                    For Each oEqpNode As TreeNode In oNode.Nodes
4107
                                        Dim sEqpNodeUid As String = oEqpNode.Name
4108
                                        If sEqpNodeUid = sEqpUid Then
4109
                                            oEqpNode.Checked = bCheck
4110
                                            Exit For
4111
                                        End If
4112
                                    Next
4113
                                Next
4114
                            End If
4115
                        End If
4116
                    Next
4117
                End If
4118
            Next
4119
        Next
4120
4121
4122
    End Sub
4123
4124
4125
4126
    Private Sub Chk_Symbol_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Symbol.CheckedChanged
4127
        AutoCheckTreeNode(0, Chk_Symbol.Checked)
4128
    End Sub
4129
4130
    Private Sub Chk_Line_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Line.CheckedChanged
4131
        AutoCheckTreeNode(1, Chk_Line.Checked)
4132
    End Sub
4133
4134
    Private Sub Chk_Equipment_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Equipment.CheckedChanged
4135
        AutoCheckTreeNode(2, Chk_Equipment.Checked)
4136
    End Sub
4137 e282643f Gyusu
End Class
4138
4139
4140
Public Class DrawingInfo
4141
    Public mDrawingName As String
4142
    Public mSpID As String
4143
    Public mPath As String
4144 94c7557d gaqhf
End Class
클립보드 이미지 추가 (최대 크기: 500 MB)