[Sidefx-houdini-list] problem using hom setExpression from callback script

Edward Lam edward at sidefx.com
Sun Sep 11 20:35:14 EDT 2011


I thought string literals in hscript expressions must use double-quotes
(like C)?

-Edward

On Sun, September 11, 2011 12:23, François Duchesneau wrote:
> I tried the following expression directly in a string parameter and it
> doesn't work for me.
>
> ifs(strcmp('foo','foo')==0,'true','false')
>
> You need to include into backticks to make it work.
>
> François
>
>
> Daniel Flood wrote:
>> Hey François,
>>
>> Both examples were used on the same parameter, which is a string.
>> Entering
>> the expression into the parm (and also running it from the callback)
>> does
>> result in correct evaluation, however there is a silent "red node" error
>> revealed on middle mouse click.
>>
>> I tried running this instead:
>>
>> hou.node("/obj/null1").parm("parm").setExpression("ifs(strcmp('foo','foo')==0,'true','false')",
>> hou.exprLanguage.Python)
>>
>> And then the expression doesn't evaluate, i'm not sure this is correct
>> as
>> the expression being set is in hscript and not python.  Not sure how to
>> do
>> the if statement as a one liner for a python expression.
>>
>> cheers,
>> Dan
>>
>>
>>
>> 2011/9/11 François Duchesneau <sidefx at trinix.ca>
>>
>>
>>> Just throwing ideas here. Do you mean when you type
>>>
>>>
>>> ifs(strcmp('foo','foo')==0,'**true','false')
>>>
>>> directly in your parameter it works?
>>>
>>> Also when you say that when you use
>>>
>>>
>>> hou.node("/obj/null1").parm("**parm").setExpression("if(**
>>> strcmp('foo','foo')==0,1,2)",
>>> hou.exprLanguage.Hscript)
>>>
>>> it works, are you setting this expression in the same parameter as the
>>> ifs
>>> version that doesn't work? If yes, then it makes sense you've got an
>>> error
>>> if you're trying to set a string inside a float parameter for example.
>>>
>>> Also, make sure that when you set the expression via Python your
>>> parameter
>>> is actually evaluating a Python expression and not an Hscript.
>>>
>>> Hope this help.
>>>
>>> François
>>>
>>> François
>>>
>>> Daniel Flood wrote:
>>>
>>>
>>>> Hey folks,
>>>>
>>>> I'm setting an expression via hou.node().parm().**setExpression(), and
>>>> I
>>>> have
>>>> a problem where the parameter expression evaluates correctly, however
>>>> when
>>>> triggered from a callback script (either code in a shelf button, or a
>>>> parm
>>>> gui callback script), I the node goes red and shows the following
>>>> error:
>>>> "Channel Evaluation Error Bad data type for function or operation"
>>>>
>>>> here's my callback:
>>>>
>>>> hou.node("/obj/null1").parm("**parm").setExpression("ifs(**
>>>> strcmp('foo','foo')==0,'true',**'false')",
>>>> hou.exprLanguage.Hscript)
>>>>
>>>> This expression evaluates error free if ran from the hython shell,
>>>> however
>>>> if called back from a shelf button, if throws up a red node / MMB
>>>> click
>>>> error (note that the parm is actually being evaluated correctly).  I
>>>> did
>>>> notice that the following expression when set by the same method
>>>> evaluates
>>>> without any error:
>>>>
>>>> hou.node("/obj/null1").parm("**parm").setExpression("if(**
>>>> strcmp('foo','foo')==0,1,2)",
>>>> hou.exprLanguage.Hscript)
>>>>
>>>> So it seems I am not doing a good job of declaring my data types as it
>>>> seems
>>>> happy with integers and not strings. Could this be because strcmp
>>>> returns
>>>> an
>>>> integer, I'm mixing up data types? If so any suggestions for how I
>>>> should
>>>> do
>>>> it? Could this be some python parsing error, as the injected hscript
>>>> expression does evaluate correctly?
>>>>
>>>> So I'm at my wit's end on this...any ideas would be greatly
>>>> appreciated!
>>>> even the example on the sidefx docs seem to show mixing data types in
>>>> an
>>>> "ifs" statement: http://www.sidefx.co...**expressions/ifs
>>>>
>>>> cheers,
>>>> Dan
>>>> ______________________________**_________________
>>>> Sidefx-houdini-list mailing list
>>>> Sidefx-houdini-list at sidefx.com
>>>> https://lists.sidefx.com:443/**mailman/listinfo/sidefx-**houdini-list<https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list>
>>>>
>>>>
>>>>
>>>>
>>> ______________________________**_________________
>>> Sidefx-houdini-list mailing list
>>> Sidefx-houdini-list at sidefx.com
>>> https://lists.sidefx.com:443/**mailman/listinfo/sidefx-**houdini-list<https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list>
>>>
>>>
>> _______________________________________________
>> Sidefx-houdini-list mailing list
>> Sidefx-houdini-list at sidefx.com
>> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>>
>>
> _______________________________________________
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>





More information about the Sidefx-houdini-list mailing list