public override void ToMachining(double AssociatedDist, Entities.ToolFile toolFile) { int number = 1; double dist = System.Math.Sqrt( System.Math.Abs(PosStartX - PosEndX) * System.Math.Abs(PosStartX - PosEndX) + System.Math.Abs(PosStartY - PosEndY) * System.Math.Abs(PosStartY - PosEndY) ); if (HoleGap < 1)//避免太小的间距 { HoleGap = 1; } number = (int)System.Math.Floor(dist / HoleGap) + 1; double xfactor = (PosStartX > PosEndX) ? -1 : 1; double yfactor = (PosStartY > PosEndY) ? -1 : 1; double cos = (dist != 0) ? System.Math.Abs(PosStartX - PosEndX) / dist : 0; double sin = (dist != 0) ? System.Math.Abs(PosStartY - PosEndY) / dist : 0; //如果是水平孔 if (IsHorizontalDrill) { if (FaceNumber == 3) { for (int i = 0; i < number; i++) { Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, PosStartX, PosStartY + dist / number * i * yfactor * sin, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 4) { for (int i = 0; i < number; i++) { double depth = (Part.MachinePoint.IsRotated) ? Part.Width - PosStartX : Part.Length - PosStartX; if (depth < 0) { throw new Exception("指令的深度不能为小于0的数值"); } Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, depth, PosStartY + dist / number * i * yfactor * sin, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 1) { for (int i = 0; i < number; i++) { Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, PosStartY, PosStartX + dist / number * i * xfactor * cos, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 2) { for (int i = 0; i < number; i++) { double depth = (Part.MachinePoint.IsRotated) ? Part.Length - PosStartY : Part.Width - PosStartY; Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, depth, PosStartX + dist / number * i * xfactor * cos, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else { throw new Exception("未知的Facenumber:" + FaceNumber); } } else//如果是面孔 { if (IsLineHoles) { for (int i = 0; i < number; i++) { Machinings.VDrilling vdrill = new Machinings.VDrilling( FaceNumber, PosStartX + dist / number * i * xfactor * cos, PosStartY + dist / number * i * yfactor * sin, Diameter, PosStartZ, Part); Part.VDrillings.Add(vdrill); } } Part.VDrillings.Add(new Machinings.VDrilling(this.FaceNumber, PosStartX, PosStartY, Diameter, PosStartZ, Part)); } }
public override void ToMachining(double AssociatedDist, Entities.ToolFile toolFile) { int number = 1; double dist = System.Math.Sqrt( System.Math.Abs(PosStartX - PosEndX) * System.Math.Abs(PosStartX - PosEndX) + System.Math.Abs(PosStartY - PosEndY) * System.Math.Abs(PosStartY - PosEndY) ); if (HoleGap < 1)//避免太小的间距 HoleGap = 1; number = (int)System.Math.Floor(dist / HoleGap) + 1; double xfactor = (PosStartX > PosEndX) ? -1 : 1; double yfactor = (PosStartY > PosEndY) ? -1 : 1; double cos = (dist != 0) ? System.Math.Abs(PosStartX - PosEndX) / dist : 0; double sin = (dist != 0) ? System.Math.Abs(PosStartY - PosEndY) / dist : 0; //如果是水平孔 if (IsHorizontalDrill) { if (FaceNumber == 3) { for (int i = 0; i < number; i++) { Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, PosStartX, PosStartY + dist / number * i * yfactor * sin, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 4) { for (int i = 0; i < number; i++) { double depth = (Part.MachinePoint.IsRotated) ? Part.Width - PosStartX : Part.Length - PosStartX; if (depth < 0) throw new Exception("指令的深度不能为小于0的数值"); Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, depth, PosStartY + dist / number * i * yfactor * sin, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 1) { for (int i = 0; i < number; i++) { Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, PosStartY, PosStartX + dist / number * i * xfactor * cos, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else if (FaceNumber == 2) { for (int i = 0; i < number; i++) { double depth = (Part.MachinePoint.IsRotated) ? Part.Length - PosStartY : Part.Width - PosStartY; Machinings.HDrilling hdrill = new Machinings.HDrilling( FaceNumber, Diameter, depth, PosStartX + dist / number * i * xfactor * cos, PosStartZ, Part); Part.HDrillings.Add(hdrill); } } else { throw new Exception("未知的Facenumber:" + FaceNumber); } } else//如果是面孔 { if (IsLineHoles) { for (int i = 0; i < number; i++) { Machinings.VDrilling vdrill = new Machinings.VDrilling( FaceNumber, PosStartX + dist / number * i * xfactor * cos, PosStartY + dist / number * i * yfactor * sin, Diameter, PosStartZ, Part); Part.VDrillings.Add(vdrill); } } Part.VDrillings.Add(new Machinings.VDrilling(this.FaceNumber, PosStartX, PosStartY, Diameter, PosStartZ, Part)); } }