Description |
---|
This macro generates both three dimensional half-hull and full-hull models from a series of 2D line drawings. 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. Macro version: 1.0 Last modified: 2016-01-25 FreeCAD version: <= 0.16 Download: ToolBar Icon Author: Piffpoof |
Author |
Piffpoof |
Download |
ToolBar Icon |
Links |
Macros recipes How to install macros How to customize toolbars |
Macro Version |
1.0 |
Date last modified |
2016-01-25 |
FreeCAD Version(s) |
<= 0.16 |
Default shortcut |
None |
See also |
None |
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.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "http://pastebin.com/raw/tZMpUi6F" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("http://pastebin.com/raw/tZMpUi6F")
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.
The initial purpose of this code was to provide a symmetrical hull which was malleable so it could be fitted to the 3D model being constructed. As the software progressed it was generalised so hopefully it would be of some use to persons:
Certainly commercial boat designers have all sorts of high end software to assist their work, this isn't supposed to replace that. Rather this is for the hobbyist or home builder to tinker around with.
Nautical blueprints have a distinct history with respect to buildings and so are somewhat different in presentation. This is an example of a sailing boat which is more than a century old:
One of the end goals of this software is to use the Draft workbench to generate some of these diagrams using the model to generate the lines.
Note on Units in FreeCAD:
At present there isn't really any units management system within FreeCAD, but obviously a boat builder or modeller will need an accurate dimensioning system. To use this macro, decide to set the FreeCAD grid size to what ever is appropriate for your work (e.g. mm, cm, inch, foot). FreeCAD is consistent, one FreeCAD unit will constantly equal to one FreeCAD unit. And if you have decided to have a FreeCAD unit equal a specific physical length, then your drawings will remain consistently dimensioned. At present there is work on a units system for FreeCAD so this situation may change soon.
For this macro the hull shapes are defined by a minimum of 3 FreeCAD Sketches: one in the YZ plane, one or more in the XZ plane, one in the XY plane. Here is the minimum hull supported by this macro, it has only 3 Sketches:
Note: in the above diagram we are looking directly at the stern, the bow is pointing away from the viewpoint.
From front to back (bow to stern) the 3 Sketches are:
stemline |
YZ plane |
red line in sketch |
cross-section |
XZ plane |
green line in Sketch |
transom |
XY plane |
blue line in Sketch |
Perhaps it is easier to see with 7 Sketches (one in YZ plane, one in XY plane and 5 in the XZ plane):
With 5 Sketches in the XZ plane it is becoming easier to perceive the shape of the hull. The next 2 pictures show the Sketch lines superimposed on the model FreeCAD constructs,
the second is the same model rotated 90 degrees so the bow is in the foreground:
Some points to consider:
With enough Sketches the model generated may even approach:
The HalfHull macro generates 4 models:
These models are all output in the unified location space of FreeCAD so they can be fitted together, for example the bulkheads can be inserted into the complete hull seamlessly. This is a picture of bulkheads in a boat model during construction:
As well as the bulkheads generated by the macro (note that these bulkheads are for a coachhouse rather than a flush deck):
The composite image below shows the main outputs from this software (the port side half-hull is actually not shown but it is the mirror of the starboard half-hull which is shown). The outputs are in clockwise order from the upper left corner:
As novelty features, the macro will also optionally produce plaques for the half-hulls, and even a bottle for the complete hull:
All the code for halfHullModel.FCMacro is in one macro. So installation is comprised of copying the code to the appropriate Macro directory and invoking the Build Utility from the Macro menu, the Python console or a toolbar button (the preferred method).
The FreeCAD operations involved in generating the hull model are rather complex and numerous. Things like the direction a line is drawn can cause the FreeCAD construction of the hull to either abort or turn out like:
Consequently the steps below need to be followed closely. The macro does allow for certain data inconsistencies but generally if the data (i.e. the Sketches) are incorrect then the output will look like a cheese grater or the macro fill fail with an error.
The following instructions refer to the quadrants of the XY graph, this refers to the 4 quarters of the XY graph and they are labelled as follows:
Create a New Document
The very first thing is to create a new document in FreeCAD . This document will hold all the Sketches that make up your hull definition.
The first step is one of creating data for the hull model to be made from. The data is supplied in the form of Sketches within FreeCAD. After the hull model is generated, if changes are to be made then the Sketches are simply edited, and the second step of running the macro repeatedly.
Save the New Document
Now save the document which contains the Sketches that will define the hull shape, giving it some name that is descriptive
Once the Sketches have all been created and positioned, the document should look like this from the top view :
The principal limitations for constructing the model are:
This concludes the first step which is one of creating the data which the macro will use to create both half-hulls and complete-hulls. The second step is described in the following section which is titled User Interface
In this step the macro will gather some information from the user and then process the input Sketches to generate the desired hull models. This is the only GUI image for the macro and is primarily configuration details for the production of the hull models from the Sketches:
The choices on the GUI window are:
When the macro runs it takes configuring data from the user and then reads Sketcher sketches in the selected input file.
Note: As the macro works through the Sketches it prints out any exceptions as well as some milestones on the Report View. If you get unexpected results or some parts are missing, that is probably the first place to check.
There are various types of bows and sterns for boats, with sterns having much more variety than bows. Here are examples of transoms and bows from the real world alongside the similar macro output:
Sheer Stern
Probably the most common stern, typical of all sizes of vessels from commercial ships through to rowing boats.
Sugar-Scoop Stern
Most likely to be found on a sailing yacht, it is a product of designing to maximise the length of the waterline to benefit from class rules for racing under sail.
Canoe Stern
Found on all sizes of water craft, power and sail, pleasure and commercial.
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:
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 cross-section (i.e. sketch)
To use one of the example files, right-click on the file link and select Save File As... from the menu. The filename will be specified, choose the desired folder/directory to hold the example file.
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:
The following screen snapshot shows the relevant portion of the screen:
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:
aft | the rear aspect of anything on a boat |
chine | a planar facet of a hull, can be used to approximate a curved surface or as a finished building technique |
coachhouse | the part of the central deck which is raised above the deck level - usually to accommodate increased headroom in the interior of the boat |
flush deck | a deck that runs smoothly from the top of one side of the hull to the other, the converse to a coachhouse deck |
forward | also 'fore'; the front aspect of anything on a boat |
port | lefthand side looking forward |
starboard | righthand side looking forward |
stemline | the sloped vertical edge which is the bow of a hull |
transom | the curved top edge of the stern face which can be flat or curved |
Macro_Half_Hull_Model.FCMacro
This script is running bug free. But due to the large range of possible inputs it may fail for some inputs. If so please report it.
The script is too long for the Wiki to display so it must be copied or downloaded from unabbreviated script on pastebin.com