//椭圆环
TopoDS_Shape* create_EllipticRing(double DR, double W, double L)
{
// L 必须大于 W
if (W >= L)
return 0;
//创建平面椭圆
gp_Elips ge(gp::XOY(), L, W);
//获得椭圆法向
gp_Ax1 axe1 = ge.Directrix1();
TopoDS_Edge e2 = BRepBuilderAPI_MakeEdge(ge);
BRepBuilderAPI_MakeWire WW(e2);
//创建圆面
gp_Circ circle(gp::XOY(), DR);
circle.SetAxis(axe1); //使圆和椭圆法向平行
TopoDS_Edge circleEdge = BRepBuilderAPI_MakeEdge(circle);
BRepBuilderAPI_MakeWire circleWire(circleEdge);
//扫掠
TopoDS_Shape *ptr = new TopoDS_Shape(BRepOffsetAPI_MakePipe(WW, circleWire));
return ptr;
}
OpenCascade 创建椭圆环
于 2021-02-23 13:21:41 首次发布