Volendo proprio pensare a “reset to default” … potremmo impostare il valore di default dello slider dentro il nickname dello slider stesso!
Ho anche implementato una “tag” così da poter gestire a gruppi gli slider.
reset slider to default c#.gh (7,4 KB)
Lo script funziona con gli slider che hanno come nickname quell’esatta grammatica:
nomeslider+" "+tag+" default="+valoredefault
Se ci sono altri spazi nel nome dello slider, non funziona … per ora.
codice:
private void RunScript(bool Go, string tag)
{
if(Go && !down)down = true;
if(down && !Go){
vals = new List<decimal>();
sliders = new List<Grasshopper.Kernel.Special.GH_NumberSlider>();
foreach (Grasshopper.Kernel.IGH_DocumentObject obj in this.GrasshopperDocument.Objects){
if(obj is Grasshopper.Kernel.Special.GH_NumberSlider){
Grasshopper.Kernel.Special.GH_NumberSlider sldr = (Grasshopper.Kernel.Special.GH_NumberSlider) obj;
string n = sldr.NickName;
string[] f = n.Split(' ');
if(f[1] == tag){
f = f[2].Split('=');
sliders.Add(sldr);
vals.Add(Convert.ToDecimal(f[1]));
}
};
}
this.GrasshopperDocument.ScheduleSolution(5, ResetSliders);
down = false;
}
}
// <Custom additional code>
public bool down;
public List<Grasshopper.Kernel.Special.GH_NumberSlider> sliders;
public List<decimal> vals;
private void ResetSliders(GH_Document doc){
for(int i = 0;i < vals.Count;i++){
sliders[i].TrySetSliderValue(vals[i]);
}
}