<div dir="ltr">
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: rgb(0, 0, 0);" lang="EN-GB">I use </span>
vtkStandardNewMacro to add New macro. The problem is that I got 5 link errors even if I include the librairies of VTK (In VS 8).</p>Hereby, you find my derived class (.h & .cxx).<br><p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">---------------- </span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">vtkMyDerivedProp.h -------------------------<br>
</span></p><p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">#ifndef</span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB"> __vtkMyDerivedProp_h<br>
#define</span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB"> __vtkMyDerivedProp_h<br>#include</span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB"> <span style="color: maroon;">"vtkProp.h"</span><br>
<br>class</span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB"> VTK_RENDERING_EXPORT vtkMyDerivedProp : <span style="color: blue;">public</span> vtkProp<br>{<br>public</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">:</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"><span style=""></span> vtkTypeRevisionMacro(vtkMyDerivedProp,vtkProp);<br><span style=""> </span><span style="color: blue;">void</span> PrintSelf(ostream& os, vtkIndent indent);<br>
<span style=""> </span><span style="color: blue;">static</span> vtkMyDerivedProp* New();</span></p><p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">protected</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">:</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"><span style="">
</span>vtkMyDerivedProp();<br><span style=""> </span>~vtkMyDerivedProp();</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">private</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">:</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"><span style="">
</span>vtkMyDerivedProp(<span style="color: blue;">const</span>
vtkMyDerivedProp&);<span style=""> </span><span style="color: blue;">// Not implemented. <br> void</span> <span style="color: blue;">operator</span>=(<span style="color: blue;">const</span> vtkMyDerivedProp&);<span style=""> </span><span style="color: green;">// Not implemented.</span></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";">};</span></p><p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;">#endif</span><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB"></span></p>
<span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">---------------- </span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">vtkMyDerivedProp.cxx -------------------------</span>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">#include</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"> <span style="color: maroon;">"vtkMyDerivedProp.h"</span></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">#include</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"> <span style="color: maroon;">"vtkObjectFactory.h"</span></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkCxxRevisionMacro(vtkMyDerivedProp, <span style="color: maroon;">"$Revision: 1.36 $"</span>);</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkStandardNewMacro(vtkMyDerivedProp);</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkMyDerivedProp::vtkMyDerivedProp(){}<br></span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkMyDerivedProp::~vtkMyDerivedProp(){}</span></p>
<p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">void</span><span style="font-size: 10pt; font-family: "Courier New";"> vtkMyDerivedProp::PrintSelf(ostream& os, vtkIndent
indent)<br>{<br><span style=""> </span><span style="color: blue;">this</span>->Superclass::PrintSelf(os,indent);<br>}</span></p><p class="MsoNormal" style=""><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">-------------------------------------- Errors </span><span style="font-size: 10pt; font-family: "Courier New"; color: blue;" lang="EN-GB">------------------------------------------</span><br>
<span style="font-size: 10pt; font-family: "Courier New";"></span><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB"></span></p>
<p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB"><b>I got 5 errors </b><br></span></p><p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB">1>vtkMyDerivedProp.obj : error LNK2001: unresolved
external symbol "private: virtual char const * __thiscall
vtkMyDerivedProp::GetClassNameInternal(void)const "
(?GetClassNameInternal@vtkMyDerivedProp@@EBEPBDXZ)</span></p>
<p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB">1>vtkMyDerivedProp.obj : error LNK2001: unresolved
external symbol "public: virtual int __thiscall vtkMyDerivedProp::IsA(char
const *)" (?IsA@vtkMyDerivedProp@@UAEHPBD@Z)</span></p>
<p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB">1>vtkMyDerivedProp.obj : error LNK2001: unresolved
external symbol "protected: virtual class vtkObjectBase * __thiscall
vtkMyDerivedProp::NewInstanceInternal(void)const "
(?NewInstanceInternal@vtkMyDerivedProp@@MBEPAVvtkObjectBase@@XZ)</span></p>
<p class="MsoNormal" style=""><span style="font-size: 8pt; font-family: "Courier New";" lang="EN-GB">1>vtkMyDerivedProp.obj : error LNK2019: unresolved
external symbol "__declspec(dllimport) const
vtkMyDerivedProp::`vftable'" (__imp_??_7vtkMyDerivedProp@@6B@) referenced
in function "protected: __thiscall
vtkMyDerivedProp::vtkMyDerivedProp(void)" (??0vtkMyDerivedProp@@IAE@XZ)</span></p>
<p class="MsoNormal"><span style="font-size: 8pt; font-family: "Courier New";">1>C:\Documents and Settings\asahtari\Mes
documents\Projet\Bibillothéques\VTK\MyTest\MyLib.dll : fatal error LNK1120: 4
unresolved externals</span></p>
When I put <span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkMyDerivedProp instead of </span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">vtkProp3D, it compiles without any error.</span><br>
<span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">I don't understand .Is it a</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"> matter of</span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB"> </span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">VTK </span><span style="font-size: 10pt; font-family: "Courier New";" lang="EN-GB">librairies ? Please Help!<br>
<br></span>Amine<br><br><div class="gmail_quote">2008/8/14 Utkarsh Ayachit <span dir="ltr"><<a href="mailto:utkarsh.ayachit@kitware.com">utkarsh.ayachit@kitware.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">Please keep the questions to the mailing list, so that others can<br>
benefit/contribute as well.<br>
<br>
To add New():<br>
* take a look at any concrete class in VTK eg. vtkCollection (the New is<br>
declared in the header and defined using<br>
vtkStandardNewMacro(vtkCollection); in the cxx.<br>
<br>
* not using the viewport in the RenderOpaqueGeometry should not be a<br>
problem. It's only provided if needed.<br>
<br>
Utkarsh<br>
<br>
<br>
<br>
<br>
Mohammed Amine SAHTARI wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Thank you very much Utkarsh.<br>
<br>
I am tring to implement your solution but I have some problems.<br>
<br>
1) I create vtkMyDerivedProp.h and vtkMyDerivedProp.cxx<br>
<br>
I subclass vtkProp :<br>
- I copy the class code of vtkProp3D (.h and .c files)<br>
- I replace all the words :<br>
vtkProp3D /by/ /vtkMyDerivedProp /and Prop3D by /MyDerivedProp/<br>
- I include /"vtkGl.h"/ in vtkMyDerivedProp.h<br>
- I add RenderOpaqueGeometry() in vtkMyDerivedProp.h like this :<br>
/virtual int RenderOpaqueGeometry(vtkViewPort* )<br>
{/<br>
<br>
/ glBegin (GL_LINES);<br>
<br>
glVertex2f (-2.5, 2.5);<br>
<br>
glVertex2f (2.5, -2.5);<br>
<br>
<br>
glEnd ();/<br>
<br>
/ }/<br>
<br>
2) In my program : <br>
- I include and instantiate vtkMyDerivedProp :<br>
<br>
/ //# include "vtkMyDerivedProp.h"<br>
vtkMyDerivedProp *MyDerivedProp;/<br>
<br>
- I use vtkMyDerivedProp :<br>
<br>
/ vtkRenderer *renderer = vtkRenderer ::New();/<br>
<br>
/ vtkMyDerivedProp-> RenderOpaqueGeometry(renderer);/<br>
<br>
/ renderer->AddProp(vtkMyDerivedProp);/<br>
<br>
<br>
*Problem *: vtkMyDerivedProp is used without been defined!<br>
<br>
*Question 1 :* How can I define it ? (vtkMyDerivedProp::New() doesn't work)<br>
<br>
*Question 2 :* RenderOpaqueGeometry has vtkViewPort* in input but doesn't use it. Is it a problem ?<br>
<br>
How can I fix this?<br>
<br>
Looking forward to hear from you soon,<br>
<br>
Amine**<br>
<br>
<br>
<br>
<br>
<br>
<br>
2008/8/14 Utkarsh Ayachit <<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank">utkarsh.ayachit@kitware.com</a> <mailto:<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank">utkarsh.ayachit@kitware.com</a>>><br>
<br>
iren->Start() results in repeated calls to renWin->Render() on<br>
interaction. This will clear whatever you had drawn. A better<br>
approach is to subclass vtkProp(or one of it's subclasses) and put<br>
your rendering code in RenderOpaqueGeometry() /<br>
RenderTranslucentPolygonalGeometry()/ RenderOverlay() etc. depending<br>
upon what pass you want it to be rendered and then add the prop to<br>
the renderer. That way every time the renderer re-renders, your code<br>
will be executed.<br>
<br>
<br>
Utkarsh<br>
<br>
Mohammed Amine SAHTARI wrote:<br>
<br>
<br>
I want to add an OpenGl code in an application of VTK.<br>
<br>
For this purpose, I try to draw lines using commands OpenGL.:<br>
<br>
*1) I add this on the top of the program :*<br>
<br>
#include <GL/gl.h><br>
*2) I place my OpenGL commands after renWin->Render() but before<br>
iren->Start()** : *<br>
<br>
<br>
renWin->Render();<br>
<br>
glBegin (GL_LINES);<br>
glVertex2f (-2.5, 2.5);<br>
glVertex2f (2.5, -2.5);<br>
glEnd ();<br>
<br>
iren->Start();<br>
<br>
<br>
*But it doesn't appears.*<br>
<br>
did I miss something ? How can I do this work ?<br>
Looking forward to hear from you soon,<br>
<br>
Amine<br>
<br>
<br>
<br>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
This is the private VTK discussion list.<br>
Please keep messages on-topic. Check the FAQ at:<br>
<a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br>
<br>
</blockquote>
<br>
_______________________________________________<br>
This is the private VTK discussion list.<br>
Please keep messages on-topic. Check the FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br></div>