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.


Log in to reply