/* * GNU AFFERO GENERAL PUBLIC LICENSE * Version 3, 19 November 2007 * Copyright (C) 2007 Free Software Foundation, Inc. * Everyone is permitted to copy and distribute verbatim copies * of this license document, but changing it is not allowed. */ using System; using UVtools.Core.Scripting; namespace UVtools.ScriptSample { /// /// Change layer properties to random values /// public class ScriptChangeLayerPropertiesSample : ScriptGlobals { /// /// Set configurations here, this function trigger just after load a script /// public void ScriptInit() { Script.Name = "Change layer properties"; Script.Description = "Change layer properties to random values :D"; Script.Author = "Tiago Conceição"; Script.Version = new Version(0, 1); } /// /// Validate user inputs here, this function trigger when user click on execute /// /// A error message, empty or null if validation passes. public string ScriptValidate() { return null; } /// /// Execute the script, this function trigger when when user click on execute and validation passes /// /// True if executes successfully to the end, otherwise false. public bool ScriptExecute() { Progress.Reset("Changing layers", Operation.LayerRangeCount); // Sets the progress name and number of items to process Random random = new(); for (uint layerIndex = Operation.LayerIndexStart; layerIndex <= Operation.LayerIndexEnd; layerIndex++) { Progress.Token.ThrowIfCancellationRequested(); // Abort operation, user requested cancellation var layer = SlicerFile[layerIndex]; // Unpack and expose layer variable for easier use layer.LiftHeight = random.Next(3, 10); // Random value from 3 to 10 layer.LiftSpeed = random.Next(50, 200); // Random value from 50 to 200 layer.RetractSpeed = random.Next(50, 200); // Random value from 50 to 200 Progress++; // Increment progress bar by 1 } // return true if not cancelled by user return !Progress.Token.IsCancellationRequested; } } }