Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
isobitis

Problema Con Una Stringa

Recommended Posts

Ciao,

ho una domanda stupida sui Rhinoscripts.

sto usando questa stringa per eseguire un cerchio (lo so che non e' il massimo usare rhino.command, ma lo sto facendo per imparare :) )

dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)

dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)

strPoint1 = " w" & dblMajorRadius & ",0,0"

strPoint2 = " w" & (dblMajorRadius + dblMinorRadius) & ",0,0"

Rhino.Command "_Circle" & strPoint1 & strPoint2

se la uso cosi' non ho problemi, ma se sostituisco dblMinorRadius a strPoint2 non funziona, non immette nessun valore. Perche'?

grazie

Share this post


Link to post
Share on other sites
dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)

dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)

strPoint1 = " w" & dblMajorRadius & ",0,0"

strPoint2 = " w" & (dblMajorRadius + dblMinorRadius) & ",0,0"

Rhino.Command "_Circle" & strPoint1 & strPoint2

...se sostituisco dblMinorRadius a strPoint2 non funziona, non immette nessun valore. Perche'?

grazie

Ciao

non mi sembra una domanda stupida

dblMajor e una stringa (scusa per gli accenti ma sono su un macbookpro su win e il layout della key e un disastro) mentre per il valore (in questo caso) 2 del comando _Circle ti viene richiesto un array. Per questo motivo una delle possibili soluzioni nel tuo caso potrebbe essere questa

dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)

dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)

strPoint1 = "w" & dblMajorRadius & ",0,0"

dblMinorRadius = " w" & (dblMajorRadius+dblMinorRadius) & ",0,0"

Rhino.Command "_Circle" & strPoint1 & dblMinorRadius

fammi sapere se ho centrato la domanda

:)

Share this post


Link to post
Share on other sites
dblMajor e una stringa (scusa per gli accenti ma sono su un macbookpro su win e il layout della key e un disastro) mentre per il valore (in questo caso) 2 del comando _Circle ti viene richiesto un array. Per questo motivo una delle possibili soluzioni nel tuo caso potrebbe essere questa

dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)

dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)

strPoint1 = "w" & dblMajorRadius & ",0,0"

dblMinorRadius = " w" & (dblMajorRadius+dblMinorRadius) & ",0,0"

Rhino.Command "_Circle" & strPoint1 & dblMinorRadius

Mmmh... mi sembra di vedere un po' di confusione e non vorrei che isobitis, visto che sta imparando, capisse cose sbagliate... Non si parla del comando Rhino.AddCircle ma di RhinoCommand che esegue l'istruzione "_Circle"

Rhino.Command accetta come parametro una stringa e eventualmente un boolean per l'echo dei comandi, quindi l'errore che da' quando isobitis cerca di dare dblMinorRadius è per il fatto che dblMinorRadius è una variabile double, ovvero contiene numeri reali (infatti il valore viene definito da GetReal, che accetta in input solo numeri reali).

In questa istruzione:

dblMinorRadius = " w" & (dblMajorRadius+dblMinorRadius) & ",0,0"
mrFlowers mette alla variabile un valore stringa. E' consentito in Rhinoscript, ma se alla lunga e in script più complessi metti alle variabili valori diversi dalle "etichette" che stabilisci (dbl in questo caso) rischi di incasinarti e ti assicuro che quando le righe di codice aumentano l'ordine e la pulizia dello script sono essenziali. Una possibile soluzione è usare CStr (dblMajorRadius): CStr converte un valore in stringa (vedi pag. 21 di Rhinoscript 101). Quindi, nel caso specifico:
	Dim dblMajorRadius, dblMinorRadius


	dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)

	dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)


	Rhino.Command "_Circle" & " w" & CStr (dblMajorRadius) & ",0,0" & " w" & CStr (dblMajorRadius+dblMinorRadius) & ",0,0"

Occhio a non fare confusione tra tipi di variabile e istruzioni! Consiglio (se già non lo state facendo) di usare Monkey, contiene i links diretti all'help di Rhinoscript dove i comandi sono descritti uno per uno abbastanza bene.


Edited by ALe2x72

Share this post


Link to post
Share on other sites

Hai ragione ale2x72, grazie della precisazione, sento di poter dire una cosa a mia discolpa, non ho cercato di fare confusione ma solo di rispondere in modo meno distruttivo possibile sul suo script, il cstr avrebbe comportato uno stravolgimento maggiore dello script, di fatti se fossi stato io a fare la domanda ed avessi ricevuto questa riga di risposta

Rhino.Command "_Circle" & " w" & CStr (dblMajorRadius) & ",0,0" & " w" & CStr (dblMajorRadius+dblMinorRadius) & ",0,0"

mi sarei sparato un colpo in testa perche gia se faccio la domanda vuol dire che non ho capito bene come funziona quel determinato comando

mi permetto inoltre di dirti che sei tu ora a far fare un po di confusione ad isobits, anche se sei un ingegnere non prenderla con cattiveria ma come commento costruttivo, e vero quasi tutto quello che dici meno il cstr che in questo caso non serve assolutamente a nulla...prova ad usare

	Dim dblMajorRadius, dblMinorRadius

dblMajorRadius = Rhino.GetReal("Major radius", 10.0, 1.0, 1000.0)
dblMinorRadius = Rhino.GetReal("Minor radius", 2.0, 0.1, dblMajorRadius)

Rhino.Command "_Circle" & " w" & dblMajorRadius & ",0,0" & " w" & dblMajorRadius+dblMinorRadius & ",0,0"[/codebox]

che e lo stesso tuo senza gli inutili cstr (inutili in questo caso intendo ^_^ )

Anche io uso monkey ed e davvero una figata, ale, tu che ne sai ad occhio, ho letto una discussione sui listener in rhino, tu ne hai sentito parlare? sai se esiste?

vi saluto raghi

Alla prossima!

grazie dei consigli

Share this post


Link to post
Share on other sites

@mrflowers: no, non so nulla circa l'esistenza di un command listener in Rhino, prova a chiedere sul newsgroup di Rhino, penso che qualcuno ti possa dare risposte più precise. Hai provato Rhino.CommandHistory ()? Puoi anche ripulire la commandhistory all'inizio dello script con Rhino.ClearCommandHistory ()

Riguardo allo script di isobitis, anche io sarei rimasto perplesso se mi avessero sparato come risposta solo la riga di script... infatti non è proprio che l'ho buttata lì nuda e cruda, se rileggi il mio post ci sono spiegazioni piuttosto dettagliate e riferimenti su quello che ho fatto e perchè. Tra l'altro, a riprova del fatto che VBscript e Rhinoscript "perdonano" tantissimo in termini di filosofia di programming e sintassi, non pensavo funzionasse senza i Cstr (non uso Rhino.Command per creare geometrie e mi sono fatto ingannare dall'help dice che accetta stringhe come input, infatti poi dice commands with ANY argument e quindi funziona anche con i real), invece funziona eccome. Se passi a linguaggi un po' più formali le cose cambiano.

Un piccolo consiglio: certo, se uno è smaliziato in termini di programmazione ed esperienza può maneggiare il codice a suo piacimento, però per chi sta imparando una certa pulizia e correttezza sintattica (anche se è ridondante) credo sia più importante, perchè oltre a dei comandi si assimilano dei concetti. Chiaramente de gustibus...

Tranquillo che non me la prendo... sono ingegnere, ma non proprio nel senso "classico" del termine. E comunque... Monkey rulez!!! B)


Edited by ALe2x72

Share this post


Link to post
Share on other sites

cavolo, tutto questo da una schifezza di script che stavo leggendo :)

un parere: secondo voi posso imparare qualcosa cominciando a leggere il manuale rhinoscript 101 o è meglio seguire altre strade, per esempio partire dal VisualBasic?

Share this post


Link to post
Share on other sites

Rhinoscript 101 a mio parere è fatto in modo molto semplice e discorsivo (merito di David Rutten); si può tranquillamente partire da lì.

Rhinoscript è VisualBasic con l'aggiunta dei comandi di Rhino per creare e gestire le geometrie, se vuoi partire dal VB non è certo un male (ma RS 101 è già sufficientemente completo per partire direi...). ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x

Ti piacerebbe rimanere sempre aggiornato sulle ultime novità nel campo della computer grafica?

Iscrivendoti alla Newsletter riceverai subito una mail con le indicazioni per scaricare gratuitamente:

  1. Le immagini HDRI presenti su HDRI pro
  2. Una sequenza di 300 immagini HDRI generata da Luca Deriu tramite il programma Real HDR