/// <summary> /// Returns heights at which each slice should be printed for a given height /// </summary> /// <param name="height"></param> /// <param name="StartThickness"></param> /// <param name="ThicknessDel"></param> /// <param name="Thicknesses"></param> /// <param name="HeightFactor"></param> /// <param name="ThicknessIncrement"></param> /// <returns></returns> /// public static List <double> ZHeights(double height, double StartThickness, ThicknessIncrementDelegate ThicknessDel, out List <double> Thicknesses, double HeightFactor = 1.0, double ThicknessIncrement = 0.0) { List <double> heights = new List <double>(); List <double> thicknesses = new List <double>(); double CurrentHeight = 0.005; // todo: Figure out why 0.0 flips the offset of the section curves double CurrentThickness = StartThickness; int i = 0; while (CurrentHeight < height) { heights.Add(CurrentHeight); if (ThicknessDel == null) { CurrentThickness += ThicknessIncrement * i; } else { CurrentThickness = StartThickness + ThicknessDel(i); } thicknesses.Add(CurrentThickness); CurrentHeight += V2GPrint.Height(CurrentThickness, HeightFactor); i++; } Thicknesses = thicknesses; return(heights); }
public static double LayerHeight(double _thickness, double _factor = 1.0) { double FilamentDiameter = 1.75; double FilamentArea = Math.PI * Math.Pow((FilamentDiameter / 2), 2); double height = Math.Sqrt(FilamentArea * V2GPrint.EUnitIncrease(_thickness)); height *= _factor; if (height < 0) { return(0); } return(height * _factor); }