Paraview программно сбросить сессию

В Paraview можно сделать Edit -> Reset Session. Он приносит чистое состояние.

Как это можно сделать программно из скрипта Python? Я имею в виду, что он работает как с графическим интерфейсом (в оболочке Python и как макрос), так и с интерфейсом командной строки (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: я проверил ответ с этим минимальным кодом, выполненным из графического интерфейса из Macros -> mymacro, и он вылетает.

Disconnect()
Connect()

person sancho.s ReinstateMonicaCellio    schedule 02.02.2018    source источник
comment
Он действительно разбился как макрос, а не при использовании оболочки python. Это неожиданно и определенно является ошибкой.   -  person Mathieu Westphal    schedule 02.02.2018
comment
gitlab.kitware.com/paraview/paraview/issues/17970   -  person Mathieu Westphal    schedule 02.02.2018


Ответы (2)


Для ParaView ‹= 5.7.1: сброс сеанса, удаление всех прокси. Это действительно близко к закрытию повторного открытия приложения и может рассматриваться как таковое.

Чтобы сделать это в Python, поскольку ResetSession не реализован, используйте следующее:

Disconnect()
Connect()
person Mathieu Westphal    schedule 02.02.2018
comment
ваш макрос не эквивалентен отключению и повторному подключению. Я бы предложил взглянуть на другую проблему: stackoverflow.com/questions/31423347/ - person Mathieu Westphal; 02.02.2018
comment
В своих заметках я обнаружил, что public.kitware.com/pipermail/paraview/ 2015-July/034588.html упомянул связанный метод, и я пробовал его раньше, но безуспешно. - person sancho.s ReinstateMonicaCellio; 02.02.2018
comment
Вы тестировали это в GUI или CLI, и оно работало без ошибок? - person sancho.s ReinstateMonicaCellio; 02.02.2018
comment
это работает в оболочке Python с графическим интерфейсом ParaView, а также в pvpython, и работает отлично. Вылетает только внутри макроса. - person Mathieu Westphal; 02.02.2018

В ParaView 5.8.0 теперь есть метод ResetSession().

person Mathieu Westphal    schedule 08.06.2020
comment
Большой! Я попробую. - person sancho.s ReinstateMonicaCellio; 09.06.2020