"Resettare" alcuni input di GH

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#
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]);
    }
  }
2 Mi Piace