GetDocument() returning null [SOLVED]

On 09/11/2014 at 05:53, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R14 
Platform:   Windows  ;   
Language(s) :     C++  ;

Hi Folks,
I've got the following code in an ObjectData plugin's function that runs on the click of a command, to open a dialog window:

BaseObject *obj = (BaseObject* )this;  
BaseDocument *doc = (BaseDocument* )obj->GetDocument();
if(doc == NULL)  
    GePrint("Object is passing a NULL doc..");
    return FALSE;  
dlg.SetDocument(doc);  // custom dialog function
return dlg.Open(...);

The object is in the scene, it's in the AM, I can go through it's tabs etc. But the document is always returning null. What am I missing here?

On 09/11/2014 at 06:09, xxxxxxxx wrote:


Is the "this" pointer pointing to the correct object?

Cactus Dan

On 09/11/2014 at 07:28, xxxxxxxx wrote:

My guess is that 'this' is in fact a pointer to an ObjectData. You can't cast that to a BaseObject. Use NodeData::Get() to get the node, then use the node's GetDocument() function to get the document.


On 09/11/2014 at 23:19, xxxxxxxx wrote:

Thanks Dan/Steve,
'this' was indeed a reference to an ObjectData. I've replaced that with the NodeData pointer and it's now working a treat!