I had a go manually, its too manual. As I have around 10 different chair moulds to make. Also not possible in anything but lots of components because of the drafting angles.
First unweld with the angle tolerance set to whatever your normal difference is, then split into disjoint meshes. Both these methods are implemented in the standard mesh components if I recall. If not, they can be implemented very easily through GHPython/C#.