// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team // //This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // println("ketcindylibout[20191020] loaded"); //help:start(); ////%WritetoS start//// WritetoS(fname,cmdL):=( // help:WritetoS("outdata",cmdL); regional(tmp,tmp1,tmp2,filename); if(indexof(fname,".")==0, filename=fname+".sce"; , filename=fname; ); SCEOUTPUT = openfile(filename); tmp="cd('"+Dirwork+"');//"; println(SCEOUTPUT,tmp); // tmp1=replace(Dirlib,"\","/"); tmp="Ketlib=lib("+Dq+LibnameS+Dq+");//"; //17.09.29 println(SCEOUTPUT,tmp); tmp="Ketinit();//"; println(SCEOUTPUT,tmp); tmp="Setwindow([XMIN,XMAX],[YMIN,YMAX]);"; // 16.06.26from tmp=Assign(tmp,["XMIN",XMIN,"XMAX",XMAX,"YMIN",YMIN,"YMAX",YMAX]); println(SCEOUTPUT,tmp); // 16.06.26until if(iswindows(), // 17.01.11from println(SCEOUTPUT,"setlanguage('en')"); ); // 17.01.11until tmp="pi=%pi;////"; println(SCEOUTPUT,tmp); forall(cmdL, println(SCEOUTPUT,#+"//"); ); closefile(SCEOUTPUT); ); ////%WritetoS end//// ////%kcS start//// kcS(path,fname):=kcS(path,fname,[]); kcS(path,fname,optionorg):=( //help:kcS(PathS,"boxdata"); //help:kcS(options=["r/m"]); regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg); if(indexof(fname,".")==0, filename=fname+".sce"; , filename=fname; ); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); ); flg=0; forall(strL, if(Toupper(substring(#,0,1))=="R", flg=0; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="M", flg=1; ); ); if(flg==0, tmp2=replace(filename,".sce",".txt"); tmp1=load(tmp2); if(length(tmp1)==0, flg=1; ); ); if(flg==1, tmp1=""; // 15.10.08 from if(iswindows(), tmp2=Batparent; , tmp2=Shellparent; ); flg=0; forall(reverse(1..length(tmp2)), if(flg==0, tmp=substring(tmp2,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(tmp2,0,#-1); tmp2=substring(tmp2,#,length(tmp2)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); // 15.10.08 to if(iswindows(), SCEOUTPUT = openfile("kc.bat"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp=Dq+path+Dq+" -nb -nwni -f "+filename; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit"); closefile(SCEOUTPUT); println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29, 0605 , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp=Dq+path+Dq+" -nwni -f "+filename; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29 ); wait(WaitUnit); setdirectory(Dirwork); ); ); ////%kcS end//// ////%SetpathS start//// SetpathS():=( regional(tmp,tmp1); if(!isstring(PathS), // 15.12.11 Setdirectory(Dirbin); // 15.12.07 tmp=load(Shellfile); if(iswindows(), tmp=tokenize(tmp," -nb"); PathS=tmp_1; , tmp=tokenize(tmp," -nwni"); tmp=tokenize(tmp_1,"/Applications/sci"); PathS="/Applications/sci"+tmp_2; ); setdirectory(Dirwork); ); PathS; ); ////%SetpathS end//// ////%ErrhandleS start//// ErrhandleS(fname):=( // 2016.02.28 regional(str); //17.04.14 if(indexof(PathS,"-6.")==0, str=["if iserror(-1) then"," error=lasterror()+'????';"]; str=append(str," errclear(-1);"); // 16.03.14 str=append(str," Fd=mopen("+Dq+wfile+Dq+",'wt');"); str=append(str," mfprintf(Fd,'%s','Error: '+error);"); str=append(str," mclose(Fd);"); str=append(str," quit();"); str=append(str,"end;"); str; , str=[]; //17.04.14 ); ); ////%ErrhandleS end//// ////%Testfunstr start//// Testfunstr(funstr,varx,vary):=( regional(var,val,fun,tmp,tmp1,tmp2); fun=replace(funstr,".x","(1)"); // 16.05.19 fun=replace(fun,".y","(2)"); // 16.05.19 tmp=indexof(varx,"="); var=substring(varx,0,tmp-1); val=substring(varx,tmp+1,length(varx)); tmp=indexof(val,","); val=substring(val,0,tmp-1); tmp1=replace(fun,var,"("+val+")"); tmp=indexof(vary,"="); var=substring(vary,0,tmp-1); val=substring(vary,tmp+1,length(vary)); tmp=indexof(val,","); val=substring(val,0,tmp-1); tmp1=replace(tmp1,var,"("+val+")"); tmp1; ); ////%Testfunstr end//// ////%CalcbyS start//// CalcbyS(name,cmd):=CalcbyS(name,SetpathS(),cmd,[]); CalcbyS(name,Arg1,Arg2):=( if(isstring(Arg1), CalcbyS(name,Arg1,Arg2,[]); , CalcbyS(name,SetpathS(),Arg1,Arg2); ); ); CalcbyS(name,path,cmd,optionorg):=( //help:CalcbyS("a",cmd); //help:CalcbyS(options= ["m/r","Wait=10","Cat=middle"]]); //help:CalcbyS(options1= ["Ncol=2","File=result","Dig=5"]]); regional(options,tmp,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL, ncoL,cat,dig,flg,wflg,file,nc,arg,cmdS,cmdlist,wfile,ext, waiting, errcheck); options=optionorg; tmp=divoptions(options); eqL=tmp_5; realL=tmp_6; strL=tmp_7; cat="M";//16.11.24 ncoL=2; ext=".txt"; waiting=10; dig=5; wfile=""; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="C", cat=Toupper(substring(tmp2,0,1));// 16.11.24 options=remove(options,[#]); ); if(tmp1=="N", ncoL=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="E", if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2); options=remove(options,[#]); ); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="D", dig=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="F", // 16.06.26from wfile=tmp2; options=remove(options,[#]); ); // 16.06.26until ); if(wfile=="", if(cat=="Y", wfile=Fhead+name; , wfile="resultS"; ); ); if(indexof(wfile,".")==0,// 16.06.26from wfile=wfile+ext; ); // 16.06.26until wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); if(CONTINUED==0, if((wflg==0) & (cat=="Y"), // 16.11.24 tmp=load(wfile); if(length(tmp)==0,wflg=1); ); ); file=Fhead+name; cmdS=cmd; cmdlist=[]; forall(1..floor(length(cmdS)/2),nc, //17.05.18 tmp1=cmdS_(2*nc-1); tmp1=replace(tmp1,LFmark,""); // 16.06.12 tmp1=replace(tmp1,CRmark,""); // 16.12.13 if(nc==length(cmdR)/2, //16.10.23from if(indexof(tmp1,"=")==0,tmp1="="+tmp1); ); //16.10.23from if(substring(tmp1,0,1)=="=", // tmp1=name+tmp1; // 16.12.20 ); tmp2=cmdS_(2*nc); // list of argments tmp3=""; tmp4=""; errcheck=0; forall(tmp2,arg, if(isstring(arg), if(Toupper(arg)=="ERROR", errcheck=1; , tmp3=tmp3+replace(arg,"'",Dq)+","; ); , if(!islist(arg), tmp3=tmp3+textformat(arg,dig)+","; , tmp=select(arg,isstring(#) % islist(#)); if(length(tmp)>0, tmp3=tmp3+"list("; tmp4=")"; , tmp3=tmp3+"["; tmp4="]"; ); forall(arg, if(isstring(#), tmp3=tmp3+replace(#,"'",Dq)+","; , if(!islist(#), // 15.11.01 from tmp3=tmp3+textformat(#,dig)+","; , tmp=textformat(#,dig); tmp=replace(tmp,"],[","];["); tmp3=tmp3+tmp+","; ); // 15.11.01 until ); ); tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+","; ); ); ); if(length(tmp3)>0, tmp3=substring(tmp3,0,length(tmp3)-1); tmp1=tmp1+"("+tmp3+");"; ); if(errcheck==1, if(indexof(Dirlib,"sciL5")>0, // 17.03.20 cmdlist=append(cmdlist,"errcatch(-1,'continue','nomessage');"); ); // 17.03.20 ); cmdlist=append(cmdlist,tmp1); if(errcheck==1, tmp=ErrhandleS(wfile); cmdlist=concat(cmdlist,tmp); ); ); if(CONTINUED==1, ComOutList=concat(ComOutList,cmdlist); , if(cat=="Y", tmp=[]; tmp=append(tmp,"Fd=mopen("+Dq+file+".txt"+Dq+",'wt');"); // 16.03.11 from tmp=append(tmp,"mfprintf(Fd,'%s',"+name+");"); tmp=append(tmp,"mclose(Fd);"); cmdlist=concat(cmdlist,tmp); // tmp="fprintfMat("+Dq+file+".txt"+Dq+","+name+")"; // cmdlist=append(cmdlist,tmp); // 16.03.11 until , // tmp="mputl(['????'],"+Dq+file+".txt"+Dq+");"; // 16.06.2 from // cmdlist=concat(cmdlist,[tmp]); // 16.06.2 until ); if(cat!="Y", // 16.12.18 cmdlist=append(cmdlist,"mputl('||||','"+wfile+"')"); ); cmdlist=append(cmdlist,"quit()"); if(wflg==0, tmp1=load(file+".sce"); if(length(tmp1)==0, wflg=1; , tmp1=tokenize(tmp1,"////"); tmp1=tokenize(tmp1_2,"//"); tmp1=tmp1_(1..(length(tmp1)-1)); if(length(tmp1)!=length(cmdlist), wflg=1; , tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#); if(length(tmp)>0, wflg=1); ); ); ); if(wflg==0,wflg=-1); // 15.10.16 if(wflg==1, if(length(wfile)>0, // 15.10.05 SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); ); WritetoS(file+".sce",cmdlist); kcS(path,file,concat(options,["m"])); // 15.09.25 ); flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp=load(wfile); if(length(tmp)>=4, tmp2=substring(tmp,length(tmp)-4,length(tmp)); if(tmp2=="////" % tmp2=="||||" % tmp2=="????", // 16.08.09 if(indexof(Toupper(tmp),"ERROR")>0, println(tmp); flg=2; , flg=1; ); ); tmp2=#*WaitUnit/1000; , if(wflg==-1, flg=-1; , wait(WaitUnit); ); ); ); ); if(flg<=0, ErrFlag=1; if(flg==-1, println(wfile+" does not exist"); , tmp="("+text(waiting)+" s )"; println(wfile+" not generated "+tmp); ); , if(flg==1, println(" CalcbyS succeeded "+name+"("+text(tmp2)+" sec)"); //16.06.03 , ErrFlag=1; ); ); ); if(wflg>-1, // wait(WaitUnit); ); ); ////%CalcbyS end//// ////%Scifun start//// Scifun(name,fun,argL):=Scifun(name,fun,argL,[]);//16.10.22 Scifun(name,fun,argL,optionorg):=( //help:Scifun("1","date()",[]); //help:Scifun(options=["Disp=y"]); regional(nm,options,eqL,disp,cmdL,fname, tmp,tmp1,tmp2); nm="sc"+name; fname=Fhead+nm+".txt"; options=optionorg; tmp=divoptions(options); precise=6; disp=1; pack=[]; set=[]; add=""; eqL=tmp_5; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); //181111 tmp2=substring(#,tmp,length(#)); if(tmp1=="D" , tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); ); cmdL=[]; cmdL=concat(cmdL,[ nm+"="+fun,argL, "Fd=mopen",[Dq+fname+Dq,Dq+"wt"+Dq], "Sla=char(47)+char(47);",[], "mputl",["string("+nm+")+Sla","Fd"], "mputl",["Sla","Fd"], "mclose",["Fd"] ]); options=append(options,"Wait=2"); CalcbyS(nm,cmdL,options); if(ErrFlag==0, tmp=load(fname); tmp=replace(tmp,"////",""); tmp=tokenize(tmp,"//"); tmp=apply(tmp,if(!isstring(#),textformat(#,6),Dq+#+Dq)); if(length(tmp)==1, tmp=tmp_1; ); tmp=nm+"="+text(tmp); parse(tmp); if(disp==1, // 15.11.24 println(nm+" is : "); println(parse(nm)); ); ); parse(nm); ); ////%Scifun end//// ////%WritetoR start//// WritetoR(fname,cmdL):=WritetoR(fname,cmdL,[]); WritetoR(fname,cmdL,options):=( // help:WritetoR("outdata",cmdL); regional(eqL,tmp,tmp1,tmp2,filename,waiting); if(indexof(fname,".")==0, filename=fname+".r"; , filename=fname; ); tmp=divoptions(options); eqL=tmp_5; waiting=5; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); if(Toupper(substring(tmp1,0,1))=="W", waiting=parse(tmp2); ); ); SCEOUTPUT = openfile(filename); tmp1=replace(Dirwork,"\","/"); tmp="setwd("+Dq+tmp1+Dq+")##"; println(SCEOUTPUT,tmp); tmp1=replace(Libname,"\","/"); // 17.09.24from // tmp="load('"+tmp1+".Rdata')"; # 17.10.12 tmp="source('"+tmp1+".r')##"; // 17.09.24temporarily println(SCEOUTPUT,tmp); println(SCEOUTPUT,"Ketinit()##"); // 16.07.07 tmp="Setwindow(c(XMIN,XMAX),c(YMIN,YMAX))####"; // 16.06.26from tmp=Assign(tmp,["XMIN",XMIN,"XMAX",XMAX,"YMIN",YMIN,"YMAX",YMAX]); println(SCEOUTPUT,tmp); forall(cmdL, println(SCEOUTPUT,#+"##"); ); closefile(SCEOUTPUT); // flg=0; // tmp1=floor(waiting*1000/WaitUnit); // repeat(tmp1, // if(flg==0, // tmp=load(filename); // if(length(tmp)>0, // flg=1; // , // wait(WaitUnit); // ); // ); // ); ); ////%WritetoR end//// ////%kcR start//// kcR(path,fname):=kcR(path,fname,[]); kcR(path,fname,optionorg):=( //help:kcR(PathR,"boxdata"); //help:kcR(options=["m/r","Wait=10"]); regional(options,tmp,tmp1,tmp2,eqL,strL,filename,ferr,flg); if(indexof(fname,".")==0, filename=fname+".r"; , filename=fname; ); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); ); flg=0; forall(strL, if(Toupper(substring(#,0,1))=="R", flg=0; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="M", flg=1; options=remove(options,[#]); ); ); if(flg==0, tmp2=replace(filename,".r",".txt"); tmp1=load(tmp2); if(length(tmp1)==0, flg=1; ); ); if(flg==1, tmp1=""; // 15.10.08 from if(iswindows(), tmp2=Batparent; , tmp2=Shellparent; ); flg=0; forall(reverse(1..length(tmp2)), if(flg==0, tmp=substring(tmp2,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(tmp2,0,#-1); tmp2=substring(tmp2,#,length(tmp2)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); // 15.10.08 to ferr="errormessageR.txt";//16.10.22from SCEOUTPUT=openfile(ferr); closefile(SCEOUTPUT);//16.10.22uptp if(iswindows(), SCEOUTPUT = openfile("kc.bat"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp=Dq+path+"\R"+Dq+" --vanilla --slave < "+filename+" 2> "+ferr; //16.10.22 println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit"); closefile(SCEOUTPUT); println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05 , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); if(PathR=="",tmp="R",tmp=PathR);//16.10.20 tmp=tmp+" --vanilla --slave < "+filename+" 2> "+ferr;//17.10.12 println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29,06.05 ); wait(WaitUnit); setdirectory(Dirwork); ); ); ////%kcR end//// ////%Dataframe start//// Dataframe(nmL,dL):=Dataframe(nmL,dL,[]); Dataframe(nmL,dL,options):=( //help:Dataframe(["name","no1","no2"],dtL); //help:Dataframe(options=["Dig=5"]); regional(dig,tmp,tmp1,tmp2,out); dig=5; tmp=Divoptions(options); tmp=tmp_5; forall(tmp, tmp1=Toupper(substring(#,0,1)); tmp2=indexof(#,"="); tmp2=substring(#,tmp2,length(#)); if(tmp1=="D", dig=parse(tmp2); ); ); out="data.frame("; forall(1..(length(nmL)), tmp1=nmL_#; tmp2=column(dL,#); tmp2=apply(tmp2,if(isstring(#),Dq+#+Dq,format(#,dig))); tmp=tmp1+"="+tmp2+","; out=out+tmp; ); out=substring(out,0,length(out)-1)+")"; out=replace(out,"[","c("); out=replace(out,"]",")"); ); ////%Dataframe end//// ////%MkprecommandR start//// MkprecommandR():=MkprecommandR(6,"PVOFG"); //180508(9lines) MkprecommandR(Arg):=( regional(out,tmp1); if(isstring(Arg), MkprecommandR(8,Arg); //190921 , if(islist(Arg), out=[]; forall(Arg, tmp1=Rform(#); out=concat(out,[tmp1,[]]); ); out; , MkprecommandR(Arg,"PVOFG"); ); ); ); MkprecommandR(dig,chstr):=( //190921 pre->dig regional(cmdL,Plist,tmp,tmp1,tmp2); cmdL=[]; cmdL=concat(cmdL,["arccos=acos; arcsin=asin; arctan=atan",[]]); //181209 if(indexof(chstr,"P")>0, Plist=[]; forall(remove(allpoints(),[SW,NE]), tmp=textformat(re(Lcrd(#)),dig); tmp=RSform(tmp); tmp1=#.name; tmp1=tmp1+"="+tmp+";Assignadd('"+tmp1+"',"+tmp1+")"; Plist=append(Plist,tmp1); ); forall(1..(length(Plist)), cmdL=concat(cmdL,[Plist_#,[]]); ); ); if(indexof(chstr,"V")>0, tmp2=sort(apply(VLIST,#_1)); // 16.02.03 from tmp=apply(allpoints(),text(#));//18.02.11 tmp2=remove(tmp2,tmp); tmp1=[]; forall(tmp2,tmp, tmp1=concat(tmp1,select(VLIST,#_1==tmp)); ); VLIST=tmp1;// 17.09.24from forall(VLIST, tmp=#_1; tmp1=#_2; if(!isstring(tmp1), if(islist(tmp1), tmp2="["; forall(tmp1, tmp2=tmp2+textformat(#,dig)+","; ); tmp1=substring(tmp2,0,length(tmp2)-1)+"]"; , tmp1=format(tmp1,dig); ); ); tmp1=RSform(tmp1); tmp1=tmp+"="+tmp1+";"; tmp1=tmp1+"Assignadd('"+tmp+"',"+tmp+")"; cmdL=concat(cmdL,[tmp1,[]]);//17.09.24until ); ); if(indexof(chstr,"O")>0, forall(OutFileList, cmdL=concat(cmdL,["tmp=ReadOutData",[Dq+#+Dq]]); ); ); if(indexof(chstr,"F")>0, forall(FUNLIST, cmdL=concat(cmdL,[#,[]]); ); ); if(indexof(chstr,"G")>0, forall(GLIST, if(indexof(#,"ReadOutData")==0, //18.02.12 tmp1=Rform(#); cmdL=concat(cmdL,[tmp1,[]]); ); ); ); cmdL; ); ////%MkprecommandR end//// ////%CalcbyR start//// CalcbyR(name,cmd):=CalcbyR(name,PathR,cmd,[]); CalcbyR(name,Arg1,Arg2):=( if(isstring(Arg1), CalcbyR(name,Arg1,Arg2,[]); , CalcbyR(name,PathR,Arg1,Arg2); ); ); CalcbyR(name,path,cmd,optionorg):=( //help:CalcbyR(name,cmd); //help:CalcbyR(options=["m/r","Wait=2","Out=y/n","Dig=8","Pre=PVFG"]); //help:CalcbyR(options2=["Pre=!G" ]); regional(options,tmp,tmp1,tmp2,tmp3,realL,strL,eqL, cat,dig,prestr,flg,wflg,file,nc,arg,cmdR,cmdlist,wfile,waiting); options=optionorg; tmp=divoptions(options); eqL=tmp_5; realL=tmp_6; strL=tmp_7; dig=8; //190921 tmp=cmd_(length(cmd)-1); //181130from if(!isstring(tmp),tmp=text(tmp)); //190109 if(indexof(tmp,"=")+indexof(tmp,"::")>0, cat="Y"; , tmp=cmd_(length(cmd)); if(length(tmp)>0, cat="Y"; , cat="N"; ); ); //181130to wfile=""; prestr="VF"; //180508,190224 waiting=30; //180608 nopoint="n"; //190222 forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); tmp2=tmp_2; if((tmp1=="C")%(tmp1=="O"), cat=Toupper(substring(tmp2,0,1)); options=remove(options,[#]); ); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="P", //180508from tmp2=Toupper(tmp2); if(substring(tmp2,0,1)!="!", prestr=tmp2; , tmp2=substring(tmp2,1,length(tmp2)); forall(1..(length(tmp2)), prestr=replace(prestr,substring(tmp2,#-1,#),""); ); );//180508to options=remove(options,[#]); ); if(tmp1=="D", dig=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="F", wfile=tmp2; //18.02.27 options=remove(options,[#]); ); if(tmp1=="R", wfile=tmp2; //180227 options=remove(options,[#]); ); ); if(wfile=="", if(cat=="Y", wfile=Fhead+name+".txt"; , wfile="resultR.txt"; ); ); wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); if(CONTINUED==0, if((wflg==0) & (cat!="N"), // 16.11.13 tmp=load(wfile); if(length(tmp)==0,wflg=1); ); ); if(length(name)>0,//180412from file=Fhead+name; , file=Cindyname(); );//180412to cmdR=[]; cmdR=MkprecommandR(dig,prestr); //190921 cmdR=concat(cmdR,cmd); //18.01.27to cmdlist=[]; if(dig>5, //16.10.28from cmdlist=append(cmdlist,"options(digits="+text(dig+2)+");"); ); //16.10.28until forall(1..floor(length(cmdR)/2),nc, //17.05.18 tmp1=cmdR_(2*nc-1); tmp1=replace(tmp1,LFmark,""); // 16.06.12 // if(nc==length(cmdR)/2, //16.10.23from // if(indexof(tmp1,"=")==0,tmp1="="+tmp1);//16.12.20 // ); //16.10.23uptp if(substring(tmp1,0,1)=="=", tmp1=name+tmp1; ); tmp2=cmdR_(2*nc); // list of argments tmp3=""; forall(tmp2,arg, if(isstring(arg), tmp3=tmp3+replace(arg,"'",Dq)+","; , if(length(arg)==1, tmp3=tmp3+textformat(arg,dig)+","; , tmp3=tmp3+"c("; forall(arg, tmp3=tmp3+textformat(#,dig)+","; ); tmp3=substring(tmp3,0,length(tmp3)-1)+")"+","; ); ); ); if(length(tmp3)>0, tmp3=substring(tmp3,0,length(tmp3)-1); tmp1=tmp1+"("+tmp3+")"; ); cmdlist=append(cmdlist,tmp1); ); tmp1=cmdlist_(length(cmdlist)); if(indexof(tmp1,"=")==0, if(length(name)>0, //180412 tmp1=tokenize(tmp1,"::"); if(length(tmp1)==1, if(indexof(tmp1_1,"(")==0, //180510from tmp2=name+"="+tmp1_1; , tmp2=tmp1_1; ); //180510to , tmp2=name+"=list("; forall(tmp1, tmp2=tmp2+#+","; ); tmp2=substring(tmp2,0,length(tmp2)-1)+")"; //180510(moved) ); cmdlist_(length(cmdlist))=tmp2; ); ); if(CONTINUED==1, ComOutList=concat(ComOutList,cmdlist); , if(cat=="Y", //16.10.23from tmp="sharp=rawToChar(as.raw(35))"; cmdlist=append(cmdlist,tmp); tmp="sharps=paste(sharp,sharp,'\n',sep='')"; cmdlist=append(cmdlist,tmp); tmp="if(Length("+name+")==0){"+name+"='nodata'}"; //18.01.29 cmdlist=append(cmdlist,tmp); cmdlist=append(cmdlist,"if(is.matrix("+name+")){"); cmdlist=append(cmdlist," tmp=list()");//18.02.01from cmdlist=append(cmdlist," for(ii in 1:Length("+name+")){"); cmdlist=append(cmdlist," tmp=c(tmp,list(Op(ii,"+name+")))"); cmdlist=append(cmdlist," }"); cmdlist=append(cmdlist," "+name+"=tmp"); cmdlist=append(cmdlist,"}");//18.02.01until cmdlist=append(cmdlist,"if(is.list("+name+")){"); // tmp=" cat(names("+name+"),file='"+wfile+"',sep=',')"; //18.01.27deleted // cmdlist=append(cmdlist,tmp); // tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; // cmdlist=append(cmdlist,tmp); cmdlist=append(cmdlist," for(ii in Looprange(1,length("+name+"))){"); cmdlist=append(cmdlist," if(is.list("+name+"[[ii]])){"); tmp=" cat('[',file='"+wfile+"',sep='',append=TRUE)"; cmdlist=append(cmdlist,tmp); tmp=" cat(sharps,file='"+wfile+"',sep='',append=TRUE)"; cmdlist=append(cmdlist,tmp); tmp=" for(jj in Looprange(1,length("+name+"[[ii]]))){"; cmdlist=append(cmdlist,tmp); tmp=" cat("+name+"[[ii]][[jj]],file='"+wfile+"',sep=',',append=TRUE)"; cmdlist=append(cmdlist,tmp); tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; cmdlist=append(cmdlist,tmp); cmdlsit=append(cmdlist," }"); cmdlist=append(cmdlist," }"); tmp=" cat(']',file='"+wfile+"',sep=',',append=TRUE)"; cmdlist=append(cmdlist,tmp); tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; cmdlist=append(cmdlist,tmp); cmdlist=append(cmdlist," }else{"); tmp=" cat("+name+"[[ii]],file='"+wfile+"',"; tmp=tmp+"sep=',',append=TRUE)"; cmdlist=append(cmdlist,tmp); tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; cmdlist=append(cmdlist,tmp); cmdlist=append(cmdlist," }"); cmdlist=append(cmdlist," }"); cmdlist=append(cmdlist,"}else{"); tmp=" cat("+name+",file='"+wfile+"',sep=',')"; cmdlist=append(cmdlist,tmp); tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; cmdlist=append(cmdlist,tmp); cmdlist=append(cmdlist,"}"); tmp="cat('////',file='"+wfile+"',sep=',',append=TRUE)"; cmdlist=append(cmdlist,tmp); ); //16.10.23until if(cat!="Y", // 16.12.18 cmdlist=append(cmdlist,"cat('////',file='"+wfile+"',sep='')"); ); cmdlist=append(cmdlist,"quit()"); if(wflg==0, tmp1=load(file+".r"); if(length(tmp1)==0, wflg=1; , tmp1=tokenize(tmp1,"####"); // 15.09.25 from tmp1=tokenize(tmp1_2,"##"); tmp1=tmp1_(1..(length(tmp1)-1)); if(length(tmp1)!=length(cmdlist), wflg=1; , tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#); if(length(tmp)>0, wflg=1); ); ); // 15.09.25 to ); if(wflg==0,wflg=-1); // 15.10.16 if(wflg==1, if(length(wfile)>0, // 15.10.05 SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); ); WritetoR(file+".r",cmdlist); //17.10.08 SCEOUTPUT=openfile("errormessageR.txt");//18.02.20from println(SCEOUTPUT,""); closefile(SCEOUTPUT);//18.02.20until kcR(PathR,file,concat(options,["m"])); // 15.09.25 ); flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp=load(wfile); if(length(tmp)>=4, tmp2=substring(tmp,length(tmp)-4,length(tmp)); if(tmp2=="////", tmp=substring(tmp,0,length(tmp)-4); flg=1; tmp2=#*WaitUnit/1000; ); , if(wflg==-1, flg=-1; , wait(WaitUnit); tmp=load("errormessageR.txt");//18.02.20 if(length(tmp)>1, println(tmp); flg=-2; );//18.02.20 ); ); ); ); if(flg<=0, ErrFlag=1; if(flg==-1, println(wfile+" does not exist"); , if(flg==0, tmp="("+text(waiting)+" s )"; println(wfile+" not generated "+tmp); ); ); , println(" CalcbyR succeeded "+name+" ("+text(tmp2)+" sec)"); if(cat=="Y", // 16.10.29,11.25 tmp1=tokenize(tmp,"##"); //16.10.23from tmp1=tmp1_(1..(length(tmp1)-1)); tmp2=[]; forall(tmp1,tmp3, if(!isstring(tmp3), tmp=format(tmp3,dig); , if(indexof(tmp3,",")==0, tmp=Dqq(tmp3); //180227 , tmp=tmp3; if(substring(tmp3,0,2)=="c(", tmp=substring(tmp3,2,length(tmp3)-1); ); tmp=tokenize(tmp,","); tmp=textformat(tmp,dig); ); ); tmp2=append(tmp2,tmp); ); if(length(tmp2)==1, tmp2=tmp2_1; if(length(tmp2)==1,tmp2=tmp2_1); if(isstring(tmp2), if(indexof(tmp2,"nodata")>0,tmp2="[]"); //180227from tmp2=parse(tmp2); ); tmp3=textformat(tmp2,dig);//180227until , tmp3=""; forall(tmp2, if(length(#)==0, tmp3=tmp3+"[],"; , tmp3=tmp3+#+","; ); ); tmp3="["+substring(tmp3,0,length(tmp3)-1)+"]"; tmp3=replace(tmp3,"[,","["); tmp3=replace(tmp3,",]","]"); ); tmp=name+"="+tmp3+";";//180227//190415 parse(tmp); ); ); ); ); ////%CalcbyR end//// ////%Rfun start//// Rfun(name,fun,argL):=Rfun(name,fun,argL,[]);//16.10.22 Rfun(name,fun,argL,optionorg):=( //help:Rfun("1","rnorm",[10]); //help:Rfun(options=["Disp=y(n)","Pre="]); regional(nm,options,eqL,disp,cmdL, tmp,tmp1,tmp2); nm="R"+name; options=optionorg; tmp=divoptions(options); precise=6; disp=1; pack=[]; set=[]; add=""; eqL=tmp_5; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); //181111 tmp2=substring(#,tmp,length(#)); if(tmp1=="D", tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); ); cmdL=[]; cmdL=concat(cmdL,[ nm+"="+fun,argL, ]); // options=concat(options,["Wait=2"]); options=concat(options,["Wait=2","Cat=y"]); //190109 CalcbyR(nm,cmdL,options); if(ErrFlag==0, if(disp==1, // 15.11.24 println(nm+" is : "); println(parse(nm)); ); ); parse(nm); ); ////%Rfun end//// ////%Readcsv start//// Readcsv(file):=Readcsv(Dirwork,file); Readcsv(Arg1,Arg2):=( //190301from if(islist(Arg2), Readcsv(Dirwork,Arg1,Arg2); , Readcsv(Arg1,Arg2,[]); //190317 ); ); //190301from Readcsv(path,file,options):=( //help:Readcsv("ex.csv"); //help:Readcsv(directory,"ex.csv"); //help:Readcsv(options=["Head=no"]); regional(dt,eqL,head,from,end,tmp); tmp=Divoptions(options); eqL=tmp_5; head="Y"; from=1; //190125from,190818 from=2; forall(eqL, tmp=Strsplit(#,"="); if(Toupper(substring(tmp_1,0,1))=="H", head=Toupper(substring(tmp_2,0,1));//190818 ); ); if(head=="N",//190818from from=1; ); //190125,190818to tmp=file; if(indexof(tmp,".csv")==0,tmp=tmp+".csv"); //190301 dt=readfile2str(path,tmp); dt=tokenize(dt,"/LF/"); end=length(dt); if(dt_(length(dt))=="", end=end-1; dt=dt_(from..end); //190125 ); dt=apply(dt,tokenize(#,",")); if(length(dt)==1, dt=dt_1); //190125 dt; ); ////%Readcsv end//// ////%Writecsv start//// Writecsv(nmL,data,file):=Writecsv(nmL,data,file,[]); Writecsv(nmL,dataorg,file,optionorg):=( //help:Writecsv([],data,"ex.csv"); //help:Writecsv(["a","b"],data,"ex.csv"); //help:Writecsv(optins=["Col=1"]); regional(nameL,data,eqL,strL,ncol,nrow,fname,dig,tmp,tmp1,tmp2); ncol=0; // 17.02.09from dig=5; if(isstring(dataorg),data=parse(dataorg),data=dataorg); if(islist(data_1), ncol=length(data_1); data=flatten(data); ); // 17.02.09until options=optionorg; tmp=divoptions(options); eqL=tmp_5; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); if(Toupper(substring(tmp1,0,1))=="C", ncol=parse(tmp2); options=remove(options,[#]); ); ); if(indexof(file,".")==0,fname=file+".csv",fname=file); if(ncol==0,ncol=max(1,length(nmL))); tmp1=mod(length(data),ncol); if(tmp1>0, tmp=apply(1..(ncol-tmp1),-1); data=concat(data,tmp); ); nrow=length(data)/ncol; if(length(nmL)0, varstr=variable; , varstr=variable+"="+textformat([XMIN,XMAX],5); ); varstr=replace(varstr,"[","c("); varstr=replace(varstr,"]",")"); filename=Fhead+name+".r"; wfile=Fhead+name+".txt"; cmdL=MkprecommandR(pre); //191020 cmdL=concat(cmdL,[ name+"=Plotdata",[Dqq(func),Dqq(varstr),Dqq("Num="+text(Num))], "WriteOutData",[Dqq(wfile),Dqq(name),name] ]); if(ErrFlag==0, tmp=["Cat=middle","Wait="+text(waiting)]; //191020[2lines] CalcbyR(name,cmdL,concat(options,tmp)); ); if(ErrFlag==1, println("PlotdataR not completed"); , if(outreg==1, OutFileList=remove(OutFileList,[wfile]); OutFileList=append(OutFileList,wfile); ); ReadOutData(wfile); Extractdata(name,options); tmp=parse(name); tmp1=name+"="+textformat(tmp,5)+";"; parse(tmp1); tmp2=apply(tmp,Lcrd(#)); tmp2; ); ); ////%PlotdataR end//// ////%PlotdiscR start//// PlotdiscR(nm,fun,varrng):=PlotdiscR(nm,fun,varrng,[]); PlotdiscR(nm,fun,varrng,optionorg):=( //help:PlotdiscR("1","dbinom(k,10,0.4)","k=[0,10]"); //help:PlotdiscR(options=["Pre=PVF","Wait=10"]); //191020 regional(name,pb,cmdL,var,range,tmp,tmp1,tmp2, pre,waiting,options,wfile,eqL); name="grd"+nm; options=optionorg; //191020from tmp=Divoptions(options); eqL=tmp_5; waiting=5; pre="PVF"; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="W", waiting=parse(tmp_2); options=remove(options,[#]); ); if(tmp1=="P", //191020from pre=tmp_2; options=remove(options,[#]); ); ); //191020 tmp=indexof(varrng,"="); var=substring(varrng,0,tmp-1); range=parse(substring(varrng,tmp,length(varrng))); if(length(range)==2, range=(range_1)..(range_2); ); wfile=Fhead+name+".txt"; cmdL=MkprecommandR(pre); //191020from cmdL=concat(cmdL,[ "fnb=function("+var+") "+fun,[], name+"=sapply",[range,"fnb"] ]); //191020to if(ErrFlag==0, tmp=["Wait="+text(waiting)]; //191020[2lines] CalcbyR(name,cmdL,concat(options,tmp)); ); if(ErrFlag==1, println("PlotdiscR not completed"); , tmp1=load(wfile); tmp1=substring(tmp1,0,length(tmp1)-4); tmp1=replace(tmp1,"##",""); pb=tokenize(tmp1,","); tmp=apply(range,[#,pb_(#+1)]); Listplot("-"+name,tmp,options); //190424 ); ); ////%PlotdiscR end//// ////%Boxplot start//// Boxplot(nm,dataorg,ypos,dy):=Boxplot(nm,dataorg,ypos,dy,[]); Boxplot(nm,dataorg,ypos,dy,optionorg):=( //help:Boxplot("1",dt,2,1/2,[""]); regional(options,name,data,bp,cmdL,waiting,tmp,tmp1,tmp2,tmp3,tmp4, out,eqL,strL,pstr,ext,file,flg,wrflg); name="bp"+nm; options=optionorg; tmp=divoptions(options); eqL=tmp_5; strL=tmp_7; waiting=10; wrflg=0; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); if(Toupper(substring(tmp1,0,1))=="W", waiting=parse(tmp2); options=remove(options,[#]); ); ); forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="R", wrflg=-1; options=remove(options,[#]); ); if(tmp=="M", wrflg=1; options=remove(options,[#]); ); ); data=dataorg; if(isstring(data), if(indexof(data,".")==0,data=data+".dat"); if(iswindows(), // 15.11.10 data=replace(data,"/","\"); flg="\"; , data=replace(data,"\","/"); flg="/"; ); forall(reverse(1..length(data)), if(length(flg)>0, tmp=substring(data,#-1,#); if(tmp==flg, tmp3=substring(data,0,#-1); tmp4=substring(data,#,length(data)); if(indexof(tmp3,":")==0, // 11.11.10 tmp=substring(tmp3,0,1); if(tmp!=flg, tmp3=Dirwork+flg+tmp3; ); ); flg=""; ); ); ); if(length(flg)>0, tmp3=Dirwork; //15.11.10 tmp4=data; ); setdirectory(tmp3); tmp=load(tmp4); if(length(tmp)==0, ErrFlag=2); // 15.11.07 until setdirectory(Dirwork); , file=Fhead+name+".dat"; tmp=load(file); if(length(tmp)>0, tmp1=tokenize(tmp,","); tmp1=tmp1_(1..(length(tmp1)-1)); , tmp1=[]; ); flg=0; if(length(tmp1)==length(data), tmp=tmp1-data; tmp=select(tmp,#!=0); if(length(tmp)>0,flg=1); , flg=1; ); if(flg==1, SCEOUTPUT=openfile(file); forall(data, print(SCEOUTPUT,textformat(#,5)+","); ); println(SCEOUTPUT,"////"); closefile(SCEOUTPUT); // wait(WaitUnit); ); data=file; ); data=replace(data,"\","/"); cmdL=[ "tmp=readLines",[Dq+data+Dq, "warn=FALSE"], "tmp=substring",["tmp",1,"nchar(tmp)-4"], "data=strsplit",["tmp",Dq+","+Dq,"fix=TRUE"], "data=data[[1]]",[], "fun=function(s) eval(parse(text=s))",[], "data=sapply",["data","fun"], "data=data[!is.na(data)]",[], "tmp=boxplot",["data","plot=FALSE"], "tmp1=tmp$stat",[], "tmp2=tmp$out",[], name+"=c(tmp1,tmp2)",[] ]; file=Fhead+name+".txt"; options=append(options,"Wait="+text(waiting)); if(wrflg==1,options=append(options,"m")); if(wrflg==-1,options=append(options,"r")); if(ErrFlag==0, CalcbyR(name,cmdL,options); ); if(ErrFlag>0, if(ErrFlag==1,println("Boxplot not completed")); if(ErrFlag==2,println(Dq+data+Dq+" not found")); , bp=parse(name); pstr="["; tmp1=[bp_1,ypos-dy/2]; tmp2=[bp_1,ypos+dy/2]; Listplot(name+text(1),[tmp1,tmp2],concat(options,["Msg=no"])); pstr=pstr+Dq+"sg"+name+text(1)+Dq+","; tmp1=[bp_2,ypos-dy]; tmp2=[bp_2,ypos+dy]; tmp3=[bp_4,ypos+dy]; tmp4=[bp_4,ypos-dy]; Listplot(name+text(2),[tmp1,tmp2,tmp3,tmp4,tmp1],append(options,"Msg=no")); pstr=pstr+Dq+"sg"+name+text(2)+Dq+","; tmp1=[bp_5,ypos-dy/2]; tmp2=[bp_5,ypos+dy/2]; Listplot(name+text(3),[tmp1,tmp2],append(options,"Msg=no")); pstr=pstr+Dq+"sg"+name+text(3)+Dq+","; tmp1=[bp_3,ypos-dy]; tmp2=[bp_3,ypos+dy]; Listplot(name+text(4),[tmp1,tmp2],concat(options,["dr,2","Msg=no"])); pstr=pstr+Dq+"sg"+name+text(4)+Dq+","; tmp1=[bp_1,ypos]; tmp2=[bp_2,ypos]; Listplot(name+text(5),[tmp1,tmp2],concat(options,["da","Msg=no"])); pstr=pstr+Dq+"sg"+name+text(5)+Dq+","; tmp1=[bp_4,ypos]; tmp2=[bp_5,ypos]; Listplot(name+text(6),[tmp1,tmp2],concat(options,["da","Msg=no"])); pstr=pstr+Dq+"sg"+name+text(6)+Dq+","; out=bp_(6..length(bp)); if(length(out)>0, out=apply(out,[#,ypos]); Pointdata(name+text(1),out,concat(options,[0,"Size=2","Inside=white"])); //190125 ); pstr=substring(pstr,0,length(pstr)-1)+"]"; println("generate totally "+name); tmp=name+"="+pstr; [bp_(1..5),out]; ); ); ////%Boxplot end//// ////%Histplot start// Histplot(nm,dataorg):=Histplot(nm,dataorg,[]); Histplot(nm,dataorg,optionorg):=( //help:Histplot("1",data(fillename)); //help:Histplot(options=["Breaks=","Den=no","Rel=no"]); regional(options,name,data,waiting,hp,cmdL,tmp,tmp1,tmp2,tmp3,tmp4, out,eqL,strL,breaks,bdata,cdata,pstr,file,flg,rwflg,density,relative); name="hp"+nm; options=optionorg; tmp=divoptions(options); eqL=tmp_5; strL=tmp_7; breaks = "breaks="+Dq+"Sturges"+Dq; density=0; relative=0; waiting=10; //190125 forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="B", if(substring(tmp_2,0,1)=="[", // 190226from tmp1=RSform(tmp_2); , tmp1=tmp_2; );// 190226to breaks="breaks="+tmp1; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="D", tmp2=Toupper(substring(tmp1,0,1)); if(tmp2=="T" % tmp2=="Y", density=1; ); options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="R", tmp2=Toupper(substring(tmp1,0,1)); if(tmp2=="T" % tmp2=="Y", relative=1; ); options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="W", waiting=parse(tmp1); options=remove(options,[#]); ); ); wrflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="R", wrflg=-1; options=remove(options,[#]); ); if(tmp=="M", wrflg=1; options=remove(options,[#]); ); ); data=dataorg; if(isstring(data), if(indexof(data,".")==0,data=data+".csv"); if(iswindows(), // 15.11.10 data=replace(data,"/","\"); flg="\"; , data=replace(data,"\","/"); flg="/"; ); forall(reverse(1..length(data)), if(length(flg)>0, tmp=substring(data,#-1,#); if(tmp==flg, tmp3=substring(data,0,#-1); tmp4=substring(data,#,length(data)); if(indexof(tmp3,":")==0, // 11.11.10 tmp=substring(tmp3,0,1); if(tmp!=flg, tmp3=Dirwork+flg+tmp3; ); ); flg=""; ); ); ); if(length(flg)>0, tmp3=Dirwork; //15.11.10 tmp4=data; ); setdirectory(tmp3); tmp=load(tmp4); if(length(tmp)==0, ErrFlag=2); // 15.11.07 until setdirectory(Dirwork); , file=Fhead+name+".dat"; tmp=load(file); if(length(tmp)>0, tmp1=tokenize(tmp,","); tmp1=tmp1_(1..(length(tmp1)-1)); , tmp1=[]; ); flg=0; if(length(tmp1)==length(data), tmp=tmp1-data; tmp=select(tmp,#!=0); if(length(tmp)>0,flg=1); , flg=1; ); if(flg==1, SCEOUTPUT=openfile(file); forall(data, print(SCEOUTPUT,textformat(#,5)+","); ); println(SCEOUTPUT,"////"); closefile(SCEOUTPUT); // wait(WaitUnit); ); data=file; ); data=replace(data,"\","/"); cmdL=[ "tmp=readLines",[Dq+data+Dq, "warn=FALSE"], "tmp=substring",["tmp",1,"nchar(tmp)-4"], "data=strsplit",["tmp",Dq+","+Dq,"fix=TRUE"], "data=data[[1]]",[], "fun=function(s) eval(parse(text=s))",[], "data=sapply",["data","fun"], "data=data[!is.na(data)]",[], "tmp=hist",["data","plot=FALSE",breaks], "tmp1=tmp$breaks",[], "tmp2=tmp$count",[], "tmp3=tmp$density",[], name+"=c(tmp1,tmp2,tmp3)",[] ]; file=Fhead+name+".txt"; options=append(options,"Wait="+text(waiting)); if(wrflg==1,options=append(options,"m")); if(wrflg==-1,options=append(options,"r")); if(ErrFlag==0, CalcbyR(name,cmdL,options); ); if(ErrFlag>0, if(ErrFlag==1,println("Histplot not completed")); if(ErrFlag==2,println(Dq+data+Dq+" not found")); , // tmp=load(file); // tmp=replace(tmp,"/",""); // tmp=tokenize(tmp,","); // tmp=name+"="+textformat(tmp,5)+";"; // parse(tmp); hp=parse(name); tmp1=(length(hp)-1)/3+1; tmp2=tmp1+(length(hp)-1)/3; bdata=hp_(1..tmp1); if(density==0, cdata=hp_((tmp1+1)..tmp2); , cdata=hp_((tmp2+1)..length(hp)); ); if(relative==1, cdata=cdata/sum(cdata); ); options=append(options,"Msg=no"); // 15.10.03 pstr="["; forall(1..length(cdata), tmp1=[bdata_#,0]; tmp2=[bdata_#,cdata_#]; tmp3=[bdata_(#+1),cdata_#]; tmp4=[bdata_(#+1),0]; Listplot(name+text(#),[tmp1,tmp2,tmp3,tmp4,tmp1],options); pstr=pstr+Dq+"sg"+name+text(#)+Dq+","; ); pstr=substring(pstr,0,length(pstr)-1)+"]"; println("generate totally "+name); tmp=name+"="+pstr+";"; //190415 parse(tmp); [bdata,cdata]; ); ); ////%Histplot end// ////%Scatterplot start//// Scatterplot(nm,file):=Scatterplot(nm,file,[],[]); Scatterplot(nm,file,options):=Scatterplot(nm,file,options,[]); Scatterplot(nm,file,optionorg,optionsreg):=( //help:Scatterplot("1",(path+)filename); //help:Scatterplot("2",ptlist,["Size=2"],["da","Color=blue"]); //help:Scatterplot("3",ptlist,["Reg=n"]); //help:Scatterplot(options=["Reg=n","Size=3","Color="]); //help:Scatterplot(options1=["Reg=y(n)",pointstyle]); //help:Scatterplot(options2=[position([]), linestyle]); regional(tmp,tmp1,tmp2,fname,name,reg,eqL,strL,cdysize, options,dtx,dty,nn,mx,my,sx,sy,sxy,rr,aa,bb,size,pos); name="sc"+nm; options=optionorg; tmp=divoptions(options); eqL=tmp_5; options=remove(options,tmp_6); strL=tmp_7; //181013(2lines) options=remove(options,strL); size=3; reg="y"; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="R", reg=substring(tmp2,0,1); options=remove(options,[#]); ); if(tmp1=="S", size=parse(tmp2); options=remove(options,[#]); options=append(options,"Size="+text(size));//181013 ); ); if(isstring(file), //181013 if(indexof(file,".")==0, fname=file+".csv"; , fname=file; ); tmp=Readcsv(fname,strL);//181013from , tmp=file; ); parse("rc"+nm+"="+Textformat(tmp,5)+";"); //181013to //190415 Pointdata(name,parse("rc"+nm),options); tmp=parse("rc"+nm); dtx=apply(tmp,#_1); dty=apply(tmp,#_2); nn=length(dtx); mx=sum(dtx)/nn; my=sum(dty)/nn; sx=sqrt(dtx*dtx/nn-mx^2); sy=sqrt(dty*dty/nn-my^2); sxy=dtx*dty/nn-mx*my; rr=sxy/sx/sy; aa=sxy/sx^2; bb=my-aa*mx; tmp1=optionsreg; tmp=divoptions(tmp1); reL=tmp_6; //181013(2lines) tmp1=remove(tmp1,reL); tmp1=append(tmp1,"Num=1"); pos=[]; if(length(reL)>0, pos=reL_1; ); tmp=Assign("a*x+b",["a",aa,"b",bb]); if(reg!="n", Plotdata(name,tmp,"x",tmp1); ); if(length(pos)>0, //181013from tmp="r="+textformat(rr,3)+",\ y="; tmp=tmp+textformat(aa,3)+"x"; if(bb>0,tmp=tmp+"+",tmp=tmp+"-"); tmp=tmp+textformat(abs(bb),3); Expr([pos,"e",tmp]); //181013to ); [mx,my,sx,sy,sxy,rr,bb,aa]; ); ////%Scatterplot end//// ////%Rulerscale start//// Rulerscale(pt,hscale,vscale):=Rulerscale(pt,hscale,vscale,0.1,[]);//180722from Rulerscale(Arg1,Arg2,Arg3,Arg4):=( if(!islist(Arg4), Rulerscale(Arg1,Arg2,Arg3,Arg4,[]); , Rulerscale(Arg1,Arg2,Arg3,0.2,Arg4); ); );//180722to Rulerscale(pt,hscale,vscale,tick,options):=(//180722 //help:Rulerscale(A,["r",0,5,1],["s2",0,2,4]); //help:Rulerscale(A,["r",0,5,1],["f",10,"a",20,"w2","b"]); //help:Rulerscale(A,["r",0,5,1],["r",0,10,1],0.2); regional(pA,pos,mrk,dir,mag,tmp,tmp1,tmp2,tmp3); pA=Lcrd(pt); if(length(hscale)>0, pos=[]; mrk=[]; dir=[]; tmp=Toupper(substring(hscale_1,0,1)); if(tmp=="R" % tmp=="F", if(tmp=="R", dir="s2"; tmp1=hscale_2; tmp2=hscale_3; tmp3=hscale_4; if(length(hscale)>4,mag=hscale_5,mag=1); //181014 tmp=floor((tmp2-tmp1)/tmp3); pos=apply(0..tmp,tmp1+#*tmp3);//181014 mrk=apply(pos,text(#*mag)); dir=apply(1..length(pos),"s2"); , forall(2..(length(hscale)-2), tmp1=hscale_(#); tmp2=hscale_(#+1); tmp3=hscale_(#+2); if(isreal(tmp1), pos=append(pos,tmp1); if(isstring(tmp3), dir=append(dir,tmp2); mrk=append(mrk,tmp3); , dir=append(dir,"s2"); mrk=append(mrk,tmp2); ); ); ); if(isreal(tmp2), pos=append(pos,tmp2); dir=append(dir,"s2"); mrk=append(mrk,tmp3); ); ); , pos=hscale_(2..length(hscale)); dir=apply(pos,"s2"); mrk=apply(pos,text(#)); ); pos=apply(pos,[#,pA_2]); forall(1..length(pos), Expr([pos_#,dir_#,mrk_#],options); tmp1=pos_#; tmp2=pos_#-Unscaling([0,tick]); //181017 Listplot("rsh"+text(#),[tmp1,tmp2],concat(options,["Msg=no"])); ); ); if(length(vscale)>0, pos=[]; mrk=[]; dir=[]; tmp=Toupper(substring(vscale_1,0,1)); if(tmp=="R" % tmp=="F", if(tmp=="R", dir="w2"; tmp1=vscale_2; tmp2=vscale_3; tmp3=vscale_4; if(length(vscale)>4,mag=vscale_5,mag=1); //181014 tmp=floor((tmp2-tmp1)/tmp3); pos=apply(0..tmp,tmp1+#*tmp3); mrk=apply(pos,text(#*mag)); //181014 dir=apply(1..length(pos),"w2"); , forall(2..(length(vscale)-2), tmp1=vscale_(#); tmp2=vscale_(#+1); tmp3=vscale_(#+2); if(isreal(tmp1), pos=append(pos,tmp1); if(isstring(tmp3), dir=append(dir,tmp2); mrk=append(mrk,tmp3); , dir=append(dir,"w2"); mrk=append(mrk,tmp2); ); ); ); if(isreal(tmp2), pos=append(pos,tmp2); dir=append(dir,"w2"); mrk=append(mrk,tmp3); ); ); , pos=vscale_(2..length(vscale)); dir=apply(pos,"w1"); mrk=apply(pos,text(#)); ); pos=apply(pos,[pA_1,#]); forall(1..length(pos), Expr([pos_#,dir_#,mrk_#],options); tmp1=pos_#; tmp2=pos_#-Unscaling([tick,0]); //181017 Listplot("rsv"+text(#),[tmp1,tmp2],concat(options,["Msg=no"])); ); ); ); ////%Rulerscale end//// MkprecommandS():=MkprecommandS(6); MkprecommandS(prec):=( regional(cmdL,Plist,Pnamelist,Pvaluelist,tmp,tmp1,tmp2); cmdL=[]; Plist=[]; Pnamelist=[]; Pvaluelist=[]; forall(remove(allpoints(),[SW,NE]), tmp=Lcrd(#); tmp1=format(re(tmp_1),prec);// 15.02.05 tmp2=format(re(tmp_2),prec); tmp="["+tmp1+","+tmp2+"]"; Plist=append(Plist,#.name+"="+tmp); Pnamelist=append(Pnamelist,#.name); Pvaluelist=append(Pvaluelist,tmp); ); forall(1..length(Plist), cmdL=concat(cmdL,[Plist_#,[]]); cmdL=concat(cmdL,["Assignrep('"+Pnamelist_#+"',"+Pvaluelist_#+")",[]]); ); tmp2=sort(apply(VLIST,#_1)); // 16.02.03 from tmp1=[]; forall(tmp2,tmp, tmp1=concat(tmp1,select(VLIST,#_1==tmp)); ); VLIST=tmp1;// 16.02.03 until forall(VLIST, tmp=Sciform(#_1); tmp1=#_2; // 15.02.06 if(!isstring(tmp1), if(islist(tmp1), if(!isstring(tmp1_1), // 16.11.14 tmp2="["; forall(tmp1, if(abs(#)<10^(-prec), // 16.01.30 tmp2=tmp2+"0,"; , tmp2=tmp2+format(#,prec)+","; ); ); tmp1=substring(tmp2,0,length(tmp2)-1)+"]"; , tmp2="list("; // 16.11.14from forall(tmp1, tmp2=tmp2+#+","; ); tmp1=substring(tmp2,0,length(tmp2)-1)+")"; ); // 16.11.14until , tmp1=format(tmp1,prec); ); ); cmdL=concat(cmdL,[tmp+"evstr('"+tmp1+"')",[]]); tmp=substring(tmp,0,length(tmp)-1); cmdL=concat(cmdL,["Assignrep('"+tmp+"',"+tmp1+")",[]]); // 15.01.27 ); forall(OutFileList, tmp=["tmp=ReadOutData",[Dq+#+Dq], "if length(tmp(1))>8,execstr(tmp),end",[]]; cmdL=concat(cmdL,tmp); ); forall(FUNLIST, // 16.02.17 from cmdL=concat(cmdL,[#,[]]); ); // 16.02.17 until forall(GLIST, tmp1=Sciform(#); cmdL=concat(cmdL,[tmp1,[]]); ); cmdL; ); PlotdataS(name1,func,var):=PlotdataS(name1,func,var,[]); PlotdataS(nm,fun,variable,optionorg):=( // help:PlotdataS("1","besselj(1,x)","x"); // help:PlotdataS(options=["m/r","Num=50","Wait=5","Mx=no"]); regional(options,name,varstr,Num,waiting,mxcheck,outreg, eqL,strL,fname,tmp,tmp1,tmp2,tmp3,cmdL,flg,wflg); name="grsc"+nm; fname=Fhead+name+".txt"; options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; Num=50; waiting=5; mxcheck=0; // 16.03.02 outreg=0; flg=0; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="N", Num=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="O", tmp=Toupper(substring(tmp2,0,1)); if(tmp=="T" % tmp=="Y", outreg=1); options=remove(options,[#]); ); if(tmp1=="M", tmp=Toupper(substring(tmp2,0,1)); if(tmp=="T" % tmp=="Y", mxcheck=1); options=remove(options,[#]); ); ); wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(length(#)==0, options=remove(options,[#]); ); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); tmp=indexof(variable,"="); if(tmp>0, varstr=variable; , varstr=variable+"="+textformat([XMIN,XMAX],5); ); cmdL=MkprecommandS(); cmdL=concat(cmdL,[ name+"=Plotdata",[Dq+fun+Dq,Dq+varstr+Dq,Dq+"Num="+text(Num)+Dq], "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name] ]); ErrFlag=0; // 16.03.02 from if(mxcheck==1, Mxfun(name,fun,[],["Disp=n"]); tmp=parse("mx"+name); if(!isstring(tmp),ErrFlag=1); ); options=append(options,"Wait="+text(waiting)); if(wflg==1,options=append(options,"m")); if(wflg==-1,options=append(options,"r"));// 16.03.02 until if(ErrFlag==0, CalcbyS(name,cmdL,concat(options,["cat=middle","Wait="+text(waiting)])); ); if(ErrFlag==1, println(" PlotdataS not completed"); , if(outreg==1, // 2016.03.02 ( // ) OutFileList=remove(OutFileList,[wfile]); OutFileList=append(OutFileList,wfile); ); ReadOutData(fname); Extractdata(name,options); tmp=parse(name); tmp1=name+"="+textformat(tmp,5)+";"; //190415 parse(tmp1); // Addgraph(name); // 16.04.04 tmp2=apply(tmp,Lcrd(#)); tmp2; ); ); Dotfilldata(nm,iostr,pltlist):= Dotfilldata(nm,iostr,pltlist,[]); Dotfilldata(nm,iostr,pltlist,optionorg):=( //help:Dotfilldata("1","ii",[["sg1"],["sg2"]]); //help:Dotfilldata(options=[0.3,"Wait=5"]); regional(options,name,fun,eqL,reL,strL,outreg, plt,fname,options,tmp,tmp1,tmp2,tmp3,flg, wflg,waiting,dense); name="df"+nm; fname=Fhead+name+".txt"; fun=fnorg; tmp=indexof(fun,"="); if(tmp>0, tmp1=substring(fun,0,tmp-1); tmp2=substring(fun,tmp,length(fun)); fun=tmp1+"-("+tmp2+")"; ); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; dense=0.3; waiting=5; outreg=0; forall(reL, dense=#; ); forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="O", tmp=Toupper(substring(tmp2,0,1)); if(tmp=="T" % tmp=="Y", outreg=1); options=remove(options,[#]); ); ); wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(length(#)==0, options=remove(options,[#]); ); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); if(islist(iostr), tmp1=text(apply(iostr,Dq+#+Dq)); tmp1=replace(tmp1,"[","list("); //16.02.14 tmp1=replace(tmp1,"]",")"); //16.02.14 , tmp1=Dq+iostr+Dq; ); if(!islist(pltlist_1), tmp2=apply(pltlist,if(length(#)==1,Dq+#+Dq,#)); tmp2=text(tmp2); tmp2="list("+substring(tmp2,1,length(tmp2)-1)+"),"; , tmp2=""; forall(pltlist,plt, tmp=apply(plt,if(length(#)==1,Dq+#+Dq,#)); tmp=text(tmp); tmp="list("+substring(tmp,1,length(tmp)-1)+")"; tmp2=tmp2+tmp+","; ); ); cmdL=MkprecommandR(); //17.09.29 tmp2=substring(tmp2,0,length(tmp2)-1); tmp=[tmp1,tmp2]; tmp=concat(tmp,dense); cmdL=concat(cmdL,[ "Setscaling",[SCALEX,SCALEY], //181020 "Setunitlen",[Dq+ULEN+Dq], name+"=Dotfilldata",tmp, "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name], ]); options=append(options,"Wait="+text(waiting)); if(wflg==1,options=concat(options,["m"])); if(wflg==-1,options=concat(options,["r"])); options=append(options,"Cat=n"); if(ErrFlag==0, CalcbyR(name,cmdL,options); //17.09.29 ); if(ErrFlag==1, println("Dotfilldata not completed"); , if(outreg==1, OutFileList=remove(OutFileList,[fname]); OutFileList=append(OutFileList,fname); ); if(ErrFlag==0, ReadOutData(fname); tmp1=parse(name); forall(tmp1, tmp=#_1; draw(tmp,pointsize->1); ); Com2nd("tmp=ReadOutData("+Dq+fname+Dq+")"); Com2nd("Drwpt("+name+")"); ); ); ); WritetoA(fname,cmdL):=( // help:WritetoA("outdata",cmdL); regional(tmp,tmp1,tmp2,filename,wfilename,endmark); if(indexof(fname,".")==0, filename=fname+".rr"; , filename=fname; ); wfilename=replace(filename,".rr",".txt"); SCEOUTPUT = openfile(filename); // tmp=replace(Dirlib,"\","/"); // tmp="load("+Dq+tmp+"/oshima/os_muldif.rr"+Dq+")$/*####*/"; tmp="/*####*/"; // 16.03.11 println(SCEOUTPUT,tmp); tmp="output("+Dq+wfilename+Dq+")$/*##*/"; // 16.05.18from println(SCEOUTPUT,tmp); // 16.05.18until forall(1..(length(cmdL)), tmp1=cmdL_#; tmp=indexof(tmp1,";"); // 16.05.18from if(tmp>0,endmark=";",endmark="$"); tmp1=replace(tmp1,";",""); // 16.05.18until if(#==length(cmdL)-1, println(SCEOUTPUT,tmp1+";/*##*/"); , println(SCEOUTPUT,tmp1+endmark+"/*##*/");//16.05.18 ); ); closefile(SCEOUTPUT); ); ////%kcA start//// kcA(fname):=kcA(fname,[]); kcA(fname,optionorg):=( //help:kcA("boxdata"); //help:kcA(options=["r/m"]); regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg); if(indexof(fname,".")==0, filename=fname+".rr"; , filename=fname; ); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); ); flg=0; forall(strL, if(Toupper(substring(#,0,1))=="R", flg=0; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="M", flg=1; ); ); if(flg==0, tmp2=replace(filename,".rr",".txt"); tmp1=load(tmp2); if(length(tmp1)==0, flg=1; ); ); if(flg==1, tmp1=""; if(iswindows(), tmp2=Batparent; , tmp2=Shellparent; ); flg=0; forall(reverse(1..length(tmp2)), if(flg==0, tmp=substring(tmp2,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(tmp2,0,#-1); tmp2=substring(tmp2,#,length(tmp2)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); if(iswindows(), SCEOUTPUT = openfile("kc.bat"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp="del "+replace(filename,".rr",".txt"); println(SCEOUTPUT,tmp); tmp=Dq+PathA+Dq+" -quiet -f "+Dq+filename+Dq; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit"); closefile(SCEOUTPUT); tmp=replace(filename,".rr",".txt"); println(kc(Dirwork+Batparent,Dirlib,tmp)); // 16.05.29,06.05 , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp="rm "+replace(filename,".rr",".txt"); println(SCEOUTPUT,tmp); tmp=Dq+PathA+Dq+" -quiet -f "+Dq+filename+Dq; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); tmp=replace(filename,".rr",".txt"); println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp));// 16.05.29,06.05 ); // wait(WaitUnit); setdirectory(Dirwork); ); ); ////%kcA end//// ////%CalcbyA start//// CalcbyA(name,cmd):=CalcbyA(name,cmd,[]); CalcbyA(name,cmd,optionorg):=( //help:CalcbyA("a",cmd); //help:CalcbyA(options= ["m/r","Wait=10","Ext=txt","Dig=16"]]); regional(options,tmp,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL, dig,flg,wflg,file,nc,arg,cmdA,cmdlist,wfile,ext,waiting,num,st); options=optionorg; tmp=divoptions(options); eqL=tmp_5; realL=tmp_6; strL=tmp_7; wfile=""; ext=".txt"; waiting=2; dig=6; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="E", if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2); options=remove(options,[#]); ); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="D", dig=parse(tmp2); options=remove(options,[#]); ); ); wfile=Fhead+name+ext; wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); file=Fhead+name; cmdA=cmd; cmdlist=[]; forall(1..floor(length(cmdA)/2),nc, //17.5.18 tmp1=cmdA_(2*nc-1); tmp1=replace(tmp1,LFmark,""); // 16.06.12 if(nc==length(cmdA)/2, tmp=indexof(tmp1,"="); tmp1=substring(tmp1,tmp,length(tmp1)); if(substring(tmp1,0,1)=="[", tmp=substring(tmp1,0,length(tmp1)-1); , tmp="["+Dq+"/start/"+Dq+","+tmp1; // 16.05.18 ); tmp=replace(tmp,"::",","+Dq+"//"+Dq+","); tmp1=tmp+","+Dq+"////"+Dq+"]"; ); tmp2=cmdA_(2*nc); // list of argments tmp3=""; tmp4=""; forall(tmp2,arg, if(isstring(arg), tmp3=tmp3+replace(arg,"'",Dq)+","; // tmp3=tmp3+arg; , if(!islist(arg), tmp3=tmp3+textformat(arg,dig)+","; , tmp3=tmp3+"["; tmp4="]"; forall(arg, if(isstring(#), // tmp3=tmp3+Dq+#+Dq+","; tmp=replace(#,"'",Dq); // tmp=#;// 2016.03.03 tmp3=tmp3+tmp+","; , if(!islist(#), tmp3=tmp3+textformat(#,dig)+","; , tmp=textformat(#,dig); tmp=replace(tmp,"],[","];["); tmp3=tmp3+tmp+","; ); ); ); tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+","; ); ); ); if(length(tmp3)>0, tmp3=substring(tmp3,0,length(tmp3)-1); tmp1=tmp1+"("+tmp3+")"; ); cmdlist=append(cmdlist,tmp1); ); cmdlist=append(cmdlist,"quit"); if(wflg==0, tmp1=load(file+".rr"); if((length(tmp1)==0) % (indexof(tmp1,"/*####*/")==0), //15.11.26 wflg=1; , tmp1=tokenize(tmp1,"/*####*/"); tmp1=tokenize(tmp1_2,"/*##*/"); tmp1=tmp1_(1..(length(tmp1)-1)); tmp=select(tmp1,indexof(#,"output")>0); tmp1=remove(tmp1,tmp); tmp1=apply(tmp1,substring(#,0,length(#)-1)); if(length(tmp1)!=length(cmdlist), // 15.12.06 wflg=1; , tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#); if(length(tmp)>0, wflg=1); ); ); ); if(wflg==0,wflg=-1); // 15.10.16 if(wflg==1, if(length(wfile)>0, // 15.10.05 SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); ); WritetoA(file+".rr",cmdlist); kcA(file,concat(options,["m"])); ); flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp=load(wfile); if(length(tmp)>=4, tmp2=substring(tmp,length(tmp)-5,length(tmp)); if(tmp2=="////]", tmp=substring(tmp,1,length(tmp)-6); num="1234567890+-."; tmp1=tokenize(","+tmp,",//"); tmp3=apply(tmp1,substring(#,1,length(#))); tmp1="["; forall(tmp3,st, tmp=select(1..length(st),indexof(num,substring(st,#-1,#))==0); if((length(tmp)==0) & (length(st)<4), // 16.05.10 16=>4 tmp1=tmp1+st+","; , tmp1=tmp1+Dq+st+Dq+","; ); ); tmp=Indexof(tmp1,"/start/,"); // 16.05.18from tmp1="["+Dq+substring(tmp1,tmp+7,length(tmp1)-1)+"]"; // 16.05.18until // tmp1=substring(tmp1,0,length(tmp1)-1)+"];"; //190415 parse(name+"="+tmp1); tmp=parse(name); if(length(tmp)==1, tmp1=substring(tmp1,1,length(tmp1)-1); parse(name+"="+tmp1+";"); //190415 ); flg=1; tmp2=#*WaitUnit/1000; ); , if(wflg==-1, flg=-1; , wait(WaitUnit); ); ); ); ); if(flg<=0, ErrFlag=1; if(flg==-1, println(wfile+" does not exist"); , tmp="("+text(waiting)+" s )"; println(wfile+" not generated "+tmp); ); , println(" CalcbyA succeeded "+name+" ("+text(tmp2)+" sec)"); ); ); ////%CalcbyA end//// AsfunO(name,fun,argL):=AsirfunO(name,fun,argL); // 16.02.03 AsfunO(name,fun,argL,options):=AsirfunO(name,fun,argL,options); Asfun(name,fun,argL):=Asirfun(name,fun,argL); Asfun(name,fun,argL,optionorg):=Asirfun(name,fun,argL,optionorg); AsirfunO(name,fun,argL):=AsirfunO(name,fun,argL,[]); AsirfunO(name,fun,argLorg,options):=( //help:AsirfunO("an1","fint",["1/(x^2+1)",32,"['-','+']"]); regional(argL,tmp,tmp1,tmp2,eqL);// 16.05.26from tmp=divoptions(options); eqL=tmp_5; argL=argLorg; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="P", // 16.05.26from tmp=Toupper(substring(tmp2,0,1)); if((tmp=="T") % (tmp=="Y"), tmp1=argL_(length(argL)); tmp=indexof(tmp1,"|"); if(tmp==0, argL_(length(argL))=tmp1+"|dumb=-1,dviout=-2"; ); ); ); ); // 16.05.26until Asirfun(name,"os_md."+fun,argL,options); ); Asirfun(name,fun,argL):=Asirfun(name,fun,argL,[]); Asirfun(name,fun,argL,optionorg):=( //help:Asirfun("al1","2*(3+5^4)",[],[""]); regional(nm,options,eqL,precise,disp,process, cmdL,tmp,tmp1,tmp2,tmp3,tmp4,out,out2); nm="as"+name; options=optionorg; tmp=divoptions(options); precise=6; disp=1; process=0; eqL=tmp_5; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); //181111 tmp2=substring(#,tmp,length(#)); if(tmp1=="P", precise=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="D", tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); if(tmp1=="PRO", // 16.05.26from tmp=Toupper(substring(tmp2,0,1)); if((tmp=="T") % (tmp=="Y"), process=1; ); options=remove(options,[#]); ); // 16.05.26upt ); tmp=replace(Dirlib,"\","/"); cmdL=[ "load",[Dq+tmp+"/oshima/os_muldif.rr"+Dq], // 16.03.11 "ctrl",[Dq+"real_digit"+Dq,precise], "A="+fun,argL, // 16.05.26from "A",[] ]; CalcbyA(nm,cmdL,options); out=parse(nm); //16.05.26from if(process==1, tmp1=Bracket(out,"[]"); tmp2=select(tmp1,abs(#_2)==2); tmp2=apply(tmp2,#_1); out=[]; forall(1..length(tmp2)/2, tmp3=tmp2_(2*#-1); tmp4=tmp2_(2*#); tmp=substring(as1,tmp3+1,tmp4-2); tmp=tokenize(tmp,"],["); out=append(out,tmp); ); out2=[]; forall(out,tmp2, tmp4=""; forall(tmp2,tmp3, tmp1=tokenize(tmp3,","); if(tmp1_1==0, tmp4=tmp4+tmp1_2+"="+tmp1_3+"+"; , if(tmp1_1==1, tmp4=tmp4+tmp1_2+"+"; , tmp="'integrate("; forall(2..length(tmp1), tmp=tmp+tmp1_#+"+"; ); tmp=substring(tmp,0,length(tmp)-1); tmp=tmp+","+tmp1_1+")"; tmp4=tmp4+tmp+"+"; ); ); ); tmp4=substring(tmp4,0,length(tmp4)-1); out2=append(out2,tmp4); ); out=out2; tmp=apply(out,Dq+#+Dq); parse(nm+"="+tmp+";"); //190415 ); if(ErrFlag==0, if(disp==1, // 15.11.24 println(nm+" is : "); println(parse(nm)); ); ); out; //16.05.26until ); WritetoM(fname,cmdL,allflg):=( // help:WritetoM("outdata",cmdL); regional(tmp,tmp1,tmp2,filename,wfilename,outflg); if(indexof(fname,".")==0, filename=fname+".max"; , filename=fname; ); wfilename=replace(filename,".max",".txt"); SCEOUTPUT = openfile(filename); outflg=0; forall(1..(length(cmdL)), tmp1=cmdL_#; if(allflg==1, // 2016.02.23 from if(#==1, tmp="writefile("+Dq+Dirwork+"/"+wfilename+Dq+")$/*##*/"; tmp=replace(tmp,"\","/"); println(SCEOUTPUT,tmp); outflg=1; println(SCEOUTPUT,tmp1+"$/*##*/"); , println(SCEOUTPUT,tmp1+"$/*##*/"); ); , if((indexof(tmp1,"disp(")>0) & (outflg==0), tmp="writefile("+Dq+Dirwork+"/"+wfilename+Dq+")$/*##*/"; tmp=replace(tmp,"\","/"); println(SCEOUTPUT,tmp); outflg=1; println(SCEOUTPUT,tmp1+"$/*##*/"); , println(SCEOUTPUT,tmp1+"$/*##*/"); ); ); ); closefile(SCEOUTPUT); ); ////%kcM start//// kcM(fname):=kcM(fname,[]); kcM(fname,optionorg):=( //help:kcM("boxdata"); //help:kcM(options=["r/m"]); regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg); if(indexof(fname,".")==0, filename=fname+".max"; , filename=fname; ); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); ); flg=0; forall(strL, if(Toupper(substring(#,0,1))=="R", flg=0; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="M", flg=1; ); ); if(flg==0, tmp2=replace(filename,".max",".txt"); tmp1=load(tmp2); if(length(tmp1)==0, flg=1; ); ); if(flg==1, tmp1=""; if(iswindows(), tmp2=Batparent; , tmp2=Shellparent; ); flg=0; forall(reverse(1..length(tmp2)), if(flg==0, tmp=substring(tmp2,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(tmp2,0,#-1); tmp2=substring(tmp2,#,length(tmp2)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); if(iswindows(), SCEOUTPUT=openfile(replace(filename,".max",".txt")); println(SCEOUTPUT,""); closefile(SCEOUTPUT); SCEOUTPUT = openfile("kc.bat"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); // tmp="del "+replace(filename,".max",".txt"); // println(SCEOUTPUT,tmp); tmp=Indexall(PathM,"."); tmp=substring(PathM,tmp_1,tmp_2-1); tmp=parse(tmp); if(tmp<39, tmp="call "+Dq+Dq+PathM+Dq+Dq+" -b "+Dq+filename+Dq; , tmp="call "+Dq+PathM+Dq+" -b "+Dq+filename+Dq; ); // tmp="cmd/c "+Dq+PathM+" -b "+filename+Dq; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit"); closefile(SCEOUTPUT); tmp=replace(filename,".max",".txt"); println(kc(Dirwork+Batparent,Mackc+Dirlib,tmp));// 16.05.29,06.05 , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp="rm "+replace(filename,".max",".txt"); println(SCEOUTPUT,tmp); tmp=Dq+PathM+Dq+" -b "+Dq+filename+Dq; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); tmp=replace(filename,".max",".txt"); println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp));// 16.05.29,06.05 ); // wait(WaitUnit); setdirectory(Dirwork); ); ); ////%kcM end//// ////%CalcbyM start//// CalcbyM(name,cmd):=CalcbyM(name,cmd,[]); CalcbyM(name,cmd,optionorg):=( //help:CalcbyM("a",cmdL); //help:CalcbyM(options1= ["m/r","Wait=5","Errchk=y(/n)","Dig=6","Pow=no","All=y"]); //help:CalcbyM(options2= ["line=1000"]); regional(options,tmp,tmp0,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL,allflg,indL,line, dig,flg,wflg,file,nc,arg,add,powerd,cmdM,cmdlist,wfile,errchk,waiting,num,st); options=optionorg; tmp=divoptions(options); eqL=tmp_5; realL=tmp_6; strL=tmp_7; wfile=""; errchk="Y"; //190411 waiting=5; dig=6; allflg=1; powerd="false"; line=1000; // 16.06.13 forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); tmp2=tmp_2; if(tmp1=="E", errchk=Toupper(substring(tmp_1,0,1)); //190411 options=remove(options,[#]); ); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="D", dig=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="L", // 16.06.13 line=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="P", tmp=Toupper(substring(tmp2,0,1)); if((tmp=="y") % (tmp=="F"),powerd="true"); options=remove(options,[#]); ); if(tmp1=="A", // 2016.02.23 tmp=Toupper(substring(tmp2,0,1)); if((tmp=="N") % (tmp=="F"),allflg=0); options=remove(options,[#]); ); ); wfile=Fhead+name+".txt"; //190411 wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); file=Fhead+name; cmdM=cmd; cmdlist=[ "powerdisp:"+powerd,"display2d:false","linel:"+text(line) //15.11.25,16.06.13 ]; forall(1..floor(length(cmdM)/2),nc, //17.5.18 tmp1=replace(cmdM_(2*nc-1),"`","'");//2016.02.23 tmp1=replace(tmp1,LFmark,""); // 16.06.12 if(nc==length(cmdM)/2, tmp=indexof(tmp1,"="); tmp1=substring(tmp1,tmp,length(tmp1)); if(substring(tmp1,0,1)=="[", tmp=substring(tmp1,0,length(tmp1)-1); , tmp="["+tmp1; ); tmp2=""; forall(1..length(tmp1), if(substring(tmp1,#-1,#+1)=="::", if(substring(tmp2,0,1)==":", tmp2=substring(tmp2,1,length(tmp2))); cmdlist=append(cmdlist,"disp("+tmp2+")"); tmp2=""; , tmp2=tmp2+substring(tmp1,#-1,#); ); ); if(length(tmp2)>0, if(substring(tmp2,0,1)==":", tmp2=substring(tmp2,1,length(tmp2))); cmdlist=append(cmdlist,"disp("+tmp2+")"); ); , tmp2=cmdM_(2*nc); // list of argments tmp3=""; tmp4=""; add=""; forall(tmp2,arg, if(isstring(arg), if(substring(arg,0,1)!=",", tmp=arg; // 16.03.03 tmp=replace(tmp,"`","'");// 2016.02.23 tmp3=tmp3+tmp+","; , add=add+arg; ); , if(!islist(arg), tmp3=tmp3+textformat(arg,dig)+","; , tmp3=tmp3+"["; tmp4="]"; forall(arg, if(isstring(#), tmp=replace(#,"'",Dq); tmp3=tmp3+tmp+","; , if(!islist(#), tmp3=tmp3+textformat(#,dig)+","; , tmp=textformat(#,dig); tmp=replace(tmp,"],[","];["); tmp3=tmp3+tmp+","; ); ); ); tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+","; ); ); ); if(length(tmp3)>0, tmp3=substring(tmp3,0,length(tmp3)-1); tmp1=tmp1+"("+tmp3+")"+add; ); cmdlist=append(cmdlist,tmp1); ); ); cmdlist=append(cmdlist,"closefile()"); cmdlist=append(cmdlist,"quit()"); if(wflg==0, tmp1=load(file+".max"); if(length(tmp1)==0, wflg=1; , if(indexof(tmp1,"/*##*/")==0, // 15.11.26 wflg=1; , tmp1=tokenize(tmp1,"/*##*/"); tmp1=tmp1_(1..(length(tmp1)-1)); tmp=select(tmp1,indexof(#,"writefile")>0); tmp1=remove(tmp1,tmp); tmp1=apply(tmp1,substring(#,0,length(#)-1)); if(length(tmp1)!=length(cmdlist), // 15.12.07 wflg=1; , tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#); if(length(tmp)>0, wflg=1); ); ); ); ); if(wflg==0,wflg=-1); // 15.10.16 if(wflg==1, if(length(wfile)>0, // 15.10.05 SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); ); WritetoM(file+".max",cmdlist,allflg); // 2016.02.23 kcM(file,concat(options,["m"])); ); flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp1=load(wfile); if(wflg==1,wait(WaitUnit)); // 2016.02.23 if(length(tmp1)>0, tmp=indexof(tmp1,"error")+indexof(tmp1,"syntax"); //2016.02.23 if((tmp>0)&(errchk=="Y"), //190411 println("Some error(s) occurred"); //2016.02.24 from tmp2=tokenize(tmp1,"(%"); forall(4..length(tmp2),println(tmp2_#)); //2016.02.24 until flg=2; //2016.02.23 , if(indexof(tmp1,"closefile()")>0, // 15.11.24 tmp=tokenize(tmp1,"disp("); tmp1=tmp_(2..length(tmp)); tmp4=[]; forall(tmp1,tmp2, tmp=indexof(tmp2,")"); tmp3=substring(tmp2,tmp,length(tmp2)); indL=Indexall(tmp3,"(%i"); // 16.04.26from tmp0=0; forall(indL, if(tmp0==0, tmp=substring(tmp3,#+2,#+3); if(indexof("0123456789",tmp)>0,//16.04.25? tmp3=removespace(substring(tmp3,0,#-1)); tmp4=append(tmp4,tmp3); tmp0=1; ); );// 16.04.26until ); ); num="1234567890+-."; tmp1="["; forall(tmp4,st, tmp=select(1..length(st),indexof(num,substring(st,#-1,#))==0); if((length(tmp)==0) & (length(st)<4), // 16.05.10 16=>4 tmp1=tmp1+st+","; , tmp1=tmp1+Dq+st+Dq+","; ); ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; tmp1=replace(tmp1,".d+0",""); // 15.11.23 parse(name+"="+tmp1+";"); //190415 tmp=parse(name); if(length(tmp)==1, tmp1=substring(tmp1,1,length(tmp1)-1); parse(name+"="+tmp1+";"); //190415 ); flg=1; tmp2=#*WaitUnit/1000; ); ); , if(wflg==-1, flg=-1; , wait(WaitUnit); ); ); ); ); if(flg<=0, ErrFlag=1; if(flg==-1, println(wfile+" does not exist"); , tmp="("+text(waiting)+" s )"; tmp1=load(wfile); if(length(tmp1)>0, println(wfile+" incomplete"+tmp); // 2016.02.24 , println(wfile+" not generated "+tmp); ); ); , if(flg==1, // 2016.02.23 println(" CalcbyM succeeded "+name+" ("+text(tmp2)+" sec)"); ); ); ); ////%CalcbyM end//// ////%Mxfun start//// Mxfun(name,fun,argL):=Mxfun(name,fun,argL,[]); Mxfun(name,fun,argL,optionorg):=( //help:Mxfun("ca1","diff",["sin(x)^3","x"],[""]); //help:Mxfun(options=["Pre=6","Disp=y","Load= :: ","Set=::","Add="]); regional(nm,options,eqL,precise,disp,pack,set,add,cmdL,tmp,tmp1,tmp2); nm="mx"+name; options=optionorg; tmp=divoptions(options); precise=6; disp=1; pack=[]; set=[]; add=""; eqL=tmp_5; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); //190424 tmp2=tmp_2; if(tmp1=="P", precise=parse(tmp2); options=remove(options,[#]); ); if(tmp1=="D" , //190327(to 1 char) tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); if((tmp1=="P") % (tmp1=="L"), //190327(to 1 char) pack=tokenize(tmp2,"::"); options=remove(options,[#]); ); if(tmp1=="S", //190327(to 1 char) set=tokenize(tmp2,"::"); options=remove(options,[#]); ); if(tmp1=="A", //190327(to 1 char) add=","+tmp2; options=remove(options,[#]); ); ); cmdL=[]; forall(pack, cmdL=concat(cmdL,["load",[#]]); ); forall(set, cmdL=concat(cmdL,[#,[]]); ); if(length(add)>0, tmp=append(argL,add); , tmp=argL; ); cmdL=concat(cmdL,[ "ans"+":"+fun,tmp, "ans",[] ]); CalcbyM(nm,cmdL,options); if(ErrFlag==0, if(disp==1, // 15.11.24 println(nm+" is : "); println(parse(nm)); ); ); parse(nm); ); ////%Mxfun end//// ////%Mxtex start//// Mxtex(nm,ex):=Mxtex(nm,ex,[]); Mxtex(nm,ex,optionorg):=( //help:Mxtex("1","sin(x)/x"); //help:Mxtex(options=["Disp=y"]); regional(name,cmdL,eqL,options,tx,disp,out,set, tmp,tmp1,tmp2); // 16.01.25 name="tx"+nm; options=optionorg; tmp=divoptions(options); eqL=tmp_5; disp=1; set=[]; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="D" , tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); if(tmp1=="SET", // 16.03.01 set=tokenize(tmp2,"::"); options=remove(options,[#]); ); if(tmp1=="ORD", // 16.03.01 tmp="ordergreat("+tmp2+")"; set=append(set,tmp); options=remove(options,[#]); ); ); cmdL=[ "load",[Dq+"mactex-utilities.lisp"+Dq]]; // 16.03.03 forall(set, // 16.03.01 cmdL=concat(cmdL,[#,[]]); ); cmdL=concat(cmdL,[ name+":disp(tex("+ex+"))",[], // 16.01.18 name,[] // 16.01.18 ]); CalcbyM(name,cmdL,options); // 16.02.19 tx=parse(name); if(islist(tx), // 16.01.10 out=tx_1; , out=tx; ); tmp=indexof(out,"$$")+1; out=substring(out,tmp,length(out)); tmp=indexof(out,"$$")-1; out=substring(out,0,tmp); if(disp==1, // 16.01.10 println(name+" is:"); println(out); ); tmp=name+"="+Dq+out+Dq+";"; //16.01.10//190415 parse(tmp); out; ); ////%Mxtex end//// ////%MxtexL start//// MxtexL(nm,exlist):=MxtexL(nm,exlist,[]); // 16.05.27 MxtexL(nm,exlist,options):=( regional(out,tmp,tmp1); out=[]; forall(1..length(exlist), tmp=Mxtex(nm+"n"+text(#),exlist_#,["Disp=n"]); out=append(out,Dq+tmp+Dq); ); tmp="tx"+nm+"="+out+";"; //190415 parse(tmp); println("tx"+nm+"is:"); apply(out,println(#)); out; ); Mxbatch(file):=( //help:Mxbatch(["matoperation.max"]); regional(figL,out,path,tmp,tmp1,tmp2); if(!islist(file),figL=[file],figL=file); path=replace(Dirlib+"/maximaL/","\","/"); out=[]; forall(figL, if(indexof(#,".")==0,tmp1=#+".max",tmp1=#); tmp1=Dq+path+tmp1+Dq; tmp2=["batch",[tmp1]]; out=concat(out,tmp2); ); out; ); ////%MxtexL end//// ////%Mxload start//// Mxload(file):=( //17.06.16 //help:Mxload(["rkfun.lispp"]); regional(figL,out,path,tmp,tmp1,tmp2); if(!islist(file),figL=[file],figL=file); path=replace(Dirlib+"/maximaL/","\","/"); out=[]; forall(figL, if(indexof(#,".")==0,tmp1=#+".lisp",tmp1=#); tmp1=Dq+path+tmp1+Dq; tmp2=["load",[tmp1]]; out=concat(out,tmp2); ); out; ); ////%Mxload end//// ////%Maxima2Cindydata start//// Maxima2Cindydata(str):=( //17.10.24 regional(out,numstr,eL,nn,ne,flg,tmp); numstr="-0123456789"; eL=Indexall(str,"e"); if(length(eL)==0, out=str; , out=substring(str,0,eL_1-1); forall(1..(length(eL)),nn, ne=eL_nn; flg=0; forall(1..5, if(flg==0, tmp=substring(str,ne+#-1,ne+#); if(indexof(numstr,tmp)==0, flg=#; tmp=substring(str,ne,ne+flg-1); out=out+"*10^("+tmp+")"; ); ); ); if(nn0, tmp2=#; ); ); unit=substring(unitlen,tmp2,length(unitlen)); unit=removespace(unit); val=parse(substring(unitlen,0,tmp2)); ); sc=1; if(unit=="cm",sc=1); if(unit=="mm",sc=0.1); if(unit=="in",sc=2.54); sc=sc*val; if(outunit=="IN",sc=sc/2.54); if(outunit=="MM",sc=sc*10); fname=fnameorg; if(indexof(fname,".")==0,fname=fname+".obj"); fmd=replace(fname,".obj",".txt"); fout=foutorg; if(indexof(fout,".")==0,fout=fout+".obj"); tmp1=Textformat(origin,4); tmp1=RSform(tmp1); cmdL=[ "Origin="+tmp1,[], "Sc="+format(sc,6),[], "Stv=readLines",[Dq+fname+Dq], "cat('',file="+Dq+fout+Dq+")",[], "for(nn in Looprange(1,length(Stv))){",[], " if(substring(Stv[nn],1,2)=='v '){",[], " Tmp1=paste('c(',substring(Stv[nn],3),')',sep='')",[], " Tmp1=gsub(' ',',',Tmp1,fixed=TRUE)",[], " Tmp1=gsub(',,',',',Tmp1,fixed=TRUE)",[], " Tmp1=gsub('(,','(',Tmp1,fixed=TRUE)",[], " Tmp=eval(parse(text=Tmp1))",[], " Tmp=Origin+Sc*(Tmp-Origin)",[], " Stv[nn]=paste('v ',sprintf('%8.5f %8.5f %8.5f',Tmp[1],Tmp[2],Tmp[3]),sep='')",[], " }",[], " cat(Stv[nn],'\n',sep='',file="+Dq+fout+Dq+",append=TRUE)",[], "}",[] ]; options=concat(["Wait=3","Cat=n","File="+fmd],options); // 16.06.26 CalcbyR("cs",cmdL,options); println("Scale of "+fname+" changed"); ); ////%Changeobjscale end//// ////%Setobj start//// //Objname(str):=Objname(str,["m","v"]); //180906from //Objname(str,options):=Setobj(str,options); Setobj():=Setobj(Fhead,["m","v"]); //180901 Setobj(Arg1):=( if(isstring(Arg1), Setobj(Arg1,["m","v"]); //17.01.12 , Setobj(Fhead,Arg1); //180902 ); ); Setobj(str,optionsorg):=( //180906to //help:Setobj(); //help:Setobj(["v"]); //help:Setobj(options=["m","v","preview","Zax=y(/n)"]); regional(options,tmp,strL); options=select(optionsorg,length(#)>0); //17.12.23from tmp=Divoptions(options); //181203from strL=tmp_7; forall(strL, if(Toupper(substring(#,0,1))=="P", PathV3="preview"; options=remove(options,[#]); ); ); //181203to if(length(str)>0, OCNAME=str; ); if(length(options)>0, OCOPTION=options; , OCOPTION=["m","v"]; ); //17.12.23until println("generate OBJCMD. name="+OCNAME+", option="+OCOPTION); ); ////%Setobj end//// ////%Mkviewobj start//// Mkviewobj():=Mkviewobj(OCNAME,OBJCMD,OCOPTION); //181209 Mkviewobj(fname,cmdL):=Mkviewobj(Dirwork,fname,cmdL,[]); Mkviewobj(Arg1,Arg2,Arg3):=( if(!isstring(OCNAME), //17.04.13from drawtext(mouse().xy,"Mkobjcmd not defined", size->24,color->[1,0,0]); , //17.04.13until if(islist(Arg2), Mkviewobj(Dirwork,Arg1,Arg2,Arg3); , Mkviewobj(Arg1,Arg2,Arg3,[]); ); ); ); Mkviewobj(pathorg,fnameorg,cmdLorg,optionorg):=( //help:Mkviewobj(); regional(path,cmdL,eqL,strL,flg,fname,options,make,view,cmdlist, vtx,face,unit,tmp,tmp1,tmp2,store,dt,nn,zax); store=Fillblack(); //181128 println([3647,store]); path=replace(pathorg,"\","/"); if(substring(path,length(path)-1,length(path))!="/",path=path+"/"); fname=fnameorg; if(indexof(fname,".")==0,fname=fname+".obj"); cmdL=cmdLorg; options=optionorg; tmp=divoptions(options); eqL=tmp_5; strL=tmp_7; make=-1; view=0; unit=""; zax="Y"; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="U", // 16.06.30from unit=tmp2; options=remove(options,[#]); ); // 16.06.30to if(tmp1=="Z", // 16.06.30from zax=Toupper(substring(tmp_2,0,1)); options=remove(options,[#]); ); // 16.06.30to ); forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", make=1; // options=remove(options,[#]); //181203 ); if(tmp=="R", make=0; // options=remove(options,[#]); //181203 ); if(tmp=="V", view=1; options=remove(options,[#]); ); ); if(islist(cmdL), if(length(cmdL)==0, make=0; println("Command sequence not defnamed"); ); , make=0; println("Command sequence not defined"); ); if(make==-1, setdirectory(pathorg); tmp1=load(fname); if(length(tmp1)==0,make=1,make=0); setdirectory(Dirwork); ); if(make==1, if(isstring(cmdL_1), cmdlist=MkprecommandR(); cmdlist=concat(cmdlist,["Openobj",[Dq+path+fname+Dq]]); cmdlist=concat(cmdlist,cmdL); tmp=["Closeobj()",[]];//181130 cmdlist=concat(cmdlist,tmp); tmp1=apply(options,Toupper(substring(#,0,1))); // 16.04.23from tmp1=select(tmp1,#=="W"); if(length(tmp1)==0, tmp=append(tmp,"Wait=10"); );// 16.04.23to CalcbyR("",cmdlist,tmp); //180902 wait(WaitUnit*100); // 16.03.18 , vtx=cmdL_1; face=cmdL_2; setdirectory(pathorg); SCEOUTPUT = openfile(fname); forall(vtx,tmp1, tmp2=tmp1; if(ispoint(tmp1), tmp2=parse(text(tmp1)+"3d"); ); tmp2=apply(tmp2,format(#,5)); tmp="v "+tmp2_1+" "+tmp2_2+" "+tmp2_3; println(SCEOUTPUT,tmp); ); forall(face,tmp1, tmp="f"; forall(tmp1, tmp=tmp+" "+text(#); ); println(SCEOUTPUT,tmp); ); closefile(SCEOUTPUT); setdirectory(Dirwork); ); ); if(length(unit)>0, // 16.06.30from Changeobjscale(fname,["Unit="+unit]);//16.10.04 ); // 16.06.30until if(view==1, if((PathV3=="preview")%(zax=="Y"), //181209 dt=Readlines(fname); forall(1..(length(dt)),nn, tmp1=dt_nn; if(substring(tmp1,0,2)=="v ", tmp=replace(tmp1," "," "); tmp=tokenize(tmp," "); tmp=Sprintf(tmp_(2..4),4); tmp2="v "+tmp_2+" "+tmp_3+" "+tmp_1; dt_nn=tmp2; ); ); fname=replace(fname,".","prv."); SCEOUTPUT = openfile(fname); forall(dt, println(SCEOUTPUT,#); ); closefile(SCEOUTPUT); ); kcV3(path,fname); ); Fillrestore(store); //181128 ); ////%Mkviewobj end//// ////%Mkobjcmd start//// Mkobjcmd(nm,fd):=Mkobjcmd(nm,fd,[40,40,"+"]); Mkobjcmd(nm,fd,options):=( //help:Mkobjcmd("1",fd,[40,40,"+"]); regional(ffd,cmd,out,div1,div2,side, reL,stL,tmp,tmp1,tmp2,tmp3,tmp4); div1=40; div2=40; side="+"; tmp=Divoptions(options); reL=tmp_6; stL=select(tmp_7,length(#)>0); forall(1..length(reL), if(#==1, div1=reL_1; div2=div1; , div2=reL_2; ); ); forall(stL, side=#; ); side="'"+side+"'"; ffd=Fullformfunc(fd); tmp=indexof(ffd_5,"="); tmp1=RSform(substring(ffd_5,0,tmp-1)); tmp2=RSform(substring(ffd_5,tmp,length(ffd_5))); tmp=indexof(ffd_6,"="); tmp3=RSform(substring(ffd_6,0,tmp-1)); tmp4=RSform(substring(ffd_6,tmp,length(ffd_6))); out=["Fun"+nm+"<- function("+tmp1+","+tmp3+"){",[]]; tmp=" Out=c("+ffd_2+","+ffd_3+","+ffd_4+")"; out=concat(out,[tmp,[]]); out=concat(out,["}",[]]); tmp1=["Objsurf", ["Fun"+nm,tmp2,tmp4,div1,div2,side]]; out=concat(out,tmp1); tmp2=[]; // 16.06.10from forall(out,tmp1, if(islist(tmp1), tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5))); , if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5)); ); tmp2=append(tmp2,tmp); ); parse("oc"+nm+"="+tmp2+";"); //190415 println("cmd seq oc"+nm+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjcmd end//// ////%Mkobjnrm start//// Mkobjnrm(nm,fd):=Mkobjnrm(nm,fd,[]); Mkobjnrm(nm,fd,optionorg):=( //help:Mkobjnrm("1",fd1,["Disp=y"]); //help:Mkobjnrm("1","[x,y,x*y/(x^2+y^2)],x,y"); regional(name,options,stL,eqL,disp,ffd,fst,xst,yst,cmdL, precmd,out,tmp,tmp1,tmp2,tmp3); name="nrm"+nm; options=select(optionorg,length(#)>0); tmp=Divoptions(options); eqL=tmp_5; stL=tmp_7; precmd=[]; disp="N"; forall(eqL, // 16.05.02 tmp1=Toupper(substring(#,0,1)); tmp=indexof(#,"="); tmp2=Toupper(substring(#,tmp,tmp+1)); if(tmp1=="D", if(tmp2=="Y" % tmp2=="T", disp="Y"; options=remove(options,[#]); ); ); ); forall(stL, if(indexof(#,"+")+indexof(#,"-")==0, precmd=concat(precmd,[#,[]]); options=remove(options,[#]); ); ); if(isstring(fd), tmp=Indexall(fd,","); fst=[ substring(fd,1,tmp_1-1), substring(fd,tmp_1,tmp_2-1), substring(fd,tmp_2,tmp_3-2) ]; xst=substring(fd,tmp_3,tmp_4-1); yst=substring(fd,tmp_4,length(fd)); , ffd=Fullformfunc(fd); fst=text(ffd_(2..4)); tmp=indexof(ffd_5,"="); xst=substring(ffd_5,0,tmp-1); tmp=indexof(ffd_6,"="); yst=substring(ffd_6,0,tmp-1); ); cmdL=precmd; cmdL=concat(cmdL,[ "fx:diff",[fst,xst], "fy:diff",[fst,yst], "nx:fx[2]*fy[3]-fx[3]*fy[2]",[], "ny:fx[3]*fy[1]-fx[1]*fy[3]",[], "nz:fx[1]*fy[2]-fx[2]*fy[1]",[], "nn:factor(nx^2+ny^2+nz^2)",[], // 16.04.21 "nn:sqrt(nn)",[], // 16.04.20 "nx:nx/nn",[], "ny:ny/nn",[], "nz:nz/nn",[], "n:[nx,ny,nz]",[], // 16.04.21from "n:ratsimp(n)",[], "n:trigsimp(n)",[], "n:factor(n)",[], // 16.04.21until "n",[] ]); CalcbyM(name,cmdL,options); // 16.05.12 tmp1=parse(name); // 16.05.12 out=[tmp1]; // 15.04.21b from tmp2=[]; forall(1..3, tmp=indexof(tmp1,","); if(tmp==0, tmp=indexof(tmp1,"]"); ); tmp3=substring(tmp1,0,tmp-1); tmp1=substring(tmp1,tmp,length(tmp1)); tmp=indexof(tmp3,"/"); if(tmp>0, tmp3=substring(tmp3,tmp,length(tmp3)); tmp2=append(tmp2,tmp3); , tmp2=append(tmp2,"1"); ); ); // out=append(out,tmp2); out=out_1; // 16.05.02from println("calculate "+name+":"); // 16.05.12 if(disp=="Y", // 16.05.02 println(out); // println(out_2); ); // 16.05.02until out; ); ////%Mkobjnrm end//// ////%Mkobjthickcmd start//// Mkobjthickcmd(nm,fd):=Mkobjthickcmd(nm,fd,"",[40,40,"+"]); Mkobjthickcmd(nm,fd,Arg):=( if(islist(Arg), Mkobjthickcmd(nm,fd,"",Arg); , Mkobjthickcmd(nm,fd,Arg,[]); ); ); Mkobjthickcmd(nm,fd,fnrm,optionorg):=( //help:Mkobjthickcmd("1",fd,["assume(R>0)"]); //help:Mkobjthickcmd("1",fd,fnorm); //help:Mkobjthickcmd(options1=[40,40,0.05,-0.05,"+n+s+e+w+"]); //help:Mkobjthickcmd(options2=["ratsimp","trigsimp"]); regional(options,ffd,cmd,out,div1,div2,thick1,thick2,side, reL,stL,addcmd,fst,xst,yst,tmp,tmp1,tmp2,tmp3,tmp4); div1=40; div2=40; thick1=0.05; thick2=-0.05; side="+n+s+e+w+"; options=select(optionorg,length(#)>0); tmp=Divoptions(options); reL=tmp_6; stL=tmp_7; tmp1=1; // 16.04.21from tmp2=1; forall(1..length(reL), tmp=reL_#; if(tmp>1, if(tmp1==1, div1=tmp; div2=tmp; , div2=tmp; ); tmp1=tmp1+1; , if(tmp2==1, thick1=tmp; thick2=-tmp; , thick2=tmp; ); tmp2=tmp2+1; ); ); // 16.04.21until options=remove(options,reL); forall(stL, if(length(#)>0, tmp=indexof(#,"+")+indexof(#,"-"); if(tmp>0, side=#; options=remove(options,[#]); ); ); ); side="'"+side+"'"; ffd=Fullformfunc(fd); tmp=indexof(ffd_5,"="); tmp1=substring(ffd_5,0,tmp-1); tmp2=RSform(substring(ffd_5,tmp,length(ffd_5))); tmp=indexof(ffd_6,"="); tmp3=substring(ffd_6,0,tmp-1); tmp4=RSform(substring(ffd_6,tmp,length(ffd_6))); fst=text(ffd_(2..4)); tmp=indexof(ffd_5,"="); xst=substring(ffd_5,0,tmp-1); tmp=indexof(ffd_6,"="); yst=substring(ffd_6,0,tmp-1); out=["Fun"+nm+"<- function("+tmp1+","+tmp3+"){",[]]; tmp=" c("+ffd_2+","+ffd_3+","+ffd_4+")"; out=concat(out,[tmp,[]]); out=concat(out,["}",[]]); tmp=["Fnrm"+nm+"<- function("+xst+","+yst+"){",[]]; out=concat(out,tmp); if(fnrm=="", tmp=Mkobjnrm(nm,fd,options); tmp1=RSform(tmp); tmp="Fnrmden"+nm+"("+xst+","+yst+"):="+tmp_2+";"; //190415 parse(tmp); , tmp1=RSform(fnrm); // if(indexof(tmp1,"Out=")==0, // 16.05.09from // tmp1="Out="+tmp1; // ); // 16.05.09until ); out=concat(out,[tmp1,[]]); out=concat(out,["}",[]]); tmp1=["Objthicksurf", ["Fun"+nm,tmp2,tmp4,div1,div2,"Fnrm"+nm,thick1,thick2,side]]; out=concat(out,tmp1); tmp2=[]; // 16.06.10from forall(out,tmp1, if(islist(tmp1), tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5))); , if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5)); ); tmp2=append(tmp2,tmp); ); parse("oc"+nm+"="+tmp2+";"); //190415 println("cmd seq oc"+nm+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjthickcmd end//// ////%Mkobjpolycmd start//// Mkobjpolycmd(nm,pd):=Mkobjpolycmd(nm,pd,[]); Mkobjpolycmd(nm,pd,optionorg):=( //help:Mkobjpolycmd("1",pd); //help:Mkobjpolycmd(options1=[internal([0,0,0])]); regional(options,cmd,out,thick1,thick2,origin, reL,stL,vtx,face,pt1,pt2,pt3,tmp,tmp1,tmp2); thick1=0; thick2=-0; origin=[0,0,0]; options=select(optionorg,length(#)>0); tmp=Divoptions(options); reL=tmp_6; stL=tmp_7; tmp1=1; forall(1..length(reL), tmp=reL_#; if(islist(tmp), origin=tmp; , if(tmp1==1, thick1=tmp; thick2=-tmp; , thick2=tmp; ); tmp1=tmp1+1; // 16.07.08 ); ); options=remove(options,reL); forall(stL, tmp=indexof(#,"+")+indexof(#,"-"); if(tmp>0, side=#; options=remove(options,[#]); ); ); vtx=pd_1; //16.04.23from if(length(pd)==2,face=pd_2,face=pd_3); if(isstring(vtx),vtx=parse(vtx)); vtx=apply(vtx,if(isstring(#),parse(#),#)); // 16.06.18 if(isstring(face),face=parse(face)); forall(1..length(face), tmp=face_#; pt1=vtx_(tmp_1);// 16.06.18 pt2=vtx_(tmp_2);// 16.06.18 pt3=vtx_(tmp_(length(tmp)));// 16.06.18 tmp1=Crossprod(pt2-pt1,pt3-pt1); tmp2=Dotprod(tmp1,pt1-origin); if(tmp2<0, face_#=reverse(face_#); ); ); tmp1=RSform(textformat(vtx,5),2);//17.12.24from tmp2=RSform(textformat(face,5),2); out=["Objpolyhedron",[tmp1,tmp2]];//17.12.24until tmp2=[]; // 16.06.10from forall(out,tmp1, if(islist(tmp1), tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5))); , if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5)); ); tmp2=append(tmp2,tmp); ); parse("oc"+nm+"="+tmp2+";"); //190415 println("cmd seq oc"+nm+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjpolycmd end//// ////%Mkobjplatecmd start//// Mkobjplatecmd(nm,pd):=Mkobjplatecmd(nm,pd,[]); Mkobjplatecmd(nm,pdorg,optionorg):=( // 16.06.18 //help:Mkobjplatecmd("1",pd); //help:Mkobjplatecmd("1",vtxlist); //help:Mkobjplatecmd(options1=[0.05,-0.05]); regional(pd,options,cmd,out,thick1,thick2,nn,pdn, reL,vtx,face,nv,npttmp,tmp1,tmp2,tmp3,tmp4); pd=pdorg; if(Measuredepth(pd)==1,pd=[pd]); if(Measuredepth(pd)==2,pd=[pd]);//16.10.04from forall(1..length(pd),nn, // 16.06.19from pdn=pd_nn; vtx=pdn_1; if(length(pdn)==1,face=[1..(length(vtx))],face=pdn_2); vtx=apply(vtx,if(isstring(#),parse(#),#)); vtx=apply(vtx,if(ispoint(#),parse(text(#)+"3d"),#)); pd_nn=[vtx,face];//16.10.04until ); // 16.06.19until thick1=0.05; thick2=-0.05; options=select(optionorg,length(#)>0); tmp=Divoptions(options); reL=tmp_6; tmp1=1; forall(1..length(reL), tmp=reL_#; if(tmp1==1, thick1=tmp; thick2=-tmp; , thick2=tmp; ); tmp1=tmp1+1;// 16.07.08 ); options=remove(options,reL); out=[]; forall(1..length(pd),npd, forall(pd_npd_2,face, vtx=apply(face,pd_npd_1_#); npt=length(vtx); tmp1=vtx_1; tmp2=vtx_2; tmp3=vtx_npt; tmp=Crossprod(tmp2-tmp1,tmp3-tmp1); nv=tmp/Dist3d(tmp); tmp1=apply(vtx,#+thick1*nv); tmp2=apply(vtx,#+thick2*nv); vtx=concat(tmp1,tmp2); tmp=apply(1..npt,#+npt); tmp2=[1..npt,reverse(tmp)]; tmp=apply(1..(npt-1),[#,#+npt,#+npt+1,#+1]); tmp2=concat(tmp2,tmp); tmp=[npt,npt+npt,1+npt,1]; tmp2=append(tmp2,tmp); tmp3=RSform(textformat(vtx,5),2);//17.12.24from tmp4=RSform(textformat(tmp2,5),2); out=concat(out,["Objpolyhedron",[tmp3,tmp4]]);//17.12.24until ); ); tmp3="["; // 16.06.10from forall(out,tmp1, tmp2=""; if(isstring(tmp1), tmp2=tmp2+Dq+tmp1+Dq+",["; , tmp2=tmp2+Textformat(tmp1_1,5)+","; tmp2=tmp2+Textformat(tmp1_2,5)+"],"; ); tmp3=tmp3+tmp2; ); tmp3=substring(tmp3,0,length(tmp3)-1)+"]"; parse("oc"+nm+"="+tmp3+";"); //190415 println("cmd seq oc"+nm+" generated"); OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjplatecmd end//// ////%Mkobjcrvcmd start//// Mkobjcrvcmd(nm,pst):=Mkobjcrvcmd(nm,pst,[]); Mkobjcrvcmd(nm,pstorg,options):=( //help:Mkobjcrvcmd("1","sc3d1",[0.02,6,"xy"]); regional(cmd,out,thick,poly,dir,phead,pst, reL,stL,tmp,tmp1,tmp2,tmp3,tmp4,flg); thick=0.02; poly=6; dir="xy"; tmp=Divoptions(options); reL=tmp_6; stL=select(tmp_7,length(#)>0); forall(1..length(reL), if(#==1, thick=reL_1; , poly=reL_2; ); ); forall(stL, dir=#; ); dir="'"+dir+"'"; tmp=indexof(pstorg,"_"); if(tmp==0, phead=pstorg; , phead=substring(pstorg,0,tmp-1); ); pst=pstorg; out=[]; tmp1=select(GLIST,indexof(#,phead+"=")>0); if(length(tmp1)==0, println(phead+" incorrect")); // out=[tmp1_1,[]]; out=[]; tmp1=parse(pst); flg=0; // 16.04.23from if(Measuredepth(tmp1)==2,flg=1); if(Measuredepth(tmp1)==0, if(islist(tmp1),flg=1); ); if(flg==1, // 16.04.23until if(!isstring(tmp1_1), forall(1..length(tmp1), tmp=["Objcurve",[pst+"[["+text(#)+"]]",thick,poly,dir]];//17.12.22 out=concat(out,tmp); ); , forall(1..length(tmp1), // 16.11.14from tmp=["Objcurve",[tmp1_#,thick,poly,dir]]; out=concat(out,tmp); );// 16.11.14until ); , tmp1=Chunderscore(pst); tmp=["Objcurve",[tmp1,thick,poly,dir]]; out=concat(out,tmp); ); tmp2=[]; // 16.06.10from forall(out,tmp1, if(islist(tmp1), tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5))); , if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5)); ); tmp2=append(tmp2,tmp); ); parse("oc"+nm+"="+tmp2+";"); //190415 println("cmd seq oc"+nm+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjcrvcmd end//// ////%Mkobjsymbcmd start//// Mkobjsymbcmd(symb,size,rot,dir,pos):= Mkobjsymbcmd("",symb,size,rot,dir,pos,[]); Mkobjsymbcmd(Ar1,Ar2,Ar3,Ar4,Ar5,Ar6):=( if(isstring(Ar2), Mkobjsymbcmd(Ar1,Ar2,Ar3,Ar4,Ar5,Ar6,[]); , Mkobjsymbcmd("",Ar1,Ar2,Ar3,Ar4,Ar5,Ar6); ); ); Mkobjsymbcmd(path,symborg,size,rot,dir,pos,optionorg):=( //help:Mkobjsymbcmd("x",0.5,0,V3d,A3d); //help:Mkobjsymbcmd("P",0.5,0,V3d,A3d); //help:Mkobjsymbcmd(options=[0.05,4,"'yz'"]); regional(symb,options,opbez,eqL,reL,stL,dtLstr,dtL,dt, alpha,Alpha,out,mx,Mx,my,My,center,tmp,tmp1,tmp2); alpha="abcdefghijklmnopqrstuvwxyz"; Alpha=Toupper(alpha); symb=symborg; options=optionorg; opbez=["nodisp"]; tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; stL=tmp_7; opbez=concat(opbez,eqL); options=remove(options,eqL); tmp1=[0.05,4,"'yz'"]; if(length(reL)==0, options=concat(options,tmp1_(1..2)); ); if(length(reL)==1, // debugged 16.06.18 options=concat(options,[tmp1_2]); ); if(length(stL)==0, options=concat(options,[tmp1_3]); ); out=[]; tmp=parse(symb); if((islist(symb)) % (islist(tmp)), //17.12.24from if(islist(tmp), dtL=[symb]; , dtL=symb; ); //17.12.24until , tmp=substring(symb,0,1); if(tmp>="a" & tmp<="z",tmp1=tmp+"s"); if(tmp>="A" & tmp<="Z", tmp=indexof(Alpha,tmp); tmp=substring(alpha,tmp-1,tmp); tmp1=tmp+"c"; ); if(length(symb)==1, if(symb>"Z", symb=tmp1+"i"; , symb=tmp1+"r"; ); ); if(length(symb)==2,symb=tmp1+substring(symb,1,2)); if(length(path)>0, // 16.04.23from setdirectory(path); , tmp=Dirhead+"/data/fontF"; // 16.05.10 setdirectory(tmp); ); // 16.04.23until dtL=Readbezier(symb,opbez); dtLstr=dtL; //17.12.23 setdirectory(Dirwork); forall(dtL,dt, tmp=dt+"="; tmp1=select(GLIST,indexof(#,tmp)>0); if(length(tmp1)>0,//17.12.23from tmp1=tmp1_1; out=concat(out,[tmp1,[]]); ); //17.12.23until ); mx=100;Mx=-100;my=100;My=-100; forall(dtL,dt, tmp=apply(parse(dt),#_1); mx=min(append(tmp,mx)); Mx=max(append(tmp,Mx)); tmp=apply(parse(dt),#_2); my=min(append(tmp,my)); My=max(append(tmp,My)); ); center=[(mx+Mx)/2,(my+My)/2]; tmp1=[]; forall(dtL,dt, Rotatedata(dt,dt,rot,[center,"nodisp"]); Translatedata(dt,"rt"+dt,-center,["nodisp"]); tmp1=append(tmp1,"tr"+dt); ); dtL=tmp1; forall(dtL,dt, tmp=dt+"="; tmp1=select(GLIST,indexof(#,tmp)>0); if(length(tmp1)>0, //17.12.23from tmp1=tmp1_1; out=concat(out,[tmp1,[]]); ); //17.12.23until ); ); tmp1=text(options); tmp1=substring(tmp1,1,length(tmp1)-1); tmp2=""; //17.12.23from forall(dtL, tmp2=tmp2+","+#; ); tmp2="list("+substring(tmp2,1,length(tmp2))+")"; //17.12.23until out=concat(out,[ "Sd=Symb3data",[tmp2,size,0,dir,pos], //17.12.23 "Objsymb(Sd,"+tmp1+")",[] ]); tmp2=[]; // 16.06.10from forall(out,tmp1, if(islist(tmp1), tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5))); , if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5)); ); tmp2=append(tmp2,tmp); ); parse("oc"+symborg+"="+tmp2+";"); //190415 // println("cmd seq oc"+symborg+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); ////%Mkobjsymbcmd end//// ////%Concatcmd start//// Concatcmd(cmdlist):=( //help:Concatcmd([cmdL1,cmdL2]); regional(out); out=[]; forall(cmdlist, out=concat(out,#); ); out; ); ////%Concatcmd end//// WritetoF(fname,cmdL):=( // help:WritetoF("outdata",cmdL); regional(tmp,tmp1,tmp2,filename,wfilename); if(indexof(fname,".")==0, filename=fname+".input"; , filename=fname; ); wfilename=replace(filename,".input",".txt"); SCEOUTPUT = openfile(filename); forall(1..(length(cmdL)), tmp1=cmdL_#; if(substring(tmp1,0,1)=="[", tmp1=tmp1+" --##"; println(SCEOUTPUT,tmp1); , println(SCEOUTPUT,tmp1); println(SCEOUTPUT," --##"); ); ); closefile(SCEOUTPUT); ); kcF(fname):=kcF(fname,[]); kcF(fname,optionorg):=( regional(options,tmp,tmp1,tmp2,eqL,strL, filename,wfile,flg); if(indexof(fname,".")==0, filename=fname+".input"; , filename=fname; ); wfile=replace(filename,".input",".sfort"); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; strL=tmp_7; forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,0,tmp-1); tmp2=substring(#,tmp,length(#)); ); flg=0; forall(strL, if(Toupper(substring(#,0,1))=="R", flg=0; options=remove(options,[#]); ); if(Toupper(substring(#,0,1))=="M", flg=1; ); ); if(flg==0, tmp2=replace(filename,".input",".sfort"); tmp1=load(tmp2); if(length(tmp1)==0, flg=1; ); ); if(flg==1, tmp1=""; if(iswindows(), tmp2=Batparent; , tmp2=Shellparent; ); flg=0; forall(reverse(1..length(tmp2)), if(flg==0, tmp=substring(tmp2,#-1,#); if(tmp=="/" % tmp=="\", // 14.01.15 tmp1=substring(tmp2,0,#-1); tmp2=substring(tmp2,#,length(tmp2)); flg=1; ); ); ); if(length(tmp1)>0, setdirectory(tmp1); ); if(iswindows(), // SCEOUTPUT=openfile(wfile); // println(SCEOUTPUT,""); // closefile(SCEOUTPUT); SCEOUTPUT = openfile("kc.bat"); tmp=Dq+PathF+"\bash"+Dq+" --login -i -c "+Dq+"/cygdrive/"; tmp1=replace(Dirwork,"\","/"); if(indexof(tmp1,":")==0, tmp=tmp+"c/"+tmp1+"/kc.sh"+Dq; , tmp1=replace(tmp1,":",""); tmp=tmp+tmp1+"/kc.sh"+Dq; ); println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to Lf=unicode("10",base->10); print(SCEOUTPUT,"#!/bin/sh"+Lf); tmp1=replace(Dirwork,"\","/"); if(indexof(tmp1,":")==0, tmp="cd "+Dq+"/cygdrive/c/"+tmp1+Dq; , tmp1=replace(tmp1,":",""); tmp="cd "+Dq+"/cygdrive/"+tmp1+Dq; ); print(SCEOUTPUT,tmp+Lf); tmp=Dq+"/opt/fricas/bin/fricas"; tmp=tmp+Dq+" -nox -eval "; tmp=tmp+Dq+")read "+filename+Dq; // tmp=tmp+" > "+Dq+wfile+Dq; print(SCEOUTPUT,tmp+Lf); print(SCEOUTPUT,"exit 0"+Lf); closefile(SCEOUTPUT); println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05 , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp=Dq+PathF+Dq+" -nox -eval "+Dq+")read "+filename+Dq; // tmp=tmp+" > "+wfile; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29,06.05 ); setdirectory(Dirwork); ); ); CalcbyF(name,cmd):=CalcbyM(name,cmd,[]); CalcbyF(name,cmd,optionorg):=( //help:CalcbyF("a",cmdL); //help:CalcbyF(options= ["m/r","Wait=5"]]); regional(options,tmp,tmp1,tmp2,tmp3,tmp4,strL,eqL, flg,wflg,file,nc,arg,cmdF,cmdlist,wfile,Alpha, waiting,num,dig,varlist); options=optionorg; tmp=divoptions(options); eqL=tmp_5; strL=tmp_7; waiting=5; dig=5; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="W", waiting=parse(tmp2); options=remove(options,[#]); ); ); file=Fhead+name+".input"; wfile=Fhead+name+".sfort"; wflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); cmdF=cmd; tmp1=")set breakmode quit"; tmp2=")set output fortran on"; tmp3=")set fortran precision single"; cmdlist=[tmp1,tmp2,tmp3]; tmp=")set output fortran "+wfile; cmdlist=append(cmdlist,tmp); forall(1..floor(length(cmdF)/2),nc, //17.5.18 tmp1=cmdF_(2*nc-1); tmp1=replace(tmp1,LFmark,""); // 16.06.12 tmp2=cmdF_(2*nc); // list of argments if(nc0, tmp3=tmp1+ "("+substring(tmp3,0,length(tmp3)-1)+")"; , tmp3=tmp1; ); cmdlist=append(cmdlist,tmp3); , if(indexof(tmp1,"::")==0, varlist=[tmp1]; , varlist=tokenize(tmp1,"::"); ); forall(varlist, cmdlist=append(cmdlist,"["+#+"]"); ); ); ); cmdlist=concat(cmdlist,["111111*1",")quit"]); if(wflg==0, tmp1=load(file); if(length(tmp1)==0, wflg=1; , if(indexof(tmp1," --##")==0, // 15.11.26 wflg=1; , tmp1=tokenize(tmp1," --##"); tmp1=tmp1_(1..(length(tmp1)-1)); if(length(tmp1)!=length(cmdlist), wflg=1; , tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#); if(length(tmp)>0, wflg=1); ); ); ); ); if(wflg==0,wflg=-1); if(wflg==1, if(length(wfile)>0, SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); ); WritetoF(file,cmdlist); kcF(file,concat(options,["m"])); ); Alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp1=load(wfile); if(wflg==1,wait(WaitUnit)); tmp=indexof(tmp1,"Error")+indexof(tmp1,"find"); if(tmp>0, println("Some error(s) occurred"); tmp=tokenize(tmp1," --##"); forall(tmp, if(indexof(#,"Error")+indexof(#,"find")>0, println(tmp_(length(tmp))); ); ); flg=2; ); if(indexof(tmp1,"111111")>0, tmp1=replace(tmp1," &",""); tmp3="["; forall(1..length(varlist), tmp=indexof(tmp1,"["+varlist_#+"]"); tmp1=substring(tmp1,tmp,length(tmp1)); tmp=indexof(tmp1,"(1)="); tmp1=substring(tmp1,tmp+3,length(tmp1)); tmp=indexof(tmp1," "); tmp3=tmp3+Dq+substring(tmp1,0,tmp-1)+Dq+","; ); tmp3=replace(tmp3,"**","^"); tmp3=replace(tmp3,".0",""); tmp4=""; forall(1..length(tmp3), tmp=substring(tmp3,#-1,#); tmp1=indexof(Alpha,tmp); if(tmp1>0, tmp4=tmp4+unicode(text(tmp1+96),base->10); , if(tmp==" " % tmp=="&", , tmp4=tmp4+tmp; ); ); ); tmp=name+"="+substring(tmp4,0,length(tmp4)-1)+"];"; //190415 parse(tmp); tmp=parse(name); if(length(tmp)==1, tmp1=substring(tmp4,1,length(tmp3)-1); parse(name+"="+tmp1+";"); //190415 ); flg=1; tmp2=#*WaitUnit/1000; , if(wflg==-1, flg=-1; , wait(WaitUnit); ); ); ); ); if(flg<=0, if(flg==-1, println(wfile+" does not exist"); , tmp="("+text(waiting)+" s )"; tmp1=load(wfile); if(length(tmp1)>0, println(wfile+" incomplete"+tmp); // 2016.02.24 , println(wfile+" not generated "+tmp); ); ); , if(flg==1, println(" Succeeded "+name+" ("+text(tmp2)+" sec)"); ); ); ); Frfun(name,fun,argL):=Frifun(name,fun,argL,[]); Frfun(name,fun,argL,optionorg):=Frifun(name,fun,argL,optionorg); Frifun(name,fun,argL):=Frifun(name,fun,argL,[]); Frifun(name,fun,argL,optionorg):=( //help:Frfun("1","integrate",["sin(x)^3","x"],[""]); //help:Mxfun(options=["Disp=y"]); regional(nm,options,eqL,disp,cmdL,tmp,tmp1,tmp2); nm="fri"+name; options=optionorg; tmp=divoptions(options); disp=1; eqL=tmp_5; forall(eqL, tmp=indexof(#,"="); tmp1=Toupper(substring(#,0,1)); tmp2=substring(#,tmp,length(#)); if(tmp1=="D" , tmp=Toupper(substring(tmp2,0,1)); if((tmp=="F") % (tmp=="N"), disp=0; ); options=remove(options,[#]); ); ); cmdL=[]; cmdL=concat(cmdL,[ "ans"+":="+fun,argL, "ans",[] ]); CalcbyF(nm,cmdL,options); if(disp==1, // 15.11.24 println(nm+" is : "); println(parse(nm)); ); parse(nm); ); ///////////////// C function ////////////////// Cformold(strorg):=( //help:Cform(str); regional(str,ter,out,hat,pare,ns,ne,nn,jj,flg,flg2, lv,str1,str2,tmp,tmp1,tmp2); ter=["+","-","*","/","(",")","="]; //180517 str=replace(strorg,"pi","M_PI"); hat=Indexall(str,"^"); pare=Bracket(str,"()"); out=""; ns=0; forall(hat,nn, tmp=substring(str,nn-2,nn-1); if(tmp==")", tmp1=substring(str,ns,nn-1); tmp2=Parlevel(tmp1); tmp=tmp2_(length(tmp2))_2; lv=select(tmp2,#_2==-tmp); tmp=lv_1_1; out=out+substring(str,ns,ns+tmp-1); str1=substring(str,ns+tmp,nn-2); , tmp=0;//180517 flg=0; tmp2=reverse(ns..(nn-1)); forall(tmp2,jj, if(flg==0, tmp1=substring(str,jj-1,jj); if(contains(ter,tmp1), tmp=jj; flg=1; ); ); ); tmp1=substring(str,ns,tmp); out=out+tmp1; str1=substring(str,tmp,nn-1); ); tmp=substring(str,nn,nn+1); if(tmp=="(", tmp1=substring(str,nn,length(str)); tmp2=Parlevel(tmp1); lv=select(tmp2,#_2==-1); tmp=lv_1_1; str2=substring(tmp1,1,tmp-1); ns=nn+tmp; , flg=0;tmp=0; forall(nn..(length(str)),jj, if(flg==0, tmp1=substring(str,jj,jj+1); if((length(tmp1)==0)%(contains(ter,tmp1)), tmp=jj; flg=1; ); ); ); str2=substring(str,nn,tmp); ns=nn+1; ); out=out+"pow("+str1+","+str2+")"; ); str=out+substring(str,ns,length(str)); str=str+"#"; ter=apply(0..9,text(#)); ter=append(ter,"."); out=""; tmp=substring(str,0,1); if(contains(ter,tmp), flg=1;out="";tmp1=tmp; , flg=0;out=tmp;tmp1=""; ); forall(2..(length(str)), tmp=substring(str,#-1,#); if(contains(ter,tmp), if(flg==1, tmp1=tmp1+tmp; , tmp1=tmp; ); flg=1; , if(flg==1, if(indexof(tmp1,".")==0, tmp1=tmp1+".0"; ); out=out+tmp1+tmp; , out=out+tmp; ); tmp1="";flg=0; ); ); out=substring(out,0,length(out)-1); out; ); ////%Cform start//// Cform(strorg):=( //181106 //help:Cform(str); regional(str,str2,out,ter,num,hat,pare,jj,ns,ne,nsa,nea,flg,flg2,tmp,tmp1,tmp2); ter=["+","-","*","/","(",")","="]; //180517 str=replace(strorg,"pi","M_PI"); num=apply(0..9,text(#)); //181107from num=append(num,"."); flg=0; tmp1=str+"/"; tmp2=""; str=""; forall(1..(length(tmp1)), tmp=substring(tmp1,#-1,#); if(contains(num,tmp), if(flg==0, tmp2=tmp; flg=1; , tmp2=tmp2+tmp; ); , if(flg==1, if(indexof(tmp2,".")==0, tmp2=tmp2+".0"); str=str+tmp2+tmp; flg=0; , str=str+tmp; ); ); ); str=substring(str,0,length(str)-1); //181107to out=""; flg=0; forall(1..100,jj, if(flg==0, hat=indexof(str,"^"); if(hat==0, out=out+str; flg=1; , ne=hat-1; if(substring(str,ne-1,ne)==")", ne=ne-1; pare=Bracket(str,"()"); tmp=select(pare,#_1==hat-1); tmp=tmp_1_2; tmp1=select(pare,(#_1hat)&(#_2==-tmp)); ne=tmp1_1_1-1; nea=ne+1; , ns=ns+1; flg2=0; forall(ns..(length(str)), if(flg2==0, if(contains(ter,substring(str,#-1,#)), ne=#-1; flg2=1; ); ); ); if(flg2==0,ne=length(str)); nea=ne; ); str2=str2+substring(str,ns-1,ne)+")"; out=out+substring(str,0,nsa-1)+str2; str=substring(str,nea,length(str)); ); ); ); out; ); ////%Cform end//// ////%ConvertFdtoC start//// ConvertFdtoC(Fd):=ConvertFdtoC(Fd,["x","y","z"]); ConvertFdtoC(Fd,name):=( //help:ConvertFd(Fd); regional(FdL,FdC,uvar,vvar,tmp,tmp1); FdL=Fullformfunc(Fd); tmp=indexof(FdL_5,"="); //180303from uvar=substring(FdL_5,0,tmp-1); tmp=indexof(FdL_6,"="); vvar=substring(FdL_6,0,tmp-1); tmp1=apply(2..6,Assign(FdL_#,uvar,"u")); tmp1=apply(tmp1,Assign(#,vvar,"v")); tmp1=concat(tmp1,FdL_(7..8)); FdC=apply(1..3,name_#+"="+Cform(tmp1_#)); FdC=concat(FdC,[Cform(tmp1_4),Cform(tmp1_5)]); FdC=concat(FdC,[tmp1_6]); ); ////%ConvertFdtoC end//// ////%Startsurf start//// Startsurf():=StartsurfC(); Startsurf(Arg):=StartsurfC(Arg); Startsurf(Nplist,Dsizelist,Epslist):=StartsurfC("",Nplist,Dsizelist,Epslist); //181116 Startsurf(restr,Nplist,Dsizelist,Epslist):=StartsurfC(restr,Nplist,Dsizelist,Epslist); StartsurfC():=StartsurfC("",[50,50],[1500,500,200],[0.01,0.1]);//180611renewed StartsurfC(Arg):=( regional(tmp); if(isstring(Arg), StartsurfC(Toupper(Arg),[50,50],[1500,500,200],[0.01,0.1]); , tmp=max(Arg); if(tmp>=500, StartsurfC("",[50,50],Arg,[0.01,0.1]); , if(tmp>1, StartsurfC("",Arg,[1500,500,200],[0.01,0.1]); , StartsurfC("",[50,50],[1500,500,200],Arg); ); ); ); ); StartsurfC(restr,Nplist,Dsizelist,Epslist):=(//180501 //help:Startsurf(); //help:Startsurf("reset"); //help::Startsurf([0.01,0.1]); //help:Startsurf([50,50],[1500,500,200],[0.01,0.1]); //help:Startsurf([50],[1500,500],[0.01,0.1]); regional(divL,sizeL,epsL); StyleListC=[]; //181107 CommandListC=[];//180608(2lines) FuncListC=[]; if(substring(restr,0,1)=="R", //180611(3lines) GLIST=[]; ); divL=Nplist; sizeL=Dsizelist; epsL=Epslist; if(length(divL)==0,divL=[50]); if(length(divL)==1,divL=append(divL,divL_1)); if(length(sizeL)==0,sizeL=[1500]); //180610from if(length(sizeL)==1,sizeL=append(sizeL,500)); if(length(sizeL)==2,sizeL=append(sizeL,200)); sizeL=prepend(5000,sizeL); //180610to if(length(epsL)==0,epsL=[0.01]); if(length(epsL)==1,epsL=append(epsL,0.1)); epsL=prepend(0.00001,epsL); ConstantListC=[divL,sizeL,epsL]; ); ////%Startsurf end//// ////%Contsurf start//// Contsurf():=ContsurfC(""); Contsurf(restr):=ContsurfC(restr); ContsurfC(restr):=(//181101 //help:Contsurf(); regional(cL,tmp,tmp1,tmp2); if(substring(restr,0,1)=="R", GLIST=[]; ); cL=CommandListC; cL=cL_(1..(length(cL)-1)); CommandListC=cL; ); ////%Contsurf end//// ////%kcC start//// kcC():=kcC(FheadC); kcC(cname):=( regional(tmp, tmp1,flg,rfile); rfile=cname+"end.txt"; //180517 if(iswindows(), SCEOUTPUT = openfile("kc.bat"); println(SCEOUTPUT,"set path="+Dirwork); tmp=Indexall(PathC,"\"); if(length(tmp)==0, tmp=ndexall(PathC,"/")); tmp1=substring(PathC,0,tmp_(length(tmp))-1); println(SCEOUTPUT,"cd "+tmp1); tmp=PathC+" %path%\"+cname+".c"; tmp=tmp+" -o %path%\main.exe"; println(SCEOUTPUT,tmp); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); println(SCEOUTPUT,"%path%\main.exe"); println(SCEOUTPUT,"echo ////> %path%\"+rfile); println(SCEOUTPUT,"exit"); closefile(SCEOUTPUT); tmp=cname+".txt"; println(kc(Dirwork+Batparent,Mackc+Dirlib,tmp)); , if(ismacosx(), //181125from SCEOUTPUT = openfile("kc.command"); , SCEOUTPUT = openfile("kc.sh"); ); //181125to println(SCEOUTPUT,"#!/bin/sh"); println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); tmp=PathC+" "+cname+".c -o main.out -lm"; //190123 println(SCEOUTPUT,tmp); println(SCEOUTPUT,"./main.out"); println(SCEOUTPUT,"echo ////>"+rfile); println(SCEOUTPUT,"exit 0"); closefile(SCEOUTPUT); tmp=cname+".txt"; println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp)); ); SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); flg=0; repeat(floor(10*10000/WaitUnit), //180615 if(flg==0, tmp1=load(wfile); if(substring(tmp1,0,4)=="////", flg=1; ); wait(WaitUnit); ); ); if(flg==0, println("kcC not completed"); , println("kcC succeeded"); ); ); ////%kcC end//// ReaddataCold(var, fname):=ReaddataC(var, fname,[]); ReaddataC(var, fname,options):=( regional(file,dt,name,str,tmp,tmp1,opstr,gout, out3,out2); if(indexof(fname,".")==0, file=fname+".txt"; name=fname; , file=fname; tmp=indexof(fname,"."); name=substring(fname,0,tmp-1); ); tmp=Divoptions(options); opstr=tmp_(length(tmp)-1); gout=ReadOutData(file); GLIST=Append(GLIST,"Tmpstr=ReadOutData("+Dq+file+Dq+")"); if(substring(var,length(var)-1,length(var))!="h", if(length(parse(gout_1))>0, Projpara(var+"3d",options); ); , if(length(parse(gout_2))>0, Projpara(var+"3d",options); ); );//17.06.16until ); ////%ReaddataC start//// ReaddataC(fnameorg):=( regional(tmp,tmp1,fname,data,out); fname=fnameorg; if(indexof(fname,".")==0, fname=fname+".txt"); data=load(fname); data=tokenize(data," -99999"); out=[]; tmp1=[]; forall(1..(length(data)-1), tmp=replace(data_#," ",","); if(indexof(tmp,"99999.")==0, tmp="["+replace(data_#," ",",")+"]"; tmp=parse(tmp); tmp1=append(tmp1,tmp); , out=append(out,tmp1); tmp1=[]; ); ); if(length(tmp1)>0,out=append(out,tmp1)); out; ); ////%ReaddataC end//// ////%WritedataC start//// WritedataC(fnameorg,dataorg):=( //help:WritedataC(filename, 3ddata); regional(tmp,fname,data,kk,nn,pt); data=dataorg; if(isstring(data),data=parse(data)); if(Measuredepth(data)==1,data=[data]); fname=fnameorg; if(indexof(fname,".")==0, fname=fname+".txt"); SCEOUTPUT=openfile(fname); forall(1..(length(data)),kk, forall(1..(length(data_kk)),nn, pt=apply(1..3,Sprintf(data_kk_nn_#,5)); tmp=pt_1+" "+pt_2+" "+pt_3+" -99999"; print(SCEOUTPUT,tmp); if(nn0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); tmp2=tmp2+"DrawW="; if(indexof(tmp,"w")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); tmp2=tmp2+"DrawS="; if(indexof(tmp,"s")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); tmp2=tmp2+"DrawN="; if(indexof(tmp,"n")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); tmp2=tmp2+"break;"; //180523 cmd=append(cmd,tmp2); ); cmd=append(cmd," }"); cmd=append(cmd,"}"); tmp="void surffun(short ch,double u, double v, double p[3]){"; cmd=append(cmd,tmp); cmd=append(cmd," switch(ch){"); forall(1..(length(FuncListC)),nf, tmp2=" case "+text(nf)+" : "; forall(1..3, tmp1=FuncListC_nf_#; tmp=indexof(tmp1,"="); tmp1=substring(tmp1,tmp,length(tmp1)); tmp2=tmp2+"p["+text(#-1)+"]="+tmp1+";"; ); tmp2=tmp2+"break;"; //180523 cmd=append(cmd,tmp2); ); cmd=append(cmd," }"); cmd=append(cmd,"}"); cmd; ); ////%Cheadsurf end//// ////%Ctopsurf start//// Ctopsurf(name):=Ctopsurf(name,CutFunList); Ctopsurf(name,cutfunLorg):=( regional(cutfunL,path,cmd,tmp,tmp1,tmp2); cutfunL=cutfunLorg; //180601from if(length(cutfunL)==0, cutfunL=["1"]; );//180601to path=DirlibC+"/"; path=replace(path,"\","/"); cmd=[ "#include ","#include ", "#include ","#include ", //180530 "#include "+Dqq(Fhead+name+"header.h"), "#include "+Dqq(path+"ketcommonhead.h"), "#include "+Dqq(path+"ketcommon.h"), "#include "+Dq+path+"surflibhead.h"+Dq, "#include "+Dq+path+"surflib.h"+Dq, "double cutfun(short chfd, short chcut, double u, double v){", " double p[3],val;", " surffun(chfd,u,v,p);", " switch(chcut){" ]; tmp1=[]; forall(1..(length(cutfunL)), tmp2=replace(cutfunL_#,"x","p[0]"); tmp2=replace(tmp2,"y","p[1]"); tmp2=replace(tmp2,"z","p[2]"); tmp2=" case "+text(#)+": val="+tmp2+";"; tmp2=tmp2+"break;"; //180523 tmp1=append(tmp1,tmp2); ); cmd=concat(cmd,tmp1); cmd=concat(cmd,[ " }", " return val;", "}", "int main(void){", " double data[DsizeL][3],sfbd[DsizeL][3],out[DsizeL][3];", //180601 " int i, j, nall;", " char dirfname[256] = {'\0'};" ]); cmd; ); ////%Ctopsurf end//// ////%WritetoC start//// WritetoC(nm,header,main):=( regional(hfile,mfile,top,body,tmp,tmp1,tmp2); hfile=Fhead+nm+"header.h"; mfile=Fhead+nm+".c"; top=main_1; body=main_2; SCEOUTPUT=openfile(hfile); forall(header, println(SCEOUTPUT,#+"/**/"); ); closefile(SCEOUTPUT); SCEOUTPUT=openfile(mfile); forall(top, println(SCEOUTPUT,#); ); println(SCEOUTPUT,"/**/"); forall(body, println(SCEOUTPUT,#+"/**/"); ); println(SCEOUTPUT," return 0;"); println(SCEOUTPUT,"}"); closefile(SCEOUTPUT); ); ////%WritetoC end//// ////%CalcbyC start//// CalcbyC(name,cmd):=CalcbyC(name,PathC,cmd,[]); CalcbyC(name,Arg1,Arg2):=( if(isstring(Arg1), CalcbyC(name,Arg1,Arg2,[]); , CalcbyC(name,PathC,Arg1,Arg2); ); ); CalcbyC(name,path,cmd,optionorg):=( regional(options,eqL,strL,waiting,wflg,header,top,body, wfile,hfile,mfile,flg,tmp,tmp1,tmp2,tmp3); header=cmd_1; top=cmd_2; body=cmd_3; options=optionorg; tmp=divoptions(options); eqL=tmp_5; strL=tmp_7; waiting=40; wfile=Fhead+name+"end.txt"; //180517 hfile=Fhead+name+"header.h"; mfile=Fhead+name+".c"; wflg=0; forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="W", waiting=parse(tmp_2); options=remove(options,[#]); ); ); forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); if(wflg==0, tmp1=header; if(!isexists(Dirwork,hfile),wflg=1); if(wflg==0, tmp2=load(hfile); tmp2=tokenize(tmp2,"/**/"); tmp2=tmp2_(1..(length(tmp2)-1)); if(length(tmp1)!=length(tmp2),wflg=1); ); if(wflg==0, forall(1..(length(tmp1)), if(tmp1_#!=tmp2_#,wflg=1); ); ); if(wflg==0, tmp1=body; if(!isexists(Dirwork+"/",mfile),wflg=1); if(wflg==0, tmp2=load(mfile); tmp2=tokenize(tmp2,"/**/"); tmp2=tmp2_(2..(length(tmp2)-1)); if(length(tmp1)!=length(tmp2),wflg=1); ); if(wflg==0, forall(1..(length(tmp1)), if(tmp1_#!=tmp2_#,wflg=1); ); ); ); if(wflg==0,wflg=-1); ); if(wflg==1, WritetoC(name,header,[top,body]); SCEOUTPUT=openfile(wfile); println(SCEOUTPUT,""); closefile(SCEOUTPUT); kcC(Fhead+name); ); flg=0; tmp1=floor(waiting*1000/WaitUnit); repeat(tmp1, if(flg==0, tmp=load(wfile); if(indexof(tmp,"////")>0, //180523from flg=1; tmp2=#*WaitUnit/1000;//180523to , if(wflg==-1, flg=-1; , wait(WaitUnit); ); ); ); ); if(flg<=0, //180615from ErrFlag=1; if(flg==-1, println(wfile+" does not exist"); , if(flg==0, tmp="("+text(waiting)+" s )"; println(wfile+" not generated "+tmp); ); ); );//180615to wflg; //181101 ); ////%CalcbyC end//// ////%Gccexists start//// Gccexists():=( //190124 regional(out); if(iswindows(), out=isexists("",PathC); , if(indexof(PathC,"/")==0, //190127from out=isexists("/usr/bin",PathC); , out=isexists("",PathC); ); ); //190127to out; ); ////%Gccexists end//// ////%ExeccmdC start//// ExeccmdC(nm):=ExeccmdC(nm,[],["do"]); //180531 ExeccmdC(nm,options):=ExeccmdC(nm,options,["do"]); ExeccmdC(nm,optionorg,optionhorg):=( //help:ExeccmdC("1",options1,options2); //help:ExeccmdC(options1=["dr(/da/do)","m/r","Wait=30"]); //help:ExeccmdC(options2=["do(/nodisp/da/do)"]); regional(options,optionsh,name2,name3,waiting,dirbkup, eqL,reL,strL,fname,cL,tmp,tmp1,tmp2,flg,wflg,varL); fname=Fhead+nm+".txt"; options=optionorg; optionsh=optionhorg; optionsh=select(optionsh,length(#)>0); if(length(optionsh)==0,optionsh=["do"]); tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=30; wflg=0; cmdflg=0; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", wflg=1; options=remove(options,[#]); ); if(tmp=="R", wflg=-1; options=remove(options,[#]); ); ); forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); //181111 if(tmp1=="W", waiting=parse(tmp_2); options=remove(options,[#]); ); ); options=remove(options,reL); options=select(options,length(#)>0); if(CommonMake==1,//180609from tmp1=append(options,"m"); wflg=0; ); if(CommonMake==-1, tmp1=append(options,"r"); wflg=0; );//180609to if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); tmp1=append(tmp1,"Wait="+text(waiting)); tmp1=append(tmp1,"Disp=n"); //181024 cL=CommandListC; //181101from tmp2=" char fnameall[]="+Dqq(fname)+";"; tmp=select(1..(length(cL)),indexof(cL_#,"char fnameall[]=")>0); if(length(tmp)==0, CommandListC=prepend(tmp2,CommandListC); , tmp=tmp_1; CommandListC_tmp=tmp2; ); cL=CommandListC; tmp2=" printf("+Dqq("%s\n")+","+Dqq("Execcmd "+nm)+");"; tmp=select(1..(length(cL)),indexof(cL_#,"printf("+Dqq("%s\n")+","+Dq+"Execcmd ")>0); if(length(tmp)==0, CommandListC=prepend(tmp2,CommandListC); , tmp=tmp_1; CommandListC_tmp=tmp2; ); //181101to tmp=select(CommandListC,indexof(#,"outputend")>0); if(length(tmp)==0, CommandListC=append(CommandListC," outputend(dirfname);"); ); if(length(CommandListC)<=2,ErrFlag=1); if(ErrFlag==0, CalcbyC(nm,[Cheadsurf(),Ctopsurf(nm),CommandListC],tmp1); ); if(ErrFlag==1, err("CommandListC is empty or execcmd is not completed"); , varL=ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); tmp1=select(varL,indexof(#,"h3d")==0); tmp2=remove(varL,tmp1); tmp1=select(tmp1,indexof(#,"3d")>0); tmp=""; if(length(options)>0, forall(options, tmp=tmp+Dqq(#)+","; ); tmp=substring(tmp,0,length(tmp)-1); ); if(length(tmp)>0,tmp=tmp+","); //180602 tmp=tmp+Dqq("Msg=no"); //180602 tmp1=apply(tmp1,replace(#,"3d","2d")+"=Projpara("+Dqq(#)+",["+tmp+"]);"); forall(tmp1,parse(#)); tmp=""; if(length(optionsh)>0, forall(optionsh, tmp=tmp+Dqq(#)+","; ); tmp=substring(tmp,0,length(tmp)-1); ); tmp2=apply(tmp2,replace(#,"3d","2d")+"=Projpara("+Dqq(#)+",["+tmp+"]);"); forall(tmp2,parse(#)); Changestyle3d(EraseList,["nodisp"]);//180601 ); varL=select(varL,length(parse(#))>0); if(length(addpath)>0,Changework(dirbkup,["Sub=n"])); //180605 if(SUBSCR==1, // 15.02.11 forall(varL, //181106from Subgraph(#,""); ); ); //181106to tmp=StyleListC; //181107from tmp1=apply(1..(length(tmp)/2),[tmp_(2*#-1),tmp_(2*#)]); forall(tmp1,tmp2, strL=select(varL,indexof(#,tmp2_1)>0); //181114from forall(strL, if((length(parse(#))>0)&(length(tmp2_2))>0, Changestyle3d(#,tmp2_2); ); ); //181114to ); //181107to varL; ); ////%ExeccmdC end//// ////%Sfbdparadata start//// Sfbdparadata(nm,fd):=SfbdparadataC(nm,fd); Sfbdparadata(nm,fd,options):=SfbdparadataC(nm,fd,options); Sfbdparadata(nm,fdorg,optionorg,optionsh):=SfbdparadataC(nm,fdorg,optionorg,optionsh); SfbdparadataC(nm,fd):=( SfbdparadataC(nm,fd,[],["do"]); ); SfbdparadataC(nm,fd,options):= SfbdparadataC(nm,fd,options,["do"]); SfbdparadataC(nm,fdorg,optionorg,optionshorg):=( //help:Sfbdparadata("1",Fd,nohiddenoptions,hiddenoptions); regional(funnm,fd,options,optionsh,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,cmdflg); if(ChNumber==0,ChNumber=Ch); fd=ConvertFdtoC(fdorg); tmp1=0; //180606from forall(1..(length(FuncListC)), if(FuncListC_#==fd, funnm=#; tmp1=1; ); ); if(tmp1==0, FuncListC=append(FuncListC,fd); funnm=text(length(FuncListC)); ); //180606to name2="sfbd2d"+nm; name3="sfbd3d"+nm; name2h="sfbdh2d"+nm; name3h="sfbdh3d"+nm; fname=Fhead+"sfbd"+nm+".txt"; options=select(optionorg,length(#)>0); //190123from // tmp=Divoptions(options); //191006[2lines] // if(length(tmp_7)==0,options=append(options,"dr")); optionsh=select(optionshorg,length(#)>0); // tmp=Divoptions(optionsh); //191006[2lines] // if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); options=remove(options,reL); options=select(options,length(#)>0); tmp1=select(options, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from if(length(tmp1)>0, tmp1=tmp1_1; tmp2=select(optionsh, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); if(length(tmp2)==0, if(length(optionsh)==0, optionsh=["do",tmp1]; , optionsh=append(optionsh,tmp1); ); ); ); //181114to StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 options=remove(options,eqL); cmdL=[ " char fname"+nm+"[]="+Dqq(fname)+";", " rangeUV("+funnm+");", " boundary("+funnm+");", " sfbdparadata("+funnm+",sfbd);", " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", " output3h("+Dqq("w")+","+Dqq("sfbd3d"+nm)+","+Dqq("sfbdh3d"+nm)+",dirfname,sfbd);", " outputend(dirfname);" ]; if(cmdflg==1, //180531from println(" ExeccmdC will generate "+ name3+","+name3h); tmp=replace(cmdL_5,"fname"+nm,"fnameall");cmdL_5=tmp; //181217 tmp=select(CommandListC,indexof(#,"output3")>0); //180601from if(length(tmp)>0, tmp=replace(cmdL_6,Dqq("w"),Dqq("a"));cmdL_6=tmp; ); //180601from cmdL=cmdL_(2..(length(cmdL)-1)); //181113 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="sfbd"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); ); if(ErrFlag==1, err("Sfbdparadata not completed"); , ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; tmp2=""; if(length(options)>0, forall(options, tmp2=tmp2+Dqq(#)+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); ); tmp1=tmp1+tmp2+"]);"; parse(tmp1); tmp2=select(optionsh,length(#)>0); //180517(2lines) if(length(tmp2)==0,tmp2=["nodisp"]); tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; forall(tmp2, tmp1=tmp1+Dqq(#)+","; ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; parse(tmp1); , ErrFlag=1; ); ); ); ); ////%Sfbdparadata end//// ////%Crvsfparadata start//// Crvsfparadata(nm,fk,sfbd,fd):=CrvsfparadataC(nm,fk,sfbd,fd); Crvsfparadata(nm,fk,sfbd,fd,options):=CrvsfparadataC(nm,fk,sfbd,fd,options); Crvsfparadata(nm,Fk,sfbdorg,fdorg,optionorg,optionsh):= CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionsh); CrvsfparadataC(nm,fk,sfbd,fd):= CrvsfparadataC(nm,fk,sfbd,fd,[],["do"]); CrvsfparadataC(nm,fk,sfbd,fd,options):= CrvsfparadataC(nm,fk,sfbd,fd,options,["do"]); CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionshorg):=( //help:Crvsfparadata("1","ax3d","sfbd3d1",Fd,,nohiddenoptions,hiddenoptions); regional(funnm,sfbd,fd,options,optionsh,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,useflg,cmdlfg,ii,jj,eps); eps=10^(-5); sfbd=replace(sfbdorg,"bdy","sfbd"); fd=ConvertFdtoC(fdorg); tmp=select(1..(length(FuncListC)),FuncListC_#==fd); funnm=text(tmp_1); //180426 name2="crvsf2d"+nm; name3="crvsf3d"+nm; name2h="crvsfh2d"+nm; name3h="crvsfh3d"+nm; fname=Fhead+"crvsf"+nm+".txt"; options=select(optionorg,length(#)>0); //190123from // tmp=Divoptions(options); //191006[2lines] // if(length(tmp_7)==0,options=append(options,"dr")); optionsh=select(optionshorg,length(#)>0); // tmp=Divoptions(optionsh);//191006[2lines] // if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); useflg="N"; //181105from forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); if(tmp1=="U", useflg=Toupper(substring(tmp_2,0,1)); ); ); //181105to options=remove(options,reL); options=select(options,length(#)>0); tmp1=select(options, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from if(length(tmp1)>0, tmp1=tmp1_1; tmp2=select(optionsh, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); if(length(tmp2)==0, if(length(optionsh)==0, optionsh=["do",tmp1]; , optionsh=append(optionsh,tmp1); ); ); ); //181114to StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 options=remove(options,eqL); if(useflg=="N", // flg=0; // tmp=Fhead+Fk+".dat"; // if(!isexists(Dirwork,tmp),flg=1); // if(flg==0, // tmp1=ReaddataC(tmp); // tmp2=parse(Fk); // if(length(tmp1)==length(tmp2), // forall(1..(length(tmp1)),ii, // if(length(tmp1_ii)!=length(tmp2_ii),flg=1); // forall(1..(length(tmp1_ii)),jj, // if(flg==0, // if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); // ); // ); // ); // ); // ); // if(flg==1, if((islist(parse(Fk))), tmp=Fhead+Fk+".dat"; WritedataC(tmp,Fk); , useflg="Y"; ); // ); ); //181105to if(cmdflg==1, EraseList=append(EraseList,Fk); , Changestyle3d(Fk,["nodisp"]); ); cmdL=[ " char fname"+nm+"[]="+Dqq(fname)+";", " rangeUV("+funnm+");", " boundary("+funnm+");" ]; if(useflg=="N", //181105from cmdL=concat(cmdL,[ " readdataC("+Dqq(Fhead+Fk+".dat")+",data);" ]); , cmdL=concat(cmdL,[ " readoutdata3(dirfname,"+Dqq(Fk)+",data);" ]); ); cmdL=concat(cmdL,[ " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", " crvsfparadata("+funnm+",data,sfbd, 0, out);", " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", " output3h("+Dqq("w")+","+Dqq("crvsf3d"+nm)+","+Dqq("crvsfh3d"+nm)+",dirfname,out);", " outputend(dirfname);" ]); //181105to if(cmdflg==1,//180531from println(" ExeccmdC will generate "+ name3+","+name3h); cmdL_(length(cmdL)-4)=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; //181105(2lines) cmdL_(length(cmdL)-2)=" sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fnameall);"; tmp=replace(cmdL_(length(cmdL)-1),Dqq("w"),Dqq("a")); cmdL_(length(cmdL)-1)=tmp; cmdL=cmdL_(1..(length(cmdL)-1)); //181113 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="crvsf"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); ); if(ErrFlag==1, err("Crvsfparadata not completed"); , ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; tmp2=""; if(length(options)>0, forall(options, tmp2=tmp2+Dqq(#)+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); ); tmp1=tmp1+tmp2+"]);"; parse(tmp1); tmp2=select(optionsh,length(#)>0); //180517(2lines) if(length(tmp2)==0,tmp2=["nodisp"]); tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; forall(tmp2, tmp1=tmp1+Dqq(#)+","; ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; parse(tmp1); , ErrFlag=1; ); ); ); ); ////%Crvsfparadata end//// ////%Crv3onsfparadata start//// Crv3onsfparadata(nm,crv3d,sfbd,fd):=Crv3onsfparadataC(nm,crv3d,sfbd,fd); Crv3onsfparadata(nm,crv3d,sfbd,fd,options):=Crv3onsfparadataC(nm,crv3d,sfbd,fd,options); Crv3onsfparadata(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh):= Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh); Crv3onsfparadataC(nm,crv3d,sfbd,fd):= Crv3onsfparadataC(nm,crv3d,sfbd,fd,[],["do"]); Crv3onsfparadataC(nm,crv3d,sfbd,fd,options):= Crv3onsfparadataC(nm,crv3d,sfbd,fd,options,["do"]); Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionshorg):=( //help:Crv3onsfparadata("1","sc3","sfbd3d1",fd,,nohiddenoptions,hiddenoptions); regional(funnm,sfbd,fd,options,optionsh,name3,name3h,name2,name2h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); tmp1=replace(crv3d,"3d","2d"); tmp=apply(GCLIST,#_1); if(contains(tmp,tmp1), if(cmdflg==1, EraseList=append(EraseList,tmp1); , Changestyle3d(tmp1,["nodisp"]);//180428 ); ); eps=10^(-5); sfbd=replace(sfbdorg,"bdy","sfbd"); fd=ConvertFdtoC(fdorg); tmp=select(1..(length(FuncListC)),FuncListC_#==fd); funnm=text(tmp_1); //180426 name3="crv3onsf3d"+nm; name3h="crv3onsfh3d"+nm; name2=replace(name3,"3d","2d"); name2h=replace(name3h,"3d","2d"); fname=Fhead+"crv3onsf"+nm+".txt"; tmp=apply(fdorg,if(isstring(#),Dqq(#),#)); tmp=text(tmp); options=select(optionorg,length(#)>0); optionsh=select(optionshorg,length(#)>0); //181107 tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); options=remove(options,reL); options=select(options,length(#)>0); tmp1=select(options, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from if(length(tmp1)>0, tmp1=tmp1_1; tmp2=select(optionsh, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); if(length(tmp2)==0, if(length(optionsh)==0, optionsh=["do",tmp1]; , optionsh=append(optionsh,tmp1); ); ); ); //181114to StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 options=remove(options,eqL); tmp2=parse(crv3d); flg=0; tmp=Fhead+crv3d+".dat"; if(!isexists(Dirwork,tmp),flg=1); if(flg==0, tmp1=ReaddataC(tmp); if(length(tmp1)!=length(tmp2),flg=1); if(flg==0, forall(1..(length(tmp1)),ii, if(length(tmp1_ii)!=length(tmp2_ii),flg=1); forall(1..(length(tmp1_ii)),jj, if(flg==0, if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); ); ); ); ); ); if(flg==1,WritedataC(tmp,crv3d)); cmdL=[ " char fname"+nm+"[]="+Dqq(fname)+";", " rangeUV("+funnm+");", " boundary("+funnm+");", " readdataC("+Dqq(Fhead+crv3d+".dat")+",data);", " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 " crv3onsfparadata("+funnm+",data,sfbd,out);", " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", " output3h("+Dqq("w")+","+Dqq("crv3onsf3d"+nm)+","+Dqq("crv3onsfh3d"+nm)+",dirfname,out);", " outputend(dirfname);" ]; if(cmdflg==1,//180531from println(" ExeccmdC will generate "+ name3+","+name3h); cmdL_7=" sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fnameall);"; //180607 tmp=replace(cmdL_(length(cmdL)-1),Dqq("w"),Dqq("a")); cmdL_(length(cmdL)-1)=tmp; cmdL_5=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; cmdL=cmdL_(2..(length(cmdL)-1)); //181113 // cmdL=remove(cmdL,[cmdL_1,cmdL_(length(cmdL))]); CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="crv3onsf"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); ); if(ErrFlag==1, err("Crvonsfparadata not completed"); , ReadOutData(fname,["Disp=n"]); GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; tmp2=""; if(length(options)>0, forall(options, tmp2=tmp2+Dqq(#)+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); ); tmp1=tmp1+tmp2+"]);"; parse(tmp1); tmp2=select(optionsh,length(#)>0); //180517(2lines) if(length(tmp2)==0,tmp2=["nodisp"]); tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; forall(tmp2, tmp1=tmp1+Dqq(#)+","; ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; parse(tmp1); , ErrFlag=1; ); ); ); ); ////%Crv3onsfparadata end//// ////%Crv2onsfparadata start//// Crv2onsfparadata(nm,crv2d,sfbd,fd):=Crv2onsfparadataC(nm,crv2d,sfbd,fd); Crv2onsfparadata(nm,crv2d,sfbd,fd,options):=Crv2onsfparadataC(nm,crv2d,sfbd,fd,options); Crv2onsfparadata(nm,crv2d,sfbd,fdorg,options,optionsh):= Crv2onsfparadataC(nm,crv2d,sfbd,fdorg,options,optionsh); Crv2onsfparadataC(nm,crv2d,sfbd,fd):= Crv2onsfparadataC(nm,crv2d,sfbd,fd,["c"],["do"]); Crv2onsfparadataC(nm,crv2d,sfbd,fd,options):= Crv2onsfparadataC(nm,crv2d,sfbd,fd,options,["do"]); Crv2onsfparadataC(nm,crv2d,sfbd,fdorg,options,optionsh):=( //help:Crv2onsfparadata("1","gp1","sfbd3d1",fd,nohiddenoptions,hiddenoptions); regional(fd,uname,vname,str,tmpfun,ii,jj,crv3d,tmp,tmp1,tmp2); Changestyle3d(crv2d,["nodisp"]); crv3d=crv2d+"3d"; fd=Fullformfunc(fdorg); tmp=Strsplit(fd_5,"="); uname=tmp_1; tmp=Strsplit(fd_6,"="); vname=tmp_1; str="["+fd_2+","+fd_3+","+fd_4+"]"; tmp="tmpfun("+uname+","+vname+"):="+str+";"; parse(tmp); tmp1=parse(crv2d); tmp2=[]; forall(tmp1, tmp2=append(tmp2,tmpfun(#_1,#_2)); ); tmp=crv3d+"="+textformat(tmp2,6)+";"; //190415 parse(tmp); Crv3onsfparadataC(nm,crv3d,sfbd,fdorg,options,optionsh); ); ////%Crv2onsfparadata end//// ////%Wireparadata start//// Wireparadata(nm,sfbd,fd,wr1,wr2):=WireparadataC(nm,sfbd,fd,wr1,wr2); Wireparadata(nm,sfbd,fd,wr1,wr2,options):=WireparadataC(nm,sfbd,fd,wr1,wr2,options); Wireparadata(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):= WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh); WireparadataC(nm,sfbd,fd,wr1,wr2):= WireparadataC(nm,sfbd,fd,wr1,wr2,[],["do"]); WireparadataC(nm,sfbd,fd,wr1,wr2,options):= WireparadataC(nm,sfbd,fd,wr1,wr2,options,["do"]); WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionshorg):=( //help:Wireparadata("1","sfbd3d1",fd,5,5,nohiddenoptions,hiddenoptions); regional(funnm,fd,options,optionsh,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,fnameh,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,udata,vdata,cmdflg); eps=10^(-5); fd=ConvertFdtoC(fdorg); tmp=select(1..(length(FuncListC)),FuncListC_#==fd); funnm=text(tmp_1); name2="wire2d"+nm; name3="wire3d"+nm; name2h="wireh2d"+nm; name3h="wireh3d"+nm; fname=Fhead+"wire"+nm+".txt"; fnameh=replace(fname,".txt","h.txt"); options=select(optionorg,length(#)>0); //190123from // tmp=Divoptions(options); //191006[2lines] // if(length(tmp_7)==0,options=append(options,"dr")); optionsh=select(optionshorg,length(#)>0); // tmp=Divoptions(optionsh); //191006[2lines] // if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; options=remove(options,reL); wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); options=remove(options,reL); options=select(options,length(#)>0); tmp1=select(options, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from if(length(tmp1)>0, tmp1=tmp1_1; tmp2=select(optionsh, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); if(length(tmp2)==0, if(length(optionsh)==0, optionsh=["do",tmp1]; , optionsh=append(optionsh,tmp1); ); ); ); //181114to StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 options=remove(options,eqL); if(islist(wr1), udata=prepend(length(wr1),wr1); , tmp=Fullformfunc(fdorg); tmp1=tmp_5; tmp=indexof(tmp1,"="); tmp=substring(tmp1,tmp,length(tmp1)); tmp=parse(tmp); tmp1=tmp_1; tmp2=tmp_2; udata=apply(1..wr1,tmp1+#*(tmp2-tmp1)/(wr1+1)); udata=prepend(wr1,udata); ); udata=textformat(udata,6); udata=substring(udata,1,length(udata)-1); if(islist(wr2), vdata=prepend(length(wr2),wr2); , tmp=Fullformfunc(fdorg); tmp1=tmp_6; tmp=indexof(tmp1,"="); tmp=substring(tmp1,tmp,length(tmp1)); tmp=parse(tmp); tmp1=tmp_1; tmp2=tmp_2; vdata=apply(1..wr2,tmp1+#*(tmp2-tmp1)/(wr2+1)); vdata=prepend(wr2,vdata); ); vdata=textformat(vdata,6); vdata=substring(vdata,1,length(vdata)-1); cmdL=[ " double wireu[]={"+udata+"};", " double wirev[]={"+vdata+"};", " char fname[]="+Dqq(fname)+";", " char fnameh[]="+Dqq(fnameh)+";", " rangeUV("+funnm+");", " boundary("+funnm+");", " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 " wireparadata("+funnm+",sfbd,wireu,wirev,fname,fnameh);" ]; if(cmdflg==1,//180531from println(" ExeccmdC will generate "+ name3+","+name3h); tmp=replace(cmdL_8,"fnameh",Dqq("")); tmp=replace(tmp,"fname","fnameall"); cmdL_8=tmp; cmdL_7=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; cmdL=append(cmdL," outputend(dirfname);"); tmp=remove(1..(length(cmdL)),[3,4]); //181113(2lines) cmdL=cmdL_tmp; // cmdL=remove(cmdL,[cmdL_3,cmdL_4]); //180827 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="wire"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); ); if(ErrFlag==1, err("Wireparadata not completed"); , ReadOutData(fname,["Disp=n"]); GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); ReadOutData(fnameh); GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; tmp2=""; if(length(options)>0, forall(options, tmp2=tmp2+Dqq(#)+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); ); tmp1=tmp1+tmp2+"]);"; parse(tmp1); tmp2=select(optionsh,length(#)>0); //180517(2lines) if(length(tmp2)==0,tmp2=["nodisp"]); tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; forall(tmp2, tmp1=tmp1+Dqq(#)+","; ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; parse(tmp1); , ErrFlag=1; ); ); ); ); ////%Wireparadata end//// ////%Intersectcrvsf start//// Intersectcrvsf(nm,crv,fd):=IntersectcrvsfC(nm,crv,fd); Intersectcrvsf(nm,crv,fd,Arg):=IntersectcrvsfC(nm,crv,fd,Arg); Intersectcrvsf(nm,crv3d,fdorg,bdyeq,optionorg):= IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg); IntersectcrvsfC(nm,crv,fd):=IntersectcrvsfC(nm,crv,fd,"",[]); IntersectcrvsfC(nm,crv,fd,Arg):=( if(isstring(Arg), IntersectcrvsfC(nm,crv,fd,Arg,[]); , IntersectcrvsfC(nm,crv,fd,"",Arg); ); ); IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg):=( //help:Intersectcrvsf("1",curve,fd); regional(fd,funnm,name,crv,fd,options,reL,fname,crvfname,argR, waiting,tmp,tmp1,tmp2,flg,wflg,pts,cmdflg); fd=ConvertFdtoC(fdorg); tmp=select(1..(length(FuncListC)),FuncListC_#==fd); funnm=text(tmp_1); //180426 name="intercrvsf"+nm; fname=Fhead+name+".txt"; crvfname=Fhead+"crv"+nm+".txt"; fd=apply(fdorg,if(isstring(#),Dqq(#),#)); options=optionorg; tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); options=remove(options,eqL); options=remove(options,reL); options=select(options,length(#)>0); tmp2=parse(crv3d); flg=0; tmp=Fhead+crv3d+".dat"; if(!isexists(Dirwork,tmp),flg=1); if(flg==0, tmp1=ReaddataC(tmp); if(length(tmp1)!=length(tmp2),flg=1); if(flg==0, forall(1..(length(tmp1)),ii, if(length(tmp1_ii)!=length(tmp2_ii),flg=1); forall(1..(length(tmp1_ii)),jj, if(flg==0, if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); ); ); ); ); ); if(flg==1,WritedataC(tmp,crv3d)); cmdL=[ " double crv3d[DsizeL][3];", " char fname"+nm+"[]="+Dqq(fname)+";", " rangeUV("+funnm+");", " boundary("+funnm+");", " readdataC("+Dqq(Fhead+crv3d+".dat")+",crv3d);", " intersectcrvsf("+Dqq("w")+","+funnm+",crv3d,"+Dqq(fname)+");", " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");" ]; if(cmdflg==1,//180531from cmdL_6=" intersectcrvsf("+Dqq("a")+","+funnm+",crv3d,fnameall);"; tmp=remove(1..(length(cmdL)),[2,length(cmdL)]); //181113(2lines) cmdL=cmdL_tmp; // cmdL=remove(cmdL,[cmdL_2]); // cmdL=remove(cmdL,[cmdL_(length(cmdL))]); CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="crv3onsf"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); ); if(ErrFlag==1, err("Intersectcrvsf not completed"); , ReadOutData(fname,["Disp=n"]); //181029 ); println("generate "+name); parse(name); ); ); ////%Intersectcrvsf end//// ////%Sfcutparadatacdy start//// 181112 Sfcutparadatacdy(nm,cutfun,fd):= Sfcutparadatacdy(nm,cutfun,fd,[]); Sfcutparadatacdy(nm,cutfun,fd,options):=( //help:Sfcutparadatacdy("1","2*x+3*y+z=1","sfbd3d",fd,options); regional(out3,out2,name3,name2,eps,fdL,rep,jj,pL,vn1,vn2, tmp,tmp1,tmp2); eps=10^(-5); name2="sfcc2d"+nm; name3="sfcc3d"+nm; fdL=Fullformfunc(fd); tmp=Strsplit(fdL_5,"="); vn1=tmp_1; tmp=Strsplit(fdL_6,"="); vn2=tmp_1; rep=["x",fdL_2,"y",fdL_3,"z",fdL_4]; tmp=Assign(cutfun,rep); Implicitplot("sfc"+nm,tmp,fd_5,fd_6,["Msg=n","nodisp"]); out3=[]; out2=[]; tmp1=parse("impsfc"+nm); if(Measuredepth(tmp1)==1,tmp1=[tmp1]); forall(1..(length(tmp1)),jj, pL=tmp1_jj; tmp2=[]; forall(pL, tmp=Assign("[x,y,z]",rep); tmp=Assign(tmp,[vn1,#_1,vn2,#_2]); tmp=parse(tmp); tmp2=append(tmp2,tmp); ); Spaceline("-sfc"+nm+"n"+text(jj),tmp2,append(options,"Msg=n")); out3=append(out3,tmp2); tmp=Projcurve(tmp2); out2=append(out2,tmp); ); tmp=name3+"=["; tmp1=name3+"=["; forall(1..(length(out3)), tmp=tmp+"sfc"+nm+"n"+text(#)+"3d"+","; tmp1=tmp1+Dqq("sfc"+nm+"n"+text(#)+"3d")+","; ); tmp=substring(tmp,0,length(tmp)-1)+"];"; //190415 parse(tmp); tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; println("generate sfcutparadata "+tmp1); tmp=name2+"="+Textformat(out2,6)+";"; //190415 parse(tmp); out3; ); ////%Sfcutparadatacdy end//// ////%Sfcutparadata start//// Sfcutparadata(nm,cutfunL,sfbd,fd):=SfcutparadataC(nm,cutfunL,sfbd,fd); Sfcutparadata(nm,cutfunL,sfbd,fd,options):=SfcutparadataC(nm,cutfunL,sfbd,fd,options); Sfcutparadata(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh):= SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh); SfcutparadataC(nm,cutfunL,sfbd,fd):=(//180505 SfcutparadataC(nm,cutfunL,sfbd,fd,[],["do"]); ); SfcutparadataC(nm,cutfunL,sfbd,fd,options):= SfcutparadataC(nm,cutfunL,sfbd,fd,options,[]); SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionshorg):=( //help:Sfcutparadata("1","2*x+3*y+z=1","sfbd3d",fd,nohiddenoptions,hiddenoptions); regional(funnm,cutfunL,fd,options,optionsh,name2,name3,name2h,name3h, waiting,eqL,reL,strL,fname,fnameh,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); eps=10^(-5); fd=ConvertFdtoC(fdorg); tmp=select(1..(length(FuncListC)),FuncListC_#==fd); funnm=text(tmp_1); cutfunL=cutfunLorg; if(!islist(cutfunL),cutfunL=[cutfunL]); forall(1..(length(cutfunL)), tmp1=Strsplit(cutfunL_#,"="); if(length(tmp1)>1, tmp2=tmp1_1+"-("+tmp1_2+")"; //180516 cutfunL_#=Cform(tmp2); ); ); CutFunList=cutfunL; //180601 name2="sfcut2d"+nm; name3="sfcut3d"+nm; name2h="sfcuth2d"+nm; name3h="sfcuth3d"+nm; fname=Fhead+"sfcut"+nm+".txt"; fnameh=replace(fname,".txt","h.txt"); options=select(optionorg,length(#)>0); optionsh=select(optionshorg,length(#)>0); //181107 tmp=Divoptions(options); eqL=tmp_5; reL=tmp_6; strL=tmp_7; waiting=60; wflg=0; options=remove(options,reL); wflg=0; cmdflg=1; forall(strL, tmp=Toupper(substring(#,0,1)); if(tmp=="M", cmdflg=0; wflg=1; options=remove(options,[#]); ); if(tmp=="R", cmdflg=0; wflg=-1; options=remove(options,[#]); ); if(tmp=="C", //180531 cmdflg=1; options=remove(options,[#]); ); ); options=select(optionorg,length(#)>0); //190123from // tmp=Divoptions(options); //191006[2lines] // if(length(tmp_7)==0,options=append(options,"dr")); optionsh=select(optionshorg,length(#)>0); // tmp=Divoptions(optionsh); //191006[2lines] // if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to tmp1=select(options, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from if(length(tmp1)>0, tmp1=tmp1_1; tmp2=select(optionsh, (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); if(length(tmp2)==0, if(length(optionsh)==0, optionsh=["do",tmp1]; , optionsh=append(optionsh,tmp1); ); ); ); //181114to StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 options=remove(options,eqL); tmp1=text(length(cutfunL)); cmdL=[ " char fname[]="+Dqq(fname)+";", " char fnameh[]="+Dqq(fnameh)+";", " rangeUV("+funnm+");", " boundary("+funnm+");", " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 " sfcutparadata("+funnm+","+tmp1+",sfbd,fname,fnameh);" ]; if(cmdflg==1,//180531from println(" ExeccmdC will generate "+ name3+","+name3h); tmp=replace(cmdL_6,"fnameh",Dqq("")); tmp=replace(tmp,"fname","fnameall"); cmdL_6=tmp; cmdL_5=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; cmdL=append(cmdL," outputend(dirfname);"); cmdL=cmdL_(3..(length(cmdL))); //181113 // cmdL=remove(cmdL,[cmdL_1,cmdL_2]); //180827 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); if(wflg==-1,tmp1=append(options,"r")); if(ErrFlag==0, tmp="sfcut"+nm; CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); //180601 ); if(ErrFlag==1, err("Sfcutparadata not completed"); , ReadOutData(fname,["Disp=n"]); //1810209 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); ReadOutData(fnameh); GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; tmp2=""; if(length(options)>0, forall(options, tmp2=tmp2+Dqq(#)+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); ); tmp1=tmp1+tmp2+"]);"; parse(tmp1); tmp2=select(optionsh,length(#)>0); //180517(2lines) if(length(tmp2)==0,tmp2=["nodisp"]); tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; forall(tmp2, tmp1=tmp1+Dqq(#)+","; ); tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; parse(tmp1); , ErrFlag=1; ); ); ); ); ////%Sfcutparadata end//// //help:end();