# Indici col codice di PY in GH

**URL:** <https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387>\
**Category:** Grasshopper\
**Created:** [12 Gennaio 2018, 10:53pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387 "2018-01-12T22:53:51Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [12 Gennaio 2018, 10:53pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/1 "2018-01-12T22:53:51Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [15 Gennaio 2018, 10:48am UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/2 "2018-01-15T10:48:48Z")

</div>

Premesso che gli alberi di GH non li capisco … 😊

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

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [15 Gennaio 2018, 12:01pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/3 "2018-01-15T12:01:40Z")

</div>

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 🙂

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [15 Gennaio 2018, 2:12pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/4 "2018-01-15T14:12:17Z")

</div>

> [@0904](#):
>
> PS hai visto Emilio alla fine anche se un po obbligato sto entrando nel mondo di Python 🙂

Ottimo ! 🙂

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

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 … 😖 😉

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [15 Gennaio 2018, 2:22pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/5 "2018-01-15T14:22:39Z")

</div>

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

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’ 😉

Basic:

```auto
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:

```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:

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

```

Python:

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

```

Occhio ! 😉

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [15 Gennaio 2018, 2:24pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/6 "2018-01-15T14:24:10Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [15 Gennaio 2018, 2:28pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/7 "2018-01-15T14:28:34Z")

</div>

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” . . . .

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [15 Gennaio 2018, 2:32pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/8 "2018-01-15T14:32:26Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [15 Gennaio 2018, 3:14pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/9 "2018-01-15T15:14:47Z")

</div>

> [@emilio](#):
>
> Come ho gia’ accennato, io se non vedo il problema ‘in concreto’ … mi arrendo 😉
> 
> Soprattutto con GH …😕

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

 ![crv](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/2/20ff300da5f1d4d9cdcc3ac713e0d780c570146a.png)

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 😡  
dimmi che mi puoi aiutare . . . .

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [15 Gennaio 2018, 3:42pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/10 "2018-01-15T15:42:12Z")

</div>

> [@0904](#):
>
> in VBscript sarebbe facile

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 ?

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [15 Gennaio 2018, 4:11pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/11 "2018-01-15T16:11:10Z")

</div>

> [@emilio](#):
>
> Come faresti ?

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

> [@emilio](#):
>
> O comunque: conosci gli indici sia della curva che del punto ?

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

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Gennaio 2018, 6:34am UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/12 "2018-01-16T06:34:20Z")

</div>

Ciao Salvio

OK … credo di aver capito cosa devi fare ( … finalmente 😄 )  
Con questo esempio e’ tutto chiaro 🙂

> [@0904](#):
>
> Dim Crv: Crv = Rhino.GetObjects
> 
> Call Rhino.AddPoint(Rhino.DivideCurve(Crv(1), 4)(1))

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

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

 ![16gen-1](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/e/eec99ddc8fa8262511ced4022ce647ec083da276.png)

![16gen-2](https://sea3.discourse-cdn.com/mcneel/images/transparent.png)

“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 🙂

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

```

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [16 Gennaio 2018, 3:36pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/13 "2018-01-16T15:36:10Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Gambler](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/gambler/32/16276_2.png) [@Gambler](https://it.discourse.mcneel.com/u/Gambler)\
**Post date:** [16 Gennaio 2018, 7:11pm UTC](https://it.discourse.mcneel.com/t/indici-col-codice-di-py-in-gh/1387/14 "2018-01-16T19:11:33Z")

</div>

Questa la vedo ora:

> **[SudoHopper3D card game by McNeel Miami](http://blog.rhino3d.com/2017/12/sudohopper3d-card-game-by-mcneel-miami.html)**
>
> Introducing a fun new way to learn Grasshopper: Sudo Hopper 3D ! To help you learn Grasshopper, McNeel Miami has created  Sudo Hop...

🙂
