That's pretty much what you have to do, I'm afraid. On Wed, Sep 24, 2014 at 1:56 PM, B.W.H. van Beest <[email protected]> wrote: > Utkarth, > > I followed-up on your advice, and it works. Thanks very much! > > I have still one question: When iterating over the proxy objects, I > need to find out what kind of object the proxy is referring to (Sphere, > box, etc.) > In my trial code, I do that via the "XMLName" followed by a string > comparison, like this: > > // prx is proxy, obtained as you describe via iter->GetProxy() > > std::string srctype = prx->GetXMLName(); > > if ( srctype == "SphereSource" ) > { > // Code for sphere > } > else if ( srctype == "CylinderSource" ) > { > // Code for Cyliner > } > else // etc > { > ...; > } > > Is this indeed the way to do it, or are there (more efficient) > alternatives? > > Kind Regards, > Bertwim > > > On 09/23/2014 03:01 PM, Utkarsh Ayachit wrote: >> Bertwim, >> >> I agree the developer docs are little scattered right now. My plan is >> to start writing blog posts that make this easier to digest. One of >> these, hopefully, I get around to it :). In the mean time, my replies >> are inline. >> >> >>> 1. Suppose I have created, interactively, a box, a sphere and a cone, >>> using the corresponding entries in the "Sources" menu. >>> >>> 2. Now I would like to *programmatically* (i.e. in a c++ plugin) loop >>> over the sources (here: the box, sphere and cone) and for each of the >>> elements >>> get hold of the parameters that were used to define these sources (i.e. >>> the box dimensions, center, radii etc.). With these parameters I can >>> then do other things to build my own extension, but those details do not >>> matter here. >> >> Several ways for getting to the "proxies" for the sphere, box, etc. >> created. One way it using the vtkSMSessionProxyManager. >> >> a. Using vtkSMSessionProxyManager: >> a.1 Get access to the active session's proxy manager using >> pqActiveObjects::instance().proxyManager() [1] >> a.2 Use vtkSMProxyIterator[2] to iterate over the "sources" group. >> vtkNew<vtkSMProxyIterator> iter; >> iter->SetSessionProxyManager(pqActiveObjects::instance().proxyManager()); >> iter->SetModeToOneGroup(); >> for (iter->Begin("sources"); ! iter->IsAtEndt(); iter->Next()) >> { >> iter->GetKey() ---> is the "label" for the proxy you see in the >> pipeline browser >> iter->GetProxy() -- > will be the actual proxy object, >> } >> >> To access parameters defined on them, you can access the "properties" >> on these proxies. If you know which property you're looking for using >> vtkSMPropertyHelper[3] to get the values e.g. >> >> sphereProxy = .. >> vtkSMPropertyHelper(sphereProxy, "Radius").GetAsDouble() --> the radius >> >> To iterate over all properties on the proxy, you can use >> vtkSMProxy::NewPropertyIterator [4] which will give you a new iterator >> (don't forget to call iter->Delete() once you're done with the >> iterator). You can use that to iterate over all properties on the >> proxy, >> >> Hope that helps, >> Utkarsh >> >> [1] >> http://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-doc/classpqActiveObjects.html#a547a93dececb0d5ac7a35f373e5c68ab >> [2] >> http://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-doc/classvtkSMProxyIterator.html >> [3] >> http://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-doc/classvtkSMPropertyHelper.html >> [4] >> http://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-doc/classvtkSMProxy.html#ab0eee37fc2a021334964e9ffcd682a4c >> >> > _______________________________________________ Powered by www.kitware.com
Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
