[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