hai ragione non’è C#
per plug-in veri e propri non’è che mi interessa, mi basta un file dove scrivo il codice
ed un modo che mi faccia eseguire quel codice, se debbo creare un plug-in è secondario
hai ragione non’è C#
per plug-in veri e propri non’è che mi interessa, mi basta un file dove scrivo il codice
ed un modo che mi faccia eseguire quel codice, se debbo creare un plug-in è secondario
però se vado in questa pagina dove si parla di sviluppo:
cliccando su RhinoCommon o su C/C++ mi riporta sempre alla stessa pagina:
e se mi interessa creare una retta comunque l’esempio di codice è questo:
ormai non ci capisco più nulla. . . che debbo fare
Ciao Salvio
sono contento di aver confermato ciò di cui eri già quasi sicuro,
Non ho capito bene: tu crei una classe che dovrebbe sostituire
1000 variabili pubbliche che servono per gestire 2000 righe di
codice?
Supponiamo che esegui una sub del tuo codice: cosa ti restituisce
questa sub per richiede delle variabili pubbliche? Serve per
condividere dati con le altre sub? E cos’è il result della classe?
1 - Installing Tools
2 - Your First Plugin
Segui scrupolosamente la guida.
vabbè era per dire 1000 variabili. . . nel senso la mia idea di poter usare le classi “per quello che ho capito di poter sfruttare” tipo: (sostituire le variabili pubbliche con le classi) scusare il linguaggio poco tecnico
esempio:
in questo file RVB ho una Funzione che viene richiamata in più Sub
per poter prendermi il valore del risultato della Funzione ho dovuto dichiarare alcune Variabili Pubbliche
ora se volessi strutturare/ottimizzare tutto il codice di questo file in questo modo
dovrei dichiarare una miriade di Variabili pubbliche per poter interagire tra le varie Sub/Function
(ora sempre se quello che sto per dire non sia da buttare)
non ricordo bene se ci voglia una classe oppure basta anche una def (in questo caso parlo di Py)
ma alla fine del codice con la funzione “return” mi prendo il risultato della def/classe ripeto
se così fosse invece di n Sub per poi crearci le variabili pubbliche creo direttamente
una def o classe in modo che richiamandole mi torna il risultato di return.
ps spero di essermi spiegato
Ah, OK, dev’essere perche’ gli esempi per i vari linguaggi sono pubblicati nella stessa pagina. Bene.
Temo che l’unico modo per eseguire istruzioni C# su Rhino 7 (senza usare GH) siano i plug-in.
Credo che Sergio sapra’ darti le dritte necessarie, in caso di difficolta’ …
io sto ri-provando ad re-installarlo faccio gli scongiuri. . . anche perché non mi piace arrendermi
poi chissà tra qualche tempo scopro le cose che non potevo fare in VBS/Py non le posso fare
nemmeno in C/C++/C# ahahahah a quel punto
scusate in questa guida vedo che il codice è scritto in C# ma in conclusione si tratta di RhinoCommand?
Rimane il fatto che per risponderti bisogna sempre brancolare alla cieca …
Invece delle variabili globali utilizza i metodi Get/SetDocumentData.
Esempio molto banale:
Sub SetMyColor()
Dim MyColor
MyColor = Rhino.GetColor(lngColor)
If not IsNull(lMyColor) Then
Rhino.SetDocumentData “MyApp”, “MyColor”, MyColor
End If
End Sub
Sub MyDraw()
Dim MyColor
MyColor = Rhino.GetDocumentData(“MyApp”, “MyColor”)
if isNull(MyColor) then
'gestire l’errore che il colore non è settato
end if
…
Dim Obj
Obj=rhino.AddLine(p1,p2)
Rhino.ObjectColor Obj, MyColor
…
End Sub
Cos’e’ RhinoCommand ?
Dove lo hai letto ?
la fretta la fretta RhinoCommon sorry
ottima. . . come dire: escamotage
Sergio io ho seguito le indicazioni del link che hai postato, adesso non mi lasciare solo però. . .
che se sto cercando di iniziare questa nuova sfida e per colmare le lacune che ci sono con VBS/Py
https://developer.rhino3d.com/guides/rhinoscript/primer-101/4-operators-and-functions/
So what if we want our function to manipulate several variables? How do we get around the ‘one return value only’ limitation? There are essentially four solutions to this, two of which are far too difficult for you at this moment and one of which is just stupid… try to guess which is which:
Use global variables Declare arguments by reference Return an array Return a class instance
We’ll focus on number two for the time being. (#1 was the stupid option in case you were wondering.)
mi sa che la scelta 1 è quella che senza saperlo avevo scelto
Since the arguments are passed in by value, intA and intB are left intact when AnotherBogusFunction is called. Although the function received the values 4 and 7 respectively, it does not know where they came from and thus when it increments them on lines 11 and 12, the operation only applies to the local variable copies intNumber1 and intNumber2.
Passing arguments by reference is quite a tricky thing to wrap your head around, so don’t feel bad if you don’t get it at first. You can rest assured that in almost all cases we’ll be using the ByVal approach which means our data is simply copied out of harms way.
There is one other reason to use ByRef arguments which has to do with optimization. Whenever you pass an argument to a function it will be copied in the computer memory. With small stuff like integers, vectors and shorts strings this doesn’t matter, but when you start copying huge arrays back and forth you’re wasting memory and processor cycles. If it turns out your script is running slowly you could consider passing arguments by reference in order to avoid casual copying. You have to be careful not to change them, or very unpredictable things will start happening.
se non erro si tratta dell’argomento di cui parlasti con Emilio: ByRef e ByVal
alla fine quello che intendevo fare con le classi in VBS si fa direttamente con le Funzioni
mentre io invece all’epoca per far funzionare la Funzione dovetti dichiarare le variabili pubbliche
invece leggendo alcuni passi che spiegavano le Funzioni ho trovato proprio quello che m interessava:
Option Explicit
Function somma()
somma = 3 * 3
End Function
Call Main()
Sub Main()
Rhino.Print somma()
End Sub
… no no … sono stupefatto. Del resto anche il titolo,
Advanced function syntax, è molto appropriato.
Hahahahahaha …
Confessa che non lo sapevi, Sergio … le funzioni sono una cosa MOOOOOLTO advanced.
Si’, certo.
Quella pagina fa parte della documentazione relativa a RhinoCommon.
E comunque per comunicare con Rhino tramite C# c’e’ poco da sbagliare.
Puoi usare solo RhinoCommon.
inizio col dire che ho aperto un 3d proprio su C# in Rhino: