Load string from description?



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

    On 07/08/2012 at 01:04, xxxxxxxx wrote:

    Hello,

    I can load a string from the plugins resource using c4d.plugins.GeLoadString(). But this function
    does not work for description-elements. I want to get the string associated with the ID Tphong or
    PRIM_CUBE_LEN, just for example. How can I get it?

    Thanks in advance,
    Niklas



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

    On 07/08/2012 at 01:41, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    I can load a string from the plugins resource using c4d.plugins.GeLoadString(). But this function
    does not work for description-elements. I want to get the string associated with the ID Tphong or
    PRIM_CUBE_LEN, just for example. How can I get it?

    To get the name of a tag type you can call c4d.GetTagName() function that was added in R13:

    c4d.GetTagName(c4d.Tphong)
    

    Also another function to get an object type's name was added, c4d.GetObjectName() :

    c4d.GetObjectName(c4d.Ocube)
    

    And it's currently not possible to access the description parameters of objects. So we cannot get the name of PRIM_CUBE_LEN parameter (would be the id c4d.DESC_NAME in the description container for the parameter). But it's possible to access dynamic descriptions with BaseList2D.GetUserDataContainer().



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

    On 07/08/2012 at 01:54, xxxxxxxx wrote:

    Thanks for your answer Yannick.The GetTagName() function is what I searched for, thanks. :)

    > (would be the id c4d.DESC_NAME in the description container for the parameter).
    Wouldn't that require an instance of the actual object/tag so that we can obtain the description? (As you said, it's not possible Python anyway..)

    Regards,
    Niklas



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

    On 07/08/2012 at 02:03, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    Wouldn't that require an instance of the actual object/tag so that we can obtain the description?

    Yes, but that's not a big deal because the object doesn't need to be present in a document but in memory. Here's an handy function that returns the name of an object's parameter:

    String GetObjectParameterName(LONG type, LONG id)
    {
        BaseObject *op = BaseObject::Alloc(type);
        if (op->GetType()==type)
        {
            AutoAlloc<Description> desc; if (!desc) return String();
            if (!op->GetDescription(desc,DESCFLAGS_DESC_0)) return String();
            const BaseContainer *bc = desc->GetParameterI(id,NULL);
            if (bc)
                return bc->GetString(DESC_NAME);
        }
        return String();
    }
    

    So for PRIM_CUBE_LEN we would call it like this:

    GetObjectParameterName(Ocube, PRIM_CUBE_LEN)
    


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

    On 07/08/2012 at 02:06, xxxxxxxx wrote:

    Haha, ok! I just thought that would be kind of a large overhead. ;) But thanks for pointing it out.

    -Nik


Log in to reply