【VTK+有限元后处理】符号化矢量场绘制

15 篇文章 15 订阅
8 篇文章 5 订阅

目的

符号化有限元模型的节点矢量属性(应力等),将其可视化显示。

代码

构建drawVectorField函数,用于矢量场的符号化显示。代码如下:

def drawVectorField(self, FEMapper, sample_ratio = 10, scale_ratio = 0.015, symbol = 'arrow'):
    self.main_actor.SetMapper(FEMapper)
    self.main_actor.GetProperty().SetOpacity(0.3)  # 设置透明度
    self.main_actor.GetProperty().SetColor(241 / 255, 135 / 255, 184 / 255)  # 设置颜色
    # 数据采样
    maskPoints = vtk.vtkMaskPoints()
    maskPoints.SetInputData(FEMapper.GetInput())
    maskPoints.SetOnRatio(sample_ratio)  # 采样率
    maskPoints.Update()
    # 符号化向量场
    glyph3D = vtk.vtkGlyph3D()  # vtkGlyph3D是一个过滤器,他会将固定的几何数据(符号数据)复制到输入的数据集的每一个点上
    glyph3D.SetInputData(maskPoints.GetOutput())
    if symbol == 'arrow':
        arrow = vtk.vtkArrowSource()  # 箭头符号
        arrow.Update()
        glyph3D.SetSourceData(arrow.GetOutput())  # 设置符号
    elif symbol == 'cone':
        cone = vtk.vtkConeSource()  # 圆锥符号
        cone.SetResolution(6)  # 设置用于表示圆锥的面数
        cone.Update()
        glyph3D.SetSourceData(cone.GetOutput())  # 设置符号
    # glyph3D.SetVectorModeToUseNormal()  # 使用法向控制符号方向
    glyph3D.SetVectorModeToUseVector()  # 使用向量控制符号方向
    glyph3D.SetScaleModeToScaleByVector()  # 使用点上的vector数据控制缩放
    # glyph3D.SetScaleModeToDataScalingOff()  # 这里没有标量,所以关闭符号缩放控制
    glyph3D.SetScaleFactor(scale_ratio)  # 设置缩放比例
    glyph3D.Update()

    glMapper = vtk.vtkDataSetMapper()
    glMapper.SetInputData(glyph3D.GetOutput())
    glMapper.Update()
    glActor = vtk.vtkActor()
    glActor.SetMapper(glMapper)
    glActor.GetProperty().SetColor(0.0, 0.79, 0.34)  # glyphActor

    self.renderer.AddActor(self.main_actor)
    self.renderer.AddActor(glActor)

在上面代码中,由于有限元模型通常节点和单元数量很多,为了方便观察,我们可以对数据进行降采样。关键代码如下:

maskPoints.SetOnRatio(sample_ratio)  # 采样率

其中sample_ratio为采样率。

结果

在这里插入图片描述

参考

[1] VTK使数据符号化显示矢量数据

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VTK(Visualization Toolkit)是一个用于可视化和图形处理的开源软件库。它提供了一系列的算法和工具,可以用来创建、渲染和分析三维数据。VTK可以用于各种领域,包括科学研究、医学图像处理、计算机辅助设计等。 有限元后处理是在有限元分析完成后对结果数据进行可视化和分析的过程。VTK提供了许多用于有限元后处理的类和方法。例如,vtkKdTree类可以用于构建和搜索kd树,以便在大型数据集中进行高效的点拾取和查询操作。vtkMath类提供了一组数学运算函数,可以用于计算向量、矩阵、标量等。而vtkPointPicker类则是一个用于点拾取的工具,可以在三维景中选择并获取用户鼠标点击的点的相关信息。 基于VTK有限元后处理系统可以利用VTK提供的功能来实现对有限元结果的可视化和分析。这样的系统可以使用彩色云图、等值面、等值线、任意剖面等方式来展示有限元结果的不同方面和特征。该系统可以用于研究和分析各种工程问题,如结构力学、流体力学、电磁等。通过VTK的灵活性和强大的可视化能力,可以有效地展示和解释有限元分析的结果,帮助工程师做出准确的决策。 总之,VTK有限元后处理中发挥着重要的作用,它提供了丰富的功能和工具,可以用来可视化和分析有限元结果,帮助工程师更好地理解和解释模拟数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【VTK+有限元后处理】节点属性值查询](https://blog.csdn.net/qq_39784672/article/details/127984852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [基于VTK有限元后处理系统开发 ](https://download.csdn.net/download/weixin_38684328/12136850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【VTK+有限元后处理】实时剖切视图](https://blog.csdn.net/qq_39784672/article/details/127938561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值