在OpenCasCade的获得一个曲面的边界线

来源:互联网 发布:淘宝能开发票吗 编辑:程序博客网 时间:2024/05/01 14:00

     前段时间在OCC中建模的时候一直困扰于如何获得GeomPlate_Surface的面的边界线。查了很多资料,从该类的声明中可以看到void RealBounds(Standard_Real& U1,Standard_Real& U2,Standard_Real& V1,Standard_Real& V2) const;这个函数,但是这个函数只能得到这个面的最大x,y和最小x,y值。同理在Geom_BSplineSurface中其自身也有获得这几个值的函数:void  Bounds (Standard_Real &U1, Standard_Real &U2, Standard_Real &V1, Standard_Real &V2) ,但这些都不是我想要的。后来我发现有一个BndBox的类,但是它的基本功能其实和上面两个函数相差无几。

后来我在例子代码中看到这么一段代码,解决了我的问题


Handle(Geom_Surface) aSurf;TopoDS_Wire    Wire[2];...TopoDS_Face myFace = BRepBuilderAPI_MakeFace(aSurf, Precision::Confusion());Face[r-1]=myFace;//////////////////////////////////////////////////////////////////////////////////////ShapeAnalysis_FreeBounds aFreeBounds(myFace, Standard_False, Standard_True);TopoDS_Compound aClosedWires = aFreeBounds.GetClosedWires();TopTools_IndexedMapOfShape aWires;TopExp::MapShapes(aClosedWires, TopAbs_WIRE, aWires);TopoDS_Wire aWire;Standard_Integer nbWires = aWires.Extent();if (nbWires) aWire = TopoDS::Wire(aWires(1));else return;Wire[r-1]=aWire;



0 0