For all issues regarding the Forums use, please, refer to the Forum Rules.

Our Solutions

Need professional assistance?
Consider our:

Support Offerings

 

Need to speed up your development?
Have a look at our:

Samples & Tools

 

Need some functionality extending standard OCCT capabilities?
Check out our:

Adv. Components

Related pages

Problème avec BRepAlgo_Fuse

Bourgeois's picture
Forums: 

Bonjour,
J'essai de fusionner 2 faces (deux carrés dans le même plan) avec BRepAlgo_Fuse.
Il s'agit de carrés de 10 de côté.
Le second correspond au premier translaté de X (selon l'axe de X uniquement).
En fonction de la valeur de X, soit j'obtient une fusion, soit un échec (il y a un trou dans le wire qui définit la face). Voici deux images illustrant mes propos :
- échec de la fuson (translation de X=9): http://steve.bourgeois.free.fr/Vrac/OCC/Fuse_Trans9_Fail.jpg
- succès de la fuson (translation de X=5): http://steve.bourgeois.free.fr/Vrac/OCC/Fuse_Tran_5_Scucess.jpg
Dans le cas de l'échec, le trou correspond à la zone de superposition.

Voici le code utilisé pour ce test :
//Sommets du premier carré
gp_Pnt E(0,10,0.0);
gp_Pnt F(0,0,0.0);
gp_Pnt G(10,0,0.0);
gp_Pnt H(10,10,0.0);

//Sommets du second carré
gp_Pnt I(9,10,0.0);
gp_Pnt J(9,0,0.0);
gp_Pnt K(19,0,0.0);
gp_Pnt L(19,10,0.0);

//Construction du premier carré
BRepBuilderAPI_MakeWire wireMakerb;
wireMakerb.Add(BRepBuilderAPI_MakeEdge(E, F).Edge());
wireMakerb.Add(BRepBuilderAPI_MakeEdge (F, G).Edge());
wireMakerb.Add(BRepBuilderAPI_MakeEdge(G, H).Edge());
BRepBuilderAPI_MakeEdge ME2b(F, G);
wireMakerb.Add(BRepBuilderAPI_MakeEdge(H, E).Edge());
BRepBuilderAPI_MakeFace faceMakerb (wireMakerb.Wire());
TopoDS_Shape B = faceMakerb.Face();// La face carrée

//Construction du second carré
BRepBuilderAPI_MakeWire wireMakerc;
wireMakerc.Add(BRepBuilderAPI_MakeEdge(I, J).Edge());
wireMakerc.Add(BRepBuilderAPI_MakeEdge (J, K).Edge());
wireMakerc.Add(BRepBuilderAPI_MakeEdge (K, L).Edge());
wireMakerc.Add(BRepBuilderAPI_MakeEdge(L, I).Edge());
BRepBuilderAPI_MakeFace faceMakerc (wireMakerc.Wire());
TopoDS_Shape C = faceMakerc.Face();// La seconde face carrée

TopoDS_Shape faceFuse = BRepAlgo_Fuse(B,C);

Si quelqu'un a une idée sur l'origine du problème ou une autre solution pour faire ce genre de fusions...

Steve

Contact us

Attention: DO NOT use this form for all kind of request for the removal of your personal data. Please follow this link for such cases.