Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Inserting Description Elements via Code..

    SDK Help
    0
    6
    414
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 15/08/2014 at 04:40, xxxxxxxx wrote:

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

      ---------
      Hi,

      Im trying to figure out how to insert a Description element to my objectdata plugin via code.  I already have various plugin options showing up via the res files etc and so am trying to basically grab the nodedatas Description container and insert a new Real parameter into it ( in such a way that it will show up in the attributes along with everything else when the plugin is launched ).

      At the moment i am using Description->SetParameter() to achieve this by inserting a new BaseContainer that has been given test values for DESC_NAME, DESC_SHORT_NAME and DESC_UNIT but it isn`t showing up in the attributes manager.

      I think it may be something to do with creating proper DESC_IDs or something.  Either that or i am going about this in completely the wrong way!  Which is possible as its a bit like wandering around in the dark trying to figure this stuff out without proper examples..

      Heres the code i have which although the if statement is returning it is done, it isnt displaying the parameters as mentioned:

      Bool MyPlugin::Init(GeListNode *node)
      {
      	AutoAlloc<Description> desc;
      	node->GetDescription(desc, DESCFLAGS_DESC_0);
      	BaseContainer *descBC = desc->GetParameterI(MYPLUGIN_OBJECTWIDTH, NULL); // This returns an existing parameter successfully
      	
      	BaseContainer newBC = BaseContainer();
      	newBC.SetString(DESC_NAME, "My Description Param");
      	newBC.SetString(DESC_SHORT_NAME, "My Description Param");
      	newBC.SetLong(DESC_UNIT, DESC_UNIT_REAL);
        
      	if (desc->SetParameter(MYPLUGIN_NEWPARAMETER, newBC, DESCID_ROOT))
      	{
      		GePrint("it is done");
      	}
      	else
      	{
      		GePrint("it is not done");
      	}
      	
      	return TRUE;
      }
      
      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 15/08/2014 at 05:45, xxxxxxxx wrote:

        Howdy,

        You need to do that in the NodeData::GetDDescription() function. Do a search for GetDDescription here on plugin cafe and you'll find plenty of examples. 😉

        Adios,
        Cactus Dan

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 15/08/2014 at 06:09, xxxxxxxx wrote:

          Also, it is necessary that you include the Datatype ID in the Description ID you use for SetParameter().

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            On 15/08/2014 at 07:38, xxxxxxxx wrote:

            Very much appreciated guys, thank you.

            RE the Datatype ID Niklas - do you mean i`d create a DescID with my parameter ID, then insert the Datatype ID into that - using say DescID->PushId() ?

            Maybe like this?

            DescID MYPLUGIN_NEWPARAMETER = DescID(MYPLUGIN_NEWPARAMETER);
            MYPLUGIN_NEWPARAMETER.PushId(DESC_UNIT_REAL); desc->SetParameter(MYPLUGIN_NEWPARAMETER, newBC, DESCID_ROOT);
            

            I`m probably confusing things for myself 😕

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              On 15/08/2014 at 07:55, xxxxxxxx wrote:

              Nope, like this

              DescID descId(DescLevel(MYPLUGIN_NEWPARAMETER, DA_REAL, 0));
              

              DESC_UNIT_REAL is not a datatype ID. If you create a Floating-point parameter, use DA_REAL,
              for an Integer parameter DA_LONG, for SplineData CUSTOMDATATYPE_SPLINE, etc.

              Best,
              -NIKLAS

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                On 15/08/2014 at 10:05, xxxxxxxx wrote:

                Okay - thanks for that, much appreciated.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post