/// <summary> /// Reset parameters when a non-Droplet Print action is used. /// Returns the remaining movement (in mm) that has not yet been covered by droplet printing. /// Index 0 of the return value is X, 1 is Y, 2 is Z. /// When calling this method, the remaining movement in the return value should be executed. /// </summary> /// <param name="materialModel"></param> public double[] ResetDropletPrintParameters(MaterialModel currentMaterial, MaterialModel newMaterial) { //Return the remaining movement (in mm) from the previous material that was not covered by droplet printing. double[] remainingDistanceToMove = { 0, 0, 0 }; if ((currentMaterial != null) && (currentMaterial.PrintStyle == PrintStyle.Droplet)) { remainingDistanceToMove = _dropletModel.PreDistance; } //Set new droplet parameters if applicable. if (newMaterial == null) { //A new material is not being set but Droplet parameters still need to be reset. DropletPrintStyleModel dropletPrintStyleModel = (DropletPrintStyleModel)currentMaterial.PrintStyleModel; _dropletModel = new DropletModel(dropletPrintStyleModel); } else if (newMaterial.PrintStyle == PrintStyle.Droplet) { //A new material is being set. Create new Droplet parameters. DropletPrintStyleModel dropletPrintStyleModel = (DropletPrintStyleModel)newMaterial.PrintStyleModel; _dropletModel = new DropletModel(dropletPrintStyleModel); } return(remainingDistanceToMove); }
/// <summary> /// Supports concentration gradients. /// </summary> /// <param name="DropletPrintStyleModel"></param> public DropletModel(DropletPrintStyleModel DropletPrintStyleModel) { _interpolateDistance = DropletPrintStyleModel.InterpolateDistance; _gradientShape = DropletPrintStyleModel.GradientShape; _gradientScaling = DropletPrintStyleModel.GradientScaling; Point3D point1 = new Point3D(DropletPrintStyleModel.X1, DropletPrintStyleModel.Y1, DropletPrintStyleModel.Z1); Point3D point2 = new Point3D(DropletPrintStyleModel.X2, DropletPrintStyleModel.Y2, DropletPrintStyleModel.Z2); Point3D point3 = new Point3D(DropletPrintStyleModel.X3, DropletPrintStyleModel.Y3, DropletPrintStyleModel.Z3); switch (DropletPrintStyleModel.GradientShape) { case GradientShape.None: _gradientModel = null; break; case GradientShape.Point: _gradientModel = new PointModel(_gradientScaling, DropletPrintStyleModel.PercentPerMm, point1); break; case GradientShape.Line: _gradientModel = new LineModel(_gradientScaling, DropletPrintStyleModel.PercentPerMm, point1, point2); break; case GradientShape.Plane: _gradientModel = new PlaneModel(_gradientScaling, DropletPrintStyleModel.PercentPerMm, point1, point2, point3); break; } }
public DropletPrintStyleViewModel(DropletPrintStyleModel DropletPrintStyleModel) : base(DropletPrintStyleModel) { _dropletPrintStyleModel = DropletPrintStyleModel; }