BRepFeat does not work even though edge has PCurve on Face to split.

Dear all,

I am trying to split a face using one edge (which intersects two edges and split the face in two) using the BRepFeat_SplitShape class. I am absolutely positive the edge has got a PCurve on the face. Indeed, I do a test using BRep_Tool::CurveOnSurface and the Handle to the Geom2d_Curve is always non-null. However, when I use the BRepFeat_SplitShape and get the TopTools_ListOfShape using the Left() method, the list is empty.

Please note that if I take another edge more "central" to the face, the method works. I have attached a simple picture to help. Both edges in the picture are obtained from normal projections of longer edges onto the face using the NormalProjection clas..

I sincerely thank you for your help,

Kind regards,

Paolo

Attachments: 
Paolo Tricerri's picture

Dear all,

a small update. Although from the visualization of the face and the cutting edge it seemed the cutting edge was intersecting two edges (part of the boundary) it was not the case and so, the SplitShape class was not able to split the face, which makes perfectly sense.

I have now successfully split the face.

Regards,
Paolo

Paolo Tricerri's picture

Dear all,

I apologise but I still have got one question. I do not understand what is intended with the "left" part of the shape in the documentation of the SplitShape class. Indeed, although I have now the edge cutting in two parts the face (and I get two faces from the SplitShape method), it seems to me that the Left() method gives always the same results regardless of the orientation of the edge. Basically, it seems to me that the left part is not necessarily the left w.r.t to the cutting edge.

Is there anyone who has a more detailed knowledge of what the Left() method returns?

Thank you very much!
Regards,

Paolo

Paolo Tricerri's picture

Dear all,

small update. At the moment I detect the region I want to save from the SplitShape algorithm by extracting the list of modified shapes and, if they are faces, creating TopoDS::Face( ithShape ). Afterwards, I extract the UVBounds of the face and compute the point BRep_Tool::Surface( ocFace )->Value( (uMin + uManx) / 2.0, (vMin + vMax ) / 2.0 ) and check on which side it is. If it's on the side I want, I save the face.

Thanks,

Regards,
Paolo