#### Note: this project is the subject of the Level 5 Putting It All Together tutorial and can be constructed for yourself by following the steps there.

This was my most difficult project, as I wanted to stretch the limits of JIPCAD somewhat. Most of my previous models--and indeed what JIPCAD is primarily intended for--is static depictions of geometric objects. My goal was to build a bell whose clapper would travel back and forth in a pendulum arc, and upon striking the side of the bell would cause lightning to shoot out the side, indicating noise.

I started by building the yoke from simple rectangles, and added some colors to my included Surfaces file (see Common Include Files) to do so--that's the Brown, Orange, and Zinc you can see towards the bottom of the file.

The bell was a little more difficult; the bottom was a simple torus, but the sides and cap of the bell were two shapes for which we didn't have generators--a paraboloid and a section of a hyperboloid, that had to intersect fairly seamlessly.

These I built with general surfaces, which are highly flexible and I recommend to anyone with a specific shape in mind that has an equation (e.g. z = x^2/a^2 + y^2/b^2) but no generator. I added a cylinder and clapper to make a sphere, set them to move along an arc using $time and cosine functions, and ended up with the bell below:

Unfortunately, general surfaces do not have any thickness the same way a torus with radius 3 does, so I ended up with problems:

After some fiddling, I got that out of the way, but now I had a bigger problem: how could I make lightning appear on only one side of the bell at a time, only when the clapper struck, and make it disappear after striking? JIPCAD didn't support a max or if statement, and while the general surfaces do, they don't allow the use of $time or user parameters.

After a significant struggle, I landed on time-based scaling: that is, if I could have the shape expand to full size when the clapper hit the bell, and otherwise be shrunk down to an infinitesimal point, I could model my desired behavior. After some muddling about with finding the correct scaling function (it was sin and cos^128), I finally finished the bell! Tragically I can't show a full gif--it would ruin the reveal too thoroughly, I'll leave that for after you build it for yourself. The full code is available for yourself at the end of the Putting It All Together tutorial, enjoy!