Sei sulla pagina 1di 21

Explicit History Interface Explained

Spiegazione dell’interfaccia

The Main Dialog


Una volta caricato il plugin, il comando _Grasshopper visualizzerà la finestra principale:

This interface contains a number of different elements, most of which will be very familiar to Rhino
users:

Questa interfaccia contiene molti elementi diversi, la maggior parte di essi sarà familiare a chi
utilizza Rhino:

1. The window title bar


2. The main menu bar
3. Component panels
4. The canvas toolbar
5. The canvas itself
6. The status bar
7. The remote control panel
8. Rhino viewport display

The Window Title Bar: D

La barra della finestra del titolo si comporta diversamente da molti altre applicazioni in Microsoft
Windows. Un doppio click minimizza o massimizza l’intera finestra di dialogo. Questo è un grande
modo di cambiare tra il plugin e Rhino perché minimizza l’editor senza traslocarlo al fondo dello
schermo o dietro alle altre finestre. Notare che se si chiude l’Editor, l’Explicit History e le viste
geometriche scompariranno, ma gli archivi non saranno chiusi davvero. La volta successiva che
viene chiamato il comando _Grasshopper , la finestra ritornerà nello stesso stato con gli stessi
archivi caricati.

The Main Menu Bar: A

Il menu è simile ai menù tipici di Windows, a parte il controllo di archivio-browser B. Si può


cambiare rapidamente tra archivi caricati e diversi selezionandoli attraverso questa elenco a discesa.
Fate attenzione quando usate scorciatoie azionate dalla finestra attiva. Questo vale per Rhino, per
Explicit History plugin o qualunque altra finestra in Rinoceronte. C'è il pericolo che venga
soppressa una modifica in atto. Siate cauti con i Ctrl-X, Ctrl-S e con l’uso di Del.

Component Panels: C

Questa area mostra tutte le categorie di componenti. Tutti i componenti appartengono ad una certa
categoria (come "Params" per tutti i tipi di dati primitive "Curve" per ogni elemento riferito a curva)
e tutte le categorie sono disponibili come pannelli di toolbar unici. L'altezza ed ampiezza del
toolbars possono essere aggiustate, lasciando spazio a più o meno su-schermo abbottona per
categoria.

I pannelli delle toolbar contengono tutti i componenti che appartengono a quella categoria. Il
numero di questi è molto alto ma vengono mostrati solo gli N articoli più usati. Per vedere la
raccolta intera cliccare sull'estremità inferiore della barra del pannello:

This will pop up the category panel, which provides access to all objects. You can either click on
the objects in the popup list, or you can drag directly from the list onto the canvas. Clicking on
items in the category panel will place them on the toolbar for easy future reference. Clicking on
buttons will not add them to the Canvas!. You must drag them onto the Canvas in order to add
them:
Questo mostra l’intero pannello di categoria che offre accesso a tutti gli oggetti. Si può cliccare
sugli oggetti nell'elenco, o si può trascinare direttamente dall'elenco sul contenitore (canvas).
Cliccando sugli articoli nel pannello di categoria questi verranno posizionati sulla toolbar per
referenza futura e facile. Cliccando su bottoni non verrà aggiunto nulla ai contenitori ma
bisognerà trascinarli con il mouse per aggiungerli:

The Canvas Toolbar: D

The canvas toolbar provides quick access to a number of oft-used features. All the tools are
available through the menu as well, and you can hide the toolbar if you like. (It can be re-enabled
from the View menu).

La toolbar dei contenitori offre accesso rapido alle caratteristiche più usate. Tutti gli strumenti sono
disponibili dal menu, e volendo si può nascondere la toolbar. (Può essere riabilitata dal menu
View).
La toolbar dei contenitori (canvas) mostra I seguenti strumenti da sinistra a destra:

1. Editor delle proprietà di una Definition (questa parte del plugin non ancora finita)
2. Strumento Sketch
3. Zoom defaults
4. Zoom Extents (aggiusta lo zoom se la definizione è troppo grande per lo schermo)
5. Focus corners (questi 4 comandi metteranno a fuoco I 4 angoli della Definition)
6. Named views (mostra e richiama l’archivio dei nomi delle viste)
7. Rebuild solution (forza una ricostruzione completa della Definition)
8. Rebuild events (by default Explicit History responds to changes in Rhino and on the Canvas.
You can disable these responses though this menu)
9. Cluster compactor (turn all selected objects into a Cluster object, cluster objects are not
finished yet)
10. Cluster exploder (turn all selected clusters into loose objects, cluster objects are not finished
yet)
11. Bake tool (riporta tutte le grometrie Explicit History selezionate nell’oggetto corrente di
Rhino)
12. Preview settings (Esegue l’anteprima della vista della geometria Explicit History con le
condizioni di default. Potete disabilitare l'anteprima per oggetto, ma potete scegliere anche
l'anteprima per gli oggetti di base. Escludendo l’anteprima Ombreggiata vengono accelerate
le scene che hanno curve o superfici tagliate
13. Hide button. Questo commando nasconde la barra dei contenitori (Canvas), Potete
reinserirlo dal menù View

The Canvas: F

Questo è l’Editor corrente dove si definisce e si scrive la storia dell’oggetto. Il contenito contiene
sia gli oggetti che l'UI widgets G.

I contenitori di solito hanno un colore che indica il loro stato:

A) Parameter. Un parametro che contiene avvertimenti è rappresentato come una scatola arancione.
La maggior parte dei parametri è arancione quando vengono inseriti; la mancanza di dati si
considera necessiti di un avvertimento.

B) Parameter. Un parametro che non contiene avvertimenti né errori.

C) Parameter. Un componente è sempre un oggetto più coinvolto, siccome contiene parametri di


input e di output. Questo particolare componente è associato as almeno 1 avvertimento. Potete
trovare avvertimenti ed errori con il menu di contesto degli oggetti.
D) Component. Un componente che non contiene avvertimenti né errori.

E) Component. Un componente che contiene almeno 1 errore. L'errore o può venire dal componente
stesso o da uno dei suoi parametri di input/output. Per saperne di più vedere la struttura dei
componente, visiti questa pagina.

Tutti gli oggetti selezionati sono disegnati con un colore verde (non mostrato).

The Status Bar: H

La barra di stato propone reazione sul set di selezione (non ancora perfezionato) e gli eventi più
importanti del plugin. Potete vedere un elenco di tutti i recenti eventi cliccando sul campo di
rightmost nella barra di stato.

The Remote Control Panel:

Quando la finestra della Explicit History è piuttosto grande, potreste non volere sullo schermo tutto
sempre. Chiaramente potete minimizzare o crollare esso, ma poi non potrete più seguire i valori. Se
volete una minima interfaccia ai valori nell'attualmente definition attiva, potete abilitare il Pannello
Remoto. Questo è una aggiunta al dialogo che monitorizza ogni sliders e cambiamenti booleani (e
possibilmente altri valori saranno aggiunti con le prossime releases):

Il pannello Remoto offre anche anteprima di base, evento e controlli di cambiamenti di file. Potete
abilitare il pannello attraverso il menu di Vista della finestra di Main, o attraverso il comando di
_ExpHisPanel

Viewport Preview Feedback:

Quando la finestra della Explicit History è piuttosto grande, potreste non volere sullo schermo tutto
sempre. Chiaramente potete minimizzare o crollare esso, ma poi non potrete più seguire i valori. Se
volete una minima interfaccia ai valori nell'attualmente definition attiva, potete abilitare il Pannello
Remoto. Questo è una aggiunta al dialogo che monitorizza ogni sliders e cambiamenti booleani (e
possibilmente altri valori saranno aggiunti con le prossime releases):
A) Geometria di colore Blu vuole dire che l’avete selezionato col mouse.
B) Geometria di colore Verde nella viewport dovuta ad un componente correntemente selezionato.
C) Geometria di colore Rosso nella viewport appartiene ad un componente che non è correntemente
selezionato.
D) Geometria di un punto è disegnata come una croce piuttosto che un rettangolo per distinguerlo
dall’oggetto punto di Rhino.
Explicit History Objects Explained

Grasshopper Definition Objects


Una Definition di Grasshopper può comprendere più oggetti di genere diverso, ma per iniziare
dovete familiarizzare con 2 di loro:

• Parameters
• Components

I Parameters contengono dati, loro immagazzinano qualcosa. I componenti contengono azioni, loro
fanno qualcosa. L'immagine seguente mostra alcuni dei possibili oggetti che probabilmente
incontrerete in una History Definition:

A) Un parameter che contiene dati. Non c'è nessun filo che esce il lato sinistro dell'oggetto, non
eredita altrove i suoi dati. Parameter che non contengono errori o avvertimenti sono sottili, neri con
testo orizzontale.

B) Un parameter che non contiene dati. Un oggetto che raccogliere dati è considerato sospetto in
una Explicit History Definition siccome sembra stia sprecando tempo di tutti e soldi. Perciò, tutti i
parametri (quando appena aggiunti) sono arancione, ciò indica che non contengono dati e non
hanno così effetto funzionale nella Soluzione di History. Appena un parameter eredita o definisce
dati, diverrà nero

C) Un componente selezionato. Tutti gli oggetti selezionati hanno una lucentezza verde.

D) Un component regolare.

E) Un component che contiene avvertimenti. Poiché un component è probabile che contenga un


certo numero di parametri di output e di input, non è mai chiaro se l'oggetto particolare ha generato
l'avvertimento senza esaminare il component. Ci possono persino essere fonti multiple di
avvertimenti. Dovrete usare il menu di contesto (vedi sotto) per seguire i problemi. Si noti che gli
avvertimenti necessariamente non devono essere fissi. Possono essere completamente legit.

F) Un component che contiene errori. Simile ad avvertimenti, non è possibile vedere dove l'errore
fu generato in un component. Avete bisogno di usare il menu di contesto (vedi sotto). Notare che un
component che contiene avvertimenti ed errori apparirà rosso, il colore di errore ha la precedenza
sul colore di avvertimento.
G) Una connection. I connection compaiono sempre fra un'uscita e un parametro dell'input. Non c’è
limite a quanti collegamenti un parameter può contenere, ma non è permesso generare una messa a
punto con collegamenti ciclici/ricorsivi. Una tal ricorrenza è segnalata e l'intera soluzione
cortocircuita quando accade, con conseguente messaggio di errore nella prima componente o
parametro che è stato rilevato per essere ricorsivo. Vedi l'eredità volatile di dati per ulteriore Info
sui fili del collegamento.

A component usually requires data in order to perform its actions, and it usually comes up with a
result. That is why most components have a set of nested parameters, referred to as Input and
Output parameters respectively. Input parameters are positioned along the left side, output
parameters along the right side:

Una component richiede solitamente i dati per realizzare le relative azioni e fornisce solitamente un
risultato. Ecco perché la maggior parte delle component hanno un insieme dei parameter annidati,
sono parametri di output e di input rispettivamente. I parameter dell'input sono posizionati lungo la
parte di sinistra, parameter di uscita lungo la parte di destra:

A) Sono tre input parameterrdella Division component. Per default, i nomi di parameter sono
sempre estremamente brevi. Potete cambiare nome del parameter come vi piace.

B) E’ l’area della Division component

C) Sono tre parameter di output della Division component.

Quando voi scorrete il mouse sulle diverse parti di un oggetto component, bedrete tooltips differenti
che indicano il tipo particolare dell'oggetto (secondario) attualmente sotto il mouse. Tooltips sono
abbastanza informativi poiché dicono sia il tipo di dati dei diversi parameter:
Using Context Popup Menus
Tutti gli oggetti di un Canvas hanno loro propri menu di contesto che espongono la maggior parte
delle caratteristiche per quella componente particolare. Le component sono un po' più ingannevole,
poiché inoltre espongono (in uno stile procedente in sequenza) tutti i menu dei sub objects che
contengono. Per esempio, se una componente gira l'arancio significa che esso, o un certo parameter
affiliato con la component, ha generato un avvertimento. Se volete scoprire che cosa è andato male,
dovete usare il menu component di contesto:
Qui vedete il menu del component principale, con il menu di procedura in sequenza per il " R"
parametro dell'input. Il menu comincia solitamente con un textfield editable che elenca il nome
dell'oggetto in questione. Potete cambiare il nome con qualcosa di più descrittivo, ma per default
tutti i nomi sono estremamente brevi minimizzare l'uso della screen-real-estate. Il secondo articolo
nel menu (flag di previsione) indica indipendentemente dal fatto che la geometria prodotta/definita
da questo oggetto sia visibile nelle viste di Rhino.Commutando fuori dalla previsione per le
component che non contengono informazioni vitali accelererà sia il framerate della vista di Rhino
che il tempo occorso per una soluzione History (nel caso che il meshing sia involuto). Se la
previsione per un parameter o una component è disattivata, sarà disegnata con un portello bianco
debole. Non tutti i parameter/component possono essere disegnati nelle viste (numeri per esempio)
ed in questi casi l'articolo di previsione manca solitamente.

Il menu di contesto per il " R" il parameter di input contiene l'icona d'avvertimento arancione, che a
sua volta contiene una lista (appena 1 avvertimento in questo caso) di tutti gli avvertimenti che sono
stati generati da questo parameter.
Explicit History Data Persistent Data Management

Types of Data
I parameter sono usati soltanto per memorizzare le informazioni, ma la maggior parte dei parameter
possono immagazzinare due generi differenti; dati volatili e persistenti. I dati volatili sono ereditati
da uno o più parameter sorgenti e si distruggono (cioè va ricordato) ogni volta che comincia una
nuova soluzione. I dati persistenti sono dati che specificamente sono stati fissati dall'utente. Ogni
volta che un parameter è agganciato fino ad un oggetto sorgente i dati persistenti sono ignorati, ma
non si distruggono.

(Fanno eccezione i parameter di output che non possono nè immagazzinare le annotazioni


permanenti nè definire un insieme di sorgenti. I parameter di output sono sotto il controllo del
component che li possiede).

I dat persistenti data is accessed through the menu, and depending on the kind of parameter has a
different manager. Vector parameters for example allow you to set both single and multiple vectors
through the menu.

I dati persistenti sono introdotti attraverso il menu e secondo il genere di parametro ha un criterio
differente. I parameter vettore per esempio permettono di scegliere sia vettori sia singoli che vettori
multipli attraverso il menu.

Ma, sosteniamo alcuni punti e vediamo come si comporta per default un parameter di vettore. Una
volta che l’avete trascinato dal pannello di vettore nell’area di lavoro, vedrete quanto segue:

Il parameter è arancione, indicante che ha generato un avvertimento. Niente di grave, l'avvertimento


è semplicemente per informarvi che il parameter è vuoto (non contiene annotazioni persistenti e non
è riuscito a raccogliere i dati volatili) e così non ha effetto sul risultato di una soluzione History. Il
menu di contesto del parametro offre 2 modi di fissazione dei dati persistenti: singolo e multiplo:
Una volta clickato sull'una o sull'altra di queste voci di menu, la finestra Explici History scomparirà
e vi verrà chiesto di selezionare un vettore in una delle viste di Rhino:

Dopo aver definito tutti i vettori che volete, premendo Enter questi vettori si trasformeranno in dati
persistenti del parameter. Ciò significa che il parameter ora non è più vuoto e cambia il colore da
arancione a nero:

At this point you can use this parameter to 'seed' as many objects as you like with identical vectors.

A questo punto potete usare questo parametro e quanti altri ne volete con gli stessi vettori.
Explicit History Volatile Data Inheritance

Data Inheritance
I dati sono immagazzinati in parameter (o di forma Volatile o di forma Persistente) ed usati nei
component. Quando i dati non sono immagazzinati nel record dei dati permanenti di un parameter,
devono essere ereditati da altri. Ogni parameter (eccetto quelli di output) definisce dove trova i suoi
dati. Potete collegare un parametro a numero double con un sorgente intero e si prenderà cura della
conversione. Il plugin definisce molti schemi di conversione e se non è definita la procedura di
conversione, il parameter sul lato della ricezione genererà un errore di conversione. Per esempio, se
fornite una superficie quando è richiesto un punto, il parameter del punto genererà un messaggio di
errore (accessibile attraverso il menu del parameter in questione) e apparirà di colore rosso. Se il
parameter appartiene ad un component, questa condizione del rossore si propagherà sulla gerarchia
e anche la component diventerà rossa, anche se non può contenere errori.

Vedi History Definition Objects Explained per ulteriori informazioni sugli avvertimenti e sugli
errori.

Connection management
Poiché i parameter sono incaricati dell’acquisizione dei dati, potete ottenere ‘immissione di questi
con il parameter in questione. Supponiamo di avere una piccola definizione contenente tre
component e due parameter:

In questa fase, tutti gli oggetti sono disgiunti e dobbiamo cominciare agganciarli. Non importa con
quale ordine facciamo questo, ma procediamo da sinistra a destra. Se cominciate trascinare dal
piccolo cerchio di un parametro (tutti in genere chiamano " grip") un filo di collegamento apparirà
attaccato al mouse:
Possiamo fare lo stessi per la " Y" della component PtGrid e dei parameter " A" e " B" con la
component: Click+Trascina+Rilascia…

Notate che possiamo eseguire i collegamenti in entrambi i sensi. Ma stiate attenti, per default un
nuovo collegamento cancellerà i collegamenti esistenti. Poiché abbiamo supposto che spesso
userete soltanto i collegamenti singoli, dovete fare qualche cosa di speciale per definire le fonti
multiple. Se premete Shift mentre trascinate il filo del collegamento, il puntatore del mouse
cambierà per indicare il comportamento dell'aggiunta:
Se il cursore " ADD" è attivo quando liberate il tasto del mouse sopra un parameter sorgente, quel
parameter verrà aggiunto alla lista dei sorgenti. Se specificate un parameter sorgente che già è
definito come sorgente, non succederà niente. Non potete ereditare più di una volta dallo stesso
sorgente.

Allo stesso modo, se mantenete il controllo il " REM" del cursore diventa visibile e la fonte
designata sarà rimossa dalla lista dei sorgenti. Se l'obiettivo non è referenziato, non accadrà niente.

Potete anche staccare (ma non collegare) sorgenti con il menu dei parameter:
Explicit History Data Stream Matching

Data matching
La corrispondenza di dati è un problema senza una soluzione chiara. Accade quando una
componente ha accesso agli input diversa grandezza. Immaginate una component che genera la
linea segmento fra i punti. Avrà due parameter che forniscono coordina di punti (Insieme A e
insieme B). È irrilevante da dove questi parameter prendono i loro dati, una component non può
vedere oltre i parametri di input o di output:

Come potete vedere ci sono modi diversi in cui possiamo disegnare le linee fra questi insiemi di
punti. Il plugin Explicit History attualmente dispone di tre procedure di corrispondenza, ma molte
altre sono possibili. Il modo più semplice è di collegare gli input uno con uno fino alla fine di uno
degli insiemi. Questo modo è chiamato procedura "Shortest List”,(Lista più breve):

La procedura "Longest List" (Lista più lunga) continua a collegare i punti fino a che tutti i punti dei
flussi non siano stati collegati, questo è il comportamento di default per le component:

Per concludere, il metodo "Cross Reference" esegue tutti i collegamenti possibili:

Ciò è potenzialmente pericoloso poiché la quantità di uscita può essere enorme. Il problema diventa
più complicato quanto più sono e quanto più complicati sono i parameter di input e quando l'eredità
volatile di dati comincia moltiplicare i dati, ma la logica rimane la stessa.

Immaginate che abbiamo una component del punto che eredita la relativi x, y e z dai parameter che
contengono i seguenti dati:

X coordinate: {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}
Y coordinate: {0.0, 1.0, 2.0, 3.0, 4.0}

Z coordinate: {0.0, 1.0}

Se unite questi dati con procedura "Shortest List", otteniamo soltanto due punti dall’insieme
"Coordinate Z";. Poiché questa è la lista minore che definisce il limite della soluzione:

La procedura "Longest List" genererà dieci punti, che collegano tutti i valori degli insiemi di Y e di
Z:
La procedura "Cross Reference"collegherà tutti i valori nella X con tutti i valori in Y e nella Z, così
con consegue 10×5×2 = cento punti:

Ogni component può essere regolata per obbedire ad una di queste regole (la regolazione è
disponibile nel menu).

Notate una grande eccezione a questo comportamento. Alcune component EXPECT a ricevere una
lista di dati in uno o più dei loro campi dell'input. La componente della spezzata per esempio genera
una curva della spezzata con un allineamento dei punti dell'input. Più punti nel parametro dell'input
provocheranno in una oililinea più lunga, non più polilinee. I parameter di input che Expected a
prendere più di un valore sono denominati List Parameters e sono ignorati durante la
corrispondenza di dati.
Explicit History Expressions

Expressions
Il plugin Explicit History ha un propria caratteristica sintassi di espressione, poiché le lingue
scripting disponibili raramente supportano operatori di punto e di vettore. La sintassi della Explicit
History è simile a VBScript, ma ha un certo numero di aggiunte.

First of all, expression parsing is important when defining logical relationships between parameters,
and the language outlined on this page is used both in the math components that deal with scriptable
expressions and in some parameter types directly. All numeric and vectorial parameters expose a
simple, one-line expression for post-processing any data that comes in.

In primo luogo, l'espressione analizzante è importante quando definisce i rapporti logici fra i
parameter e la lingua descritta a questa pagina è utilizzata sia nelle component di matematica che
trattano espressioni tipo script che direttamente in alcuni tipi di parameter. Tutti i parameter
numerici e vectoriali espongono un semplice, la una linea di espressione per elaborare tutti i dati
che entrano.

Per esempio, date uno sguardo alla linea SDL (Start; Direction; Length) del component che prende
un punto, un vettore e un double. Tutti questi tipi di parameter supportano espressioni “inline", ma
noi inizieremo con quello più semplice; il double parameter che indica la lunghezza del segmento.
Se aprite il menu di contesto del parameter “L” troverete la voce " Espressione F (x)" nella parte
inferiore. Questa voce di menu si espande per darvi due interfacce alternate per l’espressione script:

potete scrivere rapidamente dentro un'espressione nella casella di testo, o potete aprire l’editor di
espressione. Se avete conoscenza della sintassi potete usare il metodo più breve, ma all'inizio è
meglio usare l’editor poiché vi informa circa gli errori nella sintassi:
L’editor visualizza una lista di tutte le variabili che avete deciso di usare (soltanto " x" in questo
caso) e tutti gli operatori che sono disponibili (i tasti in basso).

Se cambiate l'espressione, ci sarà un messaggio di errore rosso sulla finestra di dialogo che vi
informa che genere di errore di sintassi è stato fatto e c’è inoltre un tasto di previsione per verificare
la vostra nuova espressione.

L’editor fornisce un sacco di funzioni matematiche predefinite simili al VBScript, ma di portata più
ampia.

Se volete saperne di più sul linguaggio delle Espressioni, avviate il comando


TestExplicitHistoryExpressionParser che fornisce più informazioni su sintassi, sulle funzioni
disponibili e sulla notazione di vettore.

[Todo, make function list]

[Todo, explain operators]

[Todo, explain constants]

[Todo, explain vector syntax]

[Todo, fa la lista] di funzione [Todo, spieghi gli operatori] [Todo, spiega le costanti] [Todo, spiega
la sintassi di vettore]