Duncan Booth
3/2/2008 10:58:00 AM
"Jules Stevenson" <jules@js3d.co.uk> wrote:
> Hello,
>
> Apologies if the terminology in this email is a little incorrect, I'm
> still finding my feet.
>
> I'm using python to generate some script for another language (MEL, in
> maya, specifically expressions). Maya runs python too, but
> unfortunately its expression language still has to use the maya
> syntax.
>
> If I pass the expression this code:
>
> #runtime code [mel]
> expRuntime="""float $pos[]=particleShape1.worldPosition;
> setAttr ("heartPP_1_"+particleShape1.particleId+".tx") $pos[0];
> setAttr ("heartPP_1_"+particleShape1.particleId+".ty") $pos[1];
> setAttr ("heartPP_1_"+particleShape1.particleId+".tz") $pos[2];
> """
> dynExpression (p, s=expRuntime, rad=1) #generate the expression
>
> Then maya errors out, however if I pass maya an 'escaped' version:
>
> expRuntime="""float $pos[]=particleShape1.worldPosition;\r\nsetAttr
> (\"heartPP_1_\"+particleShape1.particleId+\".tx\") $pos[0];\r\nsetAttr
> (\"heartPP_1_\"+particleShape1.particleId+\".ty\") $pos[1];\r\nsetAttr
> (\"heartPP_1_\"+particleShape1.particleId+\".tz\") $pos[2];" -rad
> particleShape1;"""
>
> Then all is well. My question is, is there any way to convert the
> first variable example to the second? It's a lot easier to type and on
> the eye.
>
Escaping the quotes doesn't change the string, so the only difference I can
see between your strings is that you have split the lines by carriage-
return+linefeed instead of just linefeed characters. If so:
s = expRuntime.replace('\n', '\r\n')
should have the desired effect.