OpenScad library to build Joints that can be snaped and unsnaped.
Be carefull the circular one with external springs is a one time joint, if you try to remove it it will break.
Sample OpenSCAD file to do it:
joint = newSnapCircleInt ();
joint_e = newSnapCircleExt ( source=joint );
Full documentation here: agentscad snap joint