[Paraview] vtkSMProxy saving/restoring
Utkarsh Ayachit
utkarsh.ayachit at kitware.com
Wed Nov 19 13:04:43 EST 2008
UndoRedo states are not meant to loaded across different sessions. If
loaded in the same session such ID conflicts should not occur.
Utkarsh
Geoff Draper wrote:
> I'm using vtkSMUndoRedoStateLoader, which is the state loader used by
> pqUndoStack. My proxies are encapsulated within vtkUndoSet objects when
> they are saved/restored.
>
> --Geoff
>
> On Wed, 19 Nov 2008, Utkarsh Ayachit wrote:
>
>> What state loader are you using? If you use vtkSMPQStateLoader or
>> subclass it should not try to reassing IDs.
>>
>> Utkarsh
>>
>> Geoff Draper wrote:
>>> Hello,
>>>
>>> I'm also facing a related problem when I save/restore vtkSMProxy's.
>>> The proxy ID is stored in the XML file. So when I reload the proxies,
>>> the StateLoader attempts to recreate the proxy with the same ID as
>>> before. But because I'm running a new ParaView session, sometimes the
>>> saved ID has already been reserved by another object in the current
>>> session, causing a collision.
>>>
>>> When this happens, ParaView aborts inside the function:
>>> vtkClientServerInterpreter::ProcessCommandAssign(const
>>> vtkClientServerStream& css, int midx)
>>> The error message is "Attempt to assign existing ID".
>>>
>>> Has anyone else ever dealt with this before? Is there a known
>>> workaround? Am I completely off base?
>>>
>>> Thank you!
>>> --Geoff
>>>
>>> On Wed, 19 Nov 2008, Nehme Bilal wrote:
>>>
>>>>
>>>> Thank you Utkarsh !
>>>>
>>>> it works but I have some problems like:
>>>> - after restoring the proxy, changing some display properties in
>>>> Paraview has no effect (like color ...)
>>>> - only the display properties are saved/restored. (variables in
>>>> object inspector "properties" tab are not restored)
>>>>
>>>> It's probably the way that I'm casting the source proxy and some
>>>> staff like that.
>>>>
>>>> I'll try to solve these problems and let you know.
>>>>
>>>> thank you !
>>>>
>>>>
>>>> On Wed, 19 Nov 2008 10:20:52 -0500
>>>> Utkarsh Ayachit <utkarsh.ayachit at kitware.com> wrote:
>>>>> Here's one way of doing it:
>>>>>
>>>>> vtkSMProxyManager* pxm = vtkSMObject::GetProxyManager();
>>>>> vtkSMProxy *tempProxy = pxm->NewProxy(
>>>>> src->GetXMLGroup(),
>>>>> src->GetXMLName());
>>>>> tempProxy->Copy(src);
>>>>>
>>>>> ....
>>>>> src->Copy(tempProxy);
>>>>>
>>>>> Utkarsh
>>>>>
>>>>> Nehme Bilal wrote:
>>>>>>
>>>>>> tempProxy is just a proxy I created using:
>>>>>> vtkSMProxy tempProxy = vtkSMProxy::New();
>>>>>>
>>>>>> I am trying to save/restore all the object properties displayed in
>>>>>> the object inspector.
>>>>>>
>>>>>> On Wed, 19 Nov 2008 09:30:55 -0500
>>>>>> Utkarsh Ayachit <utkarsh.ayachit at kitware.com> wrote:
>>>>>>> Nehme,
>>>>>>>
>>>>>>> What properties are you changing/trying to restore? Is
>>>>>>> "tempProxy" of the same type as "src"?
>>>>>>>
>>>>>>> Utkarsh
>>>>>>>
>>>>>>> Nehme Bilal wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Sorry I missed a few commas in the last message. this is the
>>>>>>>> correct one:
>>>>>>>>
>>>>>>>> I am looking for a way to save a proxy properties and restore it
>>>>>>>> later.
>>>>>>>> The only way I found is by saving and restoring the state using:
>>>>>>>> virtual vtkPVXMLElement* SaveState(vtkPVXMLElement* root);
>>>>>>>> virtual int LoadState(vtkPVXMLElement* element,
>>>>>>>> vtkSMStateLoaderBase* loader);
>>>>>>>>
>>>>>>>> I don't want to use LoadState because this method create a new
>>>>>>>> proxy. I just want to restore all properties to the existing proxy.
>>>>>>>> There is also a method called Copy (void Copy(vtkSMProxy* src),
>>>>>>>> this method will copy all src properties to another proxy:
>>>>>>>>
>>>>>>>> //copying properties to tempProxy
>>>>>>>> tempProxy->Copy(src,0,vtkSMProxy::COPY_PROXY_PROPERTY_VALUES_BY_CLONING);
>>>>>>>> I tried to change some display properties in Paraview and then
>>>>>>>> restore using:
>>>>>>>> src->Copy(tempProxy,0,vtkSMProxy::COPY_PROXY_PROPERTY_VALUES_BY_CLONING);
>>>>>>>> src->UpdateVTKObjects();
>>>>>>>>
>>>>>>>> but nothing is restored ! why? Is there any other way to do that?
>>>>>>>> (suppose that I have only on source)
>>>>>>>>
>>>>>>>> Thank you
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> ParaView mailing list
>>>>>>>> ParaView at paraview.org
>>>>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> _______________________________________________
>>>> ParaView mailing list
>>>> ParaView at paraview.org
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>
>>> _______________________________________________
>>> ParaView mailing list
>>> ParaView at paraview.org
>>> http://www.paraview.org/mailman/listinfo/paraview
>>>
>>
>
More information about the ParaView
mailing list