You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyVista可视化界面中交互调整Box组件的尺寸?

如何在PyVista可视化界面中交互式调整Box尺寸

当然可行,PyVista提供了滑块组件可以直接在可视化窗口中调整参数,实时更新Box的尺寸。你可以通过add_slider_widget添加交互式滑块,结合回调函数动态修改Box的bounds参数。

修改后的代码如下:

import pyvista as pv

# 初始化Box和绘图器
bounds = [0, 1, 0, 1, 0, 1]
box = pv.Box(bounds)
pl = pv.Plotter()
actor = pl.add_mesh(box)

# 定义更新Box尺寸的回调函数
def update_bounds(value, axis_min, axis_max):
    bounds[axis_min] = value[0]
    bounds[axis_max] = value[1]
    new_box = pv.Box(bounds)
    actor.mesh = new_box
    pl.update()

# 添加X轴范围调整滑块
pl.add_slider_widget(
    callback=lambda value: update_bounds(value, 0, 1),
    rng=(0, 5),
    value=(bounds[0], bounds[1]),
    title="X轴范围",
    pointa=(0.02, 0.9),
    pointb=(0.3, 0.9),
    style='modern'
)

# 添加Y轴范围调整滑块
pl.add_slider_widget(
    callback=lambda value: update_bounds(value, 2, 3),
    rng=(0, 5),
    value=(bounds[2], bounds[3]),
    title="Y轴范围",
    pointa=(0.35, 0.9),
    pointb=(0.63, 0.9),
    style='modern'
)

# 添加Z轴范围调整滑块
pl.add_slider_widget(
    callback=lambda value: update_bounds(value, 4, 5),
    rng=(0, 5),
    value=(bounds[4], bounds[5]),
    title="Z轴范围",
    pointa=(0.68, 0.9),
    pointb=(0.96, 0.9),
    style='modern'
)

pl.show()

关键说明:

  • 通过add_mesh获取返回的actor对象,后续用来更新网格数据
  • update_bounds回调函数负责接收滑块的数值,修改bounds数组,重新创建Box并替换actor的mesh,最后调用pl.update()刷新视图
  • 每个滑块对应控制一个轴向的起止范围,可通过rng参数设置滑块的数值范围,pointa和pointb控制滑块在窗口中的位置

内容的提问来源于stack exchange,提问作者killermama98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:15:00