Macro Half-Hull Model/it

This macro makes simple models of the hulls of boats and ships. It is intended to aid people modeling or designing hulls by providing the hull surface in a straight forward and timely fashion so they can avoid the time consuming full process.



Introduzione
Since antiquity boat builders have had to design boats and then realise them in a three dimensional environment where very few lines are straight, very few surfaces flat and no angles constant over a distance. Hull models were used to make to-scale models which could then be used to review the design or communicate concepts to other persons. The laws of hydrodynamics demand that any vessel passing through a liquid be symmetrical in the cross-section if it is to track (move in a straight line) accurately. Consequently building one side of the hull in the model was all that was necessary - if the half-hull was perfect then its mirror image would also be perfect. In latter years half-hulls became used for symbolic purposes such as plaques, and nautical art.

This code came out of a project to build a model in FreeCAD of a 12.5 metre sailing boat. The builders no longer had drawings and the son of the original owner doubted there ever were full drawings. Consequently the hull dimensions had to be measured and then a model constructed within the software, Modern software packages like FreeCAD offer many beneficial features like symmetry constraints but when the final measurement is a model that is "easy on the eye", much "massaging" of models is required. This code was written to help automate that process.

Lo scopo iniziale di questo codice era quello di fornire uno scafo simmetrico che fosse malleabile e adattabile al modello 3D in costruzione. Poiché il software si è evoluto è stato generalizzato e speriamo che sia utile a chi:
 * progetta imbarcazioni e produce schemi per costruire delle barche
 * costruisce barche e sta cercando di modellare ciò è descritto nello schema
 * costruisce modelli di scafo.

Certamente i progettisti di imbarcazioni commerciali per sviluppare il loro lavoro utilizzano dei software di fascia alta, questa macro non ha intenzione di sostituirli, ma può essere utile all'hobbista.

I progetti navali hanno una storia diversa rispetto agli edifici e quindi anche la presentazione è un po' diversa. Ecco un esempio di una barca a vela che ha più di un secolo:



Uno degli obiettivi finali di questo software è quello di utilizzare l'ambiente Draft per generare alcuni di questi schemi utilizzando il modello per generare le linee.

Note sulle Unità in FreeCAD:

Al momento, in FreeCAD non c'è ancora nessun Sistema di gestione delle unità, ma ovviamente un costruttore di barche o modellatore ha bisogno di un sistema di dimensionamento accurato. Per utilizzare questa macro, si deve impostare la griglia di FreeCAD con la dimensione appropriata al lavoro (per esempio mm, cm, pollici, piedi). FreeCAD è coerente, una unità di FreeCAD sarà sempre uguale a una unità di FreeCAD. Se avete deciso che una unità FreeCAD corrisponde a una specifica lunghezza fisica, allora i vostri disegni rimarranno dimensionati coerentemente. Al momento si sta lavorando su un Sistema di unità per FreeCAD, quindi questa situazione potrebbe cambiare presto.

Descrizione
Per questa macro, le forme della carena sono definite da un minimo di 3 schizzi di FreeCAD: uno nel piano YZ, uno o più nel piano XZ e uno nel piano XY. Qui è presentato lo scafo minimo supportato da questa macro, ha solo 3 schizzi:



Nota: nello schema precedente stiamo guardando direttamente a poppa, la prua è rivolta in direzione opposta al punto di vista.

Da davanti a dietro (da prua a poppa) i 3 schizzi sono:

Forse è più facile da vedere con 7 schizzi (uno nel piano YZ, uno nel piano XY e 5 nel piano XZ):



Con 5 schizzi nel piano XZ è più facile cominciare a percepire la forma dello scafo. Le prossime 2 immagini mostrano le linee di disegno sovrapposte al modello che FreeCAD produce,



questa seconda figura riproduce lo stesso modello ruotato di 90 gradi, con la prua in primo piano:



Alcuni punti da prendere in considerazione:


 * gli schizzi sono solo per:
 * la stemline (o linea di prua) nel piano YZ (rossa nello schema sopra);
 * la parte superiore dello specchio di poppa nel piano XY (blu nel diagramma);
 * diverse sezioni dello scafo nel piano XZ (verde nello schema precedente)
 * negli schizzi si disegna solo il lato di dritta dello scafo, il lato di babordo verrà generato come immagine speculare
 * ogni linea multisegmento deve essere disegnato in uno schizzo separato
 * ogni schizzo deve avere lo stesso numero di segmenti (che è 3 negli esempi precedenti)
 * più segmenti di linea ci sono in ogni Schizzo e più il modello prodotto da FreeCAD si avvicina a uno scafo curvo
 * non vi è alcun limite al numero di segmenti di ciascuno schizzo, qualsiasi numero da uno in poi
 * non vi è alcun limite al numero di schizzi nel piano XZ (cioè le sezioni), qualsiasi numero da uno in poi

Con sufficienti schizzi il modello generato diventa verosimile:



La macro HalfHull genera 4 modelli:


 * mezzo scafo di dritta
 * mezzo scafo di babordo
 * scafo completo
 * paratie per lo scafo completo, sia con un ponte raso che per un ponte con cassero

Questi modelli sono tutti prodotti nella posizione unificata dello spazio di FreeCAD in modo che possano essere assemblati - per esempio le paratie possono essere inserite perfettamente nello scafo completo. Questa è una foto delle paratie di un modello di barca in costruzione:



Così come le paratie generate dalla macro (notare che queste paratie sono per un cassero e non per un ponte raso):



L'immagine composita sottostante mostra i principali risultati prodotti da questo software (attualmente il mezzo scafo di babordo non è mostrato ma è lo specchio del mezzo scafo di dritta che è mostrato). I prodotti sono in senso orario dall'alto a sinistra:
 * mezzo scafo di dritta
 * scafo completo
 * paratie (per ponte raso, le paratie dell'immagine precedente erano per un ponte con cassero)
 * lo scafo completo con le paratie inserite



Come nuove caratteristiche, opzionalmente la macro può anche produrre targhe per i mezzi-scafi, o una bottiglia per lo scafo completo:





Installazione
Tutto il codice di halfHullModel.FCMacro è contenuto in una macro, quindi per installarla basta copiare il suo codice nella appropriata directory delle Macro. Dopo, si può invocare halfHullModel.FCMacro dal menu Macro, dalla console Python o da un pulsante della barra degli strumenti (il metodo preferito).
 * per informazioni su come installare il codice delle macro vedere la pagina Come installare le macro
 * per informazioni su come installarla abbinata a un pulsante in una barra degli strumenti vedere la pagina Personalizzare la barra degli strumenti

Utilizzo
Le operazioni FreeCAD coinvolte nella generazione del modello dello scafo sono piuttosto complesse e numerose. Alcune cose come, ad esempio, la direzione in cui viene disegnata una linea possono portare FreeCAD alla costruzione dello scafo o al fallimento o a produrre deformazioni come questa:



Di conseguenza, i passaggi successivi devono essere seguiti attentamente. La macro non consente alcune incongruenze di dati, in generale se i dati (cioè gli schizzi) non sono corretti il prodotto è simile a una grattugia oppure il riempimento della macro fallisce con un errore.

Le successive istruzioni si riferiscono ai quadranti del grafico XY, dove i 4 quadranti sono etichettati in questo modo:



Creare un Nuovo Documento

La prima cosa da fare è quella di creare un nuovo documento in FreeCAD. Questo documento conterrà tutti gli schizzi che compongono la definizione dello scafo.

Creare la linea di prua
Il primo passo consiste nel creare i dati per il modello dello scafo che si vuole realizzare. I dati sono forniti in forma di schizzi interni a FreeCAD. Quando il modello dello scafo è stato generato, per apportare delle modifiche basta semplicemente editare gli schizzi, e poi ripetere la macro.


 * 1) creare un nuovo schizzo [[Image:Sketcher_NewSketch.svg|24px]] nel piano YZ
 * 2) partire dall'origine (0,0) e disegnare verso l'alto nel Quadrante I
 * 1) l'estremità inferiore della linea di prua (stemline) si trova nell'origine (0,0) - questo è il punto rispetto al quale verrà effettuato il posizionamento di tutte le sezioni e dello specchio di poppa
 * 2) il numero di segmenti della linea di questo schizzo è il numero che sarà richiesto in tutti gli altri schizzi
 * 3) salvare lo schizzo [[Image:Sketcher_LeaveSketch.svg|24px]]
 * 4) per facilitarne l'identificazione, probabilmente vale la pena di rinominare lo schizzo con un nome simile a "schizzo della linea di prua"

Creare gli schizzi delle sezioni trasversali
La finestra di dialogo chiede a quale distanza dall'origine deve essere posto lo schizzo. Questo stabilisce la distanza della sezione trasversale dal fondo della linea di prua (che si trova in (0,0)). Le sezioni possono essere equidistanti, ma non è obbligatorio. La sezione più avanzata sarà a Y=0 (cioè l'origine in cui si trova l'estremità inferiore della linea di prua) o a Y<=0. Le sezioni saranno sempre posizionate a valori negativi di Y dato che lo specchio di poppa si trova al massimo valore negativo di Y. Nell'esempio precedente, lo schizzo della sezione è collocato a una distanza di 50 unità di FreeCAD dall'origine, sull'asse Y negativo. - la prima (cioè principale) sezione dovrebbe iniziare all'origine (0,0) (o avrà una strana forma dato che la linea di prua termina a 0,0), ma per le altre sezioni basta iniziare sull'asse Y.
 * 1) creare un nuovo schizzo [[Image:Sketcher_NewSketch.svg|24px]] nel piano XZ
 * 2) appare la seguente finestra di dialogo:
 * 1) cominciare dall'asse Y e disegnare verso l'alto nel quadrante I
 * 1) per la linea utilizzare lo stesso numero di segmenti utilizzati nello schizzo della linea di prua
 * 2) salvare lo schizzo [[Image:Sketcher_LeaveSketch.svg|24px]]
 * 3) per ripetere questo passaggio indispensabile, può essere più veloce copiare questo disegno e poi distribuire le copie sull'asse Y, alle singole copie si possono apportare le modifiche necessarie
 * 4) per la denominazione, dare una sorta di sequenza alle sezioni renderà le cose più facili, iniziando da prua (cioè dalla linea di prua) e incrementando la numerazione verso poppa (cioè lo specchio di poppa)

Creare lo schizzo dello specchio di poppa nel piano XY

 * 1) creare un nuovo schizzo [[Image:Sketcher_NewSketch.svg|24px]] nel piano XY
 * 2) iniziare sull'asse Y tra quadranti III e IV,  e disegnare verso l'alto nel quadrante IV in modo che il punto finale coincida con il punto più a destra dello schizzo della più piccola sezione creata nel piano YZ
 * 1) per la linea utilizzare lo stesso numero di segmenti utilizzati nello schizzo della linea di prua
 * 2) salvare lo schizzo [[Image:Sketcher_LeaveSketch.svg|24px]]
 * 3) per facilitarne l'identificazione, probabilmente vale la pena di rinominare lo schizzo con un nome simile a "schizzo dello specchio di poppa"

Salvare il Nuovo Documento

Ora salvare il documento che contiene gli schizzi che definiscono la forma dello scafo, dandogli un nome descrittivo

Quando tutti gli schizzi sono stati creati e posizionati, nella vista dall'alto il documento dovrebbe essere simile a questo:



Le principali limitazioni per costruire il modello sono:
 * l'estremità inferiore della linea di prua deve terminare in (0,0)
 * l'estremità inferiore del centro di ogni sezione dovrebbe terminare in corrispondenza dell'asse Y - notare che può avere qualsiasi valore Z

Questo conclude la prima parte che consiste nel creare i dati che la macro utilizza per creare due mezzi scafi o uno scafo completo. La seconda parte è descritta nella sezione seguente ed è intitolata Interfaccia utente

Interfaccia utente
In questa fase la macro raccogliere alcune informazioni dall'utente e quindi elabora gli schizzi input per generare i modelli di scafo desiderati. Questa è l'immagine dell'unica GUI della macro che permette di configurare i principali dettagli per la produzione dei modelli di scafo dagli schizzi:



Nella finestra GUI si può sceglire:

- selezionando questa casella la macro produce un modello mezzo scafo di dritta - se selezionata la macro inserisce il mezzo scafo su una targa - se selezionata il mezzo scafo viene inserito nella parte superiore della targa, e al di sotto dello scafo può essere collocata una chiglia generata separatamente - se selezionata la macro produce un modello mezzo scafo di babordo - se selezionata la macro inserisce il mezzo scafo su una targa - se selezionata il mezzo scafo viene inserito nella parte superiore della targa, e al di sotto dello scafo può essere collocata una chiglia generata separatamente - selezionando questa casella la macro produce un modello completo - se selezionata la macro inserisce lo scafo completo in una bottiglia trasparente (completo di tappa in sughero) - se selezionato il mezzzo scafo viene posizionato nella parte superiore della bottiglia rispetto alla posizione centrale, e al di sotto dello scafo può essere collocata una chiglia generata separatamente - selezionando questa casella la macro produce delle paratie con la parte superiore allineata alla parte superiore dello scafo, le paratie non sono generate per le prime 2 sezioni di prua o le ultime 2 sezioni di poppa - paratie per ponte raso - selezionando questa casella la macro produce delle paratie con la parte superiore al di sopra della parte superiore dello scafo - paratie per ponte con cassero. - l'esecuzione viene interrotta e si chiude la finestra - l'esecuzione utilizza il file di dati e le impostazioni dell'ultima esecuzione, le modifiche alle impostazioni vengono ignorate - si apre la finestra standard Apri file in cui l'utente può selezionare un file o Annulla e uscire
 * Starboard half-hull
 * Mounting plaque
 * Allow space for keel
 * Port half-hull
 * Mounting plaque
 * Allow space for keel
 * Complete hull
 * Bottle for complete hull
 * Allow space for keel
 * Bulkheads for flush deck
 * Bulkheads for coachhouse
 * Bulkheads to skip at bow - Paratie da omettere a prua determina il numero di sezioni trasversali da lasciare senza paratie a prua
 * Bulkheads to skip at stern - Paratie da omettere a poppa determina il numero di sezioni trasversali da lasciare senza paratie a poppa
 * La dimensione della parte superiore delle paratie è configurata secondo il seguente schema:
 * Pulsante Cancel
 * Pulsante Re-Use Last File
 * Pulsante Select File

Quando viene eseguita, la macro prende i dati di configurazione dall'utente e poi legge gli schizzi di Sketcher nel file di input selezionato.

Nota: Dato che la macro opera attraverso gli schizzi essa stampa le eventuali eccezioni e alcuni passaggi chiave nella Vista Report. Se si ottengono dei risultati imprevisti o mancano alcune parti, probabilmente è il primo posto in cui conviene guardare.

Opzioni
Per le imbarcazioni ci sono molti tipi di prue e di poppe, e ci sono più varietà di poppe che di prue. Ecco alcuni esempi di specchi di poppa e di prue dal mondo reale affiancate dall'analogo prodotto della macro:

Poppa Sheer

La poppa quadra è probabilmente la più comune, è utilizzata per imbarcazioni di qualsiasi dimensione, dalle navi commerciali fino alle barche a remi.


 * lo specchio di poppa XY deve essere il più vicino possibile all'ultima sezione verso la poppa.

Poppa Sugar-Scoop

Più probabile che si trovi su una barca a vela, è un prodotto di progettazione per massimizzare la lunghezza della linea di galleggiamento per beneficiare delle regole sulle classi nelle competizioni a vela.


 * posizionare le ultime 2 sezioni più vicino possibile alla poppa, poi ruotare l'ultima sezione di poppa di un angolo di 45 gradi (o di quanto è necessario) intorno all'asse X

Poppa a canoa

Found on all sizes of water craft, power and sail, pleasure and commercial.


 * place the aftmost 2 cross-sections as close as is feasible, then rotate the aftmost of the two through to an angle of 45 degrees around the X-axis

Normal Bow

There is a lot less variety in bow shapes than with transoms:

Trireme Bow

Although not seen very frequently in the last 2 millenia, this was once the definitive bow profile for war-making vessels:


 * in order for the bow to be correct the poly-line for the stemline needs to be drawn from the bottom to the top which will mean right to left in the Sketcher

Sample Files
These files are samples of Sketch data to use with the macro, mainly they are the models for the screen snapshots in the Options section above. The files work with the Macro and so can be downloaded and played with to adapt to your specific requirements. The prefix of 5x3 (for example) means the model has 5 cross-sections and 3 line segments per sketch


 * 3x3 hull with the minimum number of Sketches (stemline, one cross-section, transom) and 3 line segments per Sketch
 * 5x3 with sheer transom
 * 5x3 with sugar scoop transom
 * 5x3 with canoe transom
 * 5x3 with trireme bow
 * 12x3 sailing yacht

Remarks

 * almost all the examples on this page are generated with only 3 line segments defining the side of the hull which gives a very faceted appearance, increasing the number of segments in each Sketch would generate a much smoother surface which would increase the realsism
 * doesn't do keels, skegs or rudders, in other words, it doesn't do any of the wet area
 * doesn't do square bows like push-boats or towed barges
 * doesn't do submarines (although it will do the lower half of a submarine)

Known Problems
The 'Ruled Surface' feature of FreeCAD is used to generate the hull sections from the Sketches. It can sometimes generate the wrong result and display a grater like surface instead of a smooth planar one. This will typically occur when the Sketches are rotated such as when a Sugar Scoop stern is modeled. Also angling a Sheer Transom stern can cause this. If it occurs then typically it will do so in either the half-hull models or the complete hull model - it never seems to occur in all three models for the same hull. Also it usually only happens at the extreme bow or stern. If it happens to section in the middle of the boat then most likely one of the Sketches was drawn in the wrong direction (i.e. either random sequence or top-down where as all lines should be drawn bottom-up)

It can usually be removed by using the following steps:
 * in the Model tab of the Combo View, click on the faulty segment to select it, the faulty segment will show as highlighted on the display
 * select the Data tab on the bottom half of the Combo View, the lower part of the window will have a Label "Ruled Surface" with a single parameter 'Orientation'
 * there is a popup menu to the right which has the values 'Automatic', 'Forward', 'Reversed', it will initially be set to 'Automatic'
 * try one of the other settings (remembering the faulty segment must still be selected in the upper part of the Combo View) which will usually correct the problem

The following screen snapshot shows the relevant portion of the screen:



Future Possibilities
- this is just at the idea stage but would give a much smoother surface in the vertical dimension, however the horizontal surface would still be faceted as it is now - an initial goal, but the feasibility has not been investigated - one work around for keels with the present system is to model the keel as a half-hull on it's own and then assemble it onto the bottom of the main hull; this would still do nothing for rudders and skegs though
 * replace line segments of cross-sections with curved lines
 * integrate with Draft workbench to produce drawings from models
 * handle keels, skegs and rudders

Glossary
As with any ancient and practiced trade, a rich and sometimes confusing vocabulary has developed around ships, boats and nautical practices. In describing this macro it is both awkward and inefficient to describe the process without using the correct and accurate terms. The obvious problem is that the average lay person will be unfamiliar with such terminology, hence this vocabulary:

Links

 * Half Hull Model Ship (Wikipedia)
 * Why Half Hulls (Maritime Half Hull Ship Models and Nautical Art website)
 * Traditional Model Yacht Design (US Vintage Model Yacht Group)

Script
This code is running bug free. But due to the large range of possible inputs it may fail for some inputs. If so please report it.