[Paraview] vtkSMProxy saving/restoring

Nehme Bilal nbilal at mirarco.org
Thu Nov 20 16:49:14 EST 2008


Hello,

Instead of saving a copy of a proxy, I'm trying to use 
lookMarkModel state to get the exposed properties and 
restore it to servermanager proxies.
I'm trying to do something like that:

vtkSMProxyManager* pxm = vtkSMObject::GetProxyManager();
vtkSMProxy *smProxy;

1- convert the stored lookmark state from a qstring to a 
vtkPVXMLElement:

   vtkPVXMLParser *parser = vtkPVXMLParser::New();
   parser->Parse(lookMarkState.toAscii().data());
   vtkPVXMLElement *stateElement = 
parser->GetRootElement();
   if(!stateElement)
     {
     qDebug() << "Could not parse lookmark's state.";
     parser->Delete();
     return;
     }

2- now from this state I want to copy the exposed 
properties:
for (?? xmlProxy in stateElement ??)
{
   smProxy = pxm->GetProxy(??xmlProxy groupeName??, 
??xmlProxyName??);
   vtkSMPropertyIterator* iter = 
smProxy->NewPropertyIterator();

   for(iter->Begin(); !iter->IsAtEnd(); iter->Next())
   {
     vtkSMProperty* smProp = iter->GetProperty();
     vtkSMProperty* xmlProp = 
??xmlProxy->GetProperty(iter->GetKey())from??
     if (destProp && srcProp)
{
destProp->Copy(srcProp);
}
    }
    iter->Delete();
  }

how can I do that ?

thanks !

On Wed, 19 Nov 2008 14:01:55 -0500
  Utkarsh Ayachit <utkarsh.ayachit at kitware.com> wrote:
> Ah I think I know the problem. vtkSMProxy::Copy() copies 
>all properties even those on the sub proxies. A 
>representation is a complex beast with several internal 
>subproxies which are linked up internally. You actually 
> simply want to save/restore the exposed properties so 
>I'd do something 
> like follows:
> 
> void Copy(vtkSMProxy* src, vtkSMProxy* dest)
> {
> vtkSMPropertyIterator* iter = 
>dest->NewPropertyIterator();
> for (iter->Begin(); !iter->IsAtEnd(); iter->Next())
>   {
>   vtkSMProperty* destProp = iter->GetProperty();
>   vtkSMProperty* srcProp = 
>src->GetProperty(iter->GetKey());
>   if (destProp && srcProp)
>     {
>     destProp->Copy(srcProp);
>     }
>   }
> iter->Delete();
> }
> 
> Use the above Copy instead of vtkSMProxy::Copy().
> 
> Utkarsh
> 
> 
> 
> Nehme Bilal wrote:
>> 
>> Hi again,
>> 
>> I did save and restore the source proxy and 
>>representations and it's 
>> working.
>> All display properties are saved/restored perfectly, but 
>>after 
>> restoring, changing "color" or "Style" properties from 
>>the object 
>> inspector has no effect. Other properties like "visible" 
>>or 
>> "Transformation" works !
>> 
>> after restoring I called:
>> vtkSMObject::GetProxyManager()->UpdateRegisteredProxiesInOrder();
>> 
>> but it didn't solve the problem.
>> 
>> 
>> 
>> On Wed, 19 Nov 2008 13:14:27 -0500
>>  Utkarsh Ayachit <utkarsh.ayachit at kitware.com> wrote:
>>> For saving the object inspector properties you'll have 
>>>to save/restore 
>>> the state for the source proxy (and not merely it's 
>>>representation 
>>> proxy).
>>>
>>> Utkarsh
>>>
>>> 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
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>> 
>> 



More information about the ParaView mailing list