Plot in Grasshopper (eventualmente con Python)

Ciao Gente, ho necessità di plottare una funzione 2D dentro GH. Non voglio che il grafico venga rappresentato in Rhino. Conoscete un modo rapido per farlo?
Considerate che ho collegato la libreria numpy in GH se può servire.

Pare che il pacchetto GH Python Remote consenta di usare Matplotlib, ma io non riesco a capire come posso chiamare la funzione:
ho provato con plt. ma non lo riconosce, il semplice plot(x,y) non funziona,…

e pare comunque che il pacchetto sia installato e connesso con Anaconda Python:

Per una funzione y=f(x) potresti usare Quick Graph:

Cercavi qualcosa di questo tipo?

Grazie Marco, ho già provato ma non fa per me per il semplice fatto che non visualizzo valori e label.

L’ideale sarebbe questo https://kongsgaard.eu/graph-plotter-component.html ma troppo incasinato per me che sto iniziando ora a mettere mani a Python.

Immaginavo che non andasse bene per qualche motivo :slight_smile:

Come mai vuoi evitare di creare il grafico in Rhino?

Potresti usare un plugin che crea immagini a partire da curve (Squid) e che ti consentirebbe di salvare i grafici su disco a partire da geometrie in Grasshopper (e/o di visualizzarle in anteprima in Grasshopper), senza che niente venga visualizzato nella viewport di Rhino.

Sapresti indicarmi come step by step?

vorrei che in Rhino ci fosse solo il disegno che è la risultante di una serie di parametri impostati in GH.
Questo perché, effettuato il progetto di massima ed inseriti tutti i layers in un’unica cartella, vorrei poterne variare l’assetto complessivo. Altri oggetti quali grafici o altro, in quanto strumenti di progetto teorico, potrebbero disturbare.

In pratica scelgo un profilo, ne calcolo i coefficienti aerodinamici in funzione della quota e della densità dell’aria, calcolo di dati relativi alla forma in pianta, coeff. di Oswald, la velocità di crociera ed in seguito i carichi e prestazioni.

Sto seriamente pensando di fare tutto in Simulink e poi passare i parametri a GH e in questo modo non avrei necessità di nulla (conosco sia Matlab che Simulink), ma volevo provare a non dipendere da software costosi e giungere al medesimo risultato con un rapporto costi/benefici ottimale.

Ti allego un esempio, fatto con Squid:

Ref Circle e Ref Rect sono due curve (le puoi creare in Rhino oppure generare in Grasshopper.

Ref Rect la usi per definire il bordo dell’immagine da esportare, 1 unità = 1 pixel.

All’interno di quel rettangolo generi le curve che vuoi (assi, note, testi,ecc. - in questo caso il cerchio) e le colleghi ad un componente Draw (icona con la matita), a cui colleghi anche un componente Outline (che definisce colore e spessore della linea) e - se serve - un componente Fill Solid per definire un riempimento.

Gli output dei vari componenti Draw sono “istruzioni” che vanno unite in una singola lista con un Merge. L’ultima istruzione è il componente Save che permette di salvare l’immagine su disco. Ogni volta che viene calcolata la soluzione, il file viene sovrascritto.

La lista con tutte le istruzioni è collegata al componente Squid - che le esegue - e l’output (bitmap) può essere visualizzato su Grasshopper tramite Quick Preview.

NOTA: io utilizzo una versione del plugin Squid modificata per funzionare con ShapeDiver. Se vuoi usare la stessa versione la trovi all’interno dell’installer di ShapeDiver (sempre su Food4Rhino) altrimenti puoi installare la versione originale di Squid, le funzionalità dovrebbero essere pressoché identiche.

2020-02-27-squid-image-example.gh (15,5 KB)

Questo non è un problema, tutto quello che generi in Grasshopper rimane lì.

Non so nello specifico quali calcoli devi fare, però capisco la situazione: personalmente se riesco a rimanere all’interno di un solo programma (massimo due) in genere trovo sia più semplice la gestione. Devo dire che Grasshopper finora si è rivelato MOLTO flessibile, l’ho usato per generare texture parametriche, animazioni, tabelle di dati ecc.

1 Mi Piace

Grazie Marco, ho aperto il tuo file, è normale che non veda le connessioni?

Era bella l’idea di usare solo Rhino-GH, lo userò insieme a Matlab, che si presta a notevoli evoluzioni e al calcolo differenziale indispensabile.

Vediamo cosa viene fuori. Userò un file csv su cui salverò le variabili e dirò a GH di leggere lì i valori: hai qualche suggerimento in merito?

ottimo Marco :+1:

io l’ho fatto da zero

ma che bravo. :smile:

E’ normale se non hai il plugin installato… l’avevi installato?

Quando apri una definizione che contiene componenti di un plugin che non hai, Grasshopper mostra una finestra di avviso e la definizione si carica senza quei componenti e relative connessioni (il che tra l’altro rende molto complicato capire dove e quali sono i componenti mancanti).

Bene!
Come hai visto, tutto sommato l’uso è abbastanza intuitivo, e può servire per diverse cosette,

1 Mi Piace

si, Rhino me lo ha segnalato, mi ha restituito un errore durante il tentativo di installazione automatica percui ho scaricato il pacchetto da qui.

ps In pratica, questo pacchetto mi può consentire di mettere online il modello che sto realizzando e mostrarne le potenzialità (modifiche tramite parametri GH)? Mi alletta l’idea di pubblicare il modello su un mio sito e pian piano mostrare i progressi.

Sì, ShapeDiver fa proprio quello (l’intento principale è quello di creare dei configuratori di prodotti per negozi online).

Questi sono un paio di modelli dimostrativi che ho pubblicato tramite ShapeDiver:

https://www.marcotraverso.it/interactive-3d-parametric-tower-design/
https://www.marcotraverso.it/interactive-parametric-car-wheel-design/

Ovviamente i modelli vanno ottimizzati per la visualizzazione online - il sistema funziona bene ma ha alcuni vincoli che vanno rispettati.

Il piano gratuito al momento consente di pubblicare modelli solo sul sito di ShapeDiver:
https://app.shapediver.com/

per quello che sto facendo è ridicolo. Stiamo sui 350MB (la fuso non è parametrizzata, ma sarebbe interessante farlo).

Per ridurre le dimensioni spesso è possibile utilizzare le mesh, ma sono d’accordo che quel tipo di progetti non si prestano molto a essere visualizzati online… :slight_smile: