프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ ab93847f

이력 | 보기 | 이력해설 | 다운로드 (334 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
        Me.ProgressBar_Status.Visible = True
954
        ProgressBar_Status.Maximum = 100
955
        ProgressBar_Status.Value = 0
956
        InitItemCount()
957
        _Main_trd = New Thread(AddressOf ThreadConvert)
958
        _Main_trd.IsBackground = True
959
        _Main_trd.Start()
960
        FineOPCForm()
961
    End Sub
962

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

    
969

    
970
    Dim _objPIDAutoApp As Object
971

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

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

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

    
997

    
998
            Return bCheckOpen
999
    End Function
1000

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

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

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

    
1028

    
1029

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

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

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

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

    
1096

    
1097
    Dim _DrawLine_Dt As DataTable = DrawLind_Dt()
1098

    
1099

    
1100
    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)
1101
        Dim oAddRow = _DrawLine_Dt.NewRow()
1102
        oAddRow(_XML_LINE_UID) = sUid
1103
        oAddRow(_XML_LINE_STARTPOINT_X) = dStart_x
1104
        oAddRow(_XML_LINE_STARTPOINT_Y) = dStart_y
1105
        oAddRow(_XML_LINE_ENDPOINT_X) = dEnd_x
1106
        oAddRow(_XML_LINE_ENDPOINT_Y) = dEnd_y
1107
        _DrawLine_Dt.Rows.Add(oAddRow)
1108
    End Sub
1109

    
1110

    
1111

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

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

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

    
1149

    
1150
                End If
1151
            End If
1152
        Catch ex As Exception
1153

    
1154
        End Try
1155

    
1156

    
1157
    End Sub
1158

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

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

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

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

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

    
1223
        End Try
1224
        Return Nothing
1225

    
1226
    End Function
1227

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

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

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

    
1255
                Dim objSymbol As LMSymbol
1256
                Dim dLocationX As Double = 0.0
1257
                Dim dLocationY As Double = 0.0
1258
                Dim dX As Double = 0.0
1259
                Dim dY As Double = 0.0
1260

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

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

    
1285
                                    End Try
1286

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

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

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

    
1318
                        Else
1319
                            _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1320
                        End If
1321

    
1322

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

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

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

    
1354
        Catch ex As Exception
1355
            Return False
1356
        End Try
1357
    End Function
1358

    
1359

    
1360
    Private Sub FindConnectionLine(ByVal oLine_Dt As DataTable, ByRef dx As Double, ByRef dy As Double)
1361

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

    
1384

    
1385
    Dim _라인보정기준값 As Integer = 10
1386

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

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

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

    
1441
                    End If
1442
                Next
1443
            End If
1444

    
1445
            Return bCheck라인
1446
        Catch ex As Exception
1447
            Return False
1448
        End Try
1449

    
1450

    
1451
    End Function
1452

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

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

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

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

    
1597
                        End If
1598
                        bCheckOverlap = True
1599
                    End If
1600
                End If
1601
            Next
1602

    
1603
            Return bCheckOverlap
1604
        Catch ex As Exception
1605
            Return False
1606
        End Try
1607
    End Function
1608

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

    
1633
        Catch ex As Exception
1634

    
1635
        End Try
1636

    
1637

    
1638
    End Sub
1639

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

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

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

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

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

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

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

    
1699
                    End Try
1700

    
1701

    
1702
                End If
1703

    
1704

    
1705

    
1706
                Return True
1707
            Else
1708
                Return False
1709
            End If
1710

    
1711
        Catch ex As Exception
1712
            Return False
1713
        End Try
1714
    End Function
1715

    
1716

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

    
1727
    End Sub
1728

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

    
1745

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

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

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

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

    
1803
                        End If
1804

    
1805
                    Next
1806
                Next
1807
            Next
1808
        Next
1809

    
1810
    End Sub
1811

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

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

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

    
1838
        Dim sChildItem As String = oCurrentSymbolRow(_XML_SYMBOL_CHILD)
1839

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

    
1847
        Dim sConn1Type As String = ""
1848
        Dim sConn2Type As String = ""
1849
        Dim sConn3Type As String = ""
1850
        Dim sConn4Type As String = ""
1851

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

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

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

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

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

    
1910

    
1911

    
1912

    
1913

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

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

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

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

    
1946

    
1947

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

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

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

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

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

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

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

    
2672
            '   Dim sTargetDirection As String = CheckBranchLine(dStart_Dwg_x, dStart_Dwg_y, dEnd_Dwg_x, dEnd_Dwg_y, oLMConnector)
2673

    
2674
            ' If sTargetDirection = "" Then
2675
            CheckConnectionLine(dStart_Dwg_x, dStart_Dwg_y, oStartLMConnector, sStartConnectionUid)
2676

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

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

    
2737

    
2738

    
2739

    
2740

    
2741

    
2742

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

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

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

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

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

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

    
2821

    
2822
                    'objInputs.AddPoint(dOriginalEnd_x, dOriginalEnd_y)
2823

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

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

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

    
2857
                End If
2858

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

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

    
2883
                Catch ex As Exception
2884

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

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

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

    
2901
                    Dim oPipeRun As LMPipeRun = oPidDataSource.GetPipeRun(oCurrentConnector.ModelItemID)
2902

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

    
2915

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

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

    
2951
                        For Each objRep In oPipeRun1.Representations
2952
                            If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
2953
                                Dim sID As String = objRep.ID
2954
                                oStartLMConnector = _Placement.PIDDataSource.GetConnector(sID)
2955
                                Exit For
2956
                            End If
2957
                        Next
2958

    
2959
                        'For Each objRep In oPipeRun2.Representations
2960
                        '    If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
2961
                        '        Dim sID As String = objRep.ID
2962
                        '        oEndLMConnector = _Placement.PIDDataSource.GetConnector(sID)
2963
                        '    End If
2964
                        'Next
2965

    
2966

    
2967
                        'Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_SPID & " = '" & sID_2 & "'")
2968
                        'If oChangeRow.Length = 1 Then
2969
                        '    oChangeRow(0)(_XML_LINE_SPID) = sID_1
2970
                        '    oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oAddConnector
2971
                        'End If
2972
                    End If
2973

    
2974

    
2975
                    '//2018.09.07 LMControl에 따라서 inconsytency가 달라지는듯 확인
2976
                    If sStartConnectionUid <> "" Then
2977
                        Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_UID & " = '" & sStartConnectionUid & "'")
2978
                        If oChangeRow.Length = 1 Then
2979
                            oChangeRow(0)(_XML_LINE_SPID) = sID_1
2980
                            oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oStartLMConnector
2981
                        End If
2982
                    End If
2983
                    If sEndConnectionUid <> "" Then
2984
                        Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_UID & " = '" & sEndConnectionUid & "'")
2985
                        If oChangeRow.Length = 1 Then
2986
                            oChangeRow(0)(_XML_LINE_SPID) = sID_1
2987
                            oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oStartLMConnector
2988
                        End If
2989
                    End If
2990

    
2991
                Else
2992
                    sReturnUid = ""
2993
                End If
2994

    
2995

    
2996

    
2997

    
2998

    
2999
            Catch ex As Exception
3000

    
3001
            End Try
3002

    
3003

    
3004
        Catch ex As Exception
3005

    
3006
        End Try
3007

    
3008

    
3009
        Return sReturnUid
3010
        '현재 Uid 모델링
3011
    End Function
3012

    
3013
    Private Sub PipingModeling()
3014

    
3015
        Try
3016
            For Each oDrwing As TreeNode In Tree_Result.Nodes
3017
                For Each oDwgNode As TreeNode In oDrwing.Nodes
3018
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
3019
                    Dim CDrawing As Drawing = GetDrawing(sDwgName)
3020
                    If CDrawing IsNot Nothing Then
3021
                        Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
3022
                        Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
3023
                        For Each oNode As TreeNode In oDwgNode.Nodes
3024
                            Dim iItemcnt As Integer = 0
3025
                            Dim sNodeUid As String = oNode.Name
3026
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3027
                            '1.Equipment
3028
                            '2.Piping OPC
3029
                            '3.OPC 시작되는 Line
3030
                            'Equipment 생성
3031
                            'If sNodeUid <> "PipeLineNo" Then
3032
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3033

    
3034
                            If CLineNo IsNot Nothing Then
3035
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3036
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3037
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3038
                                Dim oDrawLinenoLabel As Boolean = False
3039
                                Try
3040
                                    ManualCheckNode(oLine_Dt)
3041
                                    ManualCheckNode(oSymbol_Dt)
3042
                                Catch ex As Exception
3043
                                End Try
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 = CLineNo.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

    
3062
                                                Else
3063
                                                        sReturnUid = ""
3064
                                                End If
3065
                                                If sReturnUid = "" Then
3066
                                                    Exit While
3067
                                                End If
3068
                                            End While
3069
                                        Catch ex As Exception
3070
                                        End Try
3071
                                    End If
3072
                                Next
3073
                            End If
3074
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3075
                            If CTrimLineNo IsNot Nothing Then
3076
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3077
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3078
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3079
                                Dim oDrawLinenoLabel As Boolean = False
3080
                                Try
3081
                                    ManualCheckNode(oLine_Dt)
3082
                                    ManualCheckNode(oSymbol_Dt)
3083
                                Catch ex As Exception
3084
                                End Try
3085

    
3086
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3087
                                    If oSymbolNode.Checked Then
3088
                                        Try
3089
                                            Dim sUid As String = oSymbolNode.Name
3090
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3091
                                            Dim sReturnUid = sUid
3092
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3093
                                            While True
3094
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3095
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3096
                                                If oLineRows.Count > 0 Then
3097
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3098
                                                    If sPipeType.ToUpper() = "PRIMARY" Then
3099
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3100
                                                    Else
3101
                                                        sReturnUid = ""
3102
                                                    End If
3103
                                                Else
3104
                                                    sReturnUid = ""
3105
                                                End If
3106
                                                If sReturnUid = "" Then
3107
                                                    Exit While
3108
                                                End If
3109
                                            End While
3110
                                        Catch ex As Exception
3111
                                        End Try
3112
                                    End If
3113
                                Next
3114
                                'For Each oSymbolNode As TreeNode In oNode.Nodes
3115
                                '    If oSymbolNode.Checked Then
3116
                                '        Try
3117
                                '            Dim sUid As String = oSymbolNode.Name
3118
                                '            Dim sLineNoUid As String = CLineNo.Uid
3119
                                '            Dim sReturnUid = sUid
3120
                                '            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3121
                                '            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3122
                                '                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3123
                                '            If oSymbolRows.Count > 0 Then
3124
                                '                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3125
                                '            Else
3126
                                '                sReturnUid = ""
3127
                                '            End If
3128
                                '            If sReturnUid = "" Then
3129
                                '            End If
3130
                                '        Catch ex As Exception
3131
                                '        End Try
3132
                                '    End If
3133
                                'Next
3134
                            End If
3135
                        Next
3136

    
3137

    
3138
                        For Each oNode As TreeNode In oDwgNode.Nodes
3139
                            Dim iItemcnt As Integer = 0
3140
                            Dim sNodeUid As String = oNode.Name
3141
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3142
                            '1.Equipment
3143
                            '2.Piping OPC
3144
                            '3.OPC 시작되는 Line
3145
                            'Equipment 생성
3146
                            'If sNodeUid <> "PipeLineNo" Then
3147
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3148

    
3149
                            If CLineNo IsNot Nothing Then
3150
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3151
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3152
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3153
                                Dim oDrawLinenoLabel As Boolean = False
3154
                                Try
3155
                                    ManualCheckNode(oLine_Dt)
3156
                                    ManualCheckNode(oSymbol_Dt)
3157
                                Catch ex As Exception
3158
                                End Try
3159
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3160
                                    If oSymbolNode.Checked Then
3161
                                        Try
3162
                                            Dim sUid As String = oSymbolNode.Name
3163
                                            Dim sLineNoUid As String = CLineNo.Uid
3164
                                            Dim sReturnUid = sUid
3165
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3166
                                            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'FALSE' And [" &
3167
                                                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3168

    
3169
                                            If oSymbolRows.Count > 0 Then
3170
                                                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3171
                                            Else
3172
                                                sReturnUid = ""
3173
                                            End If
3174
                                            If sReturnUid = "" Then
3175
                                            End If
3176
                                        Catch ex As Exception
3177
                                        End Try
3178
                                    End If
3179
                                Next
3180
                            End If
3181
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3182
                            If CTrimLineNo IsNot Nothing Then
3183
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3184
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3185
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3186
                                Dim oDrawLinenoLabel As Boolean = False
3187
                                Try
3188
                                    ManualCheckNode(oLine_Dt)
3189
                                    ManualCheckNode(oSymbol_Dt)
3190
                                Catch ex As Exception
3191
                                End Try
3192
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3193
                                    If oSymbolNode.Checked Then
3194
                                        Try
3195
                                            Dim sUid As String = oSymbolNode.Name
3196
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3197
                                            Dim sReturnUid = sUid
3198
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3199
                                            Dim oSymbolRows As DataRow() = oSymbol_Dt.Select("[" & _XML_SYMBOL_UID & "]= '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3200
                                                                                               _XML_SYMBOL_Check & "] = 'TRUE'")
3201
                                            If oSymbolRows.Count > 0 Then
3202
                                                sReturnUid = FinalSymbolModeling(oSymbolRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3203
                                            Else
3204
                                                sReturnUid = ""
3205
                                            End If
3206
                                            If sReturnUid = "" Then
3207
                                            End If
3208
                                        Catch ex As Exception
3209
                                        End Try
3210
                                    End If
3211
                                Next
3212
                            End If
3213
                        Next
3214

    
3215

    
3216
                        For Each oNode As TreeNode In oDwgNode.Nodes
3217
                            Dim iItemcnt As Integer = 0
3218
                            Dim sNodeUid As String = oNode.Name
3219
                            Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3220
                            '1.Equipment
3221
                            '2.Piping OPC
3222
                            '3.OPC 시작되는 Line
3223
                            'Equipment 생성
3224
                            'If sNodeUid <> "PipeLineNo" Then
3225
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3226

    
3227
                            If CLineNo IsNot Nothing Then
3228
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3229
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3230
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3231
                                Dim oDrawLinenoLabel As Boolean = False
3232
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3233
                                    If oSymbolNode.Checked Then
3234
                                        Try
3235
                                            Dim sUid As String = oSymbolNode.Name
3236
                                            Dim sLineNoUid As String = CLineNo.Uid
3237
                                            Dim sReturnUid = sUid
3238
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3239
                                            While True
3240
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3241
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3242

    
3243
                                                If oLineRows.Count > 0 Then
3244
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3245
                                                    If sPipeType.ToUpper() <> "PRIMARY" Then
3246
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3247
                                                    Else
3248
                                                        sReturnUid = ""
3249
                                                    End If
3250
                                                Else
3251
                                                    sReturnUid = ""
3252
                                                End If
3253
                                                If sReturnUid = "" Then
3254
                                                    Exit While
3255
                                                End If
3256
                                            End While
3257
                                        Catch ex As Exception
3258
                                        End Try
3259
                                    End If
3260
                                Next
3261
                            End If
3262
                            Dim CTrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3263
                            If CTrimLineNo IsNot Nothing Then
3264
                                Dim oLine_Dt As DataTable = CTrimLineNo.Dt_Line
3265
                                Dim oSymbol_Dt As DataTable = CTrimLineNo.Dt_Symbol
3266
                                Dim oAttribute_Dt As DataTable = CTrimLineNo.Dt_Attribute
3267
                                Dim oDrawLinenoLabel As Boolean = False
3268

    
3269
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3270
                                    If oSymbolNode.Checked Then
3271
                                        Try
3272
                                            Dim sUid As String = oSymbolNode.Name
3273
                                            Dim sLineNoUid As String = CTrimLineNo.Uid
3274
                                            Dim sReturnUid = sUid
3275
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3276
                                            While True
3277
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3278
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3279
                                                If oLineRows.Count > 0 Then
3280
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3281
                                                    If sPipeType.ToUpper() <> "PRIMARY" Then
3282
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3283
                                                    Else
3284
                                                        sReturnUid = ""
3285
                                                    End If
3286
                                                Else
3287
                                                    sReturnUid = ""
3288
                                                End If
3289
                                                If sReturnUid = "" Then
3290
                                                    Exit While
3291
                                                End If
3292
                                            End While
3293
                                        Catch ex As Exception
3294
                                        End Try
3295
                                    End If
3296
                                Next
3297
                            End If
3298
                        Next
3299
                    End If
3300
                Next
3301
            Next
3302
        Catch ex As Exception
3303

    
3304
        End Try
3305
    End Sub
3306

    
3307

    
3308
    Private Sub FindNearPoint(ByVal oOPCSymbol As LMSymbol, ByRef dNear_x As Double, ByRef dNear_y As Double)
3309
        Dim oConnectionPoints_x(4) As Double
3310
        Dim oConnectionPoints_y(4) As Double
3311

    
3312
        Try
3313
            _Placement.PIDConnectPointLocation(oOPCSymbol, 1, oConnectionPoints_x(0), oConnectionPoints_y(0))
3314
            _Placement.PIDConnectPointLocation(oOPCSymbol, 2, oConnectionPoints_x(1), oConnectionPoints_y(1))
3315
            _Placement.PIDConnectPointLocation(oOPCSymbol, 3, oConnectionPoints_x(2), oConnectionPoints_y(2))
3316
            _Placement.PIDConnectPointLocation(oOPCSymbol, 4, oConnectionPoints_x(3), oConnectionPoints_y(3))
3317
            Dim iNearPoint As Integer = 0
3318
            Dim dGap As Double = 0
3319
            For i = 0 To 3
3320
                If dGap = 0 Then
3321
                    iNearPoint = i
3322
                    dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
3323
                Else
3324
                    If dGap >= Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y) Then
3325
                        iNearPoint = i
3326
                        dGap = Math.Abs(oConnectionPoints_x(i) - dNear_x) + Math.Abs(oConnectionPoints_y(i) - dNear_y)
3327
                    End If
3328
                End If
3329
            Next
3330
            dNear_x = oConnectionPoints_x(iNearPoint)
3331
            dNear_y = oConnectionPoints_y(iNearPoint)
3332
        Catch ex As Exception
3333

    
3334
        End Try
3335

    
3336
    End Sub
3337

    
3338
    Private Function GetPipeColor(ByVal sType As String) As Color
3339
        If sType.ToUpper() = "ELECTRIC" Then
3340
            Return Color.DarkOrange
3341
        ElseIf sType.ToUpper() = "CONNECT TO PROCESS" Then
3342
            Return Color.Green
3343
        ElseIf sType.ToUpper() = "SOFTWARE" Then
3344
            Return Color.Blue
3345
        ElseIf sType.ToUpper() = "PNEUMATIC" Then
3346
            Return Color.Gray
3347
        Else
3348
            Return Color.Black
3349
        End If
3350
    End Function
3351

    
3352
    Private Function GetPipeType(ByVal sType As String) As String
3353
        Dim sSystempath As String = "\Piping\Routing\Process Lines\Primary Piping.sym" ' oPipeRow(0)(_XML_LINE_SYSTEMPATH).ToString()
3354
        If sType.ToUpper() = "ELECTRIC" Then
3355
            sSystempath = "\Instrumentation\Signal Line\Electric.sym"
3356
        ElseIf sType.ToUpper() = "CONNECT TO PROCESS" Then
3357
            sSystempath = "\Instrumentation\Signal Line\Connect to Process.sym"
3358
        ElseIf sType.ToUpper() = "SOFTWARE" Then
3359
            sSystempath = "\Instrumentation\Signal Line\Software Link.sym"
3360
        ElseIf sType.ToUpper() = "PNEUMATIC" Then
3361
            sSystempath = "\Instrumentation\Signal Line\Pneumatic.sym"
3362
        Else
3363
        End If
3364
        Return sSystempath
3365
    End Function
3366

    
3367
    Private Sub InitAutoRouting()
3368
        For Each oDrwing As TreeNode In Tree_Result.Nodes
3369
            For Each oDwgNode As TreeNode In oDrwing.Nodes
3370
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
3371
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
3372
                If CDrawing IsNot Nothing Then
3373
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
3374
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
3375
                    SetListBoxItems(ListBox_Result, "Place " & CDrawing.DwgName & "....")
3376

    
3377
                    For Each oNode As TreeNode In oDwgNode.Nodes
3378
                        Dim iItemcnt As Integer = 0
3379
                        Dim sNodeUid As String = oNode.Name
3380
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
3381
                        Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
3382
                        If CLineNo IsNot Nothing Then
3383
                            Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3384
                            Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3385

    
3386
                            For Each oLineRow In oLine_Dt.Rows
3387
                                ' oLineRow(_XML_LINE_UID) = ""
3388
                                oLineRow(_XML_LINE_SPID) = ""
3389
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
3390
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
3391
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
3392
                                oLineRow(_XML_LINE_DRAWING_TF) = "FALSE"
3393
                                oLineRow(_XML_LINE_Check) = "FALSE"
3394
                            Next
3395
                            For Each oSymbolRow In oSymbol_Dt.Rows
3396
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
3397
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
3398
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
3399
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
3400
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
3401
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
3402
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
3403
                                oSymbolRow(_XML_SYMBOL_Check) = "FALSE"
3404
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
3405

    
3406
                            Next
3407

    
3408
                        End If
3409

    
3410
                        Dim CTRIMLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
3411
                        If CTRIMLineNo IsNot Nothing Then
3412
                            Dim oLine_Dt As DataTable = CTRIMLineNo.Dt_Line
3413
                            Dim oSymbol_Dt As DataTable = CTRIMLineNo.Dt_Symbol
3414

    
3415
                            For Each oLineRow In oLine_Dt.Rows
3416
                                ' oLineRow(_XML_LINE_UID) = ""
3417
                                oLineRow(_XML_LINE_SPID) = ""
3418
                                oLineRow(_XML_LINE_LMCONNECTOR) = Nothing
3419
                                oLineRow(_XML_LINE_LMCONNECTOR_1) = Nothing
3420
                                oLineRow(_XML_LINE_LMCONNECTOR_2) = Nothing
3421
                                oLineRow(_XML_LINE_DRAWING_TF) = "FALSE"
3422
                                oLineRow(_XML_LINE_Check) = "FALSE"
3423
                            Next
3424
                            For Each oSymbolRow In oSymbol_Dt.Rows
3425
                                '   oSymbolRow(_XML_SYMBOL_UID) = ""
3426
                                oSymbolRow(_XML_SYMBOL_SPID) = ""
3427
                                oSymbolRow(_XML_SYMBOL_LMSYMBOL) = Nothing
3428
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_1) = Nothing
3429
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_2) = Nothing
3430
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_3) = Nothing
3431
                                oSymbolRow(_XML_SYMBOL_LMCONNECTOR_4) = Nothing
3432
                                oSymbolRow(_XML_SYMBOL_Check) = "FALSE"
3433
                                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "FALSE"
3434

    
3435
                            Next
3436

    
3437
                        End If
3438
                    Next
3439
                End If
3440
            Next
3441
        Next
3442
    End Sub
3443

    
3444

    
3445

    
3446

    
3447

    
3448

    
3449
    Private Function CheckBranchLine(ByVal dStartX As Double, ByVal dStartY As Double,
3450
                                ByRef dEndX As Double, ByRef dEndY As Double, ByRef sBranchType As String, ByRef oLMConnector As LMConnector) As Boolean
3451

    
3452
        Try
3453

    
3454
            For Each oModelrow In _ModelingLine_Dt.Rows
3455
                'Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
3456
                'Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
3457
                Dim dModelStartX As Double
3458
                Dim dModelStartY As Double
3459
                Dim dModelEndX As Double
3460
                Dim dModelEndY As Double
3461
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3462
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3463
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3464
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3465
                'ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
3466
                'ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
3467
                'ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
3468
                'ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
3469
                Dim dGap As Double = 0.0002
3470
                Dim d기준x As Double = (dModelStartX + dModelEndX) / 2
3471
                Dim d기준y As Double = (dModelStartY + dModelEndY) / 2
3472
                Try
3473
                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3474
                Catch ex As Exception
3475

    
3476
                End Try
3477
                Dim oRun As LMPipeRun = Nothing
3478
                Try
3479

    
3480
                    oRun = _Placement.PIDDataSource.GetPipeRun(oLMConnector.ModelItemID)
3481
                    Dim dResultCalc As Double = -1
3482
                    For Each objRep In oRun.Representations
3483
                        If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
3484
                            Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
3485
                            For Each objConnectorVertex In objConnector.ConnectorVertices
3486
                                Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3487
                                Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3488
                                Dim dStartCalc As Double = Math.Abs(dStartX - dConn_X) + Math.Abs(dStartY - dConn_Y)
3489

    
3490
                                If dResultCalc > dStartCalc Or dResultCalc = -1 Then
3491
                                    dResultCalc = dStartCalc
3492
                                    oLMConnector = objConnector
3493
                                    d기준x = dConn_X
3494
                                    d기준y = dConn_Y
3495
                                End If
3496
                                Dim dEndCalc As Double = Math.Abs(dEndX - dConn_X) + Math.Abs(dEndY - dConn_Y)
3497
                                If dResultCalc > dEndCalc Then
3498
                                    dResultCalc = dEndCalc
3499
                                    oLMConnector = objConnector
3500
                                    d기준x = dConn_X
3501
                                    d기준y = dConn_Y
3502
                                End If
3503
                            Next
3504
                        End If
3505
                    Next
3506
                    '        _Placement.PIDConnectPointLocation(oRun, 1, dModelStartX, dModelEndX)
3507
                    '       _Placement.PIDConnectPointLocation(oRun, 2, dModelEndX, dModelEndY)
3508
                Catch ex As Exception
3509
                End Try
3510

    
3511

    
3512
                'Dim sSPID As String = oModelrow(_XML_LINE_SPID).ToString()
3513
                'Dim oPipeRun As LMPipeRun = _Placement.PIDDataSource.Get PipeRun(sSPID)
3514
                'If dModelStartX + dGap > dStartX And dModelStartX - dGap < dStartX And
3515
                '        dModelStartY + dGap > dStartY And dModelStartY - dGap < dStartY Then
3516
                '    dStartX = dModelStartX
3517
                '    dStartY = dModelStartY
3518
                'ElseIf dModelEndX + dGap > dStartX And dModelEndX - dGap < dStartX And
3519
                '        dModelEndY + dGap > dStartY And dModelEndY - dGap < dStartY Then
3520
                '    dStartX = dModelEndX
3521
                '    dStartY = dModelEndY
3522
                'End If
3523

    
3524
                'Vetical
3525
                If Math.Abs(dModelStartX - dModelEndX) <= Math.Abs(dModelStartY - dModelEndY) Then
3526
                    If Math.Abs(dStartX - dEndX) >= Math.Abs(dStartY - dEndY) Then
3527
                        'Horizontal 
3528
                        ' dGap = 0.0002 'Math.Abs(dStartX - dEndX) / 20
3529
                        '기준선의 Y범위안에 가로선이 포함되어야됨
3530
                        If (dModelStartY + dGap >= dStartY And dModelEndY - dGap <= dStartY) Or
3531
                            (dModelStartY - dGap <= dStartY And dModelEndY + dGap >= dStartY) And
3532
                            (dModelStartY + dGap >= dEndY And dModelEndY - dGap <= dEndY) Or
3533
                            (dModelStartY - dGap <= dEndY And dModelEndY + dGap >= dEndY) Then
3534
                            '기준선보다 왼쪽에 가로선이 있을때
3535
                            If d기준x >= dStartX And d기준x >= dEndX Then
3536
                                If dStartX >= dEndX Then
3537
                                    'dStartX 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3538
                                    If dStartX + dGap >= d기준x Then
3539
                                        dStartX = d기준x
3540
                                        sBranchType = "1"
3541
                                        Return True
3542
                                    End If
3543
                                Else
3544
                                    'dEndX 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3545
                                    If dEndX + dGap >= d기준x Then
3546
                                        dEndX = d기준x
3547
                                        sBranchType = "2"
3548
                                        Return True
3549
                                    End If
3550
                                End If
3551
                                '기준선보다 오른쪽에 가로선이 있을때
3552
                            ElseIf d기준x <= dStartX And d기준x <= dEndX Then
3553
                                If dStartX >= dEndX Then
3554
                                    'dEndX 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3555
                                    If dEndX - dGap <= d기준x Then
3556
                                        dEndX = d기준x
3557
                                        sBranchType = "2"
3558
                                        Return True
3559
                                    End If
3560
                                Else
3561
                                    'dStartX 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3562
                                    If dStartX - dGap <= d기준x Then
3563
                                        dStartX = d기준x
3564
                                        sBranchType = "1"
3565
                                        Return True
3566
                                    End If
3567
                                End If
3568
                            Else
3569
                                '기준선과 세로선이 겹칠때
3570
                                If (d기준x >= dStartX And d기준x <= dEndX) Or
3571
                                        (d기준x <= dStartX And d기준x >= dEndX) Then
3572
                                    If (dModelStartY <= dStartY And dModelEndY >= dEndY) Or
3573
                                        (dModelStartY >= dStartY And dModelEndY <= dEndY) Then
3574
                                        '기준선이 dStartX와 dEndX중 어느쪽에 가까운지 확인
3575
                                        '가로선의 왼쪽점과 기준선이 가까울때는 gap만큼 뺐을때 기준선보다 작은지확인
3576
                                        '가로선의 오른쪽점과 기준선이 가까울때는 gap만큼 더했을때 기준선보다 큰지확인
3577
                                        If Math.Abs(d기준x - dStartX) >= Math.Abs(d기준x - dEndX) Then
3578
                                            'EndX점이 기준선과 더 가까이 있음
3579
                                            If dStartX >= dEndX Then
3580
                                                '가로선의 왼쪽점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3581
                                                If dEndX - dGap <= d기준x Then
3582
                                                    dEndX = d기준x
3583
                                                    sBranchType = "4"
3584
                                                    Return True
3585
                                                End If
3586
                                            Else
3587
                                                '가로선의 오른쪽점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3588
                                                If dEndX + dGap >= d기준x Then
3589
                                                    dEndX = d기준x
3590
                                                    sBranchType = "4"
3591
                                                    Return True
3592
                                                End If
3593

    
3594
                                            End If
3595
                                        Else
3596
                                            'dStartX점이 기준선과 더 가까이 있음
3597
                                            If dStartX >= dEndX Then
3598
                                                '가로선의 오른쪽점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3599
                                                If dStartX + dGap >= d기준x Then
3600
                                                    dStartX = d기준x
3601
                                                    sBranchType = "3"
3602
                                                    Return True
3603
                                                End If
3604

    
3605
                                            Else
3606
                                                '가로선의 왼쪽점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3607
                                                If dStartX - dGap <= d기준x Then
3608
                                                    dStartX = d기준x
3609
                                                    sBranchType = "3"
3610
                                                    Return True
3611
                                                End If
3612
                                            End If
3613
                                        End If
3614
                                    End If
3615

    
3616
                                End If
3617
                            End If
3618
                        End If
3619

    
3620
                    End If
3621
                Else
3622
                    'Horizontal
3623
                    If Math.Abs(dModelStartX - dModelEndX) >= Math.Abs(dModelStartY - dModelEndY) Then
3624
                        'Vertical
3625
                        If Math.Abs(dStartX - dEndX) <= Math.Abs(dStartY - dEndY) Then
3626
                            '  dGap = 0.0015 'Math.Abs(dStartY - dEndY) / 80
3627

    
3628
                            '기준선의 X범위안에 세로선이 포함되어야됨
3629
                            If ((dModelStartX + dGap >= dStartX And dModelEndX - dGap <= dStartX) Or
3630
                            (dModelStartX - dGap <= dStartX And dModelEndX + dGap >= dStartX)) And
3631
                            ((dModelStartX + dGap >= dEndX And dModelEndX - dGap <= dEndX) Or
3632
                            (dModelStartX - dGap <= dEndX And dModelEndX + dGap >= dEndX)) Then
3633

    
3634
                                '가로선보다 아래에 세로선이 있을때
3635
                                If d기준y >= dStartY And d기준y >= dEndY Then
3636
                                    If dStartY >= dEndY Then
3637
                                        'dStartY 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3638
                                        If dStartY + dGap >= d기준y Then
3639
                                            dStartY = d기준y
3640
                                            sBranchType = "3"
3641
                                            Return True
3642
                                        End If
3643
                                    Else
3644
                                        'dEndY 좌표를 기준으로 Gap만큼 더했을때 기준선보다 큰지 확인
3645
                                        If dEndY + dGap >= d기준y Then
3646
                                            dEndY = d기준y
3647

    
3648
                                            If Math.Abs(dEndX - dModelStartX) > Math.Abs(dEndX - dModelEndX) Then
3649
                                                dEndX = dModelEndX
3650
                                            Else
3651
                                                dEndX = dModelStartX
3652
                                            End If
3653

    
3654
                                            sBranchType = "4"
3655
                                            Return True
3656
                                        End If
3657
                                    End If
3658
                                    '기준선보다 위에 세로선이 있을때
3659
                                ElseIf d기준y <= dStartY And d기준y <= dEndY Then
3660
                                    If dStartY >= dEndY Then
3661
                                        'dEndY 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3662
                                        If dEndY - dGap <= d기준y Then
3663
                                            dEndY = d기준y
3664
                                            sBranchType = "4"
3665
                                            Return True
3666
                                        End If
3667
                                    Else
3668
                                        'dStartY 좌표를 기준으로 Gap만큼 뺐을때 기준선보다 작은지 확인
3669
                                        If dStartY - dGap <= d기준y Then
3670
                                            dStartY = d기준y
3671
                                            sBranchType = "3"
3672
                                            Return True
3673
                                        End If
3674
                                    End If
3675
                                Else
3676
                                    '기준선과 세로선이 겹칠때
3677
                                    If (d기준y >= dStartY And d기준y <= dEndY) Or
3678
                                            (d기준y <= dStartY And d기준y >= dEndY) Then
3679
                                        '기준선이 dStartY와 dEndY중 어느쪽에 가까운지 확인
3680
                                        '세로선의 윗점과 기준선이 가까울때는 gap만큼 뺐을때 기준선보다 작은지확인
3681
                                        '세로선의 아래점과 기준선이 가까울때는 gap만큼 더했을때 기준선보다 큰지확인
3682
                                        If (dModelStartX <= dStartX And dModelEndX >= dEndX) Or
3683
                                            (dModelStartX >= dStartX And dModelEndX <= dEndX) Then
3684
                                            If Math.Abs(d기준y - dStartY) >= Math.Abs(d기준y - dEndY) Then
3685
                                                'Endy점이 기준선과 더 가까이 있음
3686
                                                If dStartY >= dEndY Then
3687
                                                    '세로선의 아래점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3688
                                                    If dEndY + dGap >= d기준y Then
3689
                                                        dEndY = d기준y
3690
                                                        sBranchType = "4"
3691
                                                        Return True
3692
                                                    End If
3693
                                                Else
3694
                                                    '세로선의 윗점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3695
                                                    If dEndY - dGap <= d기준y Then
3696
                                                        dEndY = d기준y
3697
                                                        sBranchType = "4"
3698
                                                        Return True
3699
                                                    End If
3700
                                                End If
3701
                                            Else
3702
                                                'dStartY점이 기준선과 더 가까이 있음
3703
                                                If dStartY >= dEndY Then
3704
                                                    '세로선의 윗점과 기준선이 가까우므로 gap만큼 뺐을때 기준선보다 작은지확인
3705
                                                    If dStartY - dGap <= d기준y Then
3706
                                                        dStartY = d기준y
3707
                                                        sBranchType = "3"
3708
                                                        Return True
3709
                                                    End If
3710
                                                Else
3711
                                                    '세로선의 아래점과 기준선이 가까우므로 gap만큼 더했을때 기준선보다 큰지확인
3712
                                                    If dStartY + dGap >= d기준y Then
3713
                                                        dStartY = d기준y
3714
                                                        sBranchType = "3"
3715
                                                        Return True
3716
                                                    End If
3717
                                                End If
3718
                                            End If
3719
                                        End If
3720

    
3721
                                    End If
3722
                                End If
3723
                            End If
3724
                        End If
3725
                    End If
3726
                End If
3727
            Next
3728
        Catch ex As Exception
3729

    
3730
        End Try
3731
        oLMConnector = Nothing
3732
        Return False
3733
    End Function
3734

    
3735
    Private Function CheckConnectionSymbolToSymbol(ByVal oModelingLineRows() As DataRow, ByRef dX As Double, ByRef dY As Double,
3736
                                  ByRef oLMConnector As LMConnector) As Boolean
3737
        Dim bConnectionFlag As Boolean = False
3738
        Try
3739
            For Each oModelrow In oModelingLineRows
3740
                Dim d기준x As Double = dX
3741
                Dim d기준y As Double = dY
3742
                Dim dGap As Double = 0.0002
3743
                Dim oRun As LMPipeRun = Nothing
3744
                Try
3745
                    Dim oLMSymbol As LMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3746
                    Dim dX1 As Double = 0.0
3747
                    Dim dY1 As Double = 0.0
3748
                    Dim dX2 As Double = 0.0
3749
                    Dim dY2 As Double = 0.0
3750
                    For Each oConnector In oLMSymbol.Connect1Connectors
3751
                        oLMConnector = oConnector
3752
                    Next
3753
                    '  oRun = _Placement.PIDDataSource.GetPipeRun(oLMSymbol.Connect1Connectors.Nth(1).ModelItemID)
3754
                    _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3755
                    _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3756
                    If Math.Abs(dX - dX1) < dGap And Math.Abs(dY - dY1) < dGap Then
3757
                        dX = dX1
3758
                        dY = dY1
3759
                        bConnectionFlag = True
3760
                        Exit For
3761
                    End If
3762
                    If Math.Abs(dX - dX2) < dGap And Math.Abs(dY - dY2) < dGap Then
3763
                        dX = dX2
3764
                        dY = dY2
3765
                        bConnectionFlag = True
3766
                        Exit For
3767
                    End If
3768

    
3769
                    'For Each oConnector In oLMSymbol.Connect1Connectors
3770
                    '    For Each objConnectorVertex In oConnector.ConnectorVertices
3771
                    '        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3772
                    '        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3773
                    '        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3774
                    '            oLMConnector = oConnector
3775
                    '            dX = dConn_X
3776
                    '            dY = dConn_Y
3777
                    '            bConnectionFlag = True
3778
                    '            Exit For
3779
                    '        End If
3780
                    '    Next
3781
                    'Next
3782

    
3783
                    'For Each oConnector In oLMSymbol.Connect2Connectors
3784
                    '    For Each objConnectorVertex In oConnector.ConnectorVertices
3785
                    '        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3786
                    '        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3787
                    '        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3788
                    '            oLMConnector = oConnector
3789
                    '            dX = dConn_X
3790
                    '            dY = dConn_Y
3791
                    '            bConnectionFlag = True
3792
                    '            Exit For
3793
                    '        End If
3794
                    '    Next
3795
                    'Next
3796

    
3797

    
3798
                    'If oRun IsNot Nothing Then
3799
                    '    Dim dResultCalc As Double = -1
3800
                    '    For Each objRep In oRun.Representations
3801
                    '        Dim sRepresentationType As String = objRep.Attributes("RepresentationType").Value
3802
                    '        If objRep.Attributes("RepresentationType").Value = "Connector" Or
3803
                    '            objRep.Attributes("RepresentationType").Value = "Symbol" And
3804
                    '             objRep.Attributes("ItemStatus").Value = "Active" Then
3805
                    '            Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
3806
                    '            For Each objConnectorVertex In objConnector.ConnectorVertices
3807
                    '                Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
3808
                    '                Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
3809
                    '                If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
3810
                    '                    oLMConnector = objConnector
3811
                    '                    d기준x = dConn_X
3812
                    '                    d기준y = dConn_Y
3813
                    '                    bConnectionFlag = True
3814
                    '                    Exit For
3815
                    '                End If
3816
                    '            Next
3817
                    '        End If
3818
                    '    Next
3819
                    'End If
3820

    
3821
                Catch ex As Exception
3822
                End Try
3823
            Next
3824

    
3825
        Catch ex As Exception
3826

    
3827
        End Try
3828
        Return bConnectionFlag
3829
    End Function
3830

    
3831
    Private Function CheckConnectionSymbolToLine(ByVal oModelingLineRows() As DataRow, ByRef dX As Double, ByRef dY As Double,
3832
ByVal dCenterX As Double, ByVal dCenterY As Double, ByRef oLMConnector As LMConnector) As LMSymbol
3833
        Dim bConnectionFlag As Boolean = False
3834
        Dim oLMSymbol As LMSymbol = Nothing
3835
        Try
3836

    
3837
            For Each oModelrow In _ModelingSymbol_Dt.Rows
3838
                Dim dMinx As Double = oModelrow(_XML_SYMBOL_MIN_X)
3839
                Dim dMaxx As Double = oModelrow(_XML_SYMBOL_MAX_X)
3840
                Dim dMiny As Double = oModelrow(_XML_SYMBOL_MIN_Y)
3841
                Dim dMaxy As Double = oModelrow(_XML_SYMBOL_MAX_Y)
3842
                Dim dGap As Double = 0.001
3843
                If dMinx <= dX And dMaxx >= dX And dMiny <= dY And dMaxy >= dY Then
3844
                    oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3845
                    Dim dX1 As Double = 0.0
3846
                    Dim dY1 As Double = 0.0
3847
                    Dim dX2 As Double = 0.0
3848
                    Dim dY2 As Double = 0.0
3849
                    Dim dX3 As Double = 0.0
3850
                    Dim dY3 As Double = 0.0
3851
                    Dim dX4 As Double = 0.0
3852
                    Dim dY4 As Double = 0.0
3853
                    Dim dX5 As Double = 0.0
3854
                    Dim dY5 As Double = 0.0
3855
                    Dim dX6 As Double = 0.0
3856
                    Dim dY6 As Double = 0.0
3857
                    Dim dX7 As Double = 0.0
3858
                    Dim dY7 As Double = 0.0
3859
                    Dim dX8 As Double = 0.0
3860
                    Dim dY8 As Double = 0.0
3861
                    _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3862
                    _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3863
                    _Placement.PIDConnectPointLocation(oLMSymbol, 3, dX3, dY3)
3864
                    _Placement.PIDConnectPointLocation(oLMSymbol, 4, dX4, dY4)
3865
                    _Placement.PIDConnectPointLocation(oLMSymbol, 5, dX5, dY5)
3866
                    _Placement.PIDConnectPointLocation(oLMSymbol, 6, dX6, dY6)
3867
                    _Placement.PIDConnectPointLocation(oLMSymbol, 7, dX7, dY7)
3868
                    _Placement.PIDConnectPointLocation(oLMSymbol, 8, dX8, dY8)
3869

    
3870
                    If Math.Abs(dX - dX1) <= dGap And Math.Abs(dY - dY1) <= dGap Then
3871
                        dX = dX1
3872
                        dY = dY1
3873
                    ElseIf Math.Abs(dX - dX2) <= dGap And Math.Abs(dY - dY2) <= dGap Then
3874
                        dX = dX2
3875
                        dY = dY2
3876
                    ElseIf Math.Abs(dX - dX3) <= dGap And Math.Abs(dY - dY3) <= dGap Then
3877
                        dX = dX3
3878
                        dY = dY3
3879
                    ElseIf Math.Abs(dX - dX4) <= dGap And Math.Abs(dY - dY4) <= dGap Then
3880
                        dX = dX4
3881
                        dY = dY4
3882
                    ElseIf Math.Abs(dX - dX5) <= dGap And Math.Abs(dY - dY5) <= dGap Then
3883
                        dX = dX5
3884
                        dY = dY5
3885
                    ElseIf Math.Abs(dX - dX6) <= dGap And Math.Abs(dY - dY6) <= dGap Then
3886
                        dX = dX6
3887
                        dY = dY6
3888
                    ElseIf Math.Abs(dX - dX7) <= dGap And Math.Abs(dY - dY7) <= dGap Then
3889
                        dX = dX7
3890
                        dY = dY7
3891
                    ElseIf Math.Abs(dX - dX8) <= dGap And Math.Abs(dY - dY8) <= dGap Then
3892
                        dX = dX8
3893
                        dY = dY8
3894
                    End If
3895
                End If
3896
            Next
3897

    
3898

    
3899

    
3900
            'For Each oModelrow In oModelingLineRows
3901
            '    Dim d기준x As Double = dCenterX
3902
            '    Dim d기준y As Double = dCenterY
3903
            '    Dim dGap As Double = 0.001
3904
            '    Dim oRun As LMPipeRun = Nothing
3905
            '    Dim dCheckGap As Double = 0
3906
            '    Try
3907

    
3908
            '        Dim dX1 As Double = 0.0
3909
            '        Dim dY1 As Double = 0.0
3910
            '        Dim dX2 As Double = 0.0
3911
            '        Dim dY2 As Double = 0.0
3912
            '        '  oRun = _Placement.PIDDataSource.GetPipeRun(oLMSymbol.Connect1Connectors.Nth(1).ModelItemID)
3913
            '        oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3914
            '        For Each oConnector In oLMSymbol.Connect1Connectors
3915
            '            oLMConnector = oConnector
3916
            '        Next
3917
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
3918
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
3919
            '        '  If Math.Abs(dX - dX1) < dGap And Math.Abs(dY - dY1) < dGap And
3920
            '        If Math.Abs(d기준x - dX1) < dCheckGap And Math.Abs(d기준y - dY1) < dCheckGap Or dCheckGap = 0 Then
3921
            '            dX = dX1
3922
            '            dY = dY1
3923
            '            bConnectionFlag = True
3924
            '            dCheckGap = Math.Abs(d기준x - dX1) + Math.Abs(d기준y - dY1)
3925
            '        End If
3926
            '        'If Math.Abs(dX - dX2) < dGap And Math.Abs(dY - dY2) < dGap And
3927
            '        '  Math.Abs(d기준x - dX2) < dCheckGap And Math.Abs(d기준y - dY2 < dCheckGap) Or dCheckGap = 0 Then
3928
            '        If Math.Abs(d기준x - dX2) < dCheckGap And Math.Abs(d기준y - dY2) < dCheckGap Or dCheckGap = 0 Then
3929
            '            dX = dX2
3930
            '            dY = dY2
3931
            '            bConnectionFlag = True
3932
            '        End If
3933

    
3934
            '    Catch ex As Exception
3935
            '    End Try
3936
            '    If bConnectionFlag Then
3937
            '        oLMSymbol = oModelrow(_XML_SYMBOL_LMSYMBOL)
3938
            '    Else
3939
            '        oLMSymbol = Nothing
3940
            '    End If
3941
            'Next
3942

    
3943
        Catch ex As Exception
3944

    
3945
        End Try
3946

    
3947
        Return oLMSymbol
3948
    End Function
3949

    
3950
    ''' <summary>
3951
    ''' 라인과 라인이 만나는점이 브런치점인지 확인, 오차범위내 라인보정
3952
    ''' </summary>
3953
    ''' <param name="oModelingLineRows"></param>
3954
    ''' <param name="dStartX"></param>
3955
    ''' <param name="dStartY"></param>
3956
    ''' <param name="dEndX"></param>
3957
    ''' <param name="dEndY"></param>
3958
    ''' <param name="oLMConnector"></param>
3959
    ''' <returns></returns>
3960
    Private Function CheckBranchLine(ByVal oModelingLineRows As DataRowCollection, ByRef dStartX As Double, ByRef dStartY As Double,
3961
                                     ByRef dEndX As Double, ByRef dEndY As Double, ByRef oLMConnector As LMConnector) As String
3962
        Dim bConnectionFlag As Boolean = False
3963
        Dim sBranchDirection As String = ""
3964
        Try
3965
            For Each oModelrow In oModelingLineRows
3966
                Dim dModelStartX As Double
3967
                Dim dModelStartY As Double
3968
                Dim dModelEndX As Double
3969
                Dim dModelEndY As Double
3970
                Dim dGap As Double = 0.002
3971
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3972
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3973
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3974
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3975

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

    
3980
                    '기본라인의 X축영역안에 현재선이 있어야됨
3981
                    '      If dModelEndY > dModelStartY Then
3982
                    If (dStartX < dModelEndX And dStartX > dModelStartX) Or
3983
                            (dStartX > dModelEndX And dStartX < dModelStartX) Then
3984
                        '[오차범위 수정]
3985
                        '현재선의 Y축방향이 기존라인의 X축방향을 통과하는지 확인
3986
                        If dStartY < dEndY Then
3987
                            If dEndY > dModelStartY And dModelStartY > dStartY Then
3988
                                If dEndY - dModelStartY > dModelStartY - dStartY Then
3989
                                    '위쪽으로 라인이 나와있을때
3990
                                    '현재선 중 작은 Y좌표를 오차범위만큼 더했을때 기존라인의 Y축보다 큰지확인 
3991
                                    'Y축보다 클경우 작은 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 큰 Y좌표에 더한다.
3992
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
3993
                                        Dim dAddPoint As Double = dModelStartY - dStartY
3994
                                        dEndY = dEndY + dAddPoint
3995
                                        dStartY = dModelStartY
3996
                                        sBranchDirection = "START"
3997
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3998
                                        Exit For
3999
                                    End If
4000
                                Else
4001
                                    '아래쪽으로 라인이 나와있을때
4002
                                    '현재선 중 큰 Y좌표를 오차범위만큼 뺐을때 기존라인의 Y축보다 작은지확인 
4003
                                    'Y축보다 작을경우 큰 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 작은 Y좌표에 뺀다.
4004
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4005
                                        Dim dAddPoint As Double = dEndY - dModelStartY
4006
                                        dStartY = dStartY - dAddPoint
4007
                                        dEndY = dModelStartY
4008
                                        sBranchDirection = "END"
4009
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4010
                                        Exit For
4011
                                    End If
4012
                                End If
4013
                            Else
4014
                                '현재선의 Y축방향이 기존라인의 X축방향에 못미치는지 확인
4015
                                If dStartY > dModelStartY Then
4016
                                    '기존라인보다 위쪽에 현재선이 있을때
4017
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
4018
                                        '오차범위만큼 작은 y좌표를 뺐을때 기존라인보다 아래쪽에 있을경우 오차보정
4019
                                        Dim dAddPoint As Double = dStartY - dModelStartY
4020
                                        dEndY = dEndY - dAddPoint
4021
                                        dStartY = dModelStartY
4022
                                        sBranchDirection = "START"
4023
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4024
                                        Exit For
4025
                                    End If
4026
                                Else
4027
                                    '기존라인보다 아래쪽에 현재선이 있을때
4028
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4029
                                        '오차범위만큼 큰 y좌표를 더했을때 기존라인보다 위쪽에 있을경우 오차보정
4030
                                        Dim dAddPoint As Double = dModelStartY - dEndY
4031
                                        dEndY = dModelStartY
4032
                                        dStartY = dStartY + dAddPoint
4033
                                        sBranchDirection = "END"
4034
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4035
                                        Exit For
4036
                                    End If
4037
                                End If
4038
                            End If
4039
                        Else
4040
                            If dEndY < dModelStartY And dModelStartY < dStartY Then
4041
                                If dModelStartY - dEndY < dStartY - dModelStartY Then
4042
                                    '위쪽으로 라인이 나와있을때
4043
                                    '현재선 중 작은 Y좌표를 오차범위만큼 더했을때 기존라인의 Y축보다 큰지확인 
4044
                                    'Y축보다 클경우 작은 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 큰 Y좌표에 더한다.
4045
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4046
                                        Dim dAddPoint As Double = dModelStartY - dEndY
4047
                                        dStartY = dStartY + dAddPoint
4048
                                        dEndY = dModelStartY
4049
                                        sBranchDirection = "END"
4050
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4051
                                        Exit For
4052
                                    End If
4053
                                Else
4054
                                    '아래쪽으로 라인이 나와있을때
4055
                                    '현재선 중 큰 Y좌표를 오차범위만큼 뺐을때 기존라인의 Y축보다 작은지확인 
4056
                                    'Y축보다 작을경우 큰 Y좌표를 기존라인의 Y축에 맞추고 더한 길이만큼 작은 Y좌표에 뺀다.
4057
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
4058
                                        Dim dAddPoint As Double = dStartY - dModelStartY
4059
                                        dEndY = dEndY - dAddPoint
4060
                                        dStartY = dModelStartY
4061
                                        sBranchDirection = "START"
4062
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4063
                                        Exit For
4064
                                    End If
4065
                                End If
4066
                            Else
4067
                                If dEndY > dModelStartY Then
4068
                                    '기존라인보다 우측에 현재선이 있을때
4069
                                    If Math.Abs(dEndY - dModelStartY) <= dGap Then
4070
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4071
                                        Dim dAddPoint As Double = dEndY - dModelStartY
4072
                                        dStartY = dStartY - dAddPoint
4073
                                        dEndY = dModelStartY
4074
                                        sBranchDirection = "END"
4075
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4076
                                        Exit For
4077
                                    End If
4078
                                Else
4079
                                    '기존라인보다 좌측에 현재선이 있을때
4080
                                    If Math.Abs(dStartY - dModelStartY) <= dGap Then
4081
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4082
                                        Dim dAddPoint As Double = dModelStartY - dStartY
4083
                                        dStartY = dModelStartY
4084
                                        dEndY = dEndY + dAddPoint
4085
                                        sBranchDirection = "START"
4086
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4087
                                        Exit For
4088
                                    End If
4089
                                End If
4090
                            End If
4091
                        End If
4092
                    End If
4093
                    '기존라인이 Y축방향이라면 현재선은 X축방향이 되어야됨
4094
                ElseIf Math.Abs(dModelStartX - dModelEndX) < Math.Abs(dModelStartY - dModelEndY) And
4095
                Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
4096

    
4097
                    '기본라인의 Y축영역안에 현재선이 있어야됨
4098
                    '      If dModelEndY > dModelStartY Then
4099
                    If (dStartY < dModelEndY And dStartY > dModelStartY) Or
4100
                            (dStartY > dModelEndY And dStartY < dModelStartY) Then
4101
                        '[오차범위 수정]
4102
                        '현재선의 X축방향이 기존라인의 Y축방향을 통과하는지 확인
4103
                        If dStartX < dEndX Then
4104
                            If dEndX > dModelStartX And dModelStartX > dStartX Then
4105
                                If dEndX - dModelStartX > dModelStartX - dStartX Then
4106
                                    '우측으로 라인이 나와있을때
4107
                                    '현재선 중 작은 X좌표를 오차범위만큼 더했을때 기존라인의 X축보다 큰지확인 
4108
                                    'X축보다 클경우 작은 X좌표를 기존라인의 X축에 맞추고 더한 길이만큼 큰 X좌표에 더한다.
4109
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4110
                                        Dim dAddPoint As Double = dModelStartX - dStartX
4111
                                        dEndX = dEndX + dAddPoint
4112
                                        dStartX = dModelStartX
4113
                                        sBranchDirection = "START"
4114
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4115
                                        Exit For
4116
                                    End If
4117
                                Else
4118
                                    '좌측으로 라인이 나와있을때
4119
                                    '현재선 중 큰 X좌표를 오차범위만큼 뺐을때 기존라인의 X축보다 작은지확인 
4120
                                    'X축보다 작을경우 큰 X좌표를 기존라인의 X축에 맞추고 뺀 길이만큼 작은 X좌표에 뺀다.
4121
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4122
                                        Dim dAddPoint As Double = dEndX - dModelStartX
4123
                                        dStartX = dStartX - dAddPoint
4124
                                        dEndX = dModelStartX
4125
                                        sBranchDirection = "END"
4126
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4127
                                        Exit For
4128
                                    End If
4129
                                End If
4130
                            Else
4131
                                '현재선의 X축방향이 기존라인의 Y축방향에 못미치는지 확인
4132
                                If dStartX > dModelStartX Then
4133
                                    '기존라인보다 우측에 현재선이 있을때
4134
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4135
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4136
                                        Dim dAddPoint As Double = dStartX - dModelStartX
4137
                                        dEndX = dEndX - dAddPoint
4138
                                        dStartX = dModelStartX
4139
                                        sBranchDirection = "START"
4140
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4141
                                        Exit For
4142
                                    End If
4143
                                Else
4144
                                    '기존라인보다 좌측에 현재선이 있을때
4145
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4146
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4147
                                        Dim dAddPoint As Double = dModelStartX - dEndX
4148
                                        dEndX = dModelStartX
4149
                                        dStartX = dStartX + dAddPoint
4150
                                        sBranchDirection = "END"
4151
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4152
                                        Exit For
4153
                                    End If
4154
                                End If
4155
                            End If
4156
                        Else
4157
                            If dEndX < dModelStartX And dModelStartX < dStartX Then
4158
                                If dModelStartX - dEndX < dStartX - dModelStartX Then
4159
                                    '우측으로 라인이 나와있을때
4160
                                    '현재선 중 작은 X좌표를 오차범위만큼 더했을때 기존라인의 X축보다 큰지확인 
4161
                                    'X축보다 클경우 작은 X좌표를 기존라인의 X축에 맞추고 더한 길이만큼 큰 X좌에 더한다.
4162
                                    If Math.Abs(dModelStartX - dEndX) <= dGap Then
4163
                                        Dim dAddPoint As Double = dModelStartX - dEndX
4164
                                        dStartX = dStartX + dAddPoint
4165
                                        dEndX = dModelStartX
4166
                                        sBranchDirection = "END"
4167
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4168
                                        Exit For
4169
                                    End If
4170
                                Else
4171
                                    '좌측으로 라인이 나와있을때
4172
                                    '현재선 중 큰 X좌표를 오차범위만큼 뺐을때 기존라인의 X축보다 작은지확인 
4173
                                    'X축보다 작을경우 큰 X좌표를 기존라인의 X축에 맞추고 뺀 길이만큼 작은 X좌표에 뺀다.
4174
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4175
                                        Dim dAddPoint As Double = dStartX - dModelStartX
4176
                                        dEndX = dEndX - dAddPoint
4177
                                        dStartX = dModelStartX
4178
                                        sBranchDirection = "START"
4179
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4180
                                        Exit For
4181
                                    End If
4182

    
4183
                                End If
4184
                            Else
4185
                                If dEndX > dModelStartX Then
4186
                                    '기존라인보다 우측에 현재선이 있을때
4187
                                    If Math.Abs(dEndX - dModelStartX) <= dGap Then
4188
                                        '오차범위만큼 작은 x좌표를 뺐을때 기존라인보다 좌측에 있을경우 오차보정
4189
                                        Dim dAddPoint As Double = dEndX - dModelStartX
4190
                                        dStartX = dStartX - dAddPoint
4191
                                        dEndX = dModelStartX
4192
                                        sBranchDirection = "END"
4193
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4194
                                        Exit For
4195
                                    End If
4196
                                Else
4197
                                    '기존라인보다 좌측에 현재선이 있을때
4198
                                    If Math.Abs(dStartX - dModelStartX) <= dGap Then
4199
                                        '오차범위만큼 큰 x좌표를 더했을때 기존라인보다 우측에 있을경우 오차보정
4200
                                        Dim dAddPoint As Double = dModelStartX - dStartX
4201
                                        dStartX = dModelStartX
4202
                                        dEndX = dEndX + dAddPoint
4203
                                        sBranchDirection = "START"
4204
                                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4205
                                        Exit For
4206
                                    End If
4207
                                End If
4208
                            End If
4209
                        End If
4210
                    End If
4211
                End If
4212
            Next
4213
        Catch ex As Exception
4214
            bConnectionFlag = False
4215
            oLMConnector = Nothing
4216
        End Try
4217
        Return sBranchDirection
4218

    
4219
    End Function
4220

    
4221
    Private Function UpdateCheckBranchLine(ByRef dX As Double, ByRef dY As Double,
4222
                                  ByRef oLMConnector As LMConnector, ByRef oUid As String) As Boolean
4223
        Dim bConnectionFlag As Boolean = False
4224
        Dim iGapCheck As Integer = 0
4225
        Try
4226
            For Each oModelrow In _ModelingLine_Dt.Rows
4227
                Dim d기준x As Double = dX
4228
                Dim d기준y As Double = dY
4229
                Dim dGap As Double = 0.001
4230
                Dim oRun As LMPipeRun = Nothing
4231
                Dim dModelStartX As Double
4232
                Dim dModelStartY As Double
4233
                Dim dModelEndX As Double
4234
                Dim dModelEndY As Double
4235
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
4236
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
4237
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
4238
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
4239
                d기준x = (dModelStartX + dModelEndX) / 2
4240
                d기준y = (dModelStartY + dModelEndY) / 2
4241

    
4242

    
4243
                Dim dMax_X As Double = 0.0
4244
                Dim dMax_Y As Double = 0.0
4245
                Dim dMin_X As Double = 0.0
4246
                Dim dMin_Y As Double = 0.0
4247

    
4248

    
4249
                If dModelEndX > dModelStartX Then
4250
                    dMax_X = dModelEndX
4251
                    dMin_X = dModelStartX
4252
                Else
4253
                    dMax_X = dModelStartX
4254
                    dMin_X = dModelEndX
4255
                End If
4256

    
4257
                If dModelEndY > dModelStartY Then
4258
                    dMax_Y = dModelEndY
4259
                    dMin_Y = dModelStartY
4260
                Else
4261
                    dMax_Y = dModelStartY
4262
                    dMin_Y = dModelEndY
4263
                End If
4264

    
4265
                If dX <= dMax_X + dGap And dX >= dMin_X - dGap And
4266
                  dY <= dMax_Y + dGap And dY >= dMin_Y - dGap Then
4267
                    If Math.Abs(dMax_X - dMin_X) > Math.Abs(dMax_Y - dMin_Y) Then
4268
                        dY = dMax_Y
4269
                    Else
4270
                        dX = dMax_X
4271
                    End If
4272
                    oUid = oModelrow(_XML_LINE_UID).ToString()
4273
                    ' Dim oID As String = oModelrow(_XML_LINE_SPID)
4274
                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4275
                    '    oID = oLMConnector.ModelItemID
4276
                    '  oLMConnector = _Placement.PIDDataSource.GetConnector(oID)
4277

    
4278
                End If
4279

    
4280

    
4281
            Next
4282
        Catch ex As Exception
4283
            bConnectionFlag = False
4284
            oLMConnector = Nothing
4285
        End Try
4286
        Return bConnectionFlag
4287
    End Function
4288

    
4289

    
4290
    ''' <summary>
4291
    ''' 라인과 특정 포인트에 커넥션을 확인하는 메서드
4292
    ''' </summary>
4293
    ''' <param name="oModelingLineRows"></param>
4294
    ''' <param name="dX"></param>
4295
    ''' <param name="dY"></param>
4296
    ''' <param name="oLMConnector"></param>
4297
    ''' <param name="dPreConnX"></param>
4298
    ''' <param name="dPreConnY"></param>
4299
    ''' <returns></returns>
4300

    
4301

    
4302

    
4303
    Private Function CheckConnectionLine(ByRef dX As Double, ByRef dY As Double,
4304
                                  ByRef oLMConnector As LMConnector, ByRef sUid As String) As Boolean
4305
        Dim bConnectionFlag As Boolean = False
4306
        Dim iGapCheck As Integer = 0
4307
        Try
4308
            For Each oModelrow In _ModelingLine_Dt.Rows
4309
                Dim d기준x As Double = dX
4310
                Dim d기준y As Double = dY
4311
                Dim dGap As Double = 0.0002
4312
                Dim oRun As LMPipeRun = Nothing
4313
                'Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
4314
                'Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
4315
                Dim dModelStartX As Double
4316
                Dim dModelStartY As Double
4317
                Dim dModelEndX As Double
4318
                Dim dModelEndY As Double
4319
                'ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
4320
                'ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
4321
                'ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
4322
                'ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
4323
                dModelStartX = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
4324
                dModelStartY = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
4325
                dModelEndX = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
4326
                dModelEndY = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
4327
                d기준x = (dModelStartX + dModelEndX) / 2
4328
                d기준y = (dModelStartY + dModelEndY) / 2
4329

    
4330

    
4331
                Dim bCheckEqual As Boolean = False
4332
                If dX <= dModelStartX + dGap And dX >= dModelStartX - dGap And
4333
                        dY <= dModelStartY + dGap And dY >= dModelStartY - dGap Then
4334
                    bCheckEqual = True
4335
                ElseIf dX <= dModelEndX + dGap And dX >= dModelEndX - dGap And
4336
                        dY <= dModelEndY + dGap And dY >= dModelEndY - dGap Then
4337
                    bCheckEqual = True
4338

    
4339
                End If
4340

    
4341
                If bCheckEqual Then
4342
                    Try
4343
                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4344
                        sUid = oModelrow(_XML_LINE_UID)
4345
                        oRun = _Placement.PIDDataSource.GetPipeRun(oLMConnector.ModelItemID)
4346
                    Catch ex As Exception
4347
                    End Try
4348
                    Try
4349
                        If oRun IsNot Nothing Then
4350
                            Dim dResultCalc As Double = -1
4351
                            For Each objRep In oRun.Representations
4352
                                If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
4353
                                    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
4354
                                    For Each objConnectorVertex In objConnector.ConnectorVertices
4355
                                        Dim dConn_X As Double = objConnectorVertex.Attributes("XCoordinate").Value
4356
                                        Dim dConn_Y As Double = objConnectorVertex.Attributes("YCoordinate").Value
4357
                                        If Math.Abs(dX - dConn_X) < dGap And Math.Abs(dY - dConn_Y) < dGap Then
4358
                                            oLMConnector = objConnector
4359
                                            dX = dConn_X
4360
                                            dY = dConn_Y
4361
                                            bConnectionFlag = True
4362
                                        End If
4363
                                    Next
4364
                                End If
4365
                            Next
4366
                        End If
4367
                    Catch ex As Exception
4368
                    End Try
4369
                Else
4370
                    'Dim dMax_X As Double = 0.0
4371
                    'Dim dMax_Y As Double = 0.0
4372
                    'Dim dMin_X As Double = 0.0
4373
                    'Dim dMin_Y As Double = 0.0
4374

    
4375

    
4376
                    'If dModelEndX > dModelStartX Then
4377
                    '    dMax_X = dModelEndX
4378
                    '    dMin_X = dModelStartX
4379
                    'Else
4380
                    '    dMax_X = dModelStartX
4381
                    '    dMin_X = dModelEndX
4382
                    'End If
4383

    
4384
                    'If dModelEndY > dModelStartY Then
4385
                    '    dMax_Y = dModelEndY
4386
                    '    dMin_Y = dModelStartY
4387
                    'Else
4388
                    '    dMin_Y = dModelStartY
4389
                    '    dMin_X = dModelEndY
4390
                    'End If
4391

    
4392
                    'If dX <= dMax_X + dGap And dX >= dMin_X - dGap And
4393
                    '  dY <= dMax_Y + dGap And dY >= dMin_Y - dGap Then
4394

    
4395
                    '    If Math.Abs(dMax_X - dMin_X) > Math.Abs(dMax_Y - dMin_Y) Then
4396
                    '        dY = dMax_Y
4397
                    '    Else
4398
                    '        dX = dMax_X
4399
                    '    End If
4400

    
4401
                    '    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4402
                    'End If
4403
                End If
4404

    
4405
            Next
4406
        Catch ex As Exception
4407
            bConnectionFlag = False
4408
            oLMConnector = Nothing
4409
        End Try
4410
        Return bConnectionFlag
4411
    End Function
4412

    
4413
    Private Function CheckLineBranch(ByVal oLine_Dt As DataTable, ByRef dX As Double, ByRef dY As Double,
4414
                                     ByVal sDirection As String, ByRef oLMConnector As LMConnector) As Boolean
4415

    
4416
        Dim oModelingLineRows() As DataRow = oLine_Dt.Select("[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And " &
4417
                                                                "[" & _XML_LINE_SPID & "] <> ''")
4418

    
4419
        Dim bConnectionFlag As Boolean = False
4420
        Try
4421
            For Each oModelrow In oModelingLineRows
4422
                Dim sStartPoint As String = oModelrow(_XML_LINE_STARTPOINT)
4423
                Dim sEndPoint As String = oModelrow(_XML_LINE_ENDPOINT)
4424
                Dim dModelStartX As Double
4425
                Dim dModelStartY As Double
4426
                Dim dModelEndX As Double
4427
                Dim dModelEndY As Double
4428
                ConvertPointBystring(sStartPoint, dModelStartX, dModelStartY)
4429
                ConvertPointBystring(sEndPoint, dModelEndX, dModelEndY)
4430
                ConvertPointByImage(dModelStartX, dModelStartY, _IMG_X, _IMG_Y)
4431
                ConvertPointByImage(dModelEndX, dModelEndY, _IMG_X, _IMG_Y)
4432
                Dim dGap As Double = 0.0002
4433

    
4434
                If Math.Abs(dModelStartX - dModelEndX) <= Math.Abs(dModelStartY - dModelEndY) Then
4435
                    'Vertical
4436
                    If sDirection = "X" Then
4437
                        'x Direction Line
4438
                        If (dModelStartY + dGap >= dY And dModelEndY - dGap <= dY) Or
4439
                        (dModelStartY - dGap <= dY And dModelEndY + dGap >= dY) Then
4440
                            If (dX > dModelStartX And dX < dModelEndX) Or (dX > dModelEndX And dX < dModelStartX) Then
4441
                                If Math.Abs(dX - dModelStartX) > Math.Abs(dX - dModelEndX) Then
4442
                                    dX = dModelEndX
4443
                                Else
4444
                                    dX = dModelStartX
4445
                                End If
4446
                                Try
4447
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4448
                                Catch ex As Exception
4449

    
4450
                                End Try
4451
                                bConnectionFlag = True
4452
                            End If
4453
                        End If
4454
                    End If
4455
                Else
4456
                    'Horizontal 
4457
                    If sDirection = "Y" Then
4458
                        If (dModelStartX + dGap >= dX And dModelEndX - dGap <= dX) Or
4459
                       (dModelStartX - dGap <= dX And dModelEndX + dGap >= dX) Then
4460
                            If (dY > dModelStartY And dY < dModelEndY) Or (dY > dModelEndY And dY < dModelStartY) Then
4461
                                If Math.Abs(dY - dModelStartY) > Math.Abs(dY - dModelEndY) Then
4462
                                    dY = dModelEndY
4463
                                Else
4464
                                    dY = dModelStartY
4465
                                End If
4466
                                Try
4467
                                    oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
4468
                                Catch ex As Exception
4469
                                End Try
4470
                                bConnectionFlag = True
4471
                            End If
4472
                        End If
4473
                    End If
4474
                End If
4475
            Next
4476
        Catch ex As Exception
4477
        End Try
4478
        Return bConnectionFlag
4479
    End Function
4480
    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,
4481
                              ByVal sLineNoUid As String, ByVal sLineUid As String, ByVal sSystemPath As String, ByRef oLMConnector As LMConnector) As Boolean
4482
        'Try
4483
        '    Dim oDatasource As Object = _Placement.PIDDataSource
4484
        '    Dim oPipeRun As LMPipeRun = Nothing
4485
        '    Dim objInputs As PlaceRunInputs
4486
        '    objInputs = New PlaceRunInputs
4487
        '    Dim objItem As LMAItem
4488
        '    '       Dim objConnector As LMConnector
4489

    
4490
        '    Dim oStartLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sStartLineUid & "' And " &
4491
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4492
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4493
        '    If oStartLineRow.Length = 0 Then
4494
        '        oStartLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sStartLineUid & "' And " &
4495
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4496
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4497
        '    End If
4498
        '    Dim oEndLineRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sEndLineUid & "' And " &
4499
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4500
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4501

    
4502
        '    oEndLineRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sEndLineUid & "' And " &
4503
        '                                                            "[" & _XML_LINE_DRAWING_TF & "] = 'TRUE' And" &
4504
        '                                                                  "[" & _XML_LINE_SPID & "] <> ''")
4505
        '    Dim sStartConnectionType As String = ""
4506
        '    Dim sEndConnectionType As String = ""
4507

    
4508
        '    Dim oStartLMConnector As LMConnector = Nothing
4509
        '    Dim oEndLMConnector As LMConnector = Nothing
4510
        '    Dim oDirectionLine As String = ""
4511

    
4512
        '    If Math.Abs(dStart_x - dEnd_x) > Math.Abs(dStart_y - dEnd_y) Then
4513
        '        oDirectionLine = "X"
4514
        '    Else
4515
        '        oDirectionLine = "Y"
4516
        '    End If
4517

    
4518
        '    Dim bCheckFlag As Boolean = False
4519

    
4520
        '    Dim bStartCheckFlag As Boolean = CheckConnectionLine(oStartLineRow, dStart_x, dStart_y, oStartLMConnector)
4521
        '    If bStartCheckFlag = False Then
4522
        '        bStartCheckFlag = CheckConnectionLine(oStartLineRow, dEnd_x, dEnd_y, oStartLMConnector)
4523
        '        bCheckFlag = True
4524
        '    End If
4525
        '    Dim bEndCheckFlag As Boolean = CheckConnectionLine(oEndLineRow, dEnd_x, dEnd_y, oEndLMConnector)
4526

    
4527
        '    If bEndCheckFlag = False Then
4528

    
4529
        '        bEndCheckFlag = CheckConnectionLine(oEndLineRow, dStart_x, dStart_y, oEndLMConnector)
4530
        '        bCheckFlag = True
4531
        '    End If
4532

    
4533
        '    If bStartCheckFlag = True And bEndCheckFlag = False Then
4534
        '        If bCheckFlag Then
4535
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
4536
        '            objInputs.AddPoint(dStart_x, dStart_y)
4537
        '        Else
4538
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4539
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
4540
        '        End If
4541

    
4542
        '    ElseIf bStartCheckFlag = False And bEndCheckFlag = True Then
4543
        '        If bCheckFlag Then
4544

    
4545
        '            objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4546
        '            objInputs.AddPoint(dEnd_x, dEnd_y)
4547
        '        Else
4548
        '            objInputs.AddPoint(dStart_x, dStart_y)
4549
        '            objInputs.AddConnectorTarget(oStartLMConnector, dEnd_x, dEnd_y)
4550
        '        End If
4551

    
4552
        '    ElseIf bStartCheckFlag = True And bEndCheckFlag = True Then
4553
        '        objInputs.AddConnectorTarget(oStartLMConnector, dStart_x, dStart_y)
4554
        '        objInputs.AddConnectorTarget(oEndLMConnector, dEnd_x, dEnd_y)
4555
        '    Else
4556
        '        objInputs.AddPoint(dStart_x, dStart_y)
4557
        '        objInputs.AddPoint(dEnd_x, dEnd_y)
4558
        '    End If
4559
        '    SetListBoxItems(ListBox_Result, "Place Pipe..(" & dStart_x & "," & dStart_y & ") - (" & dEnd_x & "," & dEnd_y & ")..." & _iPipecnt & " count ")
4560
        '    _iPipecnt = _iPipecnt + 1
4561
        '    objItem = _Placement.PIDCreateItem(sSystemPath)
4562
        '    oLMConnector = _Placement.PIDPlaceRun(objItem, objInputs)
4563

    
4564
        '    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + sLineUid + "'")
4565
        '    If oUpdateRow.Length = 1 Then
4566
        '        oUpdateRow(0)(_XML_LINE_SPID) = oLMConnector.ModelItemID
4567
        '        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = oLMConnector
4568

    
4569
        '        oUpdateRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4570
        '    End If
4571

    
4572
        '    oPipeRun = oDatasource.GetPipeRun(oLMConnector.ModelItemID)
4573

    
4574
        '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
4575
        '    If oAttributeRow.Length > 0 Then
4576
        '        For Each oAttribute In oAttributeRow
4577
        '            Try
4578
        '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
4579
        '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
4580
        '                If sPIDValue.Contains("'") Then
4581
        '                    sPIDValue = sPIDValue.Replace("'", """")
4582
        '                End If
4583
        '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
4584
        '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
4585
        '            Catch ex As Exception
4586
        '            End Try
4587
        '        Next
4588
        '        oPipeRun.Commit()
4589
        '    End If
4590
        '    Dim sID_1 As String = ""
4591
        '    Dim sID_2 As String = ""
4592
        '    If oStartLMConnector IsNot Nothing Then
4593
        '        sID_1 = oStartLMConnector.ModelItemID
4594
        '        sID_2 = oLMConnector.ModelItemID
4595
        '    ElseIf oEndLMConnector IsNot Nothing Then
4596
        '        sID_1 = oEndLMConnector.ModelItemID
4597
        '        sID_2 = oLMConnector.ModelItemID
4598
        '    End If
4599
        '    If sID_1 <> "" And sID_2 <> "" Then
4600
        '        Dim objSurvivorItem As LMAItem = Nothing
4601
        '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
4602
        '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
4603
        '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
4604
        '    End If
4605
        '    Return True
4606
        'Catch ex As Exception
4607
        '    Return False
4608
        'End Try
4609

    
4610
    End Function
4611

    
4612
    Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
4613
                                        ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String,
4614
                                        ByRef oLMConnector As LMConnector) As String
4615
        Dim sReturnUid As String = ""
4616
        Try
4617
            Dim sLineUid As String = ""
4618

    
4619
            Dim iConnType As Integer = 0
4620

    
4621
            Dim sStartpoint As String = ""
4622
            Dim sEndpoint As String = ""
4623
            Dim dOriginalStart_x As Double = 0.0
4624
            Dim dOriginalStart_y As Double = 0.0
4625
            Dim dOriginalEnd_x As Double = 0.0
4626
            Dim dOriginalEnd_y As Double = 0.0
4627

    
4628
            Dim dStart_x As Double = 0
4629
            Dim dStart_y As Double = 0
4630
            Dim dEnd_x As Double = 0
4631
            Dim dEnd_y As Double = 0
4632
            Dim sStartLineUid As String = sConnLineUid
4633
            Dim sEndLineUid As String = ""
4634
            Dim sDirection As String = ""
4635
            Dim sSystemPath As String = GetPipeType(sType)
4636

    
4637
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
4638
                                                                    "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4639
                                                                     "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4640
                                                                     "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4641
            If oPipeRow.Length > 0 Then
4642
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4643
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4644
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4645
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4646
                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4647
                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4648
                If dStart_x = 0 And dStart_y = 0 Then
4649
                    dStart_x = dOriginalStart_x
4650
                    dStart_y = dOriginalStart_y
4651
                    dEnd_x = dOriginalEnd_x
4652
                    dEnd_y = dOriginalEnd_y
4653
                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4654
                        sDirection = "X"
4655
                    Else
4656
                        sDirection = "Y"
4657
                    End If
4658
                    oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4659
                    sLineUid = sConnLineUid
4660
                End If
4661
            End If
4662

    
4663
            While True
4664
                sLineUid = ""
4665
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
4666
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4667
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4668
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4669

    
4670
                If oPipeRow.Length = 0 Then
4671
                    oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
4672
                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4673
                                            "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4674
                                            "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4675
                Else
4676
                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4677
                    'sConnLineUid = sLineUid
4678
                    sLineUid = sConnLineUid
4679
                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4680
                    iConnType = 1
4681
                End If
4682

    
4683
                If oPipeRow.Length > 0 Then
4684
                    If sLineUid = "" Then
4685
                        'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4686
                        'sConnLineUid = sLineUid
4687
                        sLineUid = sConnLineUid
4688
                        sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4689
                        iConnType = 2
4690
                    End If
4691
                    If iConnType = 1 Then
4692

    
4693
                    ElseIf iConnType = 2 Then
4694

    
4695
                    End If
4696
                    sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4697
                    sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4698
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4699
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4700
                    ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4701
                    ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4702

    
4703

    
4704

    
4705
                    If dStart_x = 0 And dStart_y = 0 Then
4706
                        dStart_x = dOriginalStart_x
4707
                        dStart_y = dOriginalStart_y
4708
                        dEnd_x = dOriginalEnd_x
4709
                        dEnd_y = dOriginalEnd_y
4710
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4711
                            sDirection = "X"
4712
                        Else
4713
                            sDirection = "Y"
4714
                        End If
4715
                        sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
4716
                        sSystemPath = GetPipeType(sType)
4717
                    Else
4718
                        If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4719
                            If sDirection = "Y" Then
4720
                                '방향이 바꼈음 Y - > X
4721

    
4722
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4723
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4724
                                dStart_x = dOriginalStart_x
4725
                                dStart_y = dOriginalStart_y
4726
                                dEnd_x = dOriginalEnd_x
4727
                                dEnd_y = dOriginalEnd_y
4728
                                sStartLineUid = sConnLineUid
4729
                            Else
4730
                                dEnd_x = dOriginalEnd_x
4731
                                dEnd_y = dOriginalEnd_y
4732
                            End If
4733
                            sDirection = "X"
4734
                        Else
4735
                            If sDirection = "X" Then
4736
                                '방향이 바꼈음 X - > Y
4737
                                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4738
                                sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4739
                                dStart_x = dOriginalStart_x
4740
                                dStart_y = dOriginalStart_y
4741
                                dEnd_x = dOriginalEnd_x
4742
                                dEnd_y = dOriginalEnd_y
4743
                                sStartLineUid = sConnLineUid
4744
                            Else
4745

    
4746
                                dEnd_x = dOriginalEnd_x
4747
                                dEnd_y = dOriginalEnd_y
4748
                            End If
4749
                            sDirection = "Y"
4750
                        End If
4751
                    End If
4752
                    '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4753
                Else
4754
                    If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
4755
                        LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4756
                         sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4757
                    End If
4758
                    sReturnUid = sConnLineUid
4759
                    Exit While
4760
                End If
4761
            End While
4762

    
4763
            If sStartLineUid <> "" And sEndLineUid <> "" Then
4764
                LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4765
                             sLineNoUid, sLineUid, sSystemPath, oLMConnector)
4766
                dStart_x = 0
4767
                dStart_y = 0
4768
                dEnd_x = 0
4769
                dEnd_y = 0
4770
            End If
4771
        Catch ex As Exception
4772

    
4773
        End Try
4774

    
4775
        Return sReturnUid
4776
    End Function
4777

    
4778

    
4779
    'Private Function LineToLineModeling(ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable,
4780
    '                                    ByVal oAttribute_Dt As DataTable, ByVal sConnLineUid As String, ByVal sType As String) As String
4781
    '    Dim sReturnUid As String = ""
4782
    '    Try
4783
    '        Dim sLineUid As String = ""
4784

    
4785
    '        Dim iConnType As Integer = 0
4786

    
4787
    '        Dim sStartpoint As String = ""
4788
    '        Dim sEndpoint As String = ""
4789
    '        Dim dOriginalStart_x As Double = 0.0
4790
    '        Dim dOriginalStart_y As Double = 0.0
4791
    '        Dim dOriginalEnd_x As Double = 0.0
4792
    '        Dim dOriginalEnd_y As Double = 0.0
4793

    
4794
    '        Dim dStart_x As Double = 0
4795
    '        Dim dStart_y As Double = 0
4796
    '        Dim dEnd_x As Double = 0
4797
    '        Dim dEnd_y As Double = 0
4798
    '        Dim sStartLineUid As String = sConnLineUid
4799
    '        Dim sEndLineUid As String = ""
4800
    '        Dim sDirection As String = ""
4801
    '        Dim sSystemPath As String = GetPipeType(sType)
4802

    
4803
    '        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" & sConnLineUid & "' And " &
4804
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4805
    '                                                                 "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4806
    '                                                                 "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4807
    '        If oPipeRow.Length > 0 Then
4808
    '            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4809
    '            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4810
    '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4811
    '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4812
    '            ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4813
    '            ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4814
    '            If dStart_x = 0 And dStart_y = 0 Then
4815
    '                dStart_x = dOriginalStart_x
4816
    '                dStart_y = dOriginalStart_y
4817
    '                dEnd_x = dOriginalEnd_x
4818
    '                dEnd_y = dOriginalEnd_y
4819
    '                If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4820
    '                    sDirection = "X"
4821
    '                Else
4822
    '                    sDirection = "Y"
4823
    '                End If
4824
    '                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4825
    '                sLineUid = sConnLineUid
4826
    '            End If
4827
    '        End If
4828

    
4829
    '        While True
4830
    '            sLineUid = ""
4831
    '            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sConnLineUid + "' And " &
4832
    '                                                                "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4833
    '                                                                         "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4834
    '                                                                         "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4835

    
4836
    '            If oPipeRow.Length = 0 Then
4837
    '                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sConnLineUid + "' And " &
4838
    '                                         "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And" &
4839
    '                                       "[" & _XML_SYMBOL_Check & "] = 'TRUE' And " &
4840
    '                                      "[" & _XML_SYMBOL_TYPE & "] = '" & sType & "'")
4841
    '            Else
4842
    '                'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4843
    '                'sConnLineUid = sLineUid
4844
    '                sLineUid = sConnLineUid
4845
    '                sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4846
    '                iConnType = 1
4847
    '            End If
4848

    
4849
    '            If oPipeRow.Length > 0 Then
4850
    '                If sLineUid = "" Then
4851
    '                    'sLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4852
    '                    'sConnLineUid = sLineUid
4853
    '                    sLineUid = sConnLineUid
4854
    '                    sConnLineUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4855
    '                    iConnType = 2
4856
    '                End If
4857
    '                If iConnType = 1 Then
4858

    
4859
    '                ElseIf iConnType = 2 Then
4860

    
4861
    '                End If
4862
    '                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4863
    '                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4864
    '                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4865
    '                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4866
    '                ConvertPointByImage(dOriginalStart_x, dOriginalStart_y, _IMG_X, _IMG_Y)
4867
    '                ConvertPointByImage(dOriginalEnd_x, dOriginalEnd_y, _IMG_X, _IMG_Y)
4868

    
4869

    
4870

    
4871
    '                If dStart_x = 0 And dStart_y = 0 Then
4872
    '                    dStart_x = dOriginalStart_x
4873
    '                    dStart_y = dOriginalStart_y
4874
    '                    dEnd_x = dOriginalEnd_x
4875
    '                    dEnd_y = dOriginalEnd_y
4876
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4877
    '                        sDirection = "X"
4878
    '                    Else
4879
    '                        sDirection = "Y"
4880
    '                    End If
4881
    '                    sType = oPipeRow(0)(_XML_LINE_TYPE).ToString()
4882
    '                    sSystemPath = GetPipeType(sType)
4883
    '                Else
4884
    '                    If Math.Abs(dOriginalStart_x - dOriginalEnd_x) > Math.Abs(dOriginalStart_y - dOriginalEnd_y) Then
4885
    '                        If sDirection = "Y" Then
4886
    '                            '방향이 바꼈음 Y - > X
4887
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4888
    '                            sLineNoUid, sLineUid, sSystemPath)
4889
    '                            dStart_x = dOriginalStart_x
4890
    '                            dStart_y = dOriginalStart_y
4891
    '                            dEnd_x = dOriginalEnd_x
4892
    '                            dEnd_y = dOriginalEnd_y
4893
    '                            sStartLineUid = sConnLineUid
4894
    '                        Else
4895
    '                            dEnd_x = dOriginalEnd_x
4896
    '                            dEnd_y = dOriginalEnd_y
4897
    '                        End If
4898
    '                        sDirection = "X"
4899
    '                    Else
4900
    '                        If sDirection = "X" Then
4901
    '                            '방향이 바꼈음 X - > Y
4902
    '                            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4903
    '                            sLineNoUid, sLineUid, sSystemPath)
4904
    '                            dStart_x = dOriginalStart_x
4905
    '                            dStart_y = dOriginalStart_y
4906
    '                            dEnd_x = dOriginalEnd_x
4907
    '                            dEnd_y = dOriginalEnd_y
4908
    '                            sStartLineUid = sConnLineUid
4909
    '                        Else
4910

    
4911
    '                            dEnd_x = dOriginalEnd_x
4912
    '                            dEnd_y = dOriginalEnd_y
4913
    '                        End If
4914
    '                        sDirection = "Y"
4915
    '                    End If
4916
    '                End If
4917
    '                '            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
4918
    '            Else
4919
    '                If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
4920
    '                    LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4921
    '                     sLineNoUid, sLineUid, sSystemPath)
4922
    '                End If
4923

    
4924

    
4925
    '                sReturnUid = sConnLineUid
4926
    '                Exit While
4927
    '            End If
4928
    '        End While
4929

    
4930
    '        If sStartLineUid <> "" And sEndLineUid <> "" Then
4931
    '            LineModeling(oLine_Dt, oAttribute_Dt, sStartLineUid, sEndLineUid, dStart_x, dStart_y, dEnd_x, dEnd_y,
4932
    '                         sLineNoUid, sLineUid, sSystemPath)
4933
    '            dStart_x = 0
4934
    '            dStart_y = 0
4935
    '            dEnd_x = 0
4936
    '            dEnd_y = 0
4937
    '        End If
4938
    '    Catch ex As Exception
4939

    
4940
    '    End Try
4941

    
4942
    '    Return sReturnUid
4943
    'End Function
4944

    
4945

    
4946
    Private Function SymbolToLine_Modeling(ByVal oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
4947
                                       ByVal sSymbolUid As String, ByVal oLMSymbol As LMSymbol) As String
4948

    
4949

    
4950
        Dim oDatasource As Object = _Placement.PIDDataSource
4951
        Dim oPipeRun As LMPipeRun = Nothing
4952
        Dim objItem As LMAItem
4953
        Dim objConnector As LMConnector
4954
        Dim objInputs As PlaceRunInputs
4955
        objInputs = New PlaceRunInputs
4956

    
4957

    
4958
        Dim sPipeUid As String = ""
4959
        Dim iConnType As Integer = 0
4960
        Dim sStartpoint As String = ""
4961
        Dim sEndpoint As String = ""
4962
        Dim dOriginalStart_x As Double = 0.0
4963
        Dim dOriginalStart_y As Double = 0.0
4964
        Dim dOriginalEnd_x As Double = 0.0
4965
        Dim dOriginalEnd_y As Double = 0.0
4966
        Dim dStart_x As Double = 0.0
4967
        Dim dStart_y As Double = 0.0
4968
        Dim dEnd_x As Double = 0.0
4969
        Dim dEnd_y As Double = 0.0
4970

    
4971
        Dim sReturnUid As String = ""
4972
        Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sSymbolUid + "' And " &
4973
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
4974
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
4975
        If oPipeRow.Length = 0 Then
4976
            oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sSymbolUid + "' And " &
4977
                                     "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
4978
                                    _XML_SYMBOL_Check & "] = 'TRUE'")
4979
        Else
4980
            sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4981
            iConnType = 1
4982
        End If
4983

    
4984
        If oPipeRow.Length = 1 Then
4985
            If sPipeUid = "" Then
4986
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4987
                iConnType = 2
4988
            End If
4989
            sReturnUid = oPipeRow(0)(_XML_LINE_UID).ToString()
4990
            sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
4991
            sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
4992
            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
4993
            dStart_x = dOriginalStart_x
4994
            dStart_y = dOriginalStart_y
4995
            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
4996
            dEnd_x = dOriginalEnd_x
4997
            dEnd_y = dOriginalEnd_y
4998
            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
4999
            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5000
            'OPC Connection Point가져와서 연결(2018-07-12)
5001
            If iConnType = 1 Then
5002
                FindNearPoint(oLMSymbol, dStart_x, dStart_y)
5003
                objInputs.AddSymbolTarget(oLMSymbol, dStart_x, dStart_y)
5004
                objInputs.AddPoint(dEnd_x, dEnd_y)
5005
            Else
5006
                FindNearPoint(oLMSymbol, dEnd_x, dEnd_y)
5007
                objInputs.AddSymbolTarget(oLMSymbol, dEnd_x, dEnd_y)
5008
                objInputs.AddPoint(dStart_x, dStart_y)
5009
            End If
5010
            oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5011

    
5012
            Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
5013
            Dim sSystemPath As String = GetPipeType(sType)
5014

    
5015

    
5016

    
5017

    
5018
            objItem = _Placement.PIDCreateItem(sSystemPath)
5019
            objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5020
            oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5021
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5022
            If oAttributeRow.Length > 0 Then
5023
                For Each oAttribute In oAttributeRow
5024
                    Try
5025
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5026
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5027
                        If sPIDValue.Contains("'") Then
5028
                            sPIDValue = sPIDValue.Replace("'", """")
5029
                        End If
5030
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5031
                        oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5032
                    Catch ex As Exception
5033
                    End Try
5034
                Next
5035
                oPipeRun.Commit()
5036
            End If
5037
        End If
5038
        Return sReturnUid
5039
    End Function
5040

    
5041
    Private Function LineToSymbol_Modeling(ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String,
5042
                                       ByVal sLineUid As String, ByVal oLMConnector As LMConnector, ByRef oLMSymbol As LMSymbol) As String
5043

    
5044

    
5045
        Dim oDatasource As Object = _Placement.PIDDataSource
5046
        Dim objItem As LMAItem
5047
        Dim objConnector As LMConnector
5048
        Dim objInputs As PlaceRunInputs
5049
        objInputs = New PlaceRunInputs
5050

    
5051

    
5052
        Dim sSymbolUid As String = ""
5053
        Dim iConnType As Integer = 0
5054
        Dim dOriginalPoint_x As Double = 0.0
5055
        Dim dORiginalPoint_y As Double = 0.0
5056
        Dim dX As Double = 0.0
5057
        Dim dY As Double = 0.0
5058
        Dim sReturnUid As String = ""
5059
        Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn1_Uid & " = '" + sLineUid + "' And " &
5060
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5061
                                                                                  _XML_SYMBOL_Check & "] = 'TRUE'")
5062
        If oSymbolRow.Length = 0 Then
5063
            oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5064
                                                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5065
                                                                                 _XML_SYMBOL_Check & "] = 'TRUE'")
5066
            If oSymbolRow.Length = 0 Then
5067
                oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5068
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5069
                                                                          _XML_SYMBOL_Check & "] = 'TRUE'")
5070
                If oSymbolRow.Length = 0 Then
5071
                    oSymbolRow = oSymbol_Dt.Select(_XML_SYMBOL_Conn2_Uid & " = '" + sLineUid + "' And " &
5072
                                                   "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' " &
5073
                                                            _XML_SYMBOL_Check & "] = 'TRUE'")
5074
                    If oSymbolRow.Length = 0 Then
5075

    
5076
                    Else
5077
                        sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5078
                        iConnType = 4
5079
                    End If
5080
                Else
5081
                    sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5082
                    iConnType = 3
5083
                End If
5084
            Else
5085
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5086
                iConnType = 2
5087
            End If
5088

    
5089
        Else
5090
            sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5091
            iConnType = 1
5092
        End If
5093

    
5094
        If oSymbolRow.Length = 1 Then
5095
            If sSymbolUid = "" Then
5096
                sSymbolUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5097
                iConnType = 2
5098
            End If
5099
            sReturnUid = oSymbolRow(0)(_XML_SYMBOL_UID).ToString()
5100
            Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
5101
            ConvertPointBystring(sOriginalPoint, dOriginalPoint_x, dORiginalPoint_y)
5102
            dX = dOriginalPoint_x
5103
            dY = dORiginalPoint_y
5104
            ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5105
            'OPC Connection Point가져와서 연결(2018-07-12)
5106

    
5107
            oSymbolRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5108

    
5109
            Dim sType As String = oSymbolRow(0)(_XML_LINE_TYPE).ToString()
5110
            Dim sSystemPath As String = GetPipeType(sType)
5111

    
5112
            oLMSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, ExistingItem:=oLMConnector.AsLMAItem,
5113
          TargetItem:=oLMSymbol.AsLMAItem)
5114

    
5115
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5116
            If oAttributeRow.Length > 0 Then
5117
                For Each oAttribute In oAttributeRow
5118
                    Try
5119
                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5120
                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5121
                        If sPIDValue.Contains("'") Then
5122
                            sPIDValue = sPIDValue.Replace("'", """")
5123
                        End If
5124
                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5125
                        oLMSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5126
                    Catch ex As Exception
5127
                    End Try
5128
                Next
5129
            End If
5130
        End If
5131
        Return sReturnUid
5132
    End Function
5133

    
5134

    
5135
    Private Sub OPCTOLineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal oOPCSymbol As LMSymbol,
5136
                            ByVal sOPCUid As String, ByVal sLineNoUid As String)
5137
        Try
5138
            Dim oDatasource As Object = _Placement.PIDDataSource
5139
            Dim objItem As LMAItem
5140
            Dim objConnector As LMConnector
5141
            Dim objInputs As PlaceRunInputs
5142
            objInputs = New PlaceRunInputs
5143
            Dim dOriginalStart_x As Double = 0.0
5144
            Dim dOriginalStart_y As Double = 0.0
5145
            Dim dOriginalEnd_x As Double = 0.0
5146
            Dim dOriginalEnd_y As Double = 0.0
5147
            Dim dStart_x As Double = 0.0
5148
            Dim dStart_y As Double = 0.0
5149
            Dim dEnd_x As Double = 0.0
5150
            Dim dEnd_y As Double = 0.0
5151

    
5152
            Dim oPipeRun As LMPipeRun = Nothing
5153
            Dim sStartpoint As String = ""
5154
            Dim sEndpoint As String = ""
5155
            Dim iConnType As Integer = 0
5156
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_Conn1_Uid & " = '" + sOPCUid + "' And [" &
5157
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5158
            Dim sPipeUid As String = ""
5159
            If oPipeRow.Length = 0 Then
5160
                oPipeRow = oLine_Dt.Select(_XML_LINE_Conn2_Uid & " = '" + sOPCUid + "' And [" &
5161
                        _XML_SYMBOL_Check & "] = 'TRUE'")
5162
            Else
5163
                sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
5164
                iConnType = 1
5165
            End If
5166
            Dim oAddUid_List As New List(Of String)
5167
            If oPipeRow.Length = 1 Then
5168
                If sPipeUid = "" Then
5169
                    sPipeUid = oPipeRow(0)(_XML_LINE_UID).ToString()
5170
                    iConnType = 2
5171
                End If
5172
                oAddUid_List.Add(sPipeUid)
5173
                sStartpoint = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5174
                sEndpoint = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5175
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5176
                dStart_x = dOriginalStart_x
5177
                dStart_y = dOriginalStart_y
5178
                ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5179
                dEnd_x = dOriginalEnd_x
5180
                dEnd_y = dOriginalEnd_y
5181
                ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5182
                ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5183

    
5184
                'OPC Connection Point가져와서 연결(2018-07-12)
5185
                If iConnType = 1 Then
5186
                    FindNearPoint(oOPCSymbol, dStart_x, dStart_y)
5187
                    objInputs.AddSymbolTarget(oOPCSymbol, dStart_x, dStart_y)
5188
                    objInputs.AddPoint(dEnd_x, dEnd_y)
5189
                Else
5190
                    FindNearPoint(oOPCSymbol, dEnd_x, dEnd_y)
5191
                    objInputs.AddSymbolTarget(oOPCSymbol, dEnd_x, dEnd_y)
5192
                    objInputs.AddPoint(dStart_x, dStart_y)
5193
                End If
5194
                oPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5195

    
5196
                While True
5197
                    '    objInputs.Clear()
5198
                    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
5199
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5200
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5201
                    If oAddPipeRow.Length = 0 Then
5202
                        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
5203
                                                                 "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5204
                                                                                       _XML_SYMBOL_Check & "] = 'TRUE'")
5205
                        sPipeUid = ""
5206
                    Else
5207
                        iConnType = 1
5208
                        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5209
                    End If
5210
                    If oAddPipeRow.Length = 1 Then
5211
                        If sPipeUid = "" Then
5212
                            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5213
                            iConnType = 2
5214
                        End If
5215
                        oAddUid_List.Add(sPipeUid)
5216
                        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5217
                        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5218
                        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5219
                        dStart_x = dOriginalStart_x
5220
                        dStart_y = dOriginalStart_y
5221
                        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5222
                        dEnd_x = dOriginalEnd_x
5223
                        dEnd_y = dOriginalEnd_y
5224
                        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5225
                        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5226
                        If iConnType = 1 Then
5227
                            objInputs.AddPoint(dEnd_x, dEnd_y)
5228
                            ' objInputs.AddPoint(dStart_x, dStart_y)
5229
                        Else
5230
                            'objInputs.AddConnectorTarget(objConnector, dStart_x, dStart_y)
5231
                            '  objInputs.AddPoint(dStart_x, dStart_y)
5232
                            '  objInputs.AddPoint(dEnd_x, dEnd_y)
5233
                            objInputs.AddPoint(dStart_x, dStart_y)
5234
                        End If
5235

    
5236
                        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5237
                    Else
5238
                        Exit While
5239
                    End If
5240

    
5241
                End While
5242
                Dim sType As String = oPipeRow(0)(_XML_LINE_TYPE).ToString()
5243
                Dim sSystemPath As String = GetPipeType(sType)
5244

    
5245
                objItem = _Placement.PIDCreateItem(sSystemPath)
5246
                objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5247
                For i = 0 To oAddUid_List.Count - 1
5248
                    Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
5249
                    If oUpdateRow.Length = 1 Then
5250
                        oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
5251
                        oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
5252
                    End If
5253
                Next
5254

    
5255

    
5256
                oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5257
                Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5258
                If oAttributeRow.Length > 0 Then
5259
                    For Each oAttribute In oAttributeRow
5260
                        Try
5261
                            Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5262
                            Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5263
                            If sPIDValue.Contains("'") Then
5264
                                sPIDValue = sPIDValue.Replace("'", """")
5265
                            End If
5266
                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5267
                            oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5268
                        Catch ex As Exception
5269
                        End Try
5270
                    Next
5271
                    oPipeRun.Commit()
5272
                End If
5273

    
5274
            End If
5275

    
5276
        Catch ex As Exception
5277
        End Try
5278
    End Sub
5279

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

    
5282
        For Each sUid In sUidList
5283
            If sUid = sAddUid Then
5284
                Return False
5285
            End If
5286
        Next
5287
        Return True
5288
    End Function
5289

    
5290
    Private Sub LineRouting(ByRef oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable, ByVal sLineNoUid As String, ByVal sLineNoText As String)
5291
        Try
5292
            Dim oDatasource As Object = _Placement.PIDDataSource
5293
            Dim objItem As LMAItem
5294
            Dim objConnector As LMConnector
5295
            Dim objInputs As PlaceRunInputs
5296
            objInputs = New PlaceRunInputs
5297
            Dim dOriginalStart_x As Double = 0.0
5298
            Dim dOriginalStart_y As Double = 0.0
5299
            Dim dOriginalEnd_x As Double = 0.0
5300
            Dim dOriginalEnd_y As Double = 0.0
5301
            Dim dStart_x As Double = 0.0
5302
            Dim dStart_y As Double = 0.0
5303
            Dim dEnd_x As Double = 0.0
5304
            Dim dEnd_y As Double = 0.0
5305
            Dim oPipeRun As LMPipeRun = Nothing
5306
            Dim sStartpoint As String = ""
5307
            Dim sEndpoint As String = ""
5308
            Dim iConnType As Integer = 0
5309
            Dim pLMConnector As LMConnector = Nothing
5310
            For Each oLinerow In oLine_Dt.Rows
5311
                objInputs.Clear()
5312
                Dim sCheck As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
5313
                If sCheck = "FALSE" Then
5314
                    Dim sUid As String = oLinerow(_XML_LINE_UID).ToString()
5315
                    sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
5316
                    sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
5317
                    ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5318
                    dStart_x = dOriginalStart_x
5319
                    dStart_y = dOriginalStart_y
5320
                    ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5321
                    dEnd_x = dOriginalEnd_x
5322
                    dEnd_y = dOriginalEnd_y
5323
                    ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5324
                    ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5325

    
5326
                    objInputs.AddPoint(dStart_x, dStart_y)
5327
                    objInputs.AddPoint(dEnd_x, dEnd_y)
5328
                    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
5329
                    Dim sSystemPath As String = GetPipeType(sType)
5330
                    objItem = _Placement.PIDCreateItem(sSystemPath)
5331
                    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5332
                    SetListBoxItems(ListBox_Result, "Place Pipe.." & sUid & " (" & dOriginalStart_x & "," & dOriginalStart_y & ") - (" & dOriginalEnd_x & "," & dOriginalEnd_y & ")..." & _iPipecnt & " count ")
5333

    
5334
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Pipe : " & sUid)
5335
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
5336
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oLinerow(_XML_SYMBOL_Conn1_Uid).ToString())
5337
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oLinerow(_XML_SYMBOL_Conn2_Uid).ToString())
5338
                    'ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
5339
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "StartPoint : " & dOriginalStart_x & "," & dOriginalStart_y)
5340
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "EndPoint : " & dOriginalEnd_x & "," & dOriginalEnd_y)
5341
                    ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Pipe Count : " & _iPipecnt)
5342

    
5343
                    _iPipecnt = _iPipecnt + 1
5344
                    oLinerow(_XML_LINE_SPID) = objConnector.ModelItemID
5345
                    oLinerow(_XML_LINE_LMCONNECTOR) = objConnector
5346

    
5347
                    oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
5348
                    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5349

    
5350
                    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5351
                    If oAttributeRow.Length > 0 Then
5352
                        For Each oAttribute In oAttributeRow
5353
                            Try
5354
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5355
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5356
                                If sPIDValue.Contains("'") Then
5357
                                    sPIDValue = sPIDValue.Replace("'", """")
5358
                                End If
5359
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5360
                                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5361
                            Catch ex As Exception
5362
                            End Try
5363
                        Next
5364
                        oPipeRun.Commit()
5365
                    End If
5366
                End If
5367

    
5368

    
5369

    
5370

    
5371

    
5372
                'Dim sPipeUid As String = oLinerow(_XML_LINE_UID).ToString()
5373
                'Dim sCheckModeling As Boolean = False
5374
                'objInputs.Clear()
5375
                'Dim oAddUid_List As New List(Of String)
5376
                'Try
5377
                '    Dim oAddPipeRow() As DataRow = oLine_Dt.Select("[" & _XML_LINE_Conn1_Uid & "] = '" + sPipeUid + "' and " &
5378
                '                                            "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5379
                '                                            _XML_SYMBOL_Check & "] = 'TRUE'")
5380
                '    If oAddPipeRow.Length = 0 Then
5381
                '        oAddPipeRow = oLine_Dt.Select("[" & _XML_LINE_Conn2_Uid & "] = '" + sPipeUid + "' and " &
5382
                '                                        "[" & _XML_LINE_DRAWING_TF & "] = 'FALSE' And [" &
5383
                '                                        _XML_SYMBOL_Check & "] = 'TRUE'")
5384
                '        sPipeUid = ""
5385
                '    Else
5386
                '        iConnType = 1
5387
                '        sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5388
                '    End If
5389
                '    If oAddPipeRow.Length = 1 Then
5390
                '        sCheckModeling = True
5391
                '        If sPipeUid = "" Then
5392
                '            sPipeUid = oAddPipeRow(0)(_XML_LINE_UID).ToString()
5393
                '            iConnType = 2
5394
                '        End If
5395
                '        If AddUidList중복체크(oAddUid_List, sPipeUid) Then
5396
                '            oAddUid_List.Add(sPipeUid)
5397
                '        End If
5398
                '        sStartpoint = oAddPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
5399
                '        sEndpoint = oAddPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
5400
                '        ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5401
                '        dStart_x = dOriginalStart_x
5402
                '        dStart_y = dOriginalStart_y
5403
                '        ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5404
                '        dEnd_x = dOriginalEnd_x
5405
                '        dEnd_y = dOriginalEnd_y
5406
                '        ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5407
                '        ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5408
                '        Dim sBranchType As String = ""
5409
                '        If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
5410
                '            Try
5411
                '                If pLMConnector Is Nothing Then
5412
                '                    objInputs.AddPoint(dStart_x, dStart_y)
5413
                '                    objInputs.AddPoint(dEnd_x, dEnd_y)
5414
                '                Else
5415
                '                    If sBranchType = "1" Then
5416
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5417
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5418
                '                    ElseIf sBranchType = "2" Then
5419
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5420
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5421
                '                    ElseIf sBranchType = "3" Then
5422
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5423
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5424
                '                    ElseIf sBranchType = "4" Then
5425
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5426
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5427
                '                    End If
5428
                '                End If
5429
                '            Catch ex As Exception
5430
                '            End Try
5431
                '        Else
5432
                '            objInputs.AddPoint(dStart_x, dStart_y)
5433
                '            objInputs.AddPoint(dEnd_x, dEnd_y)
5434
                '        End If
5435
                '        oAddPipeRow(0)(_XML_LINE_DRAWING_TF) = "TRUE"
5436
                '    Else
5437
                '        Dim CheckTF As String = oLinerow(_XML_LINE_DRAWING_TF).ToString()
5438
                '        Dim CheckSelect As String = oLinerow(_XML_LINE_Check).ToString()
5439
                '        If CheckTF = "FALSE" And CheckSelect = "TRUE" Then
5440
                '            sPipeUid = oLinerow(_XML_LINE_UID).ToString()
5441
                '            oAddUid_List.Clear()
5442
                '            oAddUid_List.Add(sPipeUid)
5443
                '            sCheckModeling = True
5444
                '            sStartpoint = oLinerow(_XML_LINE_STARTPOINT).ToString()
5445
                '            sEndpoint = oLinerow(_XML_LINE_ENDPOINT).ToString()
5446
                '            ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
5447
                '            dStart_x = dOriginalStart_x
5448
                '            dStart_y = dOriginalStart_y
5449
                '            ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y)
5450
                '            dEnd_x = dOriginalEnd_x
5451
                '            dEnd_y = dOriginalEnd_y
5452
                '            ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
5453
                '            ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
5454
                '            Dim sBranchType As String = ""
5455
                '            If (CheckBranchLine(oLine_Dt, dStart_x, dStart_y, dEnd_x, dEnd_y, sBranchType, pLMConnector)) Then
5456
                '                Try
5457
                '                    If sBranchType = "1" Then
5458
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5459
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5460
                '                    ElseIf sBranchType = "2" Then
5461
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5462
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5463
                '                    ElseIf sBranchType = "3" Then
5464
                '                        objInputs.AddPoint(dEnd_x, dEnd_y)
5465
                '                        objInputs.AddConnectorTarget(pLMConnector, dStart_x, dStart_y)
5466
                '                    ElseIf sBranchType = "4" Then
5467
                '                        objInputs.AddPoint(dStart_x, dStart_y)
5468
                '                        objInputs.AddConnectorTarget(pLMConnector, dEnd_x, dEnd_y)
5469
                '                    End If
5470
                '                Catch ex As Exception
5471

    
5472
                '                End Try
5473
                '            Else
5474
                '                objInputs.AddPoint(dStart_x, dStart_y)
5475
                '                objInputs.AddPoint(dEnd_x, dEnd_y)
5476
                '            End If
5477
                '            oLinerow(_XML_LINE_DRAWING_TF) = "TRUE"
5478
                '        End If
5479
                '    End If
5480
                'Catch ex As Exception
5481
                'End Try
5482
                'If sCheckModeling Then
5483
                '    Dim sType As String = oLinerow(_XML_LINE_TYPE).ToString()
5484
                '    Dim sSystemPath As String = GetPipeType(sType)
5485
                '    objItem = _Placement.PIDCreateItem(sSystemPath)
5486
                '    objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
5487
                '    For i = 0 To oAddUid_List.Count - 1
5488
                '        Dim oUpdateRow As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" + oAddUid_List(i) + "'")
5489
                '        If oUpdateRow.Length = 1 Then
5490
                '            oUpdateRow(0)(_XML_LINE_SPID) = objConnector.ModelItemID
5491
                '            oUpdateRow(0)(_XML_LINE_LMCONNECTOR) = objConnector
5492
                '        End If
5493
                '    Next
5494

    
5495
                '    oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
5496
                '    oAddUid_List.Clear()
5497

    
5498
                '    Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
5499
                '    If oAttributeRow.Length > 0 Then
5500
                '        For Each oAttribute In oAttributeRow
5501
                '            Try
5502
                '                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5503
                '                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5504
                '                If sPIDValue.Contains("'") Then
5505
                '                    sPIDValue = sPIDValue.Replace("'", """")
5506
                '                End If
5507
                '                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5508
                '                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
5509
                '            Catch ex As Exception
5510
                '            End Try
5511
                '        Next
5512
                '        oPipeRun.Commit()
5513
                '    End If
5514

    
5515
                '    If pLMConnector IsNot Nothing Then
5516
                '        Dim sID_1 As String = pLMConnector.ModelItemID
5517
                '        Dim sID_2 As String = objConnector.ModelItemID
5518
                '        Dim objSurvivorItem As LMAItem = Nothing
5519
                '        Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(sID_1)
5520
                '        Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(sID_2)
5521
                '        _Placement.PIDJoinRuns(oPipeRun1, oPipeRun2)
5522
                '        '     oDatasource.CommitTransaction()
5523
                '        '_Placement.PIDAutoJoin(oPipeRun1.AsLMAItem, AutoJoinEndConstants.autoJoin_End, objSurvivorItem)
5524
                '        'oPipeRun1.Commit()
5525
                '        'oDatasource.CommitTransaction()
5526
                '        'objSurvivorItem = Nothing
5527
                '        '_Placement.PIDAutoJoin(oPipeRun2.AsLMAItem, AutoJoinEndConstants.autoJoin_Start, objSurvivorItem)
5528
                '        'oPipeRun2.Commit()
5529
                '        'oDatasource.CommitTransaction()
5530
                '    End If
5531
                '    sCheckModeling = False
5532
                '  End If
5533
            Next
5534
        Catch ex As Exception
5535
        End Try
5536
    End Sub
5537

    
5538

    
5539
    Private Sub SymbolModeling(ByVal CDrawing As Drawing, ByVal oLine_DT As DataTable, ByVal oSymbolRow As DataRow, ByVal oAttribute_Dt As DataTable,
5540
                               ByVal sLineNoText As String)
5541
        Try
5542

    
5543
            Dim sCheckModeling As String = oSymbolRow(_XML_SYMBOL_DRAWING_TF).ToString()
5544
            If sCheckModeling = "FALSE" Then
5545
                Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
5546
                Dim oSymbol As LMSymbol = Nothing
5547
                Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
5548
                Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
5549
                Dim oDatasource As Object = _Placement.PIDDataSource
5550
                Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
5551
                Dim dLocationX As Double = 0.0
5552
                Dim dLocationY As Double = 0.0
5553
                Dim dX As Double = 0.0
5554
                Dim dY As Double = 0.0
5555
                Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
5556
                ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5557
                dX = dLocationX
5558
                dY = dLocationY
5559
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5560

    
5561
                Dim dAngle As Double = oSymbolRow(_XML_SYMBOL_ANGLE)
5562

    
5563

    
5564
                'Dim oDatarow() As DataRow = oLine_DT.Select("[" & _XML_LINE_Conn1_Uid & "] = '" & sSymbolUid & "'")
5565
                'If oDatarow.Length = 0 Then
5566
                '    oDatarow = oLine_DT.Select("[" & _XML_LINE_Conn2_Uid & "] = '" & sSymbolUid & "'")
5567
                'End If
5568
                'Dim dFix_X As Double = 0.0
5569
                'Dim dFix_Y As Double = 0.0
5570
                'If oDatarow.Length > 0 Then
5571
                '    If dAngle <> 0 Then
5572
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
5573
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5574

    
5575
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
5576
                '        dX = dLocationX
5577
                '    Else
5578
                '        sOriginalPoint = oDatarow(0)(_XML_LINE_STARTPOINT).ToString()
5579
                '        ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5580
                '        ConvertPointByImage(dLocationX, dLocationY, _IMG_X, _IMG_Y)
5581
                '        dY = dLocationY
5582
                '    End If
5583

    
5584
                'End If
5585

    
5586

    
5587

    
5588
                oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY,, dAngle)
5589
                SetListBoxItems(ListBox_Result, "Place Fitting.." & sSymbolUid & " (" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
5590

    
5591
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Place Fitting : " & sSymbolUid)
5592
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "LineNo : " & sLineNoText)
5593
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection1 : " & oSymbolRow(_XML_SYMBOL_Conn1_Uid).ToString())
5594
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection2 : " & oSymbolRow(_XML_SYMBOL_Conn2_Uid).ToString())
5595
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection3 : " & oSymbolRow(_XML_SYMBOL_Conn3_Uid).ToString())
5596
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Connection4 : " & oSymbolRow(_XML_SYMBOL_Conn4_Uid).ToString())
5597
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Angle : " & dAngle)
5598
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "OriginalPoint : " & dLocationX & "," & dLocationY)
5599
                ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, "Fitting Count : " & _iFittingcnt)
5600

    
5601

    
5602
                _iFittingcnt = _iFittingcnt + 1
5603
                oSymbolRow(_XML_SYMBOL_DRAWING_TF) = "TRUE"
5604
                Dim oAttributeRow() As DataRow
5605
                oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
5606
                If oAttribute_Dt.Rows.Count > 0 Then
5607

    
5608
                    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
5609
                        Dim oInstrument As LMInstrument
5610
                        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
5611
                        Try
5612
                            If oAttributeRow.Length > 0 Then
5613
                                For Each oAttribute In oAttributeRow
5614
                                    Try
5615
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5616
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5617
                                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5618
                                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
5619
                                    Catch ex As Exception
5620
                                    End Try
5621
                                Next
5622
                                oInstrument.Commit()
5623
                            End If
5624
                        Catch ex As Exception
5625
                        End Try
5626
                    Else
5627
                        Try
5628
                            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
5629
                                For Each oAttribute In oAttributeRow
5630
                                    Try
5631
                                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5632
                                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5633

    
5634
                                        If sPIDAttribute = "SIZE" Then
5635

    
5636
                                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
5637
                                            If sPIDValue.Contains("x") Then
5638
                                                Dim sSplitSize() As String = sPIDValue.Split("x")
5639
                                                If sSplitSize.Count > 1 Then
5640
                                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
5641
                                                    Dim oConnector_1 As LMConnector = Nothing
5642
                                                    Dim oConnector_2 As LMConnector = Nothing
5643
                                                    If oSymbol IsNot Nothing Then
5644
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5645
                                                            For Each Tconnector In oSymbol.Connect1Connectors
5646
                                                                If Tconnector.ItemStatus = "Active" Then
5647
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5648
                                                                        oConnector_1 = Tconnector
5649
                                                                    End If
5650
                                                                End If
5651
                                                            Next
5652
                                                        End If
5653
                                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5654
                                                            For Each Tconnector In oSymbol.Connect1Connectors
5655
                                                                If Tconnector.ItemStatus = "Active" Then
5656
                                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5657
                                                                        oConnector_2 = Tconnector
5658
                                                                    End If
5659
                                                                End If
5660
                                                            Next
5661
                                                        End If
5662
                                                    End If
5663
                                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
5664
                                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
5665
                                                    If dAngle = 3.14 Then
5666
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
5667
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
5668
                                                    Else
5669
                                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
5670
                                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
5671
                                                    End If
5672

    
5673

    
5674
                                                End If
5675

    
5676
                                            Else
5677
                                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5678
                                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5679
                                            End If
5680
                                        Else
5681
                                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5682
                                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5683
                                        End If
5684

    
5685
                                    Catch ex As Exception
5686
                                    End Try
5687
                                Next
5688
                                oSymbol.Commit()
5689
                            End If
5690
                        Catch ex As Exception
5691
                        End Try
5692
                    End If
5693
                End If
5694

    
5695

    
5696

    
5697
            End If
5698

    
5699

    
5700

    
5701
            'Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
5702
            'Dim sConnTypeNo As String = ""
5703
            '' Line과 연결되어있는 Symbol인지 확인
5704
            'Dim oLine_Dt As DataTable = GetPipeFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
5705
            ''Symbol과 연결되어 있는 Symbol인지 확인
5706
            'Dim oSymbol_Dt As DataTable = GetSymbolFromConnection(CDrawing, sSymbolUid, sConnTypeNo)
5707
            'Dim oSymbol As LMSymbol = Nothing
5708
            'Dim sSPID As String = oSymbolRow(_XML_SYMBOL_SPID).ToString()
5709
            'Dim sSystemPath As String = oSymbolRow(_XML_SYMBOL_SYSTEMPATH).ToString()
5710
            'Dim oDatasource As Object = _Placement.PIDDataSource
5711
            'Dim sSymbolCompType As String = oSymbolRow(_XML_SYMBOL_TYPE).ToString()
5712

    
5713
            'Dim dAngle As Double = 0.0
5714
            'If IsNumeric(oSymbolRow(_XML_SYMBOL_ANGLE).ToString()) Then
5715
            '    dAngle = Double.Parse(oSymbolRow(_XML_SYMBOL_ANGLE).ToString())
5716
            'End If
5717

    
5718
            'Dim dLocationX As Double = 0.0
5719
            'Dim dLocationY As Double = 0.0
5720
            'Dim dX As Double = 0.0
5721
            'Dim dY As Double = 0.0
5722
            'Dim sOriginalPoint As String = oSymbolRow(_XML_SYMBOL_ORIGINALPOINT).ToString()
5723
            'ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY)
5724
            'dX = dLocationX
5725
            'dY = dLocationY
5726
            'ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
5727
            'Dim bCheckModeling As Boolean = False
5728

    
5729
            'If oLine_Dt.Rows.Count > 0 Then
5730

    
5731
            '    If sSPID <> "" Then
5732
            '        Dim dX1 As Double = 0
5733
            '        Dim dX2 As Double = 0
5734
            '        Dim dY1 As Double = 0
5735
            '        Dim dY2 As Double = 0
5736
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
5737
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
5738
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
5739

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

    
5750
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
5751
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
5752
            '                dModeling_X = dX2
5753
            '                dModeling_Y = dY2
5754
            '            End If
5755
            '        End If
5756

    
5757

    
5758

    
5759
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
5760
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
5761
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
5762
            '            bCheckModeling = True
5763
            '        End If
5764

    
5765

    
5766
            '    End If
5767
            'End If
5768
            'If oSymbol_Dt.Rows.Count > 0 Then
5769
            '    If sSPID <> "" Then
5770
            '        Dim dX1 As Double = 0
5771
            '        Dim dX2 As Double = 0
5772
            '        Dim dX3 As Double = 0
5773
            '        Dim dX4 As Double = 0
5774
            '        Dim dY1 As Double = 0
5775
            '        Dim dY2 As Double = 0
5776
            '        Dim dY3 As Double = 0
5777
            '        Dim dY4 As Double = 0
5778
            '        Dim oLMSymbol As LMSymbol = oDatasource.GetSymbol(sSPID)
5779
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 1, dX1, dY1)
5780
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 2, dX2, dY2)
5781
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 3, dX3, dY3)
5782
            '        _Placement.PIDConnectPointLocation(oLMSymbol, 4, dX4, dY4)
5783

    
5784
            '        Dim dCalcPoint As Double = -1
5785
            '        Dim dModeling_X As Double = 0
5786
            '        Dim dModeling_Y As Double = 0
5787
            '        If dX1 <> 0 And dY1 <> 0 Then
5788
            '            dCalcPoint = Math.Abs(dX1 - dX) + Math.Abs(dY1 - dY)
5789
            '            dModeling_X = dX1
5790
            '            dModeling_Y = dY1
5791
            '        End If
5792
            '        If dX2 <> 0 And dY2 <> 0 Then
5793

    
5794
            '            If (Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY) > dCalcPoint) Then
5795
            '                dCalcPoint = Math.Abs(dX2 - dX) + Math.Abs(dY2 - dY)
5796
            '                dModeling_X = dX2
5797
            '                dModeling_Y = dY2
5798
            '            End If
5799
            '        End If
5800
            '        If dX3 <> 0 And dY3 <> 0 Then
5801
            '            If (Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY) > dCalcPoint) Then
5802
            '                dCalcPoint = Math.Abs(dX3 - dX) + Math.Abs(dY3 - dY)
5803
            '                dModeling_X = dX3
5804
            '                dModeling_Y = dY3
5805
            '            End If
5806
            '        End If
5807
            '        If dX4 <> 0 And dY4 <> 0 Then
5808
            '            If (Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY) > dCalcPoint) Then
5809
            '                dCalcPoint = Math.Abs(dX4 - dX) + Math.Abs(dY4 - dY)
5810
            '                dModeling_X = dX4
5811
            '                dModeling_Y = dY4
5812
            '            End If
5813
            '        End If
5814
            '        If dModeling_X <> 0 And dModeling_Y <> 0 Then
5815
            '            oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dModeling_X, dModeling_Y,, dAngle, ExistingItem:=oLMSymbol.AsLMAItem,
5816
            '                TargetItem:=oLMSymbol.AsLMRepresentation)
5817
            '            bCheckModeling = True
5818
            '        End If
5819

    
5820

    
5821
            '    End If
5822

    
5823
            'End If
5824

    
5825
            'If (oLine_Dt.Rows.Count = 0 And oSymbol_Dt.Rows.Count = 0) Or bCheckModeling = False Then
5826
            '    oSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
5827
            '    SetListBoxItems(ListBox_Result, "Place Fittings..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
5828
            '    _iFittingcnt = _iFittingcnt + 1
5829
            'End If
5830
            'Dim oAttributeRow() As DataRow
5831
            'oAttributeRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sSymbolUid + "'")
5832
            'If oAttribute_Dt.Rows.Count > 0 Then
5833

    
5834
            '    If sSymbolCompType.ToUpper() = _SYMBOL_INSTUMENT.ToUpper() Then
5835
            '        Dim oInstrument As LMInstrument
5836
            '        oInstrument = oDatasource.GetInstrument(oSymbol.ModelItemID)
5837
            '        Try
5838
            '            If oAttributeRow.Length > 0 Then
5839
            '                For Each oAttribute In oAttributeRow
5840
            '                    Try
5841
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5842
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5843
            '                        Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5844
            '                        oInstrument.Attributes(sSPPIDAttribute).Value = sPIDValue
5845
            '                    Catch ex As Exception
5846
            '                    End Try
5847
            '                Next
5848
            '                oInstrument.Commit()
5849
            '            End If
5850
            '        Catch ex As Exception
5851
            '        End Try
5852
            '    Else
5853
            '        Try
5854
            '            If oAttributeRow.Length > 0 And oSymbol IsNot Nothing Then
5855
            '                For Each oAttribute In oAttributeRow
5856
            '                    Try
5857
            '                        Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
5858
            '                        Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
5859

    
5860
            '                        If sPIDAttribute = "SIZE" Then
5861

    
5862
            '                            'Nominal diamter1,2속성이름뭔지 찾아봐야됨 (2018-07-20)
5863
            '                            If sPIDValue.Contains("x") Then
5864
            '                                Dim sSplitSize() As String = sPIDValue.Split("x")
5865
            '                                If sSplitSize.Count > 1 Then
5866
            '                                    'Connection Point와 연결되어 있는 라인을 가져와서 라인프로퍼티를 변경
5867
            '                                    Dim oConnector_1 As LMConnector = Nothing
5868
            '                                    Dim oConnector_2 As LMConnector = Nothing
5869
            '                                    If oSymbol IsNot Nothing Then
5870
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5871
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
5872
            '                                                If Tconnector.ItemStatus = "Active" Then
5873
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5874
            '                                                        oConnector_1 = Tconnector
5875
            '                                                    End If
5876
            '                                                End If
5877
            '                                            Next
5878
            '                                        End If
5879
            '                                        If oSymbol.Connect1Connectors.Count >= 1 Then
5880
            '                                            For Each Tconnector In oSymbol.Connect1Connectors
5881
            '                                                If Tconnector.ItemStatus = "Active" Then
5882
            '                                                    If Tconnector.ModelItemObject.ItemTypeName = "PipeRun" Then
5883
            '                                                        oConnector_2 = Tconnector
5884
            '                                                    End If
5885
            '                                                End If
5886
            '                                            Next
5887
            '                                        End If
5888
            '                                    End If
5889
            '                                    Dim oPipeRun1 As LMPipeRun = oDatasource.GetPipeRun(oConnector_1.ModelItemID)
5890
            '                                    Dim oPipeRun2 As LMPipeRun = oDatasource.GetPipeRun(oConnector_2.ModelItemID)
5891
            '                                    If dAngle = 3.14 Then
5892
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(1)
5893
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(0)
5894
            '                                    Else
5895
            '                                        oPipeRun1.Attributes("NominalDiameter").Value = sSplitSize(0)
5896
            '                                        oPipeRun2.Attributes("NominalDiameter").Value = sSplitSize(1)
5897
            '                                    End If
5898

    
5899

    
5900
            '                                End If
5901

    
5902
            '                            Else
5903
            '                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5904
            '                                oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5905
            '                            End If
5906
            '                        Else
5907
            '                            Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
5908
            '                            oSymbol.Attributes(sSPPIDAttribute).Value = sPIDValue
5909
            '                        End If
5910

    
5911
            '                    Catch ex As Exception
5912
            '                    End Try
5913
            '                Next
5914
            '                oSymbol.Commit()
5915
            '            End If
5916
            '        Catch ex As Exception
5917
            '        End Try
5918
            '    End If
5919
            'End If
5920
        Catch ex As Exception
5921
        End Try
5922
    End Sub
5923

    
5924

    
5925

    
5926
    Private Function AutoModeling() As Boolean
5927
        Try
5928
            '_AllLine_DT = Line_Dt()
5929
            '_AllSymbol_DT = Symbol_Dt()
5930
            _ModelingLine_Dt = Line_Dt()
5931
            _ModelingSymbol_Dt = Symbol_Dt()
5932
            _CompleteConvert = False
5933
            Label_Progress.Text = "0%"
5934
            SetListBoxItems(ListBox_Result, " Auto converting 시작....")
5935
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 시작....")
5936
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
5937
            _Log_File = "AutoConverting_" + DateTime.Now.ToString("yyyyMMdd") + "_" + DateTime.Now.ToString("HHmmss")
5938
            _allItem = GetAllCheckNodeCount()
5939
            _Itemcnt = 0
5940
            '1.Equipment
5941
            '2.Piping OPC
5942
            '3.OPC 시작되는 Line
5943
            InitAutoRouting()
5944
            EquipmentModeling(oDwg_Dt)
5945
            PipingModeling()
5946

    
5947
            '   PipeLine_Fitting_Modeling()
5948

    
5949
            SetProgressbar(ProgressBar_Status, 100)
5950
            Label_Progress.Text = "100%"
5951
            SetListBoxItems(ListBox_Result, " Auto converting 완료")
5952
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 완료")
5953
            _CompleteConvert = True
5954
            Return True
5955
        Catch ex As Exception
5956
            Return False
5957
        End Try
5958
    End Function
5959

    
5960

    
5961

    
5962
    Private Sub ThreadConvert()
5963
        If _DrawingsList IsNot Nothing Then
5964
            If _DrawingsList.Count > 0 Then
5965
                'TestBranchLine()
5966
                AutoModeling()
5967
            End If
5968
        End If
5969
    End Sub
5970

    
5971
    Private Sub ThreadOPCRemove()
5972
        While _CompleteConvert = False
5973
            Dim oFindOPC As New FindOpc
5974
            oFindOPC.RemoveOPCDlg()
5975
        End While
5976

    
5977
    End Sub
5978

    
5979

    
5980
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
5981
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
5982
        Dim oPath As String = ""
5983
        If oRows.Length > 0 Then
5984
            oPath = oRows(0).Item("Path").ToString()
5985
        End If
5986
        Return oPath
5987
    End Function
5988

    
5989
    Private Sub LoadXmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadXmlToolStripMenuItem.Click
5990

    
5991
        If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then
5992
            LoadDB()
5993
            LoadXmlItem(FolderBrowserDialog1.SelectedPath)
5994
        End If
5995
    End Sub
5996
    Private Sub LoadXmlItem(ByVal sFolderPath As String)
5997
        _DrawingsList = New List(Of Drawing)
5998
        Dim sfileEntries As String() = Directory.GetFiles(sFolderPath)
5999
        If Tree_Result.Nodes.Count > 0 Then
6000
            Tree_Result.Nodes(0).Nodes.Clear()
6001
            For Each sfileName In sfileEntries
6002
                Dim sExtension As String = Path.GetExtension(sfileName)
6003
                If sExtension = ".xml" Then
6004
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(sfileName)
6005
                    Dim sDwgPath As String = sfileName
6006
                    Dim oNode As TreeNode = Tree_Result.Nodes(0).Nodes.Add(sDwgPath, sDwgName, 15)
6007
                    Dim oDwg As Drawing = AddSymbolItem(sDwgPath, oNode)
6008

    
6009
                    _DrawingsList.Add(oDwg)
6010
                End If
6011
            Next
6012
            Tree_Result.Nodes(0).Expand()
6013
        End If
6014
    End Sub
6015

    
6016
    Private Sub GenerateRelation(ByRef oDwg_Ds As Drawing)
6017
        Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
6018
        Dim oEqpLists As List(Of Eqp_no) = oDwg_Ds.Eqp_nos
6019
        Dim oTrimLineLists As List(Of Line_no) = oDwg_Ds.TrimLine_nos
6020
        Dim oRelation As New GenerateRelation()
6021
        For Each oLinelist In oLineLists
6022
            oRelation.CalcLineConnectionItem_Equal(oLinelist.Dt_Line, oLineLists)
6023
            oRelation.CalcLineConnectionItem_NonEqual(oLinelist.Dt_Line, oLineLists)
6024
            oRelation.CalcSymbolConnectionItem_Equal(oLinelist.Dt_Symbol, oLineLists)
6025
            oRelation.CalcSymbolConnectionItem_NonEqual(oLinelist.Dt_Symbol, oLineLists)
6026
        Next
6027
    End Sub
6028

    
6029

    
6030
    ''' <summary>
6031
    '''  XML Tree 구조 생성 
6032
    ''' </summary>
6033
    ''' <param name="sDwgPath"></param>
6034
    Private Function AddSymbolItem(ByVal sDwgPath As String, ByVal oParentNode As TreeNode) As Drawing
6035
        Dim oDwg_Ds As Drawing = LoadSymbolInXml(sDwgPath)
6036

    
6037

    
6038

    
6039
        'SetConnectionInfo()
6040
        '  GenerateRelation(oDwg_Ds)
6041

    
6042
        If oDwg_Ds IsNot Nothing Then
6043
            Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
6044

    
6045
            Dim oEqpLists As List(Of Eqp_no) = oDwg_Ds.Eqp_nos
6046

    
6047
            Dim oTrimLineLists As List(Of Line_no) = oDwg_Ds.TrimLine_nos
6048

    
6049
            Dim oPipe As Boolean = False
6050
            Dim oFitting As Boolean = False
6051
            'PipeLine 구분
6052

    
6053
            For Each oLinelist In oLineLists
6054
                Dim sLineNoUid As String = oLinelist.Uid
6055
                Dim sLineNo As String = oLinelist.Text
6056
                Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
6057
                For Each oLineRow In oLinelist.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

    
6062

    
6063
                    If bValidLine = False Then
6064
                        oLineNoNode.ForeColor = Color.Red
6065
                        oPipeNode.ForeColor = Color.Red
6066
                    Else
6067

    
6068
                        Dim bLineType As String = oLineRow(_XML_LINE_TYPE)
6069
                        Dim bLineColor As Color = GetPipeColor(bLineType)
6070
                        If bLineType <> "Primary" Then
6071
                            '      MessageBox.Show("")
6072
                        End If
6073
                        oPipeNode.ForeColor = bLineColor
6074
                    End If
6075
                    oPipeNode.Tag = sLineNoUid
6076
                Next
6077
                For Each oSymbolRow In oLinelist.Dt_Symbol.Rows
6078
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6079
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6080
                    Dim oSymbolNode As TreeNode = oLineNoNode.Nodes.Add(sSymbolUid, sSymbolName)
6081

    
6082
                    oSymbolNode.Tag = sLineNoUid
6083
                Next
6084
            Next
6085

    
6086
            For Each oEqplist In oEqpLists
6087
                Dim sEqpUid As String = oEqplist.Uid
6088
                Dim sEqpNo As String = "EQUIPMENT"
6089
                Dim oEqpNode As TreeNode = oParentNode.Nodes.Add(sEqpUid, sEqpNo)
6090

    
6091

    
6092
                For Each oSymbolRow In oEqplist.Dt_Equipment.Rows
6093
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6094
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6095
                    Dim oSymbolNode As TreeNode = oEqpNode.Nodes.Add(sSymbolUid, sSymbolName)
6096
                    oSymbolNode.Tag = sEqpUid
6097
                Next
6098
            Next
6099
            Dim sTrimLine As String = "TrimLineNos"
6100
            Dim iTrimLinecnt As Integer = 1
6101
            For Each oTrimLinelist In oTrimLineLists
6102
                Dim sLineNoUid As String = oTrimLinelist.Uid
6103
                Dim sLineNo As String = sTrimLine & "_" & iTrimLinecnt
6104
                Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
6105
                For Each oLineRow In oTrimLinelist.Dt_Line.Rows
6106
                    Dim sLineUid As String = oLineRow(_XML_LINE_UID)
6107
                    Dim oPipeNode As TreeNode = oLineNoNode.Nodes.Add(sLineUid, "Pipe")
6108
                    Dim bValidLine As Boolean = oLineRow(_XML_LINE_ValieLine)
6109
                    If bValidLine = False Then
6110
                        oLineNoNode.ForeColor = Color.Red
6111
                        oPipeNode.ForeColor = Color.Red
6112
                    Else
6113
                        Dim bLineType As String = oLineRow(_XML_LINE_TYPE)
6114
                        If bLineType <> "Primary" Then
6115
                            '     MessageBox.Show("")
6116
                        End If
6117
                        Dim bLineColor As Color = GetPipeColor(bLineType)
6118
                        oPipeNode.ForeColor = bLineColor
6119
                    End If
6120
                    oPipeNode.Tag = sLineNoUid
6121
                Next
6122
                For Each oSymbolRow In oTrimLinelist.Dt_Symbol.Rows
6123
                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
6124
                    Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
6125
                    Dim oSymbolNode As TreeNode = oLineNoNode.Nodes.Add(sSymbolUid, sSymbolName)
6126
                    oSymbolNode.Tag = sLineNoUid
6127
                Next
6128
                iTrimLinecnt = iTrimLinecnt + 1
6129
            Next
6130

    
6131
        End If
6132

    
6133
        Return oDwg_Ds
6134
    End Function
6135
    Private Sub Tree_Result_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterCheck
6136
        If e.Node.Checked = True Then
6137
            For Each oNode As TreeNode In e.Node.Nodes
6138
                oNode.Checked = True
6139
            Next
6140
        Else
6141
            For Each oNode As TreeNode In e.Node.Nodes
6142
                oNode.Checked = False
6143
            Next
6144
        End If
6145
    End Sub
6146

    
6147
    Private Sub Btn_Setting_Click(sender As Object, e As EventArgs) Handles Btn_Setting.Click
6148
        Dim oSettings As Settings = New Settings()
6149
        oSettings.ShowDialog()
6150
    End Sub
6151

    
6152

    
6153
    Private Sub TestBranchLine()
6154
        Dim objPlacement As Placement
6155
        objPlacement = New Placement
6156
        Dim PipeRunLocation As String
6157
        Dim objItem As LMAItem
6158
        Dim objConnector As LMConnector
6159
        Dim objInputs As PlaceRunInputs
6160
        Dim objSymbol As LMSymbol
6161
        Dim ValveLocation As String
6162
        PipeRunLocation = "\Piping\Routing\Process Lines\Primary Piping.sym"
6163
        objInputs = New PlaceRunInputs
6164
        objInputs.AddPoint(0.1, 0.1)
6165
        objInputs.AddPoint(0.2, 0.1)
6166
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
6167
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
6168
        ValveLocation = "\Piping\Valves\2 Way Common\Ball Valve.sym"
6169
        objSymbol = objPlacement.PIDPlaceSymbol(ValveLocation, 0.15, 0.3, , 1.57)
6170
        objInputs = New PlaceRunInputs
6171
        objInputs.AddConnectorTarget(objConnector, 0.15, 0.1)
6172
        '   objInputs.AddConnectorTarget(objConnector, 0.12, 0.1)
6173
        objInputs.AddPoint(0.15, 0.15)
6174
        objInputs.AddPoint(0.12, 0.15)
6175
        objInputs.AddPoint(0.12, 0.2)
6176
        objInputs.AddPoint(0.15, 0.2)
6177
        objInputs.AddSymbolTarget(objSymbol, 0.15, 0.3)
6178
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
6179
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
6180

    
6181
        objInputs = New PlaceRunInputs
6182
        objInputs.AddConnectorTarget(objConnector, 0.17, 0.1)
6183
        objInputs.AddPoint(0.17, 0.15)
6184
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
6185
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
6186

    
6187
        objInputs = New PlaceRunInputs
6188
        objInputs.AddConnectorTarget(objConnector, 0.19, 0.1)
6189
        objInputs.AddPoint(0.19, 0.15)
6190
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
6191
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
6192

    
6193
        objInputs = New PlaceRunInputs
6194
        objInputs.AddConnectorTarget(objConnector, 0.12, 0.1)
6195
        objInputs.AddPoint(0.12, 0.15)
6196
        objItem = objPlacement.PIDCreateItem(PipeRunLocation)
6197
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
6198
    End Sub
6199

    
6200
    Private Sub Btn_TestNozzle_Click(sender As Object, e As EventArgs) Handles Btn_TestNozzle.Click
6201

    
6202
        Dim sVessel_ID As String = "841D5E640AE5421B9A017DDC2E87FF11"
6203
        Dim objVessel As LMVessel
6204
        objVessel = _Placement.PIDDataSource.GetVessel(sVessel_ID)
6205
        Dim oVesselLocation As LMLocations = objVessel.Locations
6206
        Dim symVessel As LMSymbol = _Placement.PIDDataSource.GetSymbol(objVessel.Representations.Nth(1).Id)
6207
        Dim XCoordinate As String = symVessel.Attributes("XCoordinate").Value
6208
        Dim YCoordinate As String = symVessel.Attributes("YCoordinate").Value
6209
        symVessel.Attributes("XCoordinate").Value = XCoordinate + 0.01
6210
        symVessel.Attributes("YCoordinate").Value = YCoordinate + 0.01
6211
        symVessel.Commit()
6212
        Dim sValve_ID As String = "DB7B0CA8A2664A6BA7A9615764BA62B0"
6213
        Dim objValve As LMSymbol
6214
        Dim objValves As LMPipingComp = _Placement.PIDDataSource.GetPipingComp(sValve_ID)
6215

    
6216
        objValve = _Placement.PIDDataSource.GetSymbol(objValves.Representations.Nth(1).Id)
6217
        objValve.Commit()
6218
        Dim dVesselX As Double = XCoordinate
6219
        Dim dVesselY As Double = YCoordinate
6220
        Dim X1 As Double, Y1 As Double, X2 As Double, Y2 As Double
6221

    
6222
        _Placement.PIDConnectPointLocation(objValve, 1, X1, Y1)
6223

    
6224
        _Placement.PIDConnectPointLocation(objValve, 2, X2, Y2)
6225

    
6226
        Dim nozzlename As String = "\Equipment Components\Nozzles\Flanged Nozzle.sym"
6227
        Dim dCalc_x As Double = 0
6228
        Dim dCalc_y As Double = 0
6229

    
6230
        If dVesselX - X2 > 0 Then
6231
            dCalc_x = dVesselX - (dVesselX - X2)
6232
        Else
6233
            dCalc_x = dVesselX + (X2 - dVesselX)
6234
        End If
6235
        If dVesselY - Y2 > 0 Then
6236
            dCalc_y = dVesselY - (dVesselY - Y2)
6237
        Else
6238
            dCalc_y = dVesselY + (Y2 - dVesselY)
6239
        End If
6240

    
6241
        Dim objNozzle As LMSymbol = _Placement.PIDPlaceSymbol(nozzlename, dCalc_x, dCalc_y,
6242
            TargetItem:=symVessel.AsLMRepresentation)
6243

    
6244
        Dim blnSuccess As Boolean = _Placement.PIDConnectPointLocation(objNozzle, 1, X1, Y1)
6245
        blnSuccess = _Placement.PIDConnectPointLocation(objNozzle, 2, X1, Y1)
6246

    
6247
        objValve = _Placement.PIDPlaceSymbol(objValve.FileName, X1, Y1, ExistingItem:=objValve.AsLMAItem,
6248
          TargetItem:=objNozzle.AsLMRepresentation)
6249

    
6250

    
6251

    
6252
    End Sub
6253

    
6254
    Private Sub Btn_SymbolLibrary_Click(sender As Object, e As EventArgs) Handles Btn_SymbolLibrary.Click
6255
        Dim oMapping As New Mapping(_PIDSymbol_DB)
6256
        oMapping.Show()
6257
    End Sub
6258

    
6259
    Private Sub Btn_Stop_Click(sender As Object, e As EventArgs) Handles Btn_Stop.Click
6260
        Try
6261
            SetListBoxItems(ListBox_Result, " Auto converting 중지....")
6262
            ComUtil.MessageLog.CEventLog.Log_Write_Update(_Log_Path, _Log_File, " Auto converting 중지....")
6263
            _Main_trd.Abort()
6264
            _Opc_trd.Abort()
6265
        Catch ex As Exception
6266

    
6267
        End Try
6268
    End Sub
6269

    
6270
    Private Sub AutoCheckTreeNode(ByVal iType As Integer, ByVal bCheck As Boolean)
6271

    
6272
        For Each oDrwing As TreeNode In Tree_Result.Nodes
6273
            For Each oDwgNode As TreeNode In oDrwing.Nodes
6274
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
6275
                Dim CDrawing As Drawing = GetDrawing(sDwgName)
6276
                If CDrawing IsNot Nothing Then
6277
                    Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
6278
                    Dim iPipingOPC_count As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
6279
                    For Each oNode As TreeNode In oDwgNode.Nodes
6280
                        Dim iItemcnt As Integer = 0
6281
                        Dim sNodeUid As String = oNode.Name
6282
                        Dim oPipeRun_Dt As DataTable = PipeRun_Dt()
6283

    
6284
                        If iType = 0 Then 'Symbol
6285
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
6286
                            If CLineNo IsNot Nothing Then
6287
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
6288
                                For Each oSymbolRow In oSymbol_Dt.Rows
6289
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
6290
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
6291
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
6292
                                        If sSymbolNodeUid = sSymbolUid Then
6293
                                            oSymbolNode.Checked = bCheck
6294
                                            Exit For
6295
                                        End If
6296
                                    Next
6297
                                Next
6298
                            End If
6299
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
6300
                            If TrimLineNo IsNot Nothing Then
6301
                                Dim oSymbol_Dt As DataTable = TrimLineNo.Dt_Symbol
6302
                                For Each oSymbolRow In oSymbol_Dt.Rows
6303
                                    Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID).ToString()
6304
                                    For Each oSymbolNode As TreeNode In oNode.Nodes
6305
                                        Dim sSymbolNodeUid As String = oSymbolNode.Name
6306
                                        If sSymbolNodeUid = sSymbolUid Then
6307
                                            oSymbolNode.Checked = bCheck
6308
                                            Exit For
6309
                                        End If
6310
                                    Next
6311
                                Next
6312
                            End If
6313
                        End If
6314
                        If iType = 1 Then 'Line
6315
                            Dim CLineNo As Line_no = GetLineNo(CDrawing, sNodeUid)
6316
                            If CLineNo IsNot Nothing Then
6317
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
6318
                                For Each oLineRow In oLine_Dt.Rows
6319
                                    Dim sLineUid As String = oLineRow(_XML_LINE_UID).ToString()
6320
                                    For Each oLineNode As TreeNode In oNode.Nodes
6321
                                        Dim sLineNodeUid As String = oLineNode.Name
6322
                                        If sLineNodeUid = sLineUid Then
6323
                                            oLineNode.Checked = bCheck
6324
                                            Exit For
6325
                                        End If
6326
                                    Next
6327
                                Next
6328
                            End If
6329
                            Dim TrimLineNo As Line_no = GetTrimLineNo(CDrawing, sNodeUid)
6330
                            If TrimLineNo IsNot Nothing Then
6331
                                Dim oLine_Dt As DataTable = TrimLineNo.Dt_Line
6332
                                For Each oLineRow In oLine_Dt.Rows
6333
                                    Dim sLineUid As String = oLineRow(_XML_SYMBOL_UID).ToString()
6334
                                    For Each oLineNode As TreeNode In oNode.Nodes
6335
                                        Dim sLineNodeUid As String = oLineNode.Name
6336
                                        If sLineNodeUid = sLineUid Then
6337
                                            oLineNode.Checked = bCheck
6338
                                            Exit For
6339
                                        End If
6340
                                    Next
6341
                                Next
6342
                            End If
6343
                        End If
6344
                        If iType = 2 Then 'Equipment
6345
                            Dim CEqpNo As Eqp_no = GetEqpNo(CDrawing, sNodeUid)
6346
                            If CEqpNo IsNot Nothing Then
6347
                                Dim oEqp_Dt As DataTable = CEqpNo.Dt_Equipment
6348
                                For Each oEqpRow In oEqp_Dt.Rows
6349
                                    Dim sEqpUid As String = oEqpRow(_XML_LINE_UID).ToString()
6350
                                    For Each oEqpNode As TreeNode In oNode.Nodes
6351
                                        Dim sEqpNodeUid As String = oEqpNode.Name
6352
                                        If sEqpNodeUid = sEqpUid Then
6353
                                            oEqpNode.Checked = bCheck
6354
                                            Exit For
6355
                                        End If
6356
                                    Next
6357
                                Next
6358
                            End If
6359
                        End If
6360
                    Next
6361
                End If
6362
            Next
6363
        Next
6364

    
6365

    
6366
    End Sub
6367

    
6368

    
6369

    
6370
    Private Sub Chk_Symbol_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Symbol.CheckedChanged
6371
        AutoCheckTreeNode(0, Chk_Symbol.Checked)
6372
    End Sub
6373

    
6374
    Private Sub Chk_Line_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Line.CheckedChanged
6375
        AutoCheckTreeNode(1, Chk_Line.Checked)
6376
    End Sub
6377

    
6378
    Private Sub Chk_Equipment_CheckedChanged(sender As Object, e As EventArgs) Handles Chk_Equipment.CheckedChanged
6379
        AutoCheckTreeNode(2, Chk_Equipment.Checked)
6380
    End Sub
6381
End Class
6382

    
6383

    
6384
Public Class DrawingInfo
6385
    Public mDrawingName As String
6386
    Public mSpID As String
6387
    Public mPath As String
6388
End Class
6389

    
6390

    
6391

    
6392

    
6393