Buttons: Apply, NewTransform,Reset



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

    On 09/04/2012 at 07:47, xxxxxxxx wrote:

    Maxon,
    Please provide me(us) the python code to execute these buttons.
    They are executed differently from the other buttons.

    Here is a C++ example of executing the Apply button on the TransformTool:

        CallCommand(200000069);                                    //Launch the Transfer Tool  
      LONG tool_id = doc->GetAction();                           //Get the active tool  
      BasePlugin *tool = FindPlugin(tool_id, PLUGINTYPE_TOOL);   //Get the tools id  
      if (!tool) return FALSE;   
      
    /////////// This section of code is used to execute the Apply button ///////////////      
      BaseContainer bc(BFM_ACTION);                     //Create a container with an action id  
      bc.SetLong(BFM_ACTION_ID, MDATA_TRANSFER_);       //Executes the transfer tool's apply button  
      bc.SetLong(BFM_ACTION_VALUE, TRUE);               //Not sure if this is actually needed or not  
      
      DescriptionCommand dc;  
      dc.id = DescID(DescLevel(MDATA_APPLY, DTYPE_BUTTON, tool->GetType()));  
      
      DescriptionCheckUpdate du;  
      du.doc = doc;  
      du.descid = &dc.id;  
      du.drawflags = 0;  
      
      tool->Message(MSG_DESCRIPTION_COMMAND, (void* )&dc);  
      tool->Message(MSG_DESCRIPTION_CHECKUPDATE, (void* )&du);  
      tool->Message(MSG_DESCRIPTION_USERINTERACTION_END);  
      tool->Message(MSG_TOOL_RESTART);  
      //////// End button code ///////////////////
    

    Please provide me(us) with the python code version of this.

    Thanks,
    -ScottA



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

    On 10/04/2012 at 03:23, xxxxxxxx wrote:

    Hi,

    The Python code is:

    import c4d
    from c4d import plugins
      
      
    def main() :
        c4d.CallCommand(c4d.ID_MODELING_TRANSFER_TOOL)
        
        tool = plugins.FindPlugin(doc.GetAction(), c4d.PLUGINTYPE_TOOL)
        if tool is not None:
            c4d.CallButton(tool, c4d.MDATA_APPLY)
            c4d.EventAdd()
      
    if __name__=='__main__':
        main()
    

    EDIT: I finally found how to make it work; I just missed c4d.EventAdd(). It's also missing in your C++ code.

    And this code does nothing and isn't necessary:

    Originally posted by xxxxxxxx

    /////////// This section of code is used to execute the Apply button ///////////////    
    BaseContainer bc(BFM_ACTION);                 //Create a container with an action id
    bc.SetLong(BFM_ACTION_ID, MDATA_TRANSFER_);   //Executes the transfer tool's apply button
    bc.SetLong(BFM_ACTION_VALUE, TRUE);           //Not sure if this is actually needed or not
    

    MDATA_TRANSFER_ marks the end of MDATA_TRANSFER's container entry enumeration; it's not a valid ID.



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

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

    Thank You sir.🍺

    Please, please, please always include the button code to execute tools in the docs in the future.
    Every time they add a new tool. I have to contact support to ask how to execute them.
    I shouldn't have to bother you guys with such trivial questions.

    BTW: This code also does not work in R12.

    Keep up the good work Yannick,
    -ScottA


Log in to reply