Indici col codice di PY in GH

come volevasi dimostrare: “tra il dire e il fare c’è di mezzo il mare”

con un componente PY dovevo gestire la divisione di varie curve, trovato come gestirne una curva alla volta adesso mi è capitata questa situazione:
in GH dopo aver creato un BBox con tre superficie ed estruso una linea che la taglia a metà mi estraggo l’intersezione tramite Brep/Brep e mi ritrovo con quattro curve: {0;0}[0] - {0;0}[1] - {0;1}[0] - {0;2}[0]
ora “senza” usare ne “list” ne “tree” per input di PY vorrei gestire queste quattro curve con l’indici nel codice

sopra le ho identificate con le parentesi graffe come vengono visualizzate nel panel text
ma ho fatto tutte le prove possibile con parentesi “tonde quadre graffe” e tutti separatori " , ; : "

qualche idea o suggerimenti?

Premesso che gli alberi di GH non li capisco … :blush:

Se posti la definizione che non funge (con gli eventuali oggetti in input), forse possiamo provare a capirci qualcosa … :slight_smile:

ciao Emilio,

le curve da me interessate vengono estratte come già detto da un brep/brep ma anche inserendo delle curve in un contenitore curve il risultato non dovrebbe differenziare.

nel post ho scritto se era possibile non usare ne “list” ne “tree” ma mi sa che bisogna usare uno dei due.

import rhinoscriptsyntax as rs
a=rs.DivideCurve(x,4)

il codice è pressochè nullo come si vede ora vorrei tramite uno script che mi permetta di gestire le curve / geometrie nel senso: il “dividecurve” poterlo applicare solo a curve specifiche e anche nel output “a” poter visualizzare solo alcuni punti del comando “dividecurve”

PS hai visto Emilio alla fine anche se un po obbligato sto entrando nel mondo di Python :slight_smile:

Ottimo ! :slight_smile:

Quanto alla definizione GH … cosi’, in astratto … non capisco molto :wink:

Dici che hai diverse curve in input nello script, ma non vuoi usare liste ?
Se hai N curve, puoi settare N parametri di input.
Certo se il numero di curve varia … :confounded: :wink:

… Visto che ti cimenti con Python …
Se permetti, un paio di ‘dritte’ (forse sono cose che sai gia’, comunque ) … :slight_smile:

Per chi arriva dal Basic, ci sono alcune differenze da ricordare:

Ad esempio, se provi ad eseguire questi due micro-script, vedrai che il risultato cambia … ohibo’ :wink:

Basic:

Sub test(a, b)
	a = 40
	b = 80
End Sub

a = 4
b = 8
test a, b
Rhino.Print "A " & cstr( a )
Rhino.Print "B " & cstr( b )

Python:

def test( a, b ):
    a = 40
    b = 80
    
a = 4
b = 8
test( a, b )
print 'A ' + str( a )
print 'B ' + str( b )

Stesso discorso per questi altri due:

Basic:

a = array(1, 2, 3)
b = a
a(1) = 222
Rhino.Print Rhino.Pt2Str(b)

Python:

a = [ 1, 2, 3 ]
b = a
a[ 1 ] = 222
print b

Occhio ! :wink:

ma veramente le curve sono quattro e in teoria almeno per adesso dovrebbero rimanere tali, il problema e che non riesco a trovare il sistema per identificare la curva che devo dividere e poi successivamente andare a selezionare i punti voluti.

eeee Emilio è da venerdi che sto girando intorno ai codici postati senza risultato
anch’io ho fatto prove con gli array in python e quelli alcuni esempi li ho gestiti
ma quando debbo andare a gestire le curve in input la cosa non funziona
ora o è che in quel caso lo script cambia oppure qualche settaggio da impostare
tipo list access oppure come dicevi bisogna inserire componente “tree” . . . .

Come ho gia’ accennato, io se non vedo il problema ‘in concreto’ … mi arrendo :wink:
Soprattutto con GH …:confused:

ah scusami Emilio non avevo capito. (sai è la giornata)

in pratica in input(x) ci sono quattro curve, mentre in output(a) i punti della divisione delle quattro curve
mi interesserebbe avere in output(a) solo il punto della curva scelta, come evidenziato nell’immagine

lo so è una cosa banale in VBscript sarebbe facile, qui invece ci vado matto per sta cosa :rage:
dimmi che mi puoi aiutare . . . .

Come faresti ?

Come individui la curva in questione tra quelle in input ?
E’ sempre la seconda ?
O c’e’ un altro criterio ?

( Il punto suppongo sia sempre il secondo della curva … )

EDIT:
O comunque: conosci gli indici sia della curva che del punto ?

con VBScript intendevo Editor essendo che in GH da come si era argomentato giorna fa non si può usare

Dim Crv: Crv = Rhino.GetObjects
Call Rhino.AddPoint(Rhino.DivideCurve(Crv(1), 4)(1))

in VBScript grazie a te e Lucio ho acquisito queste conoscenze

gli indici sono quelli della foto curva:1 e punto:1

Ciao Salvio

OK … credo di aver capito cosa devi fare ( … finalmente :smile: )
Con questo esempio e’ tutto chiaro :slight_smile:

Abbiamo delle curve e dobbiamo estrarre un punto ottenuto con DivideCurve…

“Traducendo” il tuo codice in script GH, otteniamo piu’ o meno:

16gen-2

“cs” sono le curve in input ( setta List Access )

“np” e’ in numero di punti per dividere le curve

“cx” e’ l’indice della curva da dividere

“px” e’ l’indice del punto cercato

e naturalmente “pt” e’ il punto in output

Io ho settato anche i Type hint: ‘Curve’ il primo e ‘int’ gli altri, ma non credo sia necessario …

Se qualcosa non e’ chiaro, dimmelo.

Ciao

PS

nello script sono stato piuttosto prolisso,
se compattiamo il tutto, otteniamo una cosa molto simile al tuo VBScript :slight_smile:

import rhinoscriptsyntax as rs
pt = rs.DivideCurve( cs[ cx ], np )[ px ]

grazie Emilio, con la calma si ottengono risultati migliori: a volte bisogna staccare un po :slight_smile:

Questa la vedo ora:

:slight_smile: