diff options
Diffstat (limited to 'Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs')
-rw-r--r-- | Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs | 1041 |
1 files changed, 433 insertions, 608 deletions
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs index f14e3ff603e..956e726b438 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs @@ -14,27 +14,21 @@ // along with this program. If not, see <http://www.gnu.org/licenses/> // -println("ketcindylib3d[20190301] loaded"); +println("ketcindylib3d[20190511] loaded"); //help:start(); ////%Ketinit3d start//// Ketinit3d():=Ketinit3d(1); -Ketinit3d(sf):=( - regional(tmp); - tmp=round(4*SW.y)/4; -// Ketinit3d(sf,[round(SW.x)+1,tmp-0.5,tmp-1]); - Ketinit3d(sf,[-5,tmp-0.5,tmp-1]); -); -Ketinit3d(subflg,position):=( +Ketinit3d(subflg):=( //help:Ketinit3d(); //help:Ketinit3d(0); - regional(ctr,tmp,tmp1,tmp2,tmp3,tmp4,xPos,yTh,yPh); - BezierNumber3=1; //15.02.28 + regional(ctr,tmp,tmp1,tmp2,tmp3,tmp4); + BezierNumber3=1; //15.02.28 // no ketjs on if(!islist(BZLIST3), BZLIST3=[]; //15.02.28 , - tmp=apply(allpoints(),text(#)); + tmp=apply(allpoints(),#.name); //190505 tmp1=select(tmp,substring(#,length(#)-1,length(#))=="p"); tmp2=[]; forall(tmp1,ctr, @@ -45,35 +39,10 @@ Ketinit3d(subflg,position):=( ); ); BZLIST3=tmp2; - ); - SUBSCR=subflg; + ); // no ketjs off + SUBSCR=subflg; // no ketjs + // SUBSCR=0 // only ketjs Setwindow("Msg=no"); - if(length(position)>2, - xPos=position_1; - yTh=position_2; - yPh=position_3; - , - xPos=0; - yTh=position_1; - yPh=position_2; - ); -// THETA=60*pi/180; -// PHI=30*pi/180; - FocusPoint=[0,0,0]; - EyePoint=[5,5,5]; - Listplot("th",[[xPos,yTh],[xPos+9,yTh]],["notex","linecolor->[0,1,0]","Msg=no"]); - Listplot("ph",[[xPos,yPh],[xPos+9,yPh]],["notex","linecolor->[0,1,0]","Msg=no"]); - //16.02.10 - PutonCurve("TH",sgth,[xPos,xPos+9,"Msg=no"]); - PutonCurve("FI",sgph,[xPos,xPos+9,"Msg=no"]); - THETA=(TH.x-xPos)*20*pi/180; - PHI=(FI.x-xPos)*40*pi/180; -// Defvar("THETA",THETA); // 16.06.20 -// Defvar("PHI",PHI); // 16.06.20 - drawtext([xPos-0.8,yTh-0.1],Sprintf((TH.x-xPos)*20,2),align->"right"); //17.05.02 - drawtext([xPos-0.8,yPh-0.1],Sprintf((FI.x-xPos)*40,2),align->"right"); //17.05.02 - tmp="Setangle("+text((TH.x-xPos)*20)+","+text((FI.x-xPos)*40)+")"; - GLIST=append(GLIST,tmp); Addax(0); TSIZE=10; TSIZEZ=10; @@ -82,55 +51,84 @@ Ketinit3d(subflg,position):=( ////%Ketinit3d end//// ////%Start3d start//// -Start3d():=Start3d([]); -Start3d(ptexception):=( +Start3d():=Start3d([],[]); +Start3d(Arg):=( //190503from + regional(tmp); + tmp=select(Arg,indexof(#,"=")>0); + if(length(tmp)==0, + Start3d(Arg,[]); + , + Start3d([],Arg); + ); +); +Start3d(ptexception,optionjs):=(//190503to //help:Start3d(); //help:Start3d(["A","B"](exceptionptlist)); +//help:Start3d(optionjs=["Slider=n","Removept=[]"); regional(xmn,xMx,ymn,yMx,pt,pt3,pt2, xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4); PTEXCEPTION=[]; - Setfiles(Namecdy); //180608 - ConstantListC=[[50,50],[5000,1500,500,200],[0.00001,0.01,0.1]]; + SLIDEFLG="Y"; + forall(optionjs, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="S", + SLIDEFLG=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="R", + tmp2=tmp_2; + if(substring(tmp2,0,1)=="[",tmp2=substring(tmp2,1,length(tmp2)-1)); + tmp2=tokenize(tmp2,","); + REMOVEPTJS=concat(REMOVEPTJS,tmp2); + ); + ); + Setfiles(Namecdy); //180608 // no ketjs + ConstantListC=[[50,50],[5000,1500,500,200],[0.00001,0.01,0.1]]; // no ketjson FuncListC=[]; CommandListC=[]; //180531 CutFunList=[];//180601 EraseList=[];//180601 - ADDPACK=[]; //180606 + ADDPACK=[]; //180606 // no ketjs off GCLIST=[]; - GLIST=[]; + GLIST=[]; // no ketjs on FUNLIST=[]; COM0thlist=[]; COM1stlist=[]; - COM2ndlist=[]; + COM2ndlist=[]; // no ketjs off SEG3dlist=[]; - OutFileList=[]; + OutFileList=[]; // no ketjs on FigPdfList=[]; // 16.04.08 ErrFlag=0; - OBJCMD=[]; // 16.11.29from + OBJCMD=[]; // 161129from OCNAME=Fhead; - OCOPTION=["m","v"];// 16.11.29until + OCOPTION=["m","v"];// 161129to //no ketjs off + KETJSOP=[]; //190129 + REMOVEPTJS=[]; SLIDEFLG="Y"; //190504 + KetcindyjsDataList=[]; //190511 ArrowlineNumber=1; // 16.01.31 ArrowheadNumber=1; BezierNumber=1; //16.01.31 BezierNumber3=1; //16.08.19 - Fnametex=Fhead+".tex"; // 15.04.06 + Fnametex=Fhead+".tex"; // 15.04.06 //no ketjs on FnameR=Fhead+".r"; FnameRbody=Fhead+"body.r"; - Fnameout=Fhead+".txt"; + Fnameout=Fhead+".txt"; // no ketjs off Setwindow("Msg=no"); // 16.06.20from - tmp=round(4*SW.y)/4; - xPos=-5; yTh=tmp-0.5; yPh=tmp-1; - Slider("TH",[xPos,yTh],[xPos+9,yTh],["Color=green"]); //190209 - Slider("FI",[xPos,yPh],[xPos+9,yPh],["Color=green"]); //190209 - drawtext([xPos-0.8,yTh-0.1],Sprintf((TH.x-xPos)*20,2),align->"right"); //17.05.02 - drawtext([xPos-0.8,yPh-0.1],Sprintf((FI.x-xPos)*40,2),align->"right"); //17.05.02 - tmp="Setangle(" //no ketjs on - +format((TH.x-xPos)*20,5)+"," + tmp=round(4*SW.y)/4; + xPos=-5; yTh=tmp-0.5; yPh=tmp-1; +// if(SLIDEFLG=="Y", // only ketjs //190503from + Slider("TH",[xPos,yTh],[xPos+9,yTh],["Color=green"]); //190209 + Slider("FI",[xPos,yPh],[xPos+9,yPh],["Color=green"]); //190209 + drawtext([xPos-0.8,yTh-0.1],Sprintf((TH.x-xPos)*20,2),align->"right"); //17.05.02 + drawtext([xPos-0.8,yPh-0.1],Sprintf((FI.x-xPos)*40,2),align->"right"); //17.05.02 +// ); // only ketjs //190503to + tmp="Setangle(" //no ketjs on + +format((TH.x-xPos)*20,5)+"," +format((FI.x-xPos)*40,5)+")"; GLIST=append(GLIST,tmp); //no ketjs off THETA=(TH.x-xPos)*20*pi/180; PHI=(FI.x-xPos)*40*pi/180; // 16.06.20until - if(isselected(TH) % isselected(FI), // 17.05.18from + if(Ptselected(TH) % Ptselected(FI), //190505 if(length(Ch)>0, ChNum=Ch_(length(Ch)); if(ChNum==0, ChNum=1); @@ -138,8 +136,8 @@ Start3d(ptexception):=( ChNum=1; ); Ch=[0]; - );// 17.05.18to - if(SUBSCR==1, + ); + if(SUBSCR==1, // no ketjs on xmn=SW.x+NE.x-SW.x; xMx=NE.x+NE.x-SW.x; ymn=SW.y; @@ -148,18 +146,18 @@ Start3d(ptexception):=( [xmn,ymn],[xMx,ymn]],color->[1,1,1]); connect([[NE.x-SW.x,yMx],[NE.x-SW.x,ymn]], color->[0.5,0.5,0.5]); - ); + ); // no ketjs off // for Presentation //17.07.01from //no ketjs on letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; shadowc=[0,0,0,0.5]; mboxc="yellow"; //17.03.02 regional debugged SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, letterc,mboxc,mboxc,mboxc,62,2,letterc]; - ThinDense=0.1; //17.07.01to //no ketjs off + ThinDense=0.1; //17.07.01to //no ketjs off tmp=ptexception; //181106 if(!islist(tmp),tmp=[tmp]); //190209 - PTEXCEPTION=concat(PTEXCEPTION,tmp); //190209 + PTEXCEPTION=concat(PTEXCEPTION,tmp); //190209 // if(!islist(tmp),PTEXCEPTION=[tmp],PTEXCEPTION=tmp); - Ptseg3data(PTEXCEPTION); //16.08.23 + Ptseg3data(PTEXCEPTION);//16.08.23 // PTEXCEPTION=ptexception; //180916 //190209[del] ); ////%Start3d end//// @@ -180,14 +178,14 @@ Setangle(theta,phi):=( //16.12.24 FI.x=phi/40+xPos; // drawtext([xPos-0.8,yTh-0.1],text(theta)); //17.05.05 // drawtext([xPos-0.8,yPh-0.1],text(phi)); - tmp="Setangle(" + tmp="Setangle(" // no ketjs on +format(theta,5)+","+format(phi,5)+")"; - GLIST=append(GLIST,tmp); - if(length(VLIST)==0, // 16.06.20 - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,PTEXCEPTION); //180916 + GLIST=append(GLIST,tmp); //no ketjs off + if(length(VLIST)==0, // 16.06.20 + tmp=apply(allpoints(),#.name); //190505 + tmp4=remove(tmp,PTEXCEPTION); //190329 forall(tmp4,pt, - tmp1=text(pt); + tmp1=pt; tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); if(tmp!="z", tmp=parse(tmp1+"z.xy"); //181028[2lines]; @@ -198,11 +196,11 @@ Setangle(theta,phi):=( //16.12.24 ); ); , - if(isselected(NE) % isselected(SW), - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,PTEXCEPTION); //180916 + if(Ptselected(NE) % Ptselected(SW), //190505 + tmp4=apply(allpoints(),#.name); //190505 + tmp4=remove(tmp4,PTEXCEPTION); forall(tmp4,pt, - tmp1=text(pt); + tmp1=pt; tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); if(tmp!="z", tmp=select(VLIST,#_1==tmp1+"3d"); @@ -212,14 +210,14 @@ Setangle(theta,phi):=( //16.12.24 ); ); , - tmp=remove(allpoints(),[NE,SW,TH,FI]); + tmp=apply(allpoints(),#.name); //190505 tmp4=remove(tmp,PTEXCEPTION); //180916 forall(tmp4,pt, - tmp1=text(pt); + tmp1=pt; tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); if(tmp!="z", tmp2=parse(tmp1+"z"); - if(isselected(pt) % isselected(tmp2), + if(Ptselected(pt) % Ptselected(tmp2), Defvar(tmp1+"2d",pt.xy); tmp=parse(tmp1+"z.xy"); //181028[2lines] tmp=Xyzcoord(pt.xy,tmp); @@ -228,14 +226,14 @@ Setangle(theta,phi):=( //16.12.24 ); ); ); - ); + ); forall(Datalist3d(),#, tmp1=replace(#,"3d","2d"); tmp2=Projpara(#,["nodata"]); - tmp=tmp1+"="+textformat(tmp2,5); + tmp=tmp1+"="+textformat(tmp2,5)+";"; //190415 parse(tmp); ); - Ptseg3data(PTEXCEPTION); //180916 + Ptseg3data(PTEXCEPTION); //180916 ); ////%Setangle end//// @@ -267,7 +265,7 @@ Angleselected():=IsAngle(); //180713 ////%Angleselected end//// ////%Isangle start//// -Isangle():=isselected(TH)%isselected(FI); //180517 +Isangle():=Ptselected(TH)%Ptselected(FI); //180517 ////%Isangle end//// ////%Changestyle3d start//// @@ -303,13 +301,13 @@ Dist3d(pt1,pt2):=( if(islist(pt1), p1=pt1; , - if(ispoint(pt1),p1=text(pt1),p1=pt1); + if(ispoint(pt1),p1=pt1.name,p1=pt1); //190505 p1=parse(p1+"3d"); ); if(islist(pt2), p2=pt2; , - if(ispoint(pt2),p2=text(pt2),p2=pt2); + if(ispoint(pt2),p2=pt2.name,p2=pt2); //190505 p2=parse(p2+"3d"); ); sqrt((p2-p1)*(p2-p1)); @@ -417,8 +415,8 @@ Mainsubpt3d(pm,psv):=( //181027 ); ////%Mainsubpt3d end//// -////%ProjCurve start//// -ProjCurve(crv):=( +////%Projcurve start//// +Projcurve(crv):=( //help:Projcurve("sl3d1"); regional(CurveL,Curve,Eps,AnsL,Out,sp,cp,st,,ct,ii,pt, Xz,Yz,tmp,tmp1,tmp2); @@ -469,7 +467,7 @@ ProjCurve(crv):=( ); Out; ); -////%ProjCurve end//// +////%Projcurve end//// ////%Projpara start//// Projpara(ptdata):=Projpara(ptdata,[]); @@ -513,7 +511,7 @@ Projpara(ptdata,optionsorg):=( if(msgflg==1,//180602from println("generate projparadata "+name2); );//180602to - tmp=name2+"="+textformat(ptL,5); + tmp=name2+"="+textformat(ptL,5)+";"; //190415 parse(tmp); tmp=name2+"=Projpara("+name3+")"; GLIST=append(GLIST,tmp); @@ -523,7 +521,7 @@ Projpara(ptdata,optionsorg):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -544,8 +542,8 @@ Projpara(ptdata,optionsorg):=( ); ////%Projpara end//// -////%InvparaptPp start//// -InvparaptPp(pt,pd):=( +////%Invparaptpp start//// +Invparaptpp(pt,pd):=( regional(Eps,fk,nfk,ph,fh,ah,bh,ak,bk,v1,v2, nn,s0,t2,out,tmp,tmp1,tmp2,flg); Eps=10^(-4); @@ -580,7 +578,7 @@ InvparaptPp(pt,pd):=( ); if(flg==0, if(nfk>2, - nn=floor(ph); + nn=re(floor(ph)); //190505 s0=ph-nn; if(ph>Numptcrv(fh)-Eps, out=[Ptend(fk),Numptcrv(fh)]; @@ -601,12 +599,12 @@ InvparaptPp(pt,pd):=( ); out; ); -////%InvparaptPp end//// +////%Invparaptpp end//// ////%Invparapt start//// Invparapt(pt,pd):=( regional(tmp); - tmp=InvparaptPp(pt,pd); + tmp=Invparaptpp(pt,pd); tmp_1; ); ////%Invparapt end//// @@ -625,7 +623,7 @@ Subgraph(name3,opcindy):=( //181029 ); sub2d=append(sub2d,tmp2); ); - tmp=name+"="+Textformat(sub2d,5); + tmp=name+"="+Textformat(sub2d,5)+";"; parse(tmp); GCLIST=append(GCLIST,[name,[0,1],opcindy]); //190127 sub2d; @@ -639,7 +637,7 @@ Spaceline(Arg1,Arg2):=( if(isstring(Arg1), Spaceline(Arg1,Arg2,[]); , - tmp=text(Arg1); + tmp=Arg1.name; //190505 tmp=substring(tmp,1,length(tmp)-1); name="-"+replace(tmp,",",""); Spaceline(name,Arg1,Arg2); @@ -651,7 +649,8 @@ Spaceline(nm,ptlistorg,optionorg):=( //help:Spaceline(options=["Msg=y(n)"]); regional(name2,name3,options,Out,tmp,tmp1,tmp2, opstr,opcindy,Ltype,Noflg,eqL,ptlist, Msg,color); - ptlist=apply(ptlistorg,if(ispoint(#),parse(text(#)+"3d"),#)); // 16.02.10 + ptlist=apply(ptlistorg,if(ispoint(#),parse(#.name+"3d"),#)); // 190505 + ptlist=apply(ptlist,if(isstring(#),parse(#),#)); //190330 if(substring(nm,0,2)=="bz", name2=replace(nm,"bz","bz2d"); name3=replace(nm,"bz","bz3d"); @@ -687,22 +686,22 @@ Spaceline(nm,ptlistorg,optionorg):=( if(Msg==1, println("generate Spaceline "+name3); ); - tmp=name3+"="+ptlist; + tmp=name3+"="+Textformat(ptlist,6)+";"; //190330//190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 parse(tmp); tmp="["; forall(ptlist, //17.07.13from if(isstring(#), tmp=tmp+#+","; , - tmp=tmp+textformat(#,5)+","; + tmp=tmp+Textformat(#,5)+","; ); ); tmp=substring(tmp,0,length(tmp)-1)+"]"; - tmp=name3+"=Spaceline("+tmp+")"; //17.07.13until -// tmp=name3+"=Spaceline("+textformat(ptlist,5)+")"; //17.05.24 + tmp=name3+"=Spaceline("+tmp+")"; //17.07.13to +// tmp=name3+"=Spaceline("+Textformat(ptlist,5)+")"; //17.05.24 GLIST=append(GLIST,tmp); tmp=name2+"=Projpara("+name3+")"; GLIST=append(GLIST,tmp); @@ -712,7 +711,7 @@ Spaceline(nm,ptlistorg,optionorg):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -720,9 +719,9 @@ Spaceline(nm,ptlistorg,optionorg):=( if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name2,Ltype,opcindy]); - if(SUBSCR==1, // 15.02.11 + if(SUBSCR==1, //no ketjs on// 15.02.11 Subgraph(name3,opcindy); - ); + ); //no ketjs off ); ptlist; ); @@ -864,10 +863,10 @@ Spacecurve(nm,funstr,variable,optionorg):=( if(Msg==1, println("generate Spacecurve "+name3); ); - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=name3+"=Spacecurve(Assign('"+funstr+"'),'"+variable+"'"+opstr+")"; GLIST=append(GLIST,tmp); @@ -879,7 +878,7 @@ Spacecurve(nm,funstr,variable,optionorg):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -910,7 +909,7 @@ Partcrv3d(nm,pA,pB,PkLstr,options):=( if(islist(pA), tmp=pA; , - if(ispoint(pA),tmp=text(pA),tmp=pA); + if(ispoint(pA),tmp=pA.name,tmp=pA); //190505 tmp=parse(tmp+"3d"); ); p1=parapt(tmp); @@ -922,7 +921,7 @@ Partcrv3d(nm,pA,pB,PkLstr,options):=( if(islist(pB), tmp=pB; , - if(ispoint(pB),tmp=text(pB),tmp=pB); + if(ispoint(pB),tmp=pB.name,tmp=pB); //190505 tmp=parse(tmp+"3d"); ); p2=parapt(tmp); @@ -1001,10 +1000,10 @@ Joincrvs3d(nm,plotstrL,options):=( ); if(Noflg<3, println("generate Joincurves3d "+name3); - tmp=name3+"="+textformat(PtL,5); + tmp=name3+"="+textformat(PtL,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=text(plotstrL); tmp=substring(tmp,1,length(tmp)-1); @@ -1018,7 +1017,7 @@ Joincrvs3d(nm,plotstrL,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1040,13 +1039,14 @@ Joincrvs3d(nm,plotstrL,options):=( ////%Xyzax3data start//// Xyzax3data(nm,Xrange,Yrange,Zrange):= Xyzax3data(nm,Xrange,Yrange,Zrange,[]); -Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( +Xyzax3data(nm,Xrange,Yrange,Zrange,optionorg):=( //help:Xyzax3data("","x=[-5,5]","y=[-5,5]","z=[-5,5]"); -//help:Xyzax3data(Options2=["a1","Osw"]); - regional(name2,name3,Out,tmp,tmp1,tmp2,eqL,reL,strL, - opstr,opcindy,Ltype,Noflg,Axname,Arrow,Origin,color); +//help:Xyzax3data(Options2=["a1,18","Osw"]); + regional(name2,name3,Out,tmp,tmp1,tmp2,ops,eqL,reL,strL,msgflg, + options,opstr,opcindy,Ltype,Noflg,Axname,Arrow,Origin,color); name2="ax2d"+nm; name3="ax3d"+nm; + options=optionorg; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; @@ -1056,7 +1056,7 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( color=tmp_(length(tmp)-2); opcindy=tmp_(length(tmp)); Axname=1; - Arrow=0; // 16.08.14 + Arrow=[]; // 190505 Origin=""; // 16.08.14 if(length(reL)>0, Axname=reL_1; @@ -1066,9 +1066,8 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( if(tmp1=="A", tmp=substring(#,1,length(#)); if(length(tmp)>0, - Arrow=parse(tmp); - , - Arrow=1; + Arrow=tokenize(tmp,","); //190505 + if(length(Arrow)==1,Arrow=append(Arrow,18)); ); ); if(tmp1=="O", @@ -1084,7 +1083,18 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( ); ); ); - ); // 16.08.14until + ); // 16.08.14to + options=remove(options,reL); + options=remove(options,strL); + msgflg="Y"; //190506from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190506to tmp1=indexof(Xrange,"="); tmp=parse(substring(Xrange,tmp1,length(Xrange))); Px=[tmp_1,0,0]; Qx=[tmp_2,0,0]; @@ -1094,16 +1104,26 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( tmp1=indexof(Zrange,"="); tmp=parse(substring(Zrange,tmp1,length(Zrange))); Pz=[0,0,tmp_1]; Qz=[0,0,tmp_2]; + tmp=["nodisp","Msg=n"]; + Spaceline("-axx3d"+nm,[Px,Qx],tmp); + Spaceline("-axy3d"+nm,[Py,Qy],tmp); + Spaceline("-axz3d"+nm,[Pz,Qz],tmp); Out=[[Px,Qx],[Py,Qy],[Pz,Qz]]; if(Axname>0, Xyzaxparaname(Xrange,Yrange,Zrange,[Axname]); ); if(Noflg<3, - println("generate axes "+name3); - tmp=name3+"="+textformat(Out,5); + if(msgflg=="Y", + tmp="generate axes "+name3; + tmp=tmp+" : axx3d"+nm+",axy3d"+nm+",axz3d"+nm; + println(tmp); + ); + tmp="["+"axx3d"+nm+","+"axy3d"+nm+","; + tmp=tmp+"axz3d"+nm+"]"; + tmp=name3+"="+tmp; parse(tmp); tmp1=Projpara([name3],["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=name3+"=Xyzax3data("+ Dq+Xrange+Dq+","+Dq+Yrange+Dq+","+Dq+Zrange+Dq+")"; @@ -1116,7 +1136,7 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1125,14 +1145,15 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( ); GCLIST=append(GCLIST,[name2,Ltype,opcindy]); if(Noflg<1, // 16.08.14from - if(Arrow>0, + if(length(Arrow)==2, //190505from tmp1=Parapt(Px); tmp2=Parapt(Qx); - Arrowhead(tmp2,tmp2-tmp1,[Arrow]); + ops=[Arrow_1,Arrow_2,"Line=n"]; + Lightarrowdata("ax1",[tmp2,tmp2-tmp1],ops); tmp1=Parapt(Py); tmp2=Parapt(Qy); - Arrowhead(tmp2,tmp2-tmp1,[Arrow]); + Lightarrowdata("ax2",[tmp2,tmp2-tmp1],ops); tmp1=Parapt(Pz); tmp2=Parapt(Qz); - Arrowhead(tmp2,tmp2-tmp1,[Arrow]); - ); + Lightarrowdata("ax3",[tmp2,tmp2-tmp1],ops); + ); //190505to if(length(Origin)>0, Letter([Parapt([0,0,0]),Origin,"O"]); ); @@ -1145,7 +1166,7 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( ); ////%Xyzax3data end//// -////%Xyzax3paraname start//// +////%Xyzaxparaname start//// Xyzaxparaname(Xrange,Yrange,Zrange):= Xyzaxparaname(Xrange,Yrange,Zrange,[]); Xyzaxparaname(Xrange,Yrange,Zrange,options):=( @@ -1189,7 +1210,7 @@ Xyzaxparaname(Xrange,Yrange,Zrange,options):=( Expr(ch,"c",Zname); ); ); -////%Xyzax3paraname end//// +////%Xyzaxparaname end//// ////%Datalist3d start//// Datalist3d():=( @@ -1267,10 +1288,10 @@ Embed(nm,Pd2str,funstr,varstr,options):=( if(Noflg<3, println("generate Embed "+name3); if(length(Out)>0, - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); ); if(!islist(Pd2str), @@ -1289,7 +1310,7 @@ Embed(nm,Pd2str,funstr,varstr,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1433,10 +1454,10 @@ Rotatedata3d(nm,P3data,w1,w2,options):=( if(length(Out)==1,Out=Out_1); if(Noflg<3, println("generate Rotatedata3d "+name3); - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=Textformat(P3data,5); // 17.12.23 tmp=RSform(tmp,1); //180602 @@ -1455,7 +1476,7 @@ Rotatedata3d(nm,P3data,w1,w2,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1531,10 +1552,10 @@ Translatedata3d(nm,P3data,w1,options):=( if(length(Out)==1,Out=Out_1); if(Noflg<3, println("generate Translatedata3d "+name3); - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=textformat(P3data,5); // 17.12.23 tmp=RSform(tmp,1); // 180602 @@ -1552,7 +1573,7 @@ Translatedata3d(nm,P3data,w1,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1627,10 +1648,10 @@ Reflectdata3d(nm,P3data,vecL,options):=( if(length(Out)==1,Out=Out_1); if(Noflg<3, println("generate Reflectdata3d "+name3); - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+Textformat(tmp1,5); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=Textformat(P3data,5); // 17.12.23 tmp=RSform(tmp,1); // 180602 @@ -1649,7 +1670,7 @@ Reflectdata3d(nm,P3data,vecL,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1722,10 +1743,10 @@ Scaledata3d(nm,P3data,ratio,options):=( if(length(Out)==1,Out=Out_1); if(Noflg<3, println("generate Scaledata3d "+name3); - tmp=name3+"="+textformat(Out,5); + tmp=name3+"="+textformat(Out,5)+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+Textformat(tmp1,5); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 parse(tmp); tmp=Textformat(P3data,5); // 17.12.23 tmp=RSform(tmp,1); // 180602 @@ -1745,7 +1766,7 @@ Scaledata3d(nm,P3data,ratio,options):=( if(color!=KCOLOR, //180904 Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(color!=KCOLOR, //180904 Texcom("}");//180722 ); @@ -1771,9 +1792,9 @@ Xyzcoord(X,Y,ps):=( ); ////%Xyzcoord end//// -////%PutonCurve3d start//// -PutonCurve3d(name,pdstr):=( -//help:PutonCurve3d("T","sc3d1"); +////%Putoncurve3d start//// +Putoncurve3d(name,pdstr):=( +//help:Putoncurve3d("T","sc3d1"); regional(pt,pd2str,tmp,tmp1,tmp2); pd2str=replace(pdstr,"3d","2d"); PutonCurve(name,pd2str); @@ -1781,15 +1802,15 @@ PutonCurve3d(name,pdstr):=( tmp=Nearestpt(pt,pd2str); // 15.03.13 tmp1=Paramoncurve(tmp_1,tmp_2,pd2str); tmp="sub"+pd2str; - tmp2=PointonCurve(tmp1,tmp); + tmp2=Pointoncurve(tmp1,tmp); // pt=append(pt,tmp2_2); //181028[2lines] pt=Xyzcoord(pt,tmp2); // 15.03.13 - tmp=name+"z.xy="+textformat(tmp2,5); + tmp=name+"z.xy="+textformat(tmp2,5)+";"; //190415 parse(tmp); // VLIST=select(VLIST,#_1!=name+"3d"); Defvar(name+"3d",pt); ); -////%PutonCurve3d end//// +////%Putoncurve3d end//// ////%Mkpointlist start//// Mkpointlist():=Mkpointlist([]); //16.11.12 @@ -1799,7 +1820,7 @@ Mkpointlist(options):=( //181030 dp=pi/24; mv=NE.x-SW.x; Eps=10^(-4); - pos=[NE.x+1,NE.y]; + pos=[NE.x+1,NE.y+0.1]; worklist=Workprocess(); //181030 plist=select(worklist,length(#_3)!=2); plist=apply(plist,#_1); @@ -1820,9 +1841,9 @@ Mkpointlist(options):=( //181030 inspect(pt,"ptsize",3); inspect(pt,"color",2); inspect(pt,"textsize",TSIZE); - ptz=text(pt)+"z"; + ptz=pt.name+"z"; //190505 tmp=Finddef(pt); - tmp=select(VLIST,#_1==text(pt)+"3d"); + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 if(length(tmp)==0, tmp=parse(ptz); //181108from if(ispoint(tmp), @@ -1843,37 +1864,37 @@ Mkpointlist(options):=( //181030 pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); ); ); //181028to - Defvar(text(pt)+"3d",pt3); - Defvar(text(pt)+"fix",0); + Defvar(pt.name+"3d",pt3); //190505 + Defvar(pt.name+"fix",0); //190505 ); flg=0; if(isstring(ptz),ptz=parse(ptz));//181029from inspect(ptz,"ptsize",3); inspect(ptz,"color",3); inspect(ptz,"textsize",TSIZEZ);//181029to - if(isselected(pt), - if(parse(text(pt)+"fix")!=1, - tmp=select(VLIST,#_1==text(pt)+"3d"); + if(Ptselected(pt), + if(parse(pt.name+"fix")!=1, //190505 + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 tmp1=tmp_1_2; pt3=Mainsubpt3d(pt.xy,ptz.xy); //181029 - Putpoint(text(ptz),Parasubpt(pt3)); + Putpoint(ptz.name,Parasubpt(pt3)); if(Norm(tmp1-pt3)>Eps, - Defvar(text(pt)+"3d",pt3); + Defvar(pt.name+"3d",pt3); //190505 ); flg=1; ); ); - if(isselected(ptz),//181108from - tmp=select(VLIST,#_1==text(pt)+"3d"); + if(Ptselected(ptz),//181108from + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 tmp1=tmp_1_2; tmp=Parasubpt(tmp1); //181108from if(abs(cos(THETA))>Eps, - tmp=text(ptz)+".x="+format(tmp_1,6); + tmp=tptz.name+".x="+format(tmp_1,6)+";"; //190505 parse(tmp); tmp=Parapt([tmp1_1,tmp1_2,ptz.y]); - Putpoint(text(pt),tmp); + Putpoint(pt.name,tmp); //190505 , - tmp=text(ptz)+".y="+format(tmp_2,6); + tmp=ptz.name+".y="+format(tmp_2,6)+";"; //190505 parse(tmp); if(abs(sin(PHI+dp))>abs(cos(PHI+dp)), //181108 tmp=-(ptz.x-mv-tmp1_2*cos(PHI+dp))/sin(PHI+dp); @@ -1882,30 +1903,30 @@ Mkpointlist(options):=( //181030 tmp=(ptz.x-mv+tmp1_1*sin(PHI+dp))/cos(PHI+dp); //181109pm tmp=Parapt([tmp1_1,tmp,tmp1_3]); ); - Putpoint(text(pt),tmp); + Putpoint(pt.name,tmp); //190505 ); pt3=Mainsubpt3d(pt.xy,ptz.xy); - Defvar(text(pt)+"3d",pt3);//181108to + Defvar(pt.name+"3d",pt3); //190505 flg=2; ); - if(isselected(TH) % isselected(FI), //181029 - tmp=select(VLIST,#_1==text(pt)+"3d"); + if(Ptselected(TH) % Ptselected(FI), //181029 + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 if(length(tmp)>0, //17.10.07 tmp1=Parapt(tmp_1_2); - Putpoint(text(pt),tmp1); //181029 + Putpoint(pt.name,tmp1); //190505 tmp2=Parasubpt(tmp_1_2);//181027[2lines] - Putpoint(text(ptz),tmp2); //181029 + Putpoint(ptz.name,tmp2); //190505 flg=3; ); //17.10.07 ); if(flg==0, //181030from pt3=Mainsubpt3d(pt.xy,ptz.xy); - Defvar(text(pt)+"3d",pt3); + Defvar(pt.name+"3d",pt3); //190505 ); //181030to - if(isselected(pt) % isselected(ptz), - drawtext(pos,text(pt3)); + if(Ptselected(pt) % Ptselected(ptz), + drawtext(pos,pt3.xy,size->12); // no ketjs //190505 ); - if(!contains(["p","q"],text(pt)), + if(!contains(["p","q"],pt.name), //190505 ptL=append(ptL,pt); ); ); @@ -1944,14 +1965,16 @@ Mkseg3d(options):=( ); ); ); - println("generate totally "+name); + if(length(parse(name))>0, //190401 + println("generate totally "+name); + ); if(length(segL)>0, // 15.03.06 strg=substring(strg,0,length(strg)-1)+")"; if(Noflg<3, GLIST=append(GLIST,strg); ); tmp1=apply(segL,Dq+#+Dq); //15.03.02 - tmp=name+"="+text(tmp1); + tmp=name+"="+tmp1.name; //190505 parse(tmp); ); segL; @@ -1963,36 +1986,37 @@ Ptseg3data():=Ptseg3data([]); //help:Ptseg3data(); //help:Ptseg3data([A,B]); Ptseg3data(options):=( - regional(pt,pt3,plist,tmp,tmp1,tmp2); - if(isselected(TH) % isselected(FI), - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp=remove(tmp,options); //16.11.12 - tmp=apply(tmp,text(#)); - plist=select(tmp,substring(#,length(#)-1,length(#))!="z"); + regional(pt,ptz,pt3,plist,plistz,tmp,tmp1,tmp2); + tmp=remove(allpoints(),options); + tmp=remove(tmp,[SW,NE,TH,FI]); + plist=select(tmp,indexof(#.name,"z")==0); + plistz=select(tmp,indexof(#.name,"z")>0); + if(Ptselected(TH) % Ptselected(FI), forall(plist,pt, - tmp1=text(pt); - tmp=select(VLIST,#_1==tmp1+"3d"); //17.10.07 + tmp=select(plistz,#.name==pt.name+"z"); + if(length(tmp)>0, + ptz=tmp_1; + , + ptz=[]; + ); + tmp=select(VLIST,#_1==pt.name+"3d"); //190506 if(length(tmp)>0, pt3=tmp_1_2; - tmp=tmp1+".xy="+Textformat(Parapt(pt3),6);//181107 - parse(tmp); - if(SUBSCR==1, - tmp=tmp1+"z"+".xy="+Textformat(Parasubpt(pt3),6);//181107 - parse(tmp); - ); + pt.xy=Parapt(pt3); + ptz.xy=Parasubpt(pt3); , - tmp=Mainsubpt3d(parse(pt+".xy"),parse(tmp1+"z.xy")); //181107[2lines] - Defvar(tmp1+"3d",tmp); + pt3=Mainsubpt3d(pt.xy,ptz.xy); //181107[2lines] + Defvar(pt+"3d",pt3); ); ); , Mkpointlist(options); // 16.12.18 ); - forall(alllines(), + forall(alllines(), // no ketjs on #.color=[0.5,0.5,1]; ); SEG3dlist=Mkseg3d(options); - SEG3dlist; + SEG3dlist; // no ketjs off ); ////%Ptseg3data end//// @@ -2027,11 +2051,11 @@ Putonseg3d(name,pt1,pt2,options):=( inspect(parse(name+"z"),"color",3); inspect(parse(name+"z"),"textsize",TSIZEZ); if(ispoint(pt1), - pn1=text(pt1); - pn2=text(pt2); + pn1=pt1.name; //190505 + pn2=pt2.name; //190505 tmp1=replace("PCz.xy=PAz.xy+|PC-PA|/|PB-PA|*(PBz.xy-PAz.xy)","PC",name); tmp1=replace(tmp1,"PA",pn1); - tmp1=replace(tmp1,"PB",pn2); + tmp1=replace(tmp1,"PB",pn2)+";"; parse(tmp1); , pn1=Textformat(Parapt(pt1),5); //181030from @@ -2042,7 +2066,7 @@ Putonseg3d(name,pt1,pt2,options):=( pn1=Textformat(Parasubpt(pt1),5); //181030from pn2=Textformat(Parasubpt(pt2),5); tmp1=replace(tmp1,"PAs",pn1); - tmp1=replace(tmp1,"PBs",pn2); + tmp1=replace(tmp1,"PBs",pn2)+";"; //190415 parse(tmp1); ); tmp1=parse(name+".xy"); //181028[3lines] @@ -2125,7 +2149,7 @@ Fixpoint3d(ptlist):=( pt2=Parapt(pt3); tmp1=textformat(pt2_1,5); tmp2=textformat(pt2_2,5); - tmp=name+".xy=["+tmp1+","+tmp2+"]"; + tmp=name+".xy=["+tmp1+","+tmp2+"];"; parse(tmp); tmp1=name+".x+NE.x-SW.x"; tmp2=textformat(pt3_3,5); @@ -2151,7 +2175,7 @@ Letter3d(dtlist,options):=( forall(1..nall, jj=#*3-2; tmp=dt_jj; - if(ispoint(tmp),tmp=parse(text(tmp)+"3d")); + if(ispoint(tmp),tmp=parse(tmp.name+"3d")); //190505 dt_jj=Parapt(tmp); ); Letter(dt,options); @@ -2175,7 +2199,7 @@ Expr3d(dtlist,options):=( forall(1..nall, jj=#*3-2; tmp=dt_jj; - if(ispoint(tmp),tmp=parse(text(tmp)+"3d")); + if(ispoint(tmp),tmp=parse(tmp.name+"3d")); //190505 dt_jj=Parapt(tmp); ); Expr(dt,options); @@ -2298,10 +2322,10 @@ Drawpoint3d(pt3,options):=( opcindy=tmp_(length(tmp)); if(Measuredepth(pt3)==0,ptL=[pt3],ptL=pt3); forall(ptL, - tmp="draw("+Textformat(Parapt(#),6)+opcindy+")"; + tmp="draw("+Textformat(Parapt(#),6)+opcindy+");"; parse(tmp); if(SUBSCR==1, - tmp="draw("+Textformat(Parasubpt(#),6)+opcindy+")"; + tmp="draw("+Textformat(Parasubpt(#),6)+opcindy+");"; parse(tmp); ); ); @@ -2316,7 +2340,7 @@ Pointdata3d(nm,pt3,options):=( //181017from if(Measuredepth(pt3)==0,pt3L=[pt3],pt3L=pt3); pt2L=apply(pt3L,Parapt(#)); Pointdata("2d"+nm,pt2L,append(options,"Disp=n")); - tmp="pt3d"+nm+"="+format(pt3L,6); + tmp="pt3d"+nm+"="+format(pt3L,6)+";"; //190415 parse(tmp); ); //181017to ////%Pointdata3d end//// @@ -2341,8 +2365,8 @@ IntersectsgpL(name,sgstr,pLstr):= IntersectsgpL(name,sgstr,pLstr,["ie"]); IntersectsgpL(name,sgstr,pLstr,optionsorg):=( //help:IntersectsgpL("R","P-Q","A-B-C"); -//help:IntersectsgpL("",[p1,p2],[p3,p4,p5]); -//help:IntersectsgpL(options=["draw(put)","ie","Screen=n"+pointoptions]); +//help:IntersectsgpL("pR","pP-pQ","A-B-C"); +//help:IntersectsgpL(options=["draw(put)","ie","Screen=n"+pointoptions,"Color="]); regional(options,eqL, strL,ptflg,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps, flg,scrflg,nvec,tmp,tmp1,tmp2,tmp3,tmp4); options=optionsorg; //181026from @@ -2439,9 +2463,14 @@ IntersectsgpL(name,sgstr,pLstr,optionsorg):=( if(tmp1&tmp2&(scrflg=="Y"), //181031 if(ptflg_1=="P", //181025 Putpoint3d([name,pR],"fix"); -// Fixpoint3d([name,pR]); //190114 , Drawpoint3d(pR,options); + tmp=name; //190401from + if(indexof(name,"3d")==0, + tmp=name+"3d"; + ); + tmp=tmp+"="+Textformat(pR,6)+";"; //190415 + parse(tmp); //190401to ); ); , @@ -2517,10 +2546,10 @@ Bezier3(nm,ptlistorg,ctrlistorg,options):=( //17.10.08 greatly changed ); if(Noflg<3, println("generate Beziercurve "+name3); - tmp=name3+"="+tmp1; + tmp=name3+"="+tmp1+";"; //190415 parse(tmp); tmp1=Projpara(name3,["nodata"]); - tmp=name2+"="+textformat(tmp1,5); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 parse(tmp); ptlist=apply(ptlistorg,#+"3d"); ptlist=RSform(text(ptlist),1); @@ -2539,7 +2568,7 @@ Bezier3(nm,ptlistorg,ctrlistorg,options):=( //17.10.08 greatly changed if(Noflg<2, if(isstring(Ltype), if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); , if(Noflg==1,Ltype=0); @@ -2606,7 +2635,7 @@ Mkbezierptcrv3(ptdata,options):=( //17.10.08 greatly changed Eps=10^(-4); pos=[NE.x+1,NE.y]; Out=[]; - tmp=floor((BezierNumber3-1)/26);// 15.02.23 from + tmp=re(floor((BezierNumber3-1)/26)); //190505 // 15.02.23 from if(tmp==0,tmp="",tmp=text(tmp)); tmp2=mod(BezierNumber3,26); if(tmp2==0,tmp2=26); @@ -2848,7 +2877,7 @@ Mkobjfile(path,fnameorg,objL):=( forall(vtx,tmp1, tmp2=tmp1; if(ispoint(tmp1), - tmp2=parse(text(tmp1)+"3d"); + tmp2=parse(tmp1.name+"3d"); //190505 ); tmp="v "+format(tmp2_1,5)+" "+format(tmp2_2,5)+" "+format(tmp2_3,5); println(SCEOUTPUT,tmp); @@ -2866,14 +2895,20 @@ Mkobjfile(path,fnameorg,objL):=( ); //end of skip +////%VertexEdgeFace start//// //190502 +VertexEdgeFace(nm,vfnL):=Vertexedgeface(nm,vfnL,[]); +VertexEdgeFace(nm,vfnLorg,optionorg):=Vertexedgeface(nm,vfnLorg,optionorg); ////%VertexEdgeFace start//// -VertexEdgeFace(nm,vfnL):=VertexEdgeFace(nm,vfnL,[]); // 16.02.10 -VertexEdgeFace(nm,vfnLorg,optionorg):=( -//help:VertexEdgeFace("1",[vL,fnL]); -//help:VertexEdgeFace("1",["A","B","C"]); -//help:VertexEdgeFace(options=["Pt=fix","Vtx=n(y)","Edg=n(y)"]); - regional(name3,namev,namee,namef,vfnL,options,Noflg,eqL,strL, - vL,eL,enL,face,edge,vtx,vname,fixflg,vtxflg, edgflg,dispflg,tmp,tmp1,tmp2); + +////%Vertexedgeface start//// +Vertexedgeface(nm,vfnL):=Vertexedgeface(nm,vfnL,[]); // 16.02.10 +Vertexedgeface(nm,vfnLorg,optionorg):=( +//help:Vertexedgeface("1",[vL,fnL]); +//help:Vertexedgeface("1",["A","B","C"]); +//help:Vertexedgeface(options=["Vtx=n(y)" ',"Pt=fix") ,"Edg=n(y)","Label=8(/0)"]); + regional(name3,namev,namee,namef,vfnL,options,Noflg,eqL,strL, Lsize,msgflg, + Eps,vL,eL,enL,face,edge,vtx,vname,fixflg,vtxflg, edgflg,dispflg,tmp,tmp1,tmp2); + Eps=10^(-5); name3="phvef"+nm; namev="phv3d"+nm; namee="phe3d"+nm; @@ -2891,9 +2926,11 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( eqL=tmp_5; strL=tmp_7; fixflg=1; - vtxflg=0; //180905 - edgflg=0; + vtxflg="N"; //180905 + edgflg="N"; dispflg=1; //181106 + Lsize="8"; //190331 + msgflg="Y"; //190506 forall(eqL, tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); @@ -2903,23 +2940,22 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( options=remove(options,[#]); ); if(tmp1=="V", //180905from - if((tmp2=="Y")%(tmp2==G), //181107 - vtxflg=1; - ); + vtxflg=tmp2; options=remove(options,[#]); ); //180905to if(tmp1=="E", - if((tmp2=="Y")%(tmp2=="G"),//181107[2lines] - if(vtxflg==1,edgflg=1); - ); + edgflg=tmp2; options=remove(options,[#]); ); - if(tmp1=="D", //181106from - if(substring(tmp2,0,1)=="N", - dispflg=0; vtxflg=0; edgflg=0; - ); + if(tmp1=="L", //190331from + Lsize=tmp_2; + if(Lsize=="0",dispflg=0); //190502 + options=remove(options,[#]); + ); //190331to + if(tmp1=="M", //190506from + msgflg=Toupper(substring(tmp_2,0,1)); options=remove(options,[#]); - ); //181106to + ); //190506to ); forall(strL, if(Toupper(#)=="FREE", @@ -2927,30 +2963,39 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( options=remove(options,[#]); ); ); + tmp=select(allpoints(),indexof(#.name,"z")==0); //190506from + tmp1=remove(tmp,[SW,NE,TH,FI]); vL=[]; forall(1..length(vfnL_1), vtx=vfnL_1_#; // 16.02.10 from if(isstring(vtx),vtx=parse(vtx)); // 16.06.19 if(ispoint(vtx), - tmp=parse(text(vtx)+"3d"); - vname=text(vtx); + tmp=parse(vtx.name+"3d"); //190506 + vname=vtx.name; , - vname="V"+nm+text(#); //181212 - if(vtxflg==1, //180905 + tmp=select(tmp1,|#.xy-Parapt(vtx)|<Eps); + if(length(tmp)>0, + tmp=tmp_1; + vname=tmp.name; + , + vname="V"+nm+text(#); //181212 + ); //190506to + if(vtxflg=="Y", if(fixflg==1, Putpoint3d([vname,vtx],"fix"); , Putpoint3d([vname,vtx]); ); - , //180905from - tmp=vname+"3d="+format(vtx,6); + , + tmp=vname+"3d="+format(vtx,6)+";"; //190415 parse(tmp); Defvar(vname+"3d",parse(vname+"3d")); - tmp=vname+"2d=Parapt("+vname+"3d)"; + tmp=vname+"2d=Parapt("+vname+"3d);"; //190415 parse(tmp); Defvar(vname+"2d",parse(vname+"2d")); if(dispflg==1, //181106 - drawtext(parse(vname+"2d"),vname,size->8); //190128 + tmp="drawtext(parse(vname+"+Dqq("2d")+"),vname,size->"; //190331 + parse(tmp+Lsize+");"); //190331 draw(parse(vname+"2d"),pointsize->3,color->[0,1,0]); //190128 ); ); //180905to @@ -2980,7 +3025,7 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( if(Noflg<3, enL=[]; forall(eL,edge, - if(edgflg==0, + if(edgflg=="N", if(Noflg<2, tmp1=edge_1;//parse(edge_1); tmp2=edge_2;//parse(edge_2); @@ -3007,17 +3052,16 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( ); ); if(Noflg<2, - println("generate "+name3); - println(" generate totally "+namee); - println(" generate vertexes "+namev); - println(" generate faces "+namef); + if(msgflg=="Y", + println("generate "+namev+","+namee+","+namef); + ); ); tmp1=""; forall(enL, tmp1=tmp1+Dq+#+Dq+","; ); tmp1=substring(tmp1,0,length(tmp1)-1); - tmp=namee+"=["+tmp1+"]"; + tmp=namee+"=["+tmp1+"];"; //190415 parse(tmp); tmp=namee+"=list("+tmp1+")"; tmp=replace(tmp,Dq,""); @@ -3025,21 +3069,21 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( tmp1=apply(vL,Dq+#+"3d"+Dq); tmp1=text(tmp1); tmp1=substring(tmp1,1,length(tmp1)-1); - tmp=namev+"=["+tmp1+"]"; + tmp=namev+"=["+tmp1+"];"; //190415 parse(tmp); tmp1=replace(tmp1,Dq,""); tmp=namev+"=list("+tmp1+")"; GLIST=append(GLIST,tmp); - tmp1=text(vfnL_2); + tmp1=Textformat(vfnL_2,6); tmp1=substring(tmp1,1,length(tmp1)-1); - tmp=namef+"=["+tmp1+"]"; + tmp=namef+"=["+tmp1+"];"; parse(tmp); tmp=namef+"=list("+tmp1+")"; GLIST=append(GLIST,tmp); ); [namev,namee,namef]; ); -////%VertexEdgeFace end//// +////%Vertexedgeface end//// ////%Phparadata start//// Phparadata(nm,nmvf):=( @@ -3122,7 +3166,7 @@ Phparadata(nm,nmvf,vfL,options):=( if(Noflg<2, if(isstring(Ltype), if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); , if(Noflg==1,Ltype=0); @@ -3177,7 +3221,7 @@ Nohiddenseg(seg,rng,triang,Eps):=( ss1=Parapt(sg1); ss2=Parapt(sg2); if(|ss2-ss1|>Eps & abs(Crossprod(pB-pA,pC-pA))>Eps, - tmp=IntersectcrvsPp([ss1,ss2],[pA,pB,pC,pA]); + tmp=Intersectcrvspp([ss1,ss2],[pA,pB,pC,pA]); parL=apply(tmp,#_2-1); parL=sort(parL); if(length(parL)==0, @@ -3221,7 +3265,7 @@ Nohiddenseg(seg,rng,triang,Eps):=( sghid=[parL_(#-1),parL_#]; tmp1=ss1+sghid_1*(ss2-ss1); tmp2=ss1+sghid_2*(ss2-ss1); - tmp=IntersectcrvsPp([tmp1,tmp2],[pA,pB,pC,pA]); + tmp=Intersectcrvspp([tmp1,tmp2],[pA,pB,pC,pA]); if(length(tmp)<2, veB=pB-pA; veC=pC-pA; @@ -3281,10 +3325,8 @@ Nohiddenseg(seg,rng,triang,Eps):=( ////%Nohiddenseg end//// ////%Nohiddensegs start//// -Nohiddensegs(seg,range,faceno,vtxL,Eps):=( - regional(rng,face,vtx,out,ra,rb,tmp,tmp1,tmp2); -// Eps=10^(-2); - face=apply(faceno,vtxL_#); // 16.02.10 +Nohiddensegs(seg,range,face,Eps):=( //190331 + regional(rng,vtx,out,ra,rb,tmp,tmp1,tmp2); rng=range; out=rng; forall(2..(length(face)-1),vtx, @@ -3322,128 +3364,106 @@ Nohiddensegs(seg,range,faceno,vtxL,Eps):=( ////%Nohiddensegs end//// ////%Nohiddenbyfaces start//// -Nohiddenbyfaces(nm,facestr):= - Nohiddenbyfaces(nm,Datalist3d(),facestr,[],["do"]); -Nohiddenbyfaces(nm,Arg1,Arg2):=( - regional(segstr,facestr,options); - if(islist(Arg2), - segstr=Datalist3d(); - facestr=Arg1; - options=Arg2; - , - segstr=Arg1; - facestr=Arg2; +Nohiddenbyfaces(nm,faceL):= + Nohiddenbyfaces(nm,Datalist3d(),faceL,[],["do"]); +Nohiddenbyfaces(nm,Arg1,Arg2):=( //190331 + regional(tmp1,tmp2,tmp3,segL,faceL,options); + tmp1=select(Arg2,indexof(#,"=")>0); //190401from + tmp2=select(Arg2,indexof(#,",")>0); + tmp3=select(Arg2,length(#)<=2); + if(length(tmp1)+length(tmp2)+length(tmp3)==0, //190401to + segL=Arg1; + faceL=Arg2; options=[]; - ); - Nohiddenbyfaces(nm,segstr,facestr,options,["do"]); -); -Nohiddenbyfaces(nm,Arg1,Arg2,Arg3):=( - regional(segstr,facestr,options,optionsh); - if(islist(Arg2), - segstr=Datalist3d(); - facestr=Arg1; - options=Arg2; - optionsh=Arg3; - , - segstr=Arg1; - facestr=Arg2; - options=Arg3; - optionsh=["do"]; - ); - Nohiddenbyfaces(nm,segstr,facestr,options,optionsh); // 16.02.21 -); -Nohiddenbyfaces(nm,segstr,Arg1,Arg2,Arg3):=( //180815from - regional(facestr,faceL,vtxL,options,optionsh); - if(isstring(Arg1), - facestr=Arg1; - options=Arg2; - optionsh=Arg3; - if(substring(facestr,0,3)=="phf", - faceL=parse(facestr); - tmp=replace(facestr,"phf","phv"); - tmp=parse(tmp); - vtxL=apply(tmp,replace(#,"3d","")); - - , - faceL=parse(facestr); - ); , + segL=Datalist3d(); faceL=Arg1; - vtxL=Arg2; - options=Arg3; - optionsh=[]; + options=Arg2; ); - Nohiddenbyfaces(nm,segstr,faceL,vtxL,options,optionsh); + Nohiddenbyfaces(nm,segL,faceL,options,["do"]); ); -Nohiddenbyfaces(nm,segstr,faceL,vtxL,optionorg,optionsh):=( -//help:Nohiddenbyfaces("1","phf3d1"); -//help:Nohiddenbyfaces("1","ax3d","phf3d1"); -//help:Nohiddenbyfaces("1","ax3d",phf3d1,phv3d1); -//help:Nohiddenbyfaces(options1=["dr","Eps=10^(-2)"]); -//help:Nohiddenbyfaces(options2=["do"]); - regional(Eps,namen,nameh,options,segL,rng,seg,face, - ctr,tmp,tmp1,tmp2,Ltype,Noflg,eqL,color,opstr,opcindy,frnL,frhL); - Eps=10^(-2); +//Nohiddenbyfaces(nm,segL,faceL,options):=( //190331 +Nohiddenbyfaces(nm,Arg1,Arg2,Arg3):=( //190413from + if(islist(Arg1), + Nohiddenbyfaces(nm,Arg1,Arg2,Arg3,["do"]); + , + Nohiddenbyfaces(nm,Datalist3d(),Arg1,Arg2,Arg3); + ); +); //190413to +Nohiddenbyfaces(nm,segLorg,faceLorg,optionorg,optionsh):=(//190331 +//help:Nohiddenbyfaces("1",["phf3d1"]); +//help:Nohiddenbyfaces("1",["ax3d"],["phf3d1"]); +//help:Nohiddenbyfaces("1",["ax3d","phe3d1"],["phv3d1"]); +//help:Nohiddenbyfaces(options=["dr","Eps=10^(-2)"]); +//help:Nohiddenbyfaces(optionsh=["do"]); + regional(Eps,namen,nameh,options,segL,faceL,rng,vtxL,msgflg, + ctr,tmp,tmp1,tmp2,tmp3,tmp4,Ltype,Noflg,eqL,color,frnL,frhL); namen="frn"+nm; nameh="frh"+nm; - if(isstring(segstr), - tmp=parse(segstr);//180714from - if(islist(tmp), - if(isstring(tmp_1), - segL=tmp; - , - segL=[segstr]; - ); - );//180714to - , - segL=segstr; - ); - tmp2=[]; // 16.02.29 from - forall(segL,seg, - tmp=replace(seg,"3d","2d"); - tmp1=select(GCLIST,#_1==tmp); - tmp1=tmp1_1; - if(tmp1_2_1==0, //190127 - tmp2=append(tmp2,seg); - ); - ); - segL=tmp2; - Changestyle3d(segL,["nodisp"]); // 16.02.29 until - if(islist(segL), - if(isstring(segL_1), - segL=apply(segL,parse(#)); - ); - ); - tmp1=Flattenlist(segL); //180816from - segL=[]; - forall(tmp1,tmp2, - forall(1..(length(tmp2)-1), - segL=append(segL,[tmp2_#,tmp2_(#+1)]); - ); - ); //180816from options=optionorg; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; eqL=tmp_5; color=tmp_(length(tmp)-2); - opstr=tmp_(length(tmp)-1); - opcindy=tmp_(length(tmp)); + Eps=10^(-2); + msgflg="Y"; forall(eqL, //180815from tmp=Strsplit(#,"="); - tmp1=Toupper(substring(tmp_1,0,1)); //181111 - if(substring(tmp1,0,3)=="E", + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="E", Eps=parse(tmp_2); options=remove(options,[#]); ); - );//180815to + if(tmp1=="M", //190506from + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); //190506to + );//180815to + tmp1=segLorg; //190331from + if(!islist(tmp1),tmp1=[tmp1]); + Changestyle3d(tmp1,["nodisp"]); + segL=[]; + forall(tmp1,tmp4, // 190401[seg=>tmp4] + if(isstring(tmp4), + tmp3=parse(tmp4); + if(MeasureDepth(tmp3)==1,tmp3=[tmp3]); //190401 + tmp2=[]; + forall(tmp3, + if(isstring(#),tmp=parse(#),tmp=#); + tmp2=append(tmp2,tmp); + ); + , + tmp2=[#]; + ); + segL=concat(segL,tmp2); + ); + tmp1=faceLorg; + if(!islist(tmp1),tmp1=[tmp1]); + faceL=[]; + forall(tmp1,tmp4, // 190401[face=>tmp4] + if(isstring(tmp4), + tmp2=parse(tmp4); + if(indexof(tmp4,"phf")>0, + tmp=replace(tmp4,"phf","phv"); + vtx=parse(tmp); + vtx=apply(vtx,parse(#)); + tmp2=apply(tmp2,vtx_#); + , + tmp2=[tmp2]; //190401 + ); + , + tmp2=tmp4; + ); + faceL=concat(faceL,tmp2); + ); //190331to ctr=1; frnL=[]; frhL=[]; forall(segL,seg, rng=[0,1]; forall(faceL,face, - rng=Nohiddensegs(seg,rng,face,vtxL,Eps); + rng=Nohiddensegs(seg,rng,face,Eps); ); forall(1..length(rng)/2, tmp=rng_(2*#-1); @@ -3484,13 +3504,14 @@ Nohiddenbyfaces(nm,segstr,faceL,vtxL,optionorg,optionsh):=( ); ); tmp1=apply(frnL,Dq+#+Dq); - tmp="frn3d"+nm+"="+text(tmp1); + tmp="frn3d"+nm+"="+text(tmp1)+";"; //190415 parse(tmp); - println(" generate totally "+"frn3d"+nm); tmp1=apply(frhL,Dq+#+Dq); - tmp="frh3d"+nm+"="+text(tmp1); + tmp="frh3d"+nm+"="+text(tmp1)+";"; //190415 parse(tmp); - println(" generate totally "+"frh3d"+nm); + if(msgflg=="Y", + println("generate "+"frn3d"+nm+",frh3d"+nm+""); //190331 + ); [frnL,frhL]; //181106 ); ////%Nohiddenbyfaces end//// @@ -3550,7 +3571,7 @@ Faceremovaldata(nm,vfdata,crvdata,options):=( if(Noflg<2, if(isstring(Ltype), if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); , if(Noflg==1,Ltype=0); @@ -3769,7 +3790,7 @@ Sf3data(nm,funstr,var1org,var2org,optionorg):=( tmp2=tmp2+Dq+#+Dq+","; ); tmp2=substring(tmp2,0,length(tmp2)-1); - tmp="sf3d"+nm+"=[["+tmp1+"],["+tmp2+"]]"; + tmp="sf3d"+nm+"=[["+tmp1+"],["+tmp2+"]];"; //190415 parse(tmp); ); [sfdtuL,sfdtvL]; @@ -4393,7 +4414,7 @@ IntersectcrvsfR(nm,crvstr,fdorg,bdyeq,optionorg):=( ReadOutData(fname); ); println("generate "+name); - parse(name); + parse(name+";"); //190415 ); ////%IntersectcrvsfR end//// @@ -4498,6 +4519,8 @@ SfcutparadataR(nm,eqstrorg,sf,fdorg,optionorg,optionsh):=( ); ////%SfcutparadataR end//// +////////////// current skeleton 2018.01.04 //////////////// + ////%Skeletonparadata start//// Skeletonparadata(nm):=Skeletondatacindy(nm,[]); Skeletonparadata(nm,options):=Skeletondatacindy(nm,options); @@ -4506,8 +4529,7 @@ Skeletonparadata(nm,pltdata1org,pltdata2org,options):= Skeletondatacindy(nm,pltdata1org,pltdata2org,options); ////%Skeletonparadata end//// -////////////// new skeleton 2018.01.04 not completed and slow//////////////// - +////%Skeletondatacindy start//// Skeletondatacindy(nm):=Skeletondatacindy(nm,[]); Skeletondatacindy(nm,options):=( regional(tmp); @@ -4516,225 +4538,27 @@ Skeletondatacindy(nm,options):=( ); Skeletondatacindy(nm,pltdata1,pltdata2):= Skeletondatacindy(nm,pltdata1,pltdata2,[]); -Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( +Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( //help:Skeletonparadata("1"); //help:Skeletonparadata("1",[pdata1,pdata2],[pdata3]); -//help:Skeletondata(options2=[1(width)]); - regional(Eps,Eps2,name2,name3,Ltype,Noflg,reL,opcindy,color, - Data,Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data, - Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2); - name2="sk2d"+nm; - name3="sk3d"+nm; - pltdata1=[];// 16.01.31 - forall(pltdata1org,tmp1, - tmp=parse(tmp1); - pltdata1=append(pltdata1,tmp); - ); - pltdata2=[];// 16.01.31 - forall(pltdata2org,tmp1, - tmp=parse(tmp1); - pltdata2=append(pltdata2,tmp); - ); - tmp=Divoptions(options); - Ltype=tmp_1; - Noflg=tmp_2; - reL=tmp_6; //16.02.28 - color=tmp_(length(tmp)-2); - opcindy=tmp_(length(tmp)); - Rr=0.15*1000/2.54/MilliIn; - size=1; - Eps2=0.05; - if(length(reL)>0, //16.02.28 - size=reL_1; - Rr=size*Rr; - if(length(reL)>1,Eps2=reL_2); - ); - Eps=10^(-4); - ObjL=Flattenlist(pltdata1); - PltL=Flattenlist(pltdata2); - Data=Makeskeletondata(ObjL,PltL,Rr); - Out=select(Data,length(Projcurve(#))>0); - Out=Flattenlist(Out); - tmp1=apply(Out,textformat(#,5)); - tmp=name3+"="+tmp1; - parse(tmp); - tmp=name2+"=Projcurve("+name3+");"; - parse(tmp); - Changestyle3d(pltdata1org,["nodisp"]); - if(Noflg<3, - println("generate skeleton :"+name3); - tmp1=text(pltdata1org); - tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")"; - tmp2=text(pltdata2org); - tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")"; - tmp=name3+"=Skeletonpara3data("+tmp1+","+tmp2+","; - tmp=tmp+text(size)+")"; - GLIST=append(GLIST,tmp); - tmp=name2+"=Projpara("+name3+")"; - GLIST=append(GLIST,tmp); - ); - if(Noflg<2, - if(isstring(Ltype), - if(color!=KCOLOR, //180904 - Texcom("{");Com2nd("Setcolor("+color+")");//180722 - ); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); - if(color!=KCOLOR, //180904 - Texcom("}");//180722 - ); - , - if(Noflg==1,Ltype=0); - ); - GCLIST=append(GCLIST,[name2,Ltype,opcindy]); - if(SUBSCR==1, - Subgraph(name3,opcindy); - ); - ); - Out; -); - -Makeskeletondata(ObjL,PltL,R0):=( - regional(Allres,res,Eps1,obj,plt,obj2,remov,flg,koc,z1,z2,Rr,str, - mm,nn,kk,ptk,pL,pt,ptL,tmp,tmp1,tmp2,tmp3,tmp3d); - Eps1=10.0^(-2); - Allres=[]; - forall(1..(length(ObjL)),mm, - obj=ObjL_mm; - remov=[]; - obj2=Projcurve(obj); - forall(1..(length(PltL)),nn, - plt=PltL_nn; - tmp=Projcurve(plt); - koc=IntersectcurvesPp(obj2,tmp); - forall(1..(length(koc)),kk, - ptk=koc_kk; - tmp=PointonCurve(ptk_2,obj); - z1=Zparapt(tmp); - tmp=PointonCurve(ptk_3,plt); - z2=Zparapt(tmp); - if(z1<z2-Eps1, - tmp=max([sqrt(1-(ptk_5)^2),0.75]); - Rr=R0/tmp; - tmp2=[]; - flg=0; - tmp=reverse(1..(floor(ptk_2))); - forall(tmp, - if(flg==0, - if(|obj2_#-ptk_1|>Rr, - tmp2=[#]; - flg=1; - ); - ); - ); - if(length(tmp2)==0,tmp2=[1]); - flg=0; - tmp=(ceil(ptk_2))..(length(obj2)); - forall(tmp, - if(flg==0, - if(|obj2_#-ptk_1|>Rr, - tmp2=append(tmp2,#); - flg=1; - ); - ); - ); - if(length(tmp2)==1,tmp2=append(tmp2,length(obj2))); - tmp=obj2_((tmp2_1)..(tmp2_2)); - tmp1=Circledata("",[ptk_1,ptk_1+[Rr,0]],["Num=8","nodata"]); - tmp1=Intersectcurves(tmp,tmp1); - if(length(tmp1)==2, - tmp=sort([tmp1_1_2,tmp1_2_2]); - tmp=[[tmp2_1-1+tmp_1,1],[tmp2_1-1+tmp_2,-1]]; - remov=concat(remov,tmp); - ); - if(length(tmp1)==1, - if(tmp2_1==1, - tmp=[[1,1],[tmp2_1-1+tmp1_1_2,-1]]; - , - tmp=[[tmp2_1-1+tmp1_1_2,1],[length(obj2),-1]]; - ); - remov=concat(remov,tmp); - ); - ); - ); - ); - if(length(remov)==0, - res=obj; - , - res=[]; - remov=sort(remov,[#_1,#_2]); - tmp=select(remov,#_1<1-Eps1); - if(length(tmp)==0, - flg=0; - res=[1]; - , - flg=length(tmp); - res=[]; - ); - forall(remov, - tmp=flg; - if(#_2==-1, - flg=flg-1; - if(flg==0,res=append(res,#_1)); - ); - if(#_2==1, - flg=flg+1; - if(tmp==0,res=append(res,#_1)); - ); - ); - if((flg==0)&(res_(length(res))<length(obj)), - res=append(res,length(obj)); - ); - tmp=res; - res=[]; - forall(1..(length(tmp)/2),nn, - tmp1=tmp_(2*nn-1); - tmp2=tmp_(2*nn); - pL=(ceil(tmp1))..(floor(tmp2)); - if(tmp1<ceil(tmp1)-Eps1,pL=prepend(tmp1,pL)); - if(tmp2>floor(tmp2)+Eps1,pL=append(pL,tmp2)); - ptL=[]; - forall(pL, - pt=PointonCurve(#,obj); - ptL=append(ptL,pt); - ); - res=append(res,ptL); - ); - ); - Allres=append(Allres,res); - ); - Allres; -); - -////////////// current skeleton 2018.01.04 //////////////// - -////%Skeletonparadata start//// -Skeletondatacindy(nm):=Skeletondatacindy(nm,[]); -Skeletondatacindy(nm,options):=( - regional(tmp); - tmp=Datalist3d(); - Skeletondatacindy(nm,tmp,tmp,options); -); -Skeletondatacindy(nm,pltdata1,pltdata2):= - Skeletondatacindy(nm,pltdata1,pltdata2,[]); -Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( -//help:Skeletondatacindy("1"); -//help:Skeletondatacindy("1",[pdata1,pdata2],[pdata3]); -//help:Skeletondatacindy(options=[1(width),"File=y(/m/n)","Not=ptlist","Check=ptlist"]); +//help:Skeletonparadatac(options=[1(width),"File=y(/m/n)","Not=ptlist","Check=ptlist"]); regional(Eps,Eps2,name2,name3,options,Ltype,Noflg,reL,eqL,opcindy, Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data, Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2,color, fileflg,wflg,mkflg,fname,varL,nn,chkL); //181101 name2="sk2d"+nm; name3="sk3d"+nm; - fname=Fhead+"sk"+nm+".txt"; //181102 + fname=Fhead+"sk"+nm+".txt"; // no ketjs //181102 pltdata1=[];// 16.01.31 forall(pltdata1org,tmp1, tmp=parse(tmp1); + tmp=apply(tmp,if(isstring(#),parse(#),#));//190506 pltdata1=append(pltdata1,tmp); ); pltdata2=[];// 16.01.31 forall(pltdata2org,tmp1, tmp=parse(tmp1); + tmp=apply(tmp,if(isstring(#),parse(#),#));//190506 pltdata2=append(pltdata2,tmp); ); options=optionsorg; @@ -4755,10 +4579,10 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( Rr=size*Rr; if(length(reL)>1,Eps2=reL_2); ); - forall(eqL, //181101from + forall(eqL, // no ketjs on //181101from tmp=Strsplit(#,"="); tmp1=Toupper(substring(tmp_1,0,1)); - if(tmp1=="FI", + if(tmp1=="F", //190320 fileflg=Toupper(substring(tmp_2,0,1)); options=remove(options,[#]); ); @@ -4773,13 +4597,13 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( chkL=parse(tmp_2); options=remove(options,[#]); ); - ); + );// no ketjs off Eps=10^(-4); ObjL=Flattenlist(pltdata1); Plt3L=Flattenlist(pltdata2); - tmp=apply(Plt3L,ProjcoordCurve(#)); + tmp=apply(Plt3L,Projcoordcurve(#)); Plt2L=Flattenlist(tmp); - if((fileflg=="Y")%(fileflg=="M")&(mkflg>-1), //181101from, 181103 + if((fileflg=="Y")%(fileflg=="M")&(mkflg>-1), // no ketjs on //181101from, 181103 wflg=1; tmp=flatten(pltdata1org); varL=tmp; @@ -4814,21 +4638,21 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( if(isexists(Dirwork,fname), mkflg=0; ReadOutData(fname); - tmp=name3+"="+Textformat(parse(name3),5); + tmp=name3+"="+Textformat(parse(name3),5)+";"; //190415 parse(tmp); - tmp=name2+"="+Textformat(parse(name2),5); + tmp=name2+"="+Textformat(parse(name2),5)+";"; //190415 parse(tmp); ); ); ); - ); - ); + ); + );// no ketjs off if(mkflg==1, //181102 ///////////// tmp=apply(pltdata1,replace(#,"3d","2d")); Out=[]; forall(1..(length(ObjL)),ii, Obj3=ObjL_ii; - tmp=ProjcoordCurve(Obj3); + tmp=Projcoordcurve(Obj3); Data=Makeskeletondata([tmp],Plt2L,Rr,Eps2); forall(1..(length(Data)),jj, Gd=Data_jj; @@ -4846,7 +4670,7 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( ); Out=select(Out,length(Projcurve(#))>0); // 16.12.19 tmp1=apply(Out,textformat(#,5)); - tmp=name3+"="+tmp1; + tmp=name3+"="+tmp1+";"; //190415 parse(tmp); tmp=name2+"=Projcurve("+tmp1+");"; parse(tmp); @@ -4854,7 +4678,7 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( if(mkflg>-1, Changestyle3d(pltdata1org,["nodisp"]); ); - if((Noflg<3)&(mkflg>-1), //181103 + if((Noflg<3)&(mkflg> -1), //no ketjs on //181103 if(fileflg!="Y", //181102 println("generate skeleton :"+name3); tmp1=text(pltdata1org); @@ -4869,11 +4693,11 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( , GLIST=append(GLIST,"ReadOutData("+Dq+fname+Dq+")");//181102 ); - ); + ); //no ketjs off if((Noflg<2)&(mkflg>-1), //181103 if(isstring(Ltype), if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name2); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); , if(Noflg==1,Ltype=0); @@ -4883,7 +4707,7 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( Subgraph(name3,opcindy); ); ); - if(mkflg>-1, + if(mkflg>-1, // no ketjs on if((fileflg=="Y")&(wflg==1), //181102from tmp1="skeleton"+nm+".txt"; SCEOUTPUT = openfile(tmp1); @@ -4892,11 +4716,11 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( ); closefile(SCEOUTPUT); WriteOutData(fname,[name3,parse(name3),name2,parse(name2)]); - ); //181102to + ); //181102to Out; - ); + );// no ketjs off ); -////%Skeletonparadata end//// +////%Skeletondatacindy end//// ////%Makeskeletondata start//// Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( @@ -4925,7 +4749,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( tmp=Dind_ii; tmp=Dmat_(Dind_ii_1..Dind_ii_2); pt2=Columnlist(tmp,1..2); - koc=IntersectcrvsPp(pt1,pt2,[Eps]); + koc=Intersectcrvspp(pt1,pt2,[Eps]); if(length(koc)>0, breakflg=0; forall(1..(length(koc)),jj, @@ -5014,7 +4838,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( forall(reverse(1..nn),jj, contflg=0; if(breakflg==0, - ptq=PointonCurve(jj,pt1); + ptq=Pointoncurve(jj,pt1); if(Norm(pt-ptq)<Rr, contflg=1; ); @@ -5032,7 +4856,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( hh=t2-t1; forall(1..10, hh=hh*0.5; - ptq=PointonCurve(t1+hh,pt1); + ptq=Pointoncurve(t1+hh,pt1); if(Norm(pt-ptq)<Rr, t2=t2-hh; , @@ -5046,7 +4870,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( forall((nn+1)..te,jj, contflg=0; if(breakflg==0, - ptq=PointonCurve(jj,pt1); + ptq=Pointoncurve(jj,pt1); if(Norm(pt-ptq)<Rr, contflg=1; ); @@ -5064,7 +4888,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( hh=t2-t1; forall(1..10, hh=hh*0.5; - ptq=PointonCurve(t1+hh,pt1); + ptq=Pointoncurve(t1+hh,pt1); if(Norm(pt-ptq)<Rr, t1=t1+hh; , @@ -5079,19 +4903,19 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( Res=[]; forall(1..(length(KukanL)),ii, tmp=KukanL_ii; - t1=tmp_1; nn1=floor(t1); - t2=tmp_2; nn2=floor(t2); - PtL=[]; + t1=tmp_1; nn1=re(floor(t1)); + t2=tmp_2; nn2=re(floor(t2)); + PtL=[]; if(t1-nn1<1-Eps, - tmp=PointonCurve(t1,pt1); + tmp=Pointoncurve(t1,pt1); PtL=[tmp]; ); forall((nn1+1)..nn2,jj, - tmp=PointonCurve(jj,pt1); + tmp=Pointoncurve(jj,pt1); PtL=append(PtL,tmp); ); if(t2-nn2>Eps, - tmp=PointonCurve(t2,pt1); + tmp=Pointoncurve(t2,pt1); PtL=append(PtL,tmp); ); tmp=Listplot("",PtL,["nodata"]); @@ -5099,6 +4923,7 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( ); Allres=concat(Allres,Res); ); + Allres; ); ////%Makeskeletondata end//// @@ -5160,8 +4985,8 @@ Kukannozoku(Jokyo,KukanL):=( ////////////////// end of current skeleton////////////// -////%ProjcoordCurve start//// -ProjcoordCurve(Curve):=( +////%Projcoordcurve start//// +Projcoordcurve(Curve):=( regional(SP,CP,ST,CT,Out,jj,pt,x,y,z,xz,yz,zz); SP=sin(PHI); CP=cos(PHI); ST=sin(THETA); CT=cos(THETA); @@ -5176,7 +5001,7 @@ ProjcoordCurve(Curve):=( ); Out; ); -////%ProjcoordCurve end//// +////%Projcoordcurve end//// ////%Divnohidhid start//// Divnohidhid(nm,dt3dorg,nvec):=Divnohidhid(nm,dt3dorg,nvec,[],["do"]); @@ -5235,11 +5060,11 @@ Divnohidhid(nm,dt3dorg,nvec,optionorg,options2):=( ); tmp1="["; forall(nohid,tmp1=tmp1+textformat(#,5)+","); - tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; + tmp1=substring(tmp1,0,length(tmp1)-1)+"];"; //190415 parse(name+"nh="+tmp1); tmp1="["; forall(hid,tmp1=tmp1+textformat(#,5)+","); - tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; + tmp1=substring(tmp1,0,length(tmp1)-1)+"];"; //190415 parse(name+"h="+tmp1); [nohid,hid]; ); @@ -5282,7 +5107,7 @@ Beziersurf(nm,m,n,pL):=( "y" ]); if(ispoint(pL_1), - p3dL=apply(pL,parse(text(#)+"3d")); + p3dL=apply(pL,#.name+"3d"); //190505 , p3dL=apply(pL,parse(#+"3d")); ); |