OpenCascade Modeling Algorithms Fillets and Chamfers
Modeling Algorithms Fillets and Chamfers
造型算法——倒圆与倒角
一、倒圆Fillet Constructor
1. BRepFilletAPI_MakeFillet
使用类BRepFilletAPI_MakeFillet来为形状添加倒圆。倒圆是用光滑面来代替角边。使用方法如下:
l 首先,给定一个需要倒圆的形状;
l 然后,通过Add方法来添加描述倒圆的参数,倒圆所需的参数包括一个边edge和半径radius。当然,边edge必须由两个面face所共有。倒圆会将原来的边替换成光滑的圆面过渡。
l 最后,通过询问结果来执行倒圆操作。
注:添加一个倒圆两次并不会出错,因为只保留了最后一次添的倒圆。
Figure 1. Filleting two edges using radius r1 and r2
下面给出一个将创建一个倒圆的长方体,其尺寸分别为a,b,c,倒圆半径r。
Figure 2. Filleting a box
代码如下所示,创建上图所示的倒圆的长方体的参数分别为:
a = 100,b = 60,c = 80,r = 10:
- #include <TopoDS_Shape.hxx>
- #include <TopoDS.hxx>
- #include <BRepPrimAPI_MakeBox.hxx>
- #include <TopoDS_Solid.hxx>
- #include <BRepFilletAPI_MakeFillet.hxx>
- #include <TopExp_Explorer.hxx>
- TopoDS_Shape FilletedBox(const Standard_Real a,
- const Standard_Real b,
- const Standard_Real c,
- const Standard_Real r)
- {
- TopoDS_Solid Box = BRepPrimAPI_MakeBox(a,b,c);
- BRepFilletAPI_MakeFillet MF(Box);
- // add all the edges to fillet
- TopExp_Explorer ex(Box,TopAbs_EDGE);
- while (ex.More())
- {
- MF.Add(r,TopoDS::Edge(ex.Current()));
- ex.Next();
- }
- return MF.Shape();
- }
如下图所示为创建一个半径变化的倒圆操作:
Figure 3. Evolutive radius fillet
Figure 4. Evolutive radius fillet a box
程序代码如下所示:
- 1: TopoDS_Shape theBox = BRepPrimAPI_MakeBox(200, 200, 200);
- 2: BRepFilletAPI_MakeFillet Rake(theBox);
- 3: ChFi3d_FilletShape FSH = ChFi3d_Rational;
- 4: Rake.SetFilletShape(FSH);
- 5:
- 6: TColgp_Array1OfPnt2d parAndRad(1, 6);
- 7: parAndRad.SetValue(1, gp_Pnt2d(0, 10));
- 8: parAndRad.SetValue(2, gp_Pnt2d(50, 20));
- 9: parAndRad.SetValue(3, gp_Pnt2d(70, 20));
- 10: parAndRad.SetValue(4, gp_Pnt2d(130, 60));
- 11: parAndRad.SetValue(5, gp_Pnt2d(160, 30));
- 12: parAndRad.SetValue(6, gp_Pnt2d(200, 20));
- 13:
- 14: TopExp_Explorer ex(theBox, TopAbs_EDGE);
- 15: Rake.Add(parAndRad, TopoDS::Edge(ex.Current()));
- 16: TopoDS_Shape evolvedBox = Rake.Shape();
- 17:
2. BRepFilletAPI_MakeFillet2d
BRepFilletAPI_MakeFillet2d is used to construct fillets and chamfers on planar faces.
我按照示例代码运行了一下程序,结果程序总是崩溃,其操作的效果不得而知,所以也得不到真实的效果图。将其程序代码列出如下所示:
- 1: #include “BRepPrimAPI_MakeBox.hxx”
- 2: #include “TopoDS_Shape.hxx”
- 3: #include “TopExp_Explorer.hxx”
- 4: #include “BRepFilletAPI_MakeFillet2d.hxx”
- 5: #include “TopoDS.hxx”
- 6: #include “TopoDS_Solid.hxx”
- 7:
- 8: TopoDS_Shape FilletFace(const Standard_Real a,
- 9: const Standard_Real b,
- 10: const Standard_Real c,
- 11: const Standard_Real r)
- 12: {
- 13: TopoDS_Solid Box = BRepPrimAPI_MakeBox (a,b,c);
- 14: TopExp_Explorer ex1(Box,TopAbs_FACE);
- 15:
- 16: const TopoDS_Face& F = TopoDS::Face(ex1.Current());
- 17: BRepFilletAPI_MakeFillet2d MF(F);
- 18: TopExp_Explorer ex2(F, TopAbs_VERTEX);
- 19:
- 20: while (ex2.More())
- 21: {
- 22: MF.AddFillet(TopoDS::Vertex(ex2.Current()),r);
- 23: ex2.Next();
- 24: }
- 25:
- 26: // while...
- 27: return MF.Shape();
- 28: }
- 29:
二、倒角Chamfer Constructor
1.BRepFilletAPI_MakeChamfer
类BREpFilletAPI_MakeChamfer的使用方法与BRepFilletAPI_MakeFillet大致类似,但稍有不同:
a) The surfaces created are ruled and not smooth;
b) The Add syntax for selecting edges requires one or two distances, one edge and one face(contiguous to the edge);
Add(dist, E, F);
Add(d1, d2, E, F); with d1 on the face F.
Figure 5. Creating a chamfer
Figure 6. The box with chamfers
程序代码如下所示:
- 1: TopoDS_Shape theBox = BRepPrimAPI_MakeBox(130,200,170);
- 2: BRepFilletAPI_MakeChamfer MC(theBox);
- 3: TopTools_IndexedDataMapOfShapeListOfShape M;
- 4: TopExp::MapShapesAndAncestors(theBox,TopAbs_EDGE,TopAbs_FACE,M);
- 5:
- 6: for (Standar1d_Integer i;i<M.Extent();i++)
- 7: {
- 8: TopoDS_Edge E = TopoDS::Edge(M.FindKey(i));
- 9: TopoDS_Face F = TopoDS::Face(M.FindFromIndex(i).First());
- 10: MC.Add(15,15,E,F);
- 11: }
- 12:
- 13: TopoDS_Shape ChanfrenedBox = MC.Shape();
- 14:
PDF Version: Modeling Algorithms Fillets and Chamfers
OpenCascade Modeling Algorithms Fillets and Chamfers的更多相关文章
- OpenCascade Modeling Algorithms Boolean Operations
Modeling Algorithms Boolean Operations of Opencascade eryar@163.com 布尔操作(Boolean Operations)是通过两个形状( ...
- OpenCASCADE Hidden Line Removal
OpenCASCADE Hidden Line Removal eryar@163.com Abstract. To provide the precision required in industr ...
- OpenCascade Sweep Algorithm
OpenCascade Sweep Algorithm eryar@163.com Abstract. Sweeps are the objects you obtain by sweeping a ...
- Overview of OpenCascade Library
Overview of OpenCascade Library eryar@163.com 摘要Abstract:对OpenCascade库的功能及其实现做简要介绍. 关键字Key Words:Ope ...
- OpenCascade简介
OpenCascade简介 Overview of OpenCascade Library eryar@163.com 摘要Abstract:对OpenCascade库的功能及其实现做简要介绍. ...
- A Simple OpenCASCADE Qt Demo-occQt
A Simple OpenCASCADE Qt Demo-occQt eryar@163.com Abstract. OpenCASCADE have provided the Qt samples ...
- Building OpenCascade on Windows with Visual Studio
Building OpenCascade on Windows with Visual Studio eryar@163.com 摘要Abstract:详细说明OpenCascade的编译配置过程,希 ...
- The Installation and Compilation of OpenCASCADE
OpenCASCADE的编译 The Installation and Compilation of OpenCASCADE eryar@163.com 一. 安装OpenCASCADE 可以从Ope ...
- OpenCascade Primitives BRep - Box
OpenCascade Primitives BRep - Box eryar@163.com Abstract. BRep is short for Boundary Representation. ...
随机推荐
- JBOSS内存参数详解
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=128m -XX:MaxPermSize=25 ...
- java入门(1)
今天开始了java的学习,是同学给的一个说是外面培训的视频,因为我个人的专业是硬件,对软件开发其实也蛮有兴趣,不过确实有跟风的嫌疑哈,因为大家都说现在的主流就是java,所以就跟软件的人要了它的资料, ...
- jdbc 4.0新特性
来自网络 在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这个以 JSR-221 为代号的版本 , 提供了更加 ...
- redis持久化以及主从服务器的配置
作者:silenceper 日期:2013-10-03 原文地址:http://silenceper.com/archives/959.html redis 与memcached 最大的一个区别就是R ...
- 使用Spring注解来简化ssh框架的代码编写
目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...
- EBS excel模板xml publisher开发
前提: BI publisher下载地址: http://www.oracle.com/technetwork/middleware/bi-publisher/downloads/index.html ...
- 如何编写 Cloud9 JavaScript IDE 的功能扩展
上周末我们在JSConf.eu发布了 Cloud9 IDE ,同时发布了对应的GitHub项目.在4天时间里该项目得到340个人的关注和将近50个fork.Cloud9的口号是由"由Java ...
- ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上
一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...
- 【Win10】UAP/UWP/通用 开发之 RelativePanel
[Some information relates to pre-released product which may be substantially modified before it's co ...
- 基于uploadify.js实现多文件上传和上传进度条的显示
uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify. ...