Tool doesn't execute until view is selected
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/07/2011 at 11:36, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 12
Platform: Windows ;
Language(s) : C.O.F.F.E.E ;---------
Hey guys.I'm having a problem with the SetPoint tool in a Coffee script(not a plugin).
I have to click in the main scene view for it to execute.
Here's the code:var obj = doc->GetActiveObject(); CallCommand(200000065); // Activate the Set Point Value tool tool()#MDATA_SETVALUE_SETX=1; tool()#TEMP_MDATA_SETVALUE_VAL_X = 300; CallButton(tool(),ID_MODELING_SETVALUE_TOOL); obj->Message(MSG_UPDATE); DrawViews(DRAWFLAGS_ONLY_ACTIVE_VIEW|DRAWFLAGS_NO_THREAD|DRAWFLAGS_NO_REDUCTION|DRAWFLAGS_STATICBREAK); EventAdd();
I've added the usual things to force C4D to update(Message, DrawViews, EventAdd) but they aren't working.
Is there some other way I can tell C4D to update and execute the tool when my script is executed?-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/07/2011 at 12:30, xxxxxxxx wrote:
Never mind.
I found a different way to execute it that works better:var obj = doc->GetActiveObject(); CallCommand(200000065); // Activate the Set Point Value tool tool()#MDATA_SETVALUE_SETX=1; tool()#TEMP_MDATA_SETVALUE_VAL_X = 300; CallButton(tool(), MDATA_APPLY); obj->Message(MSG_UPDATE); EventAdd();
-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/07/2011 at 05:12, xxxxxxxx wrote:
For modeling actions it's best to call the SendModelingCommand().
here an example:
var obj = doc->GetActiveObject(); var bc = new(BaseContainer); bc->SetData(TEMP_MDATA_SETVALUE_VAL_X, 300.0); bc->SetData(MDATA_SETVALUE_SETX, MDATA_SETVALUE_SET_SET); SendModelingCommand(ID_MODELING_SETVALUE_TOOL, doc, obj, bc, MODIFY_POINTSELECTION);
PS. I just noticed it's missing in the COFFEE R12 docs. Please refer to the COFFEE R9.5 docs in this case. I will update the COFFEE docs as soon as possible.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/07/2011 at 08:08, xxxxxxxx wrote:
Thanks Matthias.
Yes. I thought it was very strange that they were removed from the R12 Coffee docs. I asked around but never got a good answer why.
I guess it never made it to your desk. I'll contact you directly here in the future about such issues.I did try using the SMC first like in your example. But it always sends the selected point to 0.
For some reason it's not observing the line: bc->SetData(TEMP_MDATA_SETVALUE_VAL_X, 300.0);
That's why I went with a different method.
I'd rather use the SMC. But I can't make it work properly.-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/07/2011 at 15:10, xxxxxxxx wrote:
Indeed it's not setting the the correct value. I have to check why not.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 27/09/2012 at 06:48, xxxxxxxx wrote:
Hi i am hat the new her and just stumbled upon this because i got the same problem the TEMP_MDATA_SETVALUE_VAL_X doesn't work. So is there any News on why that is, and how it could be made to work???
Cheers
Wuensch -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 27/09/2012 at 07:54, xxxxxxxx wrote:
Originally posted by xxxxxxxx
Hi i am hat the new her and just stumbled upon this because i got the same problem the TEMP_MDATA_SETVALUE_VAL_X doesn't work. So is there any News on why that is, and how it could be made to work???
I just found that assigning the ID MDATA_SETVALUE_VAL (vector) in the tool container instead of TEMP_MDATA_SETVALUE_VAL_X works as expected:
var obj = doc->GetActiveObject(); var bc = new(BaseContainer); bc->SetData(MDATA_SETVALUE_SETX, MDATA_SETVALUE_SET_SET); bc->SetData(MDATA_SETVALUE_VAL, vector(300.0,0.0,0.0)); SendModelingCommand(ID_MODELING_SETVALUE_TOOL, doc, obj, bc, MODIFY_POINTSELECTION);
And to set the X, Y and Z values:
var obj = doc->GetActiveObject(); var bc = new(BaseContainer); bc->SetData(MDATA_SETVALUE_SETX, MDATA_SETVALUE_SET_SET); bc->SetData(MDATA_SETVALUE_SETY, MDATA_SETVALUE_SET_SET); bc->SetData(MDATA_SETVALUE_SETZ, MDATA_SETVALUE_SET_SET); bc->SetData(MDATA_SETVALUE_VAL, vector(300.0,300.0,300.0)); SendModelingCommand(ID_MODELING_SETVALUE_TOOL, doc, obj, bc, MODIFY_POINTSELECTION);
EDIT: As their name imply, TEMP_MDATA_SETVALUE_VAL_X, TEMP_MDATA_SETVALUE_VAL_Y and TEMP_MDATA_SETVALUE_VAL_Z are just temporary and seems to be only used by the UI of the tool, not by its modelling command (that accesses MDATA_SETVALUE_VAL instead). If you try to assign MDATA_SETVALUE_VAL to the tool, it gives you an invalid description ID error.