示例#1
0
        /// <summary>
        /// 生成6号区
        /// </summary>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea6(IEnumerable <Point> originalPoints, List <Point> belowOffsetPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, originalPoints.ElementAt(3));
            AddPoint2Area(area, originalPoints.ElementAt(2));
            AddPoint2Area(area, belowOffsetPoints[0]);
            AddPoint2Area(area, belowOffsetPoints[1]);

            area.Flag = "2010107";
            area.Note = "area6";

            return(area);
        }
示例#2
0
        /// <summary>
        /// 生成3号区
        /// </summary>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea3(IEnumerable <Point> originalPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, originalPoints.ElementAt(6));
            AddPoint2Area(area, originalPoints.ElementAt(3));
            AddPoint2Area(area, originalPoints.ElementAt(4));
            AddPoint2Area(area, originalPoints.ElementAt(5));

            area.Flag = "2010104";
            area.Note = "area3";

            return(area);
        }
示例#3
0
        /// <summary>
        /// 生成1号区
        /// </summary>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea1(IEnumerable <Point> originalPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, originalPoints.ElementAt(0));
            AddPoint2Area(area, originalPoints.ElementAt(1));
            AddPoint2Area(area, originalPoints.ElementAt(2));
            AddPoint2Area(area, originalPoints.ElementAt(7));

            area.Flag = "2010102";
            area.Note = "area1";

            return(area);
        }
示例#4
0
        /// <summary>
        /// 生成1号区
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea1(IEnumerable <Point> originalPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();

            foreach (var p in originalPoints)
            {
                AddPoint2Area(area, p);
            }

            area.Flag = "2060102";
            area.Note = "area1";

            return(area);
        }
示例#5
0
        /// <summary>
        /// 生成主区域
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateMainArea(IEnumerable <Point> originalPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, originalPoints.ElementAt(0));
            AddPoint2Area(area, area5AboveOffsetPoints[0]);
            AddPoint2Area(area, area5AboveOffsetPoints[1]);
            AddPoint2Area(area, area46BelowOffsetPoints[0]);
            AddPoint2Area(area, area46BelowOffsetPoints[2]);
            AddPoint2Area(area, area46BelowOffsetPoints[3]);
            AddPoint2Area(area, originalPoints.ElementAt(9));

            area.Flag = "2040100";
            area.Note = "main";

            return(area);
        }
示例#6
0
        /// <summary>
        /// 生成4号区
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea4(IEnumerable <Point> originalPoints)
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, area46BelowOffsetPoints[4]);
            AddPoint2Area(area, originalPoints.ElementAt(8));
            AddPoint2Area(area, originalPoints.ElementAt(7));
            AddPoint2Area(area, originalPoints.ElementAt(6));
            AddPoint2Area(area, originalPoints.ElementAt(5));
            AddPoint2Area(area, area46BelowOffsetPoints[1]);
            AddPoint2Area(area, area46BelowOffsetPoints[2]);
            AddPoint2Area(area, area46BelowOffsetPoints[3]);

            area.Flag = "2040105";
            area.Note = "area4";

            return(area);
        }
示例#7
0
        /// <summary>
        /// 生成0号区
        /// </summary>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea0(IEnumerable <Point> originalPoints)
        {
            double       offsetDis    = 2;//0号区偏移距离
            List <Point> offsetPoints = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(7), originalPoints.ElementAt(0)
            }, offsetDis);

            area0LeftOffetPoints = offsetPoints;
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, offsetPoints[1]);
            AddPoint2Area(area, originalPoints.ElementAt(0));
            AddPoint2Area(area, originalPoints.ElementAt(7));
            AddPoint2Area(area, offsetPoints[0]);

            area.Flag = "2010101";
            area.Note = "area0";

            return(area);
        }
示例#8
0
        /// <summary>
        /// 生成5号区
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea5(IEnumerable <Point> originalPoints)
        {
            double       offsetDis    = 0.3;//7号区偏移距离
            List <Point> offsetPoints = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(1), originalPoints.ElementAt(3)
            }, offsetDis);

            area5AboveOffsetPoints = offsetPoints;
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, offsetPoints[0]);
            AddPoint2Area(area, offsetPoints[1]);
            AddPoint2Area(area, originalPoints.ElementAt(3));
            AddPoint2Area(area, originalPoints.ElementAt(1));

            area.Flag = "2040106";
            area.Note = "area5";

            return(area);
        }
示例#9
0
        /// <summary>
        /// 生成主区域
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateMainArea()
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();

            AddPoint2Area(area, area0BelowffsetPoints[1]);
            foreach (var p in area3LeftOffetPoints)
            {
                AddPoint2Area(area, p);
            }
            AddPoint2Area(area, area2AboveOffsetPoints[0]);
            AddPoint2Area(area, area2AboveOffsetPoints[1]);
            foreach (var p in area4RightOffetPoints)
            {
                AddPoint2Area(area, p);
            }
            AddPoint2Area(area, area0BelowffsetPoints[0]);

            area.Flag = "2060100";
            area.Note = "main";
            return(area);
        }
示例#10
0
        /// <summary>
        /// 生成2号区
        /// </summary>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea2(IEnumerable <Point> originalPoints)
        {
            double       offsetDis    = 2;
            List <Point> offsetPoints = MathEx.TranslatePoints(new List <Point> {
                firstSideOriginalPoints.Last(), secondSideOriginalPoints[0]
            }, offsetDis);

            area2AboveOffsetPoints = offsetPoints;
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();


            AddPoint2Area(area, offsetPoints[0]);
            AddPoint2Area(area, offsetPoints[1]);
            AddPoint2Area(area, secondSideOriginalPoints[0]);
            AddPoint2Area(area, firstSideOriginalPoints.Last());

            area.Flag = "2060103";
            area.Note = "area2";

            return(area);
        }
示例#11
0
        /// <summary>
        /// 生成主区域
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateMainArea()
        {
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();
            AddPoint2Area(area, area7AboveOffsetPoints[0]);
            AddPoint2Area(area, area7AboveOffsetPoints[1]);
            AddPoint2Area(area, area2RightOffetPoints[0]);
            AddPoint2Area(area, area2RightOffetPoints[1]);
            AddPoint2Area(area, area456belowOffsetPoints[0]);
            AddPoint2Area(area, area456belowOffsetPoints[1]);
            AddPoint2Area(area, area456belowOffsetPoints[2]);
            AddPoint2Area(area, area456belowOffsetPoints[3]);
            AddPoint2Area(area, area456belowOffsetPoints[4]);
            AddPoint2Area(area, area456belowOffsetPoints[5]);
            AddPoint2Area(area, area0LeftOffetPoints[0]);
            AddPoint2Area(area, area0LeftOffetPoints[1]);

            area.Flag = "2010100";
            area.Note = "main";

            return(area);
        }
示例#12
0
        /// <summary>
        /// 生成4号区
        /// </summary>
        /// <param name="originalPoints"></param>
        /// <returns></returns>
        private PlaceXmlModel.Area GenerateArea4(IEnumerable <Point> originalPoints)
        {
            double       offsetDis    = 0.3;
            List <Point> offsetPoints = MathEx.TranslatePoints(secondSideOriginalPoints, offsetDis);

            area4RightOffetPoints = offsetPoints;
            PlaceXmlModel.Area area = new PlaceXmlModel.Area();
            area.Points = new List <PlaceXmlModel.Point>();

            foreach (var p in secondSideOriginalPoints)
            {
                AddPoint2Area(area, p);
            }

            for (int i = offsetPoints.Count - 1; i >= 0; i--)
            {
                AddPoint2Area(area, offsetPoints[i]);
            }

            area.Flag = "2060105";
            area.Note = "area4";

            return(area);
        }
示例#13
0
        public PlaceXmlModel.Item Generate(IEnumerable <Point> originalPoints)
        {
            if (!CheckPointCount(originalPoints.Count()))
            {
                return(null);
            }
            PlaceXmlModel.Item examItem = new PlaceXmlModel.Item();
            examItem.SubAreas       = new PlaceXmlModel.SunArea();
            examItem.SubAreas.Areas = new List <PlaceXmlModel.Area>();

            //0号区
            List <Point> offsetPointsTmp = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(5), originalPoints.ElementAt(0)
            }, area0OffsetDis);

            areasPoints[0] = new List <Point> {
                originalPoints.ElementAt(0), originalPoints.ElementAt(5), offsetPointsTmp[0], offsetPointsTmp[1]
            };

            //1号区
            areasPoints[1] = new List <Point>();
            foreach (var p in originalPoints)
            {
                areasPoints[1].Add(p);
            }

            //2号区
            offsetPointsTmp = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(2), originalPoints.ElementAt(3)
            }, area2OffsetDis);
            areasPoints[2] = new List <Point> {
                offsetPointsTmp [0], offsetPointsTmp [1], originalPoints.ElementAt(3), originalPoints.ElementAt(2)
            };

            //3号区
            offsetPointsTmp = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(0), originalPoints.ElementAt(1), originalPoints.ElementAt(2)
            }, area3OffsetDis);
            areasPoints[3] = new List <Point> {
                originalPoints.ElementAt(0), originalPoints.ElementAt(1), originalPoints.ElementAt(2), offsetPointsTmp[2], offsetPointsTmp[1], offsetPointsTmp[0]
            };

            //4号区
            offsetPointsTmp = MathEx.TranslatePoints(new List <Point> {
                originalPoints.ElementAt(3), originalPoints.ElementAt(4), originalPoints.ElementAt(5)
            }, area4OffsetDis);
            areasPoints[4] = new List <Point> {
                originalPoints.ElementAt(3), originalPoints.ElementAt(4), originalPoints.ElementAt(5), offsetPointsTmp[2], offsetPointsTmp[1], offsetPointsTmp[0]
            };

            mainAreaPoints = new List <Point>
            {
                areasPoints[0][3], areasPoints[3][5], areasPoints[3][4],
                areasPoints[3][3], areasPoints[2][0], areasPoints[2][1],
                areasPoints[4][5], areasPoints[4][4], areasPoints[4][3],
                areasPoints[0][2]
            };

            int i = 1;

            foreach (var points in areasPoints)
            {
                if (points == null)
                {
                    continue;
                }
                var area = new PlaceXmlModel.Area();
                area.Points = new List <PlaceXmlModel.Point>();
                foreach (var p in points)
                {
                    AddPoint2Area(area, p);
                }
                area.Flag = "207010" + i;
                area.Note = "area" + (i - 1);
                examItem.SubAreas.Areas.Add(area);
                i++;
            }

            var areaMain = new PlaceXmlModel.Area();

            areaMain.Points = new List <PlaceXmlModel.Point>();
            foreach (var p in mainAreaPoints)
            {
                AddPoint2Area(areaMain, p);
            }
            areaMain.Flag = "2070100";
            areaMain.Note = "main";
            examItem.Area = areaMain;

            examItem.Name       = "直角转弯";
            examItem.Flag       = "20701";
            examItem.PlaceFlag  = "207";
            examItem.Index      = "001";
            examItem.Cls        = "ZJ";
            examItem.HaveSensor = "false";
            examItem.StartMode  = "0";

            return(examItem);
        }
示例#14
0
 private void AddPoint2Area(PlaceXmlModel.Area area, Point p)
 {
     p.X = Math.Round(p.X, 3);
     p.Y = Math.Round(p.Y, 3);
     area.Points.Add(new PlaceXmlModel.Point(p.X, p.Y));
 }