Mon, 06/04/2012 - 12:26
Hi,
I am trying to trim the Nurbs Surface and trim it...here is a code
Handle(Geom_BSplineSurface) bSurface;
bSurface = new Geom_BSplineSurface(PolesArray,WeightArray,UKnotsArray, VKnotsArray, UMultiplicitiesArray, VMultiplicitiesArray,(nurbsSurfaceData->Uorder)-1/*U Degree*/,(nurbsSurfaceData->Vorder)-1/*V Degree*/,Standard_False,Standard_False);
Handle(TopTools_HSequenceOfShape) aHSequenceOfShape = new TopTools_HSequenceOfShape();
BRepBuilderAPI_MakeFace faceMaker(bSurface,Precision::Confusion());
faceMaker.Add(wire) ;
TopoDS_Face Nurbsface = faceMaker.Face();
I am not able to see trim face.I also tried to do it by another way
BRepBuilderAPI_MakeFace faceMaker(bSurface,wire, Precision::Confusion());
still no results plz help
Mon, 06/04/2012 - 12:42
Hi Rahul,
BRepBuilderAPI_MakeFace faceMaker(bSurface, wire, Precision::Confusion()); will work!
Just check the following things.
(1). Whether the wire is correct or not? Use the following code.
// Check whether wire is Valid or not
BRepCheck_Analyzer brepCheckWire(wire);
Standard_Boolean isValidWire = brepCheckWire.IsValid();
This should return 1. if it is returning zero, i.e., something is wrong with the wire. Then check whether wire is closed or not?
(2) Check the orientation of the wire in the face. Use the code below.
TopoDS_Face builtFace = faceMaker.Face();
BRepCheck_Face checkFace(builtFace);
BRepCheck_Status orientStatus = checkFace.OrientationOfWires();
if(orientStatus == BRepCheck_BadOrientationOfSubshape)
{
wire.Reverse();
// Creating OCCT Face
BRepBuilderAPI_MakeFace aFace(bSurface, wire, Precision::Confusion());
builtFace = aFace.Face();
}
(3) If everything is correct above then use the following code; Try to fix the face, This should definitely solve your problem;
TopoDS_Face builtFace = faceMaker.Face();
// Fixing the resulting face
ShapeFix_Face faceFix(builtFace);
faceFix.FixIntersectingWires();
faceFix.FixMissingSeam();
faceFix.FixOrientation();
faceFix.Perform();
builtFace = faceFix.Face();
Regards,
Sharad Verma
Mon, 06/04/2012 - 15:18
Thanks SharadJi for the reply,
I tried ur first two ways...
first one shows wire is valid.
second one shows the error of BRepCheck_BadOrientationOfSubshape and tried to do it according to ur way,still not working!!
:(
N thank you for Help
Mon, 06/04/2012 - 15:53
But ur third solution is working..thanks a lot :D