MeshVS_Mesh使用说明2

来源:互联网 发布:联通网络解锁助手 编辑:程序博客网 时间:2024/05/01 07:31

在1中我们完成了数据源的创建,现在可以利用DataSource来创建网格对象了。

成员函数 Standard_EXPORT void AddBuilder (const Handle(MeshVS_PrsBuilder )&Builder, const Standard_Boolean TreatAsHilighter=Standard_False)

 我们需要为Mesh添加一个MeshVS对象,这个对象可以用来显示或者选择时的绘制方式,当 TreatAsHilighter为true时为选择时的绘制方式。

 创建一个各个顶点拥有各自颜色的网格,使用MeshVS_PrsBuilder的子类MeshVS_NodalColorPrsBuilder,

 为网格对象添加数据源

 m_hMesh->SetDataSource (M);

 创建 MeshVS_NodalColorPrsBuilder,注意参数的设置,错误的参数将得不到正确的结果,可以多试几次,
 Handle_MeshVS_NodalColorPrsBuilder Prs = new MeshVS_NodalColorPrsBuilder(m_hMesh,MeshVS_DMF_NodalColorDataPrs | MeshVS_DMF_OCCMask);

 为每个顶点分配颜色,pntArray与1中的warpage中的原始顶点数据相同:

 MeshVS_DataMapOfIntegerColor colormap( pntArray.size() );

    for( int i = 1; i<= m_
pntArray .size(); i++ )
    {
        colormap.Bind(i, coloArrayr[i]);
    }

    Prs->SetColors(colormap);

   为网格添加
MeshVS_NodalColorPrsBuilder,这里我们绘制和选择使用同一个 MeshVS_NodalColorPrsBuilder对象:
    m_hMesh->AddBuilder(Prs,Standard_True);

   设置其他的属性:

    Handle_MeshVS_Drawer meshDrawer = m_hMesh->GetDrawer();

    不显示边
     meshDrawer->SetBoolean(MeshVS_DA_ShowEdges, Standard_False);

    设置拣选方式,注意参数的设置

    m_hMesh->SetMeshSelMethod(MeshVS_MSM_PRECISE );

    设置绘制模式

   m_hMesh->SetDisplayMode( MeshVS_DMF_Shading );

    最后就可以在context中display了。

  一些模式的参数需要仔细选择,文档中的就少较少,可以看看源码各个参数表示的含义。