/// <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); }
/// <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; } } }
/// <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); }
public PlateModel Move(PlateModel pm, float x, float y) { PlateModel pmnew = new MoveOper().MovePlate(pm, x, y); return(pmnew); }