프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ 8ac8bb85

이력 | 보기 | 이력해설 | 다운로드 (37.4 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
    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 e282643f Gyusu
    Dim _IMG_X = 9933
19
    Dim _IMG_Y = 7016
20 4f359afa Gyusu
21 31d47a80 Gyusu
    'Drawing 전역변수
22
    Dim _objPIDADrawing As Object
23 e282643f Gyusu
    '현재선택한 폴더경로
24
    Dim _selectFolderPath As String
25
26
    Private _Main_trd As Thread
27
28
29 31d47a80 Gyusu
30 4f359afa Gyusu
    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
31 962b2464 Gyusu
        SetUpListViewColumns()
32
        LoadTree()
33 e282643f Gyusu
        If My.Settings.DBPath <> "" And My.Settings.Plant_Hierarchy <> "" Then
34
            Dim sDBPath As String = My.Settings.DBPath
35
            LoadDB(sDBPath)
36
            'TestPID()
37
        Else
38
            MessageBox.Show("설정값을 먼저 확인해주세요")
39
        End If
40
    End Sub
41
42
    Public Function GetDrawingInfo(ByVal errorList As ArrayList)
43
        Dim ds As Llama.LMADataSource
44
        ds = New Llama.LMADataSource
45
        Dim lmaItem As Llama.LMAItem
46
47
        For i = 0 To errorList.Count - 1
48
            lmaItem = ds.GetModelItem(errorList.Item(i).m_strSPID()).AsLMAItem
49
            Dim drawingInfo As DrawingInfo
50
            drawingInfo = GetDrawingName(lmaItem.ItemType, lmaItem.Id)
51
            errorList.Item(i).m_LMAItem = lmaItem
52
            errorList.Item(i).m_strDrawingName = drawingInfo.mDrawingName
53
            errorList.Item(i).m_strDrawingPath = drawingInfo.mPath
54
        Next
55
    End Function
56
    Private mDataSource As Object
57
58
    'Public Sub New()
59
60
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
61
    '    '   mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
62
    '    'm_Information = SPPIDClass.Information.GetInstance()
63
64
    '    'If m_Information.InfoProject.ProjectVersion = SPPIDClass.InfoProject.SPPID_43 Then
65
    '    '    'SPPID4.3용
66
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName
67
    '    'Else
68
    '    '    'SPPID2007, SPPID2009용
69
    '    '    mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
70
    '    'End If
71
72
    '    '  mDataSource.SiteNode = m_Information.InfoProject.ProjectINI
73
    '    '  mDataSource.ProjectNumber = m_Information.InfoSite.SiteName & "!" & m_Information.InfoSite.SiteName
74
    '    '#If LATE_BINDING Then
75
    '    '        mInstruments = CreateObject("Llama.LMInstruments", "")
76
    '    '        mPipingComps = CreateObject("Llama.LMPipingComps", "")
77
    '    '        mVessels = CreateObject("Llama.LMVessels", "")
78
    '    '        mDrawings = CreateObject("Llama.LMDrawings", "")
79
    '    '        mEquipments = CreateObject("Llama.LMEquipments", "")
80
    '    '        mExchangers = CreateObject("Llama.LMExchangers", "")
81
    '    '        mMechanicals = CreateObject("Llama.LMMechanicals", "")
82
    '    '        mNozzles = CreateObject("Llama.LMNozzles", "")
83
    '    '        mPipeRuns = CreateObject("Llama.LMPipeRuns", "")
84
    '    '        mEquipmentOthers = CreateObject("Llama.LMEquipmentOthers", "")
85
    '    '#Else
86
    '    '        mInstruments = New Llama.LMInstruments
87
    '    '        mPipingComps = New Llama.LMPipingComps
88
    '    '        mVessels = New Llama.LMVessels
89
    '    '        mDrawings = New Llama.LMDrawings
90
    '    '        mEquipments = New Llama.LMEquipments
91
    '    '        mExchangers = New Llama.LMExchangers
92
    '    '        mMechanicals = New Llama.LMMechanicals
93
    '    '        mNozzles = New Llama.LMNozzles
94
    '    '        mPipeRuns = New Llama.LMPipeRuns
95
    '    '        mEquipmentOthers = New Llama.LMEquipmentOthers
96
    '    '#End If
97
    'End Sub
98
    Public Function GetDrawingName(ByVal itemType As String, ByVal itemName As String) As DrawingInfo
99
100
        Dim objFilter As Object
101
        objFilter = CreateObject("Llama.LMAFilter", "")
102
103
        Dim drawingInfo As DrawingInfo
104
        drawingInfo = New DrawingInfo
105
106
        objFilter.Criteria.AddNew("FirstOne")
107
        objFilter.Criteria.Item("FirstOne").SourceAttributeName = "SP_ID"
108
        objFilter.Critedkria.Item("FirstOne").ValueAttribute = itemName
109
110
        objFilter.Criteria.Item("FirstOne").Operator = "="
111
        objFilter.Criteria.AddNew("SecondOne")
112
        objFilter.Criteria.Item("SecondOne").SourceAttributeName = "ItemStatus"
113
        objFilter.Criteria.Item("SecondOne").ValueAttribute = 1
114
        objFilter.Criteria.Item("SecondOne").Operator = "="
115
        objFilter.Criteria.Item("SecondOne").Conjunctive = -1
116
        objFilter.ItemType = itemType
117
118
        Dim PlantItems As Object
119
        PlantItems = CreateObject("Llama.LMPlantItems", "")
120
        PlantItems.Collect(mDataSource, Filter:=objFilter)
121
122
        If PlantItems.Count = 0 Then
123
            drawingInfo.mSpID = "PlantStockpile"
124
        End If
125
126
        For Each PlantItem In PlantItems
127
128
            'If Not PlantItem.Representations.Nth(1).DrawingID.Value.ToString().Equals("0") Then
129
            Try
130
                drawingInfo.mDrawingName = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Name").Value
131
                drawingInfo.mSpID = PlantItem.Representations.Nth(1).DrawingID
132
                drawingInfo.mPath = PlantItem.Representations.Nth(1).DrawingObject.Attributes("Path").Value
133
                Debug.WriteLine("DrawingName : " & drawingInfo.mDrawingName & ", SPID : " & drawingInfo.mSpID & ", Path : " & drawingInfo.mPath)
134
            Catch ex As Exception
135
136
            End Try
137
138
            'End If
139
140
        Next
141
142
        Return drawingInfo
143
144
    End Function
145
146
    Private Sub TestPID()
147
148
        Try
149
150
            Dim datasource As LMADataSource
151
            Dim objPIDAutoApp As Object
152
            Dim objPIDADrawing As Object
153
            Dim objDrawing As LMDrawing
154
            Dim objDrawings As LMDrawings
155
            datasource = New LMADataSource
156
157
158
            Dim oObj As Object = Nothing
159
            objDrawing = datasource.GetDrawing(oObj)
160
            objDrawings = New LMDrawings
161
            objDrawings.Collect(datasource)
162
            objPIDAutoApp = GetObject(, "SmartPlantPID.Application") '// CreateObject("PIDAutomation.Application")
163
            For Each objDrawing In objDrawings
164
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
165
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
166
                    If Not objPIDADrawing Is Nothing Then
167
                        MessageBox.Show("Drawing " & objDrawing.Attributes("Name").Value & " is opened!")
168
                        objPIDADrawing.CloseDrawing
169
                    End If
170
                End If
171
            Next
172
            objPIDAutoApp.Quit
173
            objPIDAutoApp = Nothing
174
            objPIDADrawing = Nothing
175
            objDrawing = Nothing
176
            objDrawings = Nothing
177
        Catch ex As Exception
178
179
        End Try
180
181
182 962b2464 Gyusu
183
    End Sub
184 e282643f Gyusu
    Public Function SetActiveSiteFromConfigInfo(ByVal strActiveSite As String) As Boolean
185
186
        On Error GoTo errHandler
187
        Dim objConfigInfo As Object 'interopigrConfigInfo412.igrConfigInfo
188
        objConfigInfo = CreateObject("interopigrConfigInfo412.igrConfigInfo", "")
189
        If Not objConfigInfo Is Nothing Then
190
            objConfigInfo.ApplicationName = "SmartPlantManager"
191
            objConfigInfo.SetConfigString(3, "SmartPlant Manager", "SiteServer", strActiveSite)
192
            SetActiveSiteFromConfigInfo = True
193
        End If
194
        objConfigInfo = Nothing
195
196
        Exit Function
197
198
errHandler:
199
        '    LogAndRaiseError ModuleName & "::GetConfigInfo "
200
    End Function
201 962b2464 Gyusu
    Private Sub LoadTree()
202
203
        Dim i As Integer
204
        Dim j() As String
205
        j = Directory.GetLogicalDrives
206
        For i = 0 To UBound(j)
207
208
            Dim cdrive As System.IO.DriveInfo
209
            cdrive = My.Computer.FileSystem.GetDriveInfo(j(i).ToString)
210
211
            Select Case cdrive.DriveType
212
                Case DriveType.Fixed
213
                    Tree_XMLFiles.Nodes.Add(j(i), j(i).ToString, 3)
214
                Case DriveType.CDRom
215
                    Tree_XMLFiles.Nodes.Add(j(i), j(i).ToString, 11)
216
                Case DriveType.Network
217
                    Tree_XMLFiles.Nodes.Add(j(i), j(i).ToString, 5)
218
                Case DriveType.Removable
219
                    Tree_XMLFiles.Nodes.Add(j(i), j(i).ToString, 12)
220
            End Select
221
222
        Next
223
    End Sub
224
225
    Private Sub SetUpListViewColumns()
226
        ' TODO: Add code to set up listview columns
227
        ListView_File.Columns.Add("  Name ")
228
        '   ListView_File.Columns.Add(" Size  ")
229
        '    ListView_File.Columns.Add(" Extension  ")
230
        ListView_File.Columns.Add(" Date Modified  ")
231
        SetView(View.Details)
232 4f359afa Gyusu
    End Sub
233
234 962b2464 Gyusu
235
    Private Sub SetView(ByVal View As System.Windows.Forms.View)
236
        ListView_File.View = View.Details
237
    End Sub
238
239 4f359afa Gyusu
240
241
    Private Sub InitXMLTree(ByVal sFolderPath As String)
242
        Tree_XMLFiles.Nodes.Clear()
243
        Dim oRootNode As TreeNode = Tree_XMLFiles.Nodes.Add("XML")
244
        '.XML 만 로드
245
        Dim sfileEntries As String() = Directory.GetFiles(sFolderPath, "*.xml")
246
        ' Process the list of files found in the directory.
247
        Dim sfileName As String
248
        For Each sfileName In sfileEntries
249
            oRootNode.Nodes.Add(sfileName)
250
        Next sfileName
251
        oRootNode.ExpandAll()
252
    End Sub
253
254 1229ad76 Gyusu
255
256
257
    Private Function CreateDwg(ByVal oDwgName As String) As Boolean
258
        Dim objPIDADrawing As Object = Nothing
259
        Dim objPIDAutoApp As Object = Nothing
260
        Dim datasource As LMADataSource = Nothing
261 4f359afa Gyusu
        Try
262
            Dim DrawingNumber As String
263
            Dim DrawingName As String
264 1229ad76 Gyusu
            Dim sPlantGroupName As String = "Test"
265
            Dim sTemplateName As String = "\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\P&ID Reference Data\Template Files\Gazprom Project.pid"
266
            Dim objDrawing As LMDrawing
267
            Dim objDrawings As LMDrawings
268
            objDrawings = New LMDrawings
269
            datasource = New LMADataSource
270
            Debug.Print(datasource.ProjectNumber)
271
            Debug.Print(datasource.SiteNode)
272
            Debug.Print(datasource.IsSatellite)
273
            Debug.Print(datasource.GetSystemEditingToolbarSetting)
274
            objDrawings.Collect(datasource)
275
            Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
276
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
277
            For Each objDrawing In objDrawings
278
                If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
279
                    objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(sPath)
280
                    If Not objPIDADrawing Is Nothing Then
281
282
                        objPIDADrawing.CloseDrawing
283
                    End If
284
                End If
285
            Next
286 4f359afa Gyusu
287
            Dim extension As String = Path.GetExtension(oDwgName)
288
            oDwgName = oDwgName.Replace(extension, "")
289 1229ad76 Gyusu
290 4f359afa Gyusu
            objPIDAutoApp = CreateObject("PIDAutomation.Application")
291 1229ad76 Gyusu
292
            'For Each objDrawing In objPIDAutoApp.Drawings
293
            '    objDrawing.CloseDrawing(True)
294
            'Next
295
296
            objPIDAutoApp.Drawings.OpenDrawing(oDwgName + ".pid")
297
298
            objPIDAutoApp.ActiveWindow.Fit()
299
300
            Return True
301
        Catch ex As Exception
302
            If objPIDADrawing IsNot Nothing Then
303 4f359afa Gyusu
                objPIDADrawing.CloseDrawing
304
            End If
305 1229ad76 Gyusu
            If objPIDAutoApp IsNot Nothing Then
306
                objPIDAutoApp.Quit
307
            End If
308
            datasource = Nothing
309 4f359afa Gyusu
            objPIDAutoApp = Nothing
310
            objPIDADrawing = Nothing
311
            Return False
312
        End Try
313 1229ad76 Gyusu
        If objPIDADrawing IsNot Nothing Then
314
            objPIDADrawing.CloseDrawing
315
        End If
316 4f359afa Gyusu
317
    End Function
318
319 1229ad76 Gyusu
320 4f359afa Gyusu
#Region "Load Pipe"
321
    Private Function LoadPipe_DT() As DataTable
322
        Dim oDt As New DataTable
323
        oDt.Columns.Add("start_x")
324
        oDt.Columns.Add("start_y")
325
        oDt.Columns.Add("end_x")
326
        oDt.Columns.Add("end_y")
327
        oDt.Columns.Add("Symbol")
328
        Return oDt
329
330
    End Function
331
332
#End Region
333
334
#Region "Load Symbol"
335
    Private Function LoadSymbol_DT() As DataTable
336
        Dim oDt As New DataTable
337
        oDt.Columns.Add("Name")
338
        oDt.Columns.Add("x")
339
        oDt.Columns.Add("y")
340
        oDt.Columns.Add("Angle")
341
        oDt.Columns.Add("Symbol")
342
        oDt.Columns.Add("Text")
343
        Return oDt
344
    End Function
345
346
#End Region
347
348
    Private Function GetSymbolMapping(ByVal oSymbolName As String) As String
349
        Dim oSystemPath As String = ""
350 e282643f Gyusu
        If _DB.Rows.Count > 0 Then
351
            Dim oSelectRow() As DataRow = _DB.Select("[pid_symbolname] = '" + oSymbolName + "'")
352
            If oSelectRow.Length = 1 Then
353
                oSystemPath = oSelectRow(0).Item("sppid_systempath").ToString()
354
            End If
355 4f359afa Gyusu
        End If
356
        Return oSystemPath
357
    End Function
358
359 e282643f Gyusu
360 4f359afa Gyusu
    Private Function LoadSymbolInXml(ByVal sXmlPath As String) As DataTable
361
        Dim oDt As DataTable = LoadSymbol_DT()
362
        Dim oElement As XElement = XElement.Load(sXmlPath)
363
        If oElement IsNot Nothing Then
364
            For Each symbols As Object In oElement.Elements("SYMBOLS")
365
                For Each page As Object In symbols.Elements("SYMBOL")
366
                    Dim oAddrow As DataRow = oDt.NewRow()
367
                    Dim oObj As XElement = page.Element("NAME")
368
                    Dim oSymbol = oObj.Value
369
                    oObj = page.Element("TEXT")
370 962b2464 Gyusu
                    Dim oText = oObj.Value
371
                    oObj = page.Element("CLASS")
372
                    Dim oClass = oObj.Value
373
                    oObj = page.Element("TYPE")
374
                    Dim oType = oObj.Value
375
                    oObj = page.Element("ITEM")
376
                    Dim oItem = oObj.Value
377
                    ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
378
                    Dim oSymbolPath As String = GetSymbolMapping(oItem)
379
                    oObj = page.Element("ORIGINALPOINT")
380
                    Dim sOriginPoint = oObj.Value
381
                    oObj = page.Element("ANGLE")
382
                    Dim oAngle = oObj.Value
383
                    Dim oSplitPos As String() = sOriginPoint.Split(",")
384
                    Dim oX As Double = 0.0
385
                    Dim oY As Double = 0.0
386
                    If IsNumeric(oSplitPos(0)) Then
387
                        oX = Double.Parse(oSplitPos(0))
388
                    End If
389
                    If IsNumeric(oSplitPos(1)) Then
390
                        oY = Double.Parse(oSplitPos(1))
391
                    End If
392 e282643f Gyusu
                    ConvertPoint(oX, oY, _IMG_X, _IMG_Y)
393 4f359afa Gyusu
                    oAddrow("X") = oX '+ 0.05
394 962b2464 Gyusu
                    oAddrow("Y") = oY
395
                    oAddrow("Angle") = oAngle
396
                    oAddrow("Symbol") = oSymbolPath
397
                    oAddrow("Text") = oText
398
                    oAddrow("Name") = oSymbol
399 4f359afa Gyusu
                    oDt.Rows.Add(oAddrow)
400
                Next
401
            Next
402
        End If
403 e282643f Gyusu
        Return oDt
404 4f359afa Gyusu
    End Function
405
406
407
408
    Private Function LoadPipeInXml(ByVal sXmlPath As String) As DataTable
409
        Try
410
            Dim oDt As DataTable = LoadPipe_DT()
411
            Dim oElement As XElement = XElement.Load(sXmlPath)
412
            If oElement IsNot Nothing Then
413
                Dim DWGElement As XElement = oElement.Element("DWGNAME")
414
                Dim DWGNAME = DWGElement.Value
415
                Dim sXY As XElement = oElement.Element("SIZE")
416
                Dim sSize = sXY.Value
417
                Dim oSplitDWGPos As String() = sSize.Split(",")
418
419
                If IsNumeric(oSplitDWGPos(0)) Then
420
                    _IMG_X = Double.Parse(oSplitDWGPos(0))
421
                End If
422
                If IsNumeric(oSplitDWGPos(1)) Then
423
                    _IMG_Y = Double.Parse(oSplitDWGPos(1))
424
                End If
425
426
                For Each pipes As Object In oElement.Elements("IMGLINES")
427
                    For Each pipe As Object In pipes.Elements("IMGLINE")
428
                        Dim oAddrow As DataRow = oDt.NewRow()
429
                        Dim oObj As XElement = pipe.Element("ITEM")
430
                        Dim oItem = oObj.Value
431
                        ' Dim oSymbolPath As String = "\" + oSymbol + "\" + oClass + "\" + oType + "\" + oItem + ".sym"
432
                        Dim oSymbolPath As String = GetSymbolMapping(oItem)
433
                        oObj = pipe.Element("START")
434
                        Dim oStartPoint = oObj.Value
435
                        Dim oSplitPos As String() = oStartPoint.Split(",")
436
                        Dim oStartpos_X As Double = 0.0
437
                        Dim oStartpos_Y As Double = 0.0
438
                        If IsNumeric(oSplitPos(0)) Then
439
                            oStartpos_X = Double.Parse(oSplitPos(0))
440
                        End If
441
                        If IsNumeric(oSplitPos(1)) Then
442
                            oStartpos_Y = Double.Parse(oSplitPos(1))
443
                        End If
444
445
                        ConvertPoint(oStartpos_X, oStartpos_Y, _DWG_X, _DWG_Y)
446
                        oObj = pipe.Element("END")
447
                        Dim oEndPoint = oObj.Value
448
                        oSplitPos = oEndPoint.Split(",")
449
                        Dim oEndpos_X As Double = 0.0
450
                        Dim oEndpos_Y As Double = 0.0
451
                        If IsNumeric(oSplitPos(0)) Then
452
                            oEndpos_X = Double.Parse(oSplitPos(0))
453
                        End If
454
                        If IsNumeric(oSplitPos(1)) Then
455
                            oEndpos_Y = Double.Parse(oSplitPos(1))
456
                        End If
457
                        ConvertPoint(oEndpos_X, oEndpos_Y, _DWG_X, _DWG_Y)
458
459
                        oAddrow("start_x") = oStartpos_X '+ 0.05
460
                        oAddrow("start_y") = oStartpos_Y
461
                        oAddrow("end_x") = oEndpos_X
462
                        oAddrow("end_y") = oEndpos_Y
463
                        oAddrow("Symbol") = oSymbolPath
464
                        oDt.Rows.Add(oAddrow)
465
                    Next
466
                Next
467
468
            End If
469
470
471
            Return oDt
472
        Catch ex As Exception
473
            Return Nothing
474
        End Try
475
    End Function
476
477
478
    Private Sub ConvertPoint(ByRef dX As Double, ByRef dY As Double, ByVal dDwgX As Double, ByVal dDwgY As Double)
479
480
        Dim calcx As Double = 0
481
        Dim calcy As Double = 0
482
        calcx = (dX * _DWG_X) / dDwgX 'Math.Round((dX * _DWG_X) / dDwgX, 2)
483
        calcy = _DWG_Y - (dY * _DWG_Y) / dDwgY '_DWG_Y - Math.Round((dY * _DWG_Y) / dDwgY, 2)
484
        dX = calcx
485
        dY = calcy
486
    End Sub
487
488
    Private Function AutoConverting(ByVal oPipe_Dt As DataTable, ByVal oSymbol_Dt As DataTable) As Boolean
489 e282643f Gyusu
        Dim iTotalCount As Double = oPipe_Dt.Rows.Count + oSymbol_Dt.Rows.Count
490
        Dim iSymbolcount As Double = 0
491
        Dim objPlacement As Object
492
        Dim lobjDatasource As Object
493
        objPlacement = CreateObject("Plaice.Placement", "")
494
495
        lobjDatasource = objPlacement.PIDDataSource
496
        lobjDatasource.BeginTransaction()
497
498
        '  datasource = objPlacement.PIDDataSource
499
        'Dim iPipecnt As Integer = 0
500
501
        If oPipe_Dt IsNot Nothing Then
502
            For Each oRow As DataRow In oPipe_Dt.Rows
503
                Dim oposition As String = oRow("position").ToString()
504
                Dim oSymbol As String = oRow("Symbol").ToString()
505
                Dim oSplitStr As String() = Split(oposition, " ")
506
                Dim objConnector As LMConnector
507
                Dim objInputs As PlaceRunInputs
508
                objInputs = New PlaceRunInputs
509
510
                For Each sposition As String In oSplitStr
511
                    Dim opointstr As String() = Split(sposition, ",")
512
513
                    If (opointstr.Length > 1) Then
514
                        If IsNumeric(opointstr(0)) And IsNumeric(opointstr(1)) Then
515
                            Dim ox As Double = opointstr(0)
516
                            Dim oy As Double = opointstr(1)
517
                            ConvertPoint(ox, oy, _IMG_X, _IMG_Y)
518
                            objInputs.AddPoint(ox, oy)
519
                        End If
520 4f359afa Gyusu
                    End If
521 e282643f Gyusu
                Next
522
                Dim objItem As LMAItem
523
                objItem = objPlacement.PIDCreateItem(oSymbol)
524
                objConnector = objPlacement.PIDPlaceRun(objItem, objInputs)
525 4f359afa Gyusu
526 e282643f Gyusu
                'Dim objPipeRun As LMPipeRun = datasource.GetPipeRun(objConnector.ModelItemID)
527
                'objPipeRun.Attributes("OperFluidCode").Value = "AFS"
528
                'objPipeRun.Commit()
529
                iSymbolcount = iSymbolcount + 1
530 4f359afa Gyusu
531
532
533
534 e282643f Gyusu
            Next
535
        End If
536 4f359afa Gyusu
537
538
539 e282643f Gyusu
        For Each oRow As DataRow In oSymbol_Dt.Rows
540 4f359afa Gyusu
541 e282643f Gyusu
            Try
542
                Dim oSymbol As String = oRow("Symbol").ToString()
543
                Dim oType As String = oRow("Name").ToString()
544
                Dim oText As String = oRow("Text").ToString()
545
                Dim oX As Double = 0.0
546
                Dim oY As Double = 0.0
547
                If IsNumeric(oRow("x").ToString()) Then
548
                    oX = Double.Parse(oRow("x").ToString())
549
                End If
550
                If IsNumeric(oRow("y").ToString()) Then
551
                    oY = Double.Parse(oRow("y").ToString())
552
                End If
553
                Dim oAngle As Double = 0.0
554
                If IsNumeric(oRow("Angle").ToString()) Then
555
                    oAngle = Double.Parse(oRow("Angle").ToString())
556
                End If
557
                '   oSymbol = "\INSTRUMENTation\SYSTEM FUNCTIONS\D C S\DCS FUNC ACCESS IN PRIME LOC.sym"
558
                If oSymbol <> "" Then
559
                    If oType = "INSTRUMENTATION" Then
560
                        Dim sTagsuffix As String = ""
561
                        Dim sTagSequenceNo As String = ""
562
                        Dim sMeasuredVariableCode As String = ""
563
                        Dim sInstrumentTypeModifier As String = ""
564
                        If oText <> "" Then
565
                            If oText.Contains(",") Then
566
                                Dim splitstr() As String = oText.Split(",")
567
                                For i = 0 To splitstr.Count - 1
568
                                    If i = 0 Then
569
                                        sMeasuredVariableCode = Mid(splitstr(i), 1, 1)
570
                                        sTagSequenceNo = Mid(splitstr(i), 2, Len(splitstr(i)))
571
                                    Else
572
                                        If Len(splitstr(i)) = 1 Then
573
                                            sInstrumentTypeModifier = splitstr(i)
574
                                        ElseIf Len(splitstr(i)) = 0 Then
575
576
                                        ElseIf Len(splitstr(i)) > 1 Then
577
                                            sInstrumentTypeModifier = Mid(splitstr(i), 1, 1)
578
                                            sTagsuffix = Mid(splitstr(i), 2, Len(splitstr(i)))
579
                                        End If
580
                                    End If
581
                                Next
582
                            Else
583
                                sMeasuredVariableCode = Mid(oText, 1, 1)
584
                                sTagSequenceNo = Mid(oText, 2, Len(oText))
585
                            End If
586 4f359afa Gyusu
587 e282643f Gyusu
                        End If
588 4f359afa Gyusu
589 e282643f Gyusu
                        Dim objInstrSym As LMSymbol
590
                        objInstrSym = objPlacement.PIDPlaceSymbol(oSymbol, oX, oY, , oAngle)
591
                        Dim objInstr As LMInstrument
592
                        objInstr = lobjDatasource.GetInstrument(objInstrSym.ModelItemID)
593 4f359afa Gyusu
594 e282643f Gyusu
                        Dim objItem As LMAItem
595
                        objItem = objPlacement.PIDCreateItem(oSymbol)
596 4f359afa Gyusu
597 e282643f Gyusu
                        objInstr.Attributes("MeasuredVariableCode").Value = sMeasuredVariableCode
598
                        objInstr.Attributes("InstrumentTypeModifier").Value = sInstrumentTypeModifier
599
                        objInstr.Attributes("TagSuffix").Value = sTagsuffix
600
                        objInstr.Attributes("TagSequenceNo").Value = sTagSequenceNo
601
                        objInstr.Commit()
602
                    ElseIf oType = "GATE VALVE WITH PLUG" Then
603 4f359afa Gyusu
604 e282643f Gyusu
                    ElseIf oType = "MEDIUM 1D 1TO1" Then
605 4f359afa Gyusu
606
1:
607 e282643f Gyusu
                    Else
608
                        objPlacement.PIDPlaceSymbol(oSymbol, oX, oY, , oAngle)
609 4f359afa Gyusu
610 e282643f Gyusu
                    End If
611
                    iSymbolcount = iSymbolcount + 1
612
                Else
613 4f359afa Gyusu
                End If
614 e282643f Gyusu
            Catch ex As Exception
615 4f359afa Gyusu
616 e282643f Gyusu
            End Try
617
            Dim dCalcProgressValue As Double = (iSymbolcount / iTotalCount) * 100
618
            SetProgressbar(ProgressBar_Status, dCalcProgressValue)
619
            '     ProgressBar_Status.Value = (iSymbolcount / iTotalCount) * 100
620 4f359afa Gyusu
        Next
621
622 e282643f Gyusu
        MsgBox("symbol: " & iSymbolcount & "개 변환완료")
623
        ' MsgBox("symbol: " & iSymbolcount & "개, pipe : " & iPipecnt & "개 변환완료")
624 4f359afa Gyusu
    End Function
625
626
627
    Private Sub Tree_XMLFiles_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles Tree_XMLFiles.AfterCheck
628
        If e.Node.Checked = True Then
629
            For Each oNode As TreeNode In e.Node.Nodes
630
                oNode.Checked = True
631
            Next
632
        Else
633
            For Each oNode As TreeNode In e.Node.Nodes
634
                oNode.Checked = False
635
            Next
636
        End If
637
    End Sub
638
639
    Private Sub LoadDB(ByVal sDBPath As String)
640
641
        Try
642
            Dim sConnectionstring As String = "Data Source=" & sDBPath & ";Version=3;Synchronous=Off;UTF8Encoding=True;"
643
            Dim conn As SQLiteConnection = New SQLiteConnection(sConnectionstring)
644
            conn.Open()
645
            Dim sQuery As String = "Select * from Mapping"
646
            Dim cmd As SQLiteCommand = conn.CreateCommand()
647
            Dim adapter As SQLiteDataAdapter = New SQLiteDataAdapter(sQuery, conn)
648
            Dim oDataSet As DataSet = New DataSet()
649
            adapter.Fill(oDataSet)
650
            _DB = oDataSet.Tables(0)
651
        Catch ex As Exception
652
653
        End Try
654
655
656
    End Sub
657
658 962b2464 Gyusu
    Dim first_start As Boolean = False
659
    Dim folders_path As String
660
661
    Private Sub Tree_XMLFiles_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Tree_XMLFiles.AfterSelect
662
        If first_start = False Then Exit Sub
663
        Dim pa = e.Node.FullPath.ToString
664
665
        printfilesfolders_here(pa, e.Node)
666
667
        displayfiles(pa)
668
669
        ''be careful ! displayfils comes BEFORE you change // to / in pa !!!
670
        Dim coco As String = ""
671
        coco = pa.ToString
672
        coco = coco.Replace("\\", "\")
673
        Me.Text = coco
674
        folders_path = coco
675
    End Sub
676
677
    Sub printfilesfolders_here(ByVal path As String, ByRef itree As TreeNode)
678
679
        Dim foldername As String
680
        Dim filename As String
681
        itree.Nodes.Clear()
682
        On Error GoTo eee
683
        For Each foldername In Directory.GetDirectories(path)
684
            On Error GoTo eee
685
            Dim jj = foldername.LastIndexOf("\")
686
            Dim jj1 = foldername.Length - jj
687
            Dim foldr = foldername.Substring((jj + 1), (jj1 - 1))
688
            itree.Nodes.Add(foldr, foldr)
689
        Next ' if you put this next at the end of procedure recursive will be done on first folder only
690
        Exit Sub
691
eee:
692
    End Sub
693
694
    Sub displayfiles(ByVal path As String)
695
696
        Dim lvItem As ListViewItem
697
        ListView_File.Items.Clear()
698 e282643f Gyusu
699 962b2464 Gyusu
        ' lvItem = ListView.Items.Add("ListViewItem1")
700
        '   lvItem.SubItems.AddRange(New String() {"Size", "extention", "date modified"})
701
702
        Dim filename As String
703
        On Error GoTo wwq
704
        ' Directory.GetFiles(path).Length.
705 62f4d5df Gyusu
        'Me.ProgressBar_Status.Maximum = Directory.GetFiles(path).Length + 1
706
        'Me.ProgressBar_Status.Value = 0
707 962b2464 Gyusu
        For Each filename In Directory.GetFiles(path)
708
            On Error GoTo wwq
709
            Dim jj_ = filename.LastIndexOf("\")
710
            Dim jj1_ = filename.Length - jj_
711
            Dim fil = filename.Substring((jj_ + 1), (jj1_ - 1))
712
            If fil.Contains(".xml") Then
713 62f4d5df Gyusu
                '  Me.ProgressBar_Status.Value = Me.ProgressBar_Status.Value + 1
714 962b2464 Gyusu
                ' ListView.Items.Add(fil, 13) ''old 13 28
715
                lvItem = ListView_File.Items.Add(fil, 13) '2 5 7 work, 0 alos
716
                Dim infoReader As System.IO.FileInfo
717
                infoReader = My.Computer.FileSystem.GetFileInfo(filename)
718
                '    lvItem.SubItems.AddRange(New String() {infoReader.Length.ToString + " Byte", infoReader.Extension.ToString, infoReader.LastWriteTime})
719
                lvItem.SubItems.AddRange(New String() {infoReader.LastWriteTime})
720
                ListView_File.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
721
            End If
722
723
724
        Next
725
        Exit Sub
726
wwq:
727
        MsgBox(Err.Description)
728
    End Sub
729
730
    Private Sub Tree_XMLFiles_MouseMove(sender As Object, e As MouseEventArgs) Handles Tree_XMLFiles.MouseMove
731
        first_start = True
732
    End Sub
733
734
    Private Sub ListView_File_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView_File.SelectedIndexChanged
735
        Dim indexes As ListView.SelectedIndexCollection =
736
                         Me.ListView_File.SelectedIndices
737
        Dim index As Integer
738
739
        For Each index In indexes
740
            'On Error Resume Next
741
            If folders_path.EndsWith("\") = True Then
742
                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
743
                'On Error Resume Next
744
            Else
745
                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
746
            End If
747
748
            Dim infoReader As System.IO.FileInfo
749
            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
750
            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
751
        Next
752
    End Sub
753
754
    Private Sub Procees()
755
        Dim indexes As ListView.SelectedIndexCollection =
756
                            Me.ListView_File.SelectedIndices
757
        Dim index As Integer
758
759
        For Each index In indexes
760
            'On Error Resume Next
761
            If folders_path.EndsWith("\") = True Then
762
                On Error GoTo out
763
                Me.Status_Main.Items(0).Text = folders_path + (Me.ListView_File.Items(index).Text)
764
                On Error GoTo out
765
                'On Error Resume Next
766
            Else
767
                Me.Status_Main.Items(0).Text = folders_path + "\" + (Me.ListView_File.Items(index).Text)
768
                On Error GoTo out
769
            End If
770
771
            Dim infoReader As System.IO.FileInfo
772
            infoReader = My.Computer.FileSystem.GetFileInfo(Me.Status_Main.Items(0).Text)
773
            Me.Status_Main.Items(1).Text = " Created : " + infoReader.CreationTime.ToString + " " + infoReader.Attributes.ToString
774
            On Error GoTo out
775
            MsgBox(Me.Status_Main.Items(0).Text + " is processed")
776
            On Error GoTo out
777
        Next
778
        Exit Sub
779
out:
780
        MsgBox(Err.Description)
781
    End Sub
782
783 31d47a80 Gyusu
    Private Function LoadAllDrawing() As DataTable
784 e282643f Gyusu
785
786
787
788 31d47a80 Gyusu
        Dim oDt As DataTable = Drawing_Dt()
789 e282643f Gyusu
        'Dim oDt As DataTable = Drawing_Dt()
790
        '_objPIDADrawing = CreateObject("PIDAutomation.Application")
791
        'For Each objDrawing In _objPIDADrawing.Drawings
792
        '    Dim sName As String = objDrawing.Attributes("Name").Value
793
        '    Dim sPath As String = objDrawing.Attributes("Path").Value
794
        '    Dim oAddRow As DataRow = oDt.NewRow()
795
        '    oAddRow("Name") = sName
796
        '    oAddRow("Path") = sPath
797
        '    oDt.Rows.Add(oAddRow)
798
        'Next
799
        Dim sHierarchy As String = My.Settings.Plant_Hierarchy
800
801
802
        Dim files() As String
803
        files = Directory.GetFiles(sHierarchy, "*.pid", SearchOption.AllDirectories)
804
        For Each FileName As String In files
805
            Dim sName As String = FileName
806 31d47a80 Gyusu
            Dim oAddRow As DataRow = oDt.NewRow()
807 e282643f Gyusu
            oAddRow("Name") = Path.GetFileNameWithoutExtension(sName)
808
            oAddRow("Path") = FileName
809 31d47a80 Gyusu
            oDt.Rows.Add(oAddRow)
810 e282643f Gyusu
            '  Console.WriteLine(FileName)
811 31d47a80 Gyusu
        Next
812 e282643f Gyusu
813
814
815
        'Dim datasource As LMADataSource
816
        'Dim objPIDAutoApp As Object
817
        'Dim objPIDADrawing As Object
818
        'Dim objDrawing As LMDrawing
819
        'Dim objDrawings As LMDrawings
820
        'objPIDAutoApp = CreateObject("PIDAutomation.Application")
821
        'objPIDAutoApp = GetObject(, "SmartPlantPID.Application")
822
823
        'datasource = CreateObject("Llama.LMADataSource", "")
824
        'Dim oObj As Object = Nothing
825
        'objDrawings = New LMDrawings
826
        'objDrawing = datasource.GetDrawing(oObj)
827
828
        'objDrawings.Collect(datasource)
829
        ''     objPIDAutoApp = GetObject(, "SmartPlantPID.Application") '// CreateObject("PIDAutomation.Application")
830
        'For Each objDrawing In objDrawings
831
        '    Dim sName As String = objDrawing.Attributes("Name").Value
832
        '    Dim sPath As String = objDrawing.Attributes("Path").Value
833
        '    Dim oAddRow As DataRow = oDt.NewRow()
834
        '    oAddRow("Name") = sName
835
        '    oAddRow("Path") = sHierarchy & "\" & sPath
836
        '    oDt.Rows.Add(oAddRow)
837
        'Next
838
839 31d47a80 Gyusu
        Return oDt
840
    End Function
841
842 e282643f Gyusu
    Private Function LoadAllDrawing2() As DataTable
843 31d47a80 Gyusu
        Dim datasource As LMADataSource
844
        Dim objPIDAutoApp As Object
845
        Dim objPIDADrawing As Object
846
        Dim objDrawing As Object 'Drawing
847
        'Dim objDrawing As LMDrawing
848
        'Dim objDrawings As LMDrawings
849
850
        datasource = New LMADataSource
851
852
        '    objDrawings = New LMDrawings
853
        'objDrawings.Collect(datasource)
854
        objPIDAutoApp = CreateObject("PIDAutomation.Application")
855
856
        For Each objDrawing In objPIDAutoApp.Drawings
857
            objDrawing.CloseDrawing(True)
858
        Next
859
        Try
860
            objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("UY1-K-2000_P1_300dpi_0321_TEST_1")
861
        Catch ex As Exception
862
            Process.Start("\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
863
        End Try
864
865
866
867
        Dim sType As Type = objPIDAutoApp.GetType()
868
        Dim iCount As Integer = 0
869
        ' Dim sPath As String = "‪\\desktop-9vlq0dp\Test02Site\P188943_SPPID_Plant\Plant_Hierarchy\8121\8121-1\188943-8121-PR-DW-011001.pid"
870
871
        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("1")
872
873
        For Each objDrawing In objPIDAutoApp.Drawings
874
            If objDrawing.Attributes("ItemStatus").Index = 1 Then '1 stands for Active
875
                Try
876
877
                    Dim sName As String = objDrawing.Attributes("Name").Value
878
879
                    iCount = iCount + 1
880
                    If sName = "UY1-K-2000_P1_300dpi_0321_TEST_1" Then
881
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing(objDrawing.Attributes("Name"))
882
                        objPIDADrawing = objPIDAutoApp.Drawings.OpenDrawing("\8121\8121-1\UY1-K-2000_P1_300dpi_0321_TEST_1.pid")
883
                        If Not objPIDADrawing Is Nothing Then
884
                            objPIDADrawing.CloseDrawing()
885
                        End If
886
                    End If
887
888
889
                Catch ex As Exception
890
891
                End Try
892
893
            End If
894
        Next
895
        objPIDAutoApp.Quit
896
        objPIDAutoApp = Nothing
897
        objPIDADrawing = Nothing
898
        objDrawing = Nothing
899
        '   objDrawings = Nothing
900 e282643f Gyusu
    End Function
901
902 31d47a80 Gyusu
903 e282643f Gyusu
904
905
    Private Sub ThreadTask()
906 962b2464 Gyusu
        If ListView_File.Items.Count > 0 Then
907 31d47a80 Gyusu
            Dim oDwg_Dt As DataTable = LoadAllDrawing()
908 e282643f Gyusu
            Dim iDwgCnt As Integer = 0
909
910
            Dim myList = DirectCast(Invoke(New GetListViewDelegate(AddressOf GetListViewItems), ListView_File), List(Of String))
911
            For i = 0 To myList.Count - 1
912 31d47a80 Gyusu
913 e282643f Gyusu
                Dim sDwgName As String = Path.GetFileNameWithoutExtension(myList(i))
914
                Txt_Status.Text = sDwgName & "..(" & i + 1 & "/" & myList.Count & ")"
915 1229ad76 Gyusu
916 e282643f Gyusu
                Dim sDwgNo As String = myList(i)
917
                Dim oDwgPath As String = ""
918
                oDwgPath = _selectFolderPath + "\" + sDwgNo
919
920
                Dim sPath As String = OpenDrawing(oDwg_Dt, sDwgName)
921
                    If sPath <> "" Then
922
                        Process.Start(sPath)
923
924
                    Dim oPipe_Dt As DataTable = New DataTable() 'LoadPipeInXml(oDwgPath)
925 962b2464 Gyusu
                    Dim oSymbol_Dt As DataTable = LoadSymbolInXml(oDwgPath)
926
                        AutoConverting(oPipe_Dt, oSymbol_Dt)
927
                    End If
928 e282643f Gyusu
                    ''도면 생성
929
                'If CreateDwg(sDwgName) Then
930
                '    'AutoConverting
931
932
                'End If
933 4f359afa Gyusu
934 962b2464 Gyusu
            Next
935
        End If
936
    End Sub
937 e282643f Gyusu
938
939
940
    Private Sub Btn_Convert_Click(sender As Object, e As EventArgs) Handles Btn_Convert.Click
941
        Me.ProgressBar_Status.Visible = True
942
        ProgressBar_Status.Maximum = 100
943
        ProgressBar_Status.Value = 0
944
        _selectFolderPath = Tree_XMLFiles.SelectedNode.FullPath.Replace("\\", "\")
945
        _Main_trd = New Thread(AddressOf ThreadTask)
946
        _Main_trd.IsBackground = True
947
        _Main_trd.Start()
948
949
    End Sub
950
951
952
    Private Function GetCheckList(ByVal listviewItem As ListViewItem)
953
954
    End Function
955
956
    Private Sub newThreadFunc(ByVal state As Object)
957
958
    End Sub
959
960
    Private Function OpenDrawing(ByVal oDt As DataTable, ByVal sDwgName As String) As String
961
        Dim oRows As DataRow() = oDt.Select("[Name] = '" & sDwgName & "'")
962
        Dim oPath As String = ""
963
        If oRows.Length > 0 Then
964
            oPath = oRows(0).Item("Path").ToString()
965
        End If
966
        Return oPath
967
    End Function
968
969
970
    Private Sub Btn_Setting_Click(sender As Object, e As EventArgs) Handles Btn_Setting.Click
971
        Dim oSettings As Settings = New Settings()
972
        oSettings.ShowDialog()
973
    End Sub
974
975
    Private Sub Btn_Stop_Click(sender As Object, e As EventArgs) Handles Btn_Stop.Click
976
977
    End Sub
978
979
    Private Sub DropDown_File_Click(sender As Object, e As EventArgs) Handles DropDown_File.Click
980
981
    End Sub
982
983
984
985
986
987
End Class
988
989
990
Public Class DrawingInfo
991
    Public mDrawingName As String
992
    Public mSpID As String
993
    Public mPath As String
994 4f359afa Gyusu
End Class
995 e282643f Gyusu
996
997
998
클립보드 이미지 추가 (최대 크기: 500 MB)