OpenCASCADE 曲面展开

OpenCASCADE 曲面展开

eryar@163.com

 

Abstract: There is a common need in industries dealing with sheet material products (shipbuilding in the sphere of vessel design, construction, aerospace, manufacturing (for example, in clothes fitting software), etc.) to accurately calculate the shape of a sheet material blank to be used for production of a particular detail of the product (a plate).

Keywords: BRep, Unfolding, Developable Surface

1 Introduction

这几天发布了OpenCASCADE中投影相关的理论实现,很多人问到了曲线包覆Wrap的功能。在Solidworks中叫Wrap,其效果如下图所示:

其要求曲线保持形状和长度不变。看上去和投影操作类似,实际上原理是不同的,包覆Wrap更像是模型的图片贴图,把一个二维图片贴到三维曲面表面。

其实OpenCASCADE有一个收费模块叫Unfolding Component,已经实现此功能。OpenCASCADE的付费模块是不开源组件,但是可以联系官方试用。

2 Unfolding Component

曲面展开在制造业中应用广泛,如造船中的船体曲面钢板展开才能加工,如制衣中的服装打版,还有建筑中的通风管道板材的加工等。

在机械或设备中,常有用金属板材制作成各种形状的制件。为了方便加工制造,往往要画出它们的放样图。例如建筑上用到的通风管道都是用铁皮制成的。制造时,一般先按零件图的尺寸,在板材上画成1:1的视图;然后根据实样图画出放样图,再经下料、弯卷、焊接而成。画放样图的关键问题是把制件的表面展开。所谓立体表面展开是指:将立体表面的真实形状和大小顺次连续地展开在一个平面内。由展开得到的图形,叫做展开图。画展开图时,如果考虑设计和加工制造的要求,就是放样图。这些概念在造船中同样适用。

画立体表面展开图的一个基本问题是如何求出立体表面的实形?即曲面与平面的一个映射关系。

https://www.opencascade.com/components/unfolding-component/

OpenCASCADE的Unfolding部件的功能如下:

3D曲面展开的过程是与生产中将平面板加工成曲面板相反的过程。如果模型的曲面是可展曲面(Developable Surface),那么曲面板完全可以通过弯曲得到,这种情况下展开的结果也没有变形(Distortions)。

若模型的曲面是不可展开曲面(Not Developable Surface),即在曲面的一些区域的高斯曲率非0(i.e. has non-zero Gaussian curvature in some areas)。展开结果尽量产生变形。

可以看到展开后,还可以将展开得到的平面与原曲面建立映射Map。有这个功能的话,对于前面提到的曲线包覆有了一个处理思路:

首先,将要包覆的曲面展开成平面;

其次,将要包覆的曲线投影到展开平面上;

最后,将展开平面上的投影线映射回曲面,即可以得到包覆线。

这样就可以保证曲线的形状和长度保持不变。这个思路是我的个人建议,欢迎大家讨论交流,可能会有更好的办法。

 

3 Unwrap Mesh

如果只是想将曲面展开,FreeCAD中提供了曲面展开的实现,在MeshPart工作区中选择Meshes->Unwrap Mesh或Unwrap Face,可以将网格或曲面展开。

对曲面展开算法感兴趣的可以查看FreeCAD中相关功能的源码。

posted @ 2022-04-14 10:09  opencascade  阅读(959)  评论(0编辑  收藏  举报