Paraview程序化重置会话

3
在Paraview中,可以通过“编辑”->“重置会话”来实现清除状态。 如何通过Python脚本以编程方式实现此操作? 我希望能够在GUI(Python shell和宏)和CLI(pvpython)中使用。 PS:我不知道重置会话和关闭/重新打开Paraview之间的区别。 尽管我没有进行全面测试,但在我观察到的所有情况中,它们的行为相同。
PS2:我目前正在使用一种牵强的方法,但它并不完全等同于重置会话。
def reset_session() :
    RemoveViewsAndLayouts()
    clear_pipeline()
    return

def clear_pipeline() :
    srcs = GetSources()
    for key, val in srcs.items() :
        #print( "key = " + str(key) + ", value = " + str(val) )
        #print( "   (" + str(type(key)) + "),  (" + str(type(val)) + ")" )
        Delete(val)
        del val
    return

PS3:我用这个最小的代码进行了测试,从宏菜单执行->我的宏,结果导致了崩溃。

Disconnect()
Connect()

它确实在作为宏时崩溃了,而不是在使用Python shell时。这是意外的,肯定是一个错误。 - Mathieu Westphal
https://gitlab.kitware.com/paraview/paraview/issues/17970 - Mathieu Westphal
2个回答

4

对于ParaView <= 5.7.1:重置会话将删除所有代理。它非常接近关闭重新打开应用程序,可以被视为这样做。

要在Python中执行此操作,由于ResetSession未实现,请使用以下方法:

Disconnect()
Connect()

你的宏并不等同于断开和重新连接。我建议看一下其他问题:https://stackoverflow.com/questions/31423347/paraview-python-script-deleterenderview1-does-not-free-memory - Mathieu Westphal
我在笔记中发现https://public.kitware.com/pipermail/paraview/2015-July/034588.html提到了一个相关的方法,但我之前尝试过没有成功。 - sancho.s ReinstateMonicaCellio
你在GUI或CLI中测试过这个程序,没有出现任何错误吗? - sancho.s ReinstateMonicaCellio
这在ParaView GUI的Python shell中可以工作,也可以在pvpython中完美地工作。它只会在宏中崩溃。 - Mathieu Westphal

2

ParaView 5.8.0现在有一个名为ResetSession()的方法。


太好了!我会试一下。 - sancho.s ReinstateMonicaCellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接