Inserting a custom tag & more



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

    On 13/04/2008 at 15:32, xxxxxxxx wrote:

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

    ---------
    Hi,

    I want to make a command plugin that does the following things.

    1. Insert two objects into the scene
    I already managed to do this. No problem.

    2. Attach a tag to one of the objects
    How do I do this? The tag I want to attach is an Expression Tag plugin that I made myself.

    3. Link the 2nd object in a link field in the 1st object
    The first object (it's a Generator Object plugin that I made myself) has some link fields in its description. I want to link the 2nd object in one of these link fields. How do I do that?

    Once again, thanks in advance!

    Greetings,
    Jack



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

    On 13/04/2008 at 20:20, xxxxxxxx wrote:

    2. Create the tag using BaseObject::MakeTag([insert PluginID here]). If you want to create undos as well, do it this way:

    BaseTag* tag = PluginTag::Alloc([insert PluginID here]);
    if (!tag) // error;
    baseObject->InsertTag(tag);
    baseDocument->AddUndo(UNDO_NEW, tag);

    3. Get the first object's BaseContainer and set the link:

    BaseContainer* bc = obj->GetDataInstance().
    if (bc) bc->SetLink([LINK_ID], secobj);

    Replace [LINK_ID] with the LINK id from the object's res description file.



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

    On 14/04/2008 at 00:04, xxxxxxxx wrote:

    Way cool, thank you very much!

    Just one additional question:
    Can I also create an UNDO for the complete action (create object + create object + create tag + link object)?

    Best regards,
    Jack



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

    On 14/04/2008 at 00:53, xxxxxxxx wrote:

    Btw. you can use MakeTag() to attach tags to objects.

    > \> doc->StartUndo(); \> \> BaseTag \*tag = NULL; \> tag = op->MakeTag(PLUGIN_ID); \> if(!tag) return FALSE; \> \> doc->AddUndo(UNDO_NEW, tag); \> \> doc->AddUndo(UNDO_CHANGE, tag); \> \> BaseContainer \*bc = tag->GetDataInstance(); \> bc->SetLink(LINK_ID, op2); \> \> doc->EndUndo(); \>

    cheers,
    Matthias



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

    On 14/04/2008 at 01:24, xxxxxxxx wrote:

    Perfect. That makes it even easier.

    Thanks!

    Greetings,
    Jack


Log in to reply