Esempio n. 1
0
        /// <summary>
        /// 旋转后归位
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="angle"></param>
        /// <returns></returns>
        public PlateModel RotateAndMove(PlateModel pmold, float angle)
        {
            //PlateModel pm = new RotateOper() .RotatePlate(pmold, new PointF(0, 0), angle);
            CopyOper   co = new CopyOper();
            PlateModel pm = co.CopyPlate(pmold);

            new RotateOper().RotatePlate(pm, new PointF(0, 0), angle);
            float maxX = pm.OutModel.ExpandPoint[0].X;
            float maxY = pm.OutModel.ExpandPoint[0].Y;
            float minX = pm.OutModel.ExpandPoint[0].X;
            float minY = pm.OutModel.ExpandPoint[0].Y;

            for (int i = 0; i < pm.OutModel.ExpandPoint.Count; i++)
            {
                if (maxX < pm.OutModel.ExpandPoint[i].X)
                {
                    maxX = pm.OutModel.ExpandPoint[i].X;
                }
                if (maxY < pm.OutModel.ExpandPoint[i].Y)
                {
                    maxY = pm.OutModel.ExpandPoint[i].Y;
                }

                if (minX > pm.OutModel.ExpandPoint[i].X)
                {
                    minX = pm.OutModel.ExpandPoint[i].X;
                }
                if (minY > pm.OutModel.ExpandPoint[i].Y)
                {
                    minY = pm.OutModel.ExpandPoint[i].Y;
                }
            }
            PlateModel pmmove = new MoveOper().MovePlate(pm, -minX, -minY);

            /*if (angle == 90 || angle == 270)
             *    pmmove .Rect = new RectangleF(0, 0, pm .Rect .Height, pm .Rect .Width);
             * else if (angle == 0 || angle == 180)
             *    pmmove .Rect = new RectangleF(0, 0, pm .Rect .Width, pm .Rect .Height);*/
            pmmove.Rect = GetRect(pmmove.OutModel.ExpandPoint);
            return(pmmove);
        }
Esempio n. 2
0
        /// <summary>
        /// 读取件号,直接选择所有的单个文件,分别进行处理,处理完之后对所有件号进行排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            DxfInputB         di         = new DxfInputB();
            List <PlateModel> inputPlate = di.mainmethod();

            if (inputPlate.Count > 0)
            {
                listPlate.AddRange(inputPlate);
                //return;
                PlateSort ps = new PlateSort();
                listPlate = ps.getSortByHeight(listPlate);
                listPlate = ps.getSortByArea(listPlate);
                listPlate = ps.getSortByWidth(listPlate);
                //listPlate = ps.getSortByHWA(listPlate);
                listPlate = ps.getSortByHToWToA(listPlate);

                for (int i = 0; i < listPlate.Count; i++)
                {
                    signY        = signY - listPlate[i].Bound.Height;
                    listPlate[i] = new MoveOper().MovePlate(listPlate[i], signX, signY);
                    signY        = signY - 10;
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 组合图形旋转归位
        /// </summary>
        /// <param name="pm"></param>
        /// <param name="angle"></param>
        /// <returns></returns>
        public PlateCombine RotateAndMove(PlateCombine pc, float angle)
        {
            CopyOper   co  = new CopyOper();
            PlateModel pm1 = co.CopyPlate(pc.Plate1);
            PlateModel pm2 = co.CopyPlate(pc.Plate2);

            RotateOper ro = new RotateOper();

            pm1 = ro.RotatePlate(pm1, new PointF(0, 0), angle);
            pm2 = ro.RotatePlate(pm2, new PointF(0, 0), angle);

            float maxX = pm1.OutModel.ExpandPoint[0].X;
            float maxY = pm1.OutModel.ExpandPoint[0].Y;
            float minX = pm1.OutModel.ExpandPoint[0].X;
            float minY = pm1.OutModel.ExpandPoint[0].Y;

            for (int i = 0; i < pm1.OutModel.ExpandPoint.Count; i++)
            {
                if (maxX < pm1.OutModel.ExpandPoint[i].X)
                {
                    maxX = pm1.OutModel.ExpandPoint[i].X;
                }
                if (maxY < pm1.OutModel.ExpandPoint[i].Y)
                {
                    maxY = pm1.OutModel.ExpandPoint[i].Y;
                }

                if (minX > pm1.OutModel.ExpandPoint[i].X)
                {
                    minX = pm1.OutModel.ExpandPoint[i].X;
                }
                if (minY > pm1.OutModel.ExpandPoint[i].Y)
                {
                    minY = pm1.OutModel.ExpandPoint[i].Y;
                }
            }
            for (int i = 0; i < pm2.OutModel.ExpandPoint.Count; i++)
            {
                if (maxX < pm2.OutModel.ExpandPoint[i].X)
                {
                    maxX = pm2.OutModel.ExpandPoint[i].X;
                }
                if (maxY < pm2.OutModel.ExpandPoint[i].Y)
                {
                    maxY = pm2.OutModel.ExpandPoint[i].Y;
                }

                if (minX > pm2.OutModel.ExpandPoint[i].X)
                {
                    minX = pm2.OutModel.ExpandPoint[i].X;
                }
                if (minY > pm2.OutModel.ExpandPoint[i].Y)
                {
                    minY = pm2.OutModel.ExpandPoint[i].Y;
                }
            }
            MoveOper mo = new MoveOper();

            mo.MovePlate(pm1, -minX, -minY);
            mo.MovePlate(pm2, -minX, -minY);

            PlateCombine pcnew = new PlateCombine(pm1, pm2);

            pcnew.Rect = pc.Rect;
            //if (angle == 90)
            //{
            //      pcnew .Rect = new RectangleF(0, 0, pc .Rect .Height, pc .Rect .Width);
            //}
            pcnew.Rect = GetRect(pm1.OutModel.ExpandPoint, pm2.OutModel.ExpandPoint);
            return(pcnew);
        }
Esempio n. 4
0
        public PlateModel Move(PlateModel pm, float x, float y)
        {
            PlateModel pmnew = new MoveOper().MovePlate(pm, x, y);

            return(pmnew);
        }