Hi Bryn,<br><br>Don&#39;t use vtkPythonGetObjectFromPointer(), it is an internal function and no longer exists in the VTK development head.<br><br><span style="color: rgb(31, 73, 125);"></span>Your earlier attempt with <span style="color: rgb(31, 73, 125);"></span><span style="font-size: 9.5pt; font-family: Consolas;">address_str </span>is the right way to go, but the string format is important.  Take a look at <span style="color: rgb(31, 73, 125);"></span>GetObjectFromObject() in vtkPythonUtil.cxx to see how the string is decoded.<br>

<br> - David<br><br><br><div class="gmail_quote">On Thu, May 26, 2011 at 8:07 AM, Bryn Lloyd <span dir="ltr">&lt;<a href="mailto:lloyd@itis.ethz.ch">lloyd@itis.ethz.ch</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal"><span style="color: rgb(31, 73, 125);">Although I am still interested in a better solution, I currently have found following way to deal with this:</span></p>

<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);">I wrote a function, which creates a boost::python::object from the vtkUnstructuredGrid, which it obtains from my MyClass object:</span></p>

<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);">#include &lt;vtkPythonUtil.h&gt;</span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);">using boost::python::object;</span></p>

<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">using boost::python::import;</span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);">boost::python::object GetGrid(MyClass *m)</span></p>

<p class="MsoNormal"><span style="color: rgb(31, 73, 125);">{</span></p><p class="MsoNormal" style=""><span style="color: rgb(31, 73, 125);">                object vtk_module = import(&quot;vtk&quot;);</span></p><p class="MsoNormal" style="">

<span style="color: rgb(31, 73, 125);">                vtkUnstructuredGrid *volume = m-&gt;GetVolume();</span></p><p class="MsoNormal" style=""><span style="color: rgb(31, 73, 125);">                if(volume==NULL) return object(boost::python::handle&lt;&gt;(Py_None));</span></p>

<p class="MsoNormal" style=""><span style="color: rgb(31, 73, 125);">                boost::python::handle&lt;&gt; pvolume(vtkPythonGetObjectFromPointer((vtkObjectBase *)volume));</span></p><p class="MsoNormal" style="">
<span style="color: rgb(31, 73, 125);">                return object(pvolume);</span></p>
<p class="MsoNormal" style=""><span style="color: rgb(31, 73, 125);">}</span></p><p class="MsoNormal" style=""><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p>

<p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal"><span style="color: rgb(31, 73, 125);"> </span></p><p class="MsoNormal">

<span style="color: rgb(31, 73, 125);"> </span></p><div><div style="border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; padding: 3pt 0in 0in;">

<p class="MsoNormal"><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> <a href="mailto:vtkusers-bounces@vtk.org" target="_blank">vtkusers-bounces@vtk.org</a> [mailto:<a href="mailto:vtkusers-bounces@vtk.org" target="_blank">vtkusers-bounces@vtk.org</a>] <b>On Behalf Of </b>Bryn Lloyd<br>

<b>Sent:</b> Thursday, May 26, 2011 12:05 PM<br><b>To:</b> <a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a><br><b>Subject:</b> [vtkusers] Mixing Boost.Python and VTK/Python</span></p></div></div><div>

<div></div><div class="h5"><p class="MsoNormal"> </p><p class="MsoNormal">Hi</p><p class="MsoNormal"> </p><p class="MsoNormal">A similar question has been asked here before, but I have not managed to get a working solution from it. </p>

<p class="MsoNormal">I have a class which returns a vtkUnstructuredGrid. I wrap my class using boost python.</p><p class="MsoNormal"> </p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">class MyClass { </span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">public: </span></p><p class="MsoNormal" style="text-indent: 0.5in;"><span style="font-size: 9.5pt; font-family: Consolas;">vtkUnstructuredGrid* GetGrid () { return m_Grid; }</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">private:</span></p><p class="MsoNormal" style="text-indent: 0.5in;"><span style="font-size: 9.5pt; font-family: Consolas;">vtkUnstructuredGrid * m_Grid;<br>

};</span></p><p class="MsoNormal"> </p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style="">But if I call the function GetGrid in Python:</p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">from vtk import * </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">from MyModule import *</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">obj = MyClass()</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">grid = obj.GetGrid()</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style="">

I get following error:</p><p class="MsoNormal" style="">TypeError: No Python class registered for C++ class class vtkUnstructuredGrid</p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style="">The class MyClass has been wrapped as follows:</p><p class="MsoNormal"> </p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas; color: blue;">template</span><span style="font-size: 9.5pt; font-family: Consolas;">&lt;<span style="color: blue;">class</span> T&gt;</span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas; color: blue;">struct</span><span style="font-size: 9.5pt; font-family: Consolas;"> vtkObject_to_python</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">{</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">       <span style="color: blue;">static</span> PyObject *convert(<span style="color: blue;">const</span> T &amp;p)</span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;">       {</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              std::ostringstream oss;</span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;">              oss &lt;&lt; (<span style="color: blue;">void</span>*) &amp;p;</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              std::string address_str = oss.str();</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              object obj = import(<span style="color: rgb(163, 21, 21);">&quot;vtk&quot;</span>).attr(<span style="color: rgb(163, 21, 21);">&quot;vtkObjectBase&quot;</span>)(address_str);</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              <span style="color: blue;">return</span> incref(obj.ptr());</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">       }</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">};</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;">BOOST_PYTHON_MODULE(MyModule)</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">{</span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;">       to_python_converter&lt;vtkUnstructuredGrid,</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              vtkObject_to_python&lt;vtkUnstructuredGrid&gt; &gt;();</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;"> </span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">       class_&lt;MyClass&gt;(“MyClass”)</span></p>

<p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">              .def(“GetGrid”,&amp;MyClass::GetGrid, return_value_policy&lt;reference_existing_object&gt;())</span></p><p class="MsoNormal" style="">

<span style="font-size: 9.5pt; font-family: Consolas;">       ;</span></p><p class="MsoNormal" style=""><span style="font-size: 9.5pt; font-family: Consolas;">}</span></p></div></div></div></div></blockquote></div>