프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ 6fb1a52e

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

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

    
8

    
9
Imports System.Threading
10

    
11
Public Class Main
12

    
13
    Dim _DB As DataTable = New DataTable()
14
    Dim _Placement As New Placement
15
    Dim _DWG_X = 0.84 '0.695 '1 '
16
    Dim _DWG_Y = 0.594 '0.585 '0.8 '
17

    
18
    Dim _IMG_X = 9933
19
    Dim _IMG_Y = 7016
20

    
21
    'Drawing 전역변수
22
    Dim _objPIDADrawing As Object
23
    '현재선택한 폴더경로
24
    Dim _selectFolderPath As String
25

    
26
    Private _Main_trd As Thread
27

    
28

    
29

    
30

    
31

    
32
    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
33

    
34
        If My.Settings.DBPath <> "" And My.Settings.Plant_Hierarchy <> "" Then
35
            Dim sDBPath As String = My.Settings.DBPath
36
            LoadDB(sDBPath)
37

    
38
            'TestPID()
39
        Else
40
            MessageBox.Show("설정값을 먼저 확인해주세요")
41
        End If
42
    End Sub
43

    
44
    Public Function GetDrawingInfo(ByVal errorList As ArrayList)
45
        Dim ds As Llama.LMADataSource
46
        ds = New Llama.LMADataSource
47
        Dim lmaItem As Llama.LMAItem
48

    
49
        For i = 0 To errorList.Count - 1
50
            lmaItem = ds.GetModelItem(errorList.Item(i).m_strSPID()).AsLMAItem
51
            Dim drawingInfo As DrawingInfo
52
            drawingInfo = GetDrawingName(lmaItem.ItemType, lmaItem.Id)
53
            errorList.Item(i).m_LMAItem = lmaItem
54
            errorList.Item(i).m_strDrawingName = drawingInfo.mDrawingName
55
            errorList.Item(i).m_strDrawingPath = drawingInfo.mPath
56
        Next
57
    End Function
58
    Private mDataSource As Object
59

    
60
    'Public Sub New()
61

    
62
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
63
    '    '   mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
64
    '    'm_Information = SPPIDClass.Information.GetInstance()
65

    
66
    '    'If m_Information.InfoProject.ProjectVersion = SPPIDClass.InfoProject.SPPID_43 Then
67
    '    '    'SPPID4.3용
68
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
69
    '    'Else
70
    '    '    'SPPID2007, SPPID2009용
71
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
72
    '    'End If
73

    
74
    '    '  mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
75
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
76
    '    '#If LATE_BINDING Then
77
    '    '        mInstruments = CreateObject("Llama.LMInstruments", "")
78
    '    '        mPipingComps = CreateObject("Llama.LMPipingComps", "")
79
    '    '        mVessels = CreateObject("Llama.LMVessels", "")
80
    '    '        mDrawings = CreateObject("Llama.LMDrawings", "")
81
    '    '        mEquipments = CreateObject("Llama.LMEquipments", "")
82
    '    '        mExchangers = CreateObject("Llama.LMExchangers", "")
83
    '    '        mMechanicals = CreateObject("Llama.LMMechanicals", "")
84
    '    '        mNozzles = CreateObject("Llama.LMNozzles", "")
85
    '    '        mPipeRuns = CreateObject("Llama.LMPipeRuns", "")
86
    '    '        mEquipmentOthers = CreateObject("Llama.LMEquipmentOthers", "")
87
    '    '#Else
88
    '    '        mInstruments = New Llama.LMInstruments
89
    '    '        mPipingComps = New Llama.LMPipingComps
90
    '    '        mVessels = New Llama.LMVessels
91
    '    '        mDrawings = New Llama.LMDrawings
92
    '    '        mEquipments = New Llama.LMEquipments
93
    '    '        mExchangers = New Llama.LMExchangers
94
    '    '        mMechanicals = New Llama.LMMechanicals
95
    '    '        mNozzles = New Llama.LMNozzles
96
    '    '        mPipeRuns = New Llama.LMPipeRuns
97
    '    '        mEquipmentOthers = New Llama.LMEquipmentOthers
98
    '    '#End If
99
    'End Sub
100
    Public Function GetDrawingName(ByVal itemType As String, ByVal itemName As String) As DrawingInfo
101

    
102
        Dim objFilter As Object
103
        objFilter = CreateObject("Llama.LMAFilter", "")
104

    
105
        Dim drawingInfo As DrawingInfo
106
        drawingInfo = New DrawingInfo
107

    
108
        objFilter.Criteria.AddNew("FirstOne")
109
        objFilter.Criteria.Item("FirstOne").SourceAttributeName = "SP_ID"
110
        objFilter.Critedkria.Item("FirstOne").ValueAttribute = itemName
111

    
112
        objFilter.Criteria.Item("FirstOne").Operator = "="
113
        objFilter.Criteria.AddNew("SecondOne")
114
        objFilter.Criteria.Item("SecondOne").SourceAttributeName = "ItemStatus"
115
        objFilter.Criteria.Item("SecondOne").ValueAttribute = 1
116
        objFilter.Criteria.Item("SecondOne").Operator = "="
117
        objFilter.Criteria.Item("SecondOne").Conjunctive = -1
118
        objFilter.ItemType = itemType
119

    
120
        Dim PlantItems As Object
121
        PlantItems = CreateObject("Llama.LMPlantItems", "")
122
        PlantItems.Collect(mDataSource, Filter:=objFilter)
123

    
124
        If PlantItems.Count = 0 Then
125
            drawingInfo.mSpID = "PlantStockpile"
126
        End If
127

    
128
        For Each PlantItem In PlantItems
129

    
130
            'If Not PlantItem.Representations.Nth(1).DrawingID.Value.ToString().Equals("0") Then
131
            Try
132
                drawingInfo.mDrawingName = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Name").Value
133
                drawingInfo.mSpID = PlantItem.Representations.Nth(1).DrawingID
134
                drawingInfo.mPath = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Path").Value
135
                Debug.WriteLine("DrawingName : " & drawingInfo.mDrawingName & ", SPID : " & drawingInfo.mSpID & ", Path : " & drawingInfo.mPath)
136
            Catch ex As Exception
137

    
138
            End Try
139

    
140
            'End If
141

    
142
        Next
143

    
144
        Return drawingInfo
145

    
146
    End Function
147

    
148
    Private Sub TestPID()
149

    
150
        Try
151

    
152
            Dim datasource As LMADataSource
153
            Dim objPIDAutoApp As Object
154
            Dim objPIDADrawing As Object
155
            Dim objDrawing As LMDrawing
156
            Dim objDrawings As LMDrawings
157
            datasource = New LMADataSource
158

    
159

    
160
            Dim oObj As Object = Nothing
161
            objDrawing = datasource.GetDrawing(oObj)
162
            objDrawings = New LMDrawings
163
            objDrawings.Collect(datasource)
164
            objPIDAutoApp = GetObject(, "SmartPlantPID.Application") '// CreateObject("PIDAutomation.Application")
165
            For Each objDrawing In objDrawings
166
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
167
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
168
                    If Not objPIDADrawing Is Nothing Then
169
                        MessageBox.Show("Drawing " & objDrawing.Attributes("Name").Value & " is opened!")
170
                        objPIDADrawing.CloseDrawing
171
                    End If
172
                End If
173
            Next
174
            objPIDAutoApp.Quit
175
            objPIDAutoApp = Nothing
176
            objPIDADrawing = Nothing
177
            objDrawing = Nothing
178
            objDrawings = Nothing
179
        Catch ex As Exception
180

    
181
        End Try
182

    
183

    
184

    
185
    End Sub
186
    Public Function SetActiveSiteFromConfigInfo(ByVal strActiveSite As String) As Boolean
187

    
188
        On Error GoTo errHandler
189
        Dim objConfigInfo As Object 'interopigrConfigInfo412.igrConfigInfo
190
        objConfigInfo = CreateObject("interopigrConfigInfo412.igrConfigInfo", "")
191
        If Not objConfigInfo Is Nothing Then
192
            objConfigInfo.ApplicationName = "SmartPlantManager"
193
            objConfigInfo.SetConfigString(3, "SmartPlant Manager", "SiteServer", strActiveSite)
194
            SetActiveSiteFromConfigInfo = True
195
        End If
196
        objConfigInfo = Nothing
197

    
198
        Exit Function
199

    
200
errHandler:
201
        '    LogAndRaiseError ModuleName & "::GetConfigInfo "
202
    End Function
203

    
204
    Private Function CreateDwg(ByVal oDwgName As String) As Boolean
205
        Dim objPIDADrawing As Object = Nothing
206
        Dim objPIDAutoApp As Object = Nothing
207
        Dim datasource As LMADataSource = Nothing
208
        Try
209
            Dim DrawingNumber As String
210
            Dim DrawingName As String
211
            Dim sPlantGroupName As String = "Test"
212
            Dim sTemplateName As String = "\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\P&ID Reference Data\Template Files\Gazprom Project.pid"
213
            Dim objDrawing As LMDrawing
214
            Dim objDrawings As LMDrawings
215
            objDrawings = New LMDrawings
216
            datasource = New LMADataSource
217
            Debug.Print(datasource.ProjectNumber)
218
            Debug.Print(datasource.SiteNode)
219
            Debug.Print(datasource.IsSatellite)
220
            Debug.Print(datasource.GetSystemEditingToolbarSetting)
221
            objDrawings.Collect(datasource)
222
            Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
223
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
224
            For Each objDrawing In objDrawings
225
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
226
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(sPath)
227
                    If Not objPIDADrawing Is Nothing Then
228

    
229
                        objPIDADrawing.CloseDrawing
230
                    End If
231
                End If
232
            Next
233

    
234
            Dim extension As String = Path.GetExtension(oDwgName)
235
            oDwgName = oDwgName.Replace(extension, "")
236

    
237
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
238

    
239
            'For Each objDrawing In objPIDAutoApp.Drawings
240
            '    objDrawing.CloseDrawing(True)
241
            'Next
242

    
243
            objPIDAutoApp.Drawings.OpenDrawing(oDwgName + ".pid")
244

    
245
            objPIDAutoApp.ActiveWindow.Fit()
246

    
247
            Return True
248
        Catch ex As Exception
249
            If objPIDADrawing IsNot Nothing Then
250
                objPIDADrawing.CloseDrawing
251
            End If
252
            If objPIDAutoApp IsNot Nothing Then
253
                objPIDAutoApp.Quit
254
            End If
255
            datasource = Nothing
256
            objPIDAutoApp = Nothing
257
            objPIDADrawing = Nothing
258
            Return False
259
        End Try
260
        If objPIDADrawing IsNot Nothing Then
261
            objPIDADrawing.CloseDrawing
262
        End If
263

    
264
    End Function
265

    
266

    
267
    Private Function GetSymbolMapping(ByVal oSymbolName As String) As String
268
        Dim oSystemPath As String = ""
269
        If _DB.Rows.Count > 0 Then
270
            Dim oSelectRow() As DataRow = _DB.Select("[pid_symbolname] = '" + oSymbolName + "'")
271
            If oSelectRow.Length = 1 Then
272
                oSystemPath = oSelectRow(0).Item("sppid_systempath").ToString()
273
            End If
274
        End If
275
        Return oSystemPath
276
    End Function
277

    
278

    
279
    Private Function LoadSymbolInXml(ByVal sXmlPath As String) As DataTable
280
        Dim oDt As DataTable = LoadSymbol_DT()
281
        Dim oElement As XElement = XElement.Load(sXmlPath)
282
        If oElement IsNot Nothing Then
283
            For Each symbols As Object In oElement.Elements("SYMBOLS")
284
                For Each page As Object In symbols.Elements("SYMBOL")
285
                    Dim oAddrow As DataRow = oDt.NewRow()
286
                    Dim oObj As XElement = page.Element("NAME")
287
                    Dim oName = oObj.Value
288
                    oObj = page.Element("TEXT")
289
                    Dim oText = oObj.Value
290
                    oObj = page.Element("CLASS")
291
                    Dim oClass = oObj.Value
292
                    oObj = page.Element("TYPE")
293
                    Dim oType = oObj.Value
294
                    oObj = page.Element("ITEM")
295
                    Dim oItem = oObj.Value
296
                    ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
297
                    Dim oSymbolPath As String = GetSymbolMapping(oItem)
298
                    oObj = page.Element("ORIGINALPOINT")
299
                    Dim sOriginPoint = oObj.Value
300
                    oObj = page.Element("ANGLE")
301
                    Dim oAngle = oObj.Value
302
                    Dim oSplitPos As String() = sOriginPoint.Split(",")
303
                    Dim oX As Double = 0.0
304
                    Dim oY As Double = 0.0
305
                    If IsNumeric(oSplitPos(0)) Then
306
                        oX = Double.Parse(oSplitPos(0))
307
                    End If
308
                    If IsNumeric(oSplitPos(1)) Then
309
                        oY = Double.Parse(oSplitPos(1))
310
                    End If
311
                    ConvertPoint(oX, oY, _IMG_X, _IMG_Y)
312
                    oAddrow("x") = oX '+ 0.05
313
                    oAddrow("Y") = oY
314
                    oAddrow("Class") = oClass
315
                    oAddrow("Angle") = oAngle
316
                    oAddrow("SystemPath") = oSymbolPath
317
                    oAddrow("Text") = oText
318
                    oAddrow("Name") = oName
319
                    oAddrow("Item") = oItem
320
                    oAddrow("Type") = oType
321
                    oAddrow("uid") = Guid.NewGuid.ToString()
322
                    oDt.Rows.Add(oAddrow)
323
                Next
324
            Next
325
        End If
326
        Return oDt
327
    End Function
328

    
329

    
330

    
331
    Private Function LoadPipeInXml(ByVal sXmlPath As String) As DataTable
332
        Try
333
            Dim oDt As DataTable = LoadPipe_DT()
334
            Dim oElement As XElement = XElement.Load(sXmlPath)
335
            If oElement IsNot Nothing Then
336
                Dim DWGElement As XElement = oElement.Element("DWGNAME")
337
                Dim DWGNAME = DWGElement.Value
338
                Dim sXY As XElement = oElement.Element("SIZE")
339
                Dim sSize = sXY.Value
340
                Dim oSplitDWGPos As String() = sSize.Split(", ")
341

    
342
                If IsNumeric(oSplitDWGPos(0)) Then
343
                    _IMG_X = Double.Parse(oSplitDWGPos(0))
344
                End If
345
                If IsNumeric(oSplitDWGPos(1)) Then
346
                    _IMG_Y = Double.Parse(oSplitDWGPos(1))
347
                End If
348

    
349
                For Each pipes As Object In oElement.Elements("IMGLINES")
350
                    For Each pipe As Object In pipes.Elements("IMGLINE")
351
                        Dim oAddrow As DataRow = oDt.NewRow()
352
                        Dim oObj As XElement = pipe.Element("ITEM")
353
                        Dim oItem = oObj.Value
354
                        ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
355
                        Dim oSymbolPath As String = GetSymbolMapping(oItem)
356
                        oObj = pipe.Element("START")
357
                        Dim oStartPoint = oObj.Value
358
                        Dim oSplitPos As String() = oStartPoint.Split(", ")
359
                        Dim oStartpos_X As Double = 0.0
360
                        Dim oStartpos_Y As Double = 0.0
361
                        If IsNumeric(oSplitPos(0)) Then
362
                            oStartpos_X = Double.Parse(oSplitPos(0))
363
                        End If
364
                        If IsNumeric(oSplitPos(1)) Then
365
                            oStartpos_Y = Double.Parse(oSplitPos(1))
366
                        End If
367

    
368
                        ConvertPoint(oStartpos_X, oStartpos_Y, _DWG_X, _DWG_Y)
369
                        oObj = pipe.Element("End")
370
                        Dim oEndPoint = oObj.Value
371
                        oSplitPos = oEndPoint.Split(", ")
372
                        Dim oEndpos_X As Double = 0.0
373
                        Dim oEndpos_Y As Double = 0.0
374
                        If IsNumeric(oSplitPos(0)) Then
375
                            oEndpos_X = Double.Parse(oSplitPos(0))
376
                        End If
377
                        If IsNumeric(oSplitPos(1)) Then
378
                            oEndpos_Y = Double.Parse(oSplitPos(1))
379
                        End If
380
                        ConvertPoint(oEndpos_X, oEndpos_Y, _DWG_X, _DWG_Y)
381

    
382
                        oAddrow("start_x") = oStartpos_X '+ 0.05
383
                        oAddrow("start_y") = oStartpos_Y
384
                        oAddrow("end_x") = oEndpos_X
385
                        oAddrow("end_y") = oEndpos_Y
386
                        oAddrow("SystemPath") = oSymbolPath
387
                        oDt.Rows.Add(oAddrow)
388
                    Next
389
                Next
390

    
391
            End If
392

    
393

    
394
            Return oDt
395
        Catch ex As Exception
396
            Return Nothing
397
        End Try
398
    End Function
399

    
400

    
401
    Private Sub ConvertPoint(ByRef dX As Double, ByRef dY As Double, ByVal dDwgX As Double, ByVal dDwgY As Double)
402

    
403
        Dim calcx As Double = 0
404
        Dim calcy As Double = 0
405
        calcx = (dX * _DWG_X) / dDwgX 'Math.Round((dX * _DWG_X) / dDwgX, 2)
406
        calcy = _DWG_Y - (dY * _DWG_Y) / dDwgY '_DWG_Y - Math.Round((dY * _DWG_Y) / dDwgY, 2)
407
        dX = calcx
408
        dY = calcy
409
    End Sub
410

    
411

    
412
    '@brief Convert To SPPID
413
    '@author : Gyusu Park
414
    '@date : 2018-04-10
415
    '@history:
416

    
417
    Private Function AutoConverting(ByVal oPipe_Dt As DataTable, ByVal oSymbol_Dt As DataTable, ByVal oTreeNode As TreeNode) As Boolean
418
        Dim iTotalCount As Double = oPipe_Dt.Rows.Count + oSymbol_Dt.Rows.Count
419
        Dim iSymbolcount As Double = 0
420

    
421
        Dim lobjDatasource As Object = _Placement.PIDDataSource
422

    
423
        ' lobjDatasource.BeginTransaction()
424
        '  datasource = objPlacement.PIDDataSource
425
        'Dim iPipecnt As Integer = 0
426
        SetListBoxItems(ListBox_Result, " Auto converting 시작....")
427

    
428
        Dim iPipeCnt As Integer = 0
429
        If oPipe_Dt IsNot Nothing Then
430
            For Each oRow As DataRow In oPipe_Dt.Rows
431
                Dim oposition As String = oRow("position").ToString()
432
                Dim oSymbol As String = oRow("SystemPath").ToString()
433
                Dim oSplitStr As String() = Split(oposition, " ")
434
                Dim objConnector As LMConnector
435
                Dim objInputs As PlaceRunInputs
436
                objInputs = New PlaceRunInputs
437

    
438
                For Each sposition As String In oSplitStr
439
                    Dim opointstr As String() = Split(sposition, ", ")
440

    
441
                    If (opointstr.Length > 1) Then
442
                        If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
443
                            Dim ox As Double = opointstr(0)
444
                            Dim oy As Double = opointstr(1)
445
                            ConvertPoint(ox, oy, _IMG_X, _IMG_Y)
446
                            objInputs.AddPoint(ox, oy)
447
                        End If
448
                    End If
449
                Next
450
                Dim objItem As LMAItem
451
                objItem = _Placement.PIDCreateItem(oSymbol)
452
                objConnector = _Placement.PIDPlaceRun(objItem, objInputs)
453
                SetListBoxItems(ListBox_Result, " Place PipeLine...." & "(" & (iPipeCnt + 1) & "/" & oPipe_Dt.Rows.Count)
454
                'Dim objPipeRun As LMPipeRun = datasource.GetPipeRun(objConnector.ModelItemID)
455
                'objPipeRun.Attributes("OperFluidCode").Value = "AFS"
456
                'objPipeRun.Commit()
457
                iSymbolcount = iSymbolcount + 1
458
                iPipeCnt = iPipeCnt + 1
459
            Next
460
        End If
461

    
462
        SetListBoxItems(ListBox_Result, " Place PipeLine....완료")
463

    
464
        Dim iAllInstrumentCnt As Integer = oSymbol_Dt.Select("Name = 'INSTRUMENTATION'").Length
465
                    Dim iValveCnt As Integer = oSymbol_Dt.Select("Class = 'VALVES'").Length
466
        Dim iInstrumentCnt As Integer = 1
467
        Dim iFittingsCnt As Integer = 1
468

    
469
        Dim oInsNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Instruments", True)(0)
470
        Dim oValveNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Valves", True)(0)
471
        Dim oFittingsNode As TreeNode = oTreeNode.Nodes.Find(oTreeNode.Name & "\Fittings", True)(0)
472
        For Each oRow As DataRow In oSymbol_Dt.Rows
473

    
474
            Try
475

    
476
                Dim sSystemPath As String = oRow("SystemPath").ToString()
477
                Dim sName As String = oRow("Name").ToString()
478
                Dim sType As String = oRow("Type").ToString()
479
                Dim sText As String = oRow("Text").ToString()
480
                Dim sClass As String = oRow("Class").ToString()
481
                Dim sItem As String = oRow("Item").ToString()
482

    
483
                Dim oX As Double = 0.0
484
                Dim oY As Double = 0.0
485
                If IsNumeric(oRow("x").ToString()) Then
486
                    oX = Double.Parse(oRow("x").ToString())
487
                End If
488
                If IsNumeric(oRow("y").ToString()) Then
489
                    oY = Double.Parse(oRow("y").ToString())
490
                End If
491
                Dim oAngle As Double = 0.0
492
                If IsNumeric(oRow("Angle").ToString()) Then
493
                    oAngle = Double.Parse(oRow("Angle").ToString())
494
                End If
495
                '   oSymbol = "\INSTRUMENTation\SYSTEM FUNCTIONS\D C S\DCS FUNC ACCESS IN PRIME LOC.sym"
496
                If sSystemPath <> "" Then
497
                    If sName = _TYPE_Instumentation Then
498

    
499
                        Dim sTagsuffix As String = ""
500
                        Dim sTagSequenceNo As String = ""
501
                        Dim sMeasuredVariableCode As String = ""
502
                        Dim sInstrumentTypeModifier As String = ""
503

    
504
                        If sText <> "" Then
505
                            If sText.Contains(",") Then
506
                                Dim splitstr() As String = sText.Split(",")
507
                                For i = 0 To splitstr.Count - 1
508
                                    If i = 0 Then
509
                                        sMeasuredVariableCode = Mid(splitstr(i), 1, 1)
510
                                        sTagSequenceNo = Mid(splitstr(i), 2, Len(splitstr(i)))
511
                                    Else
512
                                        If Len(splitstr(i)) = 1 Then
513
                                            sInstrumentTypeModifier = splitstr(i)
514
                                        ElseIf Len(splitstr(i)) = 0 Then
515

    
516
                                        ElseIf Len(splitstr(i)) > 1 Then
517
                                            sInstrumentTypeModifier = Mid(splitstr(i), 1, 1)
518
                                            sTagsuffix = Mid(splitstr(i), 2, Len(splitstr(i)))
519
                                        End If
520
                                    End If
521
                                Next
522
                            Else
523
                                sMeasuredVariableCode = Mid(sText, 1, 1)
524
                                sTagSequenceNo = Mid(sText, 2, Len(sText))
525
                            End If
526

    
527
                        End If
528

    
529
                        Dim objInstrSym As LMSymbol
530
                        objInstrSym = _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
531
                        SetListBoxItems(ListBox_Result, " Place Instrument...." & "(" & (iInstrumentCnt + 1) & "/" & iAllInstrumentCnt & ")")
532

    
533
                        ' SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sTagSequenceNo)
534
                        Dim action As Action = Sub()
535
                                                   oInsNode.Nodes.Add(sClass & "-" & iInstrumentCnt)
536
                                                   oInsNode.ExpandAll()
537
                                               End Sub
538
                        oInsNode.TreeView.Invoke(action)
539

    
540

    
541
                        Dim objInstr As LMInstrument
542
                        objInstr = lobjDatasource.GetInstrument(objInstrSym.ModelItemID)
543

    
544
                        Dim objItem As LMAItem
545
                        objItem = _Placement.PIDCreateItem(sSystemPath)
546

    
547

    
548
                        objInstr.Attributes("MeasuredVariableCode").Value = sMeasuredVariableCode
549
                        objInstr.Attributes("InstrumentTypeModifier").Value = sInstrumentTypeModifier
550
                        objInstr.Attributes("TagSuffix").Value = sTagsuffix
551
                        objInstr.Attributes("TagSequenceNo").Value = sTagSequenceNo
552
                        objInstr.Commit()
553
                        iInstrumentCnt = iInstrumentCnt + 1
554
                    ElseIf sName = "GATE VALVE WITH PLUG" Then
555

    
556
                    ElseIf sName = "MEDIUM 1D 1TO1" Then
557

    
558
                    ElseIf sClass = "VALVES" Then
559
                        Dim action As Action = Sub()
560
                                                   oValveNode.ExpandAll()
561
                                                   oValveNode.Nodes.Add(sClass & "-" & iValveCnt)
562
                                               End Sub
563
                        oValveNode.TreeView.Invoke(action)
564

    
565
                        _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
566

    
567
                        iValveCnt = iValveCnt + 1
568
                    Else
569
                        Dim action As Action = Sub()
570
                                                   oFittingsNode.ExpandAll()
571
                                                   oFittingsNode.Nodes.Add(sClass & "-" & iFittingsCnt)
572
                                               End Sub
573
                        oFittingsNode.TreeView.Invoke(action)
574
                        _Placement.PIDPlaceSymbol(sSystemPath, oX, oY, , oAngle)
575

    
576
                        iFittingsCnt = iFittingsCnt + 1
577

    
578
                    End If
579
                    iSymbolcount = iSymbolcount + 1
580
                Else
581
                End If
582
            Catch ex As Exception
583

    
584
            End Try
585
            Dim dCalcProgressValue As Double = (iSymbolcount / iTotalCount) * 100
586
            SetProgressbar(ProgressBar_Status, dCalcProgressValue)
587
            '     ProgressBar_Status.Value = (iSymbolcount / iTotalCount) * 100
588

    
589
        Next
590

    
591
        MsgBox("Complete AutoConverting")
592
        SetListBoxItems(ListBox_Result, "Place Instrument....변환완료")
593
        SetListBoxItems(ListBox_Result, "총 symbol:  " & iSymbolcount & "개 변환완료")
594
        SetProgressbar(ProgressBar_Status, 100)
595
        ' MsgBox("symbol: " & iSymbolcount & "개, pipe : " & iPipecnt & "개 변환완료")
596
    End Function
597

    
598

    
599
    Private Sub Tree_XMLFiles_AfterCheck(sender As Object, e As TreeViewEventArgs)
600
        If e.Node.Checked = True Then
601
            For Each oNode As TreeNode In e.Node.Nodes
602
                oNode.Checked = True
603
            Next
604
        Else
605
            For Each oNode As TreeNode In e.Node.Nodes
606
                oNode.Checked = False
607
            Next
608
        End If
609
    End Sub
610

    
611
    Private Sub LoadDB(ByVal sDBPath As String)
612

    
613
        Try
614
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
615
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
616
            conn.Open()
617
            Dim sQuery As String = "Select * from Mapping"
618
            Dim cmd As SQLiteCommand = conn.CreateCommand()
619
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
620
            Dim oDataSet As DataSet = New DataSet()
621
            adapter.Fill(oDataSet)
622
            _DB = oDataSet.Tables(0)
623
        Catch ex As Exception
624

    
625
        End Try
626

    
627

    
628
    End Sub
629

    
630

    
631

    
632
    'Private Sub Tree_XMLFiles_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Tree_XMLFiles.AfterSelect
633
    '    If first_start = False Then Exit Sub
634
    '    Dim pa = e.Node.FullPath.ToString
635

    
636
    '    printfilesfolders_here(pa, e.Node)
637

    
638
    '    displayfiles(pa)
639

    
640
    '    Dim coco As String = ""
641
    '    coco = pa.ToString
642
    '    coco = coco.Replace("\\", "\")
643
    '    Me.Text = coco
644
    '    folders_path = coco
645
    'End Sub
646

    
647
    Sub printfilesfolders_here(ByVal path As String, ByRef itree As TreeNode)
648

    
649
        Dim foldername As String
650
        Dim filename As String
651
        itree.Nodes.Clear()
652
        On Error GoTo eee
653
        For Each foldername In Directory.GetDirectories(path)
654
            On Error GoTo eee
655
            Dim jj = foldername.LastIndexOf("\")
656
            Dim jj1 = foldername.Length - jj
657
            Dim foldr = foldername.Substring((jj + 1), (jj1 - 1))
658
            itree.Nodes.Add(foldr, foldr)
659
        Next ' if you put this next at the end of procedure recursive will be done on first folder only
660
        Exit Sub
661
eee:
662
    End Sub
663

    
664

    
665

    
666
    '    Private Sub Tree_XMLFiles_MouseMove(sender As Object, e As MouseEventArgs) Handles Tree_XMLFiles.MouseMove
667
    '        first_start = True
668
    '    End Sub
669

    
670
    '    Private Sub ListView_File_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView_File.SelectedIndexChanged
671
    '        Dim indexes As ListView.SelectedIndexCollection =
672
    '                         Me.ListView_File.SelectedIndices
673
    '        Dim index As Integer
674

    
675
    '        For Each index In indexes
676
    '            'On Error Resume Next
677
    '            If folders_path.EndsWith("\") = True Then
678
    '                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
679
    '                'On Error Resume Next
680
    '            Else
681
    '                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
682
    '            End If
683

    
684
    '            Dim infoReader As System.IO.FileInfo
685
    '            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
686
    '            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
687
    '        Next
688
    '    End Sub
689

    
690
    '    Private Sub Procees()
691
    '        Dim indexes As ListView.SelectedIndexCollection =
692
    '                            Me.ListView_File.SelectedIndices
693
    '        Dim index As Integer
694

    
695
    '        For Each index In indexes
696
    '            'On Error Resume Next
697
    '            If folders_path.EndsWith("\") = True Then
698
    '                On Error GoTo out
699
    '                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
700
    '                On Error GoTo out
701
    '                'On Error Resume Next
702
    '            Else
703
    '                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
704
    '                On Error GoTo out
705
    '            End If
706

    
707
    '            Dim infoReader As System.IO.FileInfo
708
    '            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
709
    '            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
710
    '            On Error GoTo out
711
    '            MsgBox(Me.Status_Main.Items(0).Text + " is processed")
712
    '            On Error GoTo out
713
    '        Next
714
    '        Exit Sub
715
    'out:
716
    '        MsgBox(Err.Description)
717
    'End Sub
718

    
719
    Private Function LoadAllDrawing() As DataTable
720

    
721

    
722
        SetListBoxItems(ListBox_Result, "도면정보 로드중....")
723

    
724
        Dim oDt As DataTable = Drawing_Dt()
725
        'Dim oDt As DataTable = Drawing_Dt()
726
        '_objPIDADrawing = CreateObject("PIDAutomation.Application")
727
        'For Each objDrawing In _objPIDADrawing.Drawings
728
        '    Dim sName As String = objDrawing.Attributes("Name").Value
729
        '    Dim sPath As String = objDrawing.Attributes("Path").Value
730
        '    Dim oAddRow As DataRow = oDt.NewRow()
731
        '    oAddRow("Name") = sName
732
        '    oAddRow("Path") = sPath
733
        '    oDt.Rows.Add(oAddRow)
734
        'Next
735
        Dim sHierarchy As String = My.Settings.Plant_Hierarchy
736

    
737

    
738
        Dim files() As String
739
        files = Directory.GetFiles(sHierarchy, "*.pid", SearchOption.AllDirectories)
740
        For Each FileName As String In files
741
            Dim sName As String = FileName
742
            Dim oAddRow As DataRow = oDt.NewRow()
743
            oAddRow("Name") = Path.GetFileNameWithoutExtension(sName)
744
            oAddRow("Path") = FileName
745
            oDt.Rows.Add(oAddRow)
746
            '  Console.WriteLine(FileName)
747
        Next
748

    
749

    
750

    
751
        'Dim datasource As LMADataSource
752
        'Dim objPIDAutoApp As Object
753
        'Dim objPIDADrawing As Object
754
        'Dim objDrawing As LMDrawing
755
        'Dim objDrawings As LMDrawings
756
        'objPIDAutoApp = CreateObject("PIDAutomation.Application")
757
        'objPIDAutoApp = GetObject(, "SmartPlantPID.Application")
758

    
759
        'datasource = CreateObject("Llama.LMADataSource", "")
760
        'Dim oObj As Object = Nothing
761
        'objDrawings = New LMDrawings
762
        'objDrawing = datasource.GetDrawing(oObj)
763

    
764
        'objDrawings.Collect(datasource)
765
        ''     objPIDAutoApp = GetObject(, "SmartPlantPID.Application") '// CreateObject("PIDAutomation.Application")
766
        'For Each objDrawing In objDrawings
767
        '    Dim sName As String = objDrawing.Attributes("Name").Value
768
        '    Dim sPath As String = objDrawing.Attributes("Path").Value
769
        '    Dim oAddRow As DataRow = oDt.NewRow()
770
        '    oAddRow("Name") = sName
771
        '    oAddRow("Path") = sHierarchy & "\" & sPath
772
        '    oDt.Rows.Add(oAddRow)
773
        'Next
774

    
775
        Return oDt
776
    End Function
777

    
778
    Private Function LoadAllDrawing2() As DataTable
779
        Dim datasource As LMADataSource
780
        Dim objPIDAutoApp As Object
781
        Dim objPIDADrawing As Object
782
        Dim objDrawing As Object 'Drawing
783
        'Dim objDrawing As LMDrawing
784
        'Dim objDrawings As LMDrawings
785

    
786
        datasource = New LMADataSource
787

    
788
        '    objDrawings = New LMDrawings
789
        'objDrawings.Collect(datasource)
790
        objPIDAutoApp = CreateObject("PIDAutomation.Application")
791

    
792
        For Each objDrawing In objPIDAutoApp.Drawings
793
            objDrawing.CloseDrawing(True)
794
        Next
795
        Try
796
            objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("UY1-K-2000_P1_300dpi_0321_TEST_1")
797
        Catch ex As Exception
798
            Process.Start("\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
799
        End Try
800

    
801

    
802

    
803
        Dim sType As Type = objPIDAutoApp.GetType()
804
        Dim iCount As Integer = 0
805
        ' Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
806

    
807
        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("1")
808

    
809
        For Each objDrawing In objPIDAutoApp.Drawings
810
            If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
811
                Try
812

    
813
                    Dim sName As String = objDrawing.Attributes("Name").Value
814

    
815
                    iCount = iCount + 1
816
                    If sName = "UY1-K-2000_P1_300dpi_0321_TEST_1" Then
817
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
818
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
819
                        If Not objPIDADrawing Is Nothing Then
820
                            objPIDADrawing.CloseDrawing()
821
                        End If
822
                    End If
823

    
824

    
825
                Catch ex As Exception
826

    
827
                End Try
828

    
829
            End If
830
        Next
831
        objPIDAutoApp.Quit
832
        objPIDAutoApp = Nothing
833
        objPIDADrawing = Nothing
834
        objDrawing = Nothing
835
        '   objDrawings = Nothing
836
    End Function
837

    
838
    Dim _XMLList As ListView = New ListView()
839

    
840
    Private Sub ThreadTask()
841

    
842

    
843
        If _XMLList.Items.Count > 0 Then
844

    
845
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
846
            Dim iDwgCnt As Integer = 0
847
            Dim objPIDAutoApp As Object
848
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
849

    
850

    
851
            Dim myList = DirectCast(Invoke(New GetListViewDelegate(AddressOf GetListViewItems), _XMLList), List(Of String))
852
            For i = 0 To myList.Count - 1
853

    
854
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(myList(i))
855
                Txt_Status.Text = sDwgName & "..(" & i + 1 & "/" & myList.Count & ")"
856
                SetListBoxItems(ListBox_Result, Txt_Status.Text & " 처리중....")
857
                Dim sDwgNo As String = myList(i)
858
                Dim oDwgPath As String = ""
859
                oDwgPath = _selectFolderPath + "\" + sDwgNo
860

    
861
                Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
862
                If sPath <> "" Then
863

    
864
                    Process.Start(sPath)
865

    
866
                    Dim bCheckOpenDrawing As Boolean = False
867
                    While (True)
868
                        bCheckOpenDrawing = CheckOpenDrawing()
869
                        If bCheckOpenDrawing = True Then
870
                            Exit While
871
                        Else
872
                            Thread.Sleep(2000)
873
                        End If
874
                    End While
875

    
876
                    If bCheckOpenDrawing Then
877
                        SetListBoxItems(ListBox_Result, sDwgName & " 도면 Open....")
878
                        Dim oPipe_Dt As DataTable = New DataTable() 'LoadPipeInXml(oDwgPath)
879

    
880
                        Dim oSymbol_Dt As DataTable = LoadSymbolInXml(oDwgPath)
881
                        Dim oTreeNode As New TreeNode  'SetTreeViewItems(Tree_Result, Tree_Result.Nodes, sDwgName, sDwgName)
882
                        'oTreeNode = Tree_Result.Nodes.Find(sDwgName, True)(0)
883
                        Dim action As Action = Sub()
884
                                                   oTreeNode = Tree_Result.Nodes.Add(sDwgName, sDwgName)
885
                                                   SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Instruments", "Instuments")
886
                                                   SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Pipes", "Pipes")
887
                                                   SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Valves", "Valves")
888
                                                   SetTreeViewItems(Tree_Result, oTreeNode.Nodes, sDwgName & "\Fittings", "Fittings")
889
                                                   oTreeNode.ExpandAll()
890
                                               End Sub
891
                        Tree_Result.Invoke(action)
892

    
893

    
894
                        '    oTreeNode.Expand()
895
                        SetListBoxItems(ListBox_Result, sDwgName & " Auto converting 대기....")
896
                        AutoConverting(oPipe_Dt, oSymbol_Dt, oTreeNode)
897

    
898
                    End If
899

    
900
                End If
901
                ''도면 생성
902
                'If CreateDwg(sDwgName) Then
903
                '    'AutoConverting
904

    
905
                'End If
906

    
907
            Next
908
        End If
909
    End Sub
910

    
911

    
912
    Private Function CheckOpenDrawing() As Boolean
913
        Try
914

    
915
            Dim lobjDatasource As Object
916
            _Placement = CreateObject("Plaice.Placement", "")
917
            lobjDatasource = _Placement.PIDDataSource
918
            Return True
919
        Catch ex As Exception
920
            Return False
921
        End Try
922

    
923
    End Function
924

    
925

    
926
    Private Sub Btn_Convert_Click(sender As Object, e As EventArgs) Handles Btn_Convert.Click
927

    
928
        Main_Tab.SelectedIndex = 1
929
        ListBox_Result.Items.Clear()
930
        DataGrid_Result.DataSource = New DataTable()
931
        Me.ProgressBar_Status.Visible = True
932
            ProgressBar_Status.Maximum = 100
933
            ProgressBar_Status.Value = 0
934
        ' _selectFolderPath = Tree_XMLFiles.SelectedNode.FullPath.Replace("\\", "\")
935
        _Main_trd = New Thread(AddressOf ThreadTask)
936
        _Main_trd.IsBackground = True
937
        _Main_trd.Start()
938

    
939
    End Sub
940

    
941

    
942
    Private Function GetCheckList(ByVal listviewItem As ListViewItem)
943

    
944
    End Function
945

    
946
    Private Sub newThreadFunc(ByVal state As Object)
947

    
948
    End Sub
949

    
950
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
951
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
952
        Dim oPath As String = ""
953
        If oRows.Length > 0 Then
954
            oPath = oRows(0).Item("Path").ToString()
955
        End If
956
        Return oPath
957
    End Function
958

    
959

    
960
    Private Sub Btn_Setting_Click(sender As Object, e As EventArgs) Handles Btn_Setting.Click
961
        Dim oSettings As Settings = New Settings()
962
        oSettings.ShowDialog()
963
    End Sub
964

    
965
    Private Sub Btn_Stop_Click(sender As Object, e As EventArgs) Handles Btn_Stop.Click
966
        Try
967
            _Main_trd.Abort()
968
        Catch ex As Exception
969

    
970
        End Try
971
    End Sub
972

    
973
    Private Sub DropDown_File_Click(sender As Object, e As EventArgs) Handles DropDown_File.Click
974

    
975
    End Sub
976

    
977
    Private Sub TestLineToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TestLineToolStripMenuItem.Click
978

    
979
        Dim objPlacement As New Placement
980
        'PipeLine 
981
        'Nominal diameter -fluidcode- tagseqno-piping material spec - insulation purpose
982
        Dim datasource As LMADataSource
983
        datasource = objPlacement.PIDDataSource
984
        Dim PipeRunLoc As String
985
        Dim objItem As LMAItem
986

    
987
        Dim objConnector As LMConnector
988
        Dim objInputs As PlaceRunInputs
989
        Dim objSymbol As LMSymbol
990
        Dim InstrumentLoc As String
991
        PipeRunLoc = "\Piping\Routing\Process Lines\Primary Piping.sym"
992
        objInputs = New PlaceRunInputs
993
        objInputs.AddPoint(0.1, 0.1)
994
        objInputs.AddPoint(0.2, 0.1)
995
        objItem = objPlacement.PIDCreateItem(PipeRunLoc)
996
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
997
        Dim objPipeRun As LMPipeRun = datasource.GetPipeRun(objConnector.ModelItemID)
998
        objPipeRun.Attributes("NominalDiameter").Value = "250 mm"
999
        objPipeRun.Attributes("OperFluidCode").Value = "ADH"
1000
        objPipeRun.Attributes("TagSequenceNo").Value = "0026"
1001
        objPipeRun.Attributes("pipingmaterialsclass").Value = "NA1S"
1002
        objPipeRun.Attributes("InsulPurpose").Value = "H"
1003
        objPipeRun.Commit()
1004
        Dim twopoints(2) As Double
1005
        twopoints(1) = 0.12
1006
        twopoints(2) = 0.11
1007
        'Label
1008
        Dim labelName1 As String = "\Piping\Labels - Piping Segments\Line Number.sym"
1009
        Dim labelpersist As LMLabelPersist
1010

    
1011
        For Each representation In objPipeRun.Representations
1012
            If representation.RepresentationType = "Connector" Then
1013
                labelpersist = objPlacement.PIDPlaceLabel(labelName1,
1014
                twopoints,, 0, LabeledItem:=representation)
1015
            End If
1016
        Next
1017
        'labelpersist = objPlacement.PIDPlaceLabel(labelName1,
1018
        '  twopoints, LabeledItem:=objPipeRun.Representations.Nth(0))
1019
        'twopoints(1) = 0.17
1020
        'twopoints(2) = 0.1
1021
        'labelpersist = objPlacement.PIDPlaceLabel(labelName1,
1022
        '  twopoints, LabeledItem:=objPipeRun.Representations.Nth(0))
1023

    
1024

    
1025
        'Instrument
1026
        InstrumentLoc = "\Instrumentation\Off-Line\Without Implied Components\Single Function\Disc Single-Func Access in Prime Loc.sym"
1027
        objSymbol = objPlacement.PIDPlaceSymbol(InstrumentLoc, 0.15, 0.3, , 0)
1028

    
1029
        Dim objInstr As LMInstrument
1030
        objInstr = datasource.GetInstrument(objSymbol.ModelItemID)
1031
        objInstr.Attributes("MeasuredVariableCode").Value = "L"
1032
        objInstr.Attributes("InstrumentTypeModifier").Value = "G"
1033
        objInstr.Attributes("TagSuffix").Value = ""
1034
        objInstr.Attributes("TagSequenceNo").Value = "4003"
1035
        objInstr.Commit()
1036

    
1037
        objInputs = New PlaceRunInputs
1038
        objInputs.AddConnectorTarget(objConnector, 0.15, 0.1)
1039
        objInputs.AddPoint(0.15, 0.15)
1040
        objInputs.AddPoint(0.12, 0.15)
1041
        objInputs.AddPoint(0.12, 0.2)
1042
        objInputs.AddPoint(0.15, 0.2)
1043
        objInputs.AddSymbolTarget(objSymbol, 0.15, 0.3)
1044
        objItem = objPlacement.PIDCreateItem(PipeRunLoc)
1045

    
1046
        objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
1047
        objPipeRun = datasource.GetPipeRun(objConnector.ModelItemID)
1048
        twopoints(1) = 0.14
1049
        twopoints(2) = 0.22
1050

    
1051
        For Each representation In objPipeRun.Representations
1052
            If representation.RepresentationType = "Connector" Then
1053
                labelpersist = objPlacement.PIDPlaceLabel(labelName1,
1054
                twopoints,, 1.57, LabeledItem:=representation)
1055
            End If
1056
        Next
1057
        ' Measured Variable Code, Instr Type Modifier 
1058
        ' TagSeqNo, TagSuffix
1059

    
1060

    
1061
        'OPC
1062

    
1063

    
1064
        'Valve
1065

    
1066

    
1067

    
1068

    
1069

    
1070
    End Sub
1071

    
1072
    Private Sub ToolStripDropDownButton1_Click(sender As Object, e As EventArgs) Handles ToolStripDropDownButton1.Click
1073

    
1074
    End Sub
1075

    
1076
    Private Sub LoadXmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoadXmlToolStripMenuItem.Click
1077
        Dim oOpen_Xml = New LoadXml()
1078
        oOpen_Xml = New LoadXml()
1079
        oOpen_Xml.ShowDialog()
1080
        _XMLList = oOpen_Xml.GetCheckList()
1081
        LoadXmlItem()
1082
    End Sub
1083

    
1084

    
1085
    Private Sub LoadXmlItem()
1086
        If Tree_Result.Nodes.Count > 0 Then
1087
            Tree_Result.Nodes(0).Nodes.Clear()
1088

    
1089
            For i = 0 To _XMLList.CheckedItems.Count - 1
1090
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(_XMLList.CheckedItems(i).Text)
1091
                Dim sDwgPath As String = _XMLList.CheckedItems(i).Name
1092
                Dim oNode As TreeNode = Tree_Result.Nodes(0).Nodes.Add(sDwgPath, sDwgName, 15)
1093
                AddSymbolItem(sDwgPath, oNode)
1094
            Next
1095
            Tree_Result.Nodes(0).Expand()
1096
        End If
1097

    
1098
    End Sub
1099

    
1100
    ''' <summary>
1101
    '''  XML Tree 구조 생성 
1102
    ''' </summary>
1103
    ''' <param name="sDwgPath"></param>
1104
    Private Sub AddSymbolItem(ByVal sDwgPath As String, ByVal oParentNode As TreeNode)
1105
        Dim oDt As DataTable = LoadSymbolInXml(sDwgPath)
1106

    
1107
        'PipeLine 구분
1108

    
1109
        'Type구분
1110
        '  Dim oParentNodeName = oParentNode.Text
1111
        Dim oDistinct_Name_Dt As DataTable = oDt.DefaultView.ToTable(True, "Name")
1112
        'Name 별
1113
        For Each oNameRow In oDistinct_Name_Dt.Rows
1114
            Dim sName As String = oNameRow("Name").ToString()
1115
            Dim sNameKey As String = oParentNode.Text & "\" & sName
1116
            Dim oNameNode As TreeNode = oParentNode.Nodes.Add(sNameKey, sName)
1117
            Dim oSelectNameRows As DataRow() = oDt.Select("[Name] = '" & sName & "'")
1118

    
1119
            Dim oDistinct_Class_Dt As DataTable = oSelectNameRows.CopyToDataTable.DefaultView.ToTable(True, "Class")
1120
            'Class 별
1121
            For Each oClassRow In oDistinct_Class_Dt.Rows
1122

    
1123
                Dim sClass As String = oClassRow("Class").ToString()
1124
                If sClass.Contains("'") Then
1125
                    sClass = sClass.Replace("'", "''")
1126
                End If
1127
                Dim sClassKey As String = oNameNode.Name & "\" & sClass
1128
                Dim oClassNode As TreeNode = oNameNode.Nodes.Add(sClassKey, sClass)
1129

    
1130
                Dim oSelectClassRows As DataRow() = oSelectNameRows.CopyToDataTable.Select("[Class] = '" & sClass & "'")
1131
                'Item 별
1132

    
1133
                For Each oItemRow In oSelectClassRows
1134
                    Dim sItem As String = oItemRow("Item").ToString()
1135
                    Dim sItemKey As String = oItemRow("uid").ToString()
1136
                    Dim oItemName As TreeNode = oClassNode.Nodes.Add(sItemKey, sItem)
1137
                Next
1138

    
1139
            Next
1140

    
1141
        Next
1142

    
1143
    End Sub
1144

    
1145
    Private Sub Tree_Result_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterSelect
1146

    
1147
    End Sub
1148
    ''' <summary>
1149
    ''' Parent 노트 선택시 일괄 체크,해제
1150
    ''' </summary>
1151
    ''' <param name="sender"></param>
1152
    ''' <param name="e"></param>
1153
    Private Sub Tree_Result_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_Result.AfterCheck
1154
        If e.Node.Checked = True Then
1155
            For Each oNode As TreeNode In e.Node.Nodes
1156
                oNode.Checked = True
1157
            Next
1158
        Else
1159
            For Each oNode As TreeNode In e.Node.Nodes
1160
                oNode.Checked = False
1161
            Next
1162
        End If
1163
    End Sub
1164
End Class
1165

    
1166

    
1167
Public Class DrawingInfo
1168
    Public mDrawingName As String
1169
    Public mSpID As String
1170
    Public mPath As String
1171
End Class
1172

    
1173

    
1174

    
1175

    
1176

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