Description's elements.

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

On 22/05/2007 at 08:16, xxxxxxxx wrote:

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

---------
Hi,

how to enable/disable (i mean to put in inactive and than in active state) descriptions elements like SHADERLINK, REAL, etc.

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

On 22/05/2007 at 11:31, xxxxxxxx wrote:

I found the answere here

but still don't know how to use it 😉

i have sth like this:
Bool test = GetDEnabling(node, DescID(MATERIAL_BUMP_MIPFALLOFF2), GeData("false"), 0, data);

and SDK says:
"Just read the passed t_data if the right id was provided, and return TRUE to enable the parameter or FALSE to disable it depending on the value."

and my t_data is here GeData("false") and i doesn't work.
I've tried everything.

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

On 22/05/2007 at 11:39, xxxxxxxx wrote:

GetDEnabling() allows you to change the state from editable to non-editable (greyed-out). This is a virtual method that you add to your data class (see NodeData in the docs) - you can't 'call' it as it is handled by Cinema 4D internally.

Inside, you return TRUE (enable) or FALSE (disable) based upon the description element ID:

/ NodeData.GetDEnabling  
//*---------------------------------------------------------------------------*  
Bool IPPFigure::GetDEnabling(GeListNode* node, const DescID& id, GeData& t_data, LONG flags, const BaseContainer* itemdesc)  
//*---------------------------------------------------------------------------*  
{  
     if (!node)     return FALSE;  
     switch (id[0].id)  
     {  
          // Quick BodyPart Traversal Buttons  
          case IPPFIGURE_BP_UP:  
               return (upBP_ID >= 0L);  
          case IPPFIGURE_BP_DOWN:  
               return (downBP_ID >= 0L);  
          case IPPFIGURE_BP_PREV:  
               return (prevBP_ID >= 0L);  
          case IPPFIGURE_BP_NEXT:  
               return (nextBP_ID >= 0L);  
          // Assorted  
          case IPPFIGURE_COPYMORPHS:  
          {  
               BaseContainer*     bc =     ((BaseTag* )node)->GetDataInstance();  
               if (!bc)                    return TRUE;  
               if (bc->GetBool(IPPFIGURE_CONFORMED))     return TRUE;  
               return FALSE;  
          }  
          case IPPFIGURE_BULGEFACTOR:  
          {  
               BaseContainer*     bc =     ((BaseTag* )node)->GetDataInstance();  
               if (!bc)                    return TRUE;  
               if (bc->GetBool(IPPFIGURE_BULGE))          return TRUE;  
               return FALSE;  
          }  
          case BODYPART_BULGEFACTOR:  
          {  
               BaseContainer*     bc =     ((BaseTag* )node)->GetDataInstance();  
               if (!bc)                    return TRUE;  
               if (bc->GetBool(BODYPART_BULGE))          return TRUE;  
               return FALSE;  
          }  
          case IPPFIGURE_POLYCOUNT:  
          case IPPFIGURE_UNDOS:  
               return FALSE;  
          default:  
               break;  
     }  
     return SUPER::GetDEnabling(node, id, t_data, flags, itemdesc);  
}  

You didn't try this? 😉

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

On 22/05/2007 at 13:07, xxxxxxxx wrote:

That was very helpfull. Thanks a lot.