OpenCASCADE BRep Projection
OpenCASCADE BRep Projection
一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上。
![]()
为了验证我的想法,结合原来螺旋线的造型算法,来测试下这种效果的实现。依然采用Tcl脚本在Draw Test Harness中试验。个人觉得高效使用OpenCASCADE的方法应该也是先用Tcl脚本来验证一些想法后,再根据使用到的命令找到OpenCASCADE中DRAW的命令实现,最后再可以根据DRAW中的实现,翻译成C++代码了。
使用下列Tcl脚本生成效果和上图就很类似了,Tcl脚本代码如下所示:
#
# wrap a curve to a surface.
# Shing Liu(eryar@163.com)
# 2016-08-16 22:50
# pload ALL cone aCone *pi
trim aCone aCone *pi *pi line aLine2d
trim aSegment aLine2d *pi mkedge aHelixEdge aSegment aCone *pi # there is no curve 3d in the pcurve edge.
mkedgecurve aHelixEdge 0.001 ttranslate aHelixEdge bsplinesurf aSurface \
\
\
- - - - \
\
\
\
- - \
\
- - - - \
- - - - \ mkface aFace aSurface # use BRepProj_Projection
prj aResult aHelixEdge aFace vdisplay aHelixEdge aFace aResult_1
![]()
![]()
上述代码主要使用了Draw 命令prj,找到prj的实现代码如下所示:
static Standard_Integer prj(Draw_Interpretor& di, Standard_Integer n, const char** a)
{
char newname[];
if (n < ) return ;
TopoDS_Shape InpLine = DBRep::Get(a[]);
TopoDS_Shape InpShape = DBRep::Get(a[]);
Standard_Real DX=Draw::Atof(a[]),DY=Draw::Atof(a[]),DZ=Draw::Atof(a[]);
gp_Dir TD(DX,DY,DZ);
BRepProj_Projection Prj(InpLine,InpShape,TD);
Standard_Integer i = ;
char* temp = newname; if (Prj.IsDone()) {
while (Prj.More()) {
Sprintf(newname,"%s_%d",a[],i);
DBRep::Set(temp,Prj.Current());
//cout<<newname<<" ";
di<<newname<<" ";
i++;
Prj.Next();
}
} //cout<<endl;
di<<"\n";
return ;
}
如上述代码所示,主要使用了类BRepProj_Projection,此类的主要功能是将边或环向其他模型上进行圆锥和圆柱投影。
通过将边或环向其他模型投影的方式即可得到开头图片所示的效果。
PDF Version: OpenCASCADE BRep Projection
OpenCASCADE BRep Projection的更多相关文章
- OpenCASCADE BRep vs. OpenNURBS BRep
OpenCASCADE BRep vs. OpenNURBS BRep eryar@163.com Abstract. BRep short for Boundary Representation. ...
- Topology Shapes of OpenCascade BRep
Topology Shapes of OpenCascade BRep eryar@163.com 摘要Abstract:通过对OpenCascade中的BRep数据的读写,理解边界表示法的概念及实现 ...
- Representation Data in OpenCascade BRep
Representation Data in OpenCascade BRep eryar@163.com 摘要Abstract:现在的显示器大多数是光栅显示器,即可以看做一个像素的矩阵.在光栅显示器 ...
- Geometry Surface of OpenCascade BRep
Geometry Surface of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲面是参数表示的曲面 ,在边界表示中其数据存在于BRep_TFace中, ...
- Geometry Curve of OpenCascade BRep
Geometry Curve of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲线是参数表示的曲线 ,在边界表示中其数据存在于BRep_TEdge中,BR ...
- Locations Section of OpenCascade BRep
Locations Section of OpenCascade BRep eryar@163.com 摘要Abstract:本文结合OpenCascade的BRep格式描述文档和源程序,对BRep格 ...
- OpenCascade BRep Format Description (2)
OpenCascade BRep Format Description eryar@163.com 摘要Abstract:本文结合OpenCascade的BRep格式描述文档和源程序,对BRep格式进 ...
- OpenCascade BRep Format Description
OpenCascade BRep Format Description eryar@163.com 摘要Abstract:本文结合OpenCascade的BRep格式描述文档和源程序,对BRep格式进 ...
- OpenCascade Primitives BRep - Sphere
OpenCascade Primitives BRep - Sphere eryar@163.com Abstract. BRep is short for Boundary Representati ...
随机推荐
- LeetCode-4MedianofTwoSortedArrays(C#)
# 题目 4. Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of size m and n resp ...
- jq跑马灯效果
这几天公司产品有个无缝循环滚动的广告跑马灯要做,最开始想到的是<marquee>标签,但在PC端正常,在安卓广告屏上却怎么都跑不动,后来用的css3的animation,结果也是PC端及其 ...
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- HTML BOM Browser对象
BOM:Browser Object Model,即浏览器对象模型,提供了独立于内容的.可以与浏览器窗口进行互动的对象结构. Browser对象:指BOM提供的多个对象,包括:Window.Navig ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- spring源码分析之<context:property-placeholder/>和<property-override/>
在一个spring xml配置文件中,NamespaceHandler是DefaultBeanDefinitionDocumentReader用来处理自定义命名空间的基础接口.其层次结构如下: < ...
- [C#] C# 知识回顾 - 序列化
C# 知识回顾 - 序列化 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902005.html 目录 序列化的含义 通过序列化保存对象数据 众 ...
- iOS UITableView 与 UITableViewController
很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- 反应器(Reactor)和主动器(Proactor)
网络方面用的比较多的库是libevent和boost.asio,两者都是跨平台的.其中libevent是基于Reactor实现的,而boost.asio是基于Proactor实现的.Reactor和P ...