Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 12/03/2013 at 08:59, xxxxxxxx wrote:
Hi, I'm not sure if my title is accurate enough. But, I'm thinking about having a User Data entry field where I can copy / paste the Python ID for certain object parameters (none specific), and then use that in a custom effector to alter that parameter.
So, I'm not sure if there's a simple way to translate the string. I've been looking at other ways to escape / un-escape strings in Python, but everything I've seen so far is more complicated than calling something like eval('stringToEval')
I will continue to search, but thought I'd post here in the mean time.
Thanks,
Jim
On 12/03/2013 at 09:44, xxxxxxxx wrote:
simply use eval.
print obj[eval('c4d.{0}'.format(obj[c4d.ID_USERDATA,1]))]
edit : and before someone starts complaining, yeah it is pretty sloppy and unsafe, so you might want to add some fallbacks and double checks.
On 12/03/2013 at 09:48, xxxxxxxx wrote:
Thanks ferdinand. I was just about to post that I got it to work My approach seems a bit different than yours though.
p = op[c4d.ID_USERDATA,4] obj[eval(p)] = <some value>
On 12/03/2013 at 09:49, xxxxxxxx wrote:
I do not recommend the eval function. See this excellent blog post why. Better use getattr:
try: val = getattr(c4d, obj[c4d.ID_USERDATA, 1]) except AttributeError: pass
-Niklas
On 12/03/2013 at 10:01, xxxxxxxx wrote:
Niklas, Ouch. That article sure makes eval() scary. I will take your suggestions.
Thank you,