Expression Editor buttons
-
On 05/02/2013 at 15:23, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 13
Platform: Windows ;
Language(s) : C++ ; PYTHON ;---------
Hi,I need to execute a python tag's "Execute" button with code.
The buttons that are found in the Expression Editor pallet that opens for the tag.
But all I could find is an r_expresssion.res file. With the button descriptions in it.
I can't even find an .h file with the ID#'s for these button.How do we execute these buttons?
-ScottA
-
On 05/02/2013 at 16:16, xxxxxxxx wrote:
...\resource\modules\xtensions\res\c4d_symbols.h 19,00 KB 23.08.2012 18:45:50 11 IDS_CYCLE_EXPRESSION, 18 IDS_FONT_BUTTON, 96 IDS_AM_COMMAND, 319 IDS_AM_COMMAND_LOCK, 466 //expression editor 468 IDD_EXPRESSION, 469 IDC_EXPRESSION_TEXT, 470 IDC_EXPRESSION_MESSAGE, 471 IDC_EXPRESSION_LINE, 472 IDC_EXPRESSION_POS, 473 IDC_EXPRESSION_FUNKTION, 474 IDC_EXPRESSION_LOAD, 475 IDC_EXPRESSION_SAVE, 476 IDC_EXPRESSION_COMPILE, 477 IDC_EXPRESSION_X1, 478 IDC_EXPRESSION_X2, 479 IDC_EXPRESSION_X3, 480 IDS_EXPRESSION_CLICKCOMPILE, 481 IDS_EXPRESSION_NOERROR,
not sure which are the right, one you'll have to find out for yourself you might also look at
agent ransack, quite awesome program for text serach.ps, its me littledevil, messed up my pw and the recoverry function is broken
-
On 05/02/2013 at 19:20, xxxxxxxx wrote:
I've actually been using Agent Ransak for a long time. Robert tipped me off to it a long time ago and I'd be lost without it.
But I'm afraid it's not helping me find what I need.I can launch the python tag's Expression Editor.
But then I think I need to grab that window. Because it's hosting those buttons ( I think ).#include "..\..\..\..\resource\modules\python\res\description python.h" BaseObject *obj = doc->GetActiveObject(); if(!obj) return FALSE; BaseTag *ft = obj->GetFirstTag(); //The first tag should be the python tag DescriptionCommand dc; dc.id = DescID(DescLevel(TPYTHON_OPENEDITOR)); //Opens the tag's Expression Editor window ft->Message(MSG_DESCRIPTION_COMMAND, &dc); //Sends a message to execute the button
I don't know how grab that Expression Editor window and then execute those buttons on it.
-ScottA
-
On 05/02/2013 at 21:06, xxxxxxxx wrote:
Do a search for ID_PYTHONSCRIPT in the SDK Docs (Windows CHM). This might be relevant to how you can execute a Python script from a C++ plugin.
-
On 06/02/2013 at 09:29, xxxxxxxx wrote:
MSG_SCRIPT_EXECUTE
looks like it might do what I need.
But I can't figure out how to use it based on the rather wild example they provided.-ScottA
-
On 06/02/2013 at 11:12, xxxxxxxx wrote:
Originally posted by xxxxxxxx
MSG_SCRIPT_EXECUTE
looks like it might do what I need.
But I can't figure out how to use it based on the rather wild example they provided.MSG_SCRIPT only works with plain scripts, not with expressions.
You could retrieve a Python expression's code with TPYTHON_CODE and create an ID_PYTHONSCRIPT node.
But an expression code isn't like a script code:
A script explicitly calls the main() function. An expression doesn't do that; CINEMA invokes it.To execute an expression's code you just have to make the tag's data dirty, then call a global update:
expression->SetDirty(DIRTYFLAGS_DATA); EventAdd();
-
On 06/02/2013 at 12:58, xxxxxxxx wrote:
Ok. Thanks Yannick.
Pretty much what I thought.What I'm doing is writing code into the python tag from a script in the script manager( or through a command plugin).
And I needed a way to make the "Execute" or "Compile" buttons occur in my script.
When you add text into a python tag remotely like this. The text is not recognized until one of these buttons is pressed.I'll give SetDirty() & EventAdd() a shot.
But what If I wanted to execute the "Compile", "Load", or "Save" buttons?
Is there a way to execute these buttons through code?-ScottA