프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

hytos / DTI_PID / APIDConverter / Utils / APIDUtils.cs @ 016701e5

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

1 4e320fcb gaqhf
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6 59184d1b gaqhf
using System.IO;
7
using System.Reflection;
8 14540282 gaqhf
using Autodesk.AutoCAD.EditorInput;
9 59184d1b gaqhf
10
using AVEVA.PID.Components;
11
using AVEVA.PID.GUI;
12
using AVEVA.PID.Common;
13
using AVEVA.PID.DWGSelector;
14 4e320fcb gaqhf
15 5aec7e24 gaqhf
using AVEVA.PID.CustomizationUtility.DB;
16
using AVEVA.PID.CustomizationUtility.Model;
17
using AVEVA.PID.CustomizationUtility.Properties;
18
19 4e320fcb gaqhf
namespace AVEVA.PID.CustomizationUtility
20
{
21
    public class APIDUtils
22
    {
23 32954c7f gaqhf
        #region APID Converter
24 5aec7e24 gaqhf
        public static object FindObjectByUID(Document document, string UID)
25
        {
26
            if (!string.IsNullOrEmpty(UID) && UID != "None")
27
            {
28
                foreach (PlantItem item in document.PlantItems)
29
                {
30
                    if (item.UID == UID)
31
                        return item;
32
                }
33
            }
34 4e320fcb gaqhf
35 5aec7e24 gaqhf
            return null;
36
        }
37 32954c7f gaqhf
        public static bool ConvertPointBystring(string sPoint, ref double dX, ref double dY)
38
        {
39
            try
40
            {
41
                string[] pointArr = sPoint.Split(new char[] { ',' });
42
                if (pointArr.Length == 2)
43
                {
44
                    dX = Convert.ToDouble(pointArr[0]);
45
                    dY = Convert.ToDouble(pointArr[1]);
46
                }
47
            }
48
            catch (Exception)
49
            {
50
                dX = 0;
51
                dY = 0;
52
                return false;
53
            }
54
55
            return true;
56
        }
57 53344e2c gaqhf
        public static bool IsConnectedLine(Line line1, Line line2)
58
        {
59
            bool result = false;
60
61
            if (line1.CONNECTORS.Find(x => x.ConnectedObject == line2) != null &&
62
                line2.CONNECTORS.Find(x => x.ConnectedObject == line1) != null)
63
                result = true;
64
65
            return result;
66
        }
67 016701e5 gaqhf
        public static SlopeType CalcSlope(double x1, double y1, double x2, double y2)
68
        {
69
            if (x1 - x2 == 0)
70
            {
71
                return SlopeType.VERTICAL;
72
            }
73
            else
74
            {
75
                double angle = Math.Atan(Math.Abs(y2 - y1) / Math.Abs(x2 - x1)) * 180 / Math.PI;
76
                if (angle <= 15)
77
                    return SlopeType.HORIZONTAL;
78
                else if (angle >= 75)
79
                    return SlopeType.VERTICAL;
80
                else
81
                    return SlopeType.Slope;
82
            }
83
        }
84 32954c7f gaqhf
        #endregion
85 88cb9898 gaqhf
86 32954c7f gaqhf
        #region Only AVEVA
87 88cb9898 gaqhf
        public static void SetAvevaExplorer()
88
        {
89
            bool exist = false;
90
            string sName = "APID Converter";
91
            for (int i = 0; i < Aveva.Command.AvevaCommands.projectExplorer.Count; i++)
92
            {
93
                if (Aveva.Command.AvevaCommands.projectExplorer[i].Name == sName)
94
                {
95
                    exist = true;
96
                    Aveva.Command.AvevaCommands.projectExplorer.Remove(i);
97
                    break;
98
                }
99
            }
100
101
            if (!exist)
102
            {
103
                Aveva.Command.AvevaCommands.projectExplorer.Add(sName, new APIDConverterExplorer());
104
                Aveva.Command.AvevaCommands.projectExplorer.Activate(Aveva.Command.AvevaCommands.projectExplorer.Count - 1);
105
            }
106 9ee9b61d gaqhf
        }
107
        public static List<string> GetPipeStyle()
108
        {
109
            List<string> list = new List<string>();
110
            Autodesk.Windows.RibbonItemCollection items = GUI.RibbonHelper.GetPanelItems("ID_PIPE_PANEL");
111
            object objPipeStyle = GUIUtils.FindItem(items, "PIPESTYLE");
112
            if (objPipeStyle != null)
113
            {
114
                Autodesk.Windows.RibbonCombo pipeStyleCombo = objPipeStyle as Autodesk.Windows.RibbonCombo;
115
                foreach (var item in pipeStyleCombo.Items)
116
                {
117
                    Autodesk.Windows.RibbonButton loop = item as Autodesk.Windows.RibbonButton;
118
                    list.Add(loop.AutomationName);
119
                }
120
            }
121
122
            return list;
123
        }
124
        public static List<string> GetSignalStyle()
125
        {
126
            List<string> list = new List<string>();
127
            Autodesk.Windows.RibbonItemCollection items = GUI.RibbonHelper.GetPanelItems("ID_SIGNAL_PANEL");
128
            object objPipeStyle = GUIUtils.FindItem(items, "SIGNALSTYLE");
129
            if (objPipeStyle != null)
130
            {
131
                Autodesk.Windows.RibbonCombo pipeStyleCombo = objPipeStyle as Autodesk.Windows.RibbonCombo;
132
                foreach (var item in pipeStyleCombo.Items)
133
                {
134
                    Autodesk.Windows.RibbonButton loop = item as Autodesk.Windows.RibbonButton;
135
                    list.Add(loop.AutomationName);
136
                }
137
            }
138
139
            return list;
140 88cb9898 gaqhf
        }
141 32954c7f gaqhf
        #endregion
142 4e320fcb gaqhf
    }
143
}
클립보드 이미지 추가 (최대 크기: 500 MB)