# Gli Script

**URL:** <https://it.discourse.mcneel.com/t/gli-script/6079>\
**Category:** Rhino Windows\
**Created:** [25 Maggio 2024, 10:16am UTC](https://it.discourse.mcneel.com/t/gli-script/6079 "2024-05-25T10:16:52Z")\
**Posts on this page:** 20\
**Page:** 8

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [20 Giugno 2024, 3:40pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/141 "2024-06-20T15:40:25Z")

</div>

Se è possibile e gradito proseguo con i post anche se saranno a rilento , poi se trovo grosse difificolta cosa probabile mi servira piu tempo .

Sicuramente ho l idea ma non idea di cosa mi aspetta 🤣 🤣

Ciao e grazie

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [20 Giugno 2024, 10:21pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/142 "2024-06-20T22:21:03Z")

</div>

In caso di difficolta’, se ti va fai un fischio … 🙂

Ciao

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [21 Giugno 2024, 12:43pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/143 "2024-06-21T12:43:32Z")

</div>

Step uno , , lascio l aggiunta che ho fatto come script , cè la scelta di creare un piano oppure no e se si crea il piano lo rendo corrente e la forma che esce dal tuo codice Emilio dall apertura del file txt è sul piano creato.

Per creare piano conferma con s o S

Ci saranno sicuramente punti da rivedere visto l esperienza vado per quel che comprendo al volo qua e la e metto insieme ma ovviamente non cè nessun tipo di padronanza con Python al momento.

Ciao Grazie

Ecco il codice script 🙂

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [21 Giugno 2024, 12:51pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/144 "2024-06-21T12:51:07Z")

</div>

NOn riesco a caricare il codice qui come font , carico il file python

[Test Piani.py](https://it.discourse.mcneel.com/uploads/short-url/liCPUi24LurUcvxdF6WMFUhDPLe.py) (3,9 KB)

Porco cane mi sono sbagliato test layer 🥶 🥶 🥶 🥶 🥶 🥶 🥶

Ciao Grazie

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [21 Giugno 2024, 1:04pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/145 "2024-06-21T13:04:14Z")

</div>

> [@Claudio3](#):
>
> NOn riesco a caricare il codice qui come font

Bisogna scrivere prima dello script una linea:

``` python

e dopo lo script:

```

Gli apostrofi sono dei caratteri ‘backtick’, o ‘grave accent’: codice U+0066

Copio qui sotto lo script:

```python

import rhinoscriptsyntax as rs

# Chiedi all'utente se desidera creare un nuovo layer
crea_nuovo_layer = rs.GetString("Vuoi creare un nuovo layer? (SÃ¬/No)")

# Procedi solo se l'utente risponde "S" o "s"
if crea_nuovo_layer.lower() == 's':
    # Richiesta all'utente di inserire un nome per il nuovo layer
    nome_layer = rs.GetString("Inserisci il nome del nuovo layer")

    # Verifica se l'utente ha inserito un nome
    if nome_layer:
        # Crea il nuovo layer se non esiste giÃ 
        if not rs.IsLayer(nome_layer):
            rs.AddLayer(nome_layer)
            print("Layer '{}' creato con successo.".format(nome_layer))
        else:
            print("Layer '{}' esiste giÃ .".format(nome_layer))
        
        # Rendi il nuovo layer il layer corrente
        rs.CurrentLayer(nome_layer)
        print("Layer '{}' Ã¨ ora il layer corrente.".format(nome_layer))
    else:
        print("Operazione annullata: nessun nome inserito per il layer.")
else:
    print("Creazione del nuovo layer annullata dall'utente.")

#inizio funzione
def main():
    #rhinoscriptsyntax abbreviato rs
    name = rs.OpenFileName( 'File da leggere ?' )
    #condizione 
    if not name:
        return
        #apertura file tramite object
    file = open( name, 'r' )
    # Con il metodo read del file object leggiamo il contenuto del file
    text = file.read()
    # lo salviamo nella stringa text
    text = text.strip()
    # Ricaviamo varie linee di testo da text con metodo split delle stringhe
    # passiamo il carattere newline come separatore tra le linee
    lines = text.split( '\n' )
    # viene definito una variabile nome per riga file di importazione
    rad = [] # 
    lng = [] # lunghezza asse tronco di cono
    deg = [] # grado inclizazione 
    # Usiamo un ciclo for e una variabile cnt
    # come contatore per elencare le linee di testo lette
    for line in lines:
        # Creazione lista con le stringhe ottenute scomponendo stringa originale wrd
        wrd = line.strip().split( ',' )
        # lista di numeri ottenuti floating-point
        num = [float( wr ) for wr in wrd]
        # prendo valore primo 0 dalla lista , diametro 1 e trovo raggio
        rad.append( num[0] / 2 ) 
        # prendo valore 1 dalla lista ,lunghezza  
        lng.append( num[2] )
        # prendo il valore quattro 3 dalla lista , angolo piega
        deg.append( num[3] )
        # prendo valore secondo 1 dalla lista ,diametro 2 e trovo raggio 
    rad.append( num[1] / 2 )
################
    # controllo
    # print manda il testo alla command area di Rhino
    # Qui salviamo i dati su 3 liste
    # print( 'rad: ' + str( rad ) )
    # print( 'lng: ' + str( lng ) )
    # print( 'deg: ' + str( deg ) )
################
# arot angolo di rotazione line asse altezza cono
# crot angolo di rotazione cerchio
    sucnt = len( lng )
    arot = [deg[ 0] ]
    for ix in range( 1, sucnt ):
        arot.append( arot[-1] + deg[ix] )
        # primo valore in tabella
    crot = [arot[ 0] ]
    for ix in range( sucnt - 1 ):
        crot.append( ( arot[ix] + arot[ix + 1] ) / 2 )
    crot.append( arot[-1] )

# controllo
    xax = [1, 0, 0]
    zax = [0, 0, 1]
    # usiamo la lista per salvare i centri dei cerchi ,primo valore 0,0,0
    ccen = [[ 0, 0, 0] ]
    for ix in range( sucnt ):
        vec = rs.VectorRotate( xax, arot[ix], zax )
        vec = rs.VectorScale( vec, lng[ix] )
        pnt = rs.VectorAdd( ccen[-1], vec )
        ccen.append( pnt )
    cen = [0, 0, 0]
    pla = rs.WorldYZPlane()
    circ = []
    for ix in range( sucnt + 1 ):
        cir = rs.AddCircle( pla, rad[ix] )
        cir = rs.RotateObject( cir, cen, crot[ix], zax )
        cir = rs.MoveObject( cir, ccen[ix] )
        circ.append( cir )
    sur = []
    for ix in range( sucnt ):
        sur.append( rs.AddLoftSrf( [circ[ ix], circ[ix + 1] ] )[0] )
    rs.DeleteObjects( circ )
main()

```

Cavoli !  
Sembri gia’ esperto di Python, anche di rhinoscriptsyntax …

Tra poco tocchera’ a te rispondere per gli script sul forum. 😀

> [@Claudio3](#):
>
> mi sono sbagliato test layer

Dove ? Non l’ho visto … 😕

Ciao

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [21 Giugno 2024, 1:08pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/146 "2024-06-21T13:08:59Z")

</div>

> [@emilio](#):
>
> Cavoli !  
> Sembri gia’ esperto di Python, anche di rhinoscriptsyntax …

Ma va figurati ci provo , solo non volevo ficcare troppo dentro il naso poi mi applico perchè mi piace e qualcosina ne esce ma , mi sa una botta di fortuna , anche se avevi fatto tutto tu anche con i Layer per cui non era molto da fare.

Appena riesco vediamo lo step 2 ma ci sentiamo sta volta fra 20 giorni mi sa 🤣 😂 alternando con il progetto con la forma malefica …

CIao grazie

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [21 Giugno 2024, 1:16pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/147 "2024-06-21T13:16:10Z")

</div>

Se prima parlavi dei caratteri ‘strani’, prova a inserire questa come primissima linea del file:

```auto
# -*- coding: utf8 -*-

```

Io … da buon pigro 😄 … aggiro il problema sul nascere:  
utilizzo la tastiera USA, la trovo molto piu’ comoda per programmare.  
Tanto per l’italiano l’unica aggiunta sono gli accenti … e per quello continuo a usare l’apostrofo come si faceva negli anni '80 con gli home computers.

😀

> [@Claudio3](#):
>
> poi mi applico perchè mi piace

Si vede. 🙂

> [@Claudio3](#):
>
> ci sentiamo sta volta fra 20 giorni mi sa

… Speriamo prima, comunque buon lavoro !

Ciao

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [21 Giugno 2024, 1:17pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/148 "2024-06-21T13:17:46Z")

</div>

Grazie per il sostegno a presto.

Ciao

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [21 Giugno 2024, 1:34pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/149 "2024-06-21T13:34:43Z")

</div>

… P.S.

Vedrai poi che con RhinoCommon c’e’ da divertirsi. 😀

/ P.S.

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [23 Giugno 2024, 7:36am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/150 "2024-06-23T07:36:03Z")

</div>

> [@emilio](#):
>
> In caso di difficolta’, se ti va fai un fischio … 🙂

Ti prendo in parola , grazie , nei momenti di pausa passo al notebook e curioso il progetto Script , ho una domanda da fare sullo script che hai fatto , sull importazione dati numerici dal file txt.  
Cè la possibilità di inserire una riga di commento come promemoria nel file di importazione anche a meta dati ?  
Oppure va fatta una condizione che se il valore è stringa allora è falso , per cui viene non considerata come valore da importare ?

Ciao Grazie e buona Domenica

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [23 Giugno 2024, 9:06am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/151 "2024-06-23T09:06:18Z")

</div>

> [@Claudio3](#):
>
> Cè la possibilità di inserire una riga di commento come promemoria nel file di importazione anche a meta dati ?  
> Oppure va fatta una condizione che se il valore è stringa allora è falso , per cui viene non considerata come valore da importare ?

Si’ a entrambe le domande … 😉

Se il commento inizia con una lettera, potresti utilizzare **str.isalpha()**  
Vedi qui:  
[5. Built-in Types — Python 2.7.18 documentation](https://docs.python.org/2.7/library/stdtypes.html#string-methods).  
Io separerei nello script le due operazioni di **strip()** e **split()** qui:

```python
        wrd = line.strip().split( ',' )

```

Prima eseguo solo strip, poi prendo il primo carattere dalla stringa indicizzando e controllo se e’ una lettera, tipo (non testato):  
( split lo eseguo poi in seguito )

```python
        wrd = line.strip()
        if wrd[0].isalpha():
            continue

```

l’istruzione **continue** salta alla prossima iterazione del ciclo:  
[https://docs.python.org/2.7/reference/simple\_stmts.html#the-continue-statement](https://docs.python.org/2.7/reference/simple_stmts.html#the-continue-statement)

Ma certo si puo’ fare in diversi altri modi. 🙂

Se non e’ chiaro, chiama.

Ciao, buona domenica.

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [23 Giugno 2024, 9:13am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/152 "2024-06-23T09:13:35Z")

</div>

Grazie per le indicazioni , ci farò un pò di prove , come vedi vado con calma la rotazione la vedremo al momento che il frutto è maturo.  
Sei proprio esperto , probabile in giornata che ci faccio qualche prova ,

> [@emilio](#):
>
> Se non e’ chiaro, chiama.

Sicuramente no so se riesco al volo , ma come mi hai gia fatto comprendere se non ti applichi non impari per cui , ci provo , la testa è dura per cui avanti.

Molte grazie

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [23 Giugno 2024, 9:18am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/153 "2024-06-23T09:18:24Z")

</div>

> [@emilio](#):
>
> Se il commento inizia con una lettera, potresti utilizzare **str.isalpha()**

DIciamo che sarebbe utile avere circa 4 commenti in modo non statico come posizione .

Ciao Grazie

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [23 Giugno 2024, 9:57am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/154 "2024-06-23T09:57:17Z")

</div>

> [@Claudio3](#):
>
> Sei proprio esperto

Ormai essere esperti di un linguaggio e’ cosa per pochi.  
I linguaggi sono diventati enormi (la maggior parte).  
Ma per fortuna li puoi usare anche senza conoscerli bene.  
Impari quello che ti serve e che preferisci usare.  
E’ il vantaggio di essere hobbista … fai quello che ti pare. 😀  
E farsi gli script per il CAD e’ come essere hobbista … 😉

> [@Claudio3](#):
>
> sarebbe utile avere circa 4 commenti in modo non statico come posizione

Be’, la procedura a cui ho accennato sopra e’ indipendente da numero e posizione delle righe di commento.

Ciao

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [23 Giugno 2024, 10:29am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/155 "2024-06-23T10:29:32Z")

</div>

Scusa, dimenticavo una cosa …  
Se nel ciclo di lettura a un certo punto facciamo riferimento al primo caratterre della stringa, cioe’

```auto
wrd[0]

```

Quel carattere deve esserci, se no abbiamo un errore.  
Quindi penso sia meglio, prima di quel riferimento, controllare che la stringa non sia vuota.  
Nel caso ci fossero linee bianche nella nostra tabella.  
Si puo’ fare in diversi modi, come:

```auto
if( wrd == '' ):
    continue

```

oppure puoi controllare la lunghezza della stringa:

```auto
if( len( wrd ) == 0 ):

```

ma si puo’ anche utilizzare il fatto che nella condizione di un **if** , Python converte tutto in **bool** , quindi scrivere solo:

```auto
if( not wrd ):

```

Dato che la stringa vuota come **bool** vale **False**.

Ciao

---

<div class="post-metadata">

**Author:** ![Claudio3](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/claudio3/32/18776_2.png) [@Claudio3](https://it.discourse.mcneel.com/u/Claudio3)\
**Post date:** [23 Giugno 2024, 11:19am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/156 "2024-06-23T11:19:48Z")

</div>

> [@emilio](#):
>
> E’ il vantaggio di essere hobbista … fai quello che ti pare. 😀

Sicuramente , concordo.

> [@emilio](#):
>
> Be’, la procedura a cui ho accennato sopra e’ indipendente da numero e posizione delle righe di commento.

Ok allora ottimo , avevo capito che verificava solo la prima riga.

CIao Grazie

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [23 Giugno 2024, 11:24am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/157 "2024-06-23T11:24:24Z")

</div>

> [@Claudio3](#):
>
> avevo capito che verificava solo la prima riga.

No, quanto detto sopra si intende inserito nel ciclo di lettura della tabella.

Ciao

---

<div class="post-metadata">

**Author:** ![leopoldomonzani](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/leopoldomonzani/32/17957_2.png) [@leopoldomonzani](https://it.discourse.mcneel.com/u/leopoldomonzani)\
**Post date:** [23 Giugno 2024, 7:42pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/158 "2024-06-23T19:42:50Z")

</div>

Per inserire righe di commento io con GH farei così.  
Mi sembra sia facilmente traducibile in uno script.

 ![img1](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/b/7/b7dbdeba80d9bddcfbfb123cf03b9b96d6069c98.jpeg)

---

<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:** [23 Giugno 2024, 10:17pm UTC](https://it.discourse.mcneel.com/t/gli-script/6079/159 "2024-06-23T22:17:41Z")

</div>

Emilio, (probabile che ricordo male o spero di non confondermi con C#)  
ma anche in Py non c’era quella funzione/metodo che provava un input utilizzando **“?”**?

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [24 Giugno 2024, 8:07am UTC](https://it.discourse.mcneel.com/t/gli-script/6079/160 "2024-06-24T08:07:00Z")

</div>

Ciao Salvio

> [@0904](#):
>
> utilizzando **“?”**?

Mi sa che questa cosa non la ricordo, o non la conosco … 😊.  
Hai un esempio ?. 🙂

[Pagina precedente](https://it.discourse.mcneel.com/t/gli-script/6079.md?page=7)

[Pagina seguente](https://it.discourse.mcneel.com/t/gli-script/6079.md?page=9)
