posts - 419, comments - 576, trackbacks - 0, articles - 0

OpenCascade MeshVS Usage

Posted on 2014-03-27 18:52 eryar 阅览(2745) 谈论(8)  修改 保藏 引证 所属分类: 2.OpenCASCADE

OpenCascade MeshVS Usage

eryar@163.com

Abstract. MeshVS means Mesh Visualization Service. It can be used to representation mesh in different style, such as colored stress patterns mesh, mesh with text and mesh like vector(with arrow). So MeshVS usually used for CAE programming. This paper focus on the MeshVS usage.

Key words. OpenCascade, Mesh, MeshVS, Colored stress Patterns

1. Introduction

视觉是人类获取外部信息和彼此沟通的首要手法。科学核算可视化包含曲线曲面拟合、坐标改换、体制作等,中心是物理场可视化。这是由于研究人员或许工程师首要关怀的内容是温度场散布、结构位移、资料变形、流场速度、应力应变散布等。这些工程数据悉数是以场的方法存在,构成了数学意义上的标量场、矢量场和张量场。因而,标量场、矢量场和张量场的可视化占有了科学核算可视化技能研究的主导地位。——王成恩《面向科学核算的网格区分与可视化技能》。

在OpenCascade中的包MeshVS供给了网格的可视化功用。运用包MeshVS供给的类和简略函数能够完成网格的灵敏显现:

l 显现网格,也能够躲藏部分网格及极点;

l 运用简略通用的接口来显现核算和剖析的成果;

l 数据有多种视觉作用:五颜六色云图colors、点图标vectors、带文字texts和变形网格deformed mesh;

l 网格实体的交互挑选;

本文首要介绍OpenCascade中MeshVS的运用办法。对有需求网格可视化功用的读者,能够直接运用OpenCascade中供给的这个功用。对其完成算法感兴趣的读者,能够结合相关书本,对其完成原理进行研究。

2. Test Mesh in Draw Test Harness

在OpenCascade供给的文档《Test Harness User’s Guide》中有一个章节,示例了MeshVS的用法AIS Viewer-Mesh Visualization Service。先经过这些Tcl的指令,来展现一下MeshVS的显现作用。

wps_clip_image-24339

Figure 2.1 Use meshfromstl Command to Display the Mesh

wps_clip_image-25495

Figure 2.2 Display the Mesh in Shading Mode

wps_clip_image-22677

Figure 2.3 Different color for each element of the Mesh

wps_clip_image-16686

Figure 2.4 Different Color for each node with texture interpolation

上图所示是五颜六色云图(Colored Stress Patterns)的可视化。云图是一种运用广泛的标量场可视化办法,云图在色彩与标量数据之间树立某种确认映射联系,在核算机屏幕上制作一个色彩离散改变的图画来显现科学核算成果。云图将标量场定义域的数据映射成不同的色彩,然后经过色彩改变来反映数据场中数据的改变规则。

3. MeshVS Usage

在《Visualization User’s Guide》中对MeshVS_Mesh的运用办法进行了具体阐明,在此对其简略翻译一下。

MeshVS_Mesh是一个可交互的表明网格的目标,与AIS_Shape不同的是其几许数据由数据源(Data Source: MeshVS_DataSource)来描绘极点node和元素element。所以,能够自定义数据源。可是,数据源(Data Source)并没有供给任何特点信息,如极点的色彩(nodal colors),可是能够经过挑选不同的显现生成器(Presentation Builder)方法来完成。

MeshVS_Mesh的显现都是由显现生成器(Presentation Builder: MeshVS_PrsBuilder)来生成。经过挑选不同的显现生成器来生成不同款式的网格,乃至能够自定义显现生成器。

wps_clip_image-797

Figure 3.1 Different Presentation Builder for Different Style

由上图可知,显现生成器有五种款式:

l MeshVS_MeshPrsBuilder:根本显现生成器,只可用来显现网格;

l MeshVS_TextPrsBuilder:文本显现生成器,能够用来在网格中显现文本;

l MeshVS_VectorPrsBuilder:向量显现生成器,能够用来在网格中显现箭头;

l MeshVS_NodalColorPrsBuilder:极点色彩生成器,能够给网格中每个极点设置不同色彩;

l MeshVS_ElementalColorPrsBuilder:元素色彩生成器,能够给网格中每个三角面片设置不同的色彩;

能够经过如下函数来增加、删去的显现生成器:

MeshVS_Mesh::AddBuilder(const Handle_MeshVS_PrsBuilder& theBuilder, 
                        Standard_Boolean TreatAsHilighter);
MeshVS_Mesh::RemoveBuilder(
const Standard_Integer& Index);
MeshVS_Mesh::RemoveBuilderById(
const Standard_Integer& Id);

如下程序所示能够显现经过STL读取的网格: 

// read the data and create a data source.
Handle(StlMesh_Mesh) aSTLMesh = RWStl::ReadFile (aFile, aProgress);
Handle( XSDRAWSTLVRML_DataSource ) aDS 
= new XSDRAWSTLVRML_DataSource( aSTLMesh );

// create mesh.
Handle( MeshVS_Mesh ) aMesh = new MeshVS_Mesh();
aMesh
->SetDataSource( aDS );

// use default presentation builder.
Handle_MeshVS_MeshPrsBuilder aBuilder = new MeshVS_MeshPrsBuilder(aMesh);
aMesh
->AddBuilder(aBuilder, Standard_True);

wps_clip_image-4815

Figure 3.2 Mesh Text by MeshVS_TextPrsBuilder 

wps_clip_image-18727

Figure 3.3 Mesh Vector by MeshVS_VectorPrsBuilder

4. Conclusion

本文对OpenCascade的网格显现包MeshVS进行了介绍,并运用不同的显现生成器(Presentation Builder)生成不同的显现作用。对科学核算可视化感兴趣的读者能够结合其源程序剖析其完成。

由于XSDRAWSTLVRML_DataSource只能读取STL格局文件中的网格,且依靠Tcl,所以假如需求自己的网格数据源(Data Source)能够参阅源程序,依据需求自己完成一个数据源。

5. References

1. 王成恩. 面向科学核算的网格区分与可视化技能. 科学出版社. 2011

Feedback

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-06 16:22 by birds
您好,
我经过MeshVS_Mesh显现生成读取的stl文件,之后又经过MeshVS_ElementalColorPrsBuilder增加色彩面片,可是该怎样将生成的网格模型显现为带有暗影立体状况,而不是纯色彩、没有立体感。

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-06 17:11 by eryar
@birds
Hello,

你是想在occ中显现stl文件?

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-06 18:13 by birds
嗯 对 由于stl文件简略,读写速度最快,所以我想导入stl格局来做仿真模仿测验。

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-06 20:41 by eryar
@birds
显现STL不需求用这个类。

看你用的occ哪个版别,最新版别中能够直接显现STL网格。

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-06 21:51 by birds
@eryar
我用的是7.0版别的occ,那需求怎样能够完美显现stl实体。请教

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-07 11:27 by eryar
@birds
主张你用最新版别的occ7.3.0. 其中有关于纯网格模型的支撑:
0028125: Modeling Algorithms - support of BRep shapes based on tessellated geometry
https://tracker.dev.opencascade.org/view.php?id=28125

怎么读取和显现网格模型(STL等),可参阅readstl指令:
https://tracker.dev.opencascade.org/view.php?id=29868

http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blob;f=src/XSDRAWSTLVRML/XSDRAWSTLVRML.cxx;h=c42e9314c8a77e01065ba75399f1497f41985b27;hb=4c4420dfe9d87335c4f920a4ee409e3d8cfd0203

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-08 09:04 by birds
@eryar
TopoDS_Shape aShape;
if (!toCreateCompOfTris)
{
// Read STL file to the triangulation.
Handle(Draw_ProgressIndicator) aProgress = new Draw_ProgressIndicator (theDI, 1);
Handle(Poly_Triangulation) aTriangulation = RWStl::ReadFile (aFilePath.ToCString(), aProgress);

TopoDS_Face aFace;
BRep_Builder aB;
aB.MakeFace (aFace);
aB.UpdateFace (aFace, aTriangulation);
aShape = aFace;
}
是不是最要害的便是这个,RWStl::ReadFile能够直接生成三角网格,然后将每个网格叠加到面上,而之前版别readFile只能生成mesh模型,从而核算点,画网格,特费时间。
谢谢博主

# re: OpenCascade MeshVS Usage  回复  更多谈论   

2018-08-08 10:28 by eryar
@birds
是的。

之前版别读STL也慢些。