Read User Data

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

On 27/05/2010 at 04:47, xxxxxxxx wrote:

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

---------
Hello,

I try to read the user data from base objects with the BrowseGetNext(..) function.
I get back the DescID and a basecontainer with the data.
But now i don't know how i can access to this data. Which IDs should i using?
I get only the name of the "User Data" with following function.

...
while ( pUserData->BrowseGetNext(handle, &id, &data) )
{
  uid = id[1].id;
  uType = id[1].dtype;
  GeData att_name;

att_name = data->GetData(1);
}

But i need also the value of it and some furter informations like min and max values or so.
Has anyone an idea?

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

On 28/05/2010 at 01:44, xxxxxxxx wrote:

ok, now i get the additional attibutes like min and max value with the BrowseContainer class.
But i don't get the value of the user data. Only the information, that a DA_CUSTOMDATATYPE is delivered.

BrowseContainer brw(data);
              LONG lid = 0;
              GeData *att = NULL;

while (brw.GetNext(&lid, &att)) {...

How can i read the data value ???

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

On 28/05/2010 at 02:12, xxxxxxxx wrote:

What kind of user data type do you want to access?

cheers,
Matthias

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

On 28/05/2010 at 02:17, xxxxxxxx wrote:

hi,

every type. I add the User data in the attribute manager and choosen one type from the list. (Boolean, Integer, Real...). And with a plugin i like to export this data into an external file.

regards
Markus

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

On 28/05/2010 at 02:18, xxxxxxxx wrote:

Maybe you can show me an example for a LONG value ?

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

On 28/05/2010 at 03:30, xxxxxxxx wrote:

Originally posted by xxxxxxxx

every type...

Ah, ok. That's actually quite simple.

Here is an example how to determine the data type and value of the user data entries:

  
Bool MenuTest::Execute(BaseDocument *doc)  
{  
  BaseObject *op = doc->GetActiveObject();  
  if (!op) return FALSE;  
  
  DynamicDescription *dd = op->GetDynamicDescription();  
  if (!dd) return FALSE;  
  
  void *dhandle = dd->BrowseInit();  
  
  DescID id;  
  const BaseContainer *bc = NULL;  
  
  while (dd->BrowseGetNext(dhandle, &id, &bc))  
  {  
      GeData data;  
  
      if (op->GetParameter(id, data, 0))  
      {  
          //data contains the user data data; the data type of the user data  
          switch (data.GetType())  
          {  
              case DA_REAL:  
                  GePrint("Real: "+RealToString(data.GetReal()));  
                  break;  
              case DA_LONG:  
                  GePrint("LONG: "+LongToString(data.GetLong()));  
                  break;  
          }  
      }  
  }  
  
  dd->BrowseFree(dhandle);  
  
  return TRUE;  
}  

cheers,
Matthias

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

On 28/05/2010 at 04:07, xxxxxxxx wrote:

oh i see,

thanks a lot... it works