// same as ArrayMarkler4.pov with PutSub and GetSub Gone // Now with Named Subs // makes an combination of M single arrays with N elements // This lets you have several array types joined // in a virtual array linked by Name and 5 macros // Vers: 3.6 // Auth: Leroy Whetstone Email lrwii@joplin.com // Arrays: // Name_Sub1, Name_Sub2, Name_Sub3,... // macros: // Name_Put(Loc,Val1,....)..Fill all subs // Name_Get(Loc,Val1,....)..Get all subs to variables // Name_Trade(Loc1,Loc2)....Tade All values from Loc1 and Loc2 // Name_Copy(L1,L2).........Copy All values from Loc2 to Loc1 // Name_Sort(Array).........Sort using Array as values checked //===================Change======================= #declare ArrayName="Bat";//Name of virtual array (Prefix for macros and arrays) #declare SubNames="Obj Tex Loc Vec Rot";// number of named sub arrays // Space marks separtion -- No Spaces at end #declare ArrayElements=30;//arrays lenght #declare Save="TestLnkA.inc";// Save to this file TestCA.inc #declare SaveRemark="Testing LinkMaker.pov 5 array set up";// include Remark #declare SaveAppend=no;// append to file //===============End of Changes======================= //#declare Nam="Sub";//optional change #declare An=ArrayName; #declare E=ArrayElements; #declare Sl =strlen(SubNames); #declare Subs=0; #declare Cnt = 1; #while (Cnt < Sl) #if(asc(substr(SubNames,Cnt,1))=32) #declare Subs=Subs+1; #end #declare Cnt = Cnt+1; #end #declare Subs=Subs+1; //#debug concat("Subs =",str(Subs,3,3),"\n") #declare Nam=array[Subs]; #declare Lv = 1; #declare Cnt2 = 0; #declare Cnt = 1; #while (Cnt < Sl) #if(asc(substr(SubNames,Cnt,1))=32) #declare Nam[Cnt2]=substr(SubNames,Lv,Cnt-Lv); #declare Cnt2=Cnt2+1; #declare Lv=Cnt+1; #end #declare Cnt = Cnt+1; #end #declare Nam[Cnt2]=substr(SubNames,Lv,Sl-Lv+1); #declare Cnt = 0; #while (Cnt < Subs) #debug concat("Sub ",Nam[Cnt]," ") #declare Cnt = Cnt+1; #end #debug "\n" #debug "**************************************************************" #debug concat("\n\nThis Makes ",str(Subs,0,0)," Sub arrays :\n\n") #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" ",An,"_",Nam[Cnt]" = array[",str(E,0,0),"];\n") #declare Cnt = Cnt+1; #end #debug concat("\n\nAnd Makes ",str(5,0,0)," Macros :\n\n") #declare Ms1=concat(" ",An,"_Put(Loc" #declare Cnt = 0; #while (Cnt < Subs) ",Val",str(Cnt+1,0,0) #declare Cnt = Cnt+1; #end ")") #debug concat(Ms1,"_____ PUT all values in sub arrays\n") #declare Ms2= concat(" ",An"_Get(Loc" #declare Cnt = 0; #while (Cnt < Subs) ",Val",str(Cnt+1,0,0) #declare Cnt = Cnt+1; #end ")") #debug concat(Ms2,")_____ GET all values from sub arrays\n") #debug concat(" "An"_Trade(Loc1,Loc2)________________ Tade All values from Loc1 and Loc2\n") #debug concat(" "An"_Copy(Loc1,Loc2)_________________ Copy All values from Loc2 to Loc1\n") #debug concat(" "An"_Sort(Sub)_______________________ Sort using Sub low to high\n\n") #debug"_____________The full Code follows __________________ \n\n" //arrays #declare Cnt = 0; #while (Cnt < Subs) #debug concat("#declare "An,"_",Nam[Cnt]" = array[",str(E,0,0),"];\n") #declare Cnt = Cnt+1; #end //Put #debug concat("\n#macro",Ms1,"\n") #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #declare ",An,"_",Nam[Cnt]"[Loc] = Val",str(Cnt+1,0,0),";\n") #declare Cnt = Cnt+1; #end #debug"#end\n\n" //Get #debug concat("\n#macro",Ms2,"\n") #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #declare Val",str(Cnt+1,0,0)" = ",An,"_",Nam[Cnt],"[Loc];\n") #declare Cnt = Cnt+1; #end #debug"#end\n\n" // Trade #debug concat("#macro ",An,"_Trade(Loc1,Loc2)\n") #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #local Val",str(Cnt+1,0,0)" = ",An,"_",Nam[Cnt],"[Loc1];\n") #declare Cnt = Cnt+1; #end #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #declare ",An,"_",Nam[Cnt],"[Loc1] = ", An,"_",Nam[Cnt],"[Loc2];\n") #declare Cnt = Cnt+1; #end #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #declare ",An,"_",Nam[Cnt],"[Loc2] = ", "Val",str(Cnt+1,0,0),";\n") #declare Cnt = Cnt+1; #end #debug"#end\n\n" // Copy #debug concat("#macro ",An,"_Copy(Loc1,Loc2)\n") #declare Cnt = 0; #while (Cnt < Subs) #debug concat(" #declare ",An,"_",Nam[Cnt],"[Loc1] = ", An,"_",Nam[Cnt],"[Loc2];\n") #declare Cnt = Cnt+1; #end #debug"#end\n\n" // sort #debug concat("#macro ",An,"_Sort(Array)\n") #debug " #local Array2 = Array;\n" #debug " #local Cnt = 0;\n" #debug concat(" #while (Cnt < "str(E-1,0,0),")\n") #debug concat(" #local Val= Array2[Cnt];\n") #debug" #local Cnt2 = Cnt+1;\n" #debug concat(" #while (Cnt2 < "str(E,0,0),")\n") #debug concat(" #local Val2= Array2[Cnt2];\n") #debug " #if(Val2