프로젝트

일반

사용자정보

통계
| 개정판:

hytos / DTI_PID / SPPIDConverter / ConverterDocking.cs @ 24515a3a

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

1 65881d60 gaqhf
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Drawing;
5
using System.Data;
6
using System.Linq;
7
using System.Text;
8
using System.Threading.Tasks;
9
using System.Windows.Forms;
10
using System.Threading;
11 69b7387a gaqhf
using System.IO;
12 65881d60 gaqhf
using Microsoft.VisualBasic;
13 e3e2d41f gaqhf
using Ingr.RAD2D;
14 d19ae675 gaqhf
using Converter.BaseModel;
15
using Converter.SPPID.Properties;
16
using Converter.SPPID.DB;
17
using Converter.SPPID.Util;
18
using Converter.SPPID.Form;
19
using Converter.SPPID.Model;
20 1ba9c671 gaqhf
using Plaice;
21
using Llama;
22 ca214bc3 gaqhf
using DevExpress.XtraSplashScreen;
23 224535bb gaqhf
using Newtonsoft.Json;
24 9628f54b gaqhf
using System.Runtime.InteropServices;
25 65881d60 gaqhf
26
namespace Converter.SPPID.Wrapper
27
{
28
    public partial class ConverterDocking : UserControl
29
    {
30 e3e2d41f gaqhf
        Ingr.RAD2D.Application radApp;
31 d19ae675 gaqhf
        dynamic application;
32 65881d60 gaqhf
        public ConverterDocking()
33
        {
34
            InitializeComponent();
35 d19ae675 gaqhf
            application = Interaction.GetObject("", "PIDAutomation.Application");
36 e3e2d41f gaqhf
            WrapperApplication wApp = new WrapperApplication(application.Application);
37
            radApp = wApp.RADApplication;
38 ca6e0f51 gaqhf
            
39 6a7573b0 gaqhf
            try
40
            {
41
                textEditDrawingX.EditValue = Settings.Default.DrawingX;
42
                textEditDrawingY.EditValue = Settings.Default.DrawingY;
43
            }
44
            catch (Exception ex)
45
            {
46
                StringBuilder sb = new StringBuilder();
47
                sb.AppendLine(ex.Message);
48
                sb.AppendLine(ex.StackTrace);
49
                MessageBox.Show(sb.ToString());
50
            }
51
52 1ba9c671 gaqhf
#if DEBUG
53
            simpleButton1.Visible = true;
54 51ae61b9 gaqhf
55 4fb0f8d5 gaqhf
            
56 1ba9c671 gaqhf
#endif
57 65881d60 gaqhf
        }
58
59 e3e2d41f gaqhf
        private void btnConverter_Click(object sender, EventArgs e)
60 65881d60 gaqhf
        {
61 1ba9c671 gaqhf
            ConverterForm converterForm = new ConverterForm();
62
            if (converterForm.ShowDialog() == DialogResult.OK)
63 65881d60 gaqhf
            {
64 1ba9c671 gaqhf
                try
65
                {
66
                    CloseOPCForm.Run();
67 ca214bc3 gaqhf
68 d5ec4d0f gaqhf
                    for (int i = 0; i < converterForm.Documents.Count; i++)
69 1ba9c671 gaqhf
                    {
70 d5ec4d0f gaqhf
                        SPPID_Document document = converterForm.Documents[i];
71 1ba9c671 gaqhf
                        if (document.SetSPPIDMapping() && document.Enable)
72
                        {
73
                            AutoModeling modeling = new AutoModeling(document, application, radApp);
74 d5ec4d0f gaqhf
                            modeling.DocumentLabelText = string.Format("Drawing Name : {0} ({1}/{2})", document.DrawingName, i + 1, converterForm.Documents.Count);
75 1ba9c671 gaqhf
                            modeling.Run();
76
                        }
77
                    }
78
                }
79
                catch (Exception ex)
80
                {
81
                    MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
82
                }
83
                finally
84 d19ae675 gaqhf
                {
85 1ba9c671 gaqhf
                    CloseOPCForm.Stop();
86
                }
87
88
                MessageBox.Show(Msg.EndConvert, Msg.Information, MessageBoxButtons.OK, MessageBoxIcon.Information);
89
            }
90
        }
91
92 69b7387a gaqhf
        private void btnLinkOPC_Click(object sender, EventArgs e)
93
        {
94 4fb0f8d5 gaqhf
            LMADataSource dataSource = new LMADataSource();
95
            LMDrawings drawings = new LMDrawings();
96
97 88bac50c gaqhf
            //try
98 69b7387a gaqhf
            {
99 4fb0f8d5 gaqhf
                Project_Info _ProjectInfo = Project_Info.GetInstance();
100
                _ProjectInfo.DefaultPath = Settings.Default.LatestProjectPath;
101
                if (Project_DB.ConnTestAndCreateTable())
102
                {
103 224535bb gaqhf
                    DataTable dt = Project_DB.SelectSPPID_DB_INFO();
104
                    if (dt.Columns.Count > 0 && dt.Rows.Count > 0)
105
                        SPPIDUtil.ConvertToSPPIDInfo(dt.Rows[0][0].ToString());
106
                    else
107
                        SPPID_DBInfo.Clear();
108
109
                    SPPID_DBInfo sPPID_DBInfo = SPPID_DBInfo.GetInstance();
110
                    if (sPPID_DBInfo.Enable)
111
                    {
112
                        drawings.Collect(dataSource);
113 69b7387a gaqhf
114 224535bb gaqhf
                        DataTable drawingTable = Project_DB.SelectDrawingInfo();
115
                        drawingTable.Columns.Add("EXIST", typeof(bool));
116
                        drawingTable.Columns.Add("SPPIDPATH", typeof(string));
117 e8536f2b gaqhf
118 224535bb gaqhf
                        foreach (LMDrawing item in drawings)
119
                        {
120
                            DataRow[] rows = drawingTable.Select(string.Format("DRAWINGNUMBER = '{0}'", item.Attributes["DrawingNumber"].get_Value()));
121
                            foreach (DataRow row in rows)
122
                            {
123
                                row["EXIST"] = true;
124
                                row["DRAWINGNAME"] = item.Attributes["Name"].get_Value();
125
                                row["SPPIDPATH"] = item.get_Path();
126
                            }
127
                        }
128 69b7387a gaqhf
129 1ed39474 gaqhf
                        List<SPPID_Document> allDocuments = new List<SPPID_Document>();
130 224535bb gaqhf
                        foreach (DataRow row in drawingTable.Rows)
131 88bac50c gaqhf
                            allDocuments.Add((SPPID_Document)row["DOCUMENT"]);
132 1ed39474 gaqhf
133 88bac50c gaqhf
                        AutoModeling_OPC opc = new AutoModeling_OPC(allDocuments, application, radApp);
134 1ed39474 gaqhf
                        opc.Run();
135 224535bb gaqhf
                    }
136 4fb0f8d5 gaqhf
                }
137
                else
138
                {
139
                    MessageBox.Show(Msg.ConnectionFail, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
140
                }
141 69b7387a gaqhf
            }
142 88bac50c gaqhf
            //catch (Exception ex)
143 69b7387a gaqhf
            {
144 88bac50c gaqhf
                //MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
145 69b7387a gaqhf
            }
146 88bac50c gaqhf
            //finally
147 4fb0f8d5 gaqhf
            {
148
                ReleaseCOMObjects(dataSource);
149
                ReleaseCOMObjects(drawings);
150
            }
151 69b7387a gaqhf
        }
152
153 4fb0f8d5 gaqhf
        public void ReleaseCOMObjects(params object[] objVars)
154
        {
155
            int intNewRefCount = 0;
156
            foreach (object obj in objVars)
157
            {
158
                if (!Information.IsNothing(obj) && System.Runtime.InteropServices.Marshal.IsComObject(obj))
159
                    intNewRefCount = intNewRefCount + System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj);
160
            }
161
        }
162
163 6a7573b0 gaqhf
        private void btnGetDrawingSize_Click(object sender, EventArgs e)
164 1ba9c671 gaqhf
        {
165 6a7573b0 gaqhf
            if (radApp.ActiveSelectSet.Count > 0)
166 65881d60 gaqhf
            {
167 6a7573b0 gaqhf
                DependencyObject line2D = radApp.ActiveSelectSet[0] as DependencyObject;
168
                if (line2D != null)
169 1ba9c671 gaqhf
                {
170 6a7573b0 gaqhf
                    double minX = 0;
171
                    double minY = 0;
172
                    double maxX = 0;
173
                    double maxY = 0;
174
                    line2D.Range(out minX, out minY, out maxX, out maxY);
175
176
                    Settings.Default.DrawingX = maxX - minX;
177
                    Settings.Default.DrawingY = maxY - minY;
178
                    Settings.Default.Save();
179
180
                    textEditDrawingX.EditValue = Settings.Default.DrawingX;
181
                    textEditDrawingY.EditValue = Settings.Default.DrawingY;
182 1ba9c671 gaqhf
                }
183 6a7573b0 gaqhf
                else
184
                    MessageBox.Show(Msg.SelectLine, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
185 65881d60 gaqhf
            }
186 6a7573b0 gaqhf
            else
187
                MessageBox.Show(Msg.SelectLine, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
188
        }
189 7e4a64a3 gaqhf
190
        #region TEST
191 ca6e0f51 gaqhf
        Placement _placement = new Placement();
192
        LMADataSource dataSource;
193 63fbf592 gaqhf
        bool first = true;
194
        LMDrawing currentDrawing;
195 6a7573b0 gaqhf
        private void simpleButton1_Click(object sender, EventArgs e)
196
        {
197 ca6e0f51 gaqhf
            dataSource = _placement.PIDDataSource;
198 32205389 gaqhf
199 ca6e0f51 gaqhf
            string projectNumber = dataSource.ProjectNumber;
200
            LMActiveProject activeProject = dataSource.GetActiveProject();
201
            LMAEnumAttLists enumAttLists = dataSource.CodeLists;
202
203
            AutoJoinPipeRun();
204
        }
205
        private void AutoJoinPipeRun()
206
        {
207
            string modelItemId = null;
208
            List<double[]> vertices = new List<double[]>();
209
            dynamic OID = radApp.ActiveSelectSet[0].Key();
210
            DependencyObject drawingObject = radApp.ActiveDocument.ActiveSheet.DrawingObjects[OID];
211
            foreach (var attributes in drawingObject.AttributeSets)
212 4ba01591 gaqhf
            {
213 ca6e0f51 gaqhf
                foreach (var attribute in attributes)
214 4ba01591 gaqhf
                {
215 ca6e0f51 gaqhf
                    if (attribute.Name == "ModelID")
216
                        modelItemId = attribute.GetValue().ToString();
217
                }
218
            }
219
            radApp.ActiveSelectSet.RemoveAll();
220 32205389 gaqhf
221 63fbf592 gaqhf
222 ca6e0f51 gaqhf
            LMModelItem modelItem = dataSource.GetModelItem(modelItemId);
223
224
            List<string> endModelItemIDs = new List<string>();
225
226
            if (modelItem != null)
227
            {
228
                List<string> otherModelIds = new List<string>();
229
                foreach (LMRepresentation rep in modelItem.Representations)
230
                {
231
                    if (rep.Attributes["RepresentationType"].get_Value() == "Connector" && rep.Attributes["ItemStatus"].get_Value() == "Active")
232
                    {
233
                        LMConnector connector = dataSource.GetConnector(rep.Id);
234
                        if (connector.ConnectItem1SymbolObject != null && connector.ConnectItem1SymbolObject.get_RepresentationType() != "Branch")
235
                        {
236
                            LMSymbol symbol = connector.ConnectItem1SymbolObject;
237
                            otherModelIds.AddRange(FindOtherModelItemBySymbolWhereTypePipeRun(symbol, modelItem.Id));
238
                        }
239
                        if (connector.ConnectItem2SymbolObject != null && connector.ConnectItem2SymbolObject.get_RepresentationType() != "Branch")
240
                        {
241
                            LMSymbol symbol = connector.ConnectItem2SymbolObject;
242
                            otherModelIds.AddRange(FindOtherModelItemBySymbolWhereTypePipeRun(symbol, modelItem.Id));
243
                        }
244 32205389 gaqhf
                    }
245
                }
246 ca6e0f51 gaqhf
247
            }
248
        }
249
        private void JoinRun(string mainModelId, string modelId)
250
        {
251
            LMModelItem modelItem = dataSource.GetModelItem(mainModelId);
252
            if (modelItem != null)
253
            {
254
                foreach (LMRepresentation rep in modelItem.Representations)
255 1ff0105e gaqhf
                {
256 ca6e0f51 gaqhf
                    if (rep.Attributes["RepresentationType"].get_Value() == "Connector" && rep.Attributes["ItemStatus"].get_Value() == "Active")
257 1ff0105e gaqhf
                    {
258 ca6e0f51 gaqhf
                        LMConnector connector = dataSource.GetConnector(rep.Id);
259
                        if (connector.ConnectItem1SymbolObject != null && connector.ConnectItem1SymbolObject.get_RepresentationType() != "Branch")
260
                        {
261
                            LMSymbol symbol = connector.ConnectItem1SymbolObject;
262 1ff0105e gaqhf
263 ca6e0f51 gaqhf
                        }
264
                        if (connector.ConnectItem2SymbolObject != null && connector.ConnectItem2SymbolObject.get_RepresentationType() != "Branch")
265
                        {
266
                            LMSymbol symbol = connector.ConnectItem2SymbolObject;
267
                            string typeName = symbol.ModelItemObject.get_ItemTypeName().ToString();
268
                            if (typeName == "Instrument")
269
                            {
270
                                LMInstrument instrument = dataSource.GetInstrument(symbol.ModelItemID);
271
                            }
272
                            else if (typeName == "PipingComp")
273
                            {
274
                                LMPipingComp pipingComp = dataSource.GetPipingComp(symbol.ModelItemID);
275
                            }
276
                        }
277 1ff0105e gaqhf
                    }
278 ca6e0f51 gaqhf
                }
279
            }
280
        }
281 1ff0105e gaqhf
282 ca6e0f51 gaqhf
        private void GetModelItemForJoin(string modelItemId, List<string> otherModelIds)
283
        {
284
            LMModelItem modelItem = dataSource.GetModelItem(modelItemId);
285
            List<string> endModelItemIDs = new List<string>();
286
            if (modelItem != null)
287
            {
288
                foreach (LMRepresentation rep in modelItem.Representations)
289
                {
290
                    if (rep.Attributes["RepresentationType"].get_Value() == "Connector" && rep.Attributes["ItemStatus"].get_Value() == "Active")
291
                    {
292
                        LMConnector connector = dataSource.GetConnector(rep.Id);
293
                        if (connector.ConnectItem1SymbolObject != null && connector.ConnectItem1SymbolObject.get_RepresentationType() != "Branch")
294
                        {
295
                            LMSymbol symbol = connector.ConnectItem1SymbolObject;
296
                            otherModelIds.AddRange(FindOtherModelItemBySymbolWhereTypePipeRun(symbol, modelItem.Id));
297
                        }
298
                        if (connector.ConnectItem2SymbolObject != null && connector.ConnectItem2SymbolObject.get_RepresentationType() != "Branch")
299
                        {
300
                            LMSymbol symbol = connector.ConnectItem2SymbolObject;
301
                            otherModelIds.AddRange(FindOtherModelItemBySymbolWhereTypePipeRun(symbol, modelItem.Id));
302
                        }
303 32205389 gaqhf
                    }
304 1ff0105e gaqhf
                }
305 ca6e0f51 gaqhf
306 1ff0105e gaqhf
            }
307 ca6e0f51 gaqhf
        }
308 7e4a64a3 gaqhf
309 ca6e0f51 gaqhf
        private List<string> FindOtherModelItemBySymbolWhereTypePipeRun(LMSymbol symbol, string modelId)
310
        {
311
            List<string> modelItemIDs = new List<string>();
312
            foreach (LMConnector connector in symbol.Connect1Connectors)
313
            {
314
                LMModelItem modelItem = connector.ModelItemObject;
315
                if (modelItem.get_ItemStatus() == "Active" && modelItem.get_ItemTypeName().ToString() == "PipeRun" && modelItem.Id != modelId)
316
                    modelItemIDs.Add(modelItem.Id);
317
                ReleaseCOMObjects(modelItem);
318
            }
319
320
            foreach (LMConnector connector in symbol.Connect2Connectors)
321
            {
322
                LMModelItem modelItem = connector.ModelItemObject;
323
                if (modelItem.get_ItemStatus() == "Active" && modelItem.get_ItemTypeName().ToString() == "PipeRun" && modelItem.Id != modelId)
324
                    modelItemIDs.Add(modelItem.Id);
325
                ReleaseCOMObjects(modelItem);
326
            }
327 7e4a64a3 gaqhf
328 ca6e0f51 gaqhf
            return modelItemIDs;
329 65881d60 gaqhf
        }
330 ca6e0f51 gaqhf
331
        private void FindOtherModelItemBySymbolWhereTypePipeRunLoop()
332
        {
333
334
        }
335
336
        private void JoinRunOnlyPipeRun()
337
        {
338
339
        }
340
341
        private void GetConnectPointsCount(LMSymbol symbol,ref int pipeRunCount, ref int signalCount)
342
        {
343
            string typeName = symbol.ModelItemObject.get_ItemTypeName().ToString();
344
            if (typeName == "Instrument")
345
            {
346
                LMInstrument item = dataSource.GetInstrument(symbol.ModelItemID);
347
                pipeRunCount = item.PipingPoints.Count;
348
                signalCount = item.SignalPoints.Count;
349
                ReleaseCOMObjects(item);
350
            }
351
            else if (typeName == "PipingComp")
352
            {
353
                LMPipingComp item = dataSource.GetPipingComp(symbol.ModelItemID);
354
                pipeRunCount = item.PipingPoints.Count;
355
                signalCount = item.SignalPoints.Count;
356
                ReleaseCOMObjects(item);
357
            }
358
        }
359
360
        
361
362 7e4a64a3 gaqhf
        private void TESTLine()
363
        {
364
            Placement _placement = new Placement();
365
            LMADataSource dataSource = _placement.PIDDataSource;//placement.PIDDataSource;
366
367
            foreach (var attributes in radApp.ActiveSelectSet[0].AttributeSets)
368
            {
369
                foreach (var attribute in attributes)
370
                {
371
                    if (attribute.Name == "ModelID")
372
                    {
373
                        LMModelItem modelItem = dataSource.GetModelItem(attribute.GetValue().ToString());
374
                        foreach (LMRepresentation representation  in modelItem.Representations)
375
                        {
376
                            //representa
377
                        }
378
                    }
379
                }
380
            }
381
        }
382
        #endregion
383
384 7aee331b gaqhf
385 9628f54b gaqhf
        [DllImport("user32.dll")]
386
        public static extern int FindWindow(string lpClassName, string lpWindowName);
387 3734dcc5 gaqhf
388
        [DllImport("user32.dll", SetLastError = true)]
389
        static extern int GetWindowThreadProcessId(IntPtr hWnd, out int processId);
390
391 65881d60 gaqhf
    }
392
}
클립보드 이미지 추가 (최대 크기: 500 MB)