프로젝트

일반

사용자정보

개정판 518c7651

ID518c7651e6b7524115c5b2f45369068a2c0bea80
상위 dd5b2a95
하위 7ca21e50

gaqhf 이(가) 약 5년 전에 추가함

dev issue #507 : edit specbreak relocation

Change-Id: I11d97842d90eff19604c037027e66bc117c5bf68

차이점 보기:

DTI_PID/SPPIDConverter/ConverterDocking.cs
936 936
                }
937 937

  
938 938
                SpecBreakRelocation(degree, originX, originY, crossX, crossY, topX, topY, dependency1, dependency2, dependency3);
939
                SetSpecBreakParameters(symbol, dependency1, dependency2, degree);
939 940
            }
940 941
            else
941 942
            {
942 943
                MessageBox.Show("Check Rule!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
943 944
            }
944 945
        }
946
        private void SetSpecBreakParameters(Symbol2d symbol, DependencyObject dependency1, DependencyObject dependency2, double degree)
947
        {
948
            bool mirror = symbol.GetTransform().HasReflection;
949
            string repID = GetRepresentationId(symbol);
950
            Placement placement = new Placement();
951
            LMADataSource dataSource = placement.PIDDataSource;
952

  
953
            LMSymbol _LMSymbol = dataSource.GetSymbol(repID);
954
            if (_LMSymbol != null)
955
            {
956
                double sX1, sY1, sX2, sY2, sOriginX, sOriginY;
957
                symbol.Range(out sX1, out sY1, out sX2, out sY2);
958
                symbol.GetOrigin(out sOriginX, out sOriginY);
959
                double d1X1, d1Y1, d1X2, d1Y2, d2X1, d2Y1, d2X2, d2Y2;
960
                FindRangeWithOutLineString2d(dependency1, out d1X1, out d1Y1, out d1X2, out d1Y2);
961
                FindRangeWithOutLineString2d(dependency2, out d2X1, out d2Y1, out d2X2, out d2Y2);
962

  
963
                double left = 0, right = 0;
964
                switch (degree)
965
                {
966
                    case 0:
967
                        if (!mirror)
968
                        {
969
                            left = Math.Abs(d1X1 - sOriginX);
970
                            right = Math.Abs(d2X2 - sOriginX);
971
                        }
972
                        else
973
                        {
974
                            right = Math.Abs(d1X1 - sOriginX);
975
                            left = Math.Abs(d2X2 - sOriginX);
976
                        }
977
                        break;
978
                    case 90:
979
                        if (!mirror)
980
                        {
981
                            left = Math.Abs(d1Y1 - sOriginY);
982
                            right = Math.Abs(d2Y2 - sOriginY);
983
                        }
984
                        else
985
                        {
986
                            right = Math.Abs(d1Y1 - sOriginY);
987
                            left = Math.Abs(d2Y2 - sOriginY);
988
                        }
989
                        break;
990
                    case 180:
991
                        if (!mirror)
992
                        {
993
                            right = Math.Abs(d1X1 - sOriginX);
994
                            left = Math.Abs(d2X2 - sOriginX);
995
                        }
996
                        else
997
                        {
998
                            left = Math.Abs(d1X1 - sOriginX);
999
                            right = Math.Abs(d2X2 - sOriginX);
1000
                            
1001
                        }
1002
                        break;
1003
                    case 270:
1004
                        if (!mirror)
1005
                        {
1006
                            right = Math.Abs(d1Y1 - sOriginY);
1007
                            left = Math.Abs(d2Y2 - sOriginY);
1008
                        }
1009
                        else
1010
                        {
1011
                            left = Math.Abs(d1Y1 - sOriginY);
1012
                            right = Math.Abs(d2Y2 - sOriginY);
1013
                        }
1014
                        break;
1015
                    default:
1016
                        break;
1017
                }
1018

  
1019
                string[] array1 = new string[] { "", "Left", "Right" };
1020
                string[] array2 = new string[] { "", left.ToString(), right.ToString() };
1021
                placement.PIDApplyParameters(_LMSymbol.AsLMRepresentation(), array1, array2);
1022
            }
1023

  
1024
            ReleaseCOMObjects(_LMSymbol);
1025
            ReleaseCOMObjects(dataSource);
1026
            ReleaseCOMObjects(placement);
1027
        }
945 1028
        private void SpecBreakRelocation(double degree, double originX, double originY, double crossX, double crossY, double topX, double topY, DependencyObject dependency1, DependencyObject dependency2, DependencyObject dependency3)
946 1029
        {
947 1030
            double d1X1, d1Y1, d1X2, d1Y2, d2X1, d2Y1, d2X2, d2Y2, d3X1 = 0, d3Y1 = 0, d3X2 = 0, d3Y2 = 0;
......
1032 1115
            }
1033 1116

  
1034 1117
        }
1118
        private void FindWidthHeightWidthOutLineString2d(DependencyObject dependency, out double width, out double height)
1119
        {
1120
            width = 0;
1121
            height = 0;
1122

  
1123
            double x1 = double.MaxValue;
1124
            double y1 = double.MaxValue;
1125
            double x2 = double.MinValue;
1126
            double y2 = double.MinValue;
1127
            foreach (DrawingObjectBase item in dependency.DrawingObjects)
1128
            {
1129
                if (item.GetType() != typeof(LineString2d))
1130
                {
1131
                    double minX, minY, maxX, maxY;
1132
                    item.Range(out minX, out minY, out maxX, out maxY);
1133
                    if (x1 > minX)
1134
                        x1 = minX;
1135
                    if (y1 > minY)
1136
                        y1 = minY;
1137
                    if (x2 < maxX)
1138
                        x2 = maxX;
1139
                    if (y2 < maxY)
1140
                        y2 = maxY;
1141
                }
1142
            }
1143

  
1144
            width = x2 - x1;
1145
            height = y2 - y1;
1146
        }
1147

  
1035 1148
        private void FindRangeWithOutLineString2dAndTextBox(DependencyObject dependency, out double x1, out double y1, out double x2, out double y2)
1036 1149
        {
1037 1150
            x1 = double.MaxValue;
DTI_PID/SPPIDConverter/DB/SPPID_DB.cs
213 213

  
214 214
            return plantList;
215 215
        }
216

  
216
        
217 217
        public static DataTable GetSPPIDAttribute()
218 218
        {
219 219
            List<string> attributes = new List<string>();
DTI_PID/SPPIDConverter/Util/SPPIDUtil.cs
645 645
        public static void test()
646 646
        {
647 647
            Placement placement = new Placement();
648
            //placement.PIDApplyParameters()
649 648
            LMADataSource dataSource = new LMADataSource();
650
            
651
            LMAFilter filter = new LMAFilter();
652
            //LMACriterion criterion = new LMACriterion();
653
            filter.ItemType = "Label";
654
            //criterion.SourceAttributeName = "NAME";
655
            //criterion.Operator = "=";
656
            //criterion.set_ValueAttribute(name);
657
            //filter.get_Criteria().Add(criterion);
658
            _LMAItems items = dataSource.Collect("Label", Filter: filter);
659
            
649
            LMSymbol symbol = dataSource.GetSymbol("BBAB475FA9AF4C01AACF4C51F56241F8");
650

  
651
            string[] array1 = new string[] { "", "Top" };
652
            string[] array2 = new string[] { "", "0.005" };
653
            placement.PIDApplyParameters(symbol.AsLMRepresentation(), array1, array2);
660 654

  
661 655
            ReleaseCOMObjects(dataSource);
662 656
        }

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)