프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ d7ddc5c0

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

1
Imports System.IO
2
Imports System.Data.SqlClient
3
Imports System.Data.SQLite
4
Imports Plaice
5
Imports Llama
6
Imports ComUtil.MessageLog.CEventLog
7

    
8
Imports System.Threading
9

    
10
Public Class Main
11

    
12
    'Dim _Mapping_DB As DataTable = New DataTable()
13
    Dim _Mapping_DB As DataSet = New DataSet()
14
    Dim _Attribute_DB As DataTable = New DataTable()
15
    Dim _PIDSymbol_DB As DataTable = New DataTable()
16
    Dim _ResultModeling_DT As DataTable = New DataTable()
17

    
18
    Dim _AllLine_DT As New DataTable()
19
    Dim _AllSymbol_DT As New DataTable()
20

    
21
    Dim _ModelingLine_Dt As New DataTable()
22
    Dim _ModelingSymbol_Dt As New DataTable()
23
    Dim _Placement As New Placement
24
    Dim _DWG_X = 0.875 '0.695 '1 '
25
    Dim _DWG_Y = 0.617 '0.585 '0.8 '
26
    'Dim _DWG_X = 0.842 '0.695 '1 '
27
    'Dim _DWG_Y = 0.614 '0.585 '0.8 '
28
    Dim _IMG_X = 0
29
    Dim _IMG_Y = 0
30

    
31
    Dim _Unit As String
32

    
33
    'Drawing 전역변수
34
    Dim _objPIDADrawing As Object
35
    '현재선택한 폴더경로
36
    Dim _selectFolderPath As String
37

    
38
    Private _Main_trd As Thread
39
    Private _Opc_trd As Thread
40

    
41
    Private _CompleteConvert As Boolean = False
42

    
43
    Private _DrawingsList As List(Of Drawing)
44

    
45

    
46
    Private _iPipeLineNocnt As Integer
47
    Private _iPipecnt As Integer
48
    Private _iFittingcnt As Integer
49
    Private _iValvecnt As Integer
50
    Private _iInstrumentcnt As Integer
51
    Private _iEquipmentcnt As Integer
52
    Private _iNozzlecnt As Integer
53
    Private _iPipintOpccnt As Integer
54

    
55
    Private _allItem As Integer
56
    Private _Itemcnt As Integer
57

    
58
    Dim _Gembox As New CGembox()
59
    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
60
        LoadDB()
61
    End Sub
62

    
63
    Private Sub LoadDB()
64
        If My.Settings.DBPath <> "" And My.Settings.Plant_Hierarchy <> "" Then
65
            Dim sDBPath As String = My.Settings.DBPath
66

    
67
            _Gembox.isLoadFile(My.Settings.SymbolLibrary)
68
            _Mapping_DB = _Gembox.LoadFileFunc()
69
            _Attribute_DB = Load_DB(sDBPath, _DB_TABLE_ATTRIBUTE)
70
            _PIDSymbol_DB = Load_DB(sDBPath, _DB_TABLE_SYMBOLNAME)
71
            _ResultModeling_DT = ModelingResult_Dt()
72
        Else
73
            MessageBox.Show("설정값을 먼저 확인해주세요")
74
        End If
75
    End Sub
76

    
77

    
78
    Private Function GetDataFromMappingDB(ByVal sSymbolName As String, ByVal sColumn As String) As String
79
        Dim sValue As String = ""
80
        For Each oDt As DataTable In _Mapping_DB.Tables
81
            If oDt.Rows.Count > 0 Then
82
                Dim oSelectRow() As DataRow = oDt.Select("[img_symbolname] = '" + sSymbolName + "'")
83
                If oSelectRow.Length = 1 Then
84
                    If sColumn = _DB_COLUMN_MAPPING_SPPID_SYMBOLNAME Then
85
                        sValue = oSelectRow(0).Item("SYM FILE NAME").ToString()
86
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH Then
87
                        sValue = "\" & oSelectRow(0).Item("SYMBOL PATH").ToString() & "\" & oSelectRow(0).Item("SYM FILE NAME").ToString()
88
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_COMPTPYE Then
89
                        sValue = oSelectRow(0).Item("ITEM TYPE").ToString()
90
                    ElseIf sColumn = _DB_COLUMN_MAPPING_SPPID_CLASS Then
91
                        sValue = oSelectRow(0).Item("CLASS").ToString()
92
                    Else
93
                        sValue = oSelectRow(0).Item("SYMBOL PATH").ToString() & "\" & oSelectRow(0).Item("SYM FILE NAME").ToString()
94
                    End If
95
                End If
96
            End If
97
        Next
98
        Return sValue
99
    End Function
100

    
101
    Private Function GetAttributeMapping(ByVal sAttributeName As String, ByVal sColumn As String) As String
102
        Dim sSPPIDAttribute As String = ""
103
        If _Attribute_DB.Rows.Count > 0 Then
104
            Dim oSelectRow() As DataRow = _Attribute_DB.Select("[pid_attribute] = '" + sAttributeName + "'")
105
            If oSelectRow.Length = 1 Then
106
                sSPPIDAttribute = oSelectRow(0).Item(sColumn).ToString()
107
            End If
108
        End If
109
        Return sSPPIDAttribute
110
    End Function
111

    
112

    
113

    
114
    Private Function LoadSymbolInXml(ByVal sXmlPath As String) As Drawing
115
        Try
116
            ''  _TempSymbolDt = Symbol_Dt()
117
            Dim CDrawing As Drawing = New Drawing()
118
            Dim oDt As DataTable = LoadSymbol_DT()
119
            Dim oElement As XElement = XElement.Load(sXmlPath)
120

    
121
            If oElement IsNot Nothing Then
122
                CDrawing.DwgName = oElement.Element(_XML_DWGNAME).Value
123
                CDrawing.Size = oElement.Element(_XML_DWGSIZE).Value
124
                SplitLocation(CDrawing.Size, _IMG_X, _IMG_Y)
125
                CDrawing.Unit = oElement.Element(_XML_UNIT).Value
126

    
127
                Dim oLineno_list As New List(Of Line_no)
128
                Dim oEqp_list As New List(Of Eqp_no)
129
                Dim oTrim_Lineno_list As New List(Of Line_no)
130
                oLineno_list = LoadLineNo(oElement, _XML_CATEGORY_LINENO)
131
                For Each oEqpNo As Object In oElement.Elements(_XML_CATEGORY_EQUIPMENT)
132
                    Dim CEqp_no As Eqp_no = New Eqp_no()
133
                    Dim oSymbol_Dt As DataTable = Symbol_Dt()
134
                    Dim oAttribute_Dt As DataTable = Attribute_Dt()
135
                    Dim sUid As String = ""
136
                    For Each oSymbol As Object In oEqpNo.Elements(_XML_CATEGORY_SYMBOL)
137
                        Try
138

    
139
                            Dim oAddrow As DataRow = oSymbol_Dt.NewRow()
140
                            Dim oEleObj As XElement
141
                            Dim sName As String
142
                            Dim sLocation As String
143
                            Dim sSize As String
144
                            Dim sAngle As String
145
                            Dim sOriginalPoint As String = ""
146
                            Dim sConnectionPoint As String = ""
147
                            Dim sConnectionUids As String = ""
148
                            Dim sConnArray As String()
149
                            Dim sSizeArray As String()
150
                            Dim sLocationArray As String()
151
                            Dim sChild As String = ""
152
                            Dim dCenterPos_x As Double = 0.0
153
                            Dim dCenterPos_y As Double = 0.0
154
                            Dim dDwgCenterPos_x As Double = 0.0
155
                            Dim dDwgCenterPos_y As Double = 0.0
156

    
157
                            Dim dConn1Pos_x As Double = 0.0
158
                            Dim dConn1Pos_y As Double = 0.0
159
                            Dim dConn2Pos_x As Double = 0.0
160
                            Dim dConn2Pos_y As Double = 0.0
161
                            Dim dConn3Pos_x As Double = 0.0
162
                            Dim dConn3Pos_y As Double = 0.0
163
                            Dim dConn4Pos_x As Double = 0.0
164
                            Dim dConn4Pos_y As Double = 0.0
165

    
166
                            Dim dDwg_Conn1Pos_x As Double = 0.0
167
                            Dim dDwg_Conn1Pos_y As Double = 0.0
168
                            Dim dDwg_Conn2Pos_x As Double = 0.0
169
                            Dim dDwg_Conn2Pos_y As Double = 0.0
170
                            Dim dDwg_Conn3Pos_x As Double = 0.0
171
                            Dim dDwg_Conn3Pos_y As Double = 0.0
172
                            Dim dDwg_Conn4Pos_x As Double = 0.0
173
                            Dim dDwg_Conn4Pos_y As Double = 0.0
174

    
175
                            oEleObj = oSymbol.Element(_XML_SYMBOL_UID)
176
                            sUid = oEleObj.Value
177
                            oEleObj = oSymbol.Element(_XML_SYMBOL_PARENT)
178
                            sName = oEleObj.Value
179
                            oEleObj = oSymbol.Element(_XML_SYMBOL_LOCATION)
180
                            sLocation = oEleObj.Value
181
                            oEleObj = oSymbol.Element(_XML_SYMBOL_SIZE)
182
                            sSize = oEleObj.Value
183
                            oEleObj = oSymbol.Element(_XML_SYMBOL_ANGLE)
184
                            sAngle = oEleObj.Value
185
                            oEleObj = oSymbol.Element(_XML_SYMBOL_CONNECTIONPOINT)
186
                            sConnectionPoint = oEleObj.Value
187
                            oEleObj = oSymbol.Element(_XML_SYMBOL_CHILD)
188
                            sChild = oEleObj.Value
189
                            Try
190
                                oEleObj = oSymbol.Element(_XML_SYMBOL_ORIGINALPOINT)
191
                                sOriginalPoint = oEleObj.Value
192
                            Catch ex As Exception
193

    
194
                            End Try
195
                            'oEleObj = oSymbol.Element(_XML_LINE_CONNS)
196
                            'sConnectionUids = oEleObj.Value
197
                            'sConnArray = sConnectionUids.Split(",")
198
                            'If sConnArray.Length > 4 Then
199
                            '    MessageBox.Show(sConnArray.Length)
200
                            'End If
201
                            'For i = 0 To sConnArray.Length - 1
202
                            '    If i = 0 Then
203
                            '        oAddrow(_XML_SYMBOL_Conn1_Uid) = sConnArray(i)
204
                            '    ElseIf i = 1 Then
205
                            '        oAddrow(_XML_SYMBOL_Conn2_Uid) = sConnArray(i)
206
                            '    ElseIf i = 2 Then
207
                            '        oAddrow(_XML_SYMBOL_Conn3_Uid) = sConnArray(i)
208
                            '    ElseIf i = 3 Then
209
                            '        oAddrow(_XML_SYMBOL_Conn4_Uid) = sConnArray(i)
210
                            '    End If
211
                            'Next
212
                            oAddrow(_XML_SYMBOL_Conn1_Uid) = ""
213
                            oAddrow(_XML_SYMBOL_Conn2_Uid) = ""
214
                            oAddrow(_XML_SYMBOL_Conn3_Uid) = ""
215
                            oAddrow(_XML_SYMBOL_Conn4_Uid) = ""
216
                            ConvertPointBystring(sOriginalPoint, dCenterPos_x, dCenterPos_y)
217
                            dDwgCenterPos_x = dCenterPos_x
218
                            dDwgCenterPos_y = dCenterPos_y
219
                            ConvertPointByImage(dDwgCenterPos_x, dDwgCenterPos_y, _IMG_X, _IMG_Y)
220

    
221
                            oAddrow(_XML_SYMBOL_CENTERPOINT_X) = dCenterPos_x
222
                            oAddrow(_XML_SYMBOL_CENTERPOINT_Y) = dCenterPos_y
223
                            oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_X) = dDwgCenterPos_x
224
                            oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_Y) = dDwgCenterPos_y
225
                            sConnArray = sConnectionPoint.Split("/")
226
                            sSizeArray = sSize.Split(",")
227
                            sLocationArray = sLocation.Split(",")
228
                            If sConnArray.Length > 4 Then
229
                                MessageBox.Show(sConnArray.Length)
230
                            End If
231
                            For i = 0 To sConnArray.Length - 1
232
                                If i = 0 Then
233
                                    oAddrow(_XML_SYMBOL_Conn1_Point) = sConnArray(i)
234
                                    ConvertPointBystring(sConnArray(i), dConn1Pos_x, dConn1Pos_y)
235
                                    dDwg_Conn1Pos_x = dConn1Pos_x
236
                                    dDwg_Conn1Pos_y = dConn1Pos_y
237
                                    ConvertPointByImage(dDwg_Conn1Pos_x, dDwg_Conn1Pos_y, _IMG_X, _IMG_Y)
238

    
239
                                    oAddrow(_XML_SYMBOL_CONN1_POINT_X) = dConn1Pos_x
240
                                    oAddrow(_XML_SYMBOL_CONN1_POINT_Y) = dConn1Pos_y
241
                                    oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_X) = dDwg_Conn1Pos_x
242
                                    oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_Y) = dDwg_Conn1Pos_y
243
                                ElseIf i = 1 Then
244
                                    oAddrow(_XML_SYMBOL_Conn2_Point) = sConnArray(i)
245
                                    ConvertPointBystring(sConnArray(i), dConn2Pos_x, dConn2Pos_y)
246
                                    dDwg_Conn2Pos_x = dConn2Pos_x
247
                                    dDwg_Conn2Pos_y = dConn2Pos_y
248
                                    ConvertPointByImage(dDwg_Conn2Pos_x, dDwg_Conn2Pos_y, _IMG_X, _IMG_Y)
249
                                    oAddrow(_XML_SYMBOL_CONN2_POINT_X) = dConn2Pos_x
250
                                    oAddrow(_XML_SYMBOL_CONN2_POINT_Y) = dConn2Pos_y
251
                                    oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_X) = dDwg_Conn2Pos_x
252
                                    oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_Y) = dDwg_Conn2Pos_y
253
                                ElseIf i = 2 Then
254
                                    oAddrow(_XML_SYMBOL_Conn3_Point) = sConnArray(i)
255
                                    ConvertPointBystring(sConnArray(i), dConn3Pos_x, dConn3Pos_y)
256
                                    dDwg_Conn3Pos_x = dConn3Pos_x
257
                                    dDwg_Conn3Pos_y = dConn3Pos_y
258
                                    ConvertPointByImage(dDwg_Conn3Pos_x, dDwg_Conn3Pos_y, _IMG_X, _IMG_Y)
259
                                    oAddrow(_XML_SYMBOL_CONN3_POINT_X) = dConn3Pos_x
260
                                    oAddrow(_XML_SYMBOL_CONN3_POINT_Y) = dConn3Pos_y
261
                                    oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_X) = dDwg_Conn3Pos_x
262
                                    oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_Y) = dDwg_Conn3Pos_y
263
                                ElseIf i = 3 Then
264
                                    oAddrow(_XML_SYMBOL_Conn4_Point) = sConnArray(i)
265
                                    ConvertPointBystring(sConnArray(i), dConn4Pos_x, dConn4Pos_y)
266
                                    dDwg_Conn4Pos_x = dConn4Pos_x
267
                                    dDwg_Conn4Pos_y = dConn4Pos_y
268
                                    ConvertPointByImage(dDwg_Conn4Pos_x, dDwg_Conn4Pos_y, _IMG_X, _IMG_Y)
269
                                    oAddrow(_XML_SYMBOL_CONN4_POINT_X) = dConn4Pos_x
270
                                    oAddrow(_XML_SYMBOL_CONN4_POINT_Y) = dConn4Pos_y
271
                                    oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_X) = dDwg_Conn4Pos_x
272
                                    oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_Y) = dDwg_Conn4Pos_y
273
                                End If
274
                            Next
275

    
276
                            Dim sXLength As String = ""
277
                            Dim sYLength As String = ""
278

    
279
                            Dim dMin_x As Double = 0
280
                            Dim dMax_x As Double = 0
281
                            Dim dMin_y As Double = 0
282
                            Dim dMax_y As Double = 0
283

    
284
                            For i = 0 To sSizeArray.Length - 1
285
                                If i = 0 Then
286
                                    sXLength = sSizeArray(i)
287
                                ElseIf i = 1 Then
288
                                    sYLength = sSizeArray(i)
289
                                End If
290
                            Next
291

    
292
                            For i = 0 To sLocationArray.Length - 1
293
                                If i = 0 Then
294
                                    dMin_x = sLocationArray(i)
295
                                    dMax_x = dMin_x + sXLength
296
                                ElseIf i = 1 Then
297
                                    'Y축은 반전
298
                                    dMax_y = sLocationArray(i)
299
                                    dMin_y = dMax_y + sYLength
300
                                End If
301
                            Next
302
                            ConvertPointByImage(dMin_x, dMin_y, _IMG_X, _IMG_Y)
303
                            ConvertPointByImage(dMax_x, dMax_y, _IMG_X, _IMG_Y)
304

    
305
                            oAddrow(_XML_SYMBOL_MIN_X) = dMin_x
306
                            oAddrow(_XML_SYMBOL_MAX_X) = dMax_x
307
                            oAddrow(_XML_SYMBOL_MIN_Y) = dMin_y
308
                            oAddrow(_XML_SYMBOL_MAX_Y) = dMax_y
309
                            oAddrow(_XML_SYMBOL_UID) = sUid
310
                            oAddrow(_XML_SYMBOL_NAME) = IO.Path.GetFileNameWithoutExtension(GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYMBOLNAME))
311
                            oAddrow(_XML_SYMBOL_LOCATION) = sLocation
312
                            oAddrow(_XML_SYMBOL_SIZE) = sSize
313
                            oAddrow(_XML_SYMBOL_ANGLE) = sAngle
314
                            oAddrow(_XML_SYMBOL_SYSTEMPATH) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
315
                            oAddrow(_XML_SYMBOL_TYPE) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_COMPTPYE)
316
                            oAddrow(_XML_SYMBOL_CLASS) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_CLASS)
317
                            oAddrow(_XML_SYMBOL_ORIGINALPOINT) = sOriginalPoint
318

    
319
                            oAddrow(_XML_SYMBOL_CONNECTIONPOINT) = sConnectionPoint
320
                            oAddrow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
321
                            oAddrow(_XML_SYMBOL_CHILD) = sChild
322
                            '   _AllSymbol_DT.Rows.Add(oAddrow)
323
                            oSymbol_Dt.Rows.Add(oAddrow)
324
                        Catch ex As Exception
325
                        End Try
326
                    Next
327
                    CEqp_no.Uid = sUid
328
                    CEqp_no.Dt_Equipment = oSymbol_Dt
329
                    CEqp_no.Dt_Attribute = oAttribute_Dt
330
                    oEqp_list.Add(CEqp_no)
331
                Next
332
                oTrim_Lineno_list = LoadLineNo(oElement, _XML_CATEGORY_TRIM_LINENO)
333
                CDrawing.Line_nos = oLineno_list
334
                CDrawing.Eqp_nos = oEqp_list
335
                CDrawing.TrimLine_nos = oTrim_Lineno_list
336

    
337
            End If
338
            Return CDrawing
339
        Catch ex As Exception
340
            Return Nothing
341
        End Try
342

    
343
    End Function
344

    
345
    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
346

    
347
        Dim sReturnUid As String = ""
348
        Try
349
            Dim oFindLineRow As DataRow() = oLine_Dt.Select(
350
            "[" & _XML_LINE_DWG_STARTPOINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
351
            "[" & _XML_LINE_DWG_STARTPOINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
352
            "[" & _XML_LINE_DWG_STARTPOINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
353
            "[" & _XML_LINE_DWG_STARTPOINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
354
            "[" & _XML_LINE_UID & "] <> '" & sUid & "' And " &
355
            "[" & _XML_LINE_Conn1_Uid & "] = ''")
356
            If oFindLineRow.Length = 0 Then
357
                oFindLineRow = oLine_Dt.Select(
358
                "[" & _XML_LINE_DWG_ENDPOINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
359
                "[" & _XML_LINE_DWG_ENDPOINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
360
                "[" & _XML_LINE_DWG_ENDPOINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
361
                "[" & _XML_LINE_DWG_ENDPOINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
362
                "[" & _XML_LINE_UID & "] <> '" & sUid & "' And " &
363
                "[" & _XML_LINE_Conn2_Uid & "] = ''")
364
                If oFindLineRow.Length = 0 Then
365
                    oFindLineRow = oSymbol_Dt.Select(
366
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
367
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
368
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
369
              "[" & _XML_SYMBOL_DWG_CONN1_POINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
370
              "[" & _XML_SYMBOL_UID & "] <> '" & sUid & "' And " &
371
              "[" & _XML_SYMBOL_Conn1_Uid & "] = ''")
372
                    If oFindLineRow.Length = 0 Then
373
                        oFindLineRow = oSymbol_Dt.Select(
374
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_X & "] >= '" & dPos_x - 0.001 & "' And " &
375
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_X & "] <= '" & dPos_x + 0.001 & "' And " &
376
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_Y & "] >= '" & dPos_y - 0.001 & "' And " &
377
                   "[" & _XML_SYMBOL_DWG_CONN2_POINT_Y & "] <= '" & dPos_y + 0.001 & "' And " &
378
                   "[" & _XML_SYMBOL_UID & "] <> '" & sUid & "' And " &
379
                   "[" & _XML_SYMBOL_Conn2_Uid & "] = ''")
380
                        If oFindLineRow.Length = 0 Then
381
                        Else
382
                            oFindLineRow(0)(_XML_SYMBOL_Conn2_Uid) = sUid
383
                            sReturnUid = oFindLineRow(0)(_XML_SYMBOL_UID).ToString()
384
                        End If
385
                    Else
386
                        oFindLineRow(0)(_XML_SYMBOL_Conn1_Uid) = sUid
387
                        sReturnUid = oFindLineRow(0)(_XML_SYMBOL_UID).ToString()
388
                    End If
389
                Else
390
                    oFindLineRow(0)(_XML_LINE_Conn2_Uid) = sUid
391
                    sReturnUid = oFindLineRow(0)(_XML_LINE_UID).ToString()
392
                End If
393
            Else
394
                oFindLineRow(0)(_XML_LINE_Conn1_Uid) = sUid
395
                sReturnUid = oFindLineRow(0)(_XML_LINE_UID).ToString()
396
            End If
397
        Catch ex As Exception
398

    
399
        End Try
400

    
401
        Return sReturnUid
402
    End Function
403

    
404

    
405
    Private Function SetConnectionInfo(ByRef oLine_Dt As DataTable, ByRef oSymbol_Dt As DataTable)
406
        Try
407
            For Each oLineInfo In oLine_Dt.Rows
408
                Dim sLineUid As String = oLineInfo(_XML_LINE_UID).ToString()
409
                Dim dStartPos_x As Double = oLineInfo(_XML_LINE_DWG_STARTPOINT_X)
410
                Dim dStartPos_y As Double = oLineInfo(_XML_LINE_DWG_STARTPOINT_Y)
411
                Dim dEndPos_x As Double = oLineInfo(_XML_LINE_DWG_ENDPOINT_X)
412
                Dim dEndPos_y As Double = oLineInfo(_XML_LINE_DWG_ENDPOINT_Y)
413
                Dim sConn1Uid As String = ""
414
                Dim sConn2Uid As String = ""
415
                sConn1Uid = FindConnection(oLine_Dt, oSymbol_Dt, sLineUid, dStartPos_x, dStartPos_y)
416
                If sConn1Uid <> "" Then
417
                    oLineInfo(_XML_LINE_Conn1_Uid) = sConn1Uid
418
                End If
419
                sConn2Uid = FindConnection(oLine_Dt, oSymbol_Dt, sLineUid, dEndPos_x, dEndPos_y)
420
                If sConn2Uid <> "" Then
421
                    oLineInfo(_XML_LINE_Conn2_Uid) = sConn2Uid
422
                End If
423
            Next
424
            For Each oSymbolInfo In oSymbol_Dt.Rows
425
                Dim sSymbolUid As String = oSymbolInfo(_XML_SYMBOL_UID).ToString()
426
                Dim dConn1Pos_x As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_X)
427
                Dim dConn1Pos_y As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_Y)
428

    
429
                Dim sConn1Uid As String = ""
430
                Dim sConn2Uid As String = ""
431

    
432
                sConn1Uid = FindConnection(oLine_Dt, oSymbol_Dt, sSymbolUid, dConn1Pos_x, dConn1Pos_y)
433
                If sConn1Uid <> "" Then
434
                    oSymbolInfo(_XML_SYMBOL_Conn1_Uid) = sConn1Uid
435
                End If
436
                Try
437
                    Dim dConn2Pos_x As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN2_POINT_X)
438
                    Dim dConn2Pos_y As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN2_POINT_Y)
439
                    sConn2Uid = FindConnection(oLine_Dt, oSymbol_Dt, sSymbolUid, dConn2Pos_x, dConn2Pos_y)
440
                    If sConn2Uid <> "" Then
441
                        oSymbolInfo(_XML_SYMBOL_Conn2_Uid) = sConn2Uid
442
                    End If
443
                Catch ex As Exception
444
                End Try
445
            Next
446
        Catch ex As Exception
447
        End Try
448
    End Function
449

    
450
    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
451
        Dim bValidLine As Boolean = True
452
        If Math.Abs(dStart_x - dEnd_x) > Math.Abs(dStart_y - dEnd_y) Then
453
            If dStart_x > dEnd_x Then
454
                sDirection = "X"
455
                sFlowdirection = "Left_x"
456
                If Math.Abs(dStart_y - dEnd_y) < 5 Then
457
                    dEnd_y = dStart_y
458
                End If
459
            Else
460
                sDirection = "X"
461
                sFlowdirection = "Right_x"
462
                If Math.Abs(dStart_y - dEnd_y) < 5 Then
463
                    dEnd_y = dStart_y
464
                End If
465
            End If
466
            If Math.Abs(dStart_x - dEnd_x) <= 15 Then
467
                bValidLine = False
468
            End If
469
        Else
470
            If dStart_y > dEnd_y Then
471
                sDirection = "Y"
472
                sFlowdirection = "Down_y"
473
                If Math.Abs(dStart_x - dEnd_x) < 5 Then
474
                    dEnd_x = dStart_x
475
                End If
476

    
477
            Else
478
                sDirection = "Y"
479
                sFlowdirection = "Up_y"
480
                If Math.Abs(dStart_x - dEnd_x) < 5 Then
481
                    dEnd_x = dStart_x
482
                End If
483
            End If
484
            If Math.Abs(dStart_y - dEnd_y) <= 20 Then
485
                bValidLine = False
486
            End If
487
        End If
488
        Return bValidLine
489
    End Function
490

    
491
    Private Function LoadLineNo(ByVal oElement As XElement, ByVal sLineType As String) As List(Of Line_no)
492

    
493
        Dim oLineno_list As New List(Of Line_no)
494
        For Each oLineNo As Object In oElement.Elements(sLineType)
495
            Dim CLineNo As Line_no = New Line_no()
496
            Try
497
                CLineNo.Uid = oLineNo.Element(_XML_LINENO_UID).Value
498
                CLineNo.Text = oLineNo.Element(_XML_LINENO_TEXT).Value
499
                CLineNo.Location = oLineNo.Element(_XML_LINENO_LOCATION).Value
500
                CLineNo.Angle = oLineNo.Element(_XML_LINENO_ANGLE).Value
501
                CLineNo.SystemPath = "\Piping\Labels - Piping Segments\Kemya Line Number.sym" 'GetDataFromMappingDB(_XML_CATEGORY_LINENO, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
502
            Catch ex As Exception
503
            End Try
504
            Dim oLine_Dt As DataTable = Line_Dt()
505
            Dim oSymbol_Dt As DataTable = Symbol_Dt()
506
            Dim oAttribute_Dt As DataTable = Attribute_Dt()
507
            Dim iRunCnt As Integer = 0
508
            For Each oRun As Object In oLineNo.Elements(_XML_CATEGORY_RUN)
509
                iRunCnt = iRunCnt + 1
510
                Dim sRunName As String = CLineNo.Text & "_" & iRunCnt
511
                For Each oMERGEDLine As Object In oRun.Elements(_XML_CATEGORY_MERGEDLINE)
512
                    For Each oLine As Object In oMERGEDLine.Elements(_XML_CATEGORY_LINE)
513
                        Try
514
                            Dim oAddrow As DataRow = oLine_Dt.NewRow()
515
                            Dim oEleObj As XElement
516
                            Dim sUid As String
517
                            Dim sStartpoint As String
518
                            Dim sEndpoint As String
519
                            Dim sType As String
520
                            Dim sConnectionUids As String = ""
521
                            Dim dStartPos_x As Double = 0.0
522
                            Dim dStartPos_y As Double = 0.0
523
                            Dim dEndPos_x As Double = 0.0
524
                            Dim dEndPos_y As Double = 0.0
525
                            Dim dDWG_StartPos_x As Double = 0.0
526
                            Dim dDWG_StartPos_y As Double = 0.0
527
                            Dim dDWG_EndPos_x As Double = 0.0
528
                            Dim dDWG_EndPos_y As Double = 0.0
529
                            oEleObj = oLine.Element(_XML_LINE_UID)
530
                            sUid = oEleObj.Value
531

    
532
                            If oLine_Dt.Select(_XML_LINE_UID & "='" & sUid & "'").Length = 0 Then
533
                                oEleObj = oLine.Element(_XML_LINE_STARTPOINT)
534
                                sStartpoint = oEleObj.Value
535
                                oEleObj = oLine.Element(_XML_LINE_ENDPOINT)
536
                                sEndpoint = oEleObj.Value
537
                                oEleObj = oLine.Element(_XML_LINE_TYPE)
538
                                sType = oEleObj.Value
539
                                'oEleObj = oLine.Element(_XML_LINE_CONNS)
540
                                'sConnectionUids = oEleObj.Value
541
                                'sConnArray = sConnectionUids.Split(",")
542
                                'For i = 0 To sConnArray.Length - 1
543
                                '    If i = 0 Then
544
                                '        oAddrow(_XML_LINE_Conn1_Uid) = sConnArray(i)
545
                                '    ElseIf i = 1 Then
546
                                '        oAddrow(_XML_LINE_Conn2_Uid) = sConnArray(i)
547
                                '    End If
548
                                'Next
549
                                'If sConnArray.Length > 2 Then
550
                                '    MessageBox.Show(sConnArray.Length)
551
                                'End If
552
                                oAddrow(_XML_LINE_Conn1_Uid) = ""
553
                                oAddrow(_XML_LINE_Conn2_Uid) = ""
554
                                oAddrow(_XML_LINE_UID) = sUid
555
                                oAddrow(_XML_LINE_RUNNAME) = sRunName
556
                                oAddrow(_XML_LINE_LINENOUID) = CLineNo.Uid
557
                                oAddrow(_XML_LINENO_TEXT) = CLineNo.Text
558
                                oAddrow(_XML_LINE_STARTPOINT) = sStartpoint
559
                                oAddrow(_XML_LINE_ENDPOINT) = sEndpoint
560

    
561
                                ConvertPointBystring(sStartpoint, dStartPos_x, dStartPos_y)
562
                                ConvertPointBystring(sEndpoint, dEndPos_x, dEndPos_y)
563
                                Dim sDirection As String = ""
564
                                Dim sFlowDirection As String = ""
565
                                Dim bValidLine As Boolean = GetFlowDirection(dStartPos_x, dStartPos_y, dEndPos_x, dEndPos_y, sDirection, sFlowDirection)
566
                                oAddrow(_XML_LINE_FlowDirection) = sFlowDirection
567
                                oAddrow(_XML_LINE_Direction) = sDirection
568
                                oAddrow(_XML_LINE_ValieLine) = bValidLine
569
                                dDWG_StartPos_x = dStartPos_x
570
                                dDWG_StartPos_y = dStartPos_y
571
                                ConvertPointByImage(dDWG_StartPos_x, dDWG_StartPos_y, _IMG_X, _IMG_Y)
572
                                dDWG_EndPos_x = dEndPos_x
573
                                dDWG_EndPos_y = dEndPos_y
574
                                ConvertPointByImage(dDWG_EndPos_x, dDWG_EndPos_y, _IMG_X, _IMG_Y)
575

    
576
                                oAddrow(_XML_LINE_STARTPOINT_X) = dStartPos_x
577
                                oAddrow(_XML_LINE_STARTPOINT_Y) = dStartPos_y
578
                                oAddrow(_XML_LINE_ENDPOINT_X) = dEndPos_x
579
                                oAddrow(_XML_LINE_ENDPOINT_Y) = dEndPos_y
580

    
581
                                oAddrow(_XML_LINE_DWG_STARTPOINT_X) = dDWG_StartPos_x
582
                                oAddrow(_XML_LINE_DWG_STARTPOINT_Y) = dDWG_StartPos_y
583
                                oAddrow(_XML_LINE_DWG_ENDPOINT_X) = dDWG_EndPos_x
584
                                oAddrow(_XML_LINE_DWG_ENDPOINT_Y) = dDWG_EndPos_y
585

    
586
                                oAddrow(_XML_LINE_SYSTEMPATH) = GetDataFromMappingDB(_XML_CATEGORY_LINE, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
587
                                If oAddrow(_XML_LINE_SYSTEMPATH) = "" Then
588
                                    MessageBox.Show("")
589
                                End If
590
                                oAddrow(_XML_LINE_DRAWING_TF) = "FALSE"
591
                                oAddrow(_XML_LINE_TYPE) = sType
592
                                '  _AllLine_DT.Rows.Add(oAddrow)
593
                                oLine_Dt.Rows.Add(oAddrow)
594
                            Else
595
                            End If
596
                        Catch ex As Exception
597
                        End Try
598
                    Next
599
                Next
600

    
601
                For Each oSymbol As Object In oRun.Elements(_XML_CATEGORY_SYMBOL)
602
                    Try
603

    
604
                        Dim oAddrow As DataRow = oSymbol_Dt.NewRow()
605
                        Dim oEleObj As XElement
606
                        Dim sUid As String
607
                        Dim sName As String
608
                        Dim sLocation As String
609
                        Dim sSize As String
610
                        Dim sAngle As String
611
                        Dim sOriginalPoint As String = ""
612
                        Dim sConnectionPoint As String = ""
613
                        Dim sConnectionUids As String = ""
614
                        Dim sConnArray As String()
615
                        Dim sSizeArray As String()
616
                        Dim sLocationArray As String()
617
                        Dim sChild As String = ""
618
                        Dim dCenterPos_x As Double = 0.0
619
                        Dim dCenterPos_y As Double = 0.0
620
                        Dim dDwgCenterPos_x As Double = 0.0
621
                        Dim dDwgCenterPos_y As Double = 0.0
622

    
623
                        Dim dConn1Pos_x As Double = 0.0
624
                        Dim dConn1Pos_y As Double = 0.0
625
                        Dim dConn2Pos_x As Double = 0.0
626
                        Dim dConn2Pos_y As Double = 0.0
627
                        Dim dConn3Pos_x As Double = 0.0
628
                        Dim dConn3Pos_y As Double = 0.0
629
                        Dim dConn4Pos_x As Double = 0.0
630
                        Dim dConn4Pos_y As Double = 0.0
631

    
632
                        Dim dDwg_Conn1Pos_x As Double = 0.0
633
                        Dim dDwg_Conn1Pos_y As Double = 0.0
634
                        Dim dDwg_Conn2Pos_x As Double = 0.0
635
                        Dim dDwg_Conn2Pos_y As Double = 0.0
636
                        Dim dDwg_Conn3Pos_x As Double = 0.0
637
                        Dim dDwg_Conn3Pos_y As Double = 0.0
638
                        Dim dDwg_Conn4Pos_x As Double = 0.0
639
                        Dim dDwg_Conn4Pos_y As Double = 0.0
640

    
641
                        oEleObj = oSymbol.Element(_XML_SYMBOL_UID)
642
                        sUid = oEleObj.Value
643
                        oEleObj = oSymbol.Element(_XML_SYMBOL_PARENT)
644
                        sName = oEleObj.Value
645
                        oEleObj = oSymbol.Element(_XML_SYMBOL_LOCATION)
646
                        sLocation = oEleObj.Value
647
                        oEleObj = oSymbol.Element(_XML_SYMBOL_SIZE)
648
                        sSize = oEleObj.Value
649
                        oEleObj = oSymbol.Element(_XML_SYMBOL_ANGLE)
650
                        sAngle = oEleObj.Value
651
                        oEleObj = oSymbol.Element(_XML_SYMBOL_CONNECTIONPOINT)
652
                        sConnectionPoint = oEleObj.Value
653
                        oEleObj = oSymbol.Element(_XML_SYMBOL_CHILD)
654
                        sChild = oEleObj.Value
655
                        Try
656
                            oEleObj = oSymbol.Element(_XML_SYMBOL_ORIGINALPOINT)
657
                            sOriginalPoint = oEleObj.Value
658
                        Catch ex As Exception
659

    
660
                        End Try
661
                        'oEleObj = oSymbol.Element(_XML_LINE_CONNS)
662
                        'sConnectionUids = oEleObj.Value
663
                        'sConnArray = sConnectionUids.Split(",")
664
                        'If sConnArray.Length > 4 Then
665
                        '    MessageBox.Show(sConnArray.Length)
666
                        'End If
667
                        'For i = 0 To sConnArray.Length - 1
668
                        '    If i = 0 Then
669
                        '        oAddrow(_XML_SYMBOL_Conn1_Uid) = sConnArray(i)
670
                        '    ElseIf i = 1 Then
671
                        '        oAddrow(_XML_SYMBOL_Conn2_Uid) = sConnArray(i)
672
                        '    ElseIf i = 2 Then
673
                        '        oAddrow(_XML_SYMBOL_Conn3_Uid) = sConnArray(i)
674
                        '    ElseIf i = 3 Then
675
                        '        oAddrow(_XML_SYMBOL_Conn4_Uid) = sConnArray(i)
676
                        '    End If
677
                        'Next
678
                        oAddrow(_XML_SYMBOL_Conn1_Uid) = ""
679
                        oAddrow(_XML_SYMBOL_Conn2_Uid) = ""
680
                        oAddrow(_XML_SYMBOL_Conn3_Uid) = ""
681
                        oAddrow(_XML_SYMBOL_Conn4_Uid) = ""
682
                        ConvertPointBystring(sOriginalPoint, dCenterPos_x, dCenterPos_y)
683
                        dDwgCenterPos_x = dCenterPos_x
684
                        dDwgCenterPos_y = dCenterPos_y
685
                        ConvertPointByImage(dDwgCenterPos_x, dDwgCenterPos_y, _IMG_X, _IMG_Y)
686

    
687
                        oAddrow(_XML_SYMBOL_CENTERPOINT_X) = dCenterPos_x
688
                        oAddrow(_XML_SYMBOL_CENTERPOINT_Y) = dCenterPos_y
689
                        oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_X) = dDwgCenterPos_x
690
                        oAddrow(_XML_SYMBOL_DWG_CENTERPOINT_Y) = dDwgCenterPos_y
691
                        sConnArray = sConnectionPoint.Split("/")
692
                        sSizeArray = sSize.Split(",")
693
                        sLocationArray = sLocation.Split(",")
694
                        If sConnArray.Length > 4 Then
695
                            MessageBox.Show(sConnArray.Length)
696
                        End If
697
                        For i = 0 To sConnArray.Length - 1
698
                            If i = 0 Then
699
                                oAddrow(_XML_SYMBOL_Conn1_Point) = sConnArray(i)
700
                                ConvertPointBystring(sConnArray(i), dConn1Pos_x, dConn1Pos_y)
701
                                dDwg_Conn1Pos_x = dConn1Pos_x
702
                                dDwg_Conn1Pos_y = dConn1Pos_y
703
                                ConvertPointByImage(dDwg_Conn1Pos_x, dDwg_Conn1Pos_y, _IMG_X, _IMG_Y)
704

    
705
                                oAddrow(_XML_SYMBOL_CONN1_POINT_X) = dConn1Pos_x
706
                                oAddrow(_XML_SYMBOL_CONN1_POINT_Y) = dConn1Pos_y
707
                                oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_X) = dDwg_Conn1Pos_x
708
                                oAddrow(_XML_SYMBOL_DWG_CONN1_POINT_Y) = dDwg_Conn1Pos_y
709
                            ElseIf i = 1 Then
710
                                oAddrow(_XML_SYMBOL_Conn2_Point) = sConnArray(i)
711
                                ConvertPointBystring(sConnArray(i), dConn2Pos_x, dConn2Pos_y)
712
                                dDwg_Conn2Pos_x = dConn2Pos_x
713
                                dDwg_Conn2Pos_y = dConn2Pos_y
714
                                ConvertPointByImage(dDwg_Conn2Pos_x, dDwg_Conn2Pos_y, _IMG_X, _IMG_Y)
715
                                oAddrow(_XML_SYMBOL_CONN2_POINT_X) = dConn2Pos_x
716
                                oAddrow(_XML_SYMBOL_CONN2_POINT_Y) = dConn2Pos_y
717
                                oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_X) = dDwg_Conn2Pos_x
718
                                oAddrow(_XML_SYMBOL_DWG_CONN2_POINT_Y) = dDwg_Conn2Pos_y
719
                            ElseIf i = 2 Then
720
                                oAddrow(_XML_SYMBOL_Conn3_Point) = sConnArray(i)
721
                                ConvertPointBystring(sConnArray(i), dConn3Pos_x, dConn3Pos_y)
722
                                dDwg_Conn3Pos_x = dConn3Pos_x
723
                                dDwg_Conn3Pos_y = dConn3Pos_y
724
                                ConvertPointByImage(dDwg_Conn3Pos_x, dDwg_Conn3Pos_y, _IMG_X, _IMG_Y)
725
                                oAddrow(_XML_SYMBOL_CONN3_POINT_X) = dConn3Pos_x
726
                                oAddrow(_XML_SYMBOL_CONN3_POINT_Y) = dConn3Pos_y
727
                                oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_X) = dDwg_Conn3Pos_x
728
                                oAddrow(_XML_SYMBOL_DWG_CONN3_POINT_Y) = dDwg_Conn3Pos_y
729
                            ElseIf i = 3 Then
730
                                oAddrow(_XML_SYMBOL_Conn4_Point) = sConnArray(i)
731
                                ConvertPointBystring(sConnArray(i), dConn4Pos_x, dConn4Pos_y)
732
                                dDwg_Conn4Pos_x = dConn4Pos_x
733
                                dDwg_Conn4Pos_y = dConn4Pos_y
734
                                ConvertPointByImage(dDwg_Conn4Pos_x, dDwg_Conn4Pos_y, _IMG_X, _IMG_Y)
735
                                oAddrow(_XML_SYMBOL_CONN4_POINT_X) = dConn4Pos_x
736
                                oAddrow(_XML_SYMBOL_CONN4_POINT_Y) = dConn4Pos_y
737
                                oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_X) = dDwg_Conn4Pos_x
738
                                oAddrow(_XML_SYMBOL_DWG_CONN4_POINT_Y) = dDwg_Conn4Pos_y
739
                            End If
740
                        Next
741

    
742
                        Dim sXLength As String = ""
743
                        Dim sYLength As String = ""
744

    
745
                        Dim dMin_x As Double = 0
746
                        Dim dMax_x As Double = 0
747
                        Dim dMin_y As Double = 0
748
                        Dim dMax_y As Double = 0
749

    
750
                        For i = 0 To sSizeArray.Length - 1
751
                            If i = 0 Then
752
                                sXLength = sSizeArray(i)
753
                            ElseIf i = 1 Then
754
                                sYLength = sSizeArray(i)
755
                            End If
756
                        Next
757

    
758
                        For i = 0 To sLocationArray.Length - 1
759
                            If i = 0 Then
760
                                dMin_x = sLocationArray(i)
761
                                dMax_x = dMin_x + sXLength
762
                            ElseIf i = 1 Then
763
                                'Y축은 반전
764
                                dMax_y = sLocationArray(i)
765
                                dMin_y = dMax_y + sYLength
766
                            End If
767
                        Next
768
                        ConvertPointByImage(dMin_x, dMin_y, _IMG_X, _IMG_Y)
769
                        ConvertPointByImage(dMax_x, dMax_y, _IMG_X, _IMG_Y)
770

    
771
                        oAddrow(_XML_SYMBOL_MIN_X) = dMin_x
772
                        oAddrow(_XML_SYMBOL_MAX_X) = dMax_x
773
                        oAddrow(_XML_SYMBOL_MIN_Y) = dMin_y
774
                        oAddrow(_XML_SYMBOL_MAX_Y) = dMax_y
775
                        oAddrow(_XML_SYMBOL_UID) = sUid
776
                        oAddrow(_XML_LINE_LINENOUID) = CLineNo.Uid
777
                        oAddrow(_XML_SYMBOL_RUNNAME) = sRunName
778
                        oAddrow(_XML_LINENO_TEXT) = CLineNo.Text
779
                        oAddrow(_XML_SYMBOL_NAME) = IO.Path.GetFileNameWithoutExtension(GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYMBOLNAME))
780
                        oAddrow(_XML_SYMBOL_LOCATION) = sLocation
781
                        oAddrow(_XML_SYMBOL_SIZE) = sSize
782
                        oAddrow(_XML_SYMBOL_ANGLE) = sAngle
783
                        oAddrow(_XML_SYMBOL_SYSTEMPATH) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
784
                        oAddrow(_XML_SYMBOL_TYPE) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_COMPTPYE)
785
                        oAddrow(_XML_SYMBOL_CLASS) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_CLASS)
786
                        oAddrow(_XML_SYMBOL_ORIGINALPOINT) = sOriginalPoint
787

    
788
                        oAddrow(_XML_SYMBOL_CONNECTIONPOINT) = sConnectionPoint
789
                        oAddrow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
790
                        oAddrow(_XML_SYMBOL_CHILD) = sChild
791
                        '   _AllSymbol_DT.Rows.Add(oAddrow)
792
                        oSymbol_Dt.Rows.Add(oAddrow)
793
                    Catch ex As Exception
794
                    End Try
795
                Next
796

    
797
                For Each oAtrribute As Object In oRun.Elements(_XML_CATEGORY_ATTRIBUTE)
798
                    Try
799
                        Dim oAddrow As DataRow = oAttribute_Dt.NewRow()
800
                        Dim oEleObj As XElement
801
                        Dim sUid As String
802
                        Dim sName As String
803
                        Dim sValue As String
804
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_UID)
805
                        sUid = oEleObj.Value
806
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_NAME)
807
                        sName = oEleObj.Value
808
                        oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_VALUE)
809
                        sValue = oEleObj.Value
810
                        oAddrow(_XML_ATTRIBUTE_UID) = sUid
811
                        oAddrow(_XML_ATTRIBUTE_NAME) = sName
812
                        oAddrow(_XML_ATTRIBUTE_VALUE) = sValue
813
                        oAttribute_Dt.Rows.Add(oAddrow)
814
                    Catch ex As Exception
815
                    End Try
816
                Next
817
            Next
818
            'Line No Attribute
819
            For Each oAtrribute As Object In oLineNo.Elements(_XML_CATEGORY_ATTRIBUTE)
820
                Try
821
                    Dim oAddrow As DataRow = oAttribute_Dt.NewRow()
822
                    Dim oEleObj As XElement
823
                    Dim sUid As String = ""
824
                    Dim sName As String
825
                    Dim sValue As String
826

    
827
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_UID)
828
                    sUid = oEleObj.Value
829
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_NAME)
830
                    sName = oEleObj.Value
831
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_VALUE)
832
                    sValue = oEleObj.Value
833
                    oAddrow(_XML_ATTRIBUTE_UID) = sUid
834
                    oAddrow(_XML_ATTRIBUTE_NAME) = sName
835
                    oAddrow(_XML_ATTRIBUTE_VALUE) = sValue
836
                    oAttribute_Dt.Rows.Add(oAddrow)
837
                Catch ex As Exception
838
                End Try
839
            Next
840

    
841
            SetConnectionInfo(oLine_Dt, oSymbol_Dt)
842
            _AllLine_DT.Merge(oLine_Dt)
843
            _AllSymbol_DT.Merge(oSymbol_Dt)
844
            CLineNo.Dt_Line = oLine_Dt
845
            CLineNo.Dt_Symbol = oSymbol_Dt
846
            CLineNo.Dt_Attribute = oAttribute_Dt
847
            oLineno_list.Add(CLineNo)
848
        Next
849
        Return oLineno_list
850
    End Function
851

    
852

    
853
    Private Sub ConvertPointByImage(ByRef dX As Double, ByRef dY As Double, ByVal dDwgX As Double, ByVal dDwgY As Double)
854

    
855
        Dim calcx As Double = 0
856
        Dim calcy As Double = 0
857
        calcx = (dX * _DWG_X) / dDwgX 'Math.Round((dX * _DWG_X) / dDwgX, 2)
858
        'calcx = Math.Round(calcx, 4, MidpointRounding.)
859
        calcx = Math.Truncate(calcx * 1000) / 1000
860
        calcy = _DWG_Y - ((dY * _DWG_Y) / dDwgY) '_DWG_Y - Math.Round((dY * _DWG_Y) / dDwgY, 2)
861
        '   calcy = Math.Round(calcy, 4)
862
        calcy = Math.Truncate(calcy * 1000) / 1000
863
        dX = calcx
864
        dY = calcy
865
    End Sub
866

    
867

    
868
    '@brief Convert To SPPID
869
    '@author : Gyusu Park
870
    '@date : 2018-04-10
871
    '@history:
872

    
873
    Private Sub SplitLocation(ByVal sLocation As String, ByRef dX As Double, ByRef dY As Double)
874

    
875
        Dim opointstr As String() = Split(sLocation, ",")
876
        If (opointstr.Length > 1) Then
877
            If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
878
                dX = opointstr(0)
879
                dY = opointstr(1)
880
            End If
881
        End If
882

    
883
    End Sub
884

    
885
    Private Function Load_DB(ByVal sDBPath As String, ByVal sTableName As String) As DataTable
886

    
887
        Try
888
            Dim oDt As New DataTable
889
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
890
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
891
            conn.Open()
892
            Dim sQuery As String = "Select * from " & sTableName
893
            Dim cmd As SQLiteCommand = conn.CreateCommand()
894
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
895
            Dim oDataSet As DataSet = New DataSet()
896
            adapter.Fill(oDataSet)
897
            oDt = oDataSet.Tables(0)
898
            Return oDt
899
        Catch ex As Exception
900
            Return Nothing
901
        End Try
902

    
903

    
904
    End Function
905

    
906
    Private Function LoadAllDrawing() As DataTable
907

    
908

    
909
        SetListBoxItems(ListBox_Result, "도면정보 로드중....")
910
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "도면정보 로드중....")
911
        Dim oDt As DataTable = Drawing_Dt()
912
        Dim sHierarchy As String = My.Settings.Plant_Hierarchy
913

    
914

    
915
        Dim files() As String
916
        files = Directory.GetFiles(sHierarchy, "*.pid", SearchOption.AllDirectories)
917
        For Each FileName As String In files
918
            Dim sName As String = FileName
919
            Dim oAddRow As DataRow = oDt.NewRow()
920
            oAddRow("Name") = Path.GetFileNameWithoutExtension(sName)
921
            oAddRow("Path") = FileName
922
            oDt.Rows.Add(oAddRow)
923
        Next
924
        Return oDt
925
    End Function
926

    
927

    
928
    Dim _XMLList As ListView = New ListView()
929

    
930

    
931

    
932

    
933

    
934

    
935
    Private Function CheckOpenDrawing() As Boolean
936
        Try
937

    
938
            Dim lobjDatasource As Object
939
            _Placement = CreateObject("Plaice.Placement", "")
940
            lobjDatasource = _Placement.PIDDataSource
941
            Return True
942
        Catch ex As Exception
943
            Return False
944
        End Try
945

    
946
    End Function
947

    
948

    
949
    Private Sub Btn_Convert_Click(sender As Object, e As EventArgs) Handles Btn_Convert.Click
950

    
951
        Main_Tab.SelectedIndex = 1
952
        ListBox_Result.Items.Clear()
953
        ' DataGrid_Result.DataSource = New DataTable()
954
        Me.ProgressBar_Status.Visible = True
955
        ProgressBar_Status.Maximum = 100
956
        ProgressBar_Status.Value = 0
957
        InitItemCount()
958
        ' _selectFolderPath = Tree_XMLFiles.SelectedNode.FullPath.Replace("\\", "\")
959
        _Main_trd = New Thread(AddressOf ThreadConvert)
960
        _Main_trd.IsBackground = True
961
        _Main_trd.Start()
962
        FineOPCForm()
963
    End Sub
964

    
965
    Private Sub FineOPCForm()
966
        _Opc_trd = New Thread(AddressOf ThreadOPCRemove)
967
        _Opc_trd.IsBackground = True
968
        _Opc_trd.Start()
969
    End Sub
970

    
971

    
972
    Dim _objPIDAutoApp As Object
973

    
974
    Private Function OpenSPPID(ByVal oDwg_Dt As DataTable, ByVal sDwgName As String) As Boolean
975
        Dim bCheckOpen As Boolean = False
976
        '   Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgPath)
977
        SetListBoxItems(ListBox_Result, sDwgName & " 도면 Open....")
978
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, sDwgName & " 도면 Open....")
979
        _objPIDAutoApp = CreateObject("PIDAutomation.Application")
980

    
981
        Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
982
        If sPath <> "" Then
983
            Process.Start(sPath)
984
        Else
985
            Return bCheckOpen
986
        End If
987

    
988
            Dim bCheckOpenDrawing As Boolean = False
989
            While (True)
990
                bCheckOpenDrawing = CheckOpenDrawing()
991
                If bCheckOpenDrawing = True Then
992
                    bCheckOpen = True
993
                    Exit While
994
                Else
995
                    Thread.Sleep(2000)
996
                End If
997
            End While
998

    
999

    
1000
            Return bCheckOpen
1001
    End Function
1002

    
1003
    Private Function GetDrawing(ByVal sDwgName As String) As Drawing
1004
        For Each CDrawing In _DrawingsList
1005
            If CDrawing.DwgName.ToUpper() = sDwgName.ToUpper() Then
1006
                Return CDrawing
1007
            End If
1008
        Next
1009
        Return Nothing
1010
    End Function
1011

    
1012
    Private Function GetLineNo(ByVal CDrawing As Drawing, ByVal sLineNoUid As String) As Line_no
1013
        For Each CLineNo In CDrawing.Line_nos
1014
            If CLineNo.Uid = sLineNoUid Then
1015
                Return CLineNo
1016
            End If
1017
        Next
1018
        Return Nothing
1019
    End Function
1020

    
1021
    Private Function GetTrimLineNo(ByVal CDrawing As Drawing, ByVal sLineNoUid As String) As Line_no
1022
        For Each CLineNo In CDrawing.TrimLine_nos
1023
            If CLineNo.Uid = sLineNoUid Then
1024
                Return CLineNo
1025
            End If
1026
        Next
1027
        Return Nothing
1028
    End Function
1029

    
1030

    
1031

    
1032
    Private Function GetPipeFromConnection(ByVal CDrawing As Drawing, ByVal sSymbolUid As String, ByRef sConnTypeNo As String) As DataTable
1033
        For Each CLineNo In CDrawing.Line_nos
1034
            Dim odt As DataTable = CLineNo.Dt_Line
1035
            If odt.Rows.Count > 0 Then
1036
                If odt.Rows(0)(_XML_LINE_Conn1_Uid).ToString = sSymbolUid Then
1037
                    sConnTypeNo = "1"
1038
                    Return odt
1039
                ElseIf odt.Rows(0)(_XML_LINE_Conn2_Uid).ToString() = sSymbolUid Then
1040
                    sConnTypeNo = "2"
1041
                    Return odt
1042
                End If
1043
            End If
1044
        Next
1045
        Return New DataTable
1046
    End Function
1047

    
1048
    Private Function GetSymbolFromConnection(ByVal CDrawing As Drawing, ByVal sSymbolUid As String, ByRef sConnTypeNo As String) As DataTable
1049
        For Each CLineNo In CDrawing.Line_nos
1050
            Dim odt As DataTable = CLineNo.Dt_Symbol
1051
            If odt.Rows.Count > 0 Then
1052
                If odt.Rows(0)(_XML_SYMBOL_Conn1_Uid).ToString = sSymbolUid Then
1053
                    sConnTypeNo = "1"
1054
                    Return odt
1055
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn2_Uid).ToString() = sSymbolUid Then
1056
                    sConnTypeNo = "2"
1057
                    Return odt
1058
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn3_Uid).ToString() = sSymbolUid Then
1059
                    sConnTypeNo = "3"
1060
                    Return odt
1061
                ElseIf odt.Rows(0)(_XML_SYMBOL_Conn4_Uid).ToString() = sSymbolUid Then
1062
                    sConnTypeNo = "4"
1063
                    Return odt
1064
                End If
1065
            End If
1066
        Next
1067
        Return New DataTable
1068
    End Function
1069

    
1070
    Private Function GetEqpNo(ByVal CDrawing As Drawing, ByVal sEqpUid As String) As Eqp_no
1071
        For Each CEqpNo In CDrawing.Eqp_nos
1072
            If CEqpNo.Uid = sEqpUid Then
1073
                Return CEqpNo
1074
            End If
1075
        Next
1076
        Return Nothing
1077
    End Function
1078
    Private Function ConvertPointBystring(ByVal sPoint As String, ByRef dX As Double, ByRef dY As Double) As Boolean
1079
        Try
1080
            Dim opointstr As String() = Split(sPoint, ",")
1081
            If (opointstr.Length > 1) Then
1082
                If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
1083
                    dX = opointstr(0)
1084
                    dY = opointstr(1)
1085

    
1086
                Else
1087
                    dX = 0
1088
                    dY = 0
1089
                    Return False
1090
                End If
1091
            End If
1092
            Return True
1093
        Catch ex As Exception
1094
            Return False
1095
        End Try
1096
    End Function
1097

    
1098

    
1099
    Dim _DrawLine_Dt As DataTable = DrawLind_Dt()
1100

    
1101

    
1102
    Private Sub AddModelingLine(ByVal dStart_x As Double, ByVal dStart_y As Double, ByVal dEnd_x As Double, ByVal dEnd_y As Double, ByVal sUid As String)
1103
        Dim oAddRow = _DrawLine_Dt.NewRow()
1104
        oAddRow(_XML_LINE_UID) = sUid
1105
        oAddRow(_XML_LINE_STARTPOINT_X) = dStart_x
1106
        oAddRow(_XML_LINE_STARTPOINT_Y) = dStart_y
1107
        oAddRow(_XML_LINE_ENDPOINT_X) = dEnd_x
1108
        oAddRow(_XML_LINE_ENDPOINT_Y) = dEnd_y
1109
        _DrawLine_Dt.Rows.Add(oAddRow)
1110
    End Sub
1111

    
1112

    
1113

    
1114
    Private Sub PlaceEquipment(ByVal sUid As String, ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sEqpName As String)
1115
        Try
1116
            Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_UID & " = '" + sUid + "'")
1117
            Dim oAttributeRow() As DataRow
1118
            If oAttribute_Dt.Rows.Count > 0 Then
1119
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sUid + "'")
1120
            End If
1121
            If oSymbolRow.Length > 0 Then
1122
                Dim oDatasource As Object = _Placement.PIDDataSource
1123
                Dim sSymbolCompType As String = oSymbolRow(0)(_XML_SYMBOL_TYPE).ToString()
1124
                Dim sSystemPath As String = oSymbolRow(0)(_XML_SYMBOL_SYSTEMPATH).ToString()
1125
                Dim sClass As String = oSymbolRow(0)(_XML_SYMBOL_CLASS).ToString()
1126
                Dim sLocation As String = oSymbolRow(0)(_XML_SYMBOL_LOCATION).ToString()
1127
                Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
1128
                Dim dAngle As Double = 0.0
1129
                If IsNumeric(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString()) Then
1130
                    dAngle = Double.Parse(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString())
1131
                End If
1132
                Dim dLocationX As Double = 0.0
1133
                Dim dLocationY As Double = 0.0
1134
                Dim dX As Double = 0.0
1135
                Dim dY As Double = 0.0
1136

    
1137
                If ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY) Then
1138
                    dX = dLocationX
1139
                    dY = dLocationY
1140
                    ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1141
                    _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1142
                    SetListBoxItems(ListBox_Result, "Place Equipment.." & sUid & " (" & dLocationX & "," & dLocationY & ")..." & _iEquipmentcnt & " count ")
1143

    
1144
                    _iEquipmentcnt = _iEquipmentcnt + 1
1145
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Equipment : " & sUid)
1146
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Equipment Name : " & sEqpName)
1147
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1148
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
1149
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Equipment Count : " & _iEquipmentcnt)
1150

    
1151

    
1152
                End If
1153
            End If
1154
        Catch ex As Exception
1155

    
1156
        End Try
1157

    
1158

    
1159
    End Sub
1160

    
1161
    Private Function PlacePipingOPC(ByVal sUid As String, ByVal oOPCRow As DataRow, ByVal oAttribute_Dt As DataTable, ByVal sLineNoText As String) As LMSymbol
1162
        Try
1163
            Dim oAttributeRow() As DataRow
1164
            If oAttribute_Dt.Rows.Count > 0 Then
1165
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sUid + "'")
1166
            End If
1167
            Dim oDatasource As Object = _Placement.PIDDataSource
1168
            Dim sSymbolCompType As String = oOPCRow(_XML_SYMBOL_TYPE).ToString()
1169
            Dim sSystemPath As String = oOPCRow(_XML_SYMBOL_SYSTEMPATH).ToString()
1170
            Dim sClass As String = oOPCRow(_XML_SYMBOL_CLASS).ToString()
1171
            Dim sLocation As String = oOPCRow(_XML_SYMBOL_LOCATION).ToString()
1172
            Dim sOriginalPoint As String = oOPCRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
1173
            Dim dAngle As Double = 0.0
1174
            If IsNumeric(oOPCRow(_XML_SYMBOL_ANGLE).ToString()) Then
1175
                dAngle = Double.Parse(oOPCRow(_XML_SYMBOL_ANGLE).ToString())
1176
            End If
1177

    
1178
            Dim dLocationX As Double = 0.0
1179
            Dim dLocationY As Double = 0.0
1180
            Dim dX As Double = 0.0
1181
            Dim dY As Double = 0.0
1182
            Dim oLMSymbol As LMSymbol = Nothing
1183
            If ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY) Then
1184
                dX = dLocationX
1185
                dY = dLocationY
1186
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1187
                _iPipintOpccnt = _iPipintOpccnt + 1
1188
                oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1189
                '모델링된 형상은 Drawing True 로 처리
1190
                oOPCRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
1191
                SetListBoxItems(ListBox_Result, "Place Piping OPC.." & sUid & " (" & dLocationX & "," & dLocationY & ")..." & _iPipintOpccnt & " count ")
1192
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Piping OPC : " & sUid & "")
1193
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
1194
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oOPCRow(_XML_SYMBOL_Conn1_Uid).ToString())
1195
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oOPCRow(_XML_SYMBOL_Conn2_Uid).ToString())
1196
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1197
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
1198
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OPC Count : " & _iPipintOpccnt)
1199

    
1200
                Dim dConn_X1 As Double, dConn_Y1 As Double, dConn_X2 As Double, dConn_Y2 As Double
1201
                _Placement.PIDConnectPointLocation(oLMSymbol, 1, dConn_X1, dConn_Y1)
1202
                _Placement.PIDConnectPointLocation(oLMSymbol, 2, dConn_X2, dConn_Y2)
1203

    
1204
                'Dim oAddrow As DataRow = _ResultModeling_DT.NewRow()
1205
                'oAddrow(_Modeling_Uid) = sUid
1206
                'oAddrow(_Modeling_Location_X) = dLocationX
1207
                'oAddrow(_Modeling_Location_Y) = dLocationY
1208
                'oAddrow(_Modeling_LineNoUid) = sLineUid
1209
                'oAddrow(_Modeling_Type) = sSymbolCompType
1210
                'oAddrow(_Modeling_Connection1_X) = dConn_X1
1211
                'oAddrow(_Modeling_Connection1_Y) = dConn_Y1
1212
                'oAddrow(_Modeling_Connection2_X) = dConn_X2
1213
                'oAddrow(_Modeling_Connection2_X) = dConn_Y2
1214
                'oAddrow(_Modeling_LMSymbol) = oLMSymbol
1215

    
1216
                '_ResultModeling_DT.Rows.Add(oAddrow)
1217
            End If
1218
            _Itemcnt = _Itemcnt + 1
1219
            Dim dCalcProgressValue As Double = (_Itemcnt / _allItem) * 100
1220
            SetProgressbar(ProgressBar_Status, dCalcProgressValue)
1221
            Label_Progress.Text = Math.Round(dCalcProgressValue, 0) & "%"
1222
            Return oLMSymbol
1223
        Catch ex As Exception
1224

    
1225
        End Try
1226
        Return Nothing
1227

    
1228
    End Function
1229

    
1230
    Private Sub AddProgress()
1231
        _Itemcnt = _Itemcnt + 1
1232
        Dim dCalcProgressValue As Double = (_Itemcnt / _allItem) * 100
1233
        SetProgressbar(ProgressBar_Status, dCalcProgressValue)
1234
        Label_Progress.Text = Math.Round(dCalcProgressValue, 0) & "%"
1235
    End Sub
1236
    Private Function DrawSymbol(ByVal sUid As String, ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal oLine_Dt As DataTable) As Boolean
1237
        Try
1238

    
1239
            Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_UID & " = '" + sUid + "'")
1240
                Dim oAttributeRow() As DataRow
1241
            If oAttribute_Dt.Rows.Count > 0 Then
1242
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sUid + "'")
1243
            End If
1244

    
1245
            If oSymbolRow.Length > 0 Then
1246
                Dim oDatasource As Object = _Placement.PIDDataSource
1247
                Dim sSymbolCompType As String = oSymbolRow(0)(_XML_SYMBOL_TYPE).ToString()
1248
                Dim sSystemPath As String = oSymbolRow(0)(_XML_SYMBOL_SYSTEMPATH).ToString()
1249
                Dim sClass As String = oSymbolRow(0)(_XML_SYMBOL_CLASS).ToString()
1250
                Dim sLocation As String = oSymbolRow(0)(_XML_SYMBOL_LOCATION).ToString()
1251
                Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
1252
                Dim dAngle As Double = 0.0
1253
                If IsNumeric(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString()) Then
1254
                    dAngle = Double.Parse(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString())
1255
                End If
1256

    
1257
                Dim objSymbol As LMSymbol
1258
                Dim dLocationX As Double = 0.0
1259
                Dim dLocationY As Double = 0.0
1260
                Dim dX As Double = 0.0
1261
                Dim dY As Double = 0.0
1262

    
1263
                If ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY) Then
1264
                    dX = dLocationX
1265
                    dY = dLocationY
1266
                    If sSymbolCompType = "" Or sSymbolCompType = "Piping OPC's" Then
1267
                        FindConnectionLine(oLine_Dt, dX, dY)
1268
                    End If
1269

    
1270
                    ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1271
                    Dim oInstrument As LMInstrument
1272
                    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
1273
                        _iInstrumentcnt = _iInstrumentcnt + 1
1274
                        objSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1275
                        SetListBoxItems(ListBox_Result, "Place Instrument..(" & dLocationX & "," & dLocationY & ")..." & _iInstrumentcnt & " count ")
1276
                        oInstrument = oDatasource.GetInstrument(objSymbol.ModelItemID)
1277
                        Try
1278
                            If oAttributeRow.Length > 0 Then
1279
                                For Each oAttribute In oAttributeRow
1280
                                    Try
1281
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
1282
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
1283
                                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
1284
                                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
1285
                                    Catch ex As Exception
1286

    
1287
                                    End Try
1288

    
1289
                                Next
1290
                                oInstrument.Commit()
1291
                            End If
1292
                        Catch ex As Exception
1293
                        End Try
1294
                    ElseIf sSymbolCompType.ToUpper() = _DB_FITTINGS.ToUpper() Then
1295
                        _iValvecnt = _iValvecnt + 1
1296
                        _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1297
                        SetListBoxItems(ListBox_Result, "Place Valve..(" & dLocationX & "," & dLocationY & ")..." & _iValvecnt & " count ")
1298

    
1299
                    ElseIf sSymbolCompType.ToUpper() = _SYMBOL_FITTINGS.ToUpper() Then
1300
                        _iFittingcnt = _iFittingcnt + 1
1301
                        If sSystemPath.Contains(",") Then
1302

    
1303
                            Dim sDuplicatePath As String() = sSystemPath.Split(",")
1304
                            Dim sMainSymbol As String = ""
1305
                            Dim sSubSymbol As String = ""
1306
                            For Each sPath In sDuplicatePath
1307
                                If sMainSymbol = "" Then
1308
                                    sMainSymbol = sPath.Replace(vbLf, "")
1309
                                Else
1310
                                    sSubSymbol = sPath.Replace(vbLf, "")
1311
                                End If
1312
                            Next
1313
                            Dim oSymbolObj As LMSymbol = _Placement.PIDPlaceSymbol(sMainSymbol, dX, dY, , dAngle)
1314
                            Dim dConnpos_x As Double = 0.0
1315
                            Dim dConnpos_y As Double = 0.0
1316
                            _Placement.PIDConnectPointLocation(oSymbolObj, 2, dConnpos_x, dConnpos_y)
1317
                            '   _Placement.PIDPlaceSymbol(sSubSymbol, dConnpos_x, dConnpos_y, dAngle, TargetItem:=oSymbolObj.AsLMRepresentation)
1318
                            _Placement.PIDPlaceSymbol(sSubSymbol, dConnpos_x, dConnpos_y,, dAngle)
1319

    
1320
                        Else
1321
                            _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1322
                        End If
1323

    
1324

    
1325
                        SetListBoxItems(ListBox_Result, "Place Fitting..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
1326
                    ElseIf sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() And sClass.ToUpper() = _SYMBOL_ACTUATORS.ToUpper() Then
1327
                        _iFittingcnt = _iFittingcnt + 1
1328
                        Dim sDuplicatePath As String() = sSystemPath.Split(",")
1329
                        Dim sMainSymbol As String = ""
1330
                        Dim sSubSymbol As String = ""
1331
                        For Each sPath In sDuplicatePath
1332
                            If sMainSymbol = "" Then
1333
                                sMainSymbol = sPath.Replace(vbLf, "")
1334
                            Else
1335
                                sSubSymbol = sPath.Replace(vbLf, "")
1336
                            End If
1337
                        Next
1338
                        Dim oSymbolObj As LMSymbol = _Placement.PIDPlaceSymbol(sMainSymbol, dX, dY, , dAngle)
1339
                        Dim dSymbolpos_x As Double = oSymbolObj.XCoordinate
1340
                        Dim dSymbolpos_y As Double = oSymbolObj.YCoordinate
1341
                        _Placement.PIDPlaceSymbol(sSubSymbol, dSymbolpos_x, dSymbolpos_y, , dAngle, TargetItem:=oSymbolObj.AsLMAItem)
1342

    
1343
                    Else
1344
                        _iFittingcnt = _iFittingcnt + 1
1345
                        _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1346
                        SetListBoxItems(ListBox_Result, "Place Fitting..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
1347
                    End If
1348

    
1349
                End If
1350
                _Itemcnt = _Itemcnt + 1
1351
                Dim dCalcProgressValue As Double = (_Itemcnt / _allItem) * 100
1352
                SetProgressbar(ProgressBar_Status, dCalcProgressValue)
1353
                Label_Progress.Text = Math.Round(dCalcProgressValue, 0) & "%"
1354
            End If
1355

    
1356
        Catch ex As Exception
1357
            Return False
1358
        End Try
1359
    End Function
1360

    
1361

    
1362
    Private Sub FindConnectionLine(ByVal oLine_Dt As DataTable, ByRef dx As Double, ByRef dy As Double)
1363

    
1364
        Try
1365
            For Each oRow In oLine_Dt.Rows
1366
                Dim sStartpoint As String = oRow(_XML_LINE_STARTPOINT).ToString()
1367
                Dim sEndpoint As String = oRow(_XML_LINE_ENDPOINT).ToString()
1368
                Dim d기준s_x As Double = 0
1369
                Dim d기준s_y As Double = 0
1370
                Dim d기준e_x As Double = 0
1371
                Dim d기준e_y As Double = 0
1372
                ConvertPointBystring(sStartpoint, d기준s_x, d기준s_y)
1373
                ConvertPointBystring(sEndpoint, d기준e_x, d기준e_y)
1374
                If dx + 300 > d기준s_x And dx - 300 < d기준s_x And dy + 300 > d기준s_y And dy - 300 < d기준s_y Then
1375
                    dx = d기준s_x
1376
                    dy = d기준s_y
1377
                ElseIf dx + 300 > d기준e_x And dx - 300 < d기준e_x And dy + 300 > d기준e_y And dy - 300 < d기준e_y Then
1378
                    dx = d기준e_x
1379
                    dy = d기준e_y
1380
                End If
1381
            Next
1382
        Catch ex As Exception
1383
        End Try
1384
    End Sub
1385

    
1386

    
1387
    Dim _라인보정기준값 As Integer = 10
1388

    
1389
    Private Function 라인보정(ByRef oLine_Dt As DataTable, ByVal sUid As String, ByRef dsx As Double, ByRef dsy As Double,
1390
                                      ByRef dex As Double, ByRef dey As Double)
1391
        Try
1392
            Dim bCheck라인 As Boolean = False
1393
            '일치하는 Line 찾기
1394
            For Each oRow In oLine_Dt.Rows
1395
                Dim sStartpoint As String = oRow(_XML_LINE_STARTPOINT).ToString()
1396
                Dim sEndpoint As String = oRow(_XML_LINE_ENDPOINT).ToString()
1397
                Dim sBUid As String = oRow(_XML_LINE_UID).ToString()
1398
                If sBUid <> sUid Then
1399
                    Dim d기준s_x As Double = 0
1400
                    Dim d기준s_y As Double = 0
1401
                    Dim d기준e_x As Double = 0
1402
                    Dim d기준e_y As Double = 0
1403
                    ConvertPointBystring(sStartpoint, d기준s_x, d기준s_y)
1404
                    ConvertPointBystring(sEndpoint, d기준e_x, d기준e_y)
1405

    
1406
                    If (dsx = d기준s_x And dsy = d기준s_y) Or (dsx = d기준e_x And dsy = d기준e_y) Or
1407
                       (dex = d기준s_x And dey = d기준s_y) Or (dex = d기준e_x And dey = d기준e_y) Then
1408
                        bCheck라인 = True
1409
                    End If
1410
                End If
1411
            Next
1412

    
1413
            If bCheck라인 = False Then
1414
                For Each oRow In oLine_Dt.Rows
1415
                    Dim sStartpoint As String = oRow(_XML_LINE_STARTPOINT).ToString()
1416
                    Dim sEndpoint As String = oRow(_XML_LINE_ENDPOINT).ToString()
1417
                    Dim sBUid As String = oRow(_XML_LINE_UID).ToString()
1418
                    If sBUid <> sUid Then
1419
                        Dim d기준s_x As Double = 0
1420
                        Dim d기준s_y As Double = 0
1421
                        Dim d기준e_x As Double = 0
1422
                        Dim d기준e_y As Double = 0
1423
                        ConvertPointBystring(sStartpoint, d기준s_x, d기준s_y)
1424
                        ConvertPointBystring(sEndpoint, d기준e_x, d기준e_y)
1425
                        If ((dsx - _라인보정기준값 <= d기준s_x And dsx + _라인보정기준값 >= d기준s_x) And (dsy - _라인보정기준값 <= d기준s_y And dsy + _라인보정기준값 >= d기준s_y)) Then
1426
                            oRow(_XML_LINE_STARTPOINT) = dsx & "," & dsy
1427
                            bCheck라인 = True
1428
                            Exit For
1429
                        ElseIf ((dsx - _라인보정기준값 <= d기준e_x And dsx + _라인보정기준값 >= d기준e_x) And (dsy - _라인보정기준값 <= d기준e_y And dsy + _라인보정기준값 >= d기준e_y)) Then
1430
                            oRow(_XML_LINE_ENDPOINT) = dsx & "," & dsy
1431
                            bCheck라인 = True
1432
                            Exit For
1433
                        ElseIf ((dex - _라인보정기준값 <= d기준s_x And dex + _라인보정기준값 >= d기준s_x) And (dey - _라인보정기준값 <= d기준s_y And dey + _라인보정기준값 >= d기준s_y)) Then
1434
                            oRow(_XML_LINE_STARTPOINT) = dex & "," & dey
1435
                            bCheck라인 = True
1436
                            Exit For
1437
                        ElseIf ((dex - _라인보정기준값 <= d기준e_x And dex + _라인보정기준값 >= d기준e_x) And (dey - _라인보정기준값 <= d기준e_y And dey + _라인보정기준값 >= d기준e_y)) Then
1438
                            oRow(_XML_LINE_ENDPOINT) = dex & "," & dey
1439
                            bCheck라인 = True
1440
                            Exit For
1441
                        End If
1442

    
1443
                    End If
1444
                Next
1445
            End If
1446

    
1447
            Return bCheck라인
1448
        Catch ex As Exception
1449
            Return False
1450
        End Try
1451

    
1452

    
1453
    End Function
1454

    
1455
    Private Function FindOverlapLine(ByVal oLine_Dt As DataTable, ByVal sUid As String, ByRef dsx As Double, ByRef dsy As Double,
1456
                                      ByRef dex As Double, ByRef dey As Double)
1457
        Try
1458
            Dim bCheckOverlap As Boolean = False
1459
            For Each oRow In oLine_Dt.Rows
1460
                Dim sStartpoint As String = oRow(_XML_LINE_STARTPOINT).ToString()
1461
                Dim sEndpoint As String = oRow(_XML_LINE_ENDPOINT).ToString()
1462
                Dim sBUid As String = oRow(_XML_LINE_UID).ToString()
1463
                If sBUid <> sUid Then
1464
                    Dim d기준s_x As Double = 0
1465
                    Dim d기준s_y As Double = 0
1466
                    Dim d기준e_x As Double = 0
1467
                    Dim d기준e_y As Double = 0
1468
                    ConvertPointBystring(sStartpoint, d기준s_x, d기준s_y)
1469
                    ConvertPointBystring(sEndpoint, d기준e_x, d기준e_y)
1470
                    If (d기준s_x <= dsx And d기준e_x >= dex And
1471
                        d기준s_y <= dsy And d기준e_y >= dey) Then
1472
                        '겹쳐서 오버되는 길이가 오버되지 않는 길이의 10%미만일때 겹치는 y축좌표를 겹치는점까지 설정
1473
                        If dsy - d기준s_y > d기준e_y - dey Then
1474
                            Dim dResultCalc As Double = ((d기준e_y - dey) / (dsy - d기준s_y)) * 100
1475
                            If dResultCalc < 10 Then
1476
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1477
                                Dim dCalcY As Double = Math.Abs(d기준s_y - d기준e_y)
1478
                                Dim dCalcStartX As Double = Math.Abs(dsx - d기준s_x)
1479
                                Dim dCalcStartY As Double = (dCalcY * dCalcStartX) / dCalcX
1480
                                If dCalcStartY = 0 Then
1481
                                    dey = d기준e_y
1482
                                Else
1483
                                    dey = dCalcStartY
1484
                                End If
1485
                            End If
1486
                        Else
1487
                            '  Dim dResultCalc As Double = ((dsy - d기준s_y) / (d기준e_y - dey)) * 100
1488
                            Dim dResultCalc As Double = ((d기준e_y - dey) / (dsy - d기준s_y)) * 100
1489
                            If dResultCalc < 10 Then
1490
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1491
                                Dim dCalcY As Double = Math.Abs(d기준e_y - d기준s_y)
1492
                                Dim dCalcStartX As Double = Math.Abs(dsx - d기준s_x)
1493
                                Dim dCalcStartY As Double = (dCalcY * dCalcStartX) / dCalcX
1494
                                If dCalcStartY = 0 Then
1495
                                    dsy = d기준s_y
1496
                                Else
1497
                                    dsy = dCalcStartY
1498
                                End If
1499
                            End If
1500
                        End If
1501
                        bCheckOverlap = True
1502
                    ElseIf (d기준s_x <= dsx And d기준e_x >= dex) And
1503
                            d기준s_y <= dey And d기준e_y >= dsy Then
1504
                        '겹쳐서 오버되는 길이가 오버되지 않는 길이의 10%미만일때 겹치는 y축좌표를 겹치는점까지 설정
1505
                        If dey - d기준s_y > d기준e_y - dsy Then
1506
                            Dim dResultCalc As Double = ((d기준e_y - dey) / (dsy - d기준s_y)) * 100
1507
                            If dResultCalc < 10 Then
1508
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1509
                                Dim dCalcY As Double = Math.Abs(d기준s_y - d기준e_y)
1510
                                Dim dCalcStartX As Double = Math.Abs(dsx - d기준s_x)
1511
                                Dim dCalcStartY As Double = (dCalcY * dCalcStartX) / dCalcX
1512
                                If dCalcStartY = 0 Then
1513
                                    dsy = d기준e_y
1514
                                Else
1515
                                    dsy = dCalcStartY
1516
                                End If
1517

    
1518
                            End If
1519
                            '겹쳐서 오버되는 길이가 오버되지 않는 길이의 10%미만일때 겹치는 y축좌표를 겹치는점까지 설정
1520
                        Else
1521
                            '  Dim dResultCalc As Double = (Math.Abs((dsy - d기준s_y)) / Math.Abs((d기준e_y - dey))) * 100
1522
                            Dim dResultCalc As Double = ((d기준e_y - dey) / (dsy - d기준s_y)) * 100
1523
                            If dResultCalc < 10 Then
1524
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1525
                                Dim dCalcY As Double = Math.Abs(d기준e_y - d기준s_y)
1526
                                Dim dCalcStartX As Double = Math.Abs(dsx - d기준s_x)
1527
                                Dim dCalcStartY As Double = (dCalcY * dCalcStartX) / dCalcX
1528
                                If dCalcStartY = 0 Then
1529
                                    dey = d기준e_y
1530
                                Else
1531
                                    dey = dCalcStartY
1532
                                End If
1533
                            End If
1534
                        End If
1535
                        bCheckOverlap = True
1536
                    ElseIf (d기준s_x <= dsx And d기준e_x >= dex) And
1537
                            d기준s_y <= dey And d기준e_y >= dsy Then
1538

    
1539
                        If dsx - d기준s_x > d기준e_x - dex Then
1540
                            Dim dResultCalc As Double = ((d기준e_x - dex) / (dsx - d기준s_x)) * 100
1541
                            If dResultCalc < 10 Then
1542
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1543
                                Dim dCalcY As Double = Math.Abs(d기준s_y - d기준e_y)
1544
                                Dim dCalcStartY As Double = Math.Abs(dsy - d기준s_y)
1545
                                Dim dCalcStartX As Double = (dCalcX * dCalcStartY) / dCalcY
1546
                                If dCalcStartX = 0 Then
1547
                                    dex = d기준e_x
1548
                                Else
1549
                                    dex = dCalcStartX
1550
                                End If
1551
                            End If
1552
                        Else
1553
                            '  Dim dResultCalc As Double = ((dsy - d기준s_y) / (d기준e_y - dey)) * 100
1554
                            Dim dResultCalc As Double = ((d기준e_x - dex) / (dsx - d기준s_x)) * 100
1555
                            If dResultCalc < 10 Then
1556
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1557
                                Dim dCalcY As Double = Math.Abs(d기준e_y - d기준s_y)
1558
                                Dim dCalcStartY As Double = Math.Abs(dsy - d기준s_y)
1559
                                Dim dCalcStartX As Double = (dCalcX * dCalcStartY) / dCalcY
1560
                                If dCalcStartX = 0 Then
1561
                                    dsx = d기준s_x
1562
                                Else
1563
                                    dsx = dCalcStartX
1564
                                End If
1565
                            End If
1566
                        End If
1567
                        bCheckOverlap = True
1568
                    ElseIf (d기준s_x <= dsx And d기준e_x >= dex) And
1569
                            d기준s_y <= dey And d기준e_y >= dsy Then
1570

    
1571
                        If dex - d기준s_x > d기준e_x - dsx Then
1572
                            Dim dResultCalc As Double = ((d기준e_x - dex) / (dsx - d기준s_x)) * 100
1573
                            If dResultCalc < 10 Then
1574
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1575
                                Dim dCalcY As Double = Math.Abs(d기준s_y - d기준e_y)
1576
                                Dim dCalcStartY As Double = Math.Abs(dsy - d기준s_y)
1577
                                Dim dCalcStartX As Double = (dCalcX * dCalcStartY) / dCalcY
1578
                                If dCalcStartX = 0 Then
1579
                                    dsx = d기준e_x
1580
                                Else
1581
                                    dsx = dCalcStartX
1582
                                End If
1583
                            End If
1584
                        Else
1585
                            ' Dim dResultCalc As Double = ((dsy - d기준s_y) / (d기준e_y - dey)) * 100
1586
                            Dim dResultCalc As Double = ((d기준e_x - dex) / (dsx - d기준s_x)) * 100
1587
                            If dResultCalc < 10 Then
1588
                                Dim dCalcX As Double = Math.Abs(d기준e_x - d기준s_x)
1589
                                Dim dCalcY As Double = Math.Abs(d기준e_y - d기준s_y)
1590
                                Dim dCalcStartY As Double = Math.Abs(dsy - d기준s_y)
1591
                                Dim dCalcStartX As Double = (dCalcX * dCalcStartY) / dCalcY
1592
                                If dCalcStartX = 0 Then
1593
                                    dex = d기준s_x
1594
                                Else
1595
                                    dex = dCalcStartX
1596
                                End If
1597
                            End If
1598

    
1599
                        End If
1600
                        bCheckOverlap = True
1601
                    End If
1602
                End If
1603
            Next
1604

    
1605
            Return bCheckOverlap
1606
        Catch ex As Exception
1607
            Return False
1608
        End Try
1609
    End Function
1610

    
1611
    Private Sub CalcSperateLine(ByRef dStartX As Double, ByRef dStartY As Double,
1612
                                      ByRef dEndX As Double, ByRef dEndY As Double)
1613
        Try
1614
            Dim dRange As Double = 1 'Line 전체 길이의 10%씩 늘이기
1615
            If Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
1616
                Dim dCalc_x As Double = Math.Abs(dStartX - dEndX) * 0.1
1617
                If dStartX > dEndX Then
1618
                    dStartX = dStartX + dCalc_x
1619
                    dEndX = dEndX - dCalc_x
1620
                Else
1621
                    dEndX = dEndX + dCalc_x
1622
                    dStartX = dStartX - dCalc_x
1623
                End If
1624
            Else
1625
                Dim dCalc_y As Double = Math.Abs(dStartY - dEndY) * 0.1
1626
                If dStartY > dEndY Then
1627
                    dStartY = dStartY + dCalc_y
1628
                    dEndY = dEndY - dCalc_y
1629
                Else
1630
                    dEndY = dEndY + dCalc_y
1631
                    dStartY = dStartY - dCalc_y
1632
                End If
1633
            End If
1634

    
1635
        Catch ex As Exception
1636

    
1637
        End Try
1638

    
1639

    
1640
    End Sub
1641

    
1642
    Private Function DrawLineNo(ByVal oPipeRun_Dt As DataTable, ByVal CLine_No As Line_no) As Boolean
1643
        Try
1644
            Dim oDatasource As Object = _Placement.PIDDataSource
1645
            Dim sLocation = CLine_No.Location
1646
            Dim dLocationx As Double = 0.0
1647
            Dim dLocationy As Double = 0.0
1648

    
1649
            Dim dX As Double = 0.0
1650
            Dim dY As Double = 0.0
1651
            If ConvertPointBystring(sLocation, dLocationx, dLocationy) Then
1652
                dX = dLocationx
1653
                dY = dLocationy
1654

    
1655
                For Each oRow In oPipeRun_Dt.Rows
1656
                    Dim dStartx As Double = Double.Parse(oRow("startx").ToString())
1657
                    Dim dStarty As Double = Double.Parse(oRow("starty").ToString())
1658
                    Dim dEndx As Double = Double.Parse(oRow("endx").ToString())
1659
                    Dim dEndy As Double = Double.Parse(oRow("endy").ToString())
1660

    
1661
                    Dim dStartSum As Double = Math.Abs(dStartx - dLocationx) + Math.Abs(dStarty - dLocationy)
1662
                    Dim dEndSum As Double = Math.Abs(dEndx - dLocationx) + Math.Abs(dEndy - dLocationy)
1663
                    If dStartSum > dEndSum Then
1664
                        oRow("value") = dEndSum
1665
                    Else
1666
                        oRow("value") = dStartSum
1667
                    End If
1668

    
1669
                Next
1670
                Dim dataView As New DataView(oPipeRun_Dt)
1671
                dataView.Sort = " value asc"
1672
                Dim oDt As DataTable = dataView.ToTable()
1673
                If oDt.Rows.Count > 0 Then
1674
                    Try
1675
                        Dim oPiperun As LMPipeRun = CType(oDt.Rows(0)("Piperun"), LMPipeRun)
1676
                        ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1677
                        Dim dLineNoLocation(2) As Double
1678
                        dLineNoLocation(1) = dX
1679
                        dLineNoLocation(2) = dY
1680
                        'Label
1681
                        Dim sSystemPath As String = CLine_No.SystemPath
1682
                        Dim dAngle As Double = CLine_No.Angle
1683
                        Dim labelpersist As LMLabelPersist
1684

    
1685
                        For Each representation In oPiperun.Representations
1686
                            If representation.RepresentationType = "Connector" Then
1687
                                labelpersist = _Placement.PIDPlaceLabel(sSystemPath,
1688
                                dLineNoLocation,, dAngle, LabeledItem:=representation)
1689
                                _iPipeLineNocnt = _iPipeLineNocnt + 1
1690
                                SetListBoxItems(ListBox_Result, "Place PipeLineNo Label.." & CLine_No.Uid & " (" & dLocationx & "," & dLocationy & ")..." & _iPipeLineNocnt & " count ")
1691

    
1692
                                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & CLine_No.Uid & "")
1693
                                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & CLine_No.Text)
1694
                                'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
1695
                                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Origina lPoint : " & dLocationx & "," & dLocationy)
1696
                                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "PipeLineNo Count : " & _iPipeLineNocnt)
1697
                            End If
1698
                        Next
1699
                    Catch ex As Exception
1700

    
1701
                    End Try
1702

    
1703

    
1704
                End If
1705

    
1706

    
1707

    
1708
                Return True
1709
            Else
1710
                Return False
1711
            End If
1712

    
1713
        Catch ex As Exception
1714
            Return False
1715
        End Try
1716
    End Function
1717

    
1718

    
1719
    Private Sub InitItemCount()
1720
        _iPipeLineNocnt = 0
1721
        _iPipecnt = 1
1722
        _iFittingcnt = 1
1723
        _iValvecnt = 0
1724
        _iInstrumentcnt = 0
1725
        _iEquipmentcnt = 0
1726
        _iNozzlecnt = 1
1727
        _iPipintOpccnt = 0
1728

    
1729
    End Sub
1730

    
1731
    Private Function GetAllCheckNodeCount() As Integer
1732
        _allItem = 0
1733
        For i = 0 To Tree_Result.Nodes.Count - 1
1734
            For j = 0 To Tree_Result.Nodes(i).Nodes.Count - 1
1735
                For k = 0 To Tree_Result.Nodes(i).Nodes(j).Nodes.Count - 1
1736
                    For l = 0 To Tree_Result.Nodes(i).Nodes(j).Nodes(k).Nodes.Count - 1
1737
                        If Tree_Result.Nodes(i).Nodes(j).Nodes(k).Nodes(l).Checked = True Then
1738
                            _allItem = _allItem + 1
1739
                        End If
1740
                    Next
1741
                Next
1742
            Next
1743
        Next
1744
        Return _allItem
1745
    End Function
1746

    
1747

    
1748
    ''' <summary>
1749
    ''' Equipment 모델링
1750
    ''' </summary>
1751
    Private Sub EquipmentModeling(ByVal oDwg_Dt As DataTable)
1752
        For Each oDrwing As TreeNode In Tree_Result.Nodes
1753
            For Each oDwgNode As TreeNode In oDrwing.Nodes
1754
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
1755
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
1756
                If CDrawing IsNot Nothing Then
1757
                    If OpenSPPID(oDwg_Dt, oDwgNode.Text) Then
1758

    
1759
                        For Each oNode As TreeNode In oDwgNode.Nodes
1760
                            Dim iItemcnt As Integer = 0
1761
                            Dim sNodeUid As String = oNode.Name
1762
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
1763
                            '1.Equipment
1764
                            '2.Piping OPC
1765
                            '3.OPC 시작되는 Line
1766
                            'Equipment 생성
1767
                            Dim CEqpNo As Eqp_no = GetEqpNo(CDrawing, sNodeUid)
1768
                            If CEqpNo IsNot Nothing Then
1769
                                Dim oSymbol_Dt As DataTable = CEqpNo.Dt_Equipment
1770
                                Dim oAttribute_Dt As DataTable = CEqpNo.Dt_Attribute
1771
                                For Each oSymbolNode As TreeNode In oNode.Nodes
1772
                                    If oSymbolNode.Checked Then
1773
                                        Dim sUid As String = oSymbolNode.Name
1774
                                        PlaceEquipment(sUid, oSymbol_Dt, oAttribute_Dt, CEqpNo.Text)
1775
                                    End If
1776
                                Next
1777
                            End If
1778
                        Next
1779
                    End If
1780
                End If
1781
            Next
1782
        Next
1783
    End Sub
1784

    
1785
    Private Sub ManualCheckNode(ByRef oDt As DataTable)
1786
        For Each oDrwing As TreeNode In Tree_Result.Nodes
1787
            For Each oDwgNode As TreeNode In oDrwing.Nodes
1788
                For Each oNode As TreeNode In oDwgNode.Nodes
1789
                    For Each oSymbolNode As TreeNode In oNode.Nodes
1790
                        Dim sUid As String = oSymbolNode.Name
1791
                        'Dim oSelectRows() As DataRow = oDt.Select("[" & _XML_SYMBOL_UID & "] = '" & sUid &
1792
                        '                                      "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False'")
1793
                        If oSymbolNode.Checked Then
1794
                            Dim oSelectRows() As DataRow = oDt.Select("[" & _XML_SYMBOL_UID & "] = '" & sUid & "'")
1795
                            If oSelectRows.Length = 1 Then
1796
                                oSelectRows(0)(_XML_SYMBOL_DRAWING_TF) = "FALSE"
1797

    
1798
                                If oSymbolNode.Checked Then
1799
                                    oSelectRows(0)(_XML_SYMBOL_Check) = "TRUE"
1800
                                Else
1801
                                    oSelectRows(0)(_XML_SYMBOL_Check) = "FALSE"
1802
                                End If
1803
                            End If
1804

    
1805
                        End If
1806

    
1807
                    Next
1808
                Next
1809
            Next
1810
        Next
1811

    
1812
    End Sub
1813

    
1814
    Private Function FinalSymbolModeling(ByVal oCurrentSymbolRow As DataRow, ByVal oLine_Dt As DataTable, ByVal oSymbol_Dt As DataTable,
1815
                                  ByVal oAttribute_Dt As DataTable) As String
1816
        Dim sReturnUid As String = ""
1817
        Dim sOriginalPoint As String = ""
1818
        Dim dOriginal_x As Double = 0.0
1819
        Dim dOriginal_y As Double = 0.0
1820

    
1821
        Dim dConn1_x As Double = 0.0
1822
        Dim dConn1_y As Double = 0.0
1823
        Dim dConn2_x As Double = 0.0
1824
        Dim dConn2_y As Double = 0.0
1825
        Dim dConn3_x As Double = 0.0
1826
        Dim dConn3_y As Double = 0.0
1827
        Dim dConn4_x As Double = 0.0
1828
        Dim dConn4_y As Double = 0.0
1829

    
1830
        Dim sUid As String = oCurrentSymbolRow(_XML_SYMBOL_UID)
1831
        Dim sSystemPath As String = oCurrentSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
1832
        Dim dAngle As Double = oCurrentSymbolRow(_XML_SYMBOL_ANGLE)
1833
        Dim sLineNoText As String = oCurrentSymbolRow(_XML_LINENO_TEXT)
1834
        Dim sLineNoUid As String = oCurrentSymbolRow(_XML_LINE_LINENOUID).ToString()
1835
        sOriginalPoint = oCurrentSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
1836
        Dim sSymbolCompType As String = oCurrentSymbolRow(_XML_SYMBOL_TYPE).ToString()
1837
        ConvertPointBystring(sOriginalPoint, dOriginal_x, dOriginal_y)
1838
        ConvertPointByImage(dOriginal_x, dOriginal_y, _IMG_X, _IMG_Y)
1839

    
1840
        Dim sChildItem As String = oCurrentSymbolRow(_XML_SYMBOL_CHILD)
1841

    
1842
        'Connection 정보 체크, 모델링 되어 있는지 유무
1843
        '양 커넥션의 모델링 유무를 체크한다.
1844
        Dim sConn1Uid As String = oCurrentSymbolRow(_XML_SYMBOL_Conn1_Uid).ToString()
1845
        Dim sConn2Uid As String = oCurrentSymbolRow(_XML_SYMBOL_Conn2_Uid).ToString()
1846
        Dim sConn3Uid As String = oCurrentSymbolRow(_XML_SYMBOL_Conn3_Uid).ToString()
1847
        Dim sConn4Uid As String = oCurrentSymbolRow(_XML_SYMBOL_Conn4_Uid).ToString()
1848

    
1849
        Dim sConn1Type As String = ""
1850
        Dim sConn2Type As String = ""
1851
        Dim sConn3Type As String = ""
1852
        Dim sConn4Type As String = ""
1853

    
1854
        Dim oConn1Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn1Uid & "'")
1855
        If oConn1Rows.Length = 0 Then
1856
            oConn1Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn1Uid & "'")
1857
            If oConn1Rows.Length = 1 Then
1858
                sConn1Type = "Line"
1859
            End If
1860
        Else
1861
            sConn1Type = "Symbol"
1862
        End If
1863

    
1864
        Dim oConn2Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn2Uid & "'")
1865
        If oConn2Rows.Length = 0 Then
1866
            oConn2Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn2Uid & "'")
1867
            If oConn2Rows.Length = 1 Then
1868
                sConn2Type = "Line"
1869
            End If
1870
        Else
1871
            sConn2Type = "Symbol"
1872
        End If
1873

    
1874
        Dim oConn3Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn3Uid & "'")
1875
        If oConn3Rows.Length = 0 Then
1876
            oConn3Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn3Uid & "'")
1877
            If oConn3Rows.Length = 1 Then
1878
                sConn3Type = "Line"
1879
            End If
1880
        Else
1881
            sConn3Type = "Symbol"
1882
        End If
1883

    
1884
        Dim oConn4Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn4Uid & "'")
1885
        If oConn4Rows.Length = 0 Then
1886
            oConn4Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn4Uid & "'")
1887
            If oConn4Rows.Length = 1 Then
1888
                sConn4Type = "Line"
1889
            End If
1890
        Else
1891
            sConn4Type = "Symbol"
1892
        End If
1893

    
1894
        Dim oStartLMConnector As LMConnector = Nothing
1895
        Dim oEndLMConnector As LMConnector = Nothing
1896
        Dim objInputs As PlaceRunInputs
1897
        objInputs = New PlaceRunInputs
1898
        Dim iModelingType As Integer = 0
1899
        If sConn1Type <> "" Then
1900
            ConvertPoint(oCurrentSymbolRow(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
1901
        End If
1902
        If sConn2Type <> "" Then
1903
            ConvertPoint(oCurrentSymbolRow(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
1904
        End If
1905
        If sConn3Type <> "" Then
1906
            ConvertPoint(oCurrentSymbolRow(_XML_SYMBOL_Conn3_Point).ToString(), dConn3_x, dConn3_y)
1907
        End If
1908
        If sConn4Type <> "" Then
1909
            ConvertPoint(oCurrentSymbolRow(_XML_SYMBOL_Conn4_Point).ToString(), dConn4_x, dConn4_y)
1910
        End If
1911

    
1912

    
1913

    
1914

    
1915

    
1916
        'If sConn1Type = "Line" Then
1917
        '    Dim sStartpoint As String = oCurrentSymbolRow(0)(_XML_SYMBOL_Conn1_Point).ToString()
1918
        '    ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
1919
        '    ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
1920
        'ElseIf sConn1Type = "Symbol" Then
1921
        '    ConvertPoint(oCurrentSymbolRow(0)(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
1922
        'End If
1923

    
1924
        'If sConn2Type = "Line" Then
1925
        '    Dim sEndpoint As String = oCurrentSymbolRow(0)(_XML_SYMBOL_Conn2_Point).ToString()
1926
        '    ConvertPointBystring(sEndpoint, dConn2_x, dConn2_y)
1927
        '    ConvertPointByImage(dConn2_x, dConn2_y, _IMG_X, _IMG_Y)
1928
        'ElseIf sConn2Type = "Symbol" Then
1929
        '    ConvertPoint(oCurrentSymbolRow(0)(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
1930
        'End If
1931

    
1932
        'If sConn3Type = "Line" Then
1933
        '    Dim sStartpoint As String = oCurrentSymbolRow(0)(_XML_SYMBOL_Conn3_Point).ToString()
1934
        '    ConvertPointBystring(sStartpoint, dConn3_x, dConn3_y)
1935
        '    ConvertPointByImage(dConn3_x, dConn3_y, _IMG_X, _IMG_Y)
1936
        'ElseIf sConn3Type = "Symbol" Then
1937
        '    ConvertPoint(oCurrentSymbolRow(0)(_XML_SYMBOL_Conn3_Point).ToString(), dConn3_x, dConn3_y)
1938
        'End If
1939

    
1940
        'If sConn4Type = "Line" Then
1941
        '    Dim sEndpoint As String = oCurrentSymbolRow(0)(_XML_SYMBOL_Conn4_Point).ToString()
1942
        '    ConvertPointBystring(sEndpoint, dConn4_x, dConn4_y)
1943
        '    ConvertPointByImage(dConn4_x, dConn4_y, _IMG_X, _IMG_Y)
1944
        'ElseIf sConn4Type = "Symbol" Then
1945
        '    ConvertPoint(oCurrentSymbolRow(0)(_XML_SYMBOL_Conn4_Point).ToString(), dConn4_x, dConn4_y)
1946
        'End If
1947

    
1948

    
1949

    
1950
        'If sConn1Type = "Line" And sConn2Type = "Line" Then
1951
        '    Dim sStartpoint As String = oConn1Rows(_XML_LINE_STARTPOINT).ToString()
1952
        '    ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
1953
        '    ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
1954
        '    Dim sEndpoint As String = oConn1Rows(_XML_LINE_ENDPOINT).ToString()
1955
        '    ConvertPointBystring(sEndpoint, dConn2_x, dConn2_y)
1956
        '    ConvertPointByImage(dConn2_x, dConn2_y, _IMG_X, _IMG_Y)
1957

    
1958
        'ElseIf sConn1Type = "Line" And sConn2Type = "Symbol" Then
1959
        '    Dim sStartpoint As String = oConn1Rows(_XML_LINE_STARTPOINT).ToString()
1960
        '    ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
1961
        '    ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
1962

    
1963
        '    ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
1964
        'ElseIf sConn1Type = "Symbol" And sConn2Type = "Line" Then
1965
        '    ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
1966

    
1967
        '    Dim sEndpoint As String = oConn1Rows(_XML_LINE_ENDPOINT).ToString()
1968
        '    ConvertPointBystring(sEndpoint, dConn2_x, dConn2_y)
1969
        '    ConvertPointByImage(dConn2_x, dConn2_y, _IMG_X, _IMG_Y)
1970

    
1971
        'ElseIf sConn1Type = "Symbol" And sConn2Type = "Symbol" Then
1972
        '    ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
1973
        '    ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
1974
        'ElseIf sConn1Type = "Line" And sConn2Type = "" Then
1975
        '    Dim sStartpoint As String = oConn1Rows(_XML_LINE_STARTPOINT).ToString()
1976
        '    ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
1977
        '    ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
1978

    
1979
        'ElseIf sConn1Type = "Symbol" And sConn2Type = "" Then
1980
        '    iModelingType = 6
1981
        'ElseIf sConn1Type = "" And sConn2Type = "Line" Then
1982
        '    iModelingType = 7
1983
        'ElseIf sConn1Type = "" And sConn2Type = "Symbol" Then
1984
        '    iModelingType = 8
1985
        'ElseIf sConn3Type = "Line" And sConn4Type = "Line" Then
1986
        '        iModelingType = 4
1987
        '    ElseIf sConn3Type = "Line" And sConn4Type = "Symbol" Then
1988
        '        iModelingType = 4
1989
        '    ElseIf sConn3Type = "Symbol" And sConn4Type = "Line" Then
1990
        '        iModelingType = 4
1991
        '    ElseIf sConn3Type = "Symbol" And sConn4Type = "Symbol" Then
1992
        '        iModelingType = 4
1993
        '    ElseIf sConn3Type = "Line" And sConn4Type = "" Then
1994
        '        iModelingType = 5
1995
        '    ElseIf sConn3Type = "Symbol" And sConn4Type = "" Then
1996
        '        iModelingType = 5
1997
        '    ElseIf sConn3Type = "" And sConn4Type = "Line" Then
1998
        '        iModelingType = 6
1999
        '    ElseIf sConn3Type = "" And sConn4Type = "Symbol" Then
2000
        '        iModelingType = 6
2001
        '    Else
2002
        '        iModelingType = 7
2003
        '    End If
2004

    
2005
        'If iModelingType = 1 Then
2006
        '        ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
2007
        '        ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
2008
        '    ElseIf iModelingType = 2 Then
2009
        '        ConvertPoint(oConn1Rows(0)(_XML_SYMBOL_Conn1_Point).ToString(), dConn1_x, dConn1_y)
2010
        '    ElseIf iModelingType = 3 Then
2011
        '        ConvertPoint(oConn2Rows(0)(_XML_SYMBOL_Conn2_Point).ToString(), dConn2_x, dConn2_y)
2012
        '    ElseIf iModelingType = 4 Then
2013
        '        ConvertPoint(oConn3Rows(0)(_XML_SYMBOL_Conn3_Point).ToString(), dConn3_x, dConn3_y)
2014
        '        ConvertPoint(oConn4Rows(0)(_XML_SYMBOL_Conn4_Point).ToString(), dConn4_x, dConn4_y)
2015
        '    ElseIf iModelingType = 5 Then
2016
        '        ConvertPoint(oConn3Rows(0)(_XML_SYMBOL_Conn3_Point).ToString(), dConn3_x, dConn3_y)
2017
        '    ElseIf iModelingType = 6 Then
2018
        '        ConvertPoint(oConn4Rows(0)(_XML_SYMBOL_Conn4_Point).ToString(), dConn4_x, dConn4_y)
2019
        '    End If
2020
        Dim sFirstUid As String = ""
2021
        Dim sSecondUid As String = ""
2022
        Dim oLMSymbol As LMSymbol = Nothing
2023
        Dim dPreConn_x As Double = 0
2024
        Dim dPreConn_y As Double = 0
2025
        If sConn1Type <> "" And sConn2Type <> "" Then
2026
            If sConn1Type = "Line" Then
2027
                CheckConnectionLine(dConn1_x, dConn1_y, oStartLMConnector)
2028
            Else
2029
                CheckConnectionSymbolToSymbol(oConn1Rows, dConn1_x, dConn1_y, oStartLMConnector)
2030
            End If
2031

    
2032
            If sConn2Type = "Line" Then
2033
                CheckConnectionLine(dConn2_x, dConn2_y, oEndLMConnector)
2034
            Else
2035
                CheckConnectionSymbolToSymbol(oConn2Rows, dConn2_x, dConn2_y, oEndLMConnector)
2036
            End If
2037

    
2038
            sFirstUid = CheckExistModeling(oConn1Rows(0))
2039
            sSecondUid = CheckExistModeling(oConn2Rows(0))
2040
            Dim oCurrentLMConnector As LMConnector = Nothing
2041
            'If oStartLMConnector IsNot Nothing And oEndLMConnector IsNot Nothing Then
2042

    
2043
            '    '라인을 센터점에 먼저그리기
2044
            '    'If dConn1_x <> dConn2_x And dConn1_y <> dConn2_y Then
2045
            '    '    'Angle Valve
2046
            '    '    '라인두개 긋기
2047
            '    '    objInputs.Clear()
2048
            '    '    '   objInputs.AddPoint(dConn1_x, dConn1_y)
2049
            '    '    objInputs.AddConnectorTarget(oStartLMConnector, dConn1_x, dConn1_y)
2050
            '    '    objInputs.AddPoint(dOriginal_x, dOriginal_y)
2051

    
2052

    
2053
            '    '    Dim objItem As LMAItem
2054
            '    '    Dim sLineType As String = oConn1Rows(0)(_XML_LINE_TYPE).ToString()
2055
            '    '    Dim sLine1Path As String = GetPipeType(sLineType)
2056
            '    '    sLineType = oConn2Rows(0)(_XML_LINE_TYPE).ToString()
2057
            '    '    Dim sLine2Path As String = GetPipeType(sLineType)
2058
            '    '    If sLine1Path = sLine2Path Then
2059
            '    '        objItem = _Placement.PIDCreateItem(sLine1Path)
2060
            '    '        oCurrentLMConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2061
            '    '    Else
2062
            '    '        '//서로다른선일경우 먼저 Symbol을 그리고 커넥션으로 부터 각 선까지 선을 잇는다.
2063
            '    '    End If
2064
            '    '    Dim sID_1 As String = ""
2065
            '    '    Dim sID_2 As String = ""
2066
            '    '    Dim sID_3 As String = ""
2067
            '    '    sID_1 = oStartLMConnector.ModelItemID
2068
            '    '    sID_2 = oCurrentLMConnector.ModelItemID
2069
            '    '    sID_3 = oEndLMConnector.ModelItemID
2070
            '    '    Try
2071

    
2072
            '    '        If sID_1 <> "" And sID_2 <> "" Then
2073
            '    '            Dim objSurvivorItem As LMAItem = Nothing
2074
            '    '            Dim oPipeRun1 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_1)
2075
            '    '            Dim oPipeRun2 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_2)
2076
            '    '            _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
2077
            '    '        End If
2078
            '    '    Catch ex As Exception
2079

    
2080
            '    '    End Try
2081
            '    '    objInputs.Clear()
2082
            '    '    '     objInputs.AddPoint(dOriginal_x, dOriginal_y)
2083
            '    '    objInputs.AddConnectorTarget(oStartLMConnector, dOriginal_x, dOriginal_y)
2084
            '    '    'objInputs.AddPoint(dConn2_x, dConn2_y)
2085
            '    '    objInputs.AddConnectorTarget(oEndLMConnector, dOriginal_x, dOriginal_y)
2086
            '    '    If sLine1Path = sLine2Path Then
2087
            '    '        objItem = _Placement.PIDCreateItem(sLine1Path)
2088
            '    '        oCurrentLMConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2089
            '    '    Else
2090
            '    '        '//서로다른선일경우 먼저 Symbol을 그리고 커넥션으로 부터 각 선까지 선을 잇는다.
2091
            '    '    End If
2092

    
2093
            '    '    Try
2094
            '    '        sID_1 = oEndLMConnector.ModelItemID
2095
            '    '        sID_2 = oCurrentLMConnector.ModelItemID
2096
            '    '        If sID_1 <> "" And sID_2 <> "" Then
2097
            '    '            Dim objSurvivorItem As LMAItem = Nothing
2098
            '    '            Dim oPipeRun1 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_1)
2099
            '    '            Dim oPipeRun2 As LMPipeRun = _Placement.PIDDataSource.GetPipeRun(sID_2)
2100
            '    '            _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
2101
            '    '        End If
2102
            '    '    Catch ex As Exception
2103
            '    '    End Try
2104
            '    'End If
2105
            'Else
2106
            '    If oStartLMConnector IsNot Nothing Then
2107
            '        dOriginal_x = dConn1_x
2108
            '        dOriginal_y = dConn1_y
2109
            '    Else
2110
            '        dOriginal_x = dConn2_x
2111
            '        dOriginal_y = dConn2_y
2112
            '    End If
2113
            'End If
2114
        ElseIf sConn1Type <> "" And sConn2Type = "" Then
2115
            If sConn1Type = "Line" Then
2116
                CheckConnectionLine(dConn1_x, dConn1_y, oStartLMConnector)
2117
            Else
2118
                CheckConnectionSymbolToSymbol(oConn1Rows, dConn1_x, dConn1_y, oStartLMConnector)
2119
                dOriginal_x = dConn1_x
2120
                dOriginal_y = dConn1_y
2121
            End If
2122

    
2123
            sFirstUid = CheckExistModeling(oConn1Rows(0))
2124

    
2125
        ElseIf sConn1Type = "" And sConn2Type <> "" Then
2126

    
2127
            If sConn1Type = "Line" Then
2128
                CheckConnectionLine(dConn2_x, dConn2_y, oEndLMConnector)
2129
            Else
2130
                CheckConnectionSymbolToSymbol(oConn2Rows, dConn2_x, dConn2_y, oEndLMConnector)
2131
                dOriginal_x = dConn2_x
2132
                dOriginal_y = dConn2_y
2133
            End If
2134
            sSecondUid = CheckExistModeling(oConn2Rows(0))
2135

    
2136
        ElseIf sConn3Type <> "" And sConn4Type <> "" Then
2137
            If sConn1Type = "Line" Then
2138
                CheckConnectionLine(dConn3_x, dConn3_y, oStartLMConnector)
2139
            Else
2140
                CheckConnectionSymbolToSymbol(oConn3Rows, dConn3_x, dConn3_y, oStartLMConnector)
2141
            End If
2142

    
2143
            If sConn2Type = "Line" Then
2144
                CheckConnectionLine(dConn4_x, dConn4_y, oEndLMConnector)
2145
            Else
2146
                CheckConnectionSymbolToSymbol(oConn4Rows, dConn4_x, dConn4_y, oEndLMConnector)
2147
            End If
2148

    
2149
            sFirstUid = CheckExistModeling(oConn3Rows(0))
2150
            sSecondUid = CheckExistModeling(oConn4Rows(0))
2151
            'If oStartLMConnector IsNot Nothing Then
2152
            '    dOriginal_x = dConn3_x
2153
            '    dOriginal_y = dConn3_y
2154
            'Else
2155
            '    dOriginal_x = dConn4_x
2156
            '    dOriginal_y = dConn4_y
2157
            'End If
2158

    
2159
        ElseIf sConn3Type <> "" And sConn4Type = "" Then
2160
            If sConn1Type = "Line" Then
2161
                CheckConnectionLine(dConn3_x, dConn3_y, oStartLMConnector)
2162
            Else
2163
                CheckConnectionSymbolToSymbol(oConn3Rows, dConn3_x, dConn3_y, oStartLMConnector)
2164
                dOriginal_x = dConn3_x
2165
                dOriginal_y = dConn3_y
2166
            End If
2167

    
2168
            sFirstUid = CheckExistModeling(oConn3Rows(0))
2169

    
2170
        ElseIf sConn3Type = "" And sConn4Type <> "" Then
2171
            If sConn2Type = "Line" Then
2172
                CheckConnectionLine(dConn4_x, dConn4_y, oEndLMConnector)
2173
            Else
2174
                CheckConnectionSymbolToSymbol(oConn4Rows, dConn4_x, dConn4_y, oEndLMConnector)
2175
                dOriginal_x = dConn4_x
2176
                dOriginal_y = dConn4_y
2177
            End If
2178

    
2179
            sSecondUid = CheckExistModeling(oConn4Rows(0))
2180

    
2181
        Else
2182
            '      oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle)
2183
        End If
2184

    
2185
        If sFirstUid <> "" And sSecondUid <> "" Then
2186
            sReturnUid = sSecondUid
2187
        ElseIf sFirstUid <> "" And sSecondUid = "" Then
2188
            sReturnUid = sFirstUid
2189
        ElseIf sFirstUid <> "" And sSecondUid = "" Then
2190
            sReturnUid = sFirstUid
2191
        ElseIf sSecondUid <> "" And sFirstUid = "" Then
2192
            sReturnUid = sSecondUid
2193
        ElseIf sSecondUid <> "" And sFirstUid = "" Then
2194
            sReturnUid = sSecondUid
2195
        Else
2196
            sReturnUid = ""
2197
        End If
2198

    
2199
        If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
2200
            oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle)
2201
            oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2202
        Else
2203
            If oStartLMConnector IsNot Nothing And oEndLMConnector IsNot Nothing Then
2204
                'oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle, ExistingItem:=oStartLMConnector.AsLMAItem,
2205
                '            TargetItem:=oEndLMConnector.AsLMAItem)
2206
                'oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2207
                oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle)
2208
                oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2209
            ElseIf oStartLMConnector IsNot Nothing And oEndLMConnector Is Nothing Then
2210
                oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle,,
2211
                            TargetItem:=oStartLMConnector.AsLMAItem)
2212
                oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2213
            ElseIf oStartLMConnector Is Nothing And oEndLMConnector IsNot Nothing Then
2214
                oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle,,
2215
                TargetItem:=oEndLMConnector.AsLMAItem)
2216
                oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2217
            Else
2218
                oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dOriginal_x, dOriginal_y,, dAngle)
2219
                oCurrentSymbolRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2220
            End If
2221
        End If
2222

    
2223
        '모델링 된 PipeLine 데이터 테이블 저장
2224
        Dim oAddRow As DataRow = _ModelingSymbol_Dt.NewRow
2225
        oAddRow(_XML_SYMBOL_SPID) = oLMSymbol.ModelItemID
2226
        oAddRow(_XML_SYMBOL_LMSYMBOL) = oLMSymbol
2227
        oAddRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
2228
        oAddRow(_XML_SYMBOL_CENTERPOINT_X) = dOriginal_x
2229
        oAddRow(_XML_SYMBOL_CENTERPOINT_Y) = dOriginal_y
2230
        oAddRow(_XML_SYMBOL_MIN_X) = oCurrentSymbolRow(_XML_SYMBOL_MIN_X)
2231
        oAddRow(_XML_SYMBOL_MAX_X) = oCurrentSymbolRow(_XML_SYMBOL_MAX_X)
2232
        oAddRow(_XML_SYMBOL_MIN_Y) = oCurrentSymbolRow(_XML_SYMBOL_MIN_Y)
2233
        oAddRow(_XML_SYMBOL_MAX_Y) = oCurrentSymbolRow(_XML_SYMBOL_MAX_Y)
2234
        _ModelingSymbol_Dt.Rows.Add(oAddRow)
2235

    
2236

    
2237

    
2238

    
2239
        If sChildItem <> "" Then
2240
            Dim sConn1_Systempath As String = ""
2241
            Dim sConn2_Systempath As String = ""
2242
            Dim sConn1_Angle As Double = 0
2243
            Dim sConn2_Angle As Double = 0
2244

    
2245
            For Each sDirection In sChildItem.Split("/")
2246
                Dim iType As Integer = 0
2247
                For Each sType In sDirection.Split(",")
2248
                    If sConn1_Systempath = "" Then
2249

    
2250
                        If iType = 0 Then
2251
                            sConn1_Angle = GetChildSymbolDirection(sType)
2252
                            iType = iType + 1
2253
                        Else
2254
                            Dim sStartpoint As String = oCurrentSymbolRow(_XML_SYMBOL_Conn1_Point).ToString()
2255
                            ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
2256
                            ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
2257
                            sConn1_Systempath = GetDataFromMappingDB(sType, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
2258
                            Dim dChildConn1_x As Double = 0
2259
                            Dim dChildConn1_y As Double = 0
2260

    
2261
                            If oLMSymbol IsNot Nothing Then
2262
                                _Placement.PIDConnectPointLocation(oLMSymbol, 1, dChildConn1_x, dChildConn1_y)
2263
                                _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn1_x, dChildConn1_y,, sConn1_Angle,,
2264
                                 TargetItem:=oLMSymbol.AsLMAItem)
2265
                            Else
2266
                                _Placement.PIDPlaceSymbol(sConn1_Systempath, dConn1_x, dConn1_y,, sConn1_Angle,,)
2267
                            End If
2268
                        End If
2269

    
2270
                        'If iType = 0 Then
2271
                        '    sConn1_Angle = GetChildSymbolDirection(sType)
2272
                        '    iType = iType + 1
2273
                        'Else
2274
                        '    Dim sStartpoint As String = oCurrentSymbolRow(_XML_SYMBOL_Conn1_Point).ToString()
2275
                        '    ConvertPointBystring(sStartpoint, dConn1_x, dConn1_y)
2276
                        '    ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
2277
                        '    sConn1_Systempath = GetDataFromMappingDB(sType, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
2278
                        '    If oStartLMConnector Is Nothing Then
2279
                        '        Dim dChildConn1_x As Double = 0
2280
                        '        Dim dChildConn1_y As Double = 0
2281
                        '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dChildConn1_x, dChildConn1_y)
2282
                        '        If oLMSymbol.Connect1Connectors.Count = 0 And oLMSymbol IsNot Nothing Then
2283
                        '            _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn1_x, dChildConn1_y,, sConn1_Angle,,
2284
                        '             TargetItem:=oLMSymbol.AsLMAItem)
2285
                        '        Else
2286
                        '            For Each oConnector In oLMSymbol.Connect1Connectors
2287
                        '                _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn1_x, dChildConn1_y,, sConn1_Angle,,
2288
                        '                TargetItem:=oConnector.AsLMAItem)
2289
                        '            Next
2290
                        '        End If
2291

    
2292
                        '    Else
2293
                        '        _Placement.PIDPlaceSymbol(sConn1_Systempath, dConn1_x, dConn1_y,, sConn1_Angle,,
2294
                        '                    TargetItem:=oLMSymbol.AsLMAItem)
2295
                        '        'oLMSymbol = _Placement.PIDPlaceSymbol(sConn1_Systempath, dConn1_x, dConn1_y,, sConn1_Angle,,
2296
                        '        'TargetItem:=oStartLMConnector.AsLMAItem)
2297
                        '    End If
2298

    
2299
                        'End If
2300
                    Else
2301
                        If iType = 0 Then
2302
                            sConn2_Angle = GetChildSymbolDirection(sType)
2303
                            iType = iType + 1
2304
                        Else
2305
                            Dim sEndPoint As String = oCurrentSymbolRow(_XML_SYMBOL_Conn2_Point).ToString()
2306
                            ConvertPointBystring(sEndPoint, dConn2_x, dConn2_y)
2307
                            ConvertPointByImage(dConn2_x, dConn2_y, _IMG_X, _IMG_Y)
2308
                            sConn2_Systempath = GetDataFromMappingDB(sType, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
2309

    
2310
                            Dim dChildConn2_x As Double = 0
2311
                            Dim dChildConn2_y As Double = 0
2312

    
2313
                            If oLMSymbol IsNot Nothing Then
2314
                                _Placement.PIDConnectPointLocation(oLMSymbol, 2, dChildConn2_x, dChildConn2_y)
2315
                                _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle,,
2316
                                        TargetItem:=oLMSymbol.AsLMAItem)
2317
                            Else
2318
                                _Placement.PIDPlaceSymbol(sConn2_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle,,)
2319
                            End If
2320

    
2321
                        End If
2322

    
2323

    
2324
                        'If iType = 0 Then
2325
                        '    sConn2_Angle = GetChildSymbolDirection(sType)
2326
                        '    iType = iType + 1
2327
                        'Else
2328
                        '    Dim sEndPoint As String = oCurrentSymbolRow(_XML_SYMBOL_Conn2_Point).ToString()
2329
                        '    ConvertPointBystring(sEndPoint, dConn2_x, dConn2_y)
2330
                        '    ConvertPointByImage(dConn2_x, dConn2_y, _IMG_X, _IMG_Y)
2331
                        '    sConn2_Systempath = GetDataFromMappingDB(sType, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
2332
                        '    If oEndLMConnector Is Nothing Then
2333
                        '        Dim dChildConn2_x As Double = 0
2334
                        '        Dim dChildConn2_y As Double = 0
2335
                        '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dChildConn2_x, dChildConn2_y)
2336
                        '        If oLMSymbol.Connect2Connectors.Count = 0 And oLMSymbol IsNot Nothing Then
2337
                        '            _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle,,
2338
                        '            TargetItem:=oLMSymbol.AsLMAItem)
2339
                        '        Else
2340
                        '            For Each oConnector In oLMSymbol.Connect2Connectors
2341
                        '                oLMSymbol = _Placement.PIDPlaceSymbol(sConn2_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle,,
2342
                        '                TargetItem:=oConnector.AsLMAItem)
2343
                        '            Next
2344
                        '        End If
2345

    
2346
                        '    Else
2347
                        '        _Placement.PIDPlaceSymbol(sConn1_Systempath, dConn2_x, dConn2_y,, sConn2_Angle,,
2348
                        '            TargetItem:=oLMSymbol.AsLMAItem)
2349
                        '        '    oLMSymbol = _Placement.PIDPlaceSymbol(sConn2_Systempath, dConn2_x, dConn2_y,, sConn2_Angle,,
2350
                        '        'TargetItem:=oEndLMConnector.AsLMAItem)
2351
                        '    End If
2352

    
2353
                        'End If
2354
                    End If
2355
                Next
2356
            Next
2357

    
2358

    
2359
            'If sConn1_Systempath <> "" Then
2360
            '    Dim oConn1s As LMConnectors = oLMSymbol.Connect1Connectors
2361
            '    Dim dChildConn1_x As Double = 0
2362
            '    Dim dChildConn1_y As Double = 0
2363
            '    _Placement.PIDConnectPointLocation(oLMSymbol, 1, dChildConn1_x, dChildConn1_y)
2364
            '    oLMSymbol = _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn1_x, dChildConn1_y,, sConn1_Angle)
2365
            '    'For Each oConnector In oLMSymbol.Connect1Connectors
2366
            '    '    oLMSymbol = _Placement.PIDPlaceSymbol(sConn1_Systempath, dChildConn1_x, dChildConn1_y,, sConn1_Angle,,
2367
            '    '    TargetItem:=oConnector.AsLMAItem)
2368
            '    'Next
2369
            'End If
2370

    
2371
            'If sConn2_Systempath <> "" Then
2372
            '    Dim oConn2s As LMConnectors = oLMSymbol.Connect2Connectors
2373
            '    Dim dChildConn2_x As Double = 0
2374
            '    Dim dChildConn2_y As Double = 0
2375
            '    _Placement.PIDConnectPointLocation(oLMSymbol, 2, dChildConn2_x, dChildConn2_y)
2376
            '    oLMSymbol = _Placement.PIDPlaceSymbol(sConn2_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle)
2377
            '    'For Each oConnector In oLMSymbol.Connect2Connectors
2378
            '    '    oLMSymbol = _Placement.PIDPlaceSymbol(sConn2_Systempath, dChildConn2_x, dChildConn2_y,, sConn2_Angle,,
2379
            '    '    TargetItem:=oConnector.AsLMAItem)
2380
            '    'Next
2381
            'End If
2382
            ''Child 모델링
2383

    
2384

    
2385

    
2386

    
2387

    
2388

    
2389

    
2390
        End If
2391

    
2392

    
2393

    
2394

    
2395

    
2396
        AddProgress()
2397

    
2398
        SetListBoxItems(ListBox_Result, "Place Fitting.." & sUid & " (" & dOriginal_x & "," & dOriginal_y & ")..." & _iFittingcnt & " count ")
2399
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Fitting : " & sUid)
2400
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
2401
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "ModelingType : " & iModelingType)
2402
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Conn1_Point : " & dConn1_x & "," & dConn1_y)
2403
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Conn2_Point : " & dConn2_x & "," & dConn2_y)
2404
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Conn3_Point : " & dConn3_x & "," & dConn3_y)
2405
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Conn4_Point : " & dConn4_x & "," & dConn4_y)
2406
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oCurrentSymbolRow(_XML_SYMBOL_Conn1_Uid).ToString())
2407
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oCurrentSymbolRow(_XML_SYMBOL_Conn2_Uid).ToString())
2408
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection3 : " & oCurrentSymbolRow(_XML_SYMBOL_Conn3_Uid).ToString())
2409
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection4 : " & oCurrentSymbolRow(_XML_SYMBOL_Conn4_Uid).ToString())
2410
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
2411
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dOriginal_x & "," & dOriginal_y)
2412
        ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Fitting Count : " & _iFittingcnt)
2413
        _iFittingcnt = _iFittingcnt + 1
2414
        oCurrentSymbolRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
2415

    
2416

    
2417

    
2418

    
2419

    
2420

    
2421

    
2422

    
2423
        Dim oAttributeRow() As DataRow
2424
        oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sUid + "'")
2425
        If oAttribute_Dt.Rows.Count > 0 Then
2426

    
2427
            If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
2428
                Dim oInstrument As LMInstrument
2429
                oInstrument = _Placement.PIDDataSource.GetInstrument(oLMSymbol.ModelItemID)
2430
                Try
2431
                    If oAttributeRow.Length > 0 Then
2432
                        For Each oAttribute In oAttributeRow
2433
                            Try
2434
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2435
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2436
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2437
                                oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
2438
                            Catch ex As Exception
2439
                            End Try
2440
                        Next
2441
                        oInstrument.Commit()
2442
                    End If
2443
                Catch ex As Exception
2444
                End Try
2445
            Else
2446
                Try
2447
                    If oAttributeRow.Length > 0 And oLMSymbol IsNot Nothing Then
2448
                        For Each oAttribute In oAttributeRow
2449
                            Try
2450
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2451
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2452
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2453
                                oLMSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
2454

    
2455
                            Catch ex As Exception
2456
                            End Try
2457
                        Next
2458
                        oLMSymbol.Commit()
2459
                    End If
2460
                Catch ex As Exception
2461
                End Try
2462
            End If
2463
        End If
2464
        'Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2465
        'If oAttributeRow.Length > 0 Then
2466
        '    For Each oAttribute In oAttributeRow
2467
        '        Try
2468
        '            Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2469
        '            Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2470
        '            If sPIDValue.Contains("'") Then
2471
        '                sPIDValue = sPIDValue.Replace("'", """")
2472
        '            End If
2473
        '            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2474
        '            oLMSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
2475
        '        Catch ex As Exception
2476
        '        End Try
2477
        '    Next
2478
        'End If
2479

    
2480
        Return sReturnUid
2481

    
2482

    
2483
        '현재 Uid 모델링
2484
    End Function
2485

    
2486
    Private Function GetChildSymbolDirection(ByVal sDirection As String) As Double
2487
        Dim sReturnDirection As String = ""
2488
        If sDirection.ToUpper() = "RIGHT" Then
2489
            Return 3.14
2490
        ElseIf sDirection.ToUpper() = "LEFT" Then
2491
            Return 0
2492
        ElseIf sDirection.ToUpper = "DOWN" Then
2493
            Return 1.57
2494
        ElseIf sDirection.ToUpper() = "UP" Then
2495
            Return 4.71
2496
        Else
2497
            Return 0
2498
        End If
2499
    End Function
2500

    
2501

    
2502

    
2503
    Private Function CheckExistModeling(ByVal oRow As DataRow) As String
2504
        If oRow(_XML_LINE_DRAWING_TF).ToString() = "FALSE" And oRow(_XML_LINE_Check).ToString() = "TRUE" Then
2505
            Return oRow(_XML_LINE_UID).ToString()
2506
        End If
2507
        Return String.Empty
2508
    End Function
2509

    
2510

    
2511
    Private Sub ConvertPoint(ByVal sOriginalPoint As String, ByRef dConn1_x As Double, ByRef dConn1_y As Double)
2512
        ConvertPointBystring(sOriginalPoint, dConn1_x, dConn1_y)
2513
        ConvertPointByImage(dConn1_x, dConn1_y, _IMG_X, _IMG_Y)
2514
    End Sub
2515

    
2516
    Private Function FinalLineModeling(ByVal oCurrentLineRow As DataRow,
2517
                              ByVal oLine_Dt As DataTable, ByVal oSymbol_Dt As DataTable,
2518
                                  ByVal oAttribute_Dt As DataTable) As String
2519
        Dim sReturnUid As String = ""
2520
        Try
2521

    
2522
            '현재 Uid  모델링 여부 체크
2523
            'Dim sStartpoint As String = ""
2524
            'Dim sEndpoint As String = ""
2525
            'Dim dOriginalStart_x As Double = 0.0
2526
            'Dim dOriginalStart_y As Double = 0.0
2527
            'Dim dOriginalEnd_x As Double = 0.0
2528
            'Dim dOriginalEnd_y As Double = 0.0
2529
            Dim dCenterPos_x As Double = 0.0
2530
            Dim dCenterPos_y As Double = 0.0
2531
            Dim objItem As LMAItem
2532

    
2533
            Dim sUid As String = oCurrentLineRow(_XML_LINE_UID).ToString()
2534
            Dim sLineType As String = oCurrentLineRow(_XML_LINE_TYPE).ToString()
2535
            Dim sSystemPath As String = GetPipeType(sLineType)
2536
            Dim sLineNoText As String = oCurrentLineRow(_XML_LINENO_TEXT).ToString()
2537
            Dim sLineNoUid As String = oCurrentLineRow(_XML_LINE_LINENOUID).ToString()
2538
            'sStartpoint = oCurrentLineRow(_XML_LINE_STARTPOINT).ToString()
2539
            'ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
2540
            'ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
2541
            'sEndpoint = oCurrentLineRow(_XML_LINE_ENDPOINT).ToString()
2542
            'ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
2543
            'ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
2544

    
2545

    
2546
            Dim dStart_Dwg_x As Double = oCurrentLineRow(_XML_LINE_DWG_STARTPOINT_X)
2547
            Dim dStart_Dwg_y As Double = oCurrentLineRow(_XML_LINE_DWG_STARTPOINT_Y)
2548
            Dim dEnd_Dwg_x As Double = oCurrentLineRow(_XML_LINE_DWG_ENDPOINT_X)
2549
            Dim dEnd_Dwg_y As Double = oCurrentLineRow(_XML_LINE_DWG_ENDPOINT_Y)
2550
            Dim sPreFlowDirection As String = ""
2551
            Dim sFlowDirection As String = oCurrentLineRow(_XML_LINE_FlowDirection)
2552

    
2553
            Dim sPreConn1Direction As String = ""
2554
            Dim sPreConn2Direction As String = ""
2555
            Dim sDirection As String = oCurrentLineRow(_XML_LINE_Direction)
2556

    
2557
            dCenterPos_x = Math.Abs(dStart_Dwg_x + dEnd_Dwg_x) / 2
2558
            dCenterPos_y = Math.Abs(dStart_Dwg_y + dEnd_Dwg_y) / 2
2559

    
2560

    
2561
            Dim oPidDataSource As LMADataSource = Nothing
2562

    
2563
            Try
2564
                oPidDataSource = _Placement.PIDDataSource
2565
            Catch ex As Exception
2566
                CheckOpenDrawing()
2567
                oPidDataSource = _Placement.PIDDataSource
2568
            End Try
2569

    
2570
            'Connection 정보 체크, 모델링 되어 있는지 유무
2571
            '양 커넥션의 모델링 유무를 체크한다.
2572
            Dim sConn1Uid As String = oCurrentLineRow(_XML_LINE_Conn1_Uid).ToString()
2573
            Dim sConn2Uid As String = oCurrentLineRow(_XML_LINE_Conn2_Uid).ToString()
2574
            Dim sConn1Type As String = ""
2575
            Dim sConn2Type As String = ""
2576

    
2577
            Dim oConn1Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn1Uid & "'")
2578
            If oConn1Rows.Length = 0 Then
2579
                oConn1Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn1Uid & "'")
2580
                If oConn1Rows.Length = 1 Then
2581
                    sConn1Type = "Line"
2582
                    'sPreConn1Direction = oConn1Rows(0)(_XML_LINE_Direction).ToString()
2583
                    'If sDirection = sPreConn1Direction Then
2584
                    '    If sDirection = "X" Then
2585
                    '        dStart_Dwg_y = oConn1Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2586
                    '        dEnd_Dwg_y = oConn1Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2587
                    '    Else
2588
                    '        dStart_Dwg_x = oConn1Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2589
                    '        dEnd_Dwg_x = oConn1Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2590
                    '    End If
2591
                    'End If
2592

    
2593
                End If
2594
            Else
2595

    
2596
                Dim oOriginalPoint As String = oConn1Rows(0)(_XML_SYMBOL_ORIGINALPOINT)
2597
                ConvertPointBystring(oOriginalPoint, dStart_Dwg_x, dStart_Dwg_y)
2598
                ConvertPointByImage(dStart_Dwg_x, dStart_Dwg_y, _IMG_X, _IMG_Y)
2599
                oCurrentLineRow(_XML_LINE_DWG_STARTPOINT_X) = dStart_Dwg_x
2600
                oCurrentLineRow(_XML_LINE_DWG_STARTPOINT_Y) = dStart_Dwg_y
2601
                sConn1Type = "Symbol"
2602
            End If
2603

    
2604
            Dim oConn2Rows() As DataRow = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "] = '" & sConn2Uid & "'")
2605
            If oConn2Rows.Length = 0 Then
2606
                oConn2Rows = oLine_Dt.Select("[" & _XML_LINE_UID & "] = '" & sConn2Uid & "'")
2607
                If oConn2Rows.Length = 1 Then
2608
                    sConn2Type = "Line"
2609
                    'sPreConn2Direction = oConn1Rows(0)(_XML_LINE_Direction).ToString()
2610
                    'If sDirection = sPreConn2Direction Then
2611
                    '    If sDirection = "X" Then
2612
                    '        dStart_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2613
                    '        dEnd_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2614
                    '    Else
2615
                    '        dStart_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2616
                    '        dEnd_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2617
                    '    End If
2618
                    'End If
2619
                End If
2620
            Else
2621
                Dim oOriginalPoint As String = oConn2Rows(0)(_XML_SYMBOL_ORIGINALPOINT)
2622
                ConvertPointBystring(oOriginalPoint, dEnd_Dwg_x, dEnd_Dwg_y)
2623
                ConvertPointByImage(dEnd_Dwg_x, dEnd_Dwg_y, _IMG_X, _IMG_Y)
2624
                oCurrentLineRow(_XML_LINE_DWG_ENDPOINT_X) = dEnd_Dwg_x
2625
                oCurrentLineRow(_XML_LINE_DWG_ENDPOINT_Y) = dEnd_Dwg_y
2626
                sConn2Type = "Symbol"
2627
            End If
2628

    
2629

    
2630
            If sConn1Type = "Symbol" Then
2631

    
2632

    
2633

    
2634
            End If
2635

    
2636
            Dim sConn1LineNo As String = ""
2637
            Dim sConn2LineNo As String = ""
2638
            Dim oLMConnector As LMConnector = Nothing
2639
            Dim oStartLMConnector As LMConnector = Nothing
2640
            Dim oEndLMConnector As LMConnector = Nothing
2641
            Dim oLMSymbol1 As LMSymbol = Nothing
2642
            Dim oLMSymbol2 As LMSymbol = Nothing
2643
            Dim objInputs As PlaceRunInputs
2644
            objInputs = New PlaceRunInputs
2645
            Dim iModelingType As Integer = 0
2646
            If sConn1Type = "Line" And sConn2Type = "Line" Then
2647
                iModelingType = 1
2648
            ElseIf sConn1Type = "Line" And sConn2Type = "Symbol" Then
2649
                iModelingType = 1
2650
            ElseIf sConn1Type = "Symbol" And sConn2Type = "Line" Then
2651
                iModelingType = 1
2652
            ElseIf sConn1Type = "Symbol" And sConn2Type = "Symbol" Then
2653
                iModelingType = 1
2654
            ElseIf sConn1Type = "Line" And sConn2Type = "" Then
2655
                iModelingType = 2
2656
            ElseIf sConn1Type = "Symbol" And sConn2Type = "" Then
2657
                iModelingType = 2
2658
            ElseIf sConn1Type = "" And sConn2Type = "Line" Then
2659
                iModelingType = 3
2660
            ElseIf sConn1Type = "" And sConn2Type = "Symbol" Then
2661
                iModelingType = 3
2662
            Else
2663
                iModelingType = 4
2664
            End If
2665

    
2666
            Dim dPreConnX As Double = 0
2667
            Dim dPreConnY As Double = 0
2668

    
2669

    
2670
            '   Dim sTargetDirection As String = CheckBranchLine(dStart_Dwg_x, dStart_Dwg_y, dEnd_Dwg_x, dEnd_Dwg_y, oLMConnector)
2671

    
2672
            ' If sTargetDirection = "" Then
2673
            CheckConnectionLine(dStart_Dwg_x, dStart_Dwg_y, oStartLMConnector)
2674

    
2675
            If oStartLMConnector Is Nothing Then
2676
                UpdateCheckBranchLine(dStart_Dwg_x, dStart_Dwg_y, oStartLMConnector)
2677
                If oStartLMConnector Is Nothing Then
2678
                    oLMSymbol1 = CheckConnectionSymbolToLine(oConn1Rows, dStart_Dwg_x, dStart_Dwg_y, dCenterPos_x, dCenterPos_y, oStartLMConnector)
2679
                    If oLMSymbol1 IsNot Nothing Then
2680
                        sConn1Type = "Symbol"
2681
                    Else
2682
                        sConn1Type = ""
2683
                    End If
2684
                Else
2685
                    sConn1Type = "Line"
2686
                    'sPreConn1Direction = oConn1Rows(0)(_XML_LINE_Direction).ToString()
2687
                    'If sDirection = sPreConn1Direction Then
2688
                    '    If sDirection = "X" Then
2689
                    '        dStart_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2690
                    '        dEnd_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2691
                    '    Else
2692
                    '        dStart_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2693
                    '        dEnd_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2694
                    '    End If
2695
                    'End If
2696
                End If
2697
            Else
2698
                sConn1Type = "Line"
2699

    
2700
            End If
2701
                CheckConnectionLine(dEnd_Dwg_x, dEnd_Dwg_y, oEndLMConnector)
2702
            If oEndLMConnector Is Nothing Then
2703
                UpdateCheckBranchLine(dEnd_Dwg_x, dEnd_Dwg_y, oEndLMConnector)
2704
                If oEndLMConnector Is Nothing Then
2705
                    oLMSymbol2 = CheckConnectionSymbolToLine(oConn2Rows, dEnd_Dwg_x, dEnd_Dwg_y, dCenterPos_x, dCenterPos_y, oEndLMConnector)
2706
                    If oLMSymbol2 IsNot Nothing Then
2707
                        sConn2Type = "Symbol"
2708
                    End If
2709
                Else
2710
                    sConn2Type = "Line"
2711
                End If
2712
            Else
2713
                sConn2Type = "Line"
2714
                    'sPreConn2Direction = oConn2Rows(0)(_XML_LINE_Direction).ToString()
2715
                    'If sDirection = sPreConn2Direction Then
2716
                    '    If sDirection = "X" Then
2717
                    '        dStart_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2718
                    '        dEnd_Dwg_y = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_Y)
2719
                    '    Else
2720
                    '        dStart_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2721
                    '        dEnd_Dwg_x = oConn2Rows(0)(_XML_LINE_DWG_STARTPOINT_X)
2722
                    '    End If
2723
                    'End If
2724
                End If
2725
                'Else
2726
                '    If sTargetDirection = "START" Then
2727
                '        oStartLMConnector = oLMConnector
2728
                '        sConn1Type = "Line"
2729
                '    ElseIf sTargetDirection = "END" Then
2730
                '        oEndLMConnector = oLMConnector
2731
                '        sConn2Type = "Line"
2732
                '    End If
2733
                'End If
2734

    
2735

    
2736

    
2737

    
2738

    
2739

    
2740

    
2741
                'If iModelingType = 1 Then
2742
                '    If sConn1Type = "Line" Then
2743
                '        CheckConnectionLine(oConn1Rows, dOriginalStart_x, dOriginalStart_y, oStartLMConnector)
2744
                '    Else
2745
                '        oLMSymbol1 = CheckConnectionSymbolToLine(oConn1Rows, dOriginalStart_x, dOriginalStart_y, dCenterPos_x, dCenterPos_y, oStartLMConnector)
2746
                '    End If
2747
                '    If sConn1Type = "Line" Then
2748
                '        CheckConnectionLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, oEndLMConnector)
2749
                '    Else
2750
                '        oLMSymbol2 = CheckConnectionSymbolToLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, dCenterPos_x, dCenterPos_y, oEndLMConnector)
2751
                '    End If
2752
                '    'CheckConnectionLine(oConn1Rows, dOriginalStart_x, dOriginalStart_y, oStartLMConnector)
2753
                '    'CheckConnectionLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, oEndLMConnector)
2754
                'ElseIf iModelingType = "2" Then
2755
                '    If sConn1Type = "Line" Then
2756
                '        CheckConnectionLine(oConn1Rows, dOriginalStart_x, dOriginalStart_y, oStartLMConnector)
2757
                '    Else
2758
                '        oLMSymbol1 = CheckConnectionSymbolToLine(oConn1Rows, dOriginalStart_x, dOriginalStart_y, dCenterPos_x, dCenterPos_y, oStartLMConnector)
2759
                '    End If
2760
                '    ' CheckConnectionLine(oConn2Rows, dOriginalStart_x, dOriginalStart_y, oStartLMConnector)
2761
                'ElseIf iModelingType = "3" Then
2762
                '    If sConn1Type = "Line" Then
2763
                '        CheckConnectionLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, oEndLMConnector)
2764
                '    Else
2765
                '        oLMSymbol2 = CheckConnectionSymbolToLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, dCenterPos_x, dCenterPos_y, oEndLMConnector)
2766
                '    End If
2767
                '    ' CheckConnectionLine(oConn2Rows, dOriginalEnd_x, dOriginalEnd_y, oStartLMConnector)
2768

    
2769
                'Else
2770
                '    'objInputs.AddPoint(dOriginalStart_x, dOriginalStart_y)
2771
                '    'objInputs.AddPoint(dOriginalEnd_x, dOriginalEnd_y)
2772
                'End If
2773

    
2774
                Dim sFirstUid As String = ""
2775
            Dim sSecondUid As String = ""
2776
            Try
2777
                If oStartLMConnector Is Nothing And oEndLMConnector Is Nothing Then
2778
                    If oLMSymbol1 Is Nothing Then
2779
                        objInputs.AddPoint(dStart_Dwg_x, dStart_Dwg_y)
2780
                    Else
2781
                        objInputs.AddSymbolTarget(oLMSymbol1, dStart_Dwg_x, dStart_Dwg_y)
2782
                    End If
2783

    
2784
                    If oLMSymbol2 Is Nothing Then
2785
                        objInputs.AddPoint(dEnd_Dwg_x, dEnd_Dwg_y)
2786
                    Else
2787
                        objInputs.AddSymbolTarget(oLMSymbol2, dEnd_Dwg_x, dEnd_Dwg_y)
2788
                    End If
2789

    
2790
                    'objInputs.AddPoint(dStart_Dwg_x, dStart_Dwg_y)
2791
                    'objInputs.AddPoint(dEnd_Dwg_x, dEnd_Dwg_y)
2792
                    'sFirstUid = CheckExistModeling(oConn1Rows(0))
2793
                    'sSecondUid = CheckExistModeling(oConn2Rows(0))
2794
                ElseIf oStartLMConnector IsNot Nothing And oEndLMConnector Is Nothing Then
2795
                    If sConn1Type = "Line" Then
2796
                        objInputs.AddConnectorTarget(oStartLMConnector, dStart_Dwg_x, dStart_Dwg_y)
2797
                    Else
2798
                        objInputs.AddSymbolTarget(oLMSymbol1, dStart_Dwg_x, dStart_Dwg_y)
2799
                    End If
2800
                    If oLMSymbol2 Is Nothing Then
2801
                        objInputs.AddPoint(dEnd_Dwg_x, dEnd_Dwg_y)
2802
                    Else
2803
                        objInputs.AddSymbolTarget(oLMSymbol2, dEnd_Dwg_x, dEnd_Dwg_y)
2804
                    End If
2805

    
2806
                    '    sSecondUid = CheckExistModeling(oConn2Rows(0))
2807
                ElseIf oStartLMConnector Is Nothing And oEndLMConnector IsNot Nothing Then
2808
                    If sConn2Type = "Line" Then
2809
                        objInputs.AddConnectorTarget(oEndLMConnector, dEnd_Dwg_x, dEnd_Dwg_y)
2810
                    Else
2811
                        objInputs.AddSymbolTarget(oLMSymbol2, dEnd_Dwg_x, dEnd_Dwg_y)
2812
                    End If
2813
                    If oLMSymbol1 Is Nothing Then
2814
                        objInputs.AddPoint(dStart_Dwg_x, dStart_Dwg_y)
2815
                    Else
2816
                        objInputs.AddSymbolTarget(oLMSymbol1, dStart_Dwg_x, dStart_Dwg_y)
2817
                    End If
2818

    
2819

    
2820
                    'objInputs.AddPoint(dOriginalEnd_x, dOriginalEnd_y)
2821

    
2822
                    '   sFirstUid = CheckExistModeling(oConn1Rows(0))
2823
                Else
2824
                    If sConn1Type = "Line" Then
2825
                        objInputs.AddConnectorTarget(oStartLMConnector, dStart_Dwg_x, dStart_Dwg_y)
2826
                    Else
2827
                        objInputs.AddSymbolTarget(oLMSymbol1, dStart_Dwg_x, dStart_Dwg_y)
2828
                    End If
2829
                    If sConn2Type = "Line" Then
2830
                        objInputs.AddConnectorTarget(oStartLMConnector, dEnd_Dwg_x, dEnd_Dwg_y)
2831
                    Else
2832
                        objInputs.AddSymbolTarget(oLMSymbol2, dEnd_Dwg_x, dEnd_Dwg_y)
2833
                    End If
2834
                    'objInputs.AddConnectorTarget(oStartLMConnector, dOriginalStart_x, dOriginalStart_y)
2835
                    'objInputs.AddConnectorTarget(oEndLMConnector, dEnd_Dwg_x, dOriginalEnd_y)
2836
                End If
2837
                If sConn1Type <> "" And sConn2Type <> "" Then
2838
                    If oConn1Rows.Count > 0 Then
2839
                        sFirstUid = CheckExistModeling(oConn1Rows(0))
2840
                    End If
2841
                    If oConn2Rows.Count > 0 Then
2842
                        sSecondUid = CheckExistModeling(oConn2Rows(0))
2843
                    End If
2844

    
2845
                ElseIf sConn1Type <> "" And sConn2Type = "" Then
2846
                    If oConn1Rows.Count > 0 Then
2847
                        sFirstUid = CheckExistModeling(oConn1Rows(0))
2848
                    End If
2849

    
2850
                ElseIf sConn1Type = "" And sConn2Type <> "" Then
2851
                    If oConn2Rows.Count > 0 Then
2852
                        sSecondUid = CheckExistModeling(oConn2Rows(0))
2853
                    End If
2854

    
2855
                End If
2856

    
2857
                If sFirstUid <> "" And sSecondUid <> "" Then
2858
                    sReturnUid = sSecondUid
2859
                ElseIf sFirstUid = "" And sSecondUid <> "" Then
2860
                    sReturnUid = sSecondUid
2861
                ElseIf sFirstUid <> "" And sSecondUid = "" Then
2862
                    sReturnUid = sFirstUid
2863
                Else
2864
                    sReturnUid = ""
2865
                End If
2866
                _iPipecnt = _iPipecnt + 1
2867
                Dim oCurrentConnector As LMConnector = Nothing
2868

    
2869
                objItem = _Placement.PIDCreateItem(sSystemPath)
2870
                Try
2871
                    If Chk_OnlyPoint.Checked Then
2872
                        objInputs.Clear()
2873
                        objInputs.AddPoint(dStart_Dwg_x, dStart_Dwg_y)
2874
                        objInputs.AddPoint(dEnd_Dwg_x, dEnd_Dwg_y)
2875
                        oCurrentConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2876
                    Else
2877
                        oCurrentConnector = _Placement.PIDPlaceRun(objItem, objInputs)
2878
                    End If
2879
                    AddProgress()
2880

    
2881
                Catch ex As Exception
2882

    
2883
                End Try
2884
                If oCurrentConnector IsNot Nothing Then
2885
                    oCurrentLineRow(_XML_LINE_LMCONNECTOR) = oCurrentConnector
2886
                    oCurrentLineRow(_XML_LINE_DRAWING_TF) = "TRUE"
2887

    
2888
                    SetListBoxItems(ListBox_Result, "Place Pipe.." & sUid & " (" & dStart_Dwg_x & "," & dStart_Dwg_y & ") - (" & dEnd_Dwg_x & "," & dEnd_Dwg_y & ")..." & _iPipecnt & " count ")
2889

    
2890
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & sUid)
2891
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
2892
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oCurrentLineRow(_XML_SYMBOL_Conn1_Uid).ToString())
2893
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oCurrentLineRow(_XML_SYMBOL_Conn2_Uid).ToString())
2894
                    'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
2895
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "StartPoint : " & dStart_Dwg_x & "," & dStart_Dwg_y)
2896
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "EndPoint : " & dEnd_Dwg_x & "," & dEnd_Dwg_y)
2897
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Pipe Count : " & _iPipecnt)
2898

    
2899
                    Dim oPipeRun As LMPipeRun = oPidDataSource.GetPipeRun(oCurrentConnector.ModelItemID)
2900

    
2901
                    '모델링 된 PipeLine 데이터 테이블 저장
2902
                    Dim oAddRow As DataRow = _ModelingLine_Dt.NewRow
2903
                    oAddRow(_XML_LINE_SPID) = oCurrentConnector.ModelItemID
2904
                    oAddRow(_XML_LINE_LMCONNECTOR) = oCurrentConnector
2905
                    oAddRow(_XML_LINE_DRAWING_TF) = "TRUE"
2906
                    oAddRow(_XML_LINE_DWG_STARTPOINT_X) = dStart_Dwg_x
2907
                    oAddRow(_XML_LINE_DWG_STARTPOINT_Y) = dStart_Dwg_y
2908
                    oAddRow(_XML_LINE_DWG_ENDPOINT_X) = dEnd_Dwg_x
2909
                    oAddRow(_XML_LINE_DWG_ENDPOINT_Y) = dEnd_Dwg_y
2910
                    _ModelingLine_Dt.Rows.Add(oAddRow)
2911

    
2912

    
2913
                    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
2914
                        If oAttributeRow.Length > 0 Then
2915
                            For Each oAttribute In oAttributeRow
2916
                                Try
2917
                                    Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
2918
                                    Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
2919
                                    If sPIDValue.Contains("'") Then
2920
                                        sPIDValue = sPIDValue.Replace("'", """")
2921
                                    End If
2922
                                    Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
2923
                                    oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
2924
                                Catch ex As Exception
2925
                                End Try
2926
                            Next
2927
                            oPipeRun.Commit()
2928
                        End If
2929

    
2930
                        Dim sID_1 As String = ""
2931
                    Dim sID_2 As String = ""
2932
                    Dim oAddConnector As LMConnector = Nothing
2933
                    If oStartLMConnector IsNot Nothing Then
2934
                            sID_1 = oStartLMConnector.ModelItemID
2935
                        sID_2 = oCurrentConnector.ModelItemID
2936
                        oAddConnector = oStartLMConnector
2937
                    ElseIf oEndLMConnector IsNot Nothing Then
2938
                            sID_1 = oEndLMConnector.ModelItemID
2939
                        sID_2 = oCurrentConnector.ModelItemID
2940
                        oAddConnector = oEndLMConnector
2941
                    End If
2942
                    '    If sID_1 <> "" And sID_2 <> "" Then
2943
                    '        Dim objSurvivorItem As LMAItem = Nothing
2944
                    '        Dim oPipeRun1 As LMPipeRun = oPidDataSource.GetPipeRun(sID_1)
2945
                    '        Dim oPipeRun2 As LMPipeRun = oPidDataSource.GetPipeRun(sID_2)
2946
                    '    _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
2947

    
2948
                    '    Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_SPID & " = '" & sID_2 & "'")
2949
                    '    If oChangeRow.Length = 1 Then
2950
                    '        oChangeRow(0)(_XML_LINE_SPID) = sID_1
2951
                    '        oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oAddConnector
2952
                    '    End If
2953
                    'End If
2954
                Else
2955
                        sReturnUid = ""
2956
                End If
2957
            Catch ex As Exception
2958

    
2959
            End Try
2960

    
2961

    
2962
        Catch ex As Exception
2963

    
2964
        End Try
2965

    
2966

    
2967
        Return sReturnUid
2968
        '현재 Uid 모델링
2969
    End Function
2970

    
2971
    Private Sub PipingModeling()
2972

    
2973
        Try
2974
            For Each oDrwing As TreeNode In Tree_Result.Nodes
2975
                For Each oDwgNode As TreeNode In oDrwing.Nodes
2976
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
2977
                    Dim CDrawing As Drawing = GetDrawing(sDwgName)
2978
                    If CDrawing IsNot Nothing Then
2979
                        Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
2980
                        Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
2981
                        For Each oNode As TreeNode In oDwgNode.Nodes
2982
                            Dim iItemcnt As Integer = 0
2983
                            Dim sNodeUid As String = oNode.Name
2984
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
2985
                            '1.Equipment
2986
                            '2.Piping OPC
2987
                            '3.OPC 시작되는 Line
2988
                            'Equipment 생성
2989
                            'If sNodeUid <> "PipeLineNo" Then
2990
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
2991

    
2992
                            If CLineNo IsNot Nothing Then
2993
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
2994
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
2995
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
2996
                                Dim oDrawLinenoLabel As Boolean = False
2997
                                Try
2998
                                    ManualCheckNode(oLine_Dt)
2999
                                    ManualCheckNode(oSymbol_Dt)
3000
                                Catch ex As Exception
3001
                                End Try
3002
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3003
                                    If oSymbolNode.Checked Then
3004
                                        Try
3005
                                            Dim sUid As String = oSymbolNode.Name
3006
                                            Dim sLineNoUid As String = CLineNo.Uid
3007
                                            Dim sReturnUid = sUid
3008
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3009
                                            While True
3010
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3011
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3012
                                                If oLineRows.Count > 0 Then
3013
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3014
                                                    If sPipeType.ToUpper() = "PRIMARY" Then
3015
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3016
                                                    Else
3017
                                                        sReturnUid = ""
3018
                                                    End If
3019

    
3020
                                                Else
3021
                                                        sReturnUid = ""
3022
                                                End If
3023
                                                If sReturnUid = "" Then
3024
                                                    Exit While
3025
                                                End If
3026
                                            End While
3027
                                        Catch ex As Exception
3028
                                        End Try
3029
                                    End If
3030
                                Next
3031
                            End If
3032
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3033
                            If CTrimLineNo IsNot Nothing Then
3034
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3035
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3036
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3037
                                Dim oDrawLinenoLabel As Boolean = False
3038
                                Try
3039
                                    ManualCheckNode(oLine_Dt)
3040
                                    ManualCheckNode(oSymbol_Dt)
3041
                                Catch ex As Exception
3042
                                End Try
3043

    
3044
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3045
                                    If oSymbolNode.Checked Then
3046
                                        Try
3047
                                            Dim sUid As String = oSymbolNode.Name
3048
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3049
                                            Dim sReturnUid = sUid
3050
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3051
                                            While True
3052
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3053
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3054
                                                If oLineRows.Count > 0 Then
3055
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3056
                                                    If sPipeType.ToUpper() = "PRIMARY" Then
3057
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3058
                                                    Else
3059
                                                        sReturnUid = ""
3060
                                                    End If
3061
                                                Else
3062
                                                    sReturnUid = ""
3063
                                                End If
3064
                                                If sReturnUid = "" Then
3065
                                                    Exit While
3066
                                                End If
3067
                                            End While
3068
                                        Catch ex As Exception
3069
                                        End Try
3070
                                    End If
3071
                                Next
3072
                                'For Each oSymbolNode As TreeNode In oNode.Nodes
3073
                                '    If oSymbolNode.Checked Then
3074
                                '        Try
3075
                                '            Dim sUid As String = oSymbolNode.Name
3076
                                '            Dim sLineNoUid As String = CLineNo.Uid
3077
                                '            Dim sReturnUid = sUid
3078
                                '            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3079
                                '            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3080
                                '                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3081
                                '            If oSymbolRows.Count > 0 Then
3082
                                '                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3083
                                '            Else
3084
                                '                sReturnUid = ""
3085
                                '            End If
3086
                                '            If sReturnUid = "" Then
3087
                                '            End If
3088
                                '        Catch ex As Exception
3089
                                '        End Try
3090
                                '    End If
3091
                                'Next
3092
                            End If
3093
                        Next
3094

    
3095

    
3096
                        For Each oNode As TreeNode In oDwgNode.Nodes
3097
                            Dim iItemcnt As Integer = 0
3098
                            Dim sNodeUid As String = oNode.Name
3099
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3100
                            '1.Equipment
3101
                            '2.Piping OPC
3102
                            '3.OPC 시작되는 Line
3103
                            'Equipment 생성
3104
                            'If sNodeUid <> "PipeLineNo" Then
3105
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3106

    
3107
                            If CLineNo IsNot Nothing Then
3108
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3109
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3110
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3111
                                Dim oDrawLinenoLabel As Boolean = False
3112
                                Try
3113
                                    ManualCheckNode(oLine_Dt)
3114
                                    ManualCheckNode(oSymbol_Dt)
3115
                                Catch ex As Exception
3116
                                End Try
3117
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3118
                                    If oSymbolNode.Checked Then
3119
                                        Try
3120
                                            Dim sUid As String = oSymbolNode.Name
3121
                                            Dim sLineNoUid As String = CLineNo.Uid
3122
                                            Dim sReturnUid = sUid
3123
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3124
                                            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'FALSE' And [" &
3125
                                                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3126

    
3127
                                            If oSymbolRows.Count > 0 Then
3128
                                                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3129
                                            Else
3130
                                                sReturnUid = ""
3131
                                            End If
3132
                                            If sReturnUid = "" Then
3133
                                            End If
3134
                                        Catch ex As Exception
3135
                                        End Try
3136
                                    End If
3137
                                Next
3138
                            End If
3139
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3140
                            If CTrimLineNo IsNot Nothing Then
3141
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3142
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3143
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3144
                                Dim oDrawLinenoLabel As Boolean = False
3145
                                Try
3146
                                    ManualCheckNode(oLine_Dt)
3147
                                    ManualCheckNode(oSymbol_Dt)
3148
                                Catch ex As Exception
3149
                                End Try
3150
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3151
                                    If oSymbolNode.Checked Then
3152
                                        Try
3153
                                            Dim sUid As String = oSymbolNode.Name
3154
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3155
                                            Dim sReturnUid = sUid
3156
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3157
                                            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3158
                                                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3159
                                            If oSymbolRows.Count > 0 Then
3160
                                                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3161
                                            Else
3162
                                                sReturnUid = ""
3163
                                            End If
3164
                                            If sReturnUid = "" Then
3165
                                            End If
3166
                                        Catch ex As Exception
3167
                                        End Try
3168
                                    End If
3169
                                Next
3170
                            End If
3171
                        Next
3172

    
3173

    
3174
                        For Each oNode As TreeNode In oDwgNode.Nodes
3175
                            Dim iItemcnt As Integer = 0
3176
                            Dim sNodeUid As String = oNode.Name
3177
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3178
                            '1.Equipment
3179
                            '2.Piping OPC
3180
                            '3.OPC 시작되는 Line
3181
                            'Equipment 생성
3182
                            'If sNodeUid <> "PipeLineNo" Then
3183
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3184

    
3185
                            If CLineNo IsNot Nothing Then
3186
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3187
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3188
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3189
                                Dim oDrawLinenoLabel As Boolean = False
3190
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3191
                                    If oSymbolNode.Checked Then
3192
                                        Try
3193
                                            Dim sUid As String = oSymbolNode.Name
3194
                                            Dim sLineNoUid As String = CLineNo.Uid
3195
                                            Dim sReturnUid = sUid
3196
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3197
                                            While True
3198
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3199
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3200

    
3201
                                                If oLineRows.Count > 0 Then
3202
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3203
                                                    If sPipeType.ToUpper() <> "PRIMARY" Then
3204
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3205
                                                    Else
3206
                                                        sReturnUid = ""
3207
                                                    End If
3208
                                                Else
3209
                                                    sReturnUid = ""
3210
                                                End If
3211
                                                If sReturnUid = "" Then
3212
                                                    Exit While
3213
                                                End If
3214
                                            End While
3215
                                        Catch ex As Exception
3216
                                        End Try
3217
                                    End If
3218
                                Next
3219
                            End If
3220
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3221
                            If CTrimLineNo IsNot Nothing Then
3222
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3223
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3224
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3225
                                Dim oDrawLinenoLabel As Boolean = False
3226

    
3227
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3228
                                    If oSymbolNode.Checked Then
3229
                                        Try
3230
                                            Dim sUid As String = oSymbolNode.Name
3231
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3232
                                            Dim sReturnUid = sUid
3233
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3234
                                            While True
3235
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3236
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3237
                                                If oLineRows.Count > 0 Then
3238
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3239
                                                    If sPipeType.ToUpper() <> "PRIMARY" Then
3240
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3241
                                                    Else
3242
                                                        sReturnUid = ""
3243
                                                    End If
3244
                                                Else
3245
                                                    sReturnUid = ""
3246
                                                End If
3247
                                                If sReturnUid = "" Then
3248
                                                    Exit While
3249
                                                End If
3250
                                            End While
3251
                                        Catch ex As Exception
3252
                                        End Try
3253
                                    End If
3254
                                Next
3255
                            End If
3256
                        Next
3257
                    End If
3258
                Next
3259
            Next
3260
        Catch ex As Exception
3261

    
3262
        End Try
3263
    End Sub
3264

    
3265

    
3266
    Private Sub FindNearPoint(ByVal oOPCSymbol As LMSymbol, ByRef dNear_x As Double, ByRef dNear_y As Double)
3267
        Dim oConnectionPoints_x(4) As Double
3268
        Dim oConnectionPoints_y(4) As Double
3269

    
3270
        Try
3271
            _Placement.PIDConnectPointLocation(oOPCSymbol, 1, oConnectionPoints_x(0), oConnectionPoints_y(0))
3272
            _Placement.PIDConnectPointLocation(oOPCSymbol, 2, oConnectionPoints_x(1), oConnectionPoints_y(1))
3273
            _Placement.PIDConnectPointLocation(oOPCSymbol, 3, oConnectionPoints_x(2), oConnectionPoints_y(2))
3274
            _Placement.PIDConnectPointLocation(oOPCSymbol, 4, oConnectionPoints_x(3), oConnectionPoints_y(3))
3275
            Dim iNearPoint As Integer = 0
3276
            Dim dGap As Double = 0
3277
            For i = 0 To 3
3278
                If dGap = 0 Then
3279
                    iNearPoint = i
3280
                    dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
3281
                Else
3282
                    If dGap >= Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y) Then
3283
                        iNearPoint = i
3284
                        dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
3285
                    End If
3286
                End If
3287
            Next
3288
            dNear_x = oConnectionPoints_x(iNearPoint)
3289
            dNear_y = oConnectionPoints_y(iNearPoint)
3290
        Catch ex As Exception
3291

    
3292
        End Try
3293

    
3294
    End Sub
3295

    
3296
    Private Function GetPipeColor(ByVal sType As String) As Color
3297
        If sType.ToUpper() = "ELECTRIC" Then
3298
            Return Color.DarkOrange
3299
        ElseIf sType.ToUpper() = "CONNECT TO PROCESS" Then
3300
            Return Color.LightGreen
3301
        ElseIf sType.ToUpper() = "SOFTWARE" Then
3302
            Return Color.Blue
3303
        ElseIf sType.ToUpper() = "PNEUMATIC" Then
3304
            Return Color.Gray
3305
        Else
3306
            Return Color.Black
3307
        End If
3308
    End Function
3309

    
3310
    Private Function GetPipeType(ByVal sType As String) As String
3311
        Dim sSystempath As String = "\Piping\Routing\Process Lines\Primary Piping.sym" ' oPipeRow(0)(_XML_LINE_SYSTEMPATH).ToString()
3312
        If sType.ToUpper() = "ELECTRIC" Then
3313
            sSystempath = "\Instrumentation\Signal Line\Electric.sym"
3314
        ElseIf sType.ToUpper() = "CONNECT TO PROCESS" Then
3315
            sSystempath = "\Instrumentation\Signal Line\Connect to Process.sym"
3316
        ElseIf sType.ToUpper() = "SOFTWARE" Then
3317
            sSystempath = "\Instrumentation\Signal Line\Software Link.sym"
3318
        ElseIf sType.ToUpper() = "PNEUMATIC" Then
3319
            sSystempath = "\Instrumentation\Signal Line\Pneumatic.sym"
3320
        Else
3321
        End If
3322
        Return sSystempath
3323
    End Function
3324

    
3325
    Private Sub InitAutoRouting()
3326
        For Each oDrwing As TreeNode In Tree_Result.Nodes
3327
            For Each oDwgNode As TreeNode In oDrwing.Nodes
3328
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
3329
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
3330
                If CDrawing IsNot Nothing Then
3331
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
3332
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
3333
                    SetListBoxItems(ListBox_Result, "Place " & CDrawing.DwgName & "....")
3334

    
3335
                    For Each oNode As TreeNode In oDwgNode.Nodes
3336
                        Dim iItemcnt As Integer = 0
3337
                        Dim sNodeUid As String = oNode.Name
3338
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3339
                        Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3340
                        If CLineNo IsNot Nothing Then
3341
                            Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3342
                            Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3343

    
3344
                            For Each oLineRow In oLine_Dt.Rows
3345
                                ' oLineRow(_XML_LINE_UID) = ""
3346
                                oLineRow(_XML_LINE_SPID) = ""
3347
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
3348
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
3349
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
3350
                                oLineRow(_XML_LINE_DRAWING_TF) = "FALSE"
3351
                                oLineRow(_XML_LINE_Check) = "FALSE"
3352
                            Next
3353
                            For Each oSymbolRow In oSymbol_Dt.Rows
3354
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
3355
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
3356
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
3357
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
3358
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
3359
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
3360
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
3361
                                oSymbolRow(_XML_SYMBOL_Check) = "FALSE"
3362
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
3363

    
3364
                            Next
3365

    
3366
                        End If
3367

    
3368
                        Dim CTRIMLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3369
                        If CTRIMLineNo IsNot Nothing Then
3370
                            Dim oLine_Dt As DataTable = CTRIMLineNo.Dt_Line
3371
                            Dim oSymbol_Dt As DataTable = CTRIMLineNo.Dt_Symbol
3372

    
3373
                            For Each oLineRow In oLine_Dt.Rows
3374
                                ' oLineRow(_XML_LINE_UID) = ""
3375
                                oLineRow(_XML_LINE_SPID) = ""
3376
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
3377
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
3378
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
3379
                                oLineRow(_XML_LINE_DRAWING_TF) = "FALSE"
3380
                                oLineRow(_XML_LINE_Check) = "FALSE"
3381
                            Next
3382
                            For Each oSymbolRow In oSymbol_Dt.Rows
3383
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
3384
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
3385
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
3386
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
3387
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
3388
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
3389
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
3390
                                oSymbolRow(_XML_SYMBOL_Check) = "FALSE"
3391
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
3392

    
3393
                            Next
3394

    
3395
                        End If
3396
                    Next
3397
                End If
3398
            Next
3399
        Next
3400
    End Sub
3401

    
3402

    
3403

    
3404

    
3405

    
3406

    
3407
    Private Function CheckBranchLine(ByVal dStartX As Double, ByVal dStartY As Double,
3408
                                ByRef dEndX As Double, ByRef dEndY As Double, ByRef sBranchType As String, ByRef oLMConnector As LMConnector) As Boolean
3409

    
3410
        Try
3411

    
3412
            For Each oModelrow In _ModelingLine_Dt.Rows
3413
                'Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
3414
                'Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
3415
                Dim dModelStartX As Double
3416
                Dim dModelStartY As Double
3417
                Dim dModelEndX As Double
3418
                Dim dModelEndY As Double
3419
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3420
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3421
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3422
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3423
                'ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
3424
                'ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
3425
                'ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
3426
                'ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
3427
                Dim dGap As Double = 0.0002
3428
                Dim d기준x As Double = (dModelStartX + dModelEndX) / 2
3429
                Dim d기준y As Double = (dModelStartY + dModelEndY) / 2
3430
                Try
3431
                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3432
                Catch ex As Exception
3433

    
3434
                End Try
3435
                Dim oRun As LMPipeRun = Nothing
3436
                Try
3437

    
3438
                    oRun = _Placement.PIDDataSource.GetPipeRun(oLMConnector.ModelItemID)
3439
                    Dim dResultCalc As Double = -1
3440
                    For Each objRep In oRun.Representations
3441
                        If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
3442
                            Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
3443
                            For Each objConnectorVertex In objConnector.ConnectorVertices
3444
                                Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3445
                                Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3446
                                Dim dStartCalc As Double = Math.Abs(dStartX - dConn_X) + Math.Abs(dStartY - dConn_Y)
3447

    
3448
                                If dResultCalc > dStartCalc Or dResultCalc = -1 Then
3449
                                    dResultCalc = dStartCalc
3450
                                    oLMConnector = objConnector
3451
                                    d기준x = dConn_X
3452
                                    d기준y = dConn_Y
3453
                                End If
3454
                                Dim dEndCalc As Double = Math.Abs(dEndX - dConn_X) + Math.Abs(dEndY - dConn_Y)
3455
                                If dResultCalc > dEndCalc Then
3456
                                    dResultCalc = dEndCalc
3457
                                    oLMConnector = objConnector
3458
                                    d기준x = dConn_X
3459
                                    d기준y = dConn_Y
3460
                                End If
3461
                            Next
3462
                        End If
3463
                    Next
3464
                    '        _Placement.PIDConnectPointLocation(oRun, 1, dModelStartX, dModelEndX)
3465
                    '       _Placement.PIDConnectPointLocation(oRun, 2, dModelEndX, dModelEndY)
3466
                Catch ex As Exception
3467
                End Try
3468

    
3469

    
3470
                'Dim sSPID As String = oModelrow(_XML_LINE_SPID).ToString()
3471
                'Dim oPipeRun As LMPipeRun = _Placement.PIDDataSource.Get PipeRun(sSPID)
3472
                'If dModelStartX + dGap > dStartX And dModelStartX - dGap < dStartX And
3473
                '        dModelStartY + dGap > dStartY And dModelStartY - dGap < dStartY Then
3474
                '    dStartX = dModelStartX
3475
                '    dStartY = dModelStartY
3476
                'ElseIf dModelEndX + dGap > dStartX And dModelEndX - dGap < dStartX And
3477
                '        dModelEndY + dGap > dStartY And dModelEndY - dGap < dStartY Then
3478
                '    dStartX = dModelEndX
3479
                '    dStartY = dModelEndY
3480
                'End If
3481

    
3482
                'Vetical
3483
                If Math.Abs(dModelStartX - dModelEndX) <= Math.Abs(dModelStartY - dModelEndY) Then
3484
                    If Math.Abs(dStartX - dEndX) >= Math.Abs(dStartY - dEndY) Then
3485
                        'Horizontal 
3486
                        ' dGap = 0.0002 'Math.Abs(dStartX - dEndX) / 20
3487
                        '기준선의 Y범위안에 가로선이 포함되어야됨
3488
                        If (dModelStartY + dGap >= dStartY And dModelEndY - dGap <= dStartY) Or
3489
                            (dModelStartY - dGap <= dStartY And dModelEndY + dGap >= dStartY) And
3490
                            (dModelStartY + dGap >= dEndY And dModelEndY - dGap <= dEndY) Or
3491
                            (dModelStartY - dGap <= dEndY And dModelEndY + dGap >= dEndY) Then
3492
                            '기준선보다 왼쪽에 가로선이 있을때
3493
                            If d기준x >= dStartX And d기준x >= dEndX Then
3494
                                If dStartX >= dEndX Then
3495
                                    'dStartX 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3496
                                    If dStartX + dGap >= d기준x Then
3497
                                        dStartX = d기준x
3498
                                        sBranchType = "1"
3499
                                        Return True
3500
                                    End If
3501
                                Else
3502
                                    'dEndX 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3503
                                    If dEndX + dGap >= d기준x Then
3504
                                        dEndX = d기준x
3505
                                        sBranchType = "2"
3506
                                        Return True
3507
                                    End If
3508
                                End If
3509
                                '기준선보다 오른쪽에 가로선이 있을때
3510
                            ElseIf d기준x <= dStartX And d기준x <= dEndX Then
3511
                                If dStartX >= dEndX Then
3512
                                    'dEndX 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3513
                                    If dEndX - dGap <= d기준x Then
3514
                                        dEndX = d기준x
3515
                                        sBranchType = "2"
3516
                                        Return True
3517
                                    End If
3518
                                Else
3519
                                    'dStartX 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3520
                                    If dStartX - dGap <= d기준x Then
3521
                                        dStartX = d기준x
3522
                                        sBranchType = "1"
3523
                                        Return True
3524
                                    End If
3525
                                End If
3526
                            Else
3527
                                '기준선과 세로선이 겹칠때
3528
                                If (d기준x >= dStartX And d기준x <= dEndX) Or
3529
                                        (d기준x <= dStartX And d기준x >= dEndX) Then
3530
                                    If (dModelStartY <= dStartY And dModelEndY >= dEndY) Or
3531
                                        (dModelStartY >= dStartY And dModelEndY <= dEndY) Then
3532
                                        '기준선이 dStartX와 dEndX중 어느쪽에 가까운지 확인
3533
                                        '가로선의 왼쪽점과 기준선이 가까울때는 gap만큼 뺐을때 기준선보다 작은지확인
3534
                                        '가로선의 오른쪽점과 기준선이 가까울때는 gap만큼 더했을때 기준선보다 큰지확인
3535
                                        If Math.Abs(d기준x - dStartX) >= Math.Abs(d기준x - dEndX) Then
3536
                                            'EndX점이 기준선과 더 가까이 있음
3537
                                            If dStartX >= dEndX Then
3538
                                                '가로선의 왼쪽점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3539
                                                If dEndX - dGap <= d기준x Then
3540
                                                    dEndX = d기준x
3541
                                                    sBranchType = "4"
3542
                                                    Return True
3543
                                                End If
3544
                                            Else
3545
                                                '가로선의 오른쪽점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3546
                                                If dEndX + dGap >= d기준x Then
3547
                                                    dEndX = d기준x
3548
                                                    sBranchType = "4"
3549
                                                    Return True
3550
                                                End If
3551

    
3552
                                            End If
3553
                                        Else
3554
                                            'dStartX점이 기준선과 더 가까이 있음
3555
                                            If dStartX >= dEndX Then
3556
                                                '가로선의 오른쪽점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3557
                                                If dStartX + dGap >= d기준x Then
3558
                                                    dStartX = d기준x
3559
                                                    sBranchType = "3"
3560
                                                    Return True
3561
                                                End If
3562

    
3563
                                            Else
3564
                                                '가로선의 왼쪽점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3565
                                                If dStartX - dGap <= d기준x Then
3566
                                                    dStartX = d기준x
3567
                                                    sBranchType = "3"
3568
                                                    Return True
3569
                                                End If
3570
                                            End If
3571
                                        End If
3572
                                    End If
3573

    
3574
                                End If
3575
                            End If
3576
                        End If
3577

    
3578
                    End If
3579
                Else
3580
                    'Horizontal
3581
                    If Math.Abs(dModelStartX - dModelEndX) >= Math.Abs(dModelStartY - dModelEndY) Then
3582
                        'Vertical
3583
                        If Math.Abs(dStartX - dEndX) <= Math.Abs(dStartY - dEndY) Then
3584
                            '  dGap = 0.0015 'Math.Abs(dStartY - dEndY) / 80
3585

    
3586
                            '기준선의 X범위안에 세로선이 포함되어야됨
3587
                            If ((dModelStartX + dGap >= dStartX And dModelEndX - dGap <= dStartX) Or
3588
                            (dModelStartX - dGap <= dStartX And dModelEndX + dGap >= dStartX)) And
3589
                            ((dModelStartX + dGap >= dEndX And dModelEndX - dGap <= dEndX) Or
3590
                            (dModelStartX - dGap <= dEndX And dModelEndX + dGap >= dEndX)) Then
3591

    
3592
                                '가로선보다 아래에 세로선이 있을때
3593
                                If d기준y >= dStartY And d기준y >= dEndY Then
3594
                                    If dStartY >= dEndY Then
3595
                                        'dStartY 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3596
                                        If dStartY + dGap >= d기준y Then
3597
                                            dStartY = d기준y
3598
                                            sBranchType = "3"
3599
                                            Return True
3600
                                        End If
3601
                                    Else
3602
                                        'dEndY 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3603
                                        If dEndY + dGap >= d기준y Then
3604
                                            dEndY = d기준y
3605

    
3606
                                            If Math.Abs(dEndX - dModelStartX) > Math.Abs(dEndX - dModelEndX) Then
3607
                                                dEndX = dModelEndX
3608
                                            Else
3609
                                                dEndX = dModelStartX
3610
                                            End If
3611

    
3612
                                            sBranchType = "4"
3613
                                            Return True
3614
                                        End If
3615
                                    End If
3616
                                    '기준선보다 위에 세로선이 있을때
3617
                                ElseIf d기준y <= dStartY And d기준y <= dEndY Then
3618
                                    If dStartY >= dEndY Then
3619
                                        'dEndY 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3620
                                        If dEndY - dGap <= d기준y Then
3621
                                            dEndY = d기준y
3622
                                            sBranchType = "4"
3623
                                            Return True
3624
                                        End If
3625
                                    Else
3626
                                        'dStartY 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3627
                                        If dStartY - dGap <= d기준y Then
3628
                                            dStartY = d기준y
3629
                                            sBranchType = "3"
3630
                                            Return True
3631
                                        End If
3632
                                    End If
3633
                                Else
3634
                                    '기준선과 세로선이 겹칠때
3635
                                    If (d기준y >= dStartY And d기준y <= dEndY) Or
3636
                                            (d기준y <= dStartY And d기준y >= dEndY) Then
3637
                                        '기준선이 dStartY와 dEndY중 어느쪽에 가까운지 확인
3638
                                        '세로선의 윗점과 기준선이 가까울때는 gap만큼 뺐을때 기준선보다 작은지확인
3639
                                        '세로선의 아래점과 기준선이 가까울때는 gap만큼 더했을때 기준선보다 큰지확인
3640
                                        If (dModelStartX <= dStartX And dModelEndX >= dEndX) Or
3641
                                            (dModelStartX >= dStartX And dModelEndX <= dEndX) Then
3642
                                            If Math.Abs(d기준y - dStartY) >= Math.Abs(d기준y - dEndY) Then
3643
                                                'Endy점이 기준선과 더 가까이 있음
3644
                                                If dStartY >= dEndY Then
3645
                                                    '세로선의 아래점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3646
                                                    If dEndY + dGap >= d기준y Then
3647
                                                        dEndY = d기준y
3648
                                                        sBranchType = "4"
3649
                                                        Return True
3650
                                                    End If
3651
                                                Else
3652
                                                    '세로선의 윗점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3653
                                                    If dEndY - dGap <= d기준y Then
3654
                                                        dEndY = d기준y
3655
                                                        sBranchType = "4"
3656
                                                        Return True
3657
                                                    End If
3658
                                                End If
3659
                                            Else
3660
                                                'dStartY점이 기준선과 더 가까이 있음
3661
                                                If dStartY >= dEndY Then
3662
                                                    '세로선의 윗점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3663
                                                    If dStartY - dGap <= d기준y Then
3664
                                                        dStartY = d기준y
3665
                                                        sBranchType = "3"
3666
                                                        Return True
3667
                                                    End If
3668
                                                Else
3669
                                                    '세로선의 아래점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3670
                                                    If dStartY + dGap >= d기준y Then
3671
                                                        dStartY = d기준y
3672
                                                        sBranchType = "3"
3673
                                                        Return True
3674
                                                    End If
3675
                                                End If
3676
                                            End If
3677
                                        End If
3678

    
3679
                                    End If
3680
                                End If
3681
                            End If
3682
                        End If
3683
                    End If
3684
                End If
3685
            Next
3686
        Catch ex As Exception
3687

    
3688
        End Try
3689
        oLMConnector = Nothing
3690
        Return False
3691
    End Function
3692

    
3693
    Private Function CheckConnectionSymbolToSymbol(ByVal oModelingLineRows() As DataRow, ByRef dX As Double, ByRef dY As Double,
3694
                                  ByRef oLMConnector As LMConnector) As Boolean
3695
        Dim bConnectionFlag As Boolean = False
3696
        Try
3697
            For Each oModelrow In oModelingLineRows
3698
                Dim d기준x As Double = dX
3699
                Dim d기준y As Double = dY
3700
                Dim dGap As Double = 0.0002
3701
                Dim oRun As LMPipeRun = Nothing
3702
                Try
3703
                    Dim oLMSymbol As LMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3704
                    Dim dX1 As Double = 0.0
3705
                    Dim dY1 As Double = 0.0
3706
                    Dim dX2 As Double = 0.0
3707
                    Dim dY2 As Double = 0.0
3708
                    For Each oConnector In oLMSymbol.Connect1Connectors
3709
                        oLMConnector = oConnector
3710
                    Next
3711
                    '  oRun = _Placement.PIDDataSource.GetPipeRun(oLMSymbol.Connect1Connectors.Nth(1).ModelItemID)
3712
                    _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3713
                    _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3714
                    If Math.Abs(dX - dX1) < dGap And Math.Abs(dY - dY1) < dGap Then
3715
                        dX = dX1
3716
                        dY = dY1
3717
                        bConnectionFlag = True
3718
                        Exit For
3719
                    End If
3720
                    If Math.Abs(dX - dX2) < dGap And Math.Abs(dY - dY2) < dGap Then
3721
                        dX = dX2
3722
                        dY = dY2
3723
                        bConnectionFlag = True
3724
                        Exit For
3725
                    End If
3726

    
3727
                    'For Each oConnector In oLMSymbol.Connect1Connectors
3728
                    '    For Each objConnectorVertex In oConnector.ConnectorVertices
3729
                    '        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3730
                    '        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3731
                    '        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3732
                    '            oLMConnector = oConnector
3733
                    '            dX = dConn_X
3734
                    '            dY = dConn_Y
3735
                    '            bConnectionFlag = True
3736
                    '            Exit For
3737
                    '        End If
3738
                    '    Next
3739
                    'Next
3740

    
3741
                    'For Each oConnector In oLMSymbol.Connect2Connectors
3742
                    '    For Each objConnectorVertex In oConnector.ConnectorVertices
3743
                    '        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3744
                    '        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3745
                    '        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3746
                    '            oLMConnector = oConnector
3747
                    '            dX = dConn_X
3748
                    '            dY = dConn_Y
3749
                    '            bConnectionFlag = True
3750
                    '            Exit For
3751
                    '        End If
3752
                    '    Next
3753
                    'Next
3754

    
3755

    
3756
                    'If oRun IsNot Nothing Then
3757
                    '    Dim dResultCalc As Double = -1
3758
                    '    For Each objRep In oRun.Representations
3759
                    '        Dim sRepresentationType As String = objRep.Attributes("RepresentationType").Value
3760
                    '        If objRep.Attributes("RepresentationType").Value = "Connector" Or
3761
                    '            objRep.Attributes("RepresentationType").Value = "Symbol" And
3762
                    '             objRep.Attributes("ItemStatus").Value = "Active" Then
3763
                    '            Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
3764
                    '            For Each objConnectorVertex In objConnector.ConnectorVertices
3765
                    '                Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3766
                    '                Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3767
                    '                If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3768
                    '                    oLMConnector = objConnector
3769
                    '                    d기준x = dConn_X
3770
                    '                    d기준y = dConn_Y
3771
                    '                    bConnectionFlag = True
3772
                    '                    Exit For
3773
                    '                End If
3774
                    '            Next
3775
                    '        End If
3776
                    '    Next
3777
                    'End If
3778

    
3779
                Catch ex As Exception
3780
                End Try
3781
            Next
3782

    
3783
        Catch ex As Exception
3784

    
3785
        End Try
3786
        Return bConnectionFlag
3787
    End Function
3788

    
3789
    Private Function CheckConnectionSymbolToLine(ByVal oModelingLineRows() As DataRow, ByRef dX As Double, ByRef dY As Double,
3790
ByVal dCenterX As Double, ByVal dCenterY As Double, ByRef oLMConnector As LMConnector) As LMSymbol
3791
        Dim bConnectionFlag As Boolean = False
3792
        Dim oLMSymbol As LMSymbol = Nothing
3793
        Try
3794

    
3795
            For Each oModelrow In _ModelingSymbol_Dt.Rows
3796
                Dim dMinx As Double = oModelrow(_XML_SYMBOL_MIN_X)
3797
                Dim dMaxx As Double = oModelrow(_XML_SYMBOL_MAX_X)
3798
                Dim dMiny As Double = oModelrow(_XML_SYMBOL_MIN_Y)
3799
                Dim dMaxy As Double = oModelrow(_XML_SYMBOL_MAX_Y)
3800
                Dim dGap As Double = 0.001
3801
                If dMinx <= dX And dMaxx >= dX And dMiny <= dY And dMaxy >= dY Then
3802
                    oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3803
                    Dim dX1 As Double = 0.0
3804
                    Dim dY1 As Double = 0.0
3805
                    Dim dX2 As Double = 0.0
3806
                    Dim dY2 As Double = 0.0
3807
                    Dim dX3 As Double = 0.0
3808
                    Dim dY3 As Double = 0.0
3809
                    Dim dX4 As Double = 0.0
3810
                    Dim dY4 As Double = 0.0
3811
                    Dim dX5 As Double = 0.0
3812
                    Dim dY5 As Double = 0.0
3813
                    Dim dX6 As Double = 0.0
3814
                    Dim dY6 As Double = 0.0
3815
                    Dim dX7 As Double = 0.0
3816
                    Dim dY7 As Double = 0.0
3817
                    Dim dX8 As Double = 0.0
3818
                    Dim dY8 As Double = 0.0
3819
                    _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3820
                    _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3821
                    _Placement.PIDConnectPointLocation(oLMSymbol, 3, dX3, dY3)
3822
                    _Placement.PIDConnectPointLocation(oLMSymbol, 4, dX4, dY4)
3823
                    _Placement.PIDConnectPointLocation(oLMSymbol, 5, dX5, dY5)
3824
                    _Placement.PIDConnectPointLocation(oLMSymbol, 6, dX6, dY6)
3825
                    _Placement.PIDConnectPointLocation(oLMSymbol, 7, dX7, dY7)
3826
                    _Placement.PIDConnectPointLocation(oLMSymbol, 8, dX8, dY8)
3827

    
3828
                    If Math.Abs(dX - dX1) <= dGap And Math.Abs(dY - dY1) <= dGap Then
3829
                        dX = dX1
3830
                        dY = dY1
3831
                    ElseIf Math.Abs(dX - dX2) <= dGap And Math.Abs(dY - dY2) <= dGap Then
3832
                        dX = dX2
3833
                        dY = dY2
3834
                    ElseIf Math.Abs(dX - dX3) <= dGap And Math.Abs(dY - dY3) <= dGap Then
3835
                        dX = dX3
3836
                        dY = dY3
3837
                    ElseIf Math.Abs(dX - dX4) <= dGap And Math.Abs(dY - dY4) <= dGap Then
3838
                        dX = dX4
3839
                        dY = dY4
3840
                    ElseIf Math.Abs(dX - dX5) <= dGap And Math.Abs(dY - dY5) <= dGap Then
3841
                        dX = dX5
3842
                        dY = dY5
3843
                    ElseIf Math.Abs(dX - dX6) <= dGap And Math.Abs(dY - dY6) <= dGap Then
3844
                        dX = dX6
3845
                        dY = dY6
3846
                    ElseIf Math.Abs(dX - dX7) <= dGap And Math.Abs(dY - dY7) <= dGap Then
3847
                        dX = dX7
3848
                        dY = dY7
3849
                    ElseIf Math.Abs(dX - dX8) <= dGap And Math.Abs(dY - dY8) <= dGap Then
3850
                        dX = dX8
3851
                        dY = dY8
3852
                    End If
3853
                End If
3854
            Next
3855

    
3856

    
3857

    
3858
            'For Each oModelrow In oModelingLineRows
3859
            '    Dim d기준x As Double = dCenterX
3860
            '    Dim d기준y As Double = dCenterY
3861
            '    Dim dGap As Double = 0.001
3862
            '    Dim oRun As LMPipeRun = Nothing
3863
            '    Dim dCheckGap As Double = 0
3864
            '    Try
3865

    
3866
            '        Dim dX1 As Double = 0.0
3867
            '        Dim dY1 As Double = 0.0
3868
            '        Dim dX2 As Double = 0.0
3869
            '        Dim dY2 As Double = 0.0
3870
            '        '  oRun = _Placement.PIDDataSource.GetPipeRun(oLMSymbol.Connect1Connectors.Nth(1).ModelItemID)
3871
            '        oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3872
            '        For Each oConnector In oLMSymbol.Connect1Connectors
3873
            '            oLMConnector = oConnector
3874
            '        Next
3875
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3876
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3877
            '        '  If Math.Abs(dX - dX1) < dGap And Math.Abs(dY - dY1) < dGap And
3878
            '        If Math.Abs(d기준x - dX1) < dCheckGap And Math.Abs(d기준y - dY1) < dCheckGap Or dCheckGap = 0 Then
3879
            '            dX = dX1
3880
            '            dY = dY1
3881
            '            bConnectionFlag = True
3882
            '            dCheckGap = Math.Abs(d기준x - dX1) + Math.Abs(d기준y - dY1)
3883
            '        End If
3884
            '        'If Math.Abs(dX - dX2) < dGap And Math.Abs(dY - dY2) < dGap And
3885
            '        '  Math.Abs(d기준x - dX2) < dCheckGap And Math.Abs(d기준y - dY2 < dCheckGap) Or dCheckGap = 0 Then
3886
            '        If Math.Abs(d기준x - dX2) < dCheckGap And Math.Abs(d기준y - dY2) < dCheckGap Or dCheckGap = 0 Then
3887
            '            dX = dX2
3888
            '            dY = dY2
3889
            '            bConnectionFlag = True
3890
            '        End If
3891

    
3892
            '    Catch ex As Exception
3893
            '    End Try
3894
            '    If bConnectionFlag Then
3895
            '        oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3896
            '    Else
3897
            '        oLMSymbol = Nothing
3898
            '    End If
3899
            'Next
3900

    
3901
        Catch ex As Exception
3902

    
3903
        End Try
3904

    
3905
        Return oLMSymbol
3906
    End Function
3907

    
3908
    ''' <summary>
3909
    ''' 라인과 라인이 만나는점이 브런치점인지 확인, 오차범위내 라인보정
3910
    ''' </summary>
3911
    ''' <param name="oModelingLineRows"></param>
3912
    ''' <param name="dStartX"></param>
3913
    ''' <param name="dStartY"></param>
3914
    ''' <param name="dEndX"></param>
3915
    ''' <param name="dEndY"></param>
3916
    ''' <param name="oLMConnector"></param>
3917
    ''' <returns></returns>
3918
    Private Function CheckBranchLine(ByVal oModelingLineRows As DataRowCollection, ByRef dStartX As Double, ByRef dStartY As Double,
3919
                                     ByRef dEndX As Double, ByRef dEndY As Double, ByRef oLMConnector As LMConnector) As String
3920
        Dim bConnectionFlag As Boolean = False
3921
        Dim sBranchDirection As String = ""
3922
        Try
3923
            For Each oModelrow In oModelingLineRows
3924
                Dim dModelStartX As Double
3925
                Dim dModelStartY As Double
3926
                Dim dModelEndX As Double
3927
                Dim dModelEndY As Double
3928
                Dim dGap As Double = 0.002
3929
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3930
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3931
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3932
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3933

    
3934
                '기존라인이 X축방향이라면 현재선은 Y축방향이 되어야됨
3935
                If Math.Abs(dModelStartX - dModelEndX) > Math.Abs(dModelStartY - dModelEndY) And
3936
                    Math.Abs(dStartX - dEndX) < Math.Abs(dStartY - dEndY) Then
3937

    
3938
                    '기본라인의 X축영역안에 현재선이 있어야됨
3939
                    '      If dModelEndY > dModelStartY Then
3940
                    If (dStartX < dModelEndX And dStartX > dModelStartX) Or
3941
                            (dStartX > dModelEndX And dStartX < dModelStartX) Then
3942
                        '[오차범위 수정]
3943
                        '현재선의 Y축방향이 기존라인의 X축방향을 통과하는지 확인
3944
                        If dStartY < dEndY Then
3945
                            If dEndY > dModelStartY And dModelStartY > dStartY Then
3946
                                If dEndY - dModelStartY > dModelStartY - dStartY Then
3947
                                    '위쪽으로 라인이 나와있을때
3948
                                    '현재선 중 작은 Y좌표를 오차범위만큼 더했을때 기존라인의 Y축보다 큰지확인 
3949
                                    'Y축보다 클경우 작은 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 큰 Y좌표에 더한다.
3950
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
3951
                                        Dim dAddPoint As Double = dModelStartY - dStartY
3952
                                        dEndY = dEndY + dAddPoint
3953
                                        dStartY = dModelStartY
3954
                                        sBranchDirection = "START"
3955
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3956
                                        Exit For
3957
                                    End If
3958
                                Else
3959
                                    '아래쪽으로 라인이 나와있을때
3960
                                    '현재선 중 큰 Y좌표를 오차범위만큼 뺐을때 기존라인의 Y축보다 작은지확인 
3961
                                    'Y축보다 작을경우 큰 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 작은 Y좌표에 뺀다.
3962
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
3963
                                        Dim dAddPoint As Double = dEndY - dModelStartY
3964
                                        dStartY = dStartY - dAddPoint
3965
                                        dEndY = dModelStartY
3966
                                        sBranchDirection = "END"
3967
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3968
                                        Exit For
3969
                                    End If
3970
                                End If
3971
                            Else
3972
                                '현재선의 Y축방향이 기존라인의 X축방향에 못미치는지 확인
3973
                                If dStartY > dModelStartY Then
3974
                                    '기존라인보다 위쪽에 현재선이 있을때
3975
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
3976
                                        '오차범위만큼 작은 y좌표를 뺐을때 기존라인보다 아래쪽에 있을경우 오차보정
3977
                                        Dim dAddPoint As Double = dStartY - dModelStartY
3978
                                        dEndY = dEndY - dAddPoint
3979
                                        dStartY = dModelStartY
3980
                                        sBranchDirection = "START"
3981
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3982
                                        Exit For
3983
                                    End If
3984
                                Else
3985
                                    '기존라인보다 아래쪽에 현재선이 있을때
3986
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
3987
                                        '오차범위만큼 큰 y좌표를 더했을때 기존라인보다 위쪽에 있을경우 오차보정
3988
                                        Dim dAddPoint As Double = dModelStartY - dEndY
3989
                                        dEndY = dModelStartY
3990
                                        dStartY = dStartY + dAddPoint
3991
                                        sBranchDirection = "END"
3992
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3993
                                        Exit For
3994
                                    End If
3995
                                End If
3996
                            End If
3997
                        Else
3998
                            If dEndY < dModelStartY And dModelStartY < dStartY Then
3999
                                If dModelStartY - dEndY < dStartY - dModelStartY Then
4000
                                    '위쪽으로 라인이 나와있을때
4001
                                    '현재선 중 작은 Y좌표를 오차범위만큼 더했을때 기존라인의 Y축보다 큰지확인 
4002
                                    'Y축보다 클경우 작은 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 큰 Y좌표에 더한다.
4003
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4004
                                        Dim dAddPoint As Double = dModelStartY - dEndY
4005
                                        dStartY = dStartY + dAddPoint
4006
                                        dEndY = dModelStartY
4007
                                        sBranchDirection = "END"
4008
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4009
                                        Exit For
4010
                                    End If
4011
                                Else
4012
                                    '아래쪽으로 라인이 나와있을때
4013
                                    '현재선 중 큰 Y좌표를 오차범위만큼 뺐을때 기존라인의 Y축보다 작은지확인 
4014
                                    'Y축보다 작을경우 큰 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 작은 Y좌표에 뺀다.
4015
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
4016
                                        Dim dAddPoint As Double = dStartY - dModelStartY
4017
                                        dEndY = dEndY - dAddPoint
4018
                                        dStartY = dModelStartY
4019
                                        sBranchDirection = "START"
4020
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4021
                                        Exit For
4022
                                    End If
4023
                                End If
4024
                            Else
4025
                                If dEndY > dModelStartY Then
4026
                                    '기존라인보다 우측에 현재선이 있을때
4027
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4028
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4029
                                        Dim dAddPoint As Double = dEndY - dModelStartY
4030
                                        dStartY = dStartY - dAddPoint
4031
                                        dEndY = dModelStartY
4032
                                        sBranchDirection = "END"
4033
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4034
                                        Exit For
4035
                                    End If
4036
                                Else
4037
                                    '기존라인보다 좌측에 현재선이 있을때
4038
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
4039
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4040
                                        Dim dAddPoint As Double = dModelStartY - dStartY
4041
                                        dStartY = dModelStartY
4042
                                        dEndY = dEndY + dAddPoint
4043
                                        sBranchDirection = "START"
4044
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4045
                                        Exit For
4046
                                    End If
4047
                                End If
4048
                            End If
4049
                        End If
4050
                    End If
4051
                    '기존라인이 Y축방향이라면 현재선은 X축방향이 되어야됨
4052
                ElseIf Math.Abs(dModelStartX - dModelEndX) < Math.Abs(dModelStartY - dModelEndY) And
4053
                Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
4054

    
4055
                    '기본라인의 Y축영역안에 현재선이 있어야됨
4056
                    '      If dModelEndY > dModelStartY Then
4057
                    If (dStartY < dModelEndY And dStartY > dModelStartY) Or
4058
                            (dStartY > dModelEndY And dStartY < dModelStartY) Then
4059
                        '[오차범위 수정]
4060
                        '현재선의 X축방향이 기존라인의 Y축방향을 통과하는지 확인
4061
                        If dStartX < dEndX Then
4062
                            If dEndX > dModelStartX And dModelStartX > dStartX Then
4063
                                If dEndX - dModelStartX > dModelStartX - dStartX Then
4064
                                    '우측으로 라인이 나와있을때
4065
                                    '현재선 중 작은 X좌표를 오차범위만큼 더했을때 기존라인의 X축보다 큰지확인 
4066
                                    'X축보다 클경우 작은 X좌표를 기존라인의 X축에 맞추고 더한 길이만큼 큰 X좌표에 더한다.
4067
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4068
                                        Dim dAddPoint As Double = dModelStartX - dStartX
4069
                                        dEndX = dEndX + dAddPoint
4070
                                        dStartX = dModelStartX
4071
                                        sBranchDirection = "START"
4072
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4073
                                        Exit For
4074
                                    End If
4075
                                Else
4076
                                    '좌측으로 라인이 나와있을때
4077
                                    '현재선 중 큰 X좌표를 오차범위만큼 뺐을때 기존라인의 X축보다 작은지확인 
4078
                                    'X축보다 작을경우 큰 X좌표를 기존라인의 X축에 맞추고 뺀 길이만큼 작은 X좌표에 뺀다.
4079
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4080
                                        Dim dAddPoint As Double = dEndX - dModelStartX
4081
                                        dStartX = dStartX - dAddPoint
4082
                                        dEndX = dModelStartX
4083
                                        sBranchDirection = "END"
4084
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4085
                                        Exit For
4086
                                    End If
4087
                                End If
4088
                            Else
4089
                                '현재선의 X축방향이 기존라인의 Y축방향에 못미치는지 확인
4090
                                If dStartX > dModelStartX Then
4091
                                    '기존라인보다 우측에 현재선이 있을때
4092
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4093
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4094
                                        Dim dAddPoint As Double = dStartX - dModelStartX
4095
                                        dEndX = dEndX - dAddPoint
4096
                                        dStartX = dModelStartX
4097
                                        sBranchDirection = "START"
4098
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4099
                                        Exit For
4100
                                    End If
4101
                                Else
4102
                                    '기존라인보다 좌측에 현재선이 있을때
4103
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4104
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4105
                                        Dim dAddPoint As Double = dModelStartX - dEndX
4106
                                        dEndX = dModelStartX
4107
                                        dStartX = dStartX + dAddPoint
4108
                                        sBranchDirection = "END"
4109
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4110
                                        Exit For
4111
                                    End If
4112
                                End If
4113
                            End If
4114
                        Else
4115
                            If dEndX < dModelStartX And dModelStartX < dStartX Then
4116
                                If dModelStartX - dEndX < dStartX - dModelStartX Then
4117
                                    '우측으로 라인이 나와있을때
4118
                                    '현재선 중 작은 X좌표를 오차범위만큼 더했을때 기존라인의 X축보다 큰지확인 
4119
                                    'X축보다 클경우 작은 X좌표를 기존라인의 X축에 맞추고 더한 길이만큼 큰 X좌에 더한다.
4120
                                    If Math.Abs(dModelStartX - dEndX) <= dGap Then
4121
                                        Dim dAddPoint As Double = dModelStartX - dEndX
4122
                                        dStartX = dStartX + dAddPoint
4123
                                        dEndX = dModelStartX
4124
                                        sBranchDirection = "END"
4125
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4126
                                        Exit For
4127
                                    End If
4128
                                Else
4129
                                    '좌측으로 라인이 나와있을때
4130
                                    '현재선 중 큰 X좌표를 오차범위만큼 뺐을때 기존라인의 X축보다 작은지확인 
4131
                                    'X축보다 작을경우 큰 X좌표를 기존라인의 X축에 맞추고 뺀 길이만큼 작은 X좌표에 뺀다.
4132
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4133
                                        Dim dAddPoint As Double = dStartX - dModelStartX
4134
                                        dEndX = dEndX - dAddPoint
4135
                                        dStartX = dModelStartX
4136
                                        sBranchDirection = "START"
4137
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4138
                                        Exit For
4139
                                    End If
4140

    
4141
                                End If
4142
                            Else
4143
                                If dEndX > dModelStartX Then
4144
                                    '기존라인보다 우측에 현재선이 있을때
4145
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4146
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4147
                                        Dim dAddPoint As Double = dEndX - dModelStartX
4148
                                        dStartX = dStartX - dAddPoint
4149
                                        dEndX = dModelStartX
4150
                                        sBranchDirection = "END"
4151
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4152
                                        Exit For
4153
                                    End If
4154
                                Else
4155
                                    '기존라인보다 좌측에 현재선이 있을때
4156
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4157
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4158
                                        Dim dAddPoint As Double = dModelStartX - dStartX
4159
                                        dStartX = dModelStartX
4160
                                        dEndX = dEndX + dAddPoint
4161
                                        sBranchDirection = "START"
4162
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4163
                                        Exit For
4164
                                    End If
4165
                                End If
4166
                            End If
4167
                        End If
4168
                    End If
4169
                End If
4170
            Next
4171
        Catch ex As Exception
4172
            bConnectionFlag = False
4173
            oLMConnector = Nothing
4174
        End Try
4175
        Return sBranchDirection
4176

    
4177
    End Function
4178

    
4179
    Private Function UpdateCheckBranchLine(ByRef dX As Double, ByRef dY As Double,
4180
                                  ByRef oLMConnector As LMConnector) As Boolean
4181
        Dim bConnectionFlag As Boolean = False
4182
        Dim iGapCheck As Integer = 0
4183
        Try
4184
            For Each oModelrow In _ModelingLine_Dt.Rows
4185
                Dim d기준x As Double = dX
4186
                Dim d기준y As Double = dY
4187
                Dim dGap As Double = 0.001
4188
                Dim oRun As LMPipeRun = Nothing
4189
                Dim dModelStartX As Double
4190
                Dim dModelStartY As Double
4191
                Dim dModelEndX As Double
4192
                Dim dModelEndY As Double
4193
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
4194
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
4195
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
4196
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
4197
                d기준x = (dModelStartX + dModelEndX) / 2
4198
                d기준y = (dModelStartY + dModelEndY) / 2
4199

    
4200

    
4201
                Dim dMax_X As Double = 0.0
4202
                Dim dMax_Y As Double = 0.0
4203
                Dim dMin_X As Double = 0.0
4204
                Dim dMin_Y As Double = 0.0
4205

    
4206

    
4207
                If dModelEndX > dModelStartX Then
4208
                    dMax_X = dModelEndX
4209
                    dMin_X = dModelStartX
4210
                Else
4211
                    dMax_X = dModelStartX
4212
                    dMin_X = dModelEndX
4213
                End If
4214

    
4215
                If dModelEndY > dModelStartY Then
4216
                    dMax_Y = dModelEndY
4217
                    dMin_Y = dModelStartY
4218
                Else
4219
                    dMax_Y = dModelStartY
4220
                    dMin_Y = dModelEndY
4221
                End If
4222

    
4223
                If dX <= dMax_X + dGap And dX >= dMin_X - dGap And
4224
                  dY <= dMax_Y + dGap And dY >= dMin_Y - dGap Then
4225
                    If Math.Abs(dMax_X - dMin_X) > Math.Abs(dMax_Y - dMin_Y) Then
4226
                        dY = dMax_Y
4227
                    Else
4228
                        dX = dMax_X
4229
                    End If
4230

    
4231
                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4232
                End If
4233

    
4234

    
4235
            Next
4236
        Catch ex As Exception
4237
            bConnectionFlag = False
4238
            oLMConnector = Nothing
4239
        End Try
4240
        Return bConnectionFlag
4241
    End Function
4242

    
4243

    
4244
    ''' <summary>
4245
    ''' 라인과 특정 포인트에 커넥션을 확인하는 메서드
4246
    ''' </summary>
4247
    ''' <param name="oModelingLineRows"></param>
4248
    ''' <param name="dX"></param>
4249
    ''' <param name="dY"></param>
4250
    ''' <param name="oLMConnector"></param>
4251
    ''' <param name="dPreConnX"></param>
4252
    ''' <param name="dPreConnY"></param>
4253
    ''' <returns></returns>
4254

    
4255

    
4256

    
4257
    Private Function CheckConnectionLine(ByRef dX As Double, ByRef dY As Double,
4258
                                  ByRef oLMConnector As LMConnector) As Boolean
4259
        Dim bConnectionFlag As Boolean = False
4260
        Dim iGapCheck As Integer = 0
4261
        Try
4262
            For Each oModelrow In _ModelingLine_Dt.Rows
4263
                Dim d기준x As Double = dX
4264
                Dim d기준y As Double = dY
4265
                Dim dGap As Double = 0.0002
4266
                Dim oRun As LMPipeRun = Nothing
4267
                'Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
4268
                'Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
4269
                Dim dModelStartX As Double
4270
                Dim dModelStartY As Double
4271
                Dim dModelEndX As Double
4272
                Dim dModelEndY As Double
4273
                'ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
4274
                'ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
4275
                'ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
4276
                'ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
4277
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
4278
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
4279
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
4280
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
4281
                d기준x = (dModelStartX + dModelEndX) / 2
4282
                d기준y = (dModelStartY + dModelEndY) / 2
4283

    
4284

    
4285
                Dim bCheckEqual As Boolean = False
4286
                If dX <= dModelStartX + dGap And dX >= dModelStartX - dGap And
4287
                        dY <= dModelStartY + dGap And dY >= dModelStartY - dGap Then
4288
                    bCheckEqual = True
4289
                ElseIf dX <= dModelEndX + dGap And dX >= dModelEndX - dGap And
4290
                        dY <= dModelEndY + dGap And dY >= dModelEndY - dGap Then
4291
                    bCheckEqual = True
4292

    
4293
                End If
4294

    
4295
                If bCheckEqual Then
4296
                    Try
4297
                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4298
                        oRun = _Placement.PIDDataSource.GetPipeRun(oLMConnector.ModelItemID)
4299
                    Catch ex As Exception
4300
                    End Try
4301
                    Try
4302
                        If oRun IsNot Nothing Then
4303
                            Dim dResultCalc As Double = -1
4304
                            For Each objRep In oRun.Representations
4305
                                If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
4306
                                    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
4307
                                    For Each objConnectorVertex In objConnector.ConnectorVertices
4308
                                        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
4309
                                        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
4310
                                        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
4311
                                            oLMConnector = objConnector
4312
                                            dX = dConn_X
4313
                                            dY = dConn_Y
4314
                                            bConnectionFlag = True
4315
                                        End If
4316
                                    Next
4317
                                End If
4318
                            Next
4319
                        End If
4320
                    Catch ex As Exception
4321
                    End Try
4322
                Else
4323
                    'Dim dMax_X As Double = 0.0
4324
                    'Dim dMax_Y As Double = 0.0
4325
                    'Dim dMin_X As Double = 0.0
4326
                    'Dim dMin_Y As Double = 0.0
4327

    
4328

    
4329
                    'If dModelEndX > dModelStartX Then
4330
                    '    dMax_X = dModelEndX
4331
                    '    dMin_X = dModelStartX
4332
                    'Else
4333
                    '    dMax_X = dModelStartX
4334
                    '    dMin_X = dModelEndX
4335
                    'End If
4336

    
4337
                    'If dModelEndY > dModelStartY Then
4338
                    '    dMax_Y = dModelEndY
4339
                    '    dMin_Y = dModelStartY
4340
                    'Else
4341
                    '    dMin_Y = dModelStartY
4342
                    '    dMin_X = dModelEndY
4343
                    'End If
4344

    
4345
                    'If dX <= dMax_X + dGap And dX >= dMin_X - dGap And
4346
                    '  dY <= dMax_Y + dGap And dY >= dMin_Y - dGap Then
4347

    
4348
                    '    If Math.Abs(dMax_X - dMin_X) > Math.Abs(dMax_Y - dMin_Y) Then
4349
                    '        dY = dMax_Y
4350
                    '    Else
4351
                    '        dX = dMax_X
4352
                    '    End If
4353

    
4354
                    '    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4355
                    'End If
4356
                End If
4357

    
4358
            Next
4359
        Catch ex As Exception
4360
            bConnectionFlag = False
4361
            oLMConnector = Nothing
4362
        End Try
4363
        Return bConnectionFlag
4364
    End Function
4365

    
4366
    Private Function CheckLineBranch(ByVal oLine_Dt As DataTable, ByRef dX As Double, ByRef dY As Double,
4367
                                     ByVal sDirection As String, ByRef oLMConnector As LMConnector) As Boolean
4368

    
4369
        Dim oModelingLineRows() As DataRow = oLine_Dt.Select("[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And " &
4370
                                                                "[" & _XML_LINE_SPID & "] <> ''")
4371

    
4372
        Dim bConnectionFlag As Boolean = False
4373
        Try
4374
            For Each oModelrow In oModelingLineRows
4375
                Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
4376
                Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
4377
                Dim dModelStartX As Double
4378
                Dim dModelStartY As Double
4379
                Dim dModelEndX As Double
4380
                Dim dModelEndY As Double
4381
                ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
4382
                ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
4383
                ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
4384
                ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
4385
                Dim dGap As Double = 0.0002
4386

    
4387
                If Math.Abs(dModelStartX - dModelEndX) <= Math.Abs(dModelStartY - dModelEndY) Then
4388
                    'Vertical
4389
                    If sDirection = "X" Then
4390
                        'x Direction Line
4391
                        If (dModelStartY + dGap >= dY And dModelEndY - dGap <= dY) Or
4392
                        (dModelStartY - dGap <= dY And dModelEndY + dGap >= dY) Then
4393
                            If (dX > dModelStartX And dX < dModelEndX) Or (dX > dModelEndX And dX < dModelStartX) Then
4394
                                If Math.Abs(dX - dModelStartX) > Math.Abs(dX - dModelEndX) Then
4395
                                    dX = dModelEndX
4396
                                Else
4397
                                    dX = dModelStartX
4398
                                End If
4399
                                Try
4400
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4401
                                Catch ex As Exception
4402

    
4403
                                End Try
4404
                                bConnectionFlag = True
4405
                            End If
4406
                        End If
4407
                    End If
4408
                Else
4409
                    'Horizontal 
4410
                    If sDirection = "Y" Then
4411
                        If (dModelStartX + dGap >= dX And dModelEndX - dGap <= dX) Or
4412
                       (dModelStartX - dGap <= dX And dModelEndX + dGap >= dX) Then
4413
                            If (dY > dModelStartY And dY < dModelEndY) Or (dY > dModelEndY And dY < dModelStartY) Then
4414
                                If Math.Abs(dY - dModelStartY) > Math.Abs(dY - dModelEndY) Then
4415
                                    dY = dModelEndY
4416
                                Else
4417
                                    dY = dModelStartY
4418
                                End If
4419
                                Try
4420
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4421
                                Catch ex As Exception
4422
                                End Try
4423
                                bConnectionFlag = True
4424
                            End If
4425
                        End If
4426
                    End If
4427
                End If
4428
            Next
4429
        Catch ex As Exception
4430
        End Try
4431
        Return bConnectionFlag
4432
    End Function
4433
    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,
4434
                              ByVal sLineNoUid As String, ByVal sLineUid As String, ByVal sSystemPath As String, ByRef oLMConnector As LMConnector) As Boolean
4435
        'Try
4436
        '    Dim oDatasource As Object = _Placement.PIDDataSource
4437
        '    Dim oPipeRun As LMPipeRun = Nothing
4438
        '    Dim objInputs As PlaceRunInputs
4439
        '    objInputs = New PlaceRunInputs
4440
        '    Dim objItem As LMAItem
4441
        '    '       Dim objConnector As LMConnector
4442

    
4443
        '    Dim oStartLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sStartLineUid & "' And " &
4444
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4445
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4446
        '    If oStartLineRow.Length = 0 Then
4447
        '        oStartLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sStartLineUid & "' And " &
4448
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4449
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4450
        '    End If
4451
        '    Dim oEndLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sEndLineUid & "' And " &
4452
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4453
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4454

    
4455
        '    oEndLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sEndLineUid & "' And " &
4456
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4457
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4458
        '    Dim sStartConnectionType As String = ""
4459
        '    Dim sEndConnectionType As String = ""
4460

    
4461
        '    Dim oStartLMConnector As LMConnector = Nothing
4462
        '    Dim oEndLMConnector As LMConnector = Nothing
4463
        '    Dim oDirectionLine As String = ""
4464

    
4465
        '    If Math.Abs(dStart_x - dEnd_x) > Math.Abs(dStart_y - dEnd_y) Then
4466
        '        oDirectionLine = "X"
4467
        '    Else
4468
        '        oDirectionLine = "Y"
4469
        '    End If
4470

    
4471
        '    Dim bCheckFlag As Boolean = False
4472

    
4473
        '    Dim bStartCheckFlag As Boolean = CheckConnectionLine(oStartLineRow, dStart_x, dStart_y, oStartLMConnector)
4474
        '    If bStartCheckFlag = False Then
4475
        '        bStartCheckFlag = CheckConnectionLine(oStartLineRow, dEnd_x, dEnd_y, oStartLMConnector)
4476
        '        bCheckFlag = True
4477
        '    End If
4478
        '    Dim bEndCheckFlag As Boolean = CheckConnectionLine(oEndLineRow, dEnd_x, dEnd_y, oEndLMConnector)
4479

    
4480
        '    If bEndCheckFlag = False Then
4481

    
4482
        '        bEndCheckFlag = CheckConnectionLine(oEndLineRow, dStart_x, dStart_y, oEndLMConnector)
4483
        '        bCheckFlag = True
4484
        '    End If
4485

    
4486
        '    If bStartCheckFlag = True And bEndCheckFlag = False Then
4487
        '        If bCheckFlag Then
4488
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
4489
        '            objInputs.AddPoint(dStart_x, dStart_y)
4490
        '        Else
4491
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4492
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
4493
        '        End If
4494

    
4495
        '    ElseIf bStartCheckFlag = False And bEndCheckFlag = True Then
4496
        '        If bCheckFlag Then
4497

    
4498
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4499
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
4500
        '        Else
4501
        '            objInputs.AddPoint(dStart_x, dStart_y)
4502
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
4503
        '        End If
4504

    
4505
        '    ElseIf bStartCheckFlag = True And bEndCheckFlag = True Then
4506
        '        objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4507
        '        objInputs.AddConnectorTarget(oEndLMConnector, dEnd_x, dEnd_y)
4508
        '    Else
4509
        '        objInputs.AddPoint(dStart_x, dStart_y)
4510
        '        objInputs.AddPoint(dEnd_x, dEnd_y)
4511
        '    End If
4512
        '    SetListBoxItems(ListBox_Result, "Place Pipe..(" & dStart_x & "," & dStart_y & ") - (" & dEnd_x & "," & dEnd_y & ")..." & _iPipecnt & " count ")
4513
        '    _iPipecnt = _iPipecnt + 1
4514
        '    objItem = _Placement.PIDCreateItem(sSystemPath)
4515
        '    oLMConnector = _Placement.PIDPlaceRun(objItem, objInputs)
4516

    
4517
        '    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + sLineUid + "'")
4518
        '    If oUpdateRow.Length = 1 Then
4519
        '        oUpdateRow(0)(_XML_LINE_SPID) = oLMConnector.ModelItemID
4520
        '        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = oLMConnector
4521

    
4522
        '        oUpdateRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4523
        '    End If
4524

    
4525
        '    oPipeRun = oDatasource.GetPipeRun(oLMConnector.ModelItemID)
4526

    
4527
        '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
4528
        '    If oAttributeRow.Length > 0 Then
4529
        '        For Each oAttribute In oAttributeRow
4530
        '            Try
4531
        '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
4532
        '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
4533
        '                If sPIDValue.Contains("'") Then
4534
        '                    sPIDValue = sPIDValue.Replace("'", """")
4535
        '                End If
4536
        '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
4537
        '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
4538
        '            Catch ex As Exception
4539
        '            End Try
4540
        '        Next
4541
        '        oPipeRun.Commit()
4542
        '    End If
4543
        '    Dim sID_1 As String = ""
4544
        '    Dim sID_2 As String = ""
4545
        '    If oStartLMConnector IsNot Nothing Then
4546
        '        sID_1 = oStartLMConnector.ModelItemID
4547
        '        sID_2 = oLMConnector.ModelItemID
4548
        '    ElseIf oEndLMConnector IsNot Nothing Then
4549
        '        sID_1 = oEndLMConnector.ModelItemID
4550
        '        sID_2 = oLMConnector.ModelItemID
4551
        '    End If
4552
        '    If sID_1 <> "" And sID_2 <> "" Then
4553
        '        Dim objSurvivorItem As LMAItem = Nothing
4554
        '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
4555
        '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
4556
        '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
4557
        '    End If
4558
        '    Return True
4559
        'Catch ex As Exception
4560
        '    Return False
4561
        'End Try
4562

    
4563
    End Function
4564

    
4565
    Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
4566
                                        ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String,
4567
                                        ByRef oLMConnector As LMConnector) As String
4568
        Dim sReturnUid As String = ""
4569
        Try
4570
            Dim sLineUid As String = ""
4571

    
4572
            Dim iConnType As Integer = 0
4573

    
4574
            Dim sStartpoint As String = ""
4575
            Dim sEndpoint As String = ""
4576
            Dim dOriginalStart_x As Double = 0.0
4577
            Dim dOriginalStart_y As Double = 0.0
4578
            Dim dOriginalEnd_x As Double = 0.0
4579
            Dim dOriginalEnd_y As Double = 0.0
4580

    
4581
            Dim dStart_x As Double = 0
4582
            Dim dStart_y As Double = 0
4583
            Dim dEnd_x As Double = 0
4584
            Dim dEnd_y As Double = 0
4585
            Dim sStartLineUid As String = sConnLineUid
4586
            Dim sEndLineUid As String = ""
4587
            Dim sDirection As String = ""
4588
            Dim sSystemPath As String = GetPipeType(sType)
4589

    
4590
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
4591
                                                                    "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4592
                                                                     "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4593
                                                                     "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4594
            If oPipeRow.Length > 0 Then
4595
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4596
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4597
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4598
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4599
                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4600
                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4601
                If dStart_x = 0 And dStart_y = 0 Then
4602
                    dStart_x = dOriginalStart_x
4603
                    dStart_y = dOriginalStart_y
4604
                    dEnd_x = dOriginalEnd_x
4605
                    dEnd_y = dOriginalEnd_y
4606
                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4607
                        sDirection = "X"
4608
                    Else
4609
                        sDirection = "Y"
4610
                    End If
4611
                    oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4612
                    sLineUid = sConnLineUid
4613
                End If
4614
            End If
4615

    
4616
            While True
4617
                sLineUid = ""
4618
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
4619
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4620
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4621
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4622

    
4623
                If oPipeRow.Length = 0 Then
4624
                    oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
4625
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4626
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4627
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4628
                Else
4629
                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4630
                    'sConnLineUid = sLineUid
4631
                    sLineUid = sConnLineUid
4632
                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4633
                    iConnType = 1
4634
                End If
4635

    
4636
                If oPipeRow.Length > 0 Then
4637
                    If sLineUid = "" Then
4638
                        'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4639
                        'sConnLineUid = sLineUid
4640
                        sLineUid = sConnLineUid
4641
                        sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4642
                        iConnType = 2
4643
                    End If
4644
                    If iConnType = 1 Then
4645

    
4646
                    ElseIf iConnType = 2 Then
4647

    
4648
                    End If
4649
                    sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4650
                    sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4651
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4652
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4653
                    ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4654
                    ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4655

    
4656

    
4657

    
4658
                    If dStart_x = 0 And dStart_y = 0 Then
4659
                        dStart_x = dOriginalStart_x
4660
                        dStart_y = dOriginalStart_y
4661
                        dEnd_x = dOriginalEnd_x
4662
                        dEnd_y = dOriginalEnd_y
4663
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4664
                            sDirection = "X"
4665
                        Else
4666
                            sDirection = "Y"
4667
                        End If
4668
                        sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
4669
                        sSystemPath = GetPipeType(sType)
4670
                    Else
4671
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4672
                            If sDirection = "Y" Then
4673
                                '방향이 바꼈음 Y - > X
4674

    
4675
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4676
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4677
                                dStart_x = dOriginalStart_x
4678
                                dStart_y = dOriginalStart_y
4679
                                dEnd_x = dOriginalEnd_x
4680
                                dEnd_y = dOriginalEnd_y
4681
                                sStartLineUid = sConnLineUid
4682
                            Else
4683
                                dEnd_x = dOriginalEnd_x
4684
                                dEnd_y = dOriginalEnd_y
4685
                            End If
4686
                            sDirection = "X"
4687
                        Else
4688
                            If sDirection = "X" Then
4689
                                '방향이 바꼈음 X - > Y
4690
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4691
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4692
                                dStart_x = dOriginalStart_x
4693
                                dStart_y = dOriginalStart_y
4694
                                dEnd_x = dOriginalEnd_x
4695
                                dEnd_y = dOriginalEnd_y
4696
                                sStartLineUid = sConnLineUid
4697
                            Else
4698

    
4699
                                dEnd_x = dOriginalEnd_x
4700
                                dEnd_y = dOriginalEnd_y
4701
                            End If
4702
                            sDirection = "Y"
4703
                        End If
4704
                    End If
4705
                    '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4706
                Else
4707
                    If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
4708
                        LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4709
                         sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4710
                    End If
4711
                    sReturnUid = sConnLineUid
4712
                    Exit While
4713
                End If
4714
            End While
4715

    
4716
            If sStartLineUid <> "" And sEndLineUid <> "" Then
4717
                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4718
                             sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4719
                dStart_x = 0
4720
                dStart_y = 0
4721
                dEnd_x = 0
4722
                dEnd_y = 0
4723
            End If
4724
        Catch ex As Exception
4725

    
4726
        End Try
4727

    
4728
        Return sReturnUid
4729
    End Function
4730

    
4731

    
4732
    'Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
4733
    '                                    ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String) As String
4734
    '    Dim sReturnUid As String = ""
4735
    '    Try
4736
    '        Dim sLineUid As String = ""
4737

    
4738
    '        Dim iConnType As Integer = 0
4739

    
4740
    '        Dim sStartpoint As String = ""
4741
    '        Dim sEndpoint As String = ""
4742
    '        Dim dOriginalStart_x As Double = 0.0
4743
    '        Dim dOriginalStart_y As Double = 0.0
4744
    '        Dim dOriginalEnd_x As Double = 0.0
4745
    '        Dim dOriginalEnd_y As Double = 0.0
4746

    
4747
    '        Dim dStart_x As Double = 0
4748
    '        Dim dStart_y As Double = 0
4749
    '        Dim dEnd_x As Double = 0
4750
    '        Dim dEnd_y As Double = 0
4751
    '        Dim sStartLineUid As String = sConnLineUid
4752
    '        Dim sEndLineUid As String = ""
4753
    '        Dim sDirection As String = ""
4754
    '        Dim sSystemPath As String = GetPipeType(sType)
4755

    
4756
    '        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
4757
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4758
    '                                                                 "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4759
    '                                                                 "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4760
    '        If oPipeRow.Length > 0 Then
4761
    '            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4762
    '            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4763
    '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4764
    '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4765
    '            ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4766
    '            ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4767
    '            If dStart_x = 0 And dStart_y = 0 Then
4768
    '                dStart_x = dOriginalStart_x
4769
    '                dStart_y = dOriginalStart_y
4770
    '                dEnd_x = dOriginalEnd_x
4771
    '                dEnd_y = dOriginalEnd_y
4772
    '                If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4773
    '                    sDirection = "X"
4774
    '                Else
4775
    '                    sDirection = "Y"
4776
    '                End If
4777
    '                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4778
    '                sLineUid = sConnLineUid
4779
    '            End If
4780
    '        End If
4781

    
4782
    '        While True
4783
    '            sLineUid = ""
4784
    '            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
4785
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4786
    '                                                                         "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4787
    '                                                                         "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4788

    
4789
    '            If oPipeRow.Length = 0 Then
4790
    '                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
4791
    '                                         "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4792
    '                                       "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4793
    '                                      "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4794
    '            Else
4795
    '                'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4796
    '                'sConnLineUid = sLineUid
4797
    '                sLineUid = sConnLineUid
4798
    '                sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4799
    '                iConnType = 1
4800
    '            End If
4801

    
4802
    '            If oPipeRow.Length > 0 Then
4803
    '                If sLineUid = "" Then
4804
    '                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4805
    '                    'sConnLineUid = sLineUid
4806
    '                    sLineUid = sConnLineUid
4807
    '                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4808
    '                    iConnType = 2
4809
    '                End If
4810
    '                If iConnType = 1 Then
4811

    
4812
    '                ElseIf iConnType = 2 Then
4813

    
4814
    '                End If
4815
    '                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4816
    '                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4817
    '                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4818
    '                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4819
    '                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4820
    '                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4821

    
4822

    
4823

    
4824
    '                If dStart_x = 0 And dStart_y = 0 Then
4825
    '                    dStart_x = dOriginalStart_x
4826
    '                    dStart_y = dOriginalStart_y
4827
    '                    dEnd_x = dOriginalEnd_x
4828
    '                    dEnd_y = dOriginalEnd_y
4829
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4830
    '                        sDirection = "X"
4831
    '                    Else
4832
    '                        sDirection = "Y"
4833
    '                    End If
4834
    '                    sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
4835
    '                    sSystemPath = GetPipeType(sType)
4836
    '                Else
4837
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4838
    '                        If sDirection = "Y" Then
4839
    '                            '방향이 바꼈음 Y - > X
4840
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4841
    '                            sLineNoUid, sLineUid, sSystemPath)
4842
    '                            dStart_x = dOriginalStart_x
4843
    '                            dStart_y = dOriginalStart_y
4844
    '                            dEnd_x = dOriginalEnd_x
4845
    '                            dEnd_y = dOriginalEnd_y
4846
    '                            sStartLineUid = sConnLineUid
4847
    '                        Else
4848
    '                            dEnd_x = dOriginalEnd_x
4849
    '                            dEnd_y = dOriginalEnd_y
4850
    '                        End If
4851
    '                        sDirection = "X"
4852
    '                    Else
4853
    '                        If sDirection = "X" Then
4854
    '                            '방향이 바꼈음 X - > Y
4855
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4856
    '                            sLineNoUid, sLineUid, sSystemPath)
4857
    '                            dStart_x = dOriginalStart_x
4858
    '                            dStart_y = dOriginalStart_y
4859
    '                            dEnd_x = dOriginalEnd_x
4860
    '                            dEnd_y = dOriginalEnd_y
4861
    '                            sStartLineUid = sConnLineUid
4862
    '                        Else
4863

    
4864
    '                            dEnd_x = dOriginalEnd_x
4865
    '                            dEnd_y = dOriginalEnd_y
4866
    '                        End If
4867
    '                        sDirection = "Y"
4868
    '                    End If
4869
    '                End If
4870
    '                '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4871
    '            Else
4872
    '                If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
4873
    '                    LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4874
    '                     sLineNoUid, sLineUid, sSystemPath)
4875
    '                End If
4876

    
4877

    
4878
    '                sReturnUid = sConnLineUid
4879
    '                Exit While
4880
    '            End If
4881
    '        End While
4882

    
4883
    '        If sStartLineUid <> "" And sEndLineUid <> "" Then
4884
    '            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4885
    '                         sLineNoUid, sLineUid, sSystemPath)
4886
    '            dStart_x = 0
4887
    '            dStart_y = 0
4888
    '            dEnd_x = 0
4889
    '            dEnd_y = 0
4890
    '        End If
4891
    '    Catch ex As Exception
4892

    
4893
    '    End Try
4894

    
4895
    '    Return sReturnUid
4896
    'End Function
4897

    
4898

    
4899
    Private Function SymbolToLine_Modeling(ByVal oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
4900
                                       ByVal sSymbolUid As String, ByVal oLMSymbol As LMSymbol) As String
4901

    
4902

    
4903
        Dim oDatasource As Object = _Placement.PIDDataSource
4904
        Dim oPipeRun As LMPipeRun = Nothing
4905
        Dim objItem As LMAItem
4906
        Dim objConnector As LMConnector
4907
        Dim objInputs As PlaceRunInputs
4908
        objInputs = New PlaceRunInputs
4909

    
4910

    
4911
        Dim sPipeUid As String = ""
4912
        Dim iConnType As Integer = 0
4913
        Dim sStartpoint As String = ""
4914
        Dim sEndpoint As String = ""
4915
        Dim dOriginalStart_x As Double = 0.0
4916
        Dim dOriginalStart_y As Double = 0.0
4917
        Dim dOriginalEnd_x As Double = 0.0
4918
        Dim dOriginalEnd_y As Double = 0.0
4919
        Dim dStart_x As Double = 0.0
4920
        Dim dStart_y As Double = 0.0
4921
        Dim dEnd_x As Double = 0.0
4922
        Dim dEnd_y As Double = 0.0
4923

    
4924
        Dim sReturnUid As String = ""
4925
        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sSymbolUid + "' And " &
4926
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
4927
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
4928
        If oPipeRow.Length = 0 Then
4929
            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sSymbolUid + "' And " &
4930
                                     "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
4931
                                    _XML_SYMBOL_Check & "] = 'TRUE'")
4932
        Else
4933
            sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4934
            iConnType = 1
4935
        End If
4936

    
4937
        If oPipeRow.Length = 1 Then
4938
            If sPipeUid = "" Then
4939
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4940
                iConnType = 2
4941
            End If
4942
            sReturnUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4943
            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4944
            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4945
            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4946
            dStart_x = dOriginalStart_x
4947
            dStart_y = dOriginalStart_y
4948
            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4949
            dEnd_x = dOriginalEnd_x
4950
            dEnd_y = dOriginalEnd_y
4951
            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
4952
            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
4953
            'OPC Connection Point가져와서 연결(2018-07-12)
4954
            If iConnType = 1 Then
4955
                FindNearPoint(oLMSymbol, dStart_x, dStart_y)
4956
                objInputs.AddSymbolTarget(oLMSymbol, dStart_x, dStart_y)
4957
                objInputs.AddPoint(dEnd_x, dEnd_y)
4958
            Else
4959
                FindNearPoint(oLMSymbol, dEnd_x, dEnd_y)
4960
                objInputs.AddSymbolTarget(oLMSymbol, dEnd_x, dEnd_y)
4961
                objInputs.AddPoint(dStart_x, dStart_y)
4962
            End If
4963
            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4964

    
4965
            Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
4966
            Dim sSystemPath As String = GetPipeType(sType)
4967

    
4968

    
4969

    
4970

    
4971
            objItem = _Placement.PIDCreateItem(sSystemPath)
4972
            objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
4973
            oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
4974
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
4975
            If oAttributeRow.Length > 0 Then
4976
                For Each oAttribute In oAttributeRow
4977
                    Try
4978
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
4979
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
4980
                        If sPIDValue.Contains("'") Then
4981
                            sPIDValue = sPIDValue.Replace("'", """")
4982
                        End If
4983
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
4984
                        oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
4985
                    Catch ex As Exception
4986
                    End Try
4987
                Next
4988
                oPipeRun.Commit()
4989
            End If
4990
        End If
4991
        Return sReturnUid
4992
    End Function
4993

    
4994
    Private Function LineToSymbol_Modeling(ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
4995
                                       ByVal sLineUid As String, ByVal oLMConnector As LMConnector, ByRef oLMSymbol As LMSymbol) As String
4996

    
4997

    
4998
        Dim oDatasource As Object = _Placement.PIDDataSource
4999
        Dim objItem As LMAItem
5000
        Dim objConnector As LMConnector
5001
        Dim objInputs As PlaceRunInputs
5002
        objInputs = New PlaceRunInputs
5003

    
5004

    
5005
        Dim sSymbolUid As String = ""
5006
        Dim iConnType As Integer = 0
5007
        Dim dOriginalPoint_x As Double = 0.0
5008
        Dim dORiginalPoint_y As Double = 0.0
5009
        Dim dX As Double = 0.0
5010
        Dim dY As Double = 0.0
5011
        Dim sReturnUid As String = ""
5012
        Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn1_Uid & " = '" + sLineUid + "' And " &
5013
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5014
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
5015
        If oSymbolRow.Length = 0 Then
5016
            oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5017
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5018
                                                                                 _XML_SYMBOL_Check & "] = 'TRUE'")
5019
            If oSymbolRow.Length = 0 Then
5020
                oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5021
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5022
                                                                          _XML_SYMBOL_Check & "] = 'TRUE'")
5023
                If oSymbolRow.Length = 0 Then
5024
                    oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5025
                                                   "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5026
                                                            _XML_SYMBOL_Check & "] = 'TRUE'")
5027
                    If oSymbolRow.Length = 0 Then
5028

    
5029
                    Else
5030
                        sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5031
                        iConnType = 4
5032
                    End If
5033
                Else
5034
                    sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5035
                    iConnType = 3
5036
                End If
5037
            Else
5038
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5039
                iConnType = 2
5040
            End If
5041

    
5042
        Else
5043
            sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5044
            iConnType = 1
5045
        End If
5046

    
5047
        If oSymbolRow.Length = 1 Then
5048
            If sSymbolUid = "" Then
5049
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5050
                iConnType = 2
5051
            End If
5052
            sReturnUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5053
            Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
5054
            ConvertPointBystring(sOriginalPoint, dOriginalPoint_x, dORiginalPoint_y)
5055
            dX = dOriginalPoint_x
5056
            dY = dORiginalPoint_y
5057
            ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5058
            'OPC Connection Point가져와서 연결(2018-07-12)
5059

    
5060
            oSymbolRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5061

    
5062
            Dim sType As String = oSymbolRow(0)(_XML_LINE_TYPE).ToString()
5063
            Dim sSystemPath As String = GetPipeType(sType)
5064

    
5065
            oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, ExistingItem:=oLMConnector.AsLMAItem,
5066
          TargetItem:=oLMSymbol.AsLMAItem)
5067

    
5068
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5069
            If oAttributeRow.Length > 0 Then
5070
                For Each oAttribute In oAttributeRow
5071
                    Try
5072
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5073
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5074
                        If sPIDValue.Contains("'") Then
5075
                            sPIDValue = sPIDValue.Replace("'", """")
5076
                        End If
5077
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5078
                        oLMSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5079
                    Catch ex As Exception
5080
                    End Try
5081
                Next
5082
            End If
5083
        End If
5084
        Return sReturnUid
5085
    End Function
5086

    
5087

    
5088
    Private Sub OPCTOLineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal oOPCSymbol As LMSymbol,
5089
                            ByVal sOPCUid As String, ByVal sLineNoUid As String)
5090
        Try
5091
            Dim oDatasource As Object = _Placement.PIDDataSource
5092
            Dim objItem As LMAItem
5093
            Dim objConnector As LMConnector
5094
            Dim objInputs As PlaceRunInputs
5095
            objInputs = New PlaceRunInputs
5096
            Dim dOriginalStart_x As Double = 0.0
5097
            Dim dOriginalStart_y As Double = 0.0
5098
            Dim dOriginalEnd_x As Double = 0.0
5099
            Dim dOriginalEnd_y As Double = 0.0
5100
            Dim dStart_x As Double = 0.0
5101
            Dim dStart_y As Double = 0.0
5102
            Dim dEnd_x As Double = 0.0
5103
            Dim dEnd_y As Double = 0.0
5104

    
5105
            Dim oPipeRun As LMPipeRun = Nothing
5106
            Dim sStartpoint As String = ""
5107
            Dim sEndpoint As String = ""
5108
            Dim iConnType As Integer = 0
5109
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sOPCUid + "' And [" &
5110
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5111
            Dim sPipeUid As String = ""
5112
            If oPipeRow.Length = 0 Then
5113
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sOPCUid + "' And [" &
5114
                        _XML_SYMBOL_Check & "] = 'TRUE'")
5115
            Else
5116
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
5117
                iConnType = 1
5118
            End If
5119
            Dim oAddUid_List As New List(Of String)
5120
            If oPipeRow.Length = 1 Then
5121
                If sPipeUid = "" Then
5122
                    sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
5123
                    iConnType = 2
5124
                End If
5125
                oAddUid_List.Add(sPipeUid)
5126
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5127
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5128
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5129
                dStart_x = dOriginalStart_x
5130
                dStart_y = dOriginalStart_y
5131
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5132
                dEnd_x = dOriginalEnd_x
5133
                dEnd_y = dOriginalEnd_y
5134
                ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5135
                ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5136

    
5137
                'OPC Connection Point가져와서 연결(2018-07-12)
5138
                If iConnType = 1 Then
5139
                    FindNearPoint(oOPCSymbol, dStart_x, dStart_y)
5140
                    objInputs.AddSymbolTarget(oOPCSymbol, dStart_x, dStart_y)
5141
                    objInputs.AddPoint(dEnd_x, dEnd_y)
5142
                Else
5143
                    FindNearPoint(oOPCSymbol, dEnd_x, dEnd_y)
5144
                    objInputs.AddSymbolTarget(oOPCSymbol, dEnd_x, dEnd_y)
5145
                    objInputs.AddPoint(dStart_x, dStart_y)
5146
                End If
5147
                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5148

    
5149
                While True
5150
                    '    objInputs.Clear()
5151
                    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
5152
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5153
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5154
                    If oAddPipeRow.Length = 0 Then
5155
                        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
5156
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5157
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5158
                        sPipeUid = ""
5159
                    Else
5160
                        iConnType = 1
5161
                        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5162
                    End If
5163
                    If oAddPipeRow.Length = 1 Then
5164
                        If sPipeUid = "" Then
5165
                            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5166
                            iConnType = 2
5167
                        End If
5168
                        oAddUid_List.Add(sPipeUid)
5169
                        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5170
                        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5171
                        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5172
                        dStart_x = dOriginalStart_x
5173
                        dStart_y = dOriginalStart_y
5174
                        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5175
                        dEnd_x = dOriginalEnd_x
5176
                        dEnd_y = dOriginalEnd_y
5177
                        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5178
                        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5179
                        If iConnType = 1 Then
5180
                            objInputs.AddPoint(dEnd_x, dEnd_y)
5181
                            ' objInputs.AddPoint(dStart_x, dStart_y)
5182
                        Else
5183
                            'objInputs.AddConnectorTarget(objConnector, dStart_x, dStart_y)
5184
                            '  objInputs.AddPoint(dStart_x, dStart_y)
5185
                            '  objInputs.AddPoint(dEnd_x, dEnd_y)
5186
                            objInputs.AddPoint(dStart_x, dStart_y)
5187
                        End If
5188

    
5189
                        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5190
                    Else
5191
                        Exit While
5192
                    End If
5193

    
5194
                End While
5195
                Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
5196
                Dim sSystemPath As String = GetPipeType(sType)
5197

    
5198
                objItem = _Placement.PIDCreateItem(sSystemPath)
5199
                objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5200
                For i = 0 To oAddUid_List.Count - 1
5201
                    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
5202
                    If oUpdateRow.Length = 1 Then
5203
                        oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
5204
                        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
5205
                    End If
5206
                Next
5207

    
5208

    
5209
                oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5210
                Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5211
                If oAttributeRow.Length > 0 Then
5212
                    For Each oAttribute In oAttributeRow
5213
                        Try
5214
                            Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5215
                            Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5216
                            If sPIDValue.Contains("'") Then
5217
                                sPIDValue = sPIDValue.Replace("'", """")
5218
                            End If
5219
                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5220
                            oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5221
                        Catch ex As Exception
5222
                        End Try
5223
                    Next
5224
                    oPipeRun.Commit()
5225
                End If
5226

    
5227
            End If
5228

    
5229
        Catch ex As Exception
5230
        End Try
5231
    End Sub
5232

    
5233
    Private Function AddUidList중복체크(ByVal sUidList As List(Of String), ByVal sAddUid As String) As Boolean
5234

    
5235
        For Each sUid In sUidList
5236
            If sUid = sAddUid Then
5237
                Return False
5238
            End If
5239
        Next
5240
        Return True
5241
    End Function
5242

    
5243
    Private Sub LineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String, ByVal sLineNoText As String)
5244
        Try
5245
            Dim oDatasource As Object = _Placement.PIDDataSource
5246
            Dim objItem As LMAItem
5247
            Dim objConnector As LMConnector
5248
            Dim objInputs As PlaceRunInputs
5249
            objInputs = New PlaceRunInputs
5250
            Dim dOriginalStart_x As Double = 0.0
5251
            Dim dOriginalStart_y As Double = 0.0
5252
            Dim dOriginalEnd_x As Double = 0.0
5253
            Dim dOriginalEnd_y As Double = 0.0
5254
            Dim dStart_x As Double = 0.0
5255
            Dim dStart_y As Double = 0.0
5256
            Dim dEnd_x As Double = 0.0
5257
            Dim dEnd_y As Double = 0.0
5258
            Dim oPipeRun As LMPipeRun = Nothing
5259
            Dim sStartpoint As String = ""
5260
            Dim sEndpoint As String = ""
5261
            Dim iConnType As Integer = 0
5262
            Dim pLMConnector As LMConnector = Nothing
5263
            For Each oLinerow In oLine_Dt.Rows
5264
                objInputs.Clear()
5265
                Dim sCheck As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
5266
                If sCheck = "FALSE" Then
5267
                    Dim sUid As String = oLinerow(_XML_LINE_UID).ToString()
5268
                    sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
5269
                    sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
5270
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5271
                    dStart_x = dOriginalStart_x
5272
                    dStart_y = dOriginalStart_y
5273
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5274
                    dEnd_x = dOriginalEnd_x
5275
                    dEnd_y = dOriginalEnd_y
5276
                    ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5277
                    ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5278

    
5279
                    objInputs.AddPoint(dStart_x, dStart_y)
5280
                    objInputs.AddPoint(dEnd_x, dEnd_y)
5281
                    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
5282
                    Dim sSystemPath As String = GetPipeType(sType)
5283
                    objItem = _Placement.PIDCreateItem(sSystemPath)
5284
                    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5285
                    SetListBoxItems(ListBox_Result, "Place Pipe.." & sUid & " (" & dOriginalStart_x & "," & dOriginalStart_y & ") - (" & dOriginalEnd_x & "," & dOriginalEnd_y & ")..." & _iPipecnt & " count ")
5286

    
5287
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & sUid)
5288
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
5289
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oLinerow(_XML_SYMBOL_Conn1_Uid).ToString())
5290
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oLinerow(_XML_SYMBOL_Conn2_Uid).ToString())
5291
                    'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
5292
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "StartPoint : " & dOriginalStart_x & "," & dOriginalStart_y)
5293
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "EndPoint : " & dOriginalEnd_x & "," & dOriginalEnd_y)
5294
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Pipe Count : " & _iPipecnt)
5295

    
5296
                    _iPipecnt = _iPipecnt + 1
5297
                    oLinerow(_XML_LINE_SPID) = objConnector.ModelItemID
5298
                    oLinerow(_XML_LINE_LMCONNECTOR) = objConnector
5299

    
5300
                    oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
5301
                    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5302

    
5303
                    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5304
                    If oAttributeRow.Length > 0 Then
5305
                        For Each oAttribute In oAttributeRow
5306
                            Try
5307
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5308
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5309
                                If sPIDValue.Contains("'") Then
5310
                                    sPIDValue = sPIDValue.Replace("'", """")
5311
                                End If
5312
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5313
                                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5314
                            Catch ex As Exception
5315
                            End Try
5316
                        Next
5317
                        oPipeRun.Commit()
5318
                    End If
5319
                End If
5320

    
5321

    
5322

    
5323

    
5324

    
5325
                'Dim sPipeUid As String = oLinerow(_XML_LINE_UID).ToString()
5326
                'Dim sCheckModeling As Boolean = False
5327
                'objInputs.Clear()
5328
                'Dim oAddUid_List As New List(Of String)
5329
                'Try
5330
                '    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
5331
                '                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5332
                '                                            _XML_SYMBOL_Check & "] = 'TRUE'")
5333
                '    If oAddPipeRow.Length = 0 Then
5334
                '        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
5335
                '                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5336
                '                                        _XML_SYMBOL_Check & "] = 'TRUE'")
5337
                '        sPipeUid = ""
5338
                '    Else
5339
                '        iConnType = 1
5340
                '        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5341
                '    End If
5342
                '    If oAddPipeRow.Length = 1 Then
5343
                '        sCheckModeling = True
5344
                '        If sPipeUid = "" Then
5345
                '            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5346
                '            iConnType = 2
5347
                '        End If
5348
                '        If AddUidList중복체크(oAddUid_List, sPipeUid) Then
5349
                '            oAddUid_List.Add(sPipeUid)
5350
                '        End If
5351
                '        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5352
                '        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5353
                '        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5354
                '        dStart_x = dOriginalStart_x
5355
                '        dStart_y = dOriginalStart_y
5356
                '        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5357
                '        dEnd_x = dOriginalEnd_x
5358
                '        dEnd_y = dOriginalEnd_y
5359
                '        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5360
                '        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5361
                '        Dim sBranchType As String = ""
5362
                '        If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
5363
                '            Try
5364
                '                If pLMConnector Is Nothing Then
5365
                '                    objInputs.AddPoint(dStart_x, dStart_y)
5366
                '                    objInputs.AddPoint(dEnd_x, dEnd_y)
5367
                '                Else
5368
                '                    If sBranchType = "1" Then
5369
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5370
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5371
                '                    ElseIf sBranchType = "2" Then
5372
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5373
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5374
                '                    ElseIf sBranchType = "3" Then
5375
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5376
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5377
                '                    ElseIf sBranchType = "4" Then
5378
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5379
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5380
                '                    End If
5381
                '                End If
5382
                '            Catch ex As Exception
5383
                '            End Try
5384
                '        Else
5385
                '            objInputs.AddPoint(dStart_x, dStart_y)
5386
                '            objInputs.AddPoint(dEnd_x, dEnd_y)
5387
                '        End If
5388
                '        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5389
                '    Else
5390
                '        Dim CheckTF As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
5391
                '        Dim CheckSelect As String = oLinerow(_XML_LINE_Check).ToString()
5392
                '        If CheckTF = "FALSE" And CheckSelect = "TRUE" Then
5393
                '            sPipeUid = oLinerow(_XML_LINE_UID).ToString()
5394
                '            oAddUid_List.Clear()
5395
                '            oAddUid_List.Add(sPipeUid)
5396
                '            sCheckModeling = True
5397
                '            sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
5398
                '            sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
5399
                '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5400
                '            dStart_x = dOriginalStart_x
5401
                '            dStart_y = dOriginalStart_y
5402
                '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5403
                '            dEnd_x = dOriginalEnd_x
5404
                '            dEnd_y = dOriginalEnd_y
5405
                '            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5406
                '            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5407
                '            Dim sBranchType As String = ""
5408
                '            If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
5409
                '                Try
5410
                '                    If sBranchType = "1" Then
5411
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5412
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5413
                '                    ElseIf sBranchType = "2" Then
5414
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5415
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5416
                '                    ElseIf sBranchType = "3" Then
5417
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5418
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5419
                '                    ElseIf sBranchType = "4" Then
5420
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5421
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5422
                '                    End If
5423
                '                Catch ex As Exception
5424

    
5425
                '                End Try
5426
                '            Else
5427
                '                objInputs.AddPoint(dStart_x, dStart_y)
5428
                '                objInputs.AddPoint(dEnd_x, dEnd_y)
5429
                '            End If
5430
                '            oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
5431
                '        End If
5432
                '    End If
5433
                'Catch ex As Exception
5434
                'End Try
5435
                'If sCheckModeling Then
5436
                '    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
5437
                '    Dim sSystemPath As String = GetPipeType(sType)
5438
                '    objItem = _Placement.PIDCreateItem(sSystemPath)
5439
                '    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5440
                '    For i = 0 To oAddUid_List.Count - 1
5441
                '        Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
5442
                '        If oUpdateRow.Length = 1 Then
5443
                '            oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
5444
                '            oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
5445
                '        End If
5446
                '    Next
5447

    
5448
                '    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5449
                '    oAddUid_List.Clear()
5450

    
5451
                '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5452
                '    If oAttributeRow.Length > 0 Then
5453
                '        For Each oAttribute In oAttributeRow
5454
                '            Try
5455
                '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5456
                '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5457
                '                If sPIDValue.Contains("'") Then
5458
                '                    sPIDValue = sPIDValue.Replace("'", """")
5459
                '                End If
5460
                '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5461
                '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5462
                '            Catch ex As Exception
5463
                '            End Try
5464
                '        Next
5465
                '        oPipeRun.Commit()
5466
                '    End If
5467

    
5468
                '    If pLMConnector IsNot Nothing Then
5469
                '        Dim sID_1 As String = pLMConnector.ModelItemID
5470
                '        Dim sID_2 As String = objConnector.ModelItemID
5471
                '        Dim objSurvivorItem As LMAItem = Nothing
5472
                '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
5473
                '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
5474
                '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
5475
                '        '     oDatasource.CommitTransaction()
5476
                '        '_Placement.PIDAutoJoin(oPipeRun1.AsLMAItem, AutoJoinEndConstants.autoJoin_End, objSurvivorItem)
5477
                '        'oPipeRun1.Commit()
5478
                '        'oDatasource.CommitTransaction()
5479
                '        'objSurvivorItem = Nothing
5480
                '        '_Placement.PIDAutoJoin(oPipeRun2.AsLMAItem, AutoJoinEndConstants.autoJoin_Start, objSurvivorItem)
5481
                '        'oPipeRun2.Commit()
5482
                '        'oDatasource.CommitTransaction()
5483
                '    End If
5484
                '    sCheckModeling = False
5485
                '  End If
5486
            Next
5487
        Catch ex As Exception
5488
        End Try
5489
    End Sub
5490

    
5491

    
5492
    Private Sub SymbolModeling(ByVal CDrawing As Drawing, ByVal oLine_DT As DataTable, ByVal oSymbolRow As DataRow, ByVal oAttribute_Dt As DataTable,
5493
                               ByVal sLineNoText As String)
5494
        Try
5495

    
5496
            Dim sCheckModeling As String = oSymbolRow(_XML_SYMBOL_DRAWING_TF).ToString()
5497
            If sCheckModeling = "FALSE" Then
5498
                Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
5499
                Dim oSymbol As LMSymbol = Nothing
5500
                Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
5501
                Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
5502
                Dim oDatasource As Object = _Placement.PIDDataSource
5503
                Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
5504
                Dim dLocationX As Double = 0.0
5505
                Dim dLocationY As Double = 0.0
5506
                Dim dX As Double = 0.0
5507
                Dim dY As Double = 0.0
5508
                Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
5509
                ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5510
                dX = dLocationX
5511
                dY = dLocationY
5512
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5513

    
5514
                Dim dAngle As Double = oSymbolRow(_XML_SYMBOL_ANGLE)
5515

    
5516

    
5517
                'Dim oDatarow() As DataRow = oLine_DT.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sSymbolUid & "'")
5518
                'If oDatarow.Length = 0 Then
5519
                '    oDatarow = oLine_DT.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sSymbolUid & "'")
5520
                'End If
5521
                'Dim dFix_X As Double = 0.0
5522
                'Dim dFix_Y As Double = 0.0
5523
                'If oDatarow.Length > 0 Then
5524
                '    If dAngle <> 0 Then
5525
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
5526
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5527

    
5528
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
5529
                '        dX = dLocationX
5530
                '    Else
5531
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
5532
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5533
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
5534
                '        dY = dLocationY
5535
                '    End If
5536

    
5537
                'End If
5538

    
5539

    
5540

    
5541
                oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY,, dAngle)
5542
                SetListBoxItems(ListBox_Result, "Place Fitting.." & sSymbolUid & " (" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
5543

    
5544
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Fitting : " & sSymbolUid)
5545
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
5546
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oSymbolRow(_XML_SYMBOL_Conn1_Uid).ToString())
5547
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oSymbolRow(_XML_SYMBOL_Conn2_Uid).ToString())
5548
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection3 : " & oSymbolRow(_XML_SYMBOL_Conn3_Uid).ToString())
5549
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection4 : " & oSymbolRow(_XML_SYMBOL_Conn4_Uid).ToString())
5550
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
5551
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
5552
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Fitting Count : " & _iFittingcnt)
5553

    
5554

    
5555
                _iFittingcnt = _iFittingcnt + 1
5556
                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
5557
                Dim oAttributeRow() As DataRow
5558
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
5559
                If oAttribute_Dt.Rows.Count > 0 Then
5560

    
5561
                    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
5562
                        Dim oInstrument As LMInstrument
5563
                        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
5564
                        Try
5565
                            If oAttributeRow.Length > 0 Then
5566
                                For Each oAttribute In oAttributeRow
5567
                                    Try
5568
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5569
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5570
                                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5571
                                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
5572
                                    Catch ex As Exception
5573
                                    End Try
5574
                                Next
5575
                                oInstrument.Commit()
5576
                            End If
5577
                        Catch ex As Exception
5578
                        End Try
5579
                    Else
5580
                        Try
5581
                            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
5582
                                For Each oAttribute In oAttributeRow
5583
                                    Try
5584
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5585
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5586

    
5587
                                        If sPIDAttribute = "SIZE" Then
5588

    
5589
                                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
5590
                                            If sPIDValue.Contains("x") Then
5591
                                                Dim sSplitSize() As String = sPIDValue.Split("x")
5592
                                                If sSplitSize.Count > 1 Then
5593
                                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
5594
                                                    Dim oConnector_1 As LMConnector = Nothing
5595
                                                    Dim oConnector_2 As LMConnector = Nothing
5596
                                                    If oSymbol IsNot Nothing Then
5597
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5598
                                                            For Each Tconnector In oSymbol.Connect1Connectors
5599
                                                                If Tconnector.ItemStatus = "Active" Then
5600
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5601
                                                                        oConnector_1 = Tconnector
5602
                                                                    End If
5603
                                                                End If
5604
                                                            Next
5605
                                                        End If
5606
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5607
                                                            For Each Tconnector In oSymbol.Connect1Connectors
5608
                                                                If Tconnector.ItemStatus = "Active" Then
5609
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5610
                                                                        oConnector_2 = Tconnector
5611
                                                                    End If
5612
                                                                End If
5613
                                                            Next
5614
                                                        End If
5615
                                                    End If
5616
                                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
5617
                                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
5618
                                                    If dAngle = 3.14 Then
5619
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
5620
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
5621
                                                    Else
5622
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
5623
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
5624
                                                    End If
5625

    
5626

    
5627
                                                End If
5628

    
5629
                                            Else
5630
                                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5631
                                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5632
                                            End If
5633
                                        Else
5634
                                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5635
                                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5636
                                        End If
5637

    
5638
                                    Catch ex As Exception
5639
                                    End Try
5640
                                Next
5641
                                oSymbol.Commit()
5642
                            End If
5643
                        Catch ex As Exception
5644
                        End Try
5645
                    End If
5646
                End If
5647

    
5648

    
5649

    
5650
            End If
5651

    
5652

    
5653

    
5654
            'Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
5655
            'Dim sConnTypeNo As String = ""
5656
            '' Line과 연결되어있는 Symbol인지 확인
5657
            'Dim oLine_Dt As DataTable = GetPipeFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
5658
            ''Symbol과 연결되어 있는 Symbol인지 확인
5659
            'Dim oSymbol_Dt As DataTable = GetSymbolFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
5660
            'Dim oSymbol As LMSymbol = Nothing
5661
            'Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
5662
            'Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
5663
            'Dim oDatasource As Object = _Placement.PIDDataSource
5664
            'Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
5665

    
5666
            'Dim dAngle As Double = 0.0
5667
            'If IsNumeric(oSymbolRow(_XML_SYMBOL_ANGLE).ToString()) Then
5668
            '    dAngle = Double.Parse(oSymbolRow(_XML_SYMBOL_ANGLE).ToString())
5669
            'End If
5670

    
5671
            'Dim dLocationX As Double = 0.0
5672
            'Dim dLocationY As Double = 0.0
5673
            'Dim dX As Double = 0.0
5674
            'Dim dY As Double = 0.0
5675
            'Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
5676
            'ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5677
            'dX = dLocationX
5678
            'dY = dLocationY
5679
            'ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5680
            'Dim bCheckModeling As Boolean = False
5681

    
5682
            'If oLine_Dt.Rows.Count > 0 Then
5683

    
5684
            '    If sSPID <> "" Then
5685
            '        Dim dX1 As Double = 0
5686
            '        Dim dX2 As Double = 0
5687
            '        Dim dY1 As Double = 0
5688
            '        Dim dY2 As Double = 0
5689
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
5690
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
5691
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
5692

    
5693
            '        Dim dCalcPoint As Double = -1
5694
            '        Dim dModeling_X As Double = 0
5695
            '        Dim dModeling_Y As Double = 0
5696
            '        If dX1 <> 0 And dY1 <> 0 Then
5697
            '            dCalcPoint = Math.Abs(dX1 - dX) + Math.Abs(dY1 - dY)
5698
            '            dModeling_X = dX1
5699
            '            dModeling_Y = dY1
5700
            '        End If
5701
            '        If dX2 <> 0 And dY2 <> 0 Then
5702

    
5703
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
5704
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
5705
            '                dModeling_X = dX2
5706
            '                dModeling_Y = dY2
5707
            '            End If
5708
            '        End If
5709

    
5710

    
5711

    
5712
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
5713
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
5714
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
5715
            '            bCheckModeling = True
5716
            '        End If
5717

    
5718

    
5719
            '    End If
5720
            'End If
5721
            'If oSymbol_Dt.Rows.Count > 0 Then
5722
            '    If sSPID <> "" Then
5723
            '        Dim dX1 As Double = 0
5724
            '        Dim dX2 As Double = 0
5725
            '        Dim dX3 As Double = 0
5726
            '        Dim dX4 As Double = 0
5727
            '        Dim dY1 As Double = 0
5728
            '        Dim dY2 As Double = 0
5729
            '        Dim dY3 As Double = 0
5730
            '        Dim dY4 As Double = 0
5731
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
5732
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
5733
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
5734
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 3, dX3, dY3)
5735
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 4, dX4, dY4)
5736

    
5737
            '        Dim dCalcPoint As Double = -1
5738
            '        Dim dModeling_X As Double = 0
5739
            '        Dim dModeling_Y As Double = 0
5740
            '        If dX1 <> 0 And dY1 <> 0 Then
5741
            '            dCalcPoint = Math.Abs(dX1 - dX) + Math.Abs(dY1 - dY)
5742
            '            dModeling_X = dX1
5743
            '            dModeling_Y = dY1
5744
            '        End If
5745
            '        If dX2 <> 0 And dY2 <> 0 Then
5746

    
5747
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
5748
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
5749
            '                dModeling_X = dX2
5750
            '                dModeling_Y = dY2
5751
            '            End If
5752
            '        End If
5753
            '        If dX3 <> 0 And dY3 <> 0 Then
5754
            '            If (Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY) > dCalcPoint) Then
5755
            '                dCalcPoint = Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY)
5756
            '                dModeling_X = dX3
5757
            '                dModeling_Y = dY3
5758
            '            End If
5759
            '        End If
5760
            '        If dX4 <> 0 And dY4 <> 0 Then
5761
            '            If (Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY) > dCalcPoint) Then
5762
            '                dCalcPoint = Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY)
5763
            '                dModeling_X = dX4
5764
            '                dModeling_Y = dY4
5765
            '            End If
5766
            '        End If
5767
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
5768
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
5769
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
5770
            '            bCheckModeling = True
5771
            '        End If
5772

    
5773

    
5774
            '    End If
5775

    
5776
            'End If
5777

    
5778
            'If (oLine_Dt.Rows.Count = 0 And oSymbol_Dt.Rows.Count = 0) Or bCheckModeling = False Then
5779
            '    oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
5780
            '    SetListBoxItems(ListBox_Result, "Place Fittings..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
5781
            '    _iFittingcnt = _iFittingcnt + 1
5782
            'End If
5783
            'Dim oAttributeRow() As DataRow
5784
            'oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
5785
            'If oAttribute_Dt.Rows.Count > 0 Then
5786

    
5787
            '    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
5788
            '        Dim oInstrument As LMInstrument
5789
            '        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
5790
            '        Try
5791
            '            If oAttributeRow.Length > 0 Then
5792
            '                For Each oAttribute In oAttributeRow
5793
            '                    Try
5794
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5795
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5796
            '                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5797
            '                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
5798
            '                    Catch ex As Exception
5799
            '                    End Try
5800
            '                Next
5801
            '                oInstrument.Commit()
5802
            '            End If
5803
            '        Catch ex As Exception
5804
            '        End Try
5805
            '    Else
5806
            '        Try
5807
            '            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
5808
            '                For Each oAttribute In oAttributeRow
5809
            '                    Try
5810
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5811
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5812

    
5813
            '                        If sPIDAttribute = "SIZE" Then
5814

    
5815
            '                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
5816
            '                            If sPIDValue.Contains("x") Then
5817
            '                                Dim sSplitSize() As String = sPIDValue.Split("x")
5818
            '                                If sSplitSize.Count > 1 Then
5819
            '                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
5820
            '                                    Dim oConnector_1 As LMConnector = Nothing
5821
            '                                    Dim oConnector_2 As LMConnector = Nothing
5822
            '                                    If oSymbol IsNot Nothing Then
5823
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5824
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
5825
            '                                                If Tconnector.ItemStatus = "Active" Then
5826
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5827
            '                                                        oConnector_1 = Tconnector
5828
            '                                                    End If
5829
            '                                                End If
5830
            '                                            Next
5831
            '                                        End If
5832
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5833
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
5834
            '                                                If Tconnector.ItemStatus = "Active" Then
5835
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5836
            '                                                        oConnector_2 = Tconnector
5837
            '                                                    End If
5838
            '                                                End If
5839
            '                                            Next
5840
            '                                        End If
5841
            '                                    End If
5842
            '                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
5843
            '                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
5844
            '                                    If dAngle = 3.14 Then
5845
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
5846
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
5847
            '                                    Else
5848
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
5849
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
5850
            '                                    End If
5851

    
5852

    
5853
            '                                End If
5854

    
5855
            '                            Else
5856
            '                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5857
            '                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5858
            '                            End If
5859
            '                        Else
5860
            '                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5861
            '                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5862
            '                        End If
5863

    
5864
            '                    Catch ex As Exception
5865
            '                    End Try
5866
            '                Next
5867
            '                oSymbol.Commit()
5868
            '            End If
5869
            '        Catch ex As Exception
5870
            '        End Try
5871
            '    End If
5872
            'End If
5873
        Catch ex As Exception
5874
        End Try
5875
    End Sub
5876

    
5877

    
5878

    
5879
    Private Function AutoModeling() As Boolean
5880
        Try
5881
            '_AllLine_DT = Line_Dt()
5882
            '_AllSymbol_DT = Symbol_Dt()
5883
            _ModelingLine_Dt = Line_Dt()
5884
            _ModelingSymbol_Dt = Symbol_Dt()
5885
            _CompleteConvert = False
5886
            Label_Progress.Text = "0%"
5887
            SetListBoxItems(ListBox_Result, " Auto converting 시작....")
5888
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 시작....")
5889
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
5890
            _Log_File = "AutoConverting_" + DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("HHmmss")
5891
            _allItem = GetAllCheckNodeCount()
5892
            _Itemcnt = 0
5893
            '1.Equipment
5894
            '2.Piping OPC
5895
            '3.OPC 시작되는 Line
5896
            InitAutoRouting()
5897
            EquipmentModeling(oDwg_Dt)
5898
            PipingModeling()
5899

    
5900
            '   PipeLine_Fitting_Modeling()
5901

    
5902
            SetProgressbar(ProgressBar_Status, 100)
5903
            Label_Progress.Text = "100%"
5904
            SetListBoxItems(ListBox_Result, " Auto converting 완료")
5905
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 완료")
5906
            _CompleteConvert = True
5907
            Return True
5908
        Catch ex As Exception
5909
            Return False
5910
        End Try
5911
    End Function
5912

    
5913

    
5914

    
5915
    Private Sub ThreadConvert()
5916
        If _DrawingsList IsNot Nothing Then
5917
            If _DrawingsList.Count > 0 Then
5918
                AutoModeling()
5919
            End If
5920
        End If
5921
    End Sub
5922

    
5923
    Private Sub ThreadOPCRemove()
5924
        While _CompleteConvert = False
5925
            Dim oFindOPC As New FindOpc
5926
            oFindOPC.RemoveOPCDlg()
5927
        End While
5928

    
5929
    End Sub
5930

    
5931

    
5932
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
5933
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
5934
        Dim oPath As String = ""
5935
        If oRows.Length > 0 Then
5936
            oPath = oRows(0).Item("Path").ToString()
5937
        End If
5938
        Return oPath
5939
    End Function
5940

    
5941
    Private Sub LoadXmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadXmlToolStripMenuItem.Click
5942

    
5943
        If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then
5944
            LoadDB()
5945
            LoadXmlItem(FolderBrowserDialog1.SelectedPath)
5946
        End If
5947
    End Sub
5948
    Private Sub LoadXmlItem(ByVal sFolderPath As String)
5949
        _DrawingsList = New List(Of Drawing)
5950
        Dim sfileEntries As String() = Directory.GetFiles(sFolderPath)
5951
        If Tree_Result.Nodes.Count > 0 Then
5952
            Tree_Result.Nodes(0).Nodes.Clear()
5953
            For Each sfileName In sfileEntries
5954
                Dim sExtension As String = Path.GetExtension(sfileName)
5955
                If sExtension = ".xml" Then
5956
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(sfileName)
5957
                    Dim sDwgPath As String = sfileName
5958
                    Dim oNode As TreeNode = Tree_Result.Nodes(0).Nodes.Add(sDwgPath, sDwgName, 15)
5959
                    Dim oDwg As Drawing = AddSymbolItem(sDwgPath, oNode)
5960

    
5961
                    _DrawingsList.Add(oDwg)
5962
                End If
5963
            Next
5964
            Tree_Result.Nodes(0).Expand()
5965
        End If
5966
    End Sub
5967

    
5968
    Private Sub GenerateRelation(ByRef oDwg_Ds As Drawing)
5969
        Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
5970
        Dim oEqpLists As List(Of Eqp_no) = oDwg_Ds.Eqp_nos
5971
        Dim oTrimLineLists As List(Of Line_no) = oDwg_Ds.TrimLine_nos
5972
        Dim oRelation As New GenerateRelation()
5973
        For Each oLinelist In oLineLists
5974
            oRelation.CalcLineConnectionItem_Equal(oLinelist.Dt_Line, oLineLists)
5975
            oRelation.CalcLineConnectionItem_NonEqual(oLinelist.Dt_Line, oLineLists)
5976
            oRelation.CalcSymbolConnectionItem_Equal(oLinelist.Dt_Symbol, oLineLists)
5977
            oRelation.CalcSymbolConnectionItem_NonEqual(oLinelist.Dt_Symbol, oLineLists)
5978
        Next
5979
    End Sub
5980

    
5981

    
5982
    ''' <summary>
5983
    '''  XML Tree 구조 생성 
5984
    ''' </summary>
5985
    ''' <param name="sDwgPath"></param>
5986
    Private Function AddSymbolItem(ByVal sDwgPath As String, ByVal oParentNode As TreeNode) As Drawing
5987
        Dim oDwg_Ds As Drawing = LoadSymbolInXml(sDwgPath)
5988

    
5989

    
5990

    
5991
        'SetConnectionInfo()
5992
        '  GenerateRelation(oDwg_Ds)
5993

    
5994
        If oDwg_Ds IsNot Nothing Then
5995
            Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
5996

    
5997
            Dim oEqpLists As List(Of Eqp_no) = oDwg_Ds.Eqp_nos
5998

    
5999
            Dim oTrimLineLists As List(Of Line_no) = oDwg_Ds.TrimLine_nos
6000

    
6001
            Dim oPipe As Boolean = False
6002
            Dim oFitting As Boolean = False
6003
            'PipeLine 구분
6004

    
6005
            For Each oLinelist In oLineLists
6006
                Dim sLineNoUid As String = oLinelist.Uid
6007
                Dim sLineNo As String = oLinelist.Text
6008
                Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
6009
                For Each oLineRow In oLinelist.Dt_Line.Rows
6010
                    Dim sLineUid As String = oLineRow(_XML_LINE_UID)
6011
                    Dim oPipeNode As TreeNode = oLineNoNode.Nodes.Add(sLineUid, "Pipe")
6012
                    Dim bValidLine As Boolean = oLineRow(_XML_LINE_ValieLine)
6013

    
6014

    
6015
                    If bValidLine = False Then
6016
                        oLineNoNode.ForeColor = Color.Red
6017
                        oPipeNode.ForeColor = Color.Red
6018
                    Else
6019

    
6020
                        Dim bLineType As String = oLineRow(_XML_LINE_TYPE)
6021
                        Dim bLineColor As Color = GetPipeColor(bLineType)
6022
                        If bLineType <> "Primary" Then
6023
                            '      MessageBox.Show("")
6024
                        End If
6025
                        oPipeNode.ForeColor = bLineColor
6026
                    End If
6027
                    oPipeNode.Tag = sLineNoUid
6028
                Next
6029
                For Each oSymbolRow In oLinelist.Dt_Symbol.Rows
6030
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6031
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6032
                    Dim oSymbolNode As TreeNode = oLineNoNode.Nodes.Add(sSymbolUid, sSymbolName)
6033

    
6034
                    oSymbolNode.Tag = sLineNoUid
6035
                Next
6036
            Next
6037

    
6038
            For Each oEqplist In oEqpLists
6039
                Dim sEqpUid As String = oEqplist.Uid
6040
                Dim sEqpNo As String = "EQUIPMENT"
6041
                Dim oEqpNode As TreeNode = oParentNode.Nodes.Add(sEqpUid, sEqpNo)
6042

    
6043

    
6044
                For Each oSymbolRow In oEqplist.Dt_Equipment.Rows
6045
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6046
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6047
                    Dim oSymbolNode As TreeNode = oEqpNode.Nodes.Add(sSymbolUid, sSymbolName)
6048
                    oSymbolNode.Tag = sEqpUid
6049
                Next
6050
            Next
6051
            Dim sTrimLine As String = "TrimLineNos"
6052
            Dim iTrimLinecnt As Integer = 1
6053
            For Each oTrimLinelist In oTrimLineLists
6054
                Dim sLineNoUid As String = oTrimLinelist.Uid
6055
                Dim sLineNo As String = sTrimLine & "_" & iTrimLinecnt
6056
                Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
6057
                For Each oLineRow In oTrimLinelist.Dt_Line.Rows
6058
                    Dim sLineUid As String = oLineRow(_XML_LINE_UID)
6059
                    Dim oPipeNode As TreeNode = oLineNoNode.Nodes.Add(sLineUid, "Pipe")
6060
                    Dim bValidLine As Boolean = oLineRow(_XML_LINE_ValieLine)
6061
                    If bValidLine = False Then
6062
                        oLineNoNode.ForeColor = Color.Red
6063
                        oPipeNode.ForeColor = Color.Red
6064
                    Else
6065
                        Dim bLineType As String = oLineRow(_XML_LINE_TYPE)
6066
                        If bLineType <> "Primary" Then
6067
                            '     MessageBox.Show("")
6068
                        End If
6069
                        Dim bLineColor As Color = GetPipeColor(bLineType)
6070
                        oPipeNode.ForeColor = bLineColor
6071
                    End If
6072
                    oPipeNode.Tag = sLineNoUid
6073
                Next
6074
                For Each oSymbolRow In oTrimLinelist.Dt_Symbol.Rows
6075
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6076
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6077
                    Dim oSymbolNode As TreeNode = oLineNoNode.Nodes.Add(sSymbolUid, sSymbolName)
6078
                    oSymbolNode.Tag = sLineNoUid
6079
                Next
6080
                iTrimLinecnt = iTrimLinecnt + 1
6081
            Next
6082

    
6083
        End If
6084

    
6085
        Return oDwg_Ds
6086
    End Function
6087
    Private Sub Tree_Result_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterCheck
6088
        If e.Node.Checked = True Then
6089
            For Each oNode As TreeNode In e.Node.Nodes
6090
                oNode.Checked = True
6091
            Next
6092
        Else
6093
            For Each oNode As TreeNode In e.Node.Nodes
6094
                oNode.Checked = False
6095
            Next
6096
        End If
6097
    End Sub
6098

    
6099
    Private Sub Btn_Setting_Click(sender As Object, e As EventArgs) Handles Btn_Setting.Click
6100
        Dim oSettings As Settings = New Settings()
6101
        oSettings.ShowDialog()
6102
    End Sub
6103

    
6104
    Private Sub Btn_TestNozzle_Click(sender As Object, e As EventArgs) Handles Btn_TestNozzle.Click
6105

    
6106
        Dim sVessel_ID As String = "841D5E640AE5421B9A017DDC2E87FF11"
6107
        Dim objVessel As LMVessel
6108
        objVessel = _Placement.PIDDataSource.GetVessel(sVessel_ID)
6109
        Dim oVesselLocation As LMLocations = objVessel.Locations
6110
        Dim symVessel As LMSymbol = _Placement.PIDDataSource.GetSymbol(objVessel.Representations.Nth(1).Id)
6111
        Dim XCoordinate As String = symVessel.Attributes("XCoordinate").Value
6112
        Dim YCoordinate As String = symVessel.Attributes("YCoordinate").Value
6113
        symVessel.Attributes("XCoordinate").Value = XCoordinate + 0.01
6114
        symVessel.Attributes("YCoordinate").Value = YCoordinate + 0.01
6115
        symVessel.Commit()
6116
        Dim sValve_ID As String = "DB7B0CA8A2664A6BA7A9615764BA62B0"
6117
        Dim objValve As LMSymbol
6118
        Dim objValves As LMPipingComp = _Placement.PIDDataSource.GetPipingComp(sValve_ID)
6119

    
6120
        objValve = _Placement.PIDDataSource.GetSymbol(objValves.Representations.Nth(1).Id)
6121
        objValve.Commit()
6122
        Dim dVesselX As Double = XCoordinate
6123
        Dim dVesselY As Double = YCoordinate
6124
        Dim X1 As Double, Y1 As Double, X2 As Double, Y2 As Double
6125

    
6126
        _Placement.PIDConnectPointLocation(objValve, 1, X1, Y1)
6127

    
6128
        _Placement.PIDConnectPointLocation(objValve, 2, X2, Y2)
6129

    
6130
        Dim nozzlename As String = "\Equipment Components\Nozzles\Flanged Nozzle.sym"
6131
        Dim dCalc_x As Double = 0
6132
        Dim dCalc_y As Double = 0
6133

    
6134
        If dVesselX - X2 > 0 Then
6135
            dCalc_x = dVesselX - (dVesselX - X2)
6136
        Else
6137
            dCalc_x = dVesselX + (X2 - dVesselX)
6138
        End If
6139
        If dVesselY - Y2 > 0 Then
6140
            dCalc_y = dVesselY - (dVesselY - Y2)
6141
        Else
6142
            dCalc_y = dVesselY + (Y2 - dVesselY)
6143
        End If
6144

    
6145
        Dim objNozzle As LMSymbol = _Placement.PIDPlaceSymbol(nozzlename, dCalc_x, dCalc_y,
6146
            TargetItem:=symVessel.AsLMRepresentation)
6147

    
6148
        Dim blnSuccess As Boolean = _Placement.PIDConnectPointLocation(objNozzle, 1, X1, Y1)
6149
        blnSuccess = _Placement.PIDConnectPointLocation(objNozzle, 2, X1, Y1)
6150

    
6151
        objValve = _Placement.PIDPlaceSymbol(objValve.FileName, X1, Y1, ExistingItem:=objValve.AsLMAItem,
6152
          TargetItem:=objNozzle.AsLMRepresentation)
6153

    
6154

    
6155

    
6156
    End Sub
6157

    
6158
    Private Sub Btn_SymbolLibrary_Click(sender As Object, e As EventArgs) Handles Btn_SymbolLibrary.Click
6159
        Dim oMapping As New Mapping(_PIDSymbol_DB)
6160
        oMapping.Show()
6161
    End Sub
6162

    
6163
    Private Sub Btn_Stop_Click(sender As Object, e As EventArgs) Handles Btn_Stop.Click
6164
        Try
6165
            SetListBoxItems(ListBox_Result, " Auto converting 중지....")
6166
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 중지....")
6167
            _Main_trd.Abort()
6168
            _Opc_trd.Abort()
6169
        Catch ex As Exception
6170

    
6171
        End Try
6172
    End Sub
6173

    
6174
    Private Sub AutoCheckTreeNode(ByVal iType As Integer, ByVal bCheck As Boolean)
6175

    
6176
        For Each oDrwing As TreeNode In Tree_Result.Nodes
6177
            For Each oDwgNode As TreeNode In oDrwing.Nodes
6178
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
6179
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
6180
                If CDrawing IsNot Nothing Then
6181
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
6182
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
6183
                    For Each oNode As TreeNode In oDwgNode.Nodes
6184
                        Dim iItemcnt As Integer = 0
6185
                        Dim sNodeUid As String = oNode.Name
6186
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
6187

    
6188
                        If iType = 0 Then 'Symbol
6189
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
6190
                            If CLineNo IsNot Nothing Then
6191
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
6192
                                For Each oSymbolRow In oSymbol_Dt.Rows
6193
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
6194
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
6195
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
6196
                                        If sSymbolNodeUid = sSymbolUid Then
6197
                                            oSymbolNode.Checked = bCheck
6198
                                            Exit For
6199
                                        End If
6200
                                    Next
6201
                                Next
6202
                            End If
6203
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
6204
                            If TrimLineNo IsNot Nothing Then
6205
                                Dim oSymbol_Dt As DataTable = TrimLineNo.Dt_Symbol
6206
                                For Each oSymbolRow In oSymbol_Dt.Rows
6207
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
6208
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
6209
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
6210
                                        If sSymbolNodeUid = sSymbolUid Then
6211
                                            oSymbolNode.Checked = bCheck
6212
                                            Exit For
6213
                                        End If
6214
                                    Next
6215
                                Next
6216
                            End If
6217
                        End If
6218
                        If iType = 1 Then 'Line
6219
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
6220
                            If CLineNo IsNot Nothing Then
6221
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
6222
                                For Each oLineRow In oLine_Dt.Rows
6223
                                    Dim sLineUid As String = oLineRow(_XML_LINE_UID).ToString()
6224
                                    For Each oLineNode As TreeNode In oNode.Nodes
6225
                                        Dim sLineNodeUid As String = oLineNode.Name
6226
                                        If sLineNodeUid = sLineUid Then
6227
                                            oLineNode.Checked = bCheck
6228
                                            Exit For
6229
                                        End If
6230
                                    Next
6231
                                Next
6232
                            End If
6233
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
6234
                            If TrimLineNo IsNot Nothing Then
6235
                                Dim oLine_Dt As DataTable = TrimLineNo.Dt_Line
6236
                                For Each oLineRow In oLine_Dt.Rows
6237
                                    Dim sLineUid As String = oLineRow(_XML_SYMBOL_UID).ToString()
6238
                                    For Each oLineNode As TreeNode In oNode.Nodes
6239
                                        Dim sLineNodeUid As String = oLineNode.Name
6240
                                        If sLineNodeUid = sLineUid Then
6241
                                            oLineNode.Checked = bCheck
6242
                                            Exit For
6243
                                        End If
6244
                                    Next
6245
                                Next
6246
                            End If
6247
                        End If
6248
                        If iType = 2 Then 'Equipment
6249
                            Dim CEqpNo As Eqp_no = GetEqpNo(CDrawing, sNodeUid)
6250
                            If CEqpNo IsNot Nothing Then
6251
                                Dim oEqp_Dt As DataTable = CEqpNo.Dt_Equipment
6252
                                For Each oEqpRow In oEqp_Dt.Rows
6253
                                    Dim sEqpUid As String = oEqpRow(_XML_LINE_UID).ToString()
6254
                                    For Each oEqpNode As TreeNode In oNode.Nodes
6255
                                        Dim sEqpNodeUid As String = oEqpNode.Name
6256
                                        If sEqpNodeUid = sEqpUid Then
6257
                                            oEqpNode.Checked = bCheck
6258
                                            Exit For
6259
                                        End If
6260
                                    Next
6261
                                Next
6262
                            End If
6263
                        End If
6264
                    Next
6265
                End If
6266
            Next
6267
        Next
6268

    
6269

    
6270
    End Sub
6271

    
6272

    
6273

    
6274
    Private Sub Chk_Symbol_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Symbol.CheckedChanged
6275
        AutoCheckTreeNode(0, Chk_Symbol.Checked)
6276
    End Sub
6277

    
6278
    Private Sub Chk_Line_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Line.CheckedChanged
6279
        AutoCheckTreeNode(1, Chk_Line.Checked)
6280
    End Sub
6281

    
6282
    Private Sub Chk_Equipment_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Equipment.CheckedChanged
6283
        AutoCheckTreeNode(2, Chk_Equipment.Checked)
6284
    End Sub
6285
End Class
6286

    
6287

    
6288
Public Class DrawingInfo
6289
    Public mDrawingName As String
6290
    Public mSpID As String
6291
    Public mPath As String
6292
End Class
6293

    
6294

    
6295

    
6296

    
6297

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