I can't give you a definitive answer, but I would like to offer a few considerations:
A few years back, I was trying to use Rhino (version 2!) to draw a complex machine
(a CNC router, actually) consisting of about 100 different parts... I soon found
out that, apparently, this kind of application isn't Rhino's forte: Rhino expects you
to build a complex model as a whole... if you then want to change a part, you essentially
have to start from scratch.
To solve this problem, I wrote a macro which would "assemble" a complex model by mounting
each of its parts: each part was a separate Rhino file, and a text file would contain the
instructions about each part needed and where it should be placed in the assembly. Of course,
the same part could be used more than once in different places in the assembly...
This approach worked very well, and then I started thinking about the same problem you
presented: could I test my assembly, to make sure that:
a) there where no intersecting parts and b) there was no floating part, ie: each part
"touched" at least another part...
I was able to write a macro to test for a): It would open the assembly and take each
pair of parts, trying to find the intersection; if the operations succeeded, ie: if
the intersection wasn't null, then the parts were interfering. This also worked fine.
To test for b), I intended to write another macro, similar to the above, trying to
union each pair of parts; a part wouldn't be "floating" if at least one of these
unions was successfull... However, I didn't finish writing this second test since
I started working on something else and left Rhino aside.
I now intend to start over, with version 4, upgrading the 2 macros above and going further,
essentialy trying to add some parametrization to Rhino via macros, and emulating, also
via macros, basic machining operations, so that you could start with chunks of raw material,
in addition to ready-built part models... I think I know how to approach these problems,
but it will take quite a few hours of programming...
Notice, however, that these strategies are still very primitive: a real machine model
should consider not only "touching" parts, but also things like the interface between
a spindle and a bushing, were a minute air space should be present...
Anyhow, except if some Rhino guru has a better asnwer, I think that Rhino isn't (or wasn't,
in version 2) intended for this kind of application, even though some tricks like the
ones I described could patch things to a certain extent... I understand that these applications
are the domain of much more expensive and comples packages, like SolidWorks, but I never
had a chance to work with those high-end engineering appications...