프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / Main.vb @ af493f41

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