The reason I was having trouble hiding the elements was that it been so long since I've animated in Anim8or that I forgot you could. I was using visibility. *slaps forehead* Thanks Raxx!
I am using a lot of parent/child relationships but they can only go so far. Taking the near-side valve gear as an example, the upper valve drive rod is a child of the crankshaft, so it pivots smoothly around the eccentric on the shaft. I could then have the gear 'slider' as a child of the upper valve rod, and the lower valve rod as a child of the gear 'slider', but then the lower valve rod has to pivot smoothly around the other eccentric on the crank shaft. It's a "closed system" rather than a hierarchy, so at some stage manual tweaking to line things up is inevitable. I realise the above probably doesn't make any sense...
The gear mechanism's motion is so darned complex, the mechanical design causes some elements to move in very unusual patterns.
Regarding scripting acceleration, the problem occurs when using Frame or Time as an 'input' into a motion script, the output being the angular position of the element. Even using IF statements to govern the speed of rotation, as the motion is not cumulative there is no way for the system to calculate the angular position the element would be at if it had changed speeds over previous frames. For example, lets say an element decelerates from 100 RPM to 20 RPM from frame 500 to frame 600 by using IF statements in the script. At frame 600, the script will set the 'speed' to 20 RPM, and hence calculate the angular position of the element accordingly, but as it is not cumulative the actual position of the element will be set as if it had rotated at 20 RPM for all previous 599 frames. In a nutshell, the script defines the angular position of the shaft, not the speed, and there's the problem.
Previously I have used invisible objects as a kind of variable, in one instance I had all the scripts get the scale of an invisible sphere as a multiplication factor, which was great at keeping all the elements in time and I could change the speed by enlarging or shrinking the sphere, but the same acceleration/deceleration issue occurred if I tried to animate the sphere's scale. When decelerating, the rotating elements actually ran backwards, which makes sense when considering the above paragraph but was dang irritating. I even attempted to use invisible objects as running variables, having the script change an attribute of the object at the end of the calculation (ie. 'speed'), then picking it up at the start of the script for the next frame, but Anim8or wasn't having any of that and delivered a 'circular script' warning.
As I type this I'm thinking there might be a kind of 'best of both worlds' solution here. If a single element's motion was keyframed to include accel/decel events, for example the crankshaft, then every other moving element could use a script to pick up the crankshaft's angular position and use it to define its own angle or position. There'll be a lot of trial and error to get the factors right but it would be preferable to keyframing the whole thing by a long shot. My scripting is rusty as hell but I'm sure a bit of WD40 will get the gears moving again!