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