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

Open CASCADE基础介绍(7)

来源:网络收集 时间:2026-08-23
导读: --利用生成一个WIRE,作为管道的路径: Handle(Geom_BezierCurve) curve = new Geom_BezierCurve(CurvePoles); TopoDS_Edge E = BRepBuilderAPI_MakeEdge(curve); TopoDS_Wire W = BRepBuilderAPI_MakeWire(E); --生

--利用生成一个WIRE,作为管道的路径:

Handle(Geom_BezierCurve) curve = new Geom_BezierCurve(CurvePoles);

TopoDS_Edge E = BRepBuilderAPI_MakeEdge(curve);

TopoDS_Wire W = BRepBuilderAPI_MakeWire(E); --生成一个面,作为生成管道的截面:

gp_Circ c = gp_Circ(gp_Ax2(gp_Pnt(0.,0.,0.),gp_Dir(0.,1.,0.)),10.);

TopoDS_Edge Ec = BRepBuilderAPI_MakeEdge(c);

TopoDS_Wire Wc = BRepBuilderAPI_MakeWire(Ec);

TopoDS_Face F = BRepBuilderAPI_MakeFace(gp_Pln(gp::ZOX()),Wc); --利用前两步生成的路径和截面来生成pipe:

TopoDS_Shape S = BRepOffsetAPI_MakePipe(W,F); Handle(AIS_Shape) ais2 = new AIS_Shape(S);

BRepOffsetAPI_ThruSections类

此类继承自BRepBuilderAPI_MakeShape:创建一个loft,通过一组给定的sections,生成一个shell或一个solid;通常,section是wire;但是第一个和最后一个section可以是

vertices; 比如:

BRepOffsetAPI_ThruSections generator(Standard_False,Standard_True);

generator.AddWire(W1);

generator.AddWire(W2);

generator.AddWire(W3);

generator.AddWire(W4);

generator.Build();

TopoDS_Shape S1 = generator.Shape();

Handle(AIS_Shape) ais1 = new AIS_Shape(S1);

BRepBuilderAPI_MakePolygon类

创建一个polygonal wires,可以通过一组点或向量生成,也可以先生成一个空的对象,再添加点。 示例1:

BRepBuilderAPI_MakePolygon P;

P.Add(gp_Pnt(0.,0.,0.));

P.Add(gp_Pnt(200.,0.,0.));

P.Add(gp_Pnt(200.,200.,0.));

P.Add(gp_Pnt(0.,200.,0.));

P.Add(gp_Pnt(0.,0.,0.));

TopoDS_Wire W = P.Wire(); 示例2:

TopoDS_Wire wprof = BRepBuilderAPI_MakePolygon(gp_Pnt(0.,0.,0.),gp_Pnt(-60.,-60.,-200.));

BRepOffsetAPI_MakeEvolved类创建一个可展图形,它是通过一个

planar spine (face or wire)和一个rofile (wire)来生成的,它是一个非循环的sweep (pipe),用profile沿着spline;自相交点将被移除; 比如:

--沿着一个spline,sweep一个profile; Standard_EXPORT BRepOffsetAPI_MakeEvolved(const TopoDS_Face& Spine,const TopoDS_Wire& Profil,const GeomAbs_JoinType Join = GeomAbs_Arc,const Standard_Boolean

AxeProf = Standard_True,const Standard_Boolean Solid = Standard_False,const Standard_Boolean ProfOnSpine = Standard_False,const Standard_Real Tol = 0.0000001);

AxeProf参数如果为true,R是0,X,Y,Z;如果solid为真,结果为一个solid或复合的solids; 示例:

TopoDS_Shape S = BRepOffsetAPI_MakeEvolved(W,wprof,GeomAbs_Arc,Standard_True,Standard_False,Standard_True,0.0001);

BRepBuilderAPI_ModifyShape类当使用BRepTools来创建一个修改

类,主要有以下派生类:

--BRepBuilderAPI_Copy:处理一个图形的拷贝;

--BRepBuilderAPI_Transform 和BRepBuilderAPI_GTransform:用来对一个图形应用几何变形;

--BRepBuilderAPI_NurbsConvert:用来将一个图形转化为NURBS几何体; --BRepOffsetAPI_DraftAngle:创建一个tapered图形;

BRepOffsetAPI_DraftAngle类

创建一个tapered图形;一般过程是: --初始化构造算法;

--输入要taper的特征面; --实现算法; --生成结果; 示例:

TopoDS_Shape S = BRepPrimAPI_MakeBox(200.,300.,150.);

BRepOffsetAPI_DraftAngle adraft(S);

TopExp_Explorer Ex;

for (Ex.Init(S,TopAbs_FACE); Ex.More(); Ex.Next()) {

TopoDS_Face F = TopoDS::Face(Ex.Current());

Handle(Geom_Plane) surf = Handle(Geom_Plane)::DownCast(BRep_Tool::Surface(F));

gp_Pln apln = surf->Pln();

gp_Dir dirF = apln.Axis().Direction();

if (dirF.IsNormal(gp_Dir(0.,0.,1.),Precision::Angular()))

adraft.Add(F, gp_Dir(0.,0.,1.), 15.*PI180, gp_Pln(gp::XOY())); }

ais1->Set(adraft.Shape());

二:关于布尔等实体修改操作相关

BRepAlgoAPI_BooleanOperation

类此类的基类是BRepBuilderAPI_MakeShape类,它是一个抽象类;

可以应用的操作有:BOP_SECTION 、BOP_COMMON、BOP_FUSE、BOP_CUT、BOP_CUT21 有时会产生错误,无法达到想要的结果,根据返回值,可以得到错误信息,含义是: 0:OK

1: 对象创建完成,但结果为空; 2:源图形为空;

3:参数类型检查错误;

4:不能为DSFiller分配内存;

5:此种类型参数的Builder无法工作; 6:不允许的操作;

7:不能为Builder分配内存; >100 参见Builder错误信息; 相关的方法介绍:

--TopTools_ListOfShape& SectionEdges()方法:返回一组截面的边,它们在布尔操作过程中生成;

--Standard_Boolean HasDeleted()方法:如果至少一个图形对象被删除了,返回为真; --Standard_Boolean HasGenerated()方法:如果至少生成了一个图形,返回为真; --Standard_Boolean HasModified()方法:如果至少一个图形被修改了,返回为真;

--TopTools_ListOfShape& Generated(const TopoDS_Shape& S) 方法:返回生成以后的图形的集合;

--TopTools_ListOfShape& Modified2(const TopoDS_Shape& aS)方法:返回修改后的图形的集合;

--Standard_Boolean IsDeleted(const TopoDS_Shape& aS)方法:如果图形S已经被删除,返回为真,即结果图形中不包括图形S;

-BOP_Operation Operation()方法:返回布尔操作的类型;

布尔操作类包括有

BRepAlgoAPI_Cut类, BRepAlgoAPI_Fuse类,

…… 此处隐藏:1413字,全部文档内容请下载后查看。喜欢就下载吧 ……
Open CASCADE基础介绍(7).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)