Extending Python - Pass Variable Parameter?

  • On 09/08/2016 at 16:13, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R13+ 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;   PYTHON  ;


    Is it possible to create a python extension function that takes an integer for the first parameter, and then a variable parameter for a second parameter, like I can do with a coffee extension function?

    For instance if I want the first parameter to be an ID, and then the second parameter to be either a bool, integer or float. Is that possible?

    Cactus Dan

  • On 09/08/2016 at 18:16, xxxxxxxx wrote:


    OK, never mind. I took an educated guess and it worked perfectly:

    LONG id;
    GeData gdata;
    const CHAR *kwlist[] = {"integer", "gedata", NULL};
    if(!pylib.ParseTupleAndKeywords(args, keywords, "iG", kwlist, &id, &gdata)) return pylib.ReturnPyFALSE();
    if(gdata.GetType() != DA_LONG && gdata.GetType() != DA_REAL) return pylib.ReturnPyFALSE();

    The last line checks the type, so the function only accepts a bool, int or float (a bool is actually an int). 😉

    Cactus Dan

  • On 10/08/2016 at 02:31, xxxxxxxx wrote:


    Yes, using a GeData is the way to go in Python to parse a parameter that can be of various types.

  • On 10/08/2016 at 05:45, xxxxxxxx wrote:


    Well, the educated guess was mainly in the use of the string "gedata". I sort of knew that a GeData was the way to go.

    That's why I asked in the other thread if you could post a complete list of parameters for the different types. 😉

    Cactus Dan

Log in to reply