프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ b82166d4

이력 | 보기 | 이력해설 | 다운로드 (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

    
2977
                    If sStartConnectionUid <> "" Then
2978
                        Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_UID & " = '" & sStartConnectionUid & "'")
2979
                        If oChangeRow.Length = 1 Then
2980
                            oChangeRow(0)(_XML_LINE_SPID) = sID_1
2981
                            oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oStartLMConnector
2982
                        End If
2983
                    End If
2984
                    If sEndConnectionUid <> "" Then
2985
                        Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_UID & " = '" & sEndConnectionUid & "'")
2986
                        If oChangeRow.Length = 1 Then
2987
                            oChangeRow(0)(_XML_LINE_SPID) = sID_1
2988
                            oChangeRow(0)(_XML_LINE_LMCONNECTOR) = oStartLMConnector
2989
                        End If
2990
                    End If
2991

    
2992
                Else
2993
                    sReturnUid = ""
2994
                End If
2995

    
2996

    
2997

    
2998

    
2999

    
3000
            Catch ex As Exception
3001

    
3002
            End Try
3003

    
3004

    
3005
        Catch ex As Exception
3006

    
3007
        End Try
3008

    
3009

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

    
3014
    Private Sub PipingModeling()
3015

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

    
3035
                            If CLineNo IsNot Nothing Then
3036
                                Dim oLine_Dt As DataTable = CLineNo.Dt_Line
3037
                                Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
3038
                                Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
3039
                                Dim oDrawLinenoLabel As Boolean = False
3040
                                Try
3041
                                    ManualCheckNode(oLine_Dt)
3042
                                    ManualCheckNode(oSymbol_Dt)
3043
                                Catch ex As Exception
3044
                                End Try
3045
                                For Each oSymbolNode As TreeNode In oNode.Nodes
3046
                                    If oSymbolNode.Checked Then
3047
                                        Try
3048
                                            Dim sUid As String = oSymbolNode.Name
3049
                                            Dim sLineNoUid As String = CLineNo.Uid
3050
                                            Dim sReturnUid = sUid
3051
                                            '  FinalModeling(sUid, oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3052
                                            While True
3053
                                                Dim oLineRows As DataRow() = oLine_Dt.Select(_XML_LINE_UID & " = '" & sReturnUid & "' And [" & _XML_SYMBOL_DRAWING_TF & "] = 'False' And [" &
3054
                                                                   _XML_SYMBOL_Check & "] = 'TRUE' And [" & _XML_LINE_ValieLine & "] = 'True'")
3055
                                                If oLineRows.Count > 0 Then
3056
                                                    Dim sPipeType As String = oLineRows(0)(_XML_LINE_TYPE).ToString()
3057
                                                    If sPipeType.ToUpper() = "PRIMARY" Then
3058
                                                        sReturnUid = FinalLineModeling(oLineRows(0), oLine_Dt, oSymbol_Dt, oAttribute_Dt)
3059
                                                    Else
3060
                                                        sReturnUid = ""
3061
                                                    End If
3062

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

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

    
3138

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

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

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

    
3216

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

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

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

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

    
3305
        End Try
3306
    End Sub
3307

    
3308

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

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

    
3335
        End Try
3336

    
3337
    End Sub
3338

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

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

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

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

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

    
3407
                            Next
3408

    
3409
                        End If
3410

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

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

    
3436
                            Next
3437

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

    
3445

    
3446

    
3447

    
3448

    
3449

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

    
3453
        Try
3454

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

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

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

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

    
3512

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

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

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

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

    
3617
                                End If
3618
                            End If
3619
                        End If
3620

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

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

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

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

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

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

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

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

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

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

    
3798

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

    
3822
                Catch ex As Exception
3823
                End Try
3824
            Next
3825

    
3826
        Catch ex As Exception
3827

    
3828
        End Try
3829
        Return bConnectionFlag
3830
    End Function
3831

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

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

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

    
3899

    
3900

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

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

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

    
3944
        Catch ex As Exception
3945

    
3946
        End Try
3947

    
3948
        Return oLMSymbol
3949
    End Function
3950

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

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

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

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

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

    
4220
    End Function
4221

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

    
4243

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

    
4249

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

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

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

    
4279
                End If
4280

    
4281

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

    
4290

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

    
4302

    
4303

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

    
4331

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

    
4340
                End If
4341

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

    
4376

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
4519
        '    Dim bCheckFlag As Boolean = False
4520

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

    
4528
        '    If bEndCheckFlag = False Then
4529

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

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

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

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

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

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

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

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

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

    
4611
    End Function
4612

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

    
4620
            Dim iConnType As Integer = 0
4621

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

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

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

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

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

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

    
4694
                    ElseIf iConnType = 2 Then
4695

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

    
4704

    
4705

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

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

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

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

    
4774
        End Try
4775

    
4776
        Return sReturnUid
4777
    End Function
4778

    
4779

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

    
4786
    '        Dim iConnType As Integer = 0
4787

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

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

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

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

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

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

    
4860
    '                ElseIf iConnType = 2 Then
4861

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

    
4870

    
4871

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

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

    
4925

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

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

    
4941
    '    End Try
4942

    
4943
    '    Return sReturnUid
4944
    'End Function
4945

    
4946

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

    
4950

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

    
4958

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

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

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

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

    
5016

    
5017

    
5018

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

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

    
5045

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

    
5052

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

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

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

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

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

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

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

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

    
5135

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

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

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

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

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

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

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

    
5256

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

    
5275
            End If
5276

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

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

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

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

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

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

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

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

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

    
5369

    
5370

    
5371

    
5372

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

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

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

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

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

    
5539

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

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

    
5562
                Dim dAngle As Double = oSymbolRow(_XML_SYMBOL_ANGLE)
5563

    
5564

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

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

    
5585
                'End If
5586

    
5587

    
5588

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

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

    
5602

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

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

    
5635
                                        If sPIDAttribute = "SIZE" Then
5636

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

    
5674

    
5675
                                                End If
5676

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

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

    
5696

    
5697

    
5698
            End If
5699

    
5700

    
5701

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

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

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

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

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

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

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

    
5758

    
5759

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

    
5766

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

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

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

    
5821

    
5822
            '    End If
5823

    
5824
            'End If
5825

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

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

    
5861
            '                        If sPIDAttribute = "SIZE" Then
5862

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

    
5900

    
5901
            '                                End If
5902

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

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

    
5925

    
5926

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

    
5948
            '   PipeLine_Fitting_Modeling()
5949

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

    
5961

    
5962

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

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

    
5978
    End Sub
5979

    
5980

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

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

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

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

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

    
6030

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

    
6038

    
6039

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

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

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

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

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

    
6054
            For Each oLinelist In oLineLists
6055
                Dim sLineNoUid As String = oLinelist.Uid
6056
                Dim sLineNo As String = oLinelist.Text
6057
                Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
6058
                For Each oLineRow In oLinelist.Dt_Line.Rows
6059
                    Dim sLineUid As String = oLineRow(_XML_LINE_UID)
6060
                    Dim oPipeNode As TreeNode = oLineNoNode.Nodes.Add(sLineUid, "Pipe")
6061
                    Dim bValidLine As Boolean = oLineRow(_XML_LINE_ValieLine)
6062

    
6063

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

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

    
6083
                    oSymbolNode.Tag = sLineNoUid
6084
                Next
6085
            Next
6086

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

    
6092

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

    
6132
        End If
6133

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

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

    
6153

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
6251

    
6252

    
6253
    End Sub
6254

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

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

    
6268
        End Try
6269
    End Sub
6270

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

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

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

    
6366

    
6367
    End Sub
6368

    
6369

    
6370

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

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

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

    
6384

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

    
6391

    
6392

    
6393

    
6394

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