Introduzione a Ruby per Sketchup

Ruby è il linguaggio di scripting di Sketchup. Se hai già un buon livello di conoscenza di Ruby, l’articolo non fa per te. Se invece non lo conosci ma ti piace lavorare con Sketchup, allora potresti incuriosirti.

Introduzione a Ruby per Sketchup
Introduzione a Ruby per Sketchup

Cos’è Ruby?

La definizione migliore è quella che leggo sul sito ruby-lang.org «Un linguaggio open-source dinamico che dà particolare rilevanza alla semplicità e alla produttività, dotato di una sintassi elegante, naturale da leggere e facile da scrivere.»

Rugby “nasce” nel 1995 dalla mente del giapponese Yukihiro “Matz” Matsumoto. Ma è a partire dal 2006, con la traduzione in inglese della documentazione che viene universalmente accettato. Nascono da quel momento gruppi attivi in tutto il mondo.

Ho trovato interessante l’articolo sul blog di Gianluca Tramontana: “PHP vs Ruby vs Python. Quale linguaggio di programmazione scegliere?“. A proposito di Ruby l’autore ne elenca i vantaggi. Mi sono permesso di mettere in grassetto le caratteristiche che ritengo fondamentali:

  • Open-Source
  • Sintassi flessibile
  • Funziona su piattaforme multiple
  • Può essere incorporato nel linguaggio Hypertext Markup Language (HTML)
  • E’ un linguaggio ad alto livello (VHLL)
  • Offre l’incapsulamento dei metodi di dati all’interno degli oggetti
  • Offre una programmazione orientata agli oggetti pura
  • Tecniche molto avanzate di manipolazione e gestione del testo e delle stringhe
  • Può essere facilmente collegato a DB2, MySQL, Oracle e Sybase
  • Programmi scritti in Ruby sono scalabili e facilmente mantenibili
  • Ha una sintassi pulita e semplice che consente al nuovo sviluppatore per imparare ruby molto rapidamente e facilmente
  • Capacità di scrivere applicazioni multi-threaded con una semplice API
  • Offre una classe array avanzata
  • In grado di scrivere librerie esterne in Ruby o C
  • Permette di riservare delle “parole” da utilizzare come identificatore affinché il parser non percepisca un’ambiguità
  • Caratteristiche avanzate di sicurezza
  • Presenza di un debugger

Passa all’azione così non ti annoi troppo. La prima cosa che devi assolutamente leggere per tuffarti nella mischia è sul sito ruby-lang.org alla prima pagina di ruby in venti minuti.

Perché usare il linguaggio di scripting di SketchUp

Lo stesso motivo per cui fai le macro in Excel. Se lo hai fatto, la risposta ce l’hai già. Automatizzare fa parte del DNA di una persona che si chiede costantemente come migliorare il proprio lavoro.

Attualmente, il testo di riferimento – l’unico per la precisione – rimane, quello di Mattew ScarpinoAutomatic Sketchup, Creating 3D model in Ruby – da cui ho tradotto la parte più sostanziosa di questo paragrafo a beneficio di chi fatica con l’inglese.

Onestamente, non credo che sia una buona idea iniziare con quel testo. Anzi, lo sconsiglio: dovrebbe essere l’ultimo perché prima di scrivere codice Ruby all’interno di Sketchup si deve capire cosa è Ruby e come “vive” questo tipo di linguaggio.

Faccio l’ovvia analogia con una lingua parlata: come fai a leggere un testo in tedesco se prima non studi almeno i rudimenti della sua grammatica?

L’interfaccia utente di SketchUp è uno dei suoi principali punti di forza. Ci sono molte ragioni per cui imparare gli script di SketchUp è da considerarsi una buona cosa. Il seguente elenco, senza ordine d’importanza, presenta alcuni dei principali vantaggi dello scripting.

Gestione complessa della progettazione

I componenti e i gruppi di SketchUp consentono di creare gerarchie di elementi di progettazione. Un progetto su larga scala, come un centro commerciale, può comprendere migliaia di componenti, sotto-componenti e persino sotto-sotto-sotto-componenti. È molto più semplice gestire queste gerarchie utilizzando gli script rispetto alla finestra di progettazione. Gli script facilitano inoltre la revisione e l’analisi del progetto da parte di altri sviluppatori.

Plugin

Un plug-in SketchUp – abbiamo parlato spesso di Profile Builder 3 – aggiunge funzionalità all’intera applicazione, come nuove voci di menu, nuovi strumenti nella barra degli strumenti, nuove finestre di dialogo e molte altre possibilità. Come vedremo, un plug-in è solo uno script SketchUp nella directory corretta.

Accedi agli oggetti di progetto senza il puntatore del mouse

In SketchUp, la tua capacità di trovare e selezionare oggetti è valida solo come la tua destrezza manuale. Questo non è un problema quando il tuo progetto è fatto di forme semplici, ma diventa ingombrante per modelli grandi e complessi come le mesh poligonali. Con uno script è facile scorrere tutti gli elementi del progetto e operare solo su quelli a cui sei interessato.

Disegna qualsiasi cosa, ovunque

Normalmente, puoi disegnare oggetti solo all’interno del tuo campo visivo e devi fare affidamento su punti di costruzione, assi con codice colore e la casella di controllo del valore. Per un nuovo progetto è possibile creare forme solo nei piani x-y, x-z o y-z. Con gli script SketchUp, nessuna di queste restrizioni si applica. Puoi disegnare quello che vuoi, ovunque tu voglia.

Animazione

SketchUp offre numerosi modi per creare progetti che si muovono. È possibile modificare il punto di vista del progetto o creare presentazioni con più pagine. Con l’animazione scheletrica, puoi animare una complessa gerarchia di oggetti usando rotazioni semplici.

Supporto gratuito e amichevole

C’è un sito web specifico per il supporto di Ruby per SketchUp: ruby.sketchup.com. Inoltre il forum è veramente ben fatto e seguito, oltre che dagli sviluppatori, anche da utenti molto preparati. Tutte le domande ricevono risposta entro 24 ore. Anche il forum su sketchucation.com fornisce una vasta gamma di supporto e informazioni.

Automazione

Uno dei principali vantaggi della memorizzazione dei comandi di SketchUp in uno script è la necessità di digitare i comandi una sola volta. Successivamente, è possibile eseguire ripetutamente lo script. Per apportare modifiche, è sufficiente modificare lo script in un editor di testo. Puoi anche tagliare e incollare i comandi tra gli script.

Abbondanza di script disponibili

La comunità di sviluppatori di SketchUp è attiva e fiorente e, se il tuo progetto richiede nuove funzionalità, è probabile che qualcuno abbia già codificato uno script per adattarlo allo scopo e lo abbia reso disponibile per il download o l’acquisto.

Divertimento

Nessuno fornisce lo stesso senso di soddisfazione del guardare un nuovo modello tridimensionale prendere vita. E più intricato è il design, maggiore è il divertimento!

La programmazione orientata agli oggetti

Già, che vuol dire? In ruby tutto è un oggetto con i propri metodi. Cos’è un oggetto? Si tratta di un “modello informatico”, un insieme di elementi di una parte del mondo reale (che viene detta dominio) in un insieme di entità informatiche. Queste entità informatiche sono dette oggetti.

Si tratta di dati informatici che raggruppano le principali caratteristiche degli elementi del mondo reale (dimensione, colore, ecc.).

La difficoltà di questa modellizzazione sta nel creare una rappresentazione astratta, sotto forma di oggetti, di entità con un’esistenza materiale (cane, macchina, lampadina, ecc.) oppure virtuale (sicurezza sociale, tempo, ecc.). Un oggetto è caratterizzato da più nozioni.

Ognuno di voi ha, chiarissima, la nozione di “telefonino”. Quali sono le sue caratteristiche? Cominciamo: il colore, la forma, lo spessore, il peso, tasti di lato, tasti sul fronte, è touch o no? Quali sono le sue capacità di azione? Che si fa con un telefonino? Telefonare, fotografare, andare su internet, chattare, …e via così.

Indichiamo con il termine proprietà le caratteristiche di un oggetto, con i suoi attributi i valori che tali caratteristiche assumono, e con il termine metodi le sue capacità di azione, cioè il suo comportamento, ciò che è in grado di fare.

Un oggetto è definito dalle sue proprietà, dai valori che assumono tali proprietà, e dai suoi metodi.

Analogamente al telefonino, potremmo definire, per esempio, l’oggetto “plinto” le sue proprietà (dimensioni in pianta, altezza, spessore del magrone, numero e tipo di armatura, ecc.) e i suoi metodi (rotazione, cedimento, rottura, ecc.). oppure, dell’oggetto “gatto”, possiamo dire che ha unghie retrattili, le vibrisse, la pelliccia, occhi sensibili alla luce, ecc. (proprietà) e sa miagolare, fare fusa, cacciare topi, vedere di notte, ecc. (metodi).

Se rifletti un attimo, capirai che questo approccio lo si usa anche per definire un componente dinamico: certi termini in qualche modo sono ricorrenti. Non credi?

Da leggere: Plinto con bicchiere, facciamolo con Sketchup

Da leggere: Come creare componenti dinamici in Sketchup

Per approfondire: Programmazione a oggetti, oggetti e classi

Rugby code editor

All’interno di Sketchup ti consiglio di installare il plugin Ruby code editor. Puoi installarlo direttamente dalla finestra raccolta estensioni.

Figura 1 - La schermata del plugin Ruby Code Editor
Figura 1 – La schermata del plugin Ruby Code Editor

Ho trovato su youtube questo interessante video tutorial (in inglese). Osservando l’autore puoi verificare cosa significa lavorare con un linguaggio di scripting all’interno di Sketchup.

Ruby e gli oggetti: un esempio

Per capire cosa si intende quando si dice che Ruby è completamente orientato agli oggetti, apri la Ruby console. La trovi nel menu finestra > console ruby.

Introducendo i tipi di dati, Ruby prevede l’esistenza di numeri interi e di numeri a virgola mobile (floating-point).

I primi sono oggetti delle classi Fixnum o Bignum mentre i secondi sono di tipo Float.

Ora, quando si dice che in Ruby, tutto è un oggetto, non lo si fa a caso. Perfino i numeri sono considerati oggetti. Per capire ciò che dico, nella console di ruby o nel code editor, prova a scrivere:

1.class

poi premi invio. Ruby ti risponde classificando il numero che hai scritto (integer, number o Fixnum a seconda di cosa stai utilizzando). Potresti anche scrivere

num = 1.1
num.class

Dopo l’invio, vedrai comparire “Float“. Allo stesso mode, se un numero lo metti tra virgolette, vedrai comparire la scritta “String”. Semplice no?

Se vuoi provare, sperimentare e testare il tuo primo codice Ruby, puoi provarlo nel tuo browser a questo indirizzo.

Libri e Link su Ruby in generale

Certamente da scaricare e leggere il libro “I Love Ruby“.

In libreria puoi trovare ottimi testi come questi della Hoepli. Sarò vecchio ma l’odore della carta è qualcosa di particolarmente rassicurante quando devo imparare qualcosa di nuovo. In particolare segnalo questi:

RUBY POCKET – di Marco Ceresa, un ottimo libro tascabile da utilizzare come prima lettura;

SVILUPPARE APPLICAZIONI WEB CON RAILS 4 – di Sam Ruby; Thomas Dave; Hansson David H.

Sulla rete vi consiglio di seguire il sito html.it, sempre valido e molto aggiornato sui linguaggi di programmazione in generale. Nel dettaglio c’è un’ottima guida a Ruby che devi assolutamente leggere.

Sull’onda del noto sito appena citato, troverai molto altro materiale su corsi di programmazione, per esempio su mrwebmaster.it. Leggi tutto e sperimenta più che puoi. Ho notato molto interessante l’approccio di “Ok, panico”: mi è piaciuto l’approccio, i contenuti contengono molti esempi. Questo è il link.

Segnalo il link relativo alla documentazione di riferimento per la documentazione API di Ruby 2.5.5. Questo si riferisce all’ultima versione di Sketchup, la 2019.2. Credo che a breve verrà aggiornata alla versione 2020.

Youtube

I primi video che mi sono balzati davanti sono quelli di Jake Day Williams. Si tratta di un buon numero di video dedicati a Ruby tra cui spiccano il numero 28 e 29 perchè dedicati a Sketchup. Questo il link della prima lezione:

Ruby Programming – 1 – Install Ruby and Editor

Girovagando su Youtube mi sono imbattuto in queste due lezioni su Ruby tenute al Politecnico di Torino, quindi in italiano. A me ha fatto comodo ascoltarle: vi scrivo il link diretto alle due lezioni.

Corso sul linguaggio Ruby: Prima Lezione 1/2

Corso sul linguaggio Ruby: Prima Lezione 2/2

Ruby per Sketchup

Ti consiglio di seguire ciò che è scritto nel forum di Sketchup, in particolare questo post riepilogativo.

Il riferimento assoluto rimane ruby.sketchup.com. Ripeto però che se non studi prima il linguaggio in se, non sarai in grado di capire molto alla distanza. Si, potrai provare qualche blocco di codice e verificarne il funzionamento ma dopo un po’ ti fermerai.

Se intanto volete “smanettare” un po’, per divertirvi troverete interessante questo video: Writing SketchUp Ruby – Getting Started.

Dal forum di Sketchup rimandano spesso a questo link, interessante per avere a disposizione un po’ di tutorial e materiale di riferimento.

Scrivi nei commenti se l’argomento ti interessa. Fammi sapere che ci sei. Più persone rispondono all’appello maggiore sarà la spinta a tradurre e divulgare materiale in italiano. Se il percorso lo facciamo insieme sentiremo meno la fatica e avremo molti stimoli in più.

5 1 vote
Article Rating
Massimiliano Pratelli

Massimiliano Pratelli

Ciao! Sono Massimiliano Pratelli e sono un ingegnere civile specializzato in strutture, da sempre libero professionista. Mi piace scrivere e condividere conoscenza su software e metodologie di lavoro.

Read Previous

Come creare componenti dinamici in Sketchup

Read Next

Travi rovesce dinamiche in Sketchup

Subscribe
Notificami
guest
7 Commenti
più vecchi
più nuovi più votati
Inline Feedbacks
View all comments
Emanuele
Emanuele
7 mesi fa

Oh cavolo! Mi ero interessato a Ruby qualche tempo fa, ma per mancanza di tempo non ho mai approfondito la questione.
Con questo me sa che mi convinci a farlo. Quando ho un attimo sicuramente mi leggo questo articolo! 😀

Davide Natati
Davide Natati
7 mesi fa

Come sempre ottimo articolo Massimiliano.
Sketchup è sempre uno dei miei strumenti di lavoro preferiti.
Mi piacerebbe sviluppare un’applicazione simile a 3Skeng, ma orientata a tubo e canali elettrici.
Al momento ho disegnato una serie di assessori per canalizzazioni elettriche come componenti dinamici, ma sarebbe fantastico arrivare alla completa automazione di tali componenti con una programmazione Ruby

Antonio
Antonio
7 mesi fa

Molto interessante, non conosco molto Sketchup, ma seguo con interesse

7
0
Would love your thoughts, please comment.x
()
x