POV-Ray : Newsgroups : povray.general : Automatically named identifiers : Re: Automatically named identifiers Server Time
23 Nov 2024 03:23:48 EST (-0500)
  Re: Automatically named identifiers  
From: Thomas Fester
Date: 6 Nov 2024 16:20:00
Message: <web.672bdc61523ee1846c6071e48a2a825f@news.povray.org>
"Kenneth" <kdw### [at] gmailcom> wrote:
> "Leroy" <whe### [at] gmailcom> wrote:
> > "Kenneth" <kdw### [at] gmailcom> wrote:
>
> > >
> > > Maybe there are other (more complex?) ways of using Parse_String to accomplish
> > > what the OP wants-- *as* the #declared variable names-- but I don't have
> > > a clue as to how.
> >
> > #include "strings.inc"
> > Parse_String("#declare I")=4;
> > #debug concat("I =",str(I,0,0),"\n")
> >
> > works fine  on win3.7 version
> >
> > Parse_String("#declare I=4;") also works ok
>
> Aha! So a variable name CAN be auto-generated. Excellent. (These also work
> successfully in v3.8 beta 1.) I didn't think to try your iterations earlier; I
> was, uh, rushed for time yesterday :-[  (Well, that's my excuse anyway, ha)
>
> Unfortunately, even these would not solve Warren's initial query of
> auto-creating *multiple* #declares, at least not efficiently.
>
> Here's a #for-loop example that might *seem* to be a way to do it. Even though
> it works code-wise as SDL, the result is not what might be expected:
>
> [I used simple vectors here instead of Warren's splines]
> #declare My_Vector_Array=array[3] // 'bins' 0 to 2 inclusive
> #declare My_Vector_Array[0]= <.1,.3,.6>;
> #declare My_Vector_Array[1]= <.2,.4,.7>;
> #declare My_Vector_Array[2]= <.3,.5,.8>;
>
> #for(i,1,3)
> Parse_String(concat("declare MY_VECTOR_",str(i,0,0)," = <",
> vstr(3,My_Vector_Array[i-1],", ",0,1),">;"))
> #end
>
> This actually creates only ONE #declare, the final one:
> #declare MY_VECTOR_3 = <.3,.5,.8>;
>
> The Parse_String macro always #writes its result to a *single* file named
> parse_string.tmp  (in Windows anyway); so in the for-loop, each result simply
> gets over-written by the next one.
>
> It would be an interesting exercise to try and re-code the macro itself, to see
> if it could be made to deal with multiple entries...and to create multiple
> written .tmp files as well.

Wow - I'm thrilled so many answers! Thank you all!


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.