프로젝트

일반

사용자정보

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

hytos / DTI_PID / SPPIDConverter / Main.vb @ 2b9b29aa

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

1 4f359afa Gyusu
Imports System.IO
2
Imports System.Data.SqlClient
3
Imports System.Data.SQLite
4
Imports Plaice
5
Imports Llama
6
Imports PidA
7 962b2464 Gyusu
8 e282643f Gyusu
9
Imports System.Threading
10
11 4f359afa Gyusu
Public Class Main
12
13 171ac39d Gyusu
    Dim _Mapping_DB As DataTable = New DataTable()
14
    Dim _Attribute_DB As DataTable = New DataTable()
15 4f359afa Gyusu
    Dim _Placement As New Placement
16
    Dim _DWG_X = 0.84 '0.695 '1 '
17
    Dim _DWG_Y = 0.594 '0.585 '0.8 '
18
19 171ac39d Gyusu
    Dim _IMG_X = 0
20
    Dim _IMG_Y = 0
21
22
    Dim _Unit As String
23 4f359afa Gyusu
24 31d47a80 Gyusu
    'Drawing 전역변수
25
    Dim _objPIDADrawing As Object
26 e282643f Gyusu
    '현재선택한 폴더경로
27
    Dim _selectFolderPath As String
28
29
    Private _Main_trd As Thread
30
31 171ac39d Gyusu
    Private _DrawingsList As List(Of Drawing)
32 272662f9 Gyusu
33
34 9e1e7135 Gyusu
    Private _iPipeLineNocnt As Integer
35
    Private _iPipecnt As Integer
36
    Private _iFittingcnt As Integer
37
    Private _iValvecnt As Integer
38
    Private _iInstrumentcnt As Integer
39
    Private _iEquipmentcnt As Integer
40
    Private _iNozzlecnt As Integer
41
42 272662f9 Gyusu
43 4f359afa Gyusu
    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
44 272662f9 Gyusu
45 e282643f Gyusu
        If My.Settings.DBPath <> "" And My.Settings.Plant_Hierarchy <> "" Then
46
            Dim sDBPath As String = My.Settings.DBPath
47 171ac39d Gyusu
            _Mapping_DB = Load_DB(sDBPath, _DB_TABLE_MAPPING)
48
            _Attribute_DB = Load_DB(sDBPath, _DB_TABLE_ATTRIBUTE)
49 e282643f Gyusu
            'TestPID()
50
        Else
51
            MessageBox.Show("설정값을 먼저 확인해주세요")
52
        End If
53
    End Sub
54
55
    Public Function GetDrawingInfo(ByVal errorList As ArrayList)
56
        Dim ds As Llama.LMADataSource
57
        ds = New Llama.LMADataSource
58
        Dim lmaItem As Llama.LMAItem
59
60
        For i = 0 To errorList.Count - 1
61
            lmaItem = ds.GetModelItem(errorList.Item(i).m_strSPID()).AsLMAItem
62
            Dim drawingInfo As DrawingInfo
63
            drawingInfo = GetDrawingName(lmaItem.ItemType, lmaItem.Id)
64
            errorList.Item(i).m_LMAItem = lmaItem
65
            errorList.Item(i).m_strDrawingName = drawingInfo.mDrawingName
66
            errorList.Item(i).m_strDrawingPath = drawingInfo.mPath
67
        Next
68
    End Function
69
    Private mDataSource As Object
70
71
    'Public Sub New()
72
73
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
74
    '    '   mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
75
    '    'm_Information = SPPIDClass.Information.GetInstance()
76
77
    '    'If m_Information.InfoProject.ProjectVersion = SPPIDClass.InfoProject.SPPID_43 Then
78
    '    '    'SPPID4.3용
79
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
80
    '    'Else
81
    '    '    'SPPID2007, SPPID2009용
82
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
83
    '    'End If
84
85
    '    '  mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
86
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
87
    '    '#If LATE_BINDING Then
88
    '    '        mInstruments = CreateObject("Llama.LMInstruments", "")
89
    '    '        mPipingComps = CreateObject("Llama.LMPipingComps", "")
90
    '    '        mVessels = CreateObject("Llama.LMVessels", "")
91
    '    '        mDrawings = CreateObject("Llama.LMDrawings", "")
92
    '    '        mEquipments = CreateObject("Llama.LMEquipments", "")
93
    '    '        mExchangers = CreateObject("Llama.LMExchangers", "")
94
    '    '        mMechanicals = CreateObject("Llama.LMMechanicals", "")
95
    '    '        mNozzles = CreateObject("Llama.LMNozzles", "")
96
    '    '        mPipeRuns = CreateObject("Llama.LMPipeRuns", "")
97
    '    '        mEquipmentOthers = CreateObject("Llama.LMEquipmentOthers", "")
98
    '    '#Else
99
    '    '        mInstruments = New Llama.LMInstruments
100
    '    '        mPipingComps = New Llama.LMPipingComps
101
    '    '        mVessels = New Llama.LMVessels
102
    '    '        mDrawings = New Llama.LMDrawings
103
    '    '        mEquipments = New Llama.LMEquipments
104
    '    '        mExchangers = New Llama.LMExchangers
105
    '    '        mMechanicals = New Llama.LMMechanicals
106
    '    '        mNozzles = New Llama.LMNozzles
107
    '    '        mPipeRuns = New Llama.LMPipeRuns
108
    '    '        mEquipmentOthers = New Llama.LMEquipmentOthers
109
    '    '#End If
110
    'End Sub
111
    Public Function GetDrawingName(ByVal itemType As String, ByVal itemName As String) As DrawingInfo
112
113
        Dim objFilter As Object
114
        objFilter = CreateObject("Llama.LMAFilter", "")
115
116
        Dim drawingInfo As DrawingInfo
117
        drawingInfo = New DrawingInfo
118
119
        objFilter.Criteria.AddNew("FirstOne")
120
        objFilter.Criteria.Item("FirstOne").SourceAttributeName = "SP_ID"
121
        objFilter.Critedkria.Item("FirstOne").ValueAttribute = itemName
122
123
        objFilter.Criteria.Item("FirstOne").Operator = "="
124
        objFilter.Criteria.AddNew("SecondOne")
125
        objFilter.Criteria.Item("SecondOne").SourceAttributeName = "ItemStatus"
126
        objFilter.Criteria.Item("SecondOne").ValueAttribute = 1
127
        objFilter.Criteria.Item("SecondOne").Operator = "="
128
        objFilter.Criteria.Item("SecondOne").Conjunctive = -1
129
        objFilter.ItemType = itemType
130
131
        Dim PlantItems As Object
132
        PlantItems = CreateObject("Llama.LMPlantItems", "")
133
        PlantItems.Collect(mDataSource, Filter:=objFilter)
134
135
        If PlantItems.Count = 0 Then
136
            drawingInfo.mSpID = "PlantStockpile"
137
        End If
138
139
        For Each PlantItem In PlantItems
140
141
            'If Not PlantItem.Representations.Nth(1).DrawingID.Value.ToString().Equals("0") Then
142
            Try
143
                drawingInfo.mDrawingName = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Name").Value
144
                drawingInfo.mSpID = PlantItem.Representations.Nth(1).DrawingID
145
                drawingInfo.mPath = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Path").Value
146
                Debug.WriteLine("DrawingName : " & drawingInfo.mDrawingName & ", SPID : " & drawingInfo.mSpID & ", Path : " & drawingInfo.mPath)
147
            Catch ex As Exception
148
149
            End Try
150
151
            'End If
152
153
        Next
154
155
        Return drawingInfo
156
157
    End Function
158
159
    Private Sub TestPID()
160
161
        Try
162
163
            Dim datasource As LMADataSource
164
            Dim objPIDAutoApp As Object
165
            Dim objPIDADrawing As Object
166
            Dim objDrawing As LMDrawing
167
            Dim objDrawings As LMDrawings
168
            datasource = New LMADataSource
169
170
171
            Dim oObj As Object = Nothing
172
            objDrawing = datasource.GetDrawing(oObj)
173
            objDrawings = New LMDrawings
174
            objDrawings.Collect(datasource)
175
            objPIDAutoApp = GetObject(, "SmartPlantPID.Application") '// CreateObject("PIDAutomation.Application")
176
            For Each objDrawing In objDrawings
177
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
178
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
179
                    If Not objPIDADrawing Is Nothing Then
180
                        MessageBox.Show("Drawing " & objDrawing.Attributes("Name").Value & " is opened!")
181
                        objPIDADrawing.CloseDrawing
182
                    End If
183
                End If
184
            Next
185
            objPIDAutoApp.Quit
186
            objPIDAutoApp = Nothing
187
            objPIDADrawing = Nothing
188
            objDrawing = Nothing
189
            objDrawings = Nothing
190
        Catch ex As Exception
191
192
        End Try
193
194
195 962b2464 Gyusu
196
    End Sub
197 e282643f Gyusu
    Public Function SetActiveSiteFromConfigInfo(ByVal strActiveSite As String) As Boolean
198
199
        On Error GoTo errHandler
200
        Dim objConfigInfo As Object 'interopigrConfigInfo412.igrConfigInfo
201
        objConfigInfo = CreateObject("interopigrConfigInfo412.igrConfigInfo", "")
202
        If Not objConfigInfo Is Nothing Then
203
            objConfigInfo.ApplicationName = "SmartPlantManager"
204
            objConfigInfo.SetConfigString(3, "SmartPlant Manager", "SiteServer", strActiveSite)
205
            SetActiveSiteFromConfigInfo = True
206
        End If
207
        objConfigInfo = Nothing
208
209
        Exit Function
210
211
errHandler:
212
        '    LogAndRaiseError ModuleName & "::GetConfigInfo "
213
    End Function
214 4f359afa Gyusu
215 1229ad76 Gyusu
    Private Function CreateDwg(ByVal oDwgName As String) As Boolean
216
        Dim objPIDADrawing As Object = Nothing
217
        Dim objPIDAutoApp As Object = Nothing
218
        Dim datasource As LMADataSource = Nothing
219 4f359afa Gyusu
        Try
220
            Dim DrawingNumber As String
221
            Dim DrawingName As String
222 1229ad76 Gyusu
            Dim sPlantGroupName As String = "Test"
223
            Dim sTemplateName As String = "\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\P&ID Reference Data\Template Files\Gazprom Project.pid"
224
            Dim objDrawing As LMDrawing
225
            Dim objDrawings As LMDrawings
226
            objDrawings = New LMDrawings
227
            datasource = New LMADataSource
228
            Debug.Print(datasource.ProjectNumber)
229
            Debug.Print(datasource.SiteNode)
230
            Debug.Print(datasource.IsSatellite)
231
            Debug.Print(datasource.GetSystemEditingToolbarSetting)
232
            objDrawings.Collect(datasource)
233
            Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
234
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
235
            For Each objDrawing In objDrawings
236
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
237
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(sPath)
238
                    If Not objPIDADrawing Is Nothing Then
239
240
                        objPIDADrawing.CloseDrawing
241
                    End If
242
                End If
243
            Next
244 4f359afa Gyusu
245
            Dim extension As String = Path.GetExtension(oDwgName)
246
            oDwgName = oDwgName.Replace(extension, "")
247 1229ad76 Gyusu
248 4f359afa Gyusu
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
249 1229ad76 Gyusu
250
            'For Each objDrawing In objPIDAutoApp.Drawings
251
            '    objDrawing.CloseDrawing(True)
252
            'Next
253
254
            objPIDAutoApp.Drawings.OpenDrawing(oDwgName + ".pid")
255
256
            objPIDAutoApp.ActiveWindow.Fit()
257
258
            Return True
259
        Catch ex As Exception
260
            If objPIDADrawing IsNot Nothing Then
261 4f359afa Gyusu
                objPIDADrawing.CloseDrawing
262
            End If
263 1229ad76 Gyusu
            If objPIDAutoApp IsNot Nothing Then
264
                objPIDAutoApp.Quit
265
            End If
266
            datasource = Nothing
267 4f359afa Gyusu
            objPIDAutoApp = Nothing
268
            objPIDADrawing = Nothing
269
            Return False
270
        End Try
271 1229ad76 Gyusu
        If objPIDADrawing IsNot Nothing Then
272
            objPIDADrawing.CloseDrawing
273
        End If
274 4f359afa Gyusu
275
    End Function
276
277 1229ad76 Gyusu
278 171ac39d Gyusu
    Private Function GetDataFromMappingDB(ByVal sSymbolName As String, ByVal sColumn As String) As String
279
        Dim sValue As String = ""
280
        If _Mapping_DB.Rows.Count > 0 Then
281
            Dim oSelectRow() As DataRow = _Mapping_DB.Select("[pid_symbolname] = '" + sSymbolName + "'")
282 e282643f Gyusu
            If oSelectRow.Length = 1 Then
283 171ac39d Gyusu
                sValue = oSelectRow(0).Item(sColumn).ToString()
284 e282643f Gyusu
            End If
285 4f359afa Gyusu
        End If
286 171ac39d Gyusu
        Return sValue
287 4f359afa Gyusu
    End Function
288
289 171ac39d Gyusu
    Private Function GetAttributeMapping(ByVal sAttributeName As String, ByVal sColumn As String) As String
290
        Dim sSPPIDAttribute As String = ""
291
        If _Attribute_DB.Rows.Count > 0 Then
292
            Dim oSelectRow() As DataRow = _Attribute_DB.Select("[pid_attribute] = '" + sAttributeName + "'")
293
            If oSelectRow.Length = 1 Then
294
                sSPPIDAttribute = oSelectRow(0).Item(sColumn).ToString()
295
            End If
296
        End If
297
        Return sSPPIDAttribute
298
    End Function
299 e282643f Gyusu
300 171ac39d Gyusu
    Private Function LoadSymbolInXml(ByVal sXmlPath As String) As Drawing
301
        Dim CDrawing As Drawing = New Drawing()
302 4f359afa Gyusu
        Dim oDt As DataTable = LoadSymbol_DT()
303
        Dim oElement As XElement = XElement.Load(sXmlPath)
304 171ac39d Gyusu
305 4f359afa Gyusu
        If oElement IsNot Nothing Then
306 171ac39d Gyusu
            CDrawing.DwgName = oElement.Element(_XML_DWGNAME).Value
307
            CDrawing.Size = oElement.Element(_XML_DWGSIZE).Value
308
            SplitLocation(CDrawing.Size, _IMG_X, _IMG_Y)
309
            CDrawing.Unit = oElement.Element(_XML_UNIT).Value
310
311
            Dim oLineno_list As New List(Of Line_no)
312
313
            For Each oLineNo As Object In oElement.Elements(_XML_CATEGORY_LINENO)
314
                Dim CLineNo As Line_no = New Line_no()
315
                CLineNo.Uid = oLineNo.Element(_XML_LINENO_UID).Value
316
                CLineNo.Text = oLineNo.Element(_XML_LINENO_TEXT).Value
317
                CLineNo.Location = oLineNo.Element(_XML_LINENO_LOCATION).Value
318 9e1e7135 Gyusu
                CLineNo.Angle = oLineNo.Element(_XML_LINENO_ANGLE).Value
319 171ac39d Gyusu
                CLineNo.SystemPath = GetDataFromMappingDB(_XML_CATEGORY_LINENO, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
320
321
                Dim oLine_Dt As DataTable = Line_Dt()
322
                Dim oSymbol_Dt As DataTable = Symbol_Dt()
323
                Dim oAttribute_Dt As DataTable = Attribute_Dt()
324
325
                For Each oLine As Object In oLineNo.Elements(_XML_CATEGORY_LINE)
326
                    Dim oAddrow As DataRow = oLine_Dt.NewRow()
327
                    Dim oEleObj As XElement
328
                    Dim sUid As String
329
                    Dim sStartpoint As String
330
                    Dim sEndpoint As String
331
                    oEleObj = oLine.Element(_XML_LINE_UID)
332
                    sUid = oEleObj.Value
333
                    oEleObj = oLine.Element(_XML_LINE_STARTPOINT)
334
                    sStartpoint = oEleObj.Value
335
                    oEleObj = oLine.Element(_XML_LINE_ENDPOINT)
336
                    sEndpoint = oEleObj.Value
337
338
                    oAddrow(_XML_LINE_UID) = sUid
339
                    oAddrow(_XML_LINE_STARTPOINT) = sStartpoint
340
                    oAddrow(_XML_LINE_ENDPOINT) = sEndpoint
341
                    oAddrow(_XML_LINE_SYSTEMPATH) = GetDataFromMappingDB(_XML_CATEGORY_LINE, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
342
                    oLine_Dt.Rows.Add(oAddrow)
343
                Next
344
345
                For Each oSymbol As Object In oLineNo.Elements(_XML_CATEGORY_SYMBOL)
346
                    Dim oAddrow As DataRow = oSymbol_Dt.NewRow()
347
                    Dim oEleObj As XElement
348
                    Dim sUid As String
349
                    Dim sName As String
350
                    Dim sLocation As String
351
                    Dim sSize As String
352
                    Dim sAngle As String
353 9e1e7135 Gyusu
                    Dim sOriginalPoint As String
354 171ac39d Gyusu
                    oEleObj = oSymbol.Element(_XML_SYMBOL_UID)
355
                    sUid = oEleObj.Value
356
                    oEleObj = oSymbol.Element(_XML_SYMBOL_NAME)
357
                    sName = oEleObj.Value
358
                    oEleObj = oSymbol.Element(_XML_SYMBOL_LOCATION)
359
                    sLocation = oEleObj.Value
360
                    oEleObj = oSymbol.Element(_XML_SYMBOL_SIZE)
361
                    sSize = oEleObj.Value
362
                    oEleObj = oSymbol.Element(_XML_SYMBOL_ANGLE)
363
                    sAngle = oEleObj.Value
364 9e1e7135 Gyusu
                    Try
365
                        oEleObj = oSymbol.Element(_XML_SYMBOL_ORIGINALPOINT)
366
                        sOriginalPoint = oEleObj.Value
367
                    Catch ex As Exception
368
369
                    End Try
370
371
372 171ac39d Gyusu
373
                    oAddrow(_XML_SYMBOL_UID) = sUid
374
                    oAddrow(_XML_SYMBOL_NAME) = sName
375
                    oAddrow(_XML_SYMBOL_LOCATION) = sLocation
376
                    oAddrow(_XML_SYMBOL_SIZE) = sSize
377
                    oAddrow(_XML_SYMBOL_ANGLE) = sAngle
378
                    oAddrow(_XML_SYMBOL_SYSTEMPATH) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_SYSTEMPATH)
379
                    oAddrow(_XML_SYMBOL_TYPE) = GetDataFromMappingDB(sName, _DB_COLUMN_MAPPING_SPPID_COMPTPYE)
380 9e1e7135 Gyusu
                    oAddrow(_XML_SYMBOL_ORIGINALPOINT) = sOriginalPoint
381 171ac39d Gyusu
382
                    oSymbol_Dt.Rows.Add(oAddrow)
383
                Next
384
385
                For Each oAtrribute As Object In oLineNo.Elements(_XML_CATEGORY_ATTRIBUTE)
386
387
                    Dim oAddrow As DataRow = oAttribute_Dt.NewRow()
388
                    Dim oEleObj As XElement
389
                    Dim sUid As String
390
                    Dim sName As String
391
                    Dim sValue As String
392
393
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_UID)
394
                    sUid = oEleObj.Value
395
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_NAME)
396
                    sName = oEleObj.Value
397
                    oEleObj = oAtrribute.Element(_XML_ATTRIBUTE_VALUE)
398
                    sValue = oEleObj.Value
399
400
                    oAddrow(_XML_ATTRIBUTE_UID) = sUid
401
                    oAddrow(_XML_ATTRIBUTE_NAME) = sName
402
                    oAddrow(_XML_ATTRIBUTE_VALUE) = sValue
403
                    oAttribute_Dt.Rows.Add(oAddrow)
404 4f359afa Gyusu
                Next
405 171ac39d Gyusu
                CLineNo.Dt_Line = oLine_Dt
406
                CLineNo.Dt_Symbol = oSymbol_Dt
407
                CLineNo.Dt_Attribute = oAttribute_Dt
408
409
410
                'For Each oSymbol As Object In oLineNo.Elements(_XML_CATEGORY_SYMBOL)
411
412
                '    Dim oAddrow As DataRow = oDt.NewRow()
413
414
                '    Dim oObj As XElement = oSymbol.Element(_XML_SYMBOL_NAME)
415
                '    Dim oName As String = oObj.Value
416
417
                '    oObj = oSymbol.Element(_XML_SYMBOL_UID)
418
                '    Dim oUid = oObj.Value
419
420
                '    ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
421
                '    Dim oSymbolPath As String = GetSymbolMapping(oName)
422
423
                '    oObj = oSymbol.Element(_XML_SYMBOL_LOCATION)
424
                '    Dim sOriginPoint = oObj.Value
425
426
                '    oObj = oSymbol.Element(_XML_SYMBOL_ANGLE)
427
                '    Dim oAngle = oObj.Value
428
429
                '    Dim oSplitPos As String() = sOriginPoint.Split(",")
430
                '    Dim oX As Double = 0.0
431
                '    Dim oY As Double = 0.0
432
                '    If IsNumeric(oSplitPos(0)) Then
433
                '        oX = Double.Parse(oSplitPos(0))
434
                '    End If
435
                '    If IsNumeric(oSplitPos(1)) Then
436
                '        oY = Double.Parse(oSplitPos(1))
437
                '    End If
438
                '    ConvertPoint(oX, oY, _IMG_X, _IMG_Y)
439
                '    oAddrow("x") = oX '+ 0.05
440
                '    oAddrow("Y") = oY
441
                '    oAddrow("Angle") = oAngle
442
                '    oAddrow("SystemPath") = oSymbolPath
443
                '    oAddrow("Name") = oName
444
                '    oAddrow("uid") =
445
                '    oDt.Rows.Add(oAddrow)
446
                'Next
447
448
449
                oLineno_list.Add(CLineNo)
450 4f359afa Gyusu
            Next
451 171ac39d Gyusu
452
            CDrawing.Line_nos = oLineno_list
453 4f359afa Gyusu
        End If
454 171ac39d Gyusu
        Return CDrawing
455 4f359afa Gyusu
    End Function
456
457
458
459 171ac39d Gyusu
    'Private Function LoadPipeInXml(ByVal sXmlPath As String) As DataTable
460
    '    Try
461
    '        Dim oDt As DataTable = LoadPipe_DT()
462
    '        Dim oElement As XElement = XElement.Load(sXmlPath)
463
    '        If oElement IsNot Nothing Then
464
    '            Dim DWGElement As XElement = oElement.Element("DWGNAME")
465
    '            Dim DWGNAME = DWGElement.Value
466
    '            Dim sXY As XElement = oElement.Element("SIZE")
467
    '            Dim sSize = sXY.Value
468
    '            Dim oSplitDWGPos As String() = sSize.Split(", ")
469 4f359afa Gyusu
470 171ac39d Gyusu
    '            If IsNumeric(oSplitDWGPos(0)) Then
471
    '                _IMG_X = Double.Parse(oSplitDWGPos(0))
472
    '            End If
473
    '            If IsNumeric(oSplitDWGPos(1)) Then
474
    '                _IMG_Y = Double.Parse(oSplitDWGPos(1))
475
    '            End If
476 4f359afa Gyusu
477 171ac39d Gyusu
    '            For Each pipes As Object In oElement.Elements("IMGLINES")
478
    '                For Each pipe As Object In pipes.Elements("IMGLINE")
479
    '                    Dim oAddrow As DataRow = oDt.NewRow()
480
    '                    Dim oObj As XElement = pipe.Element("ITEM")
481
    '                    Dim oItem = oObj.Value
482
    '                    ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
483
    '                    Dim oSymbolPath As String = GetSystemPathFromMappingDB(oItem)
484
    '                    oObj = pipe.Element("START")
485
    '                    Dim oStartPoint = oObj.Value
486
    '                    Dim oSplitPos As String() = oStartPoint.Split(", ")
487
    '                    Dim oStartpos_X As Double = 0.0
488
    '                    Dim oStartpos_Y As Double = 0.0
489
    '                    If IsNumeric(oSplitPos(0)) Then
490
    '                        oStartpos_X = Double.Parse(oSplitPos(0))
491
    '                    End If
492
    '                    If IsNumeric(oSplitPos(1)) Then
493
    '                        oStartpos_Y = Double.Parse(oSplitPos(1))
494
    '                    End If
495 4f359afa Gyusu
496 171ac39d Gyusu
    '                    ConvertPoint(oStartpos_X, oStartpos_Y, _DWG_X, _DWG_Y)
497
    '                    oObj = pipe.Element("End")
498
    '                    Dim oEndPoint = oObj.Value
499
    '                    oSplitPos = oEndPoint.Split(", ")
500
    '                    Dim oEndpos_X As Double = 0.0
501
    '                    Dim oEndpos_Y As Double = 0.0
502
    '                    If IsNumeric(oSplitPos(0)) Then
503
    '                        oEndpos_X = Double.Parse(oSplitPos(0))
504
    '                    End If
505
    '                    If IsNumeric(oSplitPos(1)) Then
506
    '                        oEndpos_Y = Double.Parse(oSplitPos(1))
507
    '                    End If
508
    '                    ConvertPoint(oEndpos_X, oEndpos_Y, _DWG_X, _DWG_Y)
509 4f359afa Gyusu
510 171ac39d Gyusu
    '                    oAddrow("start_x") = oStartpos_X '+ 0.05
511
    '                    oAddrow("start_y") = oStartpos_Y
512
    '                    oAddrow("end_x") = oEndpos_X
513
    '                    oAddrow("end_y") = oEndpos_Y
514
    '                    oAddrow("SystemPath") = oSymbolPath
515
    '                    oDt.Rows.Add(oAddrow)
516
    '                Next
517
    '            Next
518
519
    '        End If
520 4f359afa Gyusu
521 171ac39d Gyusu
522
    '        Return oDt
523
    '    Catch ex As Exception
524
    '        Return Nothing
525
    '    End Try
526
    'End Function
527 4f359afa Gyusu
528
529 9e1e7135 Gyusu
    Private Sub ConvertPointByImage(ByRef dX As Double, ByRef dY As Double, ByVal dDwgX As Double, ByVal dDwgY As Double)
530 4f359afa Gyusu
531
        Dim calcx As Double = 0
532
        Dim calcy As Double = 0
533
        calcx = (dX * _DWG_X) / dDwgX 'Math.Round((dX * _DWG_X) / dDwgX, 2)
534 171ac39d Gyusu
        calcy = _DWG_Y - ((dY * _DWG_Y) / dDwgY) '_DWG_Y - Math.Round((dY * _DWG_Y) / dDwgY, 2)
535 4f359afa Gyusu
        dX = calcx
536
        dY = calcy
537
    End Sub
538
539 e1cde8f2 Gyusu
540
    '@brief Convert To SPPID
541
    '@author : Gyusu Park
542
    '@date : 2018-04-10
543
    '@history:
544
545 171ac39d Gyusu
    Private Sub SplitLocation(ByVal sLocation As String, ByRef dX As Double, ByRef dY As Double)
546
547
        Dim opointstr As String() = Split(sLocation, ",")
548
        If (opointstr.Length > 1) Then
549
            If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
550
                dX = opointstr(0)
551
                dY = opointstr(1)
552
            End If
553
        End If
554
555
    End Sub
556
557
558
559
560
561
562 e1cde8f2 Gyusu
    Private Function AutoConverting(ByVal oPipe_Dt As DataTable, ByVal oSymbol_Dt As DataTable, ByVal oTreeNode As TreeNode) As Boolean
563 e282643f Gyusu
        Dim iTotalCount As Double = oPipe_Dt.Rows.Count + oSymbol_Dt.Rows.Count
564
        Dim iSymbolcount As Double = 0
565
566 e1cde8f2 Gyusu
        Dim lobjDatasource As Object = _Placement.PIDDataSource
567 e282643f Gyusu
568 e1cde8f2 Gyusu
        ' lobjDatasource.BeginTransaction()
569 e282643f Gyusu
        '  datasource = objPlacement.PIDDataSource
570
        'Dim iPipecnt As Integer = 0
571 e1cde8f2 Gyusu
        SetListBoxItems(ListBox_Result, " Auto converting 시작....")
572 e282643f Gyusu
573 e1cde8f2 Gyusu
        Dim iPipeCnt As Integer = 0
574 e282643f Gyusu
        If oPipe_Dt IsNot Nothing Then
575
            For Each oRow As DataRow In oPipe_Dt.Rows
576
                Dim oposition As String = oRow("position").ToString()
577 20c84e05 Gyusu
                Dim oSymbol As String = oRow("SystemPath").ToString()
578 171ac39d Gyusu
579 e282643f Gyusu
                Dim objConnector As LMConnector
580
                Dim objInputs As PlaceRunInputs
581
                objInputs = New PlaceRunInputs
582 171ac39d Gyusu
                Dim oSplitStr As String() = Split(oposition, " ")
583 e282643f Gyusu
                For Each sposition As String In oSplitStr
584 20c84e05 Gyusu
                    Dim opointstr As String() = Split(sposition, ", ")
585 e282643f Gyusu
586
                    If (opointstr.Length > 1) Then
587
                        If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
588
                            Dim ox As Double = opointstr(0)
589
                            Dim oy As Double = opointstr(1)
590 9e1e7135 Gyusu
                            ConvertPointByImage(ox, oy, _IMG_X, _IMG_Y)
591 e282643f Gyusu
                            objInputs.AddPoint(ox, oy)
592
                        End If
593 4f359afa Gyusu
                    End If
594 e282643f Gyusu
                Next
595
                Dim objItem As LMAItem
596 e1cde8f2 Gyusu
                objItem = _Placement.PIDCreateItem(oSymbol)
597
                objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
598
                SetListBoxItems(ListBox_Result, " Place PipeLine...." & "(" & (iPipeCnt + 1) & "/" & oPipe_Dt.Rows.Count)
599 e282643f Gyusu
                'Dim objPipeRun As LMPipeRun = datasource.GetPipeRun(objConnector.ModelItemID)
600
                'objPipeRun.Attributes("OperFluidCode").Value = "AFS"
601
                'objPipeRun.Commit()
602
                iSymbolcount = iSymbolcount + 1
603 e1cde8f2 Gyusu
                iPipeCnt = iPipeCnt + 1
604 e282643f Gyusu
            Next
605
        End If
606 4f359afa Gyusu
607 e1cde8f2 Gyusu
        SetListBoxItems(ListBox_Result, " Place PipeLine....완료")
608
609
        Dim iAllInstrumentCnt As Integer = oSymbol_Dt.Select("Name = 'INSTRUMENTATION'").Length
610 20c84e05 Gyusu
                    Dim iValveCnt As Integer = oSymbol_Dt.Select("Class = 'VALVES'").Length
611 e1cde8f2 Gyusu
        Dim iInstrumentCnt As Integer = 1
612
        Dim iFittingsCnt As Integer = 1
613
614
        Dim oInsNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Instruments", True)(0)
615
        Dim oValveNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Valves", True)(0)
616
        Dim oFittingsNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Fittings", True)(0)
617 e282643f Gyusu
        For Each oRow As DataRow In oSymbol_Dt.Rows
618 4f359afa Gyusu
619 e282643f Gyusu
            Try
620 e1cde8f2 Gyusu
621 20c84e05 Gyusu
                Dim sSystemPath As String = oRow("SystemPath").ToString()
622
                Dim sName As String = oRow("Name").ToString()
623
                Dim sType As String = oRow("Type").ToString()
624
                Dim sText As String = oRow("Text").ToString()
625
                Dim sClass As String = oRow("Class").ToString()
626
                Dim sItem As String = oRow("Item").ToString()
627 e1cde8f2 Gyusu
628 e282643f Gyusu
                Dim oX As Double = 0.0
629
                Dim oY As Double = 0.0
630 20c84e05 Gyusu
                If IsNumeric(oRow("x").ToString()) Then
631
                    oX = Double.Parse(oRow("x").ToString())
632 e282643f Gyusu
                End If
633 20c84e05 Gyusu
                If IsNumeric(oRow("y").ToString()) Then
634
                    oY = Double.Parse(oRow("y").ToString())
635 e282643f Gyusu
                End If
636
                Dim oAngle As Double = 0.0
637 20c84e05 Gyusu
                If IsNumeric(oRow("Angle").ToString()) Then
638
                    oAngle = Double.Parse(oRow("Angle").ToString())
639 e282643f Gyusu
                End If
640
                '   oSymbol = "\INSTRUMENTation\SYSTEM FUNCTIONS\D C S\DCS FUNC ACCESS IN PRIME LOC.sym"
641 e1cde8f2 Gyusu
                If sSystemPath <> "" Then
642
                    If sName = _TYPE_Instumentation Then
643
644 e282643f Gyusu
                        Dim sTagsuffix As String = ""
645
                        Dim sTagSequenceNo As String = ""
646
                        Dim sMeasuredVariableCode As String = ""
647
                        Dim sInstrumentTypeModifier As String = ""
648 e1cde8f2 Gyusu
649
                        If sText <> "" Then
650
                            If sText.Contains(",") Then
651
                                Dim splitstr() As String = sText.Split(",")
652 e282643f Gyusu
                                For i = 0 To splitstr.Count - 1
653
                                    If i = 0 Then
654
                                        sMeasuredVariableCode = Mid(splitstr(i), 1, 1)
655
                                        sTagSequenceNo = Mid(splitstr(i), 2, Len(splitstr(i)))
656
                                    Else
657
                                        If Len(splitstr(i)) = 1 Then
658
                                            sInstrumentTypeModifier = splitstr(i)
659
                                        ElseIf Len(splitstr(i)) = 0 Then
660
661
                                        ElseIf Len(splitstr(i)) > 1 Then
662
                                            sInstrumentTypeModifier = Mid(splitstr(i), 1, 1)
663
                                            sTagsuffix = Mid(splitstr(i), 2, Len(splitstr(i)))
664
                                        End If
665
                                    End If
666
                                Next
667
                            Else
668 e1cde8f2 Gyusu
                                sMeasuredVariableCode = Mid(sText, 1, 1)
669
                                sTagSequenceNo = Mid(sText, 2, Len(sText))
670 e282643f Gyusu
                            End If
671 4f359afa Gyusu
672 e282643f Gyusu
                        End If
673 4f359afa Gyusu
674 e282643f Gyusu
                        Dim objInstrSym As LMSymbol
675 e1cde8f2 Gyusu
                        objInstrSym = _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
676
                        SetListBoxItems(ListBox_Result, " Place Instrument...." & "(" & (iInstrumentCnt + 1) & "/" & iAllInstrumentCnt & ")")
677
678
                        ' SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sTagSequenceNo)
679
                        Dim action As Action = Sub()
680
                                                   oInsNode.Nodes.Add(sClass & "-" & iInstrumentCnt)
681
                                                   oInsNode.ExpandAll()
682
                                               End Sub
683
                        oInsNode.TreeView.Invoke(action)
684
685
686 e282643f Gyusu
                        Dim objInstr As LMInstrument
687
                        objInstr = lobjDatasource.GetInstrument(objInstrSym.ModelItemID)
688 4f359afa Gyusu
689 e282643f Gyusu
                        Dim objItem As LMAItem
690 e1cde8f2 Gyusu
                        objItem = _Placement.PIDCreateItem(sSystemPath)
691
692 4f359afa Gyusu
693 e282643f Gyusu
                        objInstr.Attributes("MeasuredVariableCode").Value = sMeasuredVariableCode
694
                        objInstr.Attributes("InstrumentTypeModifier").Value = sInstrumentTypeModifier
695
                        objInstr.Attributes("TagSuffix").Value = sTagsuffix
696
                        objInstr.Attributes("TagSequenceNo").Value = sTagSequenceNo
697
                        objInstr.Commit()
698 e1cde8f2 Gyusu
                        iInstrumentCnt = iInstrumentCnt + 1
699
                    ElseIf sName = "GATE VALVE WITH PLUG" Then
700 4f359afa Gyusu
701 e1cde8f2 Gyusu
                    ElseIf sName = "MEDIUM 1D 1TO1" Then
702 4f359afa Gyusu
703 e1cde8f2 Gyusu
                    ElseIf sClass = "VALVES" Then
704
                        Dim action As Action = Sub()
705
                                                   oValveNode.ExpandAll()
706
                                                   oValveNode.Nodes.Add(sClass & "-" & iValveCnt)
707
                                               End Sub
708
                        oValveNode.TreeView.Invoke(action)
709
710
                        _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
711
712
                        iValveCnt = iValveCnt + 1
713 e282643f Gyusu
                    Else
714 e1cde8f2 Gyusu
                        Dim action As Action = Sub()
715
                                                   oFittingsNode.ExpandAll()
716
                                                   oFittingsNode.Nodes.Add(sClass & "-" & iFittingsCnt)
717
                                               End Sub
718
                        oFittingsNode.TreeView.Invoke(action)
719
                        _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
720
721
                        iFittingsCnt = iFittingsCnt + 1
722 4f359afa Gyusu
723 e282643f Gyusu
                    End If
724
                    iSymbolcount = iSymbolcount + 1
725
                Else
726 4f359afa Gyusu
                End If
727 e282643f Gyusu
            Catch ex As Exception
728 4f359afa Gyusu
729 e282643f Gyusu
            End Try
730
            Dim dCalcProgressValue As Double = (iSymbolcount / iTotalCount) * 100
731
            SetProgressbar(ProgressBar_Status, dCalcProgressValue)
732
            '     ProgressBar_Status.Value = (iSymbolcount / iTotalCount) * 100
733 e1cde8f2 Gyusu
734 4f359afa Gyusu
        Next
735
736 e1cde8f2 Gyusu
        MsgBox("Complete AutoConverting")
737
        SetListBoxItems(ListBox_Result, "Place Instrument....변환완료")
738
        SetListBoxItems(ListBox_Result, "총 symbol:  " & iSymbolcount & "개 변환완료")
739
        SetProgressbar(ProgressBar_Status, 100)
740 e282643f Gyusu
        ' MsgBox("symbol: " & iSymbolcount & "개, pipe : " & iPipecnt & "개 변환완료")
741 4f359afa Gyusu
    End Function
742
743
744 272662f9 Gyusu
    Private Sub Tree_XMLFiles_AfterCheck(sender As Object, e As TreeViewEventArgs)
745 4f359afa Gyusu
        If e.Node.Checked = True Then
746
            For Each oNode As TreeNode In e.Node.Nodes
747
                oNode.Checked = True
748
            Next
749
        Else
750
            For Each oNode As TreeNode In e.Node.Nodes
751
                oNode.Checked = False
752
            Next
753
        End If
754
    End Sub
755
756 171ac39d Gyusu
    Private Function Load_DB(ByVal sDBPath As String, ByVal sTableName As String) As DataTable
757 4f359afa Gyusu
758
        Try
759 171ac39d Gyusu
            Dim oDt As New DataTable
760 4f359afa Gyusu
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
761
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
762
            conn.Open()
763 171ac39d Gyusu
            Dim sQuery As String = "Select * from " & sTableName
764 4f359afa Gyusu
            Dim cmd As SQLiteCommand = conn.CreateCommand()
765
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
766
            Dim oDataSet As DataSet = New DataSet()
767
            adapter.Fill(oDataSet)
768 171ac39d Gyusu
            oDt = oDataSet.Tables(0)
769
            Return oDt
770 4f359afa Gyusu
        Catch ex As Exception
771 171ac39d Gyusu
            Return Nothing
772 4f359afa Gyusu
        End Try
773
774
775 171ac39d Gyusu
    End Function
776 4f359afa Gyusu
777 171ac39d Gyusu
    Private Sub Load_AttributeDB(ByVal sDBPath As String)
778
779
        Try
780
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
781
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
782
            conn.Open()
783
            Dim sQuery As String = "Select * from Attribute"
784
            Dim cmd As SQLiteCommand = conn.CreateCommand()
785
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
786
            Dim oDataSet As DataSet = New DataSet()
787
            adapter.Fill(oDataSet)
788
            _Attribute_DB = oDataSet.Tables(0)
789
        Catch ex As Exception
790
791
        End Try
792 962b2464 Gyusu
793
794 171ac39d Gyusu
    End Sub
795
796 272662f9 Gyusu
    'Private Sub Tree_XMLFiles_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Tree_XMLFiles.AfterSelect
797
    '    If first_start = False Then Exit Sub
798
    '    Dim pa = e.Node.FullPath.ToString
799 962b2464 Gyusu
800 272662f9 Gyusu
    '    printfilesfolders_here(pa, e.Node)
801 962b2464 Gyusu
802 272662f9 Gyusu
    '    displayfiles(pa)
803
804
    '    Dim coco As String = ""
805
    '    coco = pa.ToString
806
    '    coco = coco.Replace("\\", "\")
807
    '    Me.Text = coco
808
    '    folders_path = coco
809
    'End Sub
810 962b2464 Gyusu
811
    Sub printfilesfolders_here(ByVal path As String, ByRef itree As TreeNode)
812
813
        Dim foldername As String
814
        Dim filename As String
815
        itree.Nodes.Clear()
816
        On Error GoTo eee
817
        For Each foldername In Directory.GetDirectories(path)
818
            On Error GoTo eee
819
            Dim jj = foldername.LastIndexOf("\")
820
            Dim jj1 = foldername.Length - jj
821
            Dim foldr = foldername.Substring((jj + 1), (jj1 - 1))
822
            itree.Nodes.Add(foldr, foldr)
823
        Next ' if you put this next at the end of procedure recursive will be done on first folder only
824
        Exit Sub
825
eee:
826
    End Sub
827
828 e282643f Gyusu
829 962b2464 Gyusu
830 272662f9 Gyusu
    '    Private Sub Tree_XMLFiles_MouseMove(sender As Object, e As MouseEventArgs) Handles Tree_XMLFiles.MouseMove
831
    '        first_start = True
832
    '    End Sub
833
834
    '    Private Sub ListView_File_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView_File.SelectedIndexChanged
835
    '        Dim indexes As ListView.SelectedIndexCollection =
836
    '                         Me.ListView_File.SelectedIndices
837
    '        Dim index As Integer
838
839
    '        For Each index In indexes
840
    '            'On Error Resume Next
841
    '            If folders_path.EndsWith("\") = True Then
842
    '                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
843
    '                'On Error Resume Next
844
    '            Else
845
    '                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
846
    '            End If
847
848
    '            Dim infoReader As System.IO.FileInfo
849
    '            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
850
    '            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
851
    '        Next
852
    '    End Sub
853
854
    '    Private Sub Procees()
855
    '        Dim indexes As ListView.SelectedIndexCollection =
856
    '                            Me.ListView_File.SelectedIndices
857
    '        Dim index As Integer
858
859
    '        For Each index In indexes
860
    '            'On Error Resume Next
861
    '            If folders_path.EndsWith("\") = True Then
862
    '                On Error GoTo out
863
    '                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
864
    '                On Error GoTo out
865
    '                'On Error Resume Next
866
    '            Else
867
    '                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
868
    '                On Error GoTo out
869
    '            End If
870
871
    '            Dim infoReader As System.IO.FileInfo
872
    '            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
873
    '            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
874
    '            On Error GoTo out
875
    '            MsgBox(Me.Status_Main.Items(0).Text + " is processed")
876
    '            On Error GoTo out
877
    '        Next
878
    '        Exit Sub
879
    'out:
880
    '        MsgBox(Err.Description)
881
    'End Sub
882 962b2464 Gyusu
883 31d47a80 Gyusu
    Private Function LoadAllDrawing() As DataTable
884 e282643f Gyusu
885
886 e1cde8f2 Gyusu
        SetListBoxItems(ListBox_Result, "도면정보 로드중....")
887 e282643f Gyusu
888 31d47a80 Gyusu
        Dim oDt As DataTable = Drawing_Dt()
889 e282643f Gyusu
        Dim sHierarchy As String = My.Settings.Plant_Hierarchy
890
891
892
        Dim files() As String
893
        files = Directory.GetFiles(sHierarchy, "*.pid", SearchOption.AllDirectories)
894
        For Each FileName As String In files
895
            Dim sName As String = FileName
896 31d47a80 Gyusu
            Dim oAddRow As DataRow = oDt.NewRow()
897 e282643f Gyusu
            oAddRow("Name") = Path.GetFileNameWithoutExtension(sName)
898
            oAddRow("Path") = FileName
899 31d47a80 Gyusu
            oDt.Rows.Add(oAddRow)
900
        Next
901
        Return oDt
902
    End Function
903
904 e282643f Gyusu
    Private Function LoadAllDrawing2() As DataTable
905 31d47a80 Gyusu
        Dim datasource As LMADataSource
906
        Dim objPIDAutoApp As Object
907
        Dim objPIDADrawing As Object
908
        Dim objDrawing As Object 'Drawing
909
        'Dim objDrawing As LMDrawing
910
        'Dim objDrawings As LMDrawings
911
912
        datasource = New LMADataSource
913
914
        '    objDrawings = New LMDrawings
915
        'objDrawings.Collect(datasource)
916
        objPIDAutoApp = CreateObject("PIDAutomation.Application")
917
918
        For Each objDrawing In objPIDAutoApp.Drawings
919
            objDrawing.CloseDrawing(True)
920
        Next
921
        Try
922
            objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("UY1-K-2000_P1_300dpi_0321_TEST_1")
923
        Catch ex As Exception
924
            Process.Start("\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
925
        End Try
926
927
928
929
        Dim sType As Type = objPIDAutoApp.GetType()
930
        Dim iCount As Integer = 0
931
        ' Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
932
933
        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("1")
934
935
        For Each objDrawing In objPIDAutoApp.Drawings
936
            If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
937
                Try
938
939
                    Dim sName As String = objDrawing.Attributes("Name").Value
940
941
                    iCount = iCount + 1
942
                    If sName = "UY1-K-2000_P1_300dpi_0321_TEST_1" Then
943
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
944
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
945
                        If Not objPIDADrawing Is Nothing Then
946
                            objPIDADrawing.CloseDrawing()
947
                        End If
948
                    End If
949
950
951
                Catch ex As Exception
952
953
                End Try
954
955
            End If
956
        Next
957
        objPIDAutoApp.Quit
958
        objPIDAutoApp = Nothing
959
        objPIDADrawing = Nothing
960
        objDrawing = Nothing
961
        '   objDrawings = Nothing
962 e282643f Gyusu
    End Function
963
964 272662f9 Gyusu
    Dim _XMLList As ListView = New ListView()
965 e282643f Gyusu
966 272662f9 Gyusu
967
968 e1cde8f2 Gyusu
969 171ac39d Gyusu
970
971
    Private Function CheckOpenDrawing() As Boolean
972
        Try
973
974
            Dim lobjDatasource As Object
975
            _Placement = CreateObject("Plaice.Placement", "")
976
            lobjDatasource = _Placement.PIDDataSource
977
            Return True
978
        Catch ex As Exception
979
            Return False
980
        End Try
981
982
    End Function
983
984
985
    Private Sub Btn_Convert_Click(sender As Object, e As EventArgs) Handles Btn_Convert.Click
986
987
        Main_Tab.SelectedIndex = 1
988
        ListBox_Result.Items.Clear()
989 9e1e7135 Gyusu
        ' DataGrid_Result.DataSource = New DataTable()
990 171ac39d Gyusu
        Me.ProgressBar_Status.Visible = True
991
        ProgressBar_Status.Maximum = 100
992
        ProgressBar_Status.Value = 0
993
        ' _selectFolderPath = Tree_XMLFiles.SelectedNode.FullPath.Replace("\\", "\")
994
        _Main_trd = New Thread(AddressOf ThreadTask)
995
        _Main_trd.IsBackground = True
996
        _Main_trd.Start()
997
998
    End Sub
999 7824381a Gyusu
    'Private Sub ThreadTask()
1000 e1cde8f2 Gyusu
1001 e282643f Gyusu
1002 7824381a Gyusu
    '    If _XMLList.Items.Count > 0 Then
1003 31d47a80 Gyusu
1004 7824381a Gyusu
    '        Dim oDwg_Dt As DataTable = LoadAllDrawing()
1005
    '        Dim iDwgCnt As Integer = 0
1006
    '        Dim objPIDAutoApp As Object
1007
    '        objPIDAutoApp = CreateObject("PIDAutomation.Application")
1008 e282643f Gyusu
1009 e1cde8f2 Gyusu
1010 7824381a Gyusu
    '        Dim myList = DirectCast(Invoke(New GetListViewDelegate(AddressOf GetListViewItems), _XMLList), List(Of String))
1011
    '        For i = 0 To myList.Count - 1
1012 e1cde8f2 Gyusu
1013 7824381a Gyusu
    '            Dim sDwgName As String = Path.GetFileNameWithoutExtension(myList(i))
1014
    '            Txt_Status.Text = sDwgName & "..(" & i + 1 & "/" & myList.Count & ")"
1015
    '            SetListBoxItems(ListBox_Result, Txt_Status.Text & " 처리중....")
1016
    '            Dim sDwgNo As String = myList(i)
1017
    '            Dim oDwgPath As String = ""
1018
    '            oDwgPath = _selectFolderPath + "\" + sDwgNo
1019 e1cde8f2 Gyusu
1020 7824381a Gyusu
    '            Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
1021
    '            If sPath <> "" Then
1022 e1cde8f2 Gyusu
1023 7824381a Gyusu
    '                Process.Start(sPath)
1024 e1cde8f2 Gyusu
1025 7824381a Gyusu
    '                Dim bCheckOpenDrawing As Boolean = False
1026
    '                While (True)
1027
    '                    bCheckOpenDrawing = CheckOpenDrawing()
1028
    '                    If bCheckOpenDrawing = True Then
1029
    '                        Exit While
1030
    '                    Else
1031
    '                        Thread.Sleep(2000)
1032
    '                    End If
1033
    '                End While
1034 e1cde8f2 Gyusu
1035 7824381a Gyusu
    '                If bCheckOpenDrawing Then
1036
    '                    SetListBoxItems(ListBox_Result, sDwgName & " 도면 Open....")
1037
    '                    Dim oPipe_Dt As DataTable = New DataTable() 'LoadPipeInXml(oDwgPath)
1038 e282643f Gyusu
1039 7824381a Gyusu
    '                    Dim oSymbol_Dt As DataTable = LoadSymbolInXml(oDwgPath)
1040
    '                    Dim oTreeNode As New TreeNode  'SetTreeViewItems(Tree_Result, Tree_Result.Nodes, sDwgName, sDwgName)
1041
    '                    'oTreeNode = Tree_Result.Nodes.Find(sDwgName, True)(0)
1042
    '                    Dim action As Action = Sub()
1043
    '                                               oTreeNode = Tree_Result.Nodes.Add(sDwgName, sDwgName)
1044
    '                                               SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Instruments", "Instuments")
1045
    '                                               SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Pipes", "Pipes")
1046
    '                                               SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Valves", "Valves")
1047
    '                                               SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Fittings", "Fittings")
1048
    '                                               oTreeNode.ExpandAll()
1049
    '                                           End Sub
1050
    '                    Tree_Result.Invoke(action)
1051 e1cde8f2 Gyusu
1052 e282643f Gyusu
1053 7824381a Gyusu
    '                    '    oTreeNode.Expand()
1054
    '                    SetListBoxItems(ListBox_Result, sDwgName & " Auto converting 대기....")
1055
    '                    AutoConverting(oPipe_Dt, oSymbol_Dt, oTreeNode)
1056 4f359afa Gyusu
1057 7824381a Gyusu
    '                End If
1058
1059
    '            End If
1060
    '            ''도면 생성
1061
    '            'If CreateDwg(sDwgName) Then
1062
    '            '    'AutoConverting
1063
1064
    '            'End If
1065
1066
    '        Next
1067
    '    End If
1068
    'End Sub
1069 e282643f Gyusu
1070 171ac39d Gyusu
    Dim _objPIDAutoApp As Object
1071 e282643f Gyusu
1072 171ac39d Gyusu
    Private Function OpenSPPID(ByVal oDwg_Dt As DataTable, ByVal sDwgName As String) As Boolean
1073
        Dim bCheckOpen As Boolean = False
1074
        '   Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgPath)
1075
        SetListBoxItems(ListBox_Result, sDwgName & " 도면 Open....")
1076
        _objPIDAutoApp = CreateObject("PIDAutomation.Application")
1077 e1cde8f2 Gyusu
1078 171ac39d Gyusu
        Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
1079
        If sPath <> "" Then
1080
            Process.Start(sPath)
1081
        Else
1082
            Return bCheckOpen
1083
        End If
1084
1085
            Dim bCheckOpenDrawing As Boolean = False
1086
            While (True)
1087
                bCheckOpenDrawing = CheckOpenDrawing()
1088
                If bCheckOpenDrawing = True Then
1089
                    bCheckOpen = True
1090
                    Exit While
1091
                Else
1092
                    Thread.Sleep(2000)
1093
                End If
1094
            End While
1095
1096
1097
            Return bCheckOpen
1098
    End Function
1099
1100
    Private Function GetDrawing(ByVal sDwgName As String) As Drawing
1101
        For Each CDrawing In _DrawingsList
1102
            If CDrawing.DwgName = sDwgName Then
1103
                Return CDrawing
1104
            End If
1105
        Next
1106
        Return Nothing
1107
    End Function
1108
1109
    Private Function GetLineNo(ByVal CDrawing As Drawing, ByVal sLineNoUid As String) As Line_no
1110
        For Each CLineNo In CDrawing.Line_nos
1111
            If CLineNo.Uid = sLineNoUid Then
1112
                Return CLineNo
1113
            End If
1114
        Next
1115
        Return Nothing
1116
    End Function
1117
1118 9e1e7135 Gyusu
    Private Function ConvertPointBystring(ByVal sPoint As String, ByRef dX As Double, ByRef dY As Double) As Boolean
1119 171ac39d Gyusu
        Try
1120
            Dim opointstr As String() = Split(sPoint, ",")
1121
            If (opointstr.Length > 1) Then
1122
                If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
1123
                    dX = opointstr(0)
1124
                    dY = opointstr(1)
1125 9e1e7135 Gyusu
1126 171ac39d Gyusu
                Else
1127
                    dX = 0
1128
                    dY = 0
1129
                    Return False
1130
                End If
1131
            End If
1132 e1cde8f2 Gyusu
            Return True
1133
        Catch ex As Exception
1134
            Return False
1135
        End Try
1136 171ac39d Gyusu
    End Function
1137
1138 9e1e7135 Gyusu
    Private Function DrawLine(ByVal sUid As String, ByVal sLineNoUid As String, ByVal oLine_Dt As DataTable, ByVal oAttribute_Dt As DataTable) As LMPipeRun
1139 171ac39d Gyusu
        Try
1140
            Dim oPipeRun As LMPipeRun
1141
            Dim oPipeRow() As DataRow = oLine_Dt.Select(_XML_LINE_UID & " = '" + sUid + "'")
1142
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
1143
1144
            If oPipeRow.Length > 0 Then
1145
                Dim oDatasource As Object = _Placement.PIDDataSource
1146
                Dim objItem As LMAItem
1147
                Dim objConnector As LMConnector
1148
                Dim objInputs As PlaceRunInputs
1149
                objInputs = New PlaceRunInputs
1150 9e1e7135 Gyusu
                Dim dOriginalStart_x As Double = 0.0
1151
                Dim dOriginalStart_y As Double = 0.0
1152
                Dim dOriginalEnd_x As Double = 0.0
1153
                Dim dOriginalEnd_y As Double = 0.0
1154
1155 171ac39d Gyusu
                Dim dStart_x As Double = 0.0
1156
                Dim dStart_y As Double = 0.0
1157
                Dim dEnd_x As Double = 0.0
1158
                Dim dEnd_y As Double = 0.0
1159
                Dim sSystempath As String = oPipeRow(0)(_XML_LINE_SYSTEMPATH).ToString()
1160
                Dim sStartpoint As String = oPipeRow(0)(_XML_LINE_STARTPOINT).ToString()
1161
                Dim sEndpoint As String = oPipeRow(0)(_XML_LINE_ENDPOINT).ToString()
1162 9e1e7135 Gyusu
                ConvertPointBystring(sStartpoint, dOriginalStart_x, dOriginalStart_y)
1163
                dStart_x = dOriginalStart_x
1164
                dStart_y = dOriginalStart_y
1165
                ConvertPointByImage(dStart_x, dStart_y, _IMG_X, _IMG_Y)
1166
                If ConvertPointBystring(sEndpoint, dOriginalEnd_x, dOriginalEnd_y) Then
1167
                    dEnd_x = dOriginalEnd_x
1168
                    dEnd_y = dOriginalEnd_y
1169
                    ConvertPointByImage(dEnd_x, dEnd_y, _IMG_X, _IMG_Y)
1170 171ac39d Gyusu
                    If dStart_x <> 0 And dStart_y <> 0 And dEnd_x <> 0 And dEnd_y <> 0 Then
1171
                        objInputs.AddPoint(dStart_x, dStart_y)
1172
                        objInputs.AddPoint(dEnd_x, dEnd_y)
1173
                        objItem = _Placement.PIDCreateItem(sSystempath)
1174 9e1e7135 Gyusu
                        _iPipecnt = _iPipecnt + 1
1175
                        SetListBoxItems(ListBox_Result, "Draw PipeLine..(" & dOriginalStart_x & "," & dOriginalStart_y & ")..." & _iPipecnt & " count ")
1176 171ac39d Gyusu
                        objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
1177
                        oPipeRun = oDatasource.GetPipeRun(objConnector.ModelItemID)
1178
                        If oAttributeRow.Length > 0 Then
1179
                            For Each oAttribute In oAttributeRow
1180
                                Dim sPIDAttribute As String = oAttribute(_XML_ATTRIBUTE_NAME).ToString()
1181
                                Dim sPIDValue As String = oAttribute(_XML_ATTRIBUTE_VALUE).ToString()
1182
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
1183
                                oPipeRun.Attributes(sSPPIDAttribute).Value = sPIDValue
1184
                            Next
1185
                            oPipeRun.Commit()
1186
                        End If
1187
                    End If
1188
                End If
1189 e1cde8f2 Gyusu
1190 171ac39d Gyusu
1191
            End If
1192
            Return oPipeRun
1193
        Catch ex As Exception
1194
            Return Nothing
1195
        End Try
1196 e1cde8f2 Gyusu
    End Function
1197
1198 9e1e7135 Gyusu
    Private Function DrawSymbol(ByVal sUid As String, ByVal sLineNoUid As String, ByVal oSymbol_Dt As DataTable, ByVal oAttribute_Dt As DataTable) As Boolean
1199 171ac39d Gyusu
        Try
1200 e282643f Gyusu
1201 171ac39d Gyusu
            Dim oSymbolRow() As DataRow = oSymbol_Dt.Select(_XML_SYMBOL_UID & " = '" + sUid + "'")
1202
            Dim oAttributeRow() As DataRow = oAttribute_Dt.Select(_XML_ATTRIBUTE_UID & " = '" + sLineNoUid + "'")
1203
            If oSymbolRow.Length > 0 Then
1204
                Dim oDatasource As Object = _Placement.PIDDataSource
1205
                Dim sSymbolCompType As String = oSymbolRow(0)(_XML_SYMBOL_TYPE).ToString()
1206
                Dim sSystemPath As String = oSymbolRow(0)(_XML_SYMBOL_SYSTEMPATH).ToString()
1207
                Dim sLocation As String = oSymbolRow(0)(_XML_SYMBOL_LOCATION).ToString()
1208 9e1e7135 Gyusu
                Dim sOriginalPoint As String = oSymbolRow(0)(_XML_SYMBOL_ORIGINALPOINT).ToString()
1209 171ac39d Gyusu
                Dim dAngle As Double = 0.0
1210
                If IsNumeric(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString()) Then
1211
                    dAngle = Double.Parse(oSymbolRow(0)(_XML_SYMBOL_ANGLE).ToString())
1212
                End If
1213
1214
                Dim objSymbol As LMSymbol
1215 9e1e7135 Gyusu
                Dim dLocationX As Double = 0.0
1216
                Dim dLocationY As Double = 0.0
1217 171ac39d Gyusu
                Dim dX As Double = 0.0
1218
                Dim dY As Double = 0.0
1219
1220 9e1e7135 Gyusu
                If ConvertPointBystring(sOriginalPoint, dLocationX, dLocationY) Then
1221
                    dX = dLocationX
1222
                    dY = dLocationY
1223
                    ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1224 171ac39d Gyusu
                    Dim oInstrument As LMInstrument
1225
                    If sSymbolCompType = _SYMBOL_INSTUMENT Then
1226 9e1e7135 Gyusu
                        _iInstrumentcnt = _iInstrumentcnt + 1
1227 171ac39d Gyusu
                        objSymbol = _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1228 9e1e7135 Gyusu
                        SetListBoxItems(ListBox_Result, "Draw Instrument..(" & dLocationX & "," & dLocationY & ")..." & _iInstrumentcnt & " count ")
1229 171ac39d Gyusu
                        oInstrument = oDatasource.GetInstrument(objSymbol.ModelItemID)
1230
                        If oAttributeRow.Length > 0 Then
1231
                            For Each oAttribute In oAttributeRow
1232
                                Dim sPIDAttribute As String = oAttribute(0)(_XML_ATTRIBUTE_NAME).ToString()
1233
                                Dim sPIDValue As String = oAttribute(0)(_XML_ATTRIBUTE_VALUE).ToString()
1234
                                Dim sSPPIDAttribute As String = GetAttributeMapping(sPIDAttribute, _DB_COLUMN_ATTRIBUTE_SPPID_ATTRIBUTE)
1235
                                oInstrument.Attributes(0)(sSPPIDAttribute).Value = sPIDValue
1236
                            Next
1237
                            oInstrument.Commit()
1238
                        End If
1239
1240
                    ElseIf sSymbolCompType = _SYMBOL_VALVES Then
1241 9e1e7135 Gyusu
                        _iValvecnt = _iValvecnt + 1
1242 171ac39d Gyusu
                        _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1243 9e1e7135 Gyusu
                        SetListBoxItems(ListBox_Result, "Draw Valve..(" & dLocationX & "," & dLocationY & ")..." & _iValvecnt & " count ")
1244 171ac39d Gyusu
1245
                    ElseIf sSymbolCompType = _SYMBOL_FITTINGS Then
1246 9e1e7135 Gyusu
                        _iFittingcnt = _iFittingcnt + 1
1247 171ac39d Gyusu
                        _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1248 9e1e7135 Gyusu
                        SetListBoxItems(ListBox_Result, "Draw Fitting..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
1249 171ac39d Gyusu
                    Else
1250 9e1e7135 Gyusu
                        _iFittingcnt = _iFittingcnt + 1
1251 171ac39d Gyusu
                        _Placement.PIDPlaceSymbol(sSystemPath, dX, dY, , dAngle)
1252 9e1e7135 Gyusu
                        SetListBoxItems(ListBox_Result, "Draw Fitting..(" & dLocationX & "," & dLocationY & ")..." & _iFittingcnt & " count ")
1253 171ac39d Gyusu
1254
                    End If
1255
1256
                End If
1257
1258
            End If
1259
1260
        Catch ex As Exception
1261
            Return False
1262
        End Try
1263
    End Function
1264
1265
    Private Function DrawLineNo(ByVal oPiperun As LMPipeRun, ByVal CLine_No As Line_no) As Boolean
1266
        Try
1267
            Dim oDatasource As Object = _Placement.PIDDataSource
1268
            Dim sLocation = CLine_No.Location
1269 9e1e7135 Gyusu
            Dim dLocationx As Double = 0.0
1270
            Dim dLocationy As Double = 0.0
1271
1272 171ac39d Gyusu
            Dim dX As Double = 0.0
1273
            Dim dY As Double = 0.0
1274 9e1e7135 Gyusu
            If ConvertPointBystring(sLocation, dLocationx, dLocationy) Then
1275
                dX = dLocationx
1276
                dY = dLocationy
1277
                ConvertPointByImage(dX, dY, _IMG_X, _IMG_Y)
1278 171ac39d Gyusu
                Dim dLineNoLocation(2) As Double
1279
                dLineNoLocation(1) = dX
1280
                dLineNoLocation(2) = dY
1281
                'Label
1282
                Dim sSystemPath As String = CLine_No.SystemPath
1283 9e1e7135 Gyusu
                Dim dAngle As Double = CLine_No.Angle
1284 171ac39d Gyusu
                Dim labelpersist As LMLabelPersist
1285
1286
                For Each representation In oPiperun.Representations
1287
                    If representation.RepresentationType = "Connector" Then
1288
                        labelpersist = _Placement.PIDPlaceLabel(sSystemPath,
1289 9e1e7135 Gyusu
                        dLineNoLocation,, dAngle, LabeledItem:=representation)
1290
                        _iPipeLineNocnt = _iPipeLineNocnt + 1
1291
                        SetListBoxItems(ListBox_Result, "Draw PipeLineNo Label..(" & dLocationx & "," & dLocationy & ")..." & _iPipeLineNocnt & " count ")
1292 171ac39d Gyusu
                    End If
1293
                Next
1294
                Return True
1295
            Else
1296
                Return False
1297
            End If
1298
1299
        Catch ex As Exception
1300
            Return False
1301
        End Try
1302
    End Function
1303
1304 9e1e7135 Gyusu
1305
    Private Sub InitItemCount()
1306
        _iPipeLineNocnt = 0
1307
        _iPipecnt = 0
1308
        _iFittingcnt = 0
1309
        _iValvecnt = 0
1310
        _iInstrumentcnt = 0
1311
        _iEquipmentcnt = 0
1312
        _iNozzlecnt = 0
1313
    End Sub
1314 171ac39d Gyusu
1315
    Private Function AutoModeling() As Boolean
1316
        Try
1317
1318
            SetListBoxItems(ListBox_Result, " Auto converting 시작....")
1319
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
1320
            For Each oDrwing As TreeNode In Tree_Result.Nodes
1321
                For Each oDwgNode As TreeNode In oDrwing.Nodes
1322
1323
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(oDwgNode.Text)
1324
                        Dim CDrawing As Drawing = GetDrawing(sDwgName)
1325
                        If CDrawing IsNot Nothing Then
1326 9e1e7135 Gyusu
                        If OpenSPPID(oDwg_Dt, oDwgNode.Text) Then
1327
                            InitItemCount()
1328
                            Dim iAllLineNoCount As Integer = Tree_Result.Nodes.Count ' GetCheckNodeCount(oLinenoNode)
1329
                            Dim iLineNoCount As Integer = 0 ' GetCheckNodeCount(oLinenoNode)
1330
                            SetListBoxItems(ListBox_Result, "Draw " & CDrawing.DwgName & "....")
1331 171ac39d Gyusu
1332 9e1e7135 Gyusu
                            For Each oLinenoNode As TreeNode In oDwgNode.Nodes
1333 171ac39d Gyusu
1334 9e1e7135 Gyusu
                                Dim sLineNoUid As String = oLinenoNode.Name
1335
                                Dim CLineNo As Line_no = GetLineNo(CDrawing, sLineNoUid)
1336 171ac39d Gyusu
1337 9e1e7135 Gyusu
                                If CLineNo IsNot Nothing Then
1338 171ac39d Gyusu
                                    Dim oPipeRun As LMPipeRun
1339
                                    Dim oLine_Dt As DataTable = CLineNo.Dt_Line
1340 9e1e7135 Gyusu
                                    Dim oSymbol_Dt As DataTable = CLineNo.Dt_Symbol
1341
                                    Dim oAttribute_Dt As DataTable = CLineNo.Dt_Attribute
1342 171ac39d Gyusu
                                    Dim oDrawLinenoLabel As Boolean = False
1343
                                    For Each oLineNode As TreeNode In oLinenoNode.Nodes
1344 9e1e7135 Gyusu
                                        Dim sLineUid As String = oLineNode.Name
1345
                                        If oLineNode.Checked Then
1346
                                            Dim sUid As String = oLineNode.Name
1347
                                            oPipeRun = DrawLine(sUid, sLineNoUid, oLine_Dt, oAttribute_Dt)
1348 171ac39d Gyusu
                                            If oDrawLinenoLabel = False Then
1349
                                                DrawLineNo(oPipeRun, CLineNo)
1350
                                                oDrawLinenoLabel = True
1351
                                            End If
1352
1353
                                        End If
1354 9e1e7135 Gyusu
                                    Next
1355 171ac39d Gyusu
1356
                                    For Each oSymbolNode As TreeNode In oLinenoNode.Nodes
1357 9e1e7135 Gyusu
                                        If oSymbolNode.Checked Then
1358
                                            Dim sUid As String = oSymbolNode.Name
1359
                                            DrawSymbol(sUid, sLineNoUid, oSymbol_Dt, oAttribute_Dt)
1360 171ac39d Gyusu
                                        End If
1361 9e1e7135 Gyusu
                                    Next
1362
                                End If
1363
                                iLineNoCount = iLineNoCount + 1
1364
                                '      Dim dCalcProgressValue As Double = (iLineNoCount / iLineNoCount) * 100
1365
                                'SetProgressbar(ProgressBar_Status, dCalcProgressValue)
1366
                            Next
1367 171ac39d Gyusu
1368
                        End If
1369 9e1e7135 Gyusu
                    End If
1370 171ac39d Gyusu
1371
                Next
1372
1373
1374
1375
            Next
1376
            SetProgressbar(ProgressBar_Status, 100)
1377
            SetListBoxItems(ListBox_Result, " Auto converting 완료")
1378
            Return True
1379
        Catch ex As Exception
1380
            Return False
1381
        End Try
1382
    End Function
1383
1384
1385
1386
    Private Sub ThreadTask()
1387
1388
        If _DrawingsList.Count > 0 Then
1389
            AutoModeling()
1390
        End If
1391 e282643f Gyusu
    End Sub
1392
1393
1394 171ac39d Gyusu
1395 e282643f Gyusu
1396
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
1397
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
1398
        Dim oPath As String = ""
1399
        If oRows.Length > 0 Then
1400
            oPath = oRows(0).Item("Path").ToString()
1401
        End If
1402
        Return oPath
1403
    End Function
1404
1405 272662f9 Gyusu
    Private Sub LoadXmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadXmlToolStripMenuItem.Click
1406 171ac39d Gyusu
        If (FolderBrowserDialog1.ShowDialog() = DialogResult.OK) Then
1407
            LoadXmlItem(FolderBrowserDialog1.SelectedPath)
1408
        End If
1409
    End Sub
1410
    Private Sub LoadXmlItem(ByVal sFolderPath As String)
1411
        _DrawingsList = New List(Of Drawing)
1412
        Dim sfileEntries As String() = Directory.GetFiles(sFolderPath)
1413
        If Tree_Result.Nodes.Count > 0 Then
1414
            Tree_Result.Nodes(0).Nodes.Clear()
1415
            For Each sfileName In sfileEntries
1416
                Dim sExtension As String = Path.GetExtension(sfileName)
1417
                If sExtension = ".xml" Then
1418
                    Dim sDwgName As String = Path.GetFileNameWithoutExtension(sfileName)
1419
                    Dim sDwgPath As String = sfileName
1420
                    Dim oNode As TreeNode = Tree_Result.Nodes(0).Nodes.Add(sDwgPath, sDwgName, 15)
1421
                    Dim oDwg As Drawing = AddSymbolItem(sDwgPath, oNode)
1422
                    _DrawingsList.Add(oDwg)
1423
                End If
1424
            Next
1425
            Tree_Result.Nodes(0).Expand()
1426
        End If
1427
    End Sub
1428 272662f9 Gyusu
1429
1430 20c84e05 Gyusu
    ''' <summary>
1431
    '''  XML Tree 구조 생성 
1432
    ''' </summary>
1433
    ''' <param name="sDwgPath"></param>
1434 171ac39d Gyusu
    Private Function AddSymbolItem(ByVal sDwgPath As String, ByVal oParentNode As TreeNode) As Drawing
1435
        Dim oDwg_Ds As Drawing = LoadSymbolInXml(sDwgPath)
1436 20c84e05 Gyusu
1437 171ac39d Gyusu
        Dim oLineLists As List(Of Line_no) = oDwg_Ds.Line_nos
1438 20c84e05 Gyusu
        'PipeLine 구분
1439
1440 171ac39d Gyusu
        For Each oLinelist In oLineLists
1441
            Dim sLineNoUid As String = oLinelist.Uid
1442
            Dim sLineNo As String = oLinelist.Text
1443
            Dim oLineNoNode As TreeNode = oParentNode.Nodes.Add(sLineNoUid, sLineNo)
1444
            For Each oLineRow In oLinelist.Dt_Line.Rows
1445
                Dim sLineUid As String = oLineRow(_XML_LINE_UID)
1446
                Dim oPipeNode As TreeNode = oLineNoNode.Nodes.Add(sLineUid, "Pipe")
1447
                oPipeNode.Tag = sLineNoUid
1448
            Next
1449 272662f9 Gyusu
1450 171ac39d Gyusu
            For Each oSymbolRow In oLinelist.Dt_Symbol.Rows
1451
                Dim sSymbolUid As String = oSymbolRow(_XML_SYMBOL_UID)
1452
                Dim sSymbolName As String = oSymbolRow(_XML_SYMBOL_NAME)
1453
                Dim oSymbolNode As TreeNode = oLineNoNode.Nodes.Add(sSymbolUid, sSymbolName)
1454
                oSymbolNode.Tag = sLineNoUid
1455
            Next
1456
        Next
1457 272662f9 Gyusu
1458 171ac39d Gyusu
        Return oDwg_Ds
1459
    End Function
1460 272662f9 Gyusu
    Private Sub Tree_Result_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterCheck
1461
        If e.Node.Checked = True Then
1462
            For Each oNode As TreeNode In e.Node.Nodes
1463
                oNode.Checked = True
1464
            Next
1465
        Else
1466
            For Each oNode As TreeNode In e.Node.Nodes
1467
                oNode.Checked = False
1468
            Next
1469
        End If
1470
    End Sub
1471 171ac39d Gyusu
1472 e282643f Gyusu
End Class
1473
1474
1475
Public Class DrawingInfo
1476
    Public mDrawingName As String
1477
    Public mSpID As String
1478
    Public mPath As String
1479 4f359afa Gyusu
End Class
1480 e282643f Gyusu
1481
1482
1483
클립보드 이미지 추가 (최대 크기: 500 MB)