This is an OpenSCAD customizable model of a rooftop water tank, based on a tank near where I work in New York City. From the photo you can see that a pretty accurate model is possible, but the customization features of OpenSCAD also allow a wide variety of different shapes and types of tanks.
[update 8/14/19 - version 6- some minor bug fixes and additional comments for clarity,
also added stl file set for a basic 8 foot tank]
This model is designed to be printed on a multicolor system such as the Prusa MMU2. This allows the bands of the tank to be printed in a contrasting color to the tank itself, producing a high degree of visible accuracy that would otherwise be difficult to attain. You can also print the deck and the rails in different colors as an integral part of the tank base, though this is less important. Note that to print this model in different colors requires that you produce a separate stl file for each color and then merge the stls in your slicer. Separate stls can be created and rendered by selecting the appropriate part color for each part and rendering separately. The customizer is set up to make this very easy. (more detail on this below).
While it may be theoretically possible to use Thingiverse's customization feature to generate new tanks, the model is complex and takes a while to render even directly on the computer rather than in a browser. It will be much faster and easier to customize it directly in OpenSCAD, which is a free download and a truly excellent open source project. Be sure to download the latest version with the built-in customizer that works very well [( http://www.openscad.org/index.html )]. Then just load in the code for this model. No coding is necessary on your part to generate new and different tanks, just enter new parameters, re-render and save. The color choosing parameter makes it easy to select just the portions of the model you need to render in order to print in multiple colors. You can then load the parts to be printed in multiple colors, such as the tank body and bands, together in a slicer that supports multiple color printing to output as a single piece of gcode.
I have included simple designs for the piping and ladders, but you might well choose to use your own parts for this, brass etchings for the ladders would work well as would brass or plastic tubing for the pipe.
Scale- # of mm equaling 1 foot, default is 3.5 for HO scale. Aims to allow for making different scaled models with the human elements remaining appropriately sized regardless of the overall tank size. Not extensively tested, use at your own risk.
Tank diameter- in (scale) feet, self explanatory
Scale factor - a % for scaling the height of the tank and the supports. Needed because my (simple) math function for the variable band separation doesn't play nice with the diameter value. Smaller values make shorter tanks and vice versa, but the factor produces different ratios for each diameter and needs to be larger for larger tanks to achieve a similar ratio. The height and diameter values for the tank and supports will be echoed after a new render in case you want the achieve a specific ratio. Note that if desired you can vary the ratio of tank height to support height by rendering one and then changing the scale factor before rendering the other.
Cross bars - the number of different crossbeam units in the support structure, you can have none, 1, 2, or 3. You probably want to make this consistent with the tank size, i.e. smaller tanks need less support.
Deck - the deck is the walkway that sits at the bottom of the tank for maintenance, etc. Options are 0 for none, 1 for a partial one like the prototype, 2 for a deck that goes halfway around, and 3 for a full deck.
Bottom Base- 0 gets no base (if you choose this you'll need a brim or raft for the base to stick to the print plate), 1 gets you a heavy base modeled after the prototype, and 2 gets you a minimal base with the support beams on blocks.
Layer Height - expected to match (or possibly be a multiple of) the layer height you print at. It is used to set the height of the tank bands. If you want thinner or thicker bands you can change this parameter here to match what you choose in your slicer, or you can just adjust the value on its own. Results when this isn't a multiple of your slicer's height may not work as you wish.
Wire Band Options
These allow some control over the wire bands around the tank:
nlb - number of layers in the wire band, 2 if you want just a flat band and 3 if you want a slightly wider band that sticks out a bit in the middle. Given the small size of these in HO of limited importance, but might be useful in larger scales.
wo - wire offset, how far out the bands stick from the tank body. When using 3 bands it will be the offset for the middle band, and the others will be half of that.
Number of boards in tank - this variable allows you to control the number of vertical boards in the cylindrical tank. The prototype tank probably has over 100, which would take a very long time to render and wouldn't be much visible in HO scale. The default of 64 takes a while to render but looks pretty good in the printed output.
Tank boards groove - If true, the tank is rendered with a small groove between each board, which will probably significantly increase rendering time. Whether or not this produces a useful effect depends on the minimum distances your printer can print. The defaults for these produce a subtle but visible effect in PrusaSlicer with a .4 nozzle.
Color choice (to separate the tower into sub-assemblies for rendering purposes)
Current color - use this to choose the part of the tank you want to render, each color selects a different part of the model. Basic units needing only a single color would be the conical roof piece. the supports/sub-base and the piping/ladders if you choose to use them. The tank needs 2 colors for the bands to be properly visible, and the base just under the tank can have different colors for decking and railings if you have chosen to have a deck. Note that the preference order is important in printing the tank, the bands need to take preference over the tank body or they may not be printed