Edit object in BaseDocument



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

    On 23/11/2008 at 11:45, xxxxxxxx wrote:

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

    ---------
       Hi!

    I have a beginner question. I have an object in a document and want to change its position in a ToolData::MouseInput.

    > <code>
    > Bool MyToolData::MouseInput(BaseDocument *doc, BaseContainer &data;, BaseDraw *bd, EditorWindow *win, const BaseContainer &msg;)
    > {
    >    GetActiveDocument()->GetFirstObject()->SetPos(Vector(100));
    >    return TRUE;
    > }</code>

    Currently the objects position is not updated in the editr until I clicked on the object. I guess I have to update the object or document. I tried MSG_UPDATE or MSG_CHANGE which did not work.

    Which Message needs to be sent (object? document?) ?

    Thanks a lot.



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

    On 23/11/2008 at 20:51, xxxxxxxx wrote:

    This might work (and a little more error checking) ;)

    BaseDocument* doc = GetActiveDocument();
    if (!doc) return FALSE;
    BaseObject* obj = doc->GetFirstObject();
    if (!obj) return FALSE;
    obj->SetPos(Vector(100.0f));
    obj->Message(MSG_UPDATE);
    // For asynchronous AM update while in Mouse loop
    GeSyncMessage(EVMSG_ASYNCEDITORMOVE);
    // Update display to show drag results
    DrawViews(DA_ONLY_ACTIVE_VIEW|DA_NO_THREAD|DA_NO_ANIMATION);
    return TRUE;



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

    On 24/11/2008 at 01:53, xxxxxxxx wrote:

    Thank you :) Works perfect


Log in to reply