Passaggio parametri script Python

Sto scrivendo uno script in Python per leggere e posizionare dei punti,
la semplice istruzione: file = open(f"""{Risposta}""",“r”) dove risposta dovrebbe essere il path del file che deve essere letto tipo D:\TEMP\Punti.txt se passato da parametri da errore Token se scritto direttamente nello script allora funziona.
dove sta l’inghippo? ho provato tutta le opzioni like C , \ niente da fare, non è che c’è qualche limite per gli script python in Rhino?

Ciao GV

Se parli di script Rhino, l’istruzione che scrivi mi sembra in sintassi Python 3.6
Rhino usa IronPython, che dovrebbe essere alla versione 2.7

In pratica, negli script per Rhino non abbiamo la possibilita’ in interpolare le variabili nelle stringhe,
bisogna usare altri metodi.

Riesci a farmi un esempio pratico?

Se “risposta” contiene gia’ una stringa, puoi usarla direttamente :

file = open( risposta, "r" )

… oppure hai gia’ provato e non funziona ?
Se e’ cosi’, che errore ti da’ ?

Mi da un errore di Token errato come se ci fosse qualche carattere sbagliato ad esempio quando in un path usi un backslash invece che due ecc.
ho provato in modi diversi senza esito
risposta contiene il nome di un file con il path ad esempio “C:\temp\risposta.txt”

Hai raddoppiato i backslash ?

"C:\\temp\\risposta.txt"

Si secondo le mie antiche reminescenze di C ma niente
può essere un limite di IronPython? sarebbe un peccato

Strano, non ho mai avuto problemi a usare i file negli script … almeno che io ricordi …

Tanto per capire la situazione …
Stai usando uno script da Rhino ( o da GH ) ?
Lo provi da file o dall’editor di EditPythonScript ?
Lo esegui da EditPythonScript o da un pulsante ?
Se da pulsante, hai copiato lo script nel pulsante o richiami il file ?

Riavviato Rhino ?
A volte … si incasina da solo …

La variabile ‘risposta’ come la carichi ?
Hai provato a stamparla ? Non vedi niente di strano ?

( Scusa le domande banali, ma non so che pesci prendere … :wink: )

-Script Rhino che lancio da Rhinoscript con i comando _-RunPythonScript
-Direttamente da file
-Si rhino viene aperto quando serve e quindi è come se fosse riavviato
-La variabile è una normale variabile che contiene un path, se al posto di risposta lo scrivo direttamente funziona

Da sempre un errore di Token errato ma non capisco perchè

Mah … a volte ci sono errori di encoding …

Se e’ quello ,basta iniziare lo script con:

#-*- encoding: UTF-8 -*-

Se no si potrebbe provare su Google con l’esatto messaggio di errore piu’ ironpython …

Altrimenti serve un esperto … :confused:

Provo con l’encoding anche se penso che a volte serva un esorcista…:slight_smile:

Aprofitto per farti un’altra domanda, stai usando Rhino6?
sai per caso cosa cambia con la COM interface?
l’eseguibile si chiamerà sempre Rhino4.exe?

Mi spiace, per queste cose serve gente piu’ capace (ad esempio Sergio Alessi), io non so niente di COM.
Mi fermo agli script puri e semplici … :slight_smile:

( Sono sempre su Rhino 5 )

Gia’ …
Ma il path nella stringa arriva da Windows ? O altro ?

Se gli dici

print list( risposta )

dovrebbe scriverti la lista dei caratteri … niente di strano ?

Colto dalla disperazione per non capire il problema, ho risolto evitando di postare il path intero (sembra che il problema siano i caratteri : e \ ) e mettendo i file nelle opportune directory, così funziona.

Mah …:confused: … tanto per vedere cosa succede qui ho fatto una prova adesso:
con un pulsante con scritto

-runpythonscript gv.py

che richiama un file con:

path = 'D:\\Rhino\\bas4x\\ins.py'
f = open( path, 'r' )
l = f.readline()
print l

funziona.

… anche se suppongo che tu il percorso non ce l’abbia scritto all’interno dello script,
ma lo ottenga per altra via … se no sarebbe inutile usare una variabile … :wink:

E non ho capito quando dici:

cosa intendi con "lancio da Rhinoscript"
Hai uno script VBS che lancia uno script Python ?

Va beh … e’ solo curiosita’ …

Grazie per l’aggiornamento

Ah no no, mi sono espresso male :), uso la funzione command per innescare RunPythonScript ed eseguire lo script passato e si, la variabile serve per passare path diversi allo stesso script (ovviamente)

Infatti con il path diretto funziona, per questo mi sorge un dubbio: non è che non si possono passare parametri richiamando lo script come “MioScript.py parametro” dove parametro è un nome file con il path completo?

Precisamente, come fai l’operazione di passare il parametro ?
Cosa scrivi, dove ?

EDIT:

Lascia perdere … non ci sto riuscendo nemmeno io …
( Ma su altri pulsanti funziona … non ho ancora capito perche’ )

_-RunPythonScript " & ChrW$(34) & NomeScript & " " & Parametro & ChrW$(34)

sarebbe troppo facile?