Slow fuse operation on solids

Hi,

I fuse several solids in one, but it takes 3.5 minutes in OpenCascade and only a few seconds in CATIA.
I would like to know, if there is a better way to do this?

Version : 6.8
I use the following code :

TopoDS_Shape Obj1, Obj2;
for(int ii = 0; ii {
if(ii == 0)
{
Obj1 = Obj.at(0);
}
Obj2 = Obj.at(ii + 1);

BRepAlgoAPI_Fuse Fuse(Obj2, Obj1);

if(Fuse.IsDone())
{
Obj1 = Fuse.Shape();
}
}

Let me know if you need any further information.

Thanks,
Alix

Attachments: 
Forum supervisor's picture

Dear Alix,

We tried to reproduce the posted issue in DRAW.
The Draw reproducer is below:

pload ALL
stepread FUSE_INPUT.stp a *
chrono s reset; chrono s start; for {set i 2} {$i < 22} {incr i} {puts "a_$i"; bfuse a_1 a_1 a_$i}; chrono s stop; chrono s show

The result is the next (CPU Intel i7-3450, Windows 7, 64-bit):

OCCT 6.7.0 (32-bit vc9): 22 sec
OCCT 6.7.1 (32-bit vc10): 22 sec
OCCT 6.7.3 (64-bit vc12): 8.3 sec
OCCT 6.8.0 (32-bit vc10): 10.3 sec
OCCT 6.9.0 (64-bit vc10): 20.8 sec
master (64-bit vc10): 18.6 sec

Indeed there is a performance degradation from version 6.8.0 (see the issue #26327), but the time is still much less than posted (3.5 min). Therefore I suggest you to double-check your results.
Another remark is that for better performance sequence of fuse operations could be optimized.

Best regards
FSR