Problems on fuse two solid objects (Boolean operation)

I am meeting probelms very often on fusing solid objects (Boolean operation --> fuse). If the object shape is a little complex, the fuse almost failed due to some unknow reasons.
Attached is two simple BREP file of opencascade format, solid01 and solid02, what I need is fuse both the part together,what I hope is the two objects can be combined together, if the face can be reconstructed then it should be perfect. However, when I try to do that, I get a very strange result with one face was lost. I also get the same result in Salome and FreeCAD.
Can anybody provide any idea? Thanks

ZGE

Attachments: 
zgesi's picture

Does anybody think if this is a precision problem? Such as single precision and double precison when generate the new surface in Boolean operation. Or we simple consider this is a drawback of opencascade?

We tried it in commerical software such as Solidworks and Pro-Engineer, it works very well and very fast. Seems opencascade still need work more to close such commerical technology.

ZGE