# Script python in vbscript

**URL:** <https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614>\
**Category:** Scripting e Programmazione\
**Created:** [28 Agosto 2019, 10:55am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614 "2019-08-28T10:55:24Z")\
**Posts on this page:** 20\
**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:** [28 Agosto 2019, 10:55am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/1 "2019-08-28T10:55:24Z")

</div>

ho inserito poche righe di codice python in un tasto di rhino  
ovviamente preceduto da “! \_-RunPythonScript (”  
e qui tutto funziona

poi ho pensato di eseguire il comando all’interno di un VBScript  
usando Rhino.Command ma non riesco a trovare la sintassi giusta  
vuole import su una “new line” ho provato sia con vbcrlf che 13+10 ascii  
ma nulla da fare qualche suggerimento in merito?

---

<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:** [28 Agosto 2019, 7:55pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/2 "2019-08-28T19:55:50Z")

</div>

ma in un tasto di Rhino usando ! \_-RunPythonScript e poi indirizzo del file PY  
a questo punto ad ogni tasto deve corrispondere un unico file PY giusto?  
è diverso dal file RVB che viene caricato e poi ci si va a prelevare la sub.

---

<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:** [29 Agosto 2019, 6:05am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/3 "2019-08-29T06:05:07Z")

</div>

Si’, e’ diverso.  
Ma puoi fare la stessa cosa usando import e poi richiamando la funzione,  
ma tutto con un singolo RunPythonScript.  
Quindi per ogni pulsante, importi e poi richiami.

… Non so se e’ chiaro …

---

<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:** [29 Agosto 2019, 10:07am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/4 "2019-08-29T10:07:10Z")

</div>

ciao Emilio

la spiegazione è chiarissima  
ma la sintassi?

qui ormai non ci capisco più nulla avviare python con la sintassi vbscript un macello 🙂

ho cercato qualche esempio sul web e google mi ha risposto: “ma una cosa normale non la chiedi mai?”  
ahahahah

---

<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:** [29 Agosto 2019, 10:18am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/5 "2019-08-29T10:18:53Z")

</div>

Ciao Salvio

> [@0904](#):
>
> “ma una cosa normale non la chiedi mai?”

😄 😄 😄

No, dai, questa volta la domanda mi sembra normalissima.  
Parli del problema di inserire -RunPythonScript dentro Rhino.Command ?

Se il problema e’ andare a capo, col VBS usavo vbnewline

Oppure c’e’ qualcos’altro che non va ?

---

<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:** [29 Agosto 2019, 10:39am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/6 "2019-08-29T10:39:07Z")

</div>

> [@emilio](#):
>
> Ma puoi fare la stessa cosa usando import e poi richiamando la funzione,  
> ma tutto con un singolo RunPythonScript.  
> Quindi per ogni pulsante, importi e poi richiami.

potresti postare anche la sintassi? perché richiamo il file ma la singola funzione mi da errore

---

<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:** [29 Agosto 2019, 10:53am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/7 "2019-08-29T10:53:47Z")

</div>

La sintasi e’ normale sintassi Python inserita in -RunPythonScript

Ad esempio, questo e’ un pulsante che uso regolarmente :

```auto
-runpythonscript (
import c5_paint3
c5_paint3.paint( 0, 255, 255 )
)

```

Poi gli errori possono essere di diverso tipo.  
Che errore ti da’ ?

---

<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:** [29 Agosto 2019, 11:00am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/8 "2019-08-29T11:00:35Z")

</div>

io nel tasto ho messo questa sintassi:  
! \_-RunPythonScript (  
c:/file.py  
)

e funziona mi compare un msgbox OK

ora nello stesso file esiste una def  
non riesco ad avviare la def come faccio?

---

<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:** [29 Agosto 2019, 11:10am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/9 "2019-08-29T11:10:31Z")

</div>

Non ho mai provato a richiamare un file ‘in due modi’, cioe’ come script eseguibile e come modulo comprendente delle funzioni …  
Ma forse funziona:

Copia l’esempio che mi hai fatto postare.  
Che l’ho postato a fare allora ? 😄

Dopo quello che hai nel pulsante prova mettere:

```auto
import c:/file
file.<NOME_DELLA DEF( PARAMETRI )>

```

Mannaggia a te !  
Vuoi che ti scriva il testo e non mi dici nemmeno il nome della funzione ! 😄

Comunque ‘di solito’ o usi uno script eseguibile, e allora scrivi quello che hai scritto tu,  
oppure un modulo (che di per se’ non esegue nessuna istruzione, ma si limita a definire delle funzioni)  
e allora lo importi e poi richiami la funzione.

> [@0904](#):
>
> “ma una cosa normale non la chiedi mai?”

… Io direi … ma una cosa normale non la fai mai ?

Ti devi sempre ingarbugliare in complicazioni assurde ?

😄

---

<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:** [29 Agosto 2019, 11:16am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/10 "2019-08-29T11:16:05Z")

</div>

> [@emilio](#):
>
> Ti devi sempre ingarbugliare in complicazioni assurde ?

ahahaha a chi lo dici

avevo provato con import c:/file e poi file.test() ma non funziona

> [@emilio](#):
>
> Non ho mai provato a richiamare un file ‘in due modi’, cioe’ come script eseguibile e come modulo

e avviare solo la def come faccio?

(da quello che ho capito import non lo vuole)

---

<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:** [29 Agosto 2019, 12:32pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/11 "2019-08-29T12:32:24Z")

</div>

Aspetta … prima ho detto una cavolata.  
Non puoi eseguire sia un file che una funzione da un singolo RunPythonScript, la sintassi cambai.

Se vuoi fare le due cose, devi usare due RunPythonScript, prova a scriverli in sequenza:  
il primo senza parentesi per eseguire il file  
e il secondo con le parentesi per richiamare la funzione ( perche’ in questo caso si tratta di istruzioni Python, non del nome di un file )

> [@0904](#):
>
> e avviare solo la def come faccio?

Come dicevamo sopra:

```auto
-runpythonscript (
import c5_paint3
c5_paint3.paint( 0, 255, 255 )
)

```

Se ti da’ errore, posta file, comando nel pulsante ed errore … 😓 😄

---

<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:** [29 Agosto 2019, 12:53pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/12 "2019-08-29T12:53:48Z")

</div>

il contenuto del file:

```
import Rhino
import rhinoscriptsyntax
rhinoscriptsyntax.MessageBox("hello!")
def test():
    rhinoscriptsyntax.MessageBox("test!")

```

contenuto tasto:

\_-RunPythonScript c:\file.py

oppure

\_-RunPythonScript (  
c:\file.py  
)

mi funzionano entrambe le sintassi

mi rimane solo chiamare la funzione test()  
(non è necessario chiamare il file solo la def)  
era solo per vedere che la sintassi era giusta

---

<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:** [29 Agosto 2019, 1:27pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/13 "2019-08-29T13:27:53Z")

</div>

Importare con un percorso assoluto e’ un casino …  
Figurati se tu non lo facevi subito … 😄

Bisogna fare cosi’

```auto
import imp
ff = imp.load_source( 'module.name', 'c:\\file.py' )
ff.test()

```

Se invece (come tutti i cristiani 😉 ) metti il file dove RunPythonScript lo vede, dovrebbe bastare

```auto
import file.py
file.test()

```

---

<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:** [29 Agosto 2019, 1:42pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/14 "2019-08-29T13:42:10Z")

</div>

> [@emilio](#):
>
> import file.py  
> file.test()

avevo provato questa sintassi e avevo immaginato che bisognava inserire il file in una cartella specifica

cmq la prima soluzione l’ho provata e funziona benissimo grazie infinitamente

se non ci fossi, bisognerebbe inventarti. ahahahah grazie ancora e alla prossima 👍

---

<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:** [29 Agosto 2019, 2:52pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/15 "2019-08-29T14:52:10Z")

</div>

> [@emilio](#):
>
> No, dai, questa volta la domanda mi sembra normalissima.  
> Parli del problema di inserire -RunPythonScript dentro Rhino.Command ?
> 
> Se il problema e’ andare a capo, col VBS usavo vbnewline

ma quindi è una cosa che tu fai già da tempo?  
ma con il command in VBS ho realizzato sintassi che richiamavano anche variabili  
ma com’è che questa volta non riesco ad azzeccare la sintassi giusta per Python?

eseguire uno script per py, usando il Command in VBS con il comando \_-RunPythonScript  
in questo caso dovrei usare all’interno del comando la sintassi per VBS o per PY?

---

<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:** [29 Agosto 2019, 4:02pm UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/16 "2019-08-29T16:02:29Z")

</div>

OK forse questa volta ci sono riuscito in VBS:

```
Dim test
test = "ciao!"

Rhino.Command "_-RunPythonScript " _
	& "rhinoscriptsyntax.MessageBox('" & test & "')"
```

---

<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:** [30 Agosto 2019, 12:52am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/17 "2019-08-30T00:52:44Z")

</div>

mi sa che ho cantato vittoria troppo presto ☹

l’esempio postato si tratta di una riga, ma quando si tratta di uno script miltirighe è diversa la cosa 🤔

---

<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:** [30 Agosto 2019, 5:46am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/18 "2019-08-30T05:46:26Z")

</div>

> [@0904](#):
>
> ma quindi è una cosa che tu fai già da tempo?

Parlavo solo di inserire degli ‘a capo’ nelle stringhe VBS … Python non c’entra.

---

<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:** [30 Agosto 2019, 5:49am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/19 "2019-08-30T05:49:38Z")

</div>

> [@0904](#):
>
> è diversa la cosa

Perche’ ?  
Cosa succede ?  
Chiedo perche’ io (ovviamente 😉 ) non ho mai provato …  
… E adesso non ho tempo di far prove … 😒

---

<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:** [30 Agosto 2019, 8:23am UTC](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614/20 "2019-08-30T08:23:32Z")

</div>

Sono riuscito a fare una prova.  
Questo sembra che funzioni.  
Nel pulsante ho scritto:

```auto
-runscript (
rhino.command " -runpythonscript (" & _
vbnewline & "aa = 22" & _
vbnewline & "print aa" & _
vbnewline & "print aa * 2" & _
vbnewline & ")"
)

```

[Pagina seguente](https://it.discourse.mcneel.com/t/script-python-in-vbscript/2614.md?page=2)
