C# for Rhino

Mmmhh… Strano…

Al momento sto studiando il pattern MVC e dependency injection, quindi non ho fatto altre prove con Rhino. Spero di riprenderlo con qualche base di c# e poter lavorare al plugin GH.

using System;

//namespace programma
//{
  class Classe01
  {
	  public int somma(int a, int b)
    {
      return a * b;
    }
  }
  
  class Classe00
  {
    static void Main(string[] args)
    {
      Console.WriteLine(Convert.ToString(new Classe01().somma(3, 4)));
    }
  }
//}

codice funzionante, eseguito col compilatore Mono consigliato da Emilio. risultato 12 ovviamente :+1:

appena riesco provo anche a creare un plug-in per Rhino senza il namespace vedo cosa succede. . .

Evidentemente di default considera tutto il foglio in unico namespace, ma se hai più fogli sei obbligato.

using System;

namespace PROGRAMMA
{
  class Classe
  {
    static void Main(string[] args)
	  {
      Console.WriteLine("Main");

      Console.WriteLine(Convert.ToString(new PROGRAMMA01.Classe01().moltProd(3, 4)));
    }
  }
}

namespace PROGRAMMA01
{
  class Classe01
  {
	  public int moltProd(int a, int b)
    {
      return a * b;
    }
  }
}

che venga considerato un unico namespace di default non ne sono sicuro (ovviamente un mio pensiero)
credo che abbia senso quando si aggiungono più progetto diversi e quindi si ha la necessità
“obbligo” di indicare un nome così d’avere un indirizzo da poter essere richiamato.

Hmmm … se non sono nello stesso namespace, come fa Classe00 a usare Classe01 ? :thinking: :slight_smile:

ma credo che alla base ci sia sempre il funzionamento logico come VBS e Py

negli esempi postati e suggeritomi, non ricorso in nessun caso un argomento analogo a namespace di C# si va nell’editor e si inizia con una sub/funzione in VBS oppure con una def/classe in Python

proprio stamani ho riascoltato in un paragrafo del tutorial che viene spiegato questa cosa
facendo l’esempio, che se nel caso ci sia la necessità di abbinare due progetti diversi di due software house esiste un’alta probabilità che in entrambi i casi ci siano classi con lo stesso nome. quinid in questo caso si riesce a risolvere il problema indicando con precisione il nome dello namespace che a suo dire invece ogni casa madre "dovrebbe " dare un nome/codice specifico e quindi essere univoco.

quindi nel mio esempio non c’é la necessità di utilizzare il namespace
ps in genere al 99% essendo un non esperto quando pubblico un codice lo faccio dopo averlo provato

Non era questo il dubbio.
Era se, quando non indichiamo nessun namespace, il C# si comporta come se quanto e’ scritto nel file fosse tutto in un singolo namespace. Almeno da cosa ho capito io …

Sarei sorpreso se tra gli scopi del C# ci fosse quello di essere analogo a VBS e Python, ma tutto puo’ essere …

Va be’, era solo un mio dubbio, meglio lasciare il campo agli esperti … :slight_smile:

mah, io credo che il namespace sia soltanto un livello superiore alle classi in C#
ma che comunque, con qualsiasi linguaggio di programmazione si usi
per ogni file di editing dove si è scritto un codice,
il compilatore crei un livello iniziale/principale
dove eseguire le classi/def/funzioni ecc

che nel caso di C# ci sia questo namespace (non saprei se in altri linguaggi ci siano analoghi)
è soltanto un ulteriore livello per inglobale vari codici contenenti un determinato numero di classi

… non capisco la finalità di questo codice. Il namespace
è stato pensato per semplificare la scrittura del codice.
Decenni fa, quando non esisteva l’implementazione del
namespace, l’indentificativo di una variabile o di un metodo
doveva essere univoco per tutto il programma.
L’implementazione del namespace è stata molto importante
perché ha reso la codifica più semplice.

using System;

namespace A1
{
    class cc
    {
       public int calcolaSomma(int a, int b){
            return a+b;
        }
    }
}

namespace A2
{
    class cc
    {
        public int calcolaSomma(int a, int b){
            return a+b+1;
        }
    }
}


class HelloWorld {
  static void Main() {
    //A2.cc c = new A2.cc();
    A1.cc c = new A1.cc();
    Console.WriteLine(c.calcolaSomma(1,2));
  }
}


2 Mi Piace

Dove si va in Rhino7WIP per provare?

la devi scaricare.

se hai la licenza di Rhino7 puoi scaricare la WIP di Rhino8

ovviamente ho già Rhino8… ma dove si va dopo?

Ciao Luca.

Io ho visto solo questa discussione a proposito degli script in C# …

2 Mi Piace

infatti ho specificato

le mie considerazioni non volevano essere un’accezione sminuente

essendo che inizialmente se ne era parlato a cosa servisse e se era necessario
ho voluto soltanto condividere che per piccoli codice non cìé la necessità

ps debbo ancora provare creando un plug-in per Rhino ma credo che sia la stessa cosa.

Emilio è proprio vero, in generale parlo dell’essere umano
nello specifico forse chi programma maggiormente
alla fine non siamo mai soddisfatti
chiediamo sempre di più
:joy: :joy:

ps detto questo però soffermandomi sulla frase di Steve,
mi chiedo quel ben oltre a cosa si riferisce:
un limite di Rhino oppure,
per scelta della McNeel?

Grazie Emilio, riesci a capire insieme a me perché non vedo l’editor?

Mi spiace, Luca.
Non ho Rhino 7 / 8.

Avevo visto quel thread, ma non so altro … :confused:
Anche se, semplicemente sbirciando, mi sembra che tu non sia l’unico ad avere problemi.
Credo che la WIP … tenga fede al suo nome (giustamente). :wink: .

Se vuoi, prova a chiedere li’.
Per avere uno strumento affidabile forse bisognera’ aspettare il rilascio di Rhino 8. :slight_smile:

Grazie, si ho scritto li.

1 Mi Piace

Secondo me scelta di McNeel, ma potrebbero anche esserci motivi tecnici, non ho idea.
Inoltre potrebbero non avere molte richieste per lo scripting in C++ … non so. :confused:

confermo :+1:

magari un po tutti e tre, anche se forse, le richieste nella programmazione in C++ non credo siano poche.

ps forse mi sbaglio, ma da quel poco che sto leggendo ultimamente in rete, ho l’impressione che il linguaccio C++ venga considerato un bel po più ostico del C# (è davvero così complicato il C++?)