THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 06/04/2009 at 10:46, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R11
Platform: Windows ; Mac ;
Language(s) : C++ ;
---------
Hello,
i wrote my own datatype and therefor i had to overwrite the function
> virtual Bool \_GetDescription(const CustomDataType \*[RED]data[/FONT],Description &desc;,LONG &flags;,const BaseContainer &parentdescription;,DescID \*singledescid)
I wrote the function as shown in the datatype example of the sdk.
Additional to the "standartattributes" my datatype has list (called addtionalAttributes), where GeData can be saved. Now i want to read out these attributes and want to enlarge the description dynamically.
Therefor i have to cast the Customdatatype to my datatype (as in the CopyData-function for example). But the data is empty rather NULL..why???
The function looks like this:
> Bool AixPointClass::\_GetDescription(const CustomDataType \*data,Description &desc;,LONG &flags;,const BaseContainer &parentdescription;,DescID \*singledescid){ \> //Load description \> Bool res = desc.LoadDescription(GetId()); \> GePrint("\_GetDiscription"); \> \> //cast to AixPoint \> [RED]AixPoint\* source = (AixPoint\* ) data;[/FONT] //THIS IS NULL ?!? \> \> //Basecontainer for dynamic description \> BaseContainer dynamic; \> \> [RED]if(source != NULL)[/FONT]{ \> \> LONG index = AIXPOINT_ADDITIONALATTRIBUTE_START; \> \> //first element \> source->additionalAttributes->current = source->additionalAttributes->first; \> \> //run over the list \> do{ \> \> //determine datatype \> dynamic = GetCustomDataTypeDefault(source->additionalAttributes->current->GetType()); \> \> //set name \> dynamic.SetString(DESC_NAME, source->additionalAttributes->current->GetName()); \> \> //set value \> dynamic.SetData(DESC_DEFAULT, source->additionalAttributes->current->GetValue()); \> \> //write description \> if(!desc.SetParameter(DescLevel(index, source->additionalAttributes->current->GetType(), 0), dynamic, DescLevel(0))){ \> //No attributes \> break; \> } \> \> //Check the end \> if(index < AIXPOINT_ADDITIONALATTRIBUTE_END){ \> //next attributeID \> index++; \> \> //next attribute \> source->additionalAttributes->current = source->additionalAttributes->current->GetNext(); \> } \> else{ \> //leave the loop if the maximum is arrived \> break; \> } \> \> \> }while(source->additionalAttributes->current->GetNext() != NULL);//End of do-while \> \> } \> \> if(res){ \> \> flags |= DESCFLAGS_DESC_LOADED; \> } \> \> //Description zurueckgeben \> return SUPER::\_GetDescription(data,desc,flags,parentdescription,singledescid); \> }//End of \_GetDiscription \> \>
I'm so confused because in the other functions "data" is not NULL.
I hope anybody can help me.
Thanks for your replies
Oliver