"Resettare" alcuni input di GH

Ciao a tutti,
ero un po’ indeciso se mettere questo sotto la categora GH o scripting, e alla fine ho optato per quest’ultima, spero di non aver sbagliato.
Avrei bisogno di capire come gestire un input come slider, i panel o i Value list con un componente tipo python. Nel mio caso specifico vorrei con un click su un pulsante riportare dei valori in determinati componenti simultaneamente.
Allego immagine per aiutare a capire meglio cosa intendo.

Decisamente categoria grasshopper.

Hai mai provato MetaHopper | Food4Rhino ?
Io mai. Ma è molto probabile che con quello riesci a fare quello che vuoi.
In tanti lo usano, Andrew Heumann ha fatto un bel lavoro credo.

In alternativa si va di scripting; se Metahopper non ti prende bene, potrei buttarti giù qualche script in c# (io da python ci sto alla larga :no_mouth:)

Ciao a tutti, si confermo l’uso proficuo di MetaHopper :wink:

SetComponentParams

ammesso che abbia capito bene, io ho risolto così:

Ogni Merge a sinistra è una serie di opzioni, che manda ad uno stream filter comandato da uno slider, inverto la matrice e la mando ad un explode tree per ripristinarla.
In questo modo posso inserire n soluzioni diverse. Ciascuna di questo è una configurazione di velivolo.

1 Mi Piace

Uau! Provo subito, grazie!

Ciao Luca, molto intelligente la tua soluzione. Molto adatta a caricare velocemente varie configurazioni. Grazie!

Ma era ciò che ti serviva?

Risolve il problema, non come pensavo. Avevo più in mente un unico slider/ panel/ value list ecc da guardare per vedere i valori che ho assegnato.

1 Mi Piace

un’alternativa? (se ho inteso)

1 Mi Piace

che è esattamente come quella da me proposta :stuck_out_tongue_winking_eye:

Nel tuo caso per vedere a occhio lo slider che comanda dovrei guardare che ingresso c’è nello stream filter e da lì capire che configurazione comanda. Un po’ scomodo rispetto un unico slider da guardare nel mio caso. E’ però comodo in altri casi dove mi basta guardare alla configurazione e quindi ci si può concentrare su quella senza preoccuparsi di valori degli slider.

se servono gli slider singoli, ovviamente li puoi sempre utilizzare:

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

Grazie Riccardo, molto interessante. E direi che fa al caso mio. Peccato non conosco il C# ma ci giocherò lo stesso.
Chissà che riesca ad imparare qualcosa.

Ciao Luciano, ho provato MetaHopper e direi che per gli slider e i panel fa quello che promette.
Per i ValueList invece no, basta un F5 su GH e reimposta a 0 il ValueList.