Estrarre coordinate di punti da una polilinea

Di norma importo un file .dat contenente 2 colonne ovvero le coordinate xy del profilo

espresse in percentuale rispetto all’unità (la corda ha lunghezza 1 e parte da coordinte 1;0 ).

Adesso dovrei fare il contrario ovvero, disegnato un profilo vorrei ottenere 100 punti appartenenti alla curva ed esportare le loro coordinate su un file di .dat o anche .csv

Posti sotto Rhino Windows quindi suppongo tu non voglia usare GH.
In questo caso non saprei come fare se non con uno script.

Se vuoi proviamo a costruirlo (con calma purtroppo, perche’ in settimana lavoro e non so se e quando riesco a concentrarmi su queste cose, anche se lo preferirei di gran lunga), a me sembra anche un ottimo esercizio per impratichirsi in quanto dovrebbe essere uno script abbastanza breve.
Almeno supponendo che la curva sia gia’ preparata per poterla utilizzare facilmente.
… Veramente direi piu’ “le due semicurve”, credo sarebbe meglio partire da quelle.
Comunque nel caso poi vediamo.

Sempre che qualcuno non abbia un’idea migliore … e piu’ veloce. :grinning:

Si pensavo di farlo in Rhino, ma anche con gh, a me interessa il risultato.
Si la curva è preparata e posso condividerla.

Eppure pensandoci preferisco in gh anche con uno script, ma in gh.

Se ho capito, se no, pazienza.
img2
curva.gh (8,8 KB)

Leo (grazie), sarebbe una soluzione alternativa, ma…ci sono problemi.

Se provi a rigenerare una spline usando quei punti succede questo:

e questo perchè è importante l’ordine.

Gli step dell’algoritmo dovrebbero essere:

  1. dividi la curva in due utilizzando la corda;
  2. dividi la curva superiore in 50 punti e li incolonni in senso antiorario,
  3. dividi la curva inferiore in 50 punti e li incolonni in senso antiorario,
  4. test: è possibile creare una spline per questi punti.

io mi fermo al punto uno: come divido una curva con un altra curva?

Così la curva c’è.


curva1.gh (12,1 KB)

Aggornamento.
curva2.gh (16,6 KB)

Ciao Emi, praticamente è un “divide” e poi esporti la lista di punti… mi pare abbastanza elementare…

Buongiorno, occhio, non ho visto la vostre definizioni, ma il primo e l’ultimo punto devono coincidere e iniziare per (1;0).

Ma mi dite come si splittare una curva con un altra?

Ciao Lucio

Si’, concordo che sembra semplice.
Per quello lo proponevo come script adatto a chi inizia a scriptare. :slight_smile:

Comunque un paio di cose restano da fare, anche partendo dalle semicurve orientate.
Togliere il punto doppio in 0,0 e formattare il testo per lo script.
A esportare direttamente da Rhino non mi fiderei tanto, anche se ci fosse la possibilita’ di formattare come serve (non so, c’e’ il modo ? ).
Non saprei come controllare l’ordine dei punti esportati. :confused:

Certo, se si usa GH lascio parlare chi lo conosce. :slight_smile:

Forse se posti la curva in questione possiamo capire meglio.
In ogni caso i due file .gh restituiscono queste curve.


Per dividere una curva si usa il comando _Split.

profilo.3dm (64,7 KB)
DAT.gh (10,4 KB)

Devo dividere in GH.

Grazie Leo per il contributo.
Ho pensato che posso evitare la divisione (posso farla dopo per altri motivi) e (rispondo ad @emilio ) posso slittare la lista col compontente SHIFT.
Creata la lista di punti, adesso i quesiti sono:

  1. se scompongo i punti nelle coordinate x,y,z, non dovrei ottenere 3 liste differenti?
  2. perché i componenti usati mi ricreano un’ unica lista mettendo in un’unica colonna le coordinate, anzicché in 3 colonne?

Grazie a tutti, ho risolto così:

DAT.gh (10,4 KB)

ma si accettano idee per migliorare il codice.

@emilio se vuoi fornire il tuo contributo Python… siamo ben lieti come sempre.

No beh, non fare un’operazione da macro, sempre da script.
Ovviamente l’ordine dei punti verrà restituito secondo la direzione della curva.
Mi ricordo che per la restituzione dei segmenti in una policurva avevo trovato un bug (l’ultimo e il primo segmento venivano invertiti) che poi era stato corretto… sarà da fare una verifica le prime volte…

in GH c’è il componente Shift List.

No, no … grazie. :smile:
Pensavo solo di darti qualche dritta in modo che potessi scriverlo tu lo script, nel caso fosse quello che volevi fare.
Come dice Lucio, almeno se parti dalle curve giuste, lo script e’ abbastanza banale.
Alla portata di chiunque abbia esperienza con gli script per Rhino. :slight_smile:

Siamo d’accordo. :slight_smile:

2 Mi Piace