User Data in C++

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 27/12/2008 at 08:58, xxxxxxxx wrote:

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

---------
       Hi!

How do I receive the values of userdatas. I found some snippets here in the forum, but the most code snippets iterates through the user datas, but thats not what I want.

I know the exact id of the element and want to receive the value. Can anyone of you check my code?

> \>                DynamicDescription\* dd = ot->GetDynamicDescription(); #ot is the BaseList2D object \>                DescID id(DescLevel(first_id)), DescLevel(second_id)); \>                const BaseContainer \*t = dd->Find(id); \>                if(t) #is TRUE \>                { \>                     if(!ot->GetParameter(id, data, 0)) #GetParameter returns False... Why? \>                          GePrint("failed"); \>                } \>

Thank you very much 🙂

bye.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/01/2009 at 08:08, xxxxxxxx wrote:

The creation of your DescID is wrong. You have to make sure the type of the DescLevel is set correctly. Here an example for a Real type userdata with the ID of 1:

> \> Bool MenuTest::Execute(BaseDocument \*doc) \> { \>      BaseObject \*op = NULL; \>      op = doc->GetActiveObject(); \>      if(!op) return TRUE; \> \>      DynamicDescription \*dd = NULL; \>      dd = op->GetDynamicDescription(); \> \>      if(dd) \>      { \>           const DescID id(DescLevel(ID_USERDATA, DTYPE_SUBCONTAINER, 0), DescLevel(1, DTYPE_REAL, 0)); \> \>           GeData d; \> \>           if(op->GetParameter(id, d, 0)) \>           { \>                GePrint("success "+RealToString(d.GetReal())); \>           } \>      } \> \>      return TRUE; \> } \>

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 05/01/2009 at 08:21, xxxxxxxx wrote:

Thank you, Matthias. That will help me.

bye

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/01/2009 at 00:53, xxxxxxxx wrote:

Matthias, you wrote:

const DescID id(DescLevel(ID_userdata, DTYPE_SUBCONTAINER, 0), DescLevel(1, DTYPE_REAL, 0));

But what if I don't know that the element is of type Real? I just tried '0' but that did not work.

Any suggestions? Thanks.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/01/2009 at 02:21, xxxxxxxx wrote:

You can browse the Userdata:

> \> void \*handle; \>      if (dd)     handle = dd->BrowseInit(); \>      if (handle) \>      { \>           DescID descId; \>           const BaseContainer\* bc; \>            \>           while (dd->BrowseGetNext(handle, &descId;, &bc;)) \>           { \>                GeData data; \>                op->GetParameter(descId, data, 0); \>                GeDataType type = data->GetType(); //retrieving the type \>           } \>           dd->BrowseFree(handle); \>            \>            \>      } \> \>

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/01/2009 at 05:45, xxxxxxxx wrote:

Hi!

A combination of your solution and the solution of Matthias would be cool.

Not to browse through the userdatas and the condition I don't know the type of the element.