Ciao a tutti,
Stavo valutando a che punto siamo con l’IA applicata alla progettazione computazionale: se, a partire da una mia richiesta, l’IA sia in grado di generare uno script semplice per un pattern o qualcosa di simile.
Curiosità accademica prima che le macchine si ribellano e ci uccidano
Per chi capisce il linguaggio GHPython Script è fattibile?
ho condiviso il blocco note con lo script
ho dato questo testo a Gemini:
“riesci a generare per Grasshopper per Rhino un codice che mi permette di applicare un pattern diamantato su una superfice, devo avere l opzione di impostare l altezza la larghezza e la lunghezza della singola cella da ripetere”
quello che ha tirato fuori:
Ciao! Certo, con piacere. Creare pattern parametrici su superfici è uno degli esercizi più utili e divertenti in Grasshopper. Svilupperemo insieme un codice Python che ti darà il pieno controllo sul tuo pattern diamantato.
L’idea è di creare una struttura 3D, non solo delle linee sulla superficie. Ogni “diamante” sarà in realtà una piccola piramide la cui base si appoggia sulla superficie e la cui punta si estende verso l’esterno.
Panoramica della Soluzione
Ecco come funzionerà il nostro script, passo dopo passo:
- Input: Lo script prenderà in input la superficie di base e tre numeri:
- Il numero di divisioni lungo la larghezza della superficie (che chiameremo
U_count
). - Il numero di divisioni lungo la lunghezza della superficie (che chiameremo
V_count
). - L’altezza (
Height
) di ogni punta del diamante.
- Griglia: Suddivideremo la superficie in una griglia invisibile basata sui conteggi
U
eV
. - Punti Centrali: Per ogni rettangolo della griglia, troveremo il suo punto centrale sulla superficie.
- Offset: Sposteremo (o faremo un “offset”) di questo punto centrale verso l’esterno, perpendicolarmente alla superficie, usando il valore
Height
che hai impostato. - Costruzione: Creeremo quattro facce triangolari che collegano i quattro vertici del rettangolo della griglia al nuovo punto centrale rialzato. L’insieme di queste quattro facce formerà il nostro diamante/piramide.
- Output: Lo script restituirà tutte le facce dei diamanti create, pronte per essere visualizzate in Rhino.
1. Impostazione del Componente in Grasshopper
Prima di incollare il codice, prepariamo l’ambiente in Grasshopper.
- Aggiungi alla tela un componente
GHPython Script
. Puoi trovarlo nella schedaMaths > Script
. - Fai zoom sul componente e clicca sui segni
+
e-
per configurare gli input. Rinominali facendo clic destro su di essi.
Surface
: Clicca con il tasto destro e imposta il “Type Hint” suSurface
.U_count
: Imposta il “Type Hint” suint
(numero intero).V_count
: Imposta il “Type Hint” suint
(numero intero).Height
: Imposta il “Type Hint” sufloat
(numero con virgola).
- Rinomina l’output
a
inDiamonds
per chiarezza.
Il tuo componente dovrebbe assomigliare a questo:
Test AI_script GH.txt (4,1 KB)
3. Come Usare lo Script
- Crea una Superficie in Rhino: Disegna una qualsiasi superficie nella viewport di Rhino (un piano, una superficie curva, una porzione di sfera, ecc.).
- Collega la Superficie: In Grasshopper, aggiungi un componente
Surface
(dalla schedaParams > Geometry
). Clicca con il tasto destro su di esso, scegli “Set one Surface” e seleziona la superficie che hai creato in Rhino. Collega l’output di questo componente all’inputSurface
del nostro script Python. - Imposta i Parametri:
- Aggiungi tre componenti
Number Slider
(dalla schedaParams > Input
). - Configura il primo slider per i numeri interi (dal menu
Edit...
) e collegalo aU_count
. Prova un range da 1 a 50. - Configura il secondo slider per i numeri interi e collegalo a
V_count
. Anche qui, prova da 1 a 50. - Configura il terzo slider per i numeri reali (con decimali) e collegalo a
Height
. Prova un range da 0.1 a 10.0.
- Visualizza il Risultato: Appena colleghi tutti gli input, vedrai il pattern diamantato apparire sulla tua superficie in Rhino!
Ecco un esempio di come potrebbe apparire la tua definizione completa in Grasshopper:
Spero che questo ti sia d’aiuto! È un ottimo punto di partenza. Giocando con i parametri U_count
, V_count
e Height
, e usando superfici di base diverse, potrai ottenere una grandissima varietà di risultati.
Se vuoi modificare o espandere il codice, o se qualcosa non è chiaro, chiedi pure! Buon divertimento con la programmazione!
scusate l’ignoranza ma io non ho la più pallida idea da dove iniziare qui