Passaggio parametri script Python

Di solito faccio una cosa simile:

-runpythonscript (
import gv
gv.prova(  'D:\\Rhino\\bas4x\\ins.py'  )
)

dove il file gv.py e’ cosi’:

def prova( path )
  f = open( path, 'r' )
  l = f.readline()
  print l

E questa non funziona … gia’.

Per esempio questa invece funziona:

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

Non riesco a capire cosa vuole l’interprete dei comandi Rhino …

Lui niente.
Sono io che sono un deficiente garantito …
Mancava il due-punti nel file …

def prova( path ):
  f = open( path, 'r' )
  l = f.readline()
  print l

Cosi’ funziona. :slight_smile:

In soldoni:
Nel file .py scrivi una funzione che richieda un parametro
Nel pulsante importi il file e poi chiami la funzione passandogli il parametro.

così funziona se la chiamo da python diretta senza rhino
come faccio a chiamare una funzione con parametro da Rhino.Command ?
ho provqato a ravanare in tutti i modi ma non va

Io ho provato da pulsante, come dicevamo ieri.

Nel pulsante scrivo:

-runpythonscript (
import gv
gv.prova(  'D:\\Rhino\\bas4x\\ins.py'  )
)

e il file Python e’ questo:

def prova( path ):
  f = open( path, 'r' )
  l = f.readline()
  print l

Ovviamente questa e’ solo la prova che ho fatto io … ma mostra come passare il path

Scusa, come vuoi usare Rhino.Command ?
( Rhino.Command e’ un metodo Rhino in VBS )

EDIT:

In effetti come spiegazione si puo’ fare meglio … :blush:

Dunque, agli script Python di Rhino non puoi passare dei parametri
come faresti da una shell lanciando un file Python

Devi usare -RunPythonScript con la coppia di parentesi e dentro delle istruzioni Python

In queste istruzioni scrivi un import per importare il tuo script (che conterra’ una funzione da chiamare)
poi scrivi la chiamata di funzione … e finalmente chiamando la funzione puoi passare dei parametri.

… Si’ … e’ un modo un po’ contorto di procedere, ma dovrebbe funzionare. :slight_smile:

e infatti funziona, ci ho perso la mattinata perché faceva cose veramente inspiegabili ma poi ho trovato l’inghippo,questa la sintassi del comando corretta:

Cmd = "-RunPythonScript" & Chr(13) & Chr(10)
Cmd = Cmd & "(import MioScript" & Chr(13) & Chr(10)
Cmd = Cmd & "MioScript.MiaFunzione('"
Cmd = Cmd & Nome da leggere con le doppie barre
Cmd = Cmd & "'))"
RhinoScript.Command CStr(Cmd), 0

importantissimi quei caratteri Return/Linefeed senza i quali non funziona, in pratica il comando deve essere su più righe, ora va che è una meraviglia!

Ah si’ … l’importante e’ che la parentesi che segue -RunPythonScript sia staccata dal comando.
… Non lo avevo specificato … sorry.
Cosi’ facendo puoi anche scrivere il tutto senza andare a capo, basta separare le due istruzioni Python con il punto-e-virgola.

Mi sembra di capire che esegui il comando da un programma in Basic esterno a Rhino. :slight_smile:

Evviva ! :grinning:

Si, capiti gli inghippi ora funziona bene.

fa parte di RhinoPLM o KTechno il mio software di PLM (Product Lifecycle Management) lo vedi qui: www.ktechno.it è un sistema produttivo che sto costruendo che sarà collegato anche a stampanti 3D per pilotare il flusso produttivo in maniera semi automatica verso le macchine che provvede alla gestione del ciclo produttivo (materiali, disegni Cad, conversioni se serve, cicli di lavoro, personalizzazioni ecc.) e lancia la lavorazione sulla macchina opportuna in base alla tecnologia del materiale (stampa3D, fresa, tornio ecc…) controllando che la macchina abbia la configurazione corretta.
Sarà il sistema di gestione della mia prossima startup di Fabbrica Digitale…:slight_smile: