Liste dispatch

buonasera a tutti,

in GH ho diviso due curve chiuse, poi ho collegato una linea tra i punti delle curve
dopodichè ho usato il componente sweep2 con i due binari e tutti i segmenti linee
per poi usare il srfsplit sweep con le linee fatte in precedenza. e fin qui tutto bene

ora mi ritrovo una srf suddivisa in tanti rettangoli. utilizzando il componente dispatch
e separando le due liste, come mai i rettangoli non sono in perfetta sequenza alternata?
grazie anticipatamente.

Perché nell’operazione di split fatta dal componente Surface Split non viene rispettato o mantenuto un ordine specifico.
Una possibile soluzione è quella di accoppiare a due a due le curve di sezione e fare più operazioni di Sweep, e poi riunire le superfici risultanti in una sola lista (vedi allegato).

2019-10-05 - Sweep Split in ordine.gh (8,6 KB)

2019-10-05 - Sweep Split in ordine.3dm (60,8 KB)

ciao Marco grazie per la risposta,

ho provato la tua definizione GH ma non torna il risoltato
in pratica mi riporta un tot n di sweep interi dei due binari
con curvature diverse e non singoli tasselli di suddivisione
srf
ps debbo dire che mi piace peccato che non sia il risultato desiderato :frowning:

edit:
in pratica la lista mi torna sfalsata tra il primo e ultimo elemento esempio:
tot elm 100, il dom 0-99 non va bene ma correggere con 1-98 poi 0 poi 99
oppure dovrebbe partire con il 99 continuare con 1 2 3 etc e finire con lo 0

avevo provato con i vari tree flat etc ma nulla da fare

  1. oltre a chiedere: come mai succede questo?
  2. c’è un modo meno contorto per ordinare?

Ciao Salvio, è possibile sfalsare le liste in vari modi, ma dipende dall’ordine iniziale con cui sono state collegate le curve da Rhino a Grasshopper.

Senza vedere il file è difficile capire, se riuscissi ad allegarlo (sia il 3dm che il gh) potrei dargli un’occhiata.

le curve di sezione sono fatte in automatico

in pratica la “prima” definizione che hai creato (quella dove fai notare ordine sfalsato) è identica alla mia
con la differenza che per ogni curva chiusa ho usato il componente dividecurve impostandoli con lo stesso numero di punti ed ho collegato i due componenti dividi ad un componente linea usandolo come segmenti intermendi per lo sweep2. quindi io sull’ordine di questi segmenti non ho controllo a monte della selezione.
come già detto avevo provato anche ad ordinare successivamente le sezioni e i tasselli alla fine ma nulla.

e pure le curve chiuse le ho impostate con la stessa direzione di verso e la stessa giunzione
credevo di aver prevenuto i vari possibili problemi a monte della definizione ma mi ero sbagliato.
come sarebbe possibile risolvere questo problema? grazie ancora anticipatamente!

Da quello che ho capito in realtà dovresti poter avere il controllo sui vari elementi, potrebbe essere un problema di organizzazione dei dati - il famoso data tree di Grasshopper.

Ho capito più o meno cosa vuoi ottenere, ma senza un file o almeno un’immagine del risultato che desideri è un po’ tirare ad indovinare :slightly_smiling_face:

2019-10-05 - Sweep Split in ordine3.gh (15,2 KB)

questa è la stessa definizione aggiungendo il dividecurve
le 2 curve sono all’interno dei componenti curve
quindi non è necessario associarli ad oggetti

selezionando la list e facendo scorrere lo slide
si può notare come ID 0-1 e 148-149 salta un tassello

Ciao Salvio,

effettivamente sembra che l’operazione di Split mantenga l’ordine tranne che per il secondo elemento che viene messo alla fine.

Comunque l’operazione Split, come ti dicevo, in generale non mantiene l’ordine, e quindi non ci si può “affidare” a quello.

Ti allego 3 soluzioni:

1 - visto che l’ordine sembra avere sempre lo stesso problema, sposto l’ultimo elemento al secondo posto - è un po’ una “pezza” ma finché il problema è sempre lo stesso funziona

2 - è un po’ più “contorta” :wink: riordino le varie superfici in modo che siano in senso antiorario. Per farlo calcolo un centro approssimato della superficie totale e i centri approssimati delle singole facce, e il vettore che il collega, e ordino la lista in base all’angolo formato tra questi vettori e l’asse Y

3 - La soluzione che preferisco: visto che le sezioni sono lineari, puoi ottenere le stesse superfici facendo il loft dei vari tratti di “rail”. Nonostante siano 150 loft distinti, l’intera operazione è circa 40 volte più veloce rispetto al fare un solo split con 150 segmenti, e le superfici risultanti sono già in ordine.
Ovviamente se non fossero segmenti la cosa non si potrebbe fare.

Se hai dei dubbi chiedi pure!

2019-10-05 - Sweep in ordine v4.gh (25,8 KB)

ciao Marco

grazie per il file GH, a parte la soluzione 1 credo per via di compatibilità non carica un componente
gli altri due funzionano :hugs: e a parte questo guardando i tuoi esempi ho capito come funzionano alcuni componenti che non avevo mai usato ed alla fine ho fatto anche un’altra prova diversa:

in pratica leggendo ciò che hai scritto ho tentato di creare un loft aggiungere un isocrv e dividesrf
in sostanza funziona quindi senza dividere a monte le 2 curve, peccato che alla fine anche in questo caso fa lo stesso identico problema mi saltella tra il primo e ultimo tassello e nacora una volta mi chiedo come mai?

comunque l’importante è che tra gli esempi da te postati e prove che ho fatto
adesso ho vari modi per raggirare questo ostacolo. ancora grazie :+1:

forse il metodo idoneo sarebbe quello di creare prima una superficie
per poi dividere il dominio UV e quindi usare il componente isotrim
in questo modo ordine viene rispettato.

Esatto, penso anche io che sia un’ottima soluzione in questo caso, rispetta l’ordine e funziona anche con sezioni non lineari.

Quando si usa Grasshopper spesso i problemi di strategia di modellazione si moltiplicano… :wink:

1 Mi Piace

infatti bisogna sempre usare gli atrezzi ed il metodo giusto per avere il migliore risultato :+1:

Sono un po’ incasinato al momento e non ho avuto modo di aprire le definizioni quindi mi rendo conto di sparare alla cieca… ma uno dei motivi per cui nelle liste sfalsate si osserva questo salto fra primo e ultimo elemento dipende dal componente con opzione “W” wrap impostata su booleana “true” e che dunque completa le distribuzione degli item in lista riagganciandosi al primo dell’altra lista.
Prova a settarla su “False”.

ciao Giuseppe,
provato ma il risultato è lo stesso.