教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

Open CASCADE基础介绍(5)

来源:网络收集 时间:2026-08-23
导读: 一般情况下,所生结果为:NURBS,但是,在一些特殊的情况下,可以生成平面,园柱,球,园锥等; 参数,U,沿着截面的方向,V沿着路径方向; Geom_BezierSurface类: 生成一个Bezier表面; Geom_OffsetSurface类:

一般情况下,所生结果为:NURBS,但是,在一些特殊的情况下,可以生成平面,园柱,球,园锥等;

参数,U,沿着截面的方向,V沿着路径方向;

Geom_BezierSurface类:

生成一个Bezier表面;

Geom_OffsetSurface类:

用来偏移一个表面; 比如:

Standard_Real offset = 1;

Handle(Geom_OffsetSurface) GOS = new Geom_OffsetSurface(aGeomSurface, offset);

Geom_SweptSurface类:

有两个派生类,分别用来生成一个回转体表面和一个延展体表面;

Geom_SurfaceOfLinearExtrusion:用来描述一个线性延展表面; 它的基类是:Geom_Surface类 比如:

Handle(Geom_BSplineCurve) aCurve

=GeomAPI_PointsToBSpline(array).Curve(); gp_Dir aDir(1,2,3);

Handle(Geom_SurfaceOfLinearExtrusion) SOLE =new Geom_SurfaceOfLinearExtrusion(aCurve,aDir);

Handle(Geom_RectangularTrimmedSurface) aTrimmedSurface =new Geom_RectangularTrimmedSurface(SOLE,-10,10,false); Geom_SurfaceOfRevolution类,表示一个回转体表面;

比如:

Handle(Geom_BSplineCurve) aCurve =

GeomAPI_PointsToBSpline(array).Curve(); Handle(Geom_SurfaceOfRevolution) SOR =new Geom_SurfaceOfRevolution(aCurve,gp::OX());

1:利用一个二维数组来生成曲面的方法: TColgp_Array2OfPnt array3 (1,5,1,5); array3.SetValue(1,1,gp_Pnt (-4,-4,5)); ...

array3.SetValue(2,1,gp_Pnt (-2,-4,4)); ...

Handle(Geom_BSplineSurface) aSurf2

=GeomAPI_PointsToBSplineSurface(array3).Surface(); 2:GeomAPI_ExtremaSurfaceSurface类: 计算两个表面之间的极值点; 主要方法:

(1):Quantity_Length LowerDistance() const;计算两个表面的最短距离; (2):Standard_EXPORT

void LowerDistanceParameters(Quantity_Parameter&

U1,Quantity_Parameter& V1,Quantity_Parameter& U2,Quantity_Parameter& V2) const;

得到第一个表面上的极值点的UV参数和第二个表面上的极值点的UV参数; (3):void NearestPoints(gp_Pnt& P1,gp_Pnt& P2) const;得到第一个表面上的极值点和第二个表面上的极值点;

(4): Quantity_Length Distance(const Standard_Integer Index) const;得到第N个极值点的距离;

(5):Standard_Integer NbExtrema() const;极值的数目; ...... 示例:

GeomAPI_ExtremaSurfaceSurface ESS(aSurf1,aSurf2); Quantity_Length dist = ESS.LowerDistance(); gp_Pnt P1,P2;

ESS.NearestPoints(P1,P2); gp_Pnt P3,P4;

Handle(Geom_Curve) aCurve;

Standard_Integer NbExtrema = ESS.NbExtrema(); for(Standard_Integer k=1;k<=NbExtrema;k++){

ESS.Points(k,P3,P4);

aCurve= GC_MakeSegment(P3,P4).Value();

DisplayCurve(aDoc,aCurve,Quantity_NOC_YELLOW3,false); }

一:关于体的类BRepBuilderAPI_MakeVertex创建点;

BRepBuilderAPI_MakeEdge类此类用来创建边;

比如,由直线生成边:

gp_Lin line(gp_Ax1(gp_Pnt(10,10,10),gp_Dir(1,0,0)));

WhiteEdge = BRepBuilderAPI_MakeEdge(line,-20,10); 下面为生成四分之一园边:

gp_Elips Elips(gp_Ax2(gp_Pnt(10,0,0),gp_Dir(1,1,1)),60,30);

RedEdge = BRepBuilderAPI_MakeEdge(Elips,0,PI/2); 下面是由曲线生成边:

Handle (Geom_BezierCurve) curve = new Geom_BezierCurve(array); BRepBuilderAPI_MakeEdge ME (curve); GreenEdge = ME; V3 = ME.Vertex1(); V4 = ME.Vertex2();

BRepBuilderAPI_MakeWire类用来创建一个Wire类;

用一个Wire和一个边来生成一个新的Wire: ExistingWire = BRepBuilderAPI_MakeWire(Edge2);

Edge3 = BRepBuilderAPI_MakeEdge(gp_Pnt(-300,0,-80),gp_Pnt(-90,20,-30));

BRepBuilderAPI_MakeWire MW1(ExistingWire,Edge3);

if (MW1.IsDone()) {YellowWire = MW1;} 用一个Wire和添加边的方法来生成Wire: BRepBuilderAPI_MakeWire MW;

MW.Add(ExistingWire2);

MW.Add(Edge5);

MW.Add(Edge6);

MW.Add(Edge7);

if (MW.IsDone()) {

WhiteWire = MW.Wire();

LastEdge = MW.Edge();

LastVertex = MW.Vertex(); }

BRepBuilderAPI_MakeFace类生成一个面;有多种生成面的方法;

--通过一个封闭曲线生成面:

BRepBuilderAPI_MakeFace(curve);

--通过一个Wire生成面:

BrownFace = BRepBuilderAPI_MakeFace(YellowWire);

Bnd_Box2d类:定义一个二维空间的边界盒,可以得出边界盒各个点的值,有时,

在某个方向是无限大,这种情况下,称为在此方向上是开放的; 示例:

Bnd_Box2d aCBox;

Geom2dAdaptor_Curve GACC (C);

BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox);

Bnd_Box类:定义一个三维空间的边界盒,可以扩大或缩小边界盒,也可以合并两个轴

对齐边界盒;

BRepPrimAPI_MakeBox类用来生成一个立方体;

构造一个立方体可以是两个对角点,一个角点及三个方向长度,可以是非轴对称的:

TopoDS_Shape B2 = BRepPrimAPI_MakeBox (gp_Ax2(gp_Pnt(-200.,-80.,-70.), gp_Dir(1.,2.,1.)), 80.,90.,120.); 使用方法

TopoDS_Face& BottomFace() ;.可以得到立方体的底面;同样,用其它类似的方法可以获得顶面等;

方法TopoDS_Solid& Solid() ;可以将box转化为一个Solid; 方法TopoDS_Shell& Shell() ;可以将box转化为一个shell;

BRepPrimAPI_MakeCylinder类用来生成一个园柱体或园柱体的一部

分; 比如:

TopoDS_Shape C2 = BRepPrimAPI_MakeCylinder gp_Dir(0.,1.,0.)),40.,110.,210.*PI180);

(gp_Ax2(gp_Pnt(200.,0.,200.),

BRepPrimAPI_MakeCone类生成一个园锥或园锥的一部分;

BRepPrimAPI_MakeSphere类生成球体或球体的一部分,可以是U方向

切一部分或V方向切一部分;

BRepPrimAPI_MakeTorus类生成环或环的一部分;

…… 此处隐藏:1939字,全部文档内容请下载后查看。喜欢就下载吧 ……
Open CASCADE基础介绍(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/591939.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)