From python to vbs

un saluto a tutti, e scusate la domanda (buttata lì)

ho un solo codice fatto in Py dove importo il modulo Rhino
essendo che fin’ora ho sempre scritto in VBS mica
c’è modo di far eseguire il codice Py tramite VBS?

Ciao Salvio

… Indovina … non capisco cosa chiedi … :smile:

Vuoi mischiare Python e VBS in un singolo script ?

E devi passare dei valori da uno all’altro ?

Oppure cosa ? :slight_smile:

:rofl::rofl::rofl::rofl: troppo forte

mi sa che chi legge le nostre conversazioni ci vedono come la nuova coppia di Totò e Peppino ahahahah

ho scritto vari codici in VBS messo tutto in un file RVB
mi sono creato una barra con pulsanti personalizzati
cliccando il pulsante voluto parte il codice richiesto

ora essendo che mi ritrovo con questo unico codice di Py
mi viene l’orticaria a pensare di dover caricare un’altro file
mi chiedevo se fosse possibile farlo tramite il file RVB?

forse se dico che è una cosa non possibile al 99,99% è pure poco giusto? ahahahah
sottolineo che dalla prima riga ho scritto: la domanda la butto lì, ma la dovevo fare lo stesso :wink:

Ciao Salvio,
nei pulsanti della barra puoi salvare direttamente il codice da eseguire (comandi singoli, macro, codice VBS oppure Py).

Per VbScript si scrive

-_Runscript (
Codice…
)

mentre per python metti

-_RunPythonScript (
Codice…
)

Ho fatto una prova e funziona senza problemi.
Io ho il vizio di salvare gli script all’interno dei file .rvb (editandoli con l’EditScript di Rhino) e poi di mettere il codice direttamente nel pulsante così da poter spostare le collezioni di barre da un pc all’altro senza dover star li a spostare anche tutti i file rvb (è un’arma a doppio taglio, da una parte semplifica il lavoro mentre dall’altra lo complica nel caso debba fare delle modifiche al codice…)

1 Mi Piace

ciao Lucio
si infatti mi era tornato in mente questa cosa con vbs è anch’io stavo provando di fare la stesso con il codice python ma per adesso riesco a farlo funzionare, infatti stavo cercando in rete se si poteva fare con python ma se mi dici che hai già provato e funziona… la sintassi da te postata è la stessa io sto provando con una semplice stringa :

_RunPythonScript (
print("ciao")
)

mi esce questa scritta ( ResetEngine )

poi se il codice è molto lungo quando si modifica è facile cancellare qualche riga e li è un casino

Ricordati il “-” davanti al comando per bypassare le finestre di dialogo del comando (il meno fa eseguire il comando solo da “riga di comando” con le opzioni scriptabili):

! -_RunPythonScript (

import rhinoscriptsyntax as rs

rs.MessageBox (“Hello World”)

)

Copia questo in un pulsante e dimmi se funziona.

è un’opzione del comando.

Le modifiche le faccio sempre nell’EditScript di Rhino oppure in un editor esterno.
Alla fine copio e incollo il codice nel pulsante.
Le modifiche apportate nel pulsante sono di poco conto (tipo se decido di cambiare il costo del materiale al Kg, e lo voglio fare velocemente, edito il parametro di default nel pulsante; contrariamente, se devo risolvere un bug, metto il codice nell’editor così da lavorare in sicurezza e fare subito il debug).
Lo sbattimento sta nel ricordarsi di aggiornare tutti i pulsanti che riportano lo stesso tipo di codice in tutte le macchine… ma in quel caso mi torna utile la data di edit dello script nell’intestazione che mi fa capire se il codice nel pulsante è l’ultimo disponibile o no… tra un pò metterò anche il numero di revisione… :thinking:

:slight_smile: :+1:

funziona funziona, mi fregava “import rhinoscriptsyntax” anche per il print deve essere importato il modulo

si quello che ho postato era l’ultima prova fatta dove avevo tolto sia il meno che l’esclamativo

ho inserito a tutti i pulsanti anche il punto esclamativo ma se ho letto bene non è obbligatorio sempre?

Il punto esclamativo serve per terminare eventuali comandi attivi; lo metti se, prima di lanciare lo script o il comando, vuoi essere sicuro che non ci sia nulla di attivo che potrebbe incasinare tutto.
In altri casi, quando il comando deve funzionare all’interno di un altro comando attivo, va tolto (esempio se stai richiamando un comando tipo Osnap o un SelChain, non vuoi che ti termini il comando che stai facendo - Tipo, faccio un move object e voglio selezionare il punto Between, il pulsante che clicchi non deve avere il punto esclamativo altrimenti ti fa uscire dal Move Object).
Per rinfrescarti il resto delle opzioni:
“-” davanti ad un comando esegue quest’ultimo da “riga di comando” (quindi tutte le opzioni richiamabili da tastiera o scriptabili)
“_” davanti ad un comando bypassa la localizzazione attiva ed esegue il comando originale (inglese - molto utile per passare script o macro a utenti che potrebbero usare Rhino in lingue differenti dalla tua).
Spero di essere stato esauriente.
:stuck_out_tongue_winking_eye:

ok grazie Lucio
si gli ultimi due mi erano chiari

adesso forse mi è chiaro l’esclamativo: quando si deve interagire con altri comandi non va messo :+1:

scusa Lucio ma in questo caso di esclamativo basta uno?

!-NoEco
-_RunPythonScript (

Si, il primo esclamativo termina eventuali procedure attive e poi passa alle successive istruzioni.

Ma non dovresti aggiungere una h al primo comando?

se ci fai caso il primo è in italiano quindi va bene senza H

mmmm ma quindi come dici potrei inserire vari blocchi di codici ed ad ogni inizio con esclamativo fa in modo che il blocco precedente viene chiuso per poi continuare ho capito bene?

Sapevo che saresti stato tentato da una roba del genere…
Il punto esclamativo funziona per i comandi fuori dagli script e richiamarlo più volte non credo abbia molto senso… la prima chiamata é utile perché non puoi sapere in che situazione l’utente richiama il comando che hai fatto.
Una volta che il programma é partito, sei tu che decidi cosa si può fare e cosa no.

le idee nella testa viaggiano troppo velocemente non ci si riesce a stargli dietro :slight_smile:

però vedi facendo delle prove ho scoperto cose interessanti da tenere presente

  1. il punto esclamativo varie volte, dopo il primo comando gli altri non vengono eseguiti
  2. come detto prima se non si inserisce “import rhinoscriptsyntax” il print non funziona
  3. e cosa più particolare inserendo un solo punto esclamativo ma richiamando vari print
    con altrettanti “-_RunPythonScript” viene eseguito solo l’ultimo print gli altri non si vedono
    mentre per i msgbox come esempio da te postato ripetendoli più volte funzionano tutti

ps ho specificato “non si vedono” perchè “credo” che rhino li interpreta come testo da non visualizzato
essendo che avevo messo “NoEco” infatti se lo tolgo vengono stampate sia il codice che il risultato

grazie delle spiegazioni nel caso ho altri dubbi in merito al punto esclamativo ti ridisturbo :wink: