Problem with boolean operation

Hi every body...

I have problem with boolean operation, i know that there is a bug sometime but is it possible to know what is possible to do now.

I use openCascade4.0 on Linux. I read in the bug section that sometime ShapeFix_Shape can help (I try it and it change nothing).

Ok I have two solid shape, one is a
solid of revolution :
TopoDS_Shape Demidistributeur = BRepPrimAPI_MakeRevol(FaceXZ,AxeZ);

an the other is a prism :
TopoDS_Shape Passage = BRepPrimAPI_MakePrism(FaceXY,vecteur,Standard_False);

I have the bad result when i do :
TopoDS_Shape Bloc = BRepAlgoAPI_Common(DemiDistributeur,Passage);

It suppose to be a solid and it's only a surface.

Is it possible to know when the boolean operation work and when there is some problem...

Is fsameparameter or updatetolerance can help?

Any help would be very appreciate...


Stephane Routelous's picture

Perhaps you can "post" what are your FaceXZ, AxeZ, vecteur to be able to reproduce the problem.
Or besser, the DRAW commands.


gene's picture

Ok Stephane, there is the information:

FaceXZ is a TopoDS_Face make with

PlanXZ = gp_Pln(gp_Pnt(0,0,0), gp_Dir(0,1,0) );
Profil1 is a closed wire make of 4 edges that are on the planXZ

AxeZ is the axe gp_Ax1(gp_Pnt(0,0,0), gp_Dir(0,0,1))

FaceXY is a TopoDS_Face make with
PlanXY = gp_Pln(Profil2BSpline1->EndPoint(), gp_Dir(0,1,0) );
Profil2BSpline1 is a Geom_BSPline curve that is
one of the edge of Profil2.
Profil2 is a closed wire make of 4 edges that are on the planXY.
vecteur is a gp_Vec vecteur(gp_Pnt(0,0,Zvaleur1), gp_Pnt(0,0,Zvaleur2) );

The two solids (DemiDistributeur et Passage) intersects very well (on Display everything look great), but the Common operation return only a face. Futhermore, the BRepAlgoAPI_Section operation return all the good edges except the egde of the face return by the Common operation.

I very appreciate your help...

Genevieve who really don't know what to do
in Quebec...