diff options
Diffstat (limited to 'Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs')
-rw-r--r-- | Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs | 477 |
1 files changed, 321 insertions, 156 deletions
diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs index c5516db2888..dabd701c181 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs @@ -14,7 +14,7 @@ // along with this program. If not, see <http://www.gnu.org/licenses/> // -println("ketcindylib3d(20181030) loaded"); +println("ketcindylib3d(20181108) loaded"); //help:start(); @@ -86,7 +86,7 @@ Ketinit3d(subflg,position):=( Start3d():=Start3d([]); Start3d(ptexception):=( //help:Start3d(); -//help:Start3d(execptionptlist); +//help:Start3d(["A","B"](exceptionptlist)); regional(xmn,xMx,ymn,yMx,pt,pt3,pt2, xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4); Setfiles(Namecdy); //180608 @@ -161,8 +161,10 @@ Start3d(ptexception):=( SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3, letterc,mboxc,mboxc,mboxc,62,2,letterc]; ThinDense=0.1; //17.07.01to - Ptseg3data(ptexception); //16.08.23 - PTEXCEPTION=ptexception; //180916 + tmp=ptexception; //181106(3lines) + if(!islist(tmp),PTEXCEPTION=[tmp],PTEXCEPTION=tmp); + Ptseg3data(PTEXCEPTION); //16.08.23 + PTEXCEPTION=ptexception; //180916 ); ////%Start3d end//// @@ -246,12 +248,13 @@ Getangle():=getangle(["Disp=y"]); //180613from Getangle(option):=( regional(tmp,tmp1,dispflg,eqL); tmp=divoptions(option); - dispflg="N"; - eqL=tmp_7; + dispflg="Y"; + eqL=tmp_5; //181111 forall(eqL, - if(Toupper(#_1)=="DISP", - dispflg=Toupper(#_1); - dispflg=substring(dispflg,0,1); + tmp=Strsplit(#,"="); //181111(4lines) + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="D", + dispflg=Toupper(substring(tmp_2,0,1)); ); ); tmp=[THETA*180/pi, PHI*180/pi]; @@ -265,8 +268,11 @@ Getangle(option):=( ////%Angleselected start//// Angleselected():=IsAngle(); //180713 //isAngle():=Isangle(); //180517 +////%Angleselected end//// +////%Isangle start//// Isangle():=isselected(TH)%isselected(FI); //180517 ////%Angleselected end//// +////%Isangle end//// ////%Changestyle3d start//// Changestyle3d(nameL,style):=( @@ -482,7 +488,8 @@ Projpara(ptdata,optionsorg):=( msgflg=0; //180602from forall(eqL, tmp=Strsplit(#,"="); - if(Toupper(tmp_1)=="MSG", + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(tmp=="M", tmp=substring(tmp_2,0,1); if(Toupper(tmp)=="Y", msgflg=1); options=remove(options,[#]); @@ -635,10 +642,11 @@ Spaceline(Arg1,Arg2):=( name="-"+replace(tmp,",",""); Spaceline(name,Arg1,Arg2); ); -); // 16.02.22 until +); // 16.02.22 to Spaceline(nm,ptlistorg,optionorg):=( //help:Spaceline("1",[[2,5,1],[4,2,3]]); //help:Spaceline([A,B]); +//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 @@ -749,8 +757,8 @@ Spacecurve(nm,funstr,variable,optionorg):=( tmp=substring(#,0,1); if(Toupper(tmp)=="M", tmp=indexof(#,"="); - tmp1=substring(#,tmp,tmp+2); - if(Toupper(tmp1)=="NO", + tmp1=substring(#,tmp,tmp+1); + if(Toupper(tmp1)=="N", Msg=0; ); ); @@ -1291,6 +1299,7 @@ Embed(nm,Pd2str,funstr,varstr,options):=( Out; ); +////%Rotatepoint3d start//// Rotate3pt(point,w1,w2):=Rotatepoint3d(point,w1,w2,[0,0,0]); Rotate3pt(point,w1,w2,center):=Rotatepoint3d(point,w1,w2,center); Rotatepoint3d(point,w1,w2):=Rotatepoint3d(point,w1,w2,[0,0,0]);//180809 @@ -1378,7 +1387,9 @@ Rotatepoint3d(point,w1,w2,center):=( ); Ans; ); +////%Rotatepoint3d end//// +////%Rotatedata3d start//// Rotatedata3d(nm,P3data,w1,w2):=Rotatedata3d(nm,P3data,w1,w2,[]); Rotatedata3d(nm,P3data,w1,w2,options):=( //help:Rotatedata3d("1",["sl3d1","sc3d2"],[0,0,1],pi/3); @@ -1450,7 +1461,9 @@ Rotatedata3d(nm,P3data,w1,w2,options):=( ); Out; ); +////%Rotatedata3d end//// +////%Translatepoint3d start//// Translate3pt(point,w1):=Translatepoint3d(point,w1); Translatepoint3d(point,w1):=( //help:Translatepoint3d(pt3d,[1,2,3]); @@ -1479,7 +1492,9 @@ Translatepoint3d(point,w1):=( ); Ans; ); +////%Translatepoint3d end//// +////%Translatedata3d start//// Translatedata3d(nm,P3data,w1):=Translatedata3d(nm,P3data,w1,[]); Translatedata3d(nm,P3data,w1,options):=( //help:Translatedata3d("1",["sl3d1"],[1,2,3]); @@ -1543,7 +1558,9 @@ Translatedata3d(nm,P3data,w1,options):=( ); Out; ); +////%Translatedata3d end//// +////%Reflectpoint3d start//// Reflect3pt(point,vecL):=Reflectpoint3d(point,vecL); Reflectpoint3d(point,vecL):=( //help:Reflectpoint3d(pt3d,[v1,v2,v3]); @@ -1569,7 +1586,9 @@ Reflectpoint3d(point,vecL):=( ); ans; ); +////%Reflectpoint3d end//// +////%Reflectdata3d start//// Reflectdata3d(nm,P3data,vecL):=Reflectdata3d(nm,P3data,vecL,[]); Reflectdata3d(nm,P3data,vecL,options):=( //help:Reflectdata3d("1",["sl3d1"],[v1,v2,v3]); @@ -1636,8 +1655,10 @@ Reflectdata3d(nm,P3data,vecL,options):=( ); Out; ); +////%Reflectdata3d end//// // 180806 +////%Scalepoint3d start//// Scale3pt(point,ratio,center):=Scalepoint3d(point,ratio,center); Scalepoint3d(point,ratio):=Scalepoint3d(point,ratio,[0,0,0]);//180809 Scalepoint3d(point,ratio,center):=( @@ -1656,8 +1677,10 @@ Scalepoint3d(point,ratio,center):=( Z2=Cz+ra3*(Z1-Cz); [X2,Y2,Z2]; ); +////%Scalepoint3d end//// // 180808 +////%Scaledata3d start//// Scaledata3d(nm,P3data,ratio):=Scaledata3d(nm,P3data,ratio,[]); Scaledata3d(nm,P3data,ratio,options):=( //help:Scaledata3d("1",["sl3d1"],[v1,v2,v3]); @@ -1728,6 +1751,7 @@ Scaledata3d(nm,P3data,ratio,options):=( ); Out; ); +////%Scaledata3d end//// ////%Xyzcoord start//// Xyzcoord(pm,ps):=Xyzcoord(pm_1,pm_2,ps); //181028from @@ -1753,16 +1777,17 @@ PutonCurve3d(name,pdstr):=( pt=Xyzcoord(pt,tmp2); // 15.03.13 tmp=name+"z.xy="+textformat(tmp2,5); parse(tmp); - VLIST=select(VLIST,#_1!=name+"3d"); + // VLIST=select(VLIST,#_1!=name+"3d"); Defvar(name+"3d",pt); ); ////%Mkpointlist start//// Mkpointlist():=Mkpointlist([]); //16.11.12 Mkpointlist(options):=( //181030 - regional(Eps,pos,worklist,plist,pt,ptstr,pt3,ptz,par, - vlistpre, + regional(Eps,dp,mv,pos,worklist,plist,pt,ptstr,pt3,ptz,par, tmp,tmp1,tmp2,tmp3,tmp4,p1,p2,flg); + dp=pi/24; + mv=NE.x-SW.x; Eps=10^(-4); pos=[NE.x+1,NE.y]; worklist=Workprocess(); //181030 @@ -1779,7 +1804,6 @@ Mkpointlist(options):=( //181030 VLIST=remove(VLIST,tmp); ); ); //181029to -// vlistpre=VLIST; //181015 if(SUBSCR==0,plist=[]); forall(plist,ptstr, pt=parse(ptstr); @@ -1790,23 +1814,27 @@ Mkpointlist(options):=( //181030 tmp=Finddef(pt); tmp=select(VLIST,#_1==text(pt)+"3d"); if(length(tmp)==0, - if(abs(cos(THETA))>Eps,//181028from - tmp1=Mainsubpt3d(pt.xy,0); - tmp=Parasubpt(tmp1); - Putpoint(ptz,tmp,[tmp_1,parse(ptz+".y")]); - pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); + tmp=parse(ptz); //181108from + if(ispoint(tmp), + pt3=Mainsubpt3d(pt.xy,tmp.xy); //181108to , - if(abs(sin(PHI))>abs(cos(PHI)), //181029from - tmp=Parasubpt([-pt.x/sin(PHI),0,pt.y]); + if(abs(cos(THETA))>Eps,//181028from + tmp1=Mainsubpt3d(pt.xy,0); + tmp=Parasubpt(tmp1); + Putpoint(ptz,tmp,[tmp_1,parse(ptz+".y")]); + pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); , - tmp=Parasubpt([0,pt.x/cos(PHI),pt.y]); + if(abs(sin(PHI))>abs(cos(PHI)), //181029from + tmp=Parasubpt([-pt.x/sin(PHI),0,pt.y]); + , + tmp=Parasubpt([0,pt.x/cos(PHI),pt.y]); + ); + Putpoint(ptz,tmp,[parse(ptz+".x"),pt.y]);//181029t + pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); ); - Putpoint(ptz,tmp,[parse(ptz+".x"),pt.y]);//181029to - pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); ); //181028to Defvar(text(pt)+"3d",pt3); Defvar(text(pt)+"fix",0); -// vlistpre=VLIST; //16.08.20 ); flg=0; if(isstring(ptz),ptz=parse(ptz));//181029from @@ -1817,32 +1845,37 @@ Mkpointlist(options):=( //181030 if(parse(text(pt)+"fix")!=1, tmp=select(VLIST,#_1==text(pt)+"3d"); tmp1=tmp_1_2; - tmp2=Mainsubpt3d(pt.xy,ptz.xy); //181029 - if(Norm(tmp1-tmp2)>Eps, - VLIST=select(VLIST,#_1!=text(pt)+"3d"); - Defvar(text(pt)+"3d",tmp2); -// vlistpre=VLIST; //16.08.20 + pt3=Mainsubpt3d(pt.xy,ptz.xy); //181029 + Putpoint(text(ptz),Parasubpt(pt3)); + if(Norm(tmp1-pt3)>Eps, + Defvar(text(pt)+"3d",pt3); ); - Putpoint(text(ptz),Parasubpt(tmp2)); - pt3=tmp2; flg=1; ); ); - if(isselected(ptz), -// tmp=select(vlistpre,#_1==text(pt)+"3d"); //16.08.20 - tmp=select(VLIST,#_1==text(pt)+"3d"); //181030 + if(isselected(ptz),//181108from + tmp=select(VLIST,#_1==text(pt)+"3d"); tmp1=tmp_1_2; - tmp2=Mainsubpt3d(pt.xy,ptz.xy); - if(Norm(tmp1-tmp2)>Eps, + tmp=Parasubpt(tmp1); //181108from if(abs(cos(THETA))>Eps, - tmp2=[tmp1_1,tmp1_2,tmp2_3]; - , - ); //181028to - VLIST=select(VLIST,#_1!=text(pt)+"3d"); - Defvar(text(pt)+"3d",tmp2); - ); - Putpoint(text(ptz),Parasubpt(tmp2)); - pt3=tmp2; + tmp=text(ptz)+".x="+format(tmp_1,6); + parse(tmp); + tmp=Parapt([tmp1_1,tmp1_2,ptz.y]); + Putpoint(text(pt),tmp); + , + tmp=text(ptz)+".y="+format(tmp_2,6); + parse(tmp); + if(abs(sin(PHI+dp))>abs(cos(PHI+dp)), //181108 + tmp=-(ptz.x-mv-tmp1_2*cos(PHI+dp))/sin(PHI+dp); + tmp=Parapt([tmp,tmp1_2,tmp1_3]); + , + tmp=(ptz.x-mv+tmp1_1*sin(PHI+dp))/cos(PHI+dp); //181109pm + tmp=Parapt([tmp1_1,tmp,tmp1_3]); + ); + Putpoint(text(pt),tmp); + ); + pt3=Mainsubpt3d(pt.xy,ptz.xy); + Defvar(text(pt)+"3d",pt3);//181108to flg=2; ); if(isselected(TH) % isselected(FI), //181029 @@ -1857,7 +1890,6 @@ Mkpointlist(options):=( //181030 ); if(flg==0, //181030from pt3=Mainsubpt3d(pt.xy,ptz.xy); - VLIST=select(VLIST,#_1!=text(pt)+"3d"); Defvar(text(pt)+"3d",pt3); ); //181030to if(isselected(pt) % isselected(ptz), @@ -1930,12 +1962,15 @@ Ptseg3data(options):=( tmp=select(VLIST,#_1==tmp1+"3d"); //17.10.07 if(length(tmp)>0, pt3=tmp_1_2; - tmp=tmp1+".xy=Parapt("+pt3+")_[1,2];"; + tmp=tmp1+".xy="+Textformat(Parapt(pt3),6);//181107 parse(tmp); if(SUBSCR==1, - tmp=tmp1+"z"+".x=NE.x-SW.x+"+tmp1+".x"; + tmp=tmp1+"z"+".xy="+Textformat(Parasubpt(pt3),6);//181107 parse(tmp); ); + , + tmp=Mainsubpt3d(parse(pt+".xy"),parse(tmp1+"z.xy")); //181107(2lines) + Defvar(tmp1+"3d",tmp); ); ); , @@ -2054,9 +2089,7 @@ Putpoint3d(Arg1,Arg2,Arg3):=( inspect(parse(tmp1),"textsize",TSIZE); if(SUBSCR==1, tmp2=tmp1+"z"; - tmp=[pt.x+NE.x-SW.x,pt3_3]; - tmp1="[NE.x-SW.x+"+tmp1+".x,"+tmp2+"y]"; - Putpoint(tmp2,tmp,parse(tmp1)); + Putpoint(tmp2,Parasubpt(pt3)); inspect(parse(tmp2),"ptsize",3); inspect(parse(tmp2),"color",3); inspect(parse(tmp2),"textsize",TSIZEZ); @@ -2122,7 +2155,7 @@ Putperp(name,ptstr,pLstr,option):=( N3d=pP+tmp; Defvar("tmp3d",N3d); // temporary sgstr=ptstr+"-tmp"; - tmp=IntersectsgpL(name,sgstr,pLstr,"none"); + tmp=IntersectsgpL(name,sgstr,pLstr,["Screen=n"]); //181031 VLIST=select(VLIST,#_1!="tmp3d"); out=tmp_1; Defvar(name+"3d",tmp_1); @@ -2161,7 +2194,11 @@ Perpplane(name,ptstr,nstr,option):=( th,ph,pA,pB,tmp,tmp1,tmp2); Eps=10^(-4); if(isstring(nstr),nvec=parse(nstr+"3d"),nvec=nstr); - pP=parse(ptstr+"3d"); + if(indexof(ptstr,"3d")==0, //181107from + pP=parse(ptstr+"3d"); + , + pP=parse(ptstr); + ); //181107to v3=nvec/|nvec|; th=THETA; ph=PHI; tmp=findangle(v3); @@ -2169,16 +2206,19 @@ Perpplane(name,ptstr,nstr,option):=( v1=Cancoordpara([1,0,0]); v2=Cancoordpara([0,1,0]); THETA=th; PHI=ph; + tmp=indexof(name,"-"); + tmp1=substring(name,0,tmp-1); + tmp2=substring(name,tmp,length(name)); tmp=indexof(pLstr,"-"); pA=pP+v1; pB=pP+v2; if(islist(option),tmp=option_1,tmp=option); tmp=Toupper(substring(tmp,0,1)); // 16.06.19 if(tmp=="P", - tmp=indexof(name,"-"); - tmp1=substring(name,0,tmp-1); - tmp2=substring(name,tmp,length(name)); Putpoint3d([tmp1,pA,tmp2,pB],["fix"]); + , + Defvar(tmp1+"3d",pA); //181107(2lines) + Defvar(tmp2+"3d",pB); ); if(tmp=="D", Drawpoint3d(pA); @@ -2238,13 +2278,13 @@ Putaxes3d(size):=( ////%IntersectsgpL start//// IntersectsgpL(name,sgstr,pLstr):= - IntersectsgpL(name,sgstr,pLstr,["Draw=ie"]); + 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"+pointoptions]); - regional(options,strL,ptflg,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps, - flg,nvec,tmp,tmp1,tmp2,tmp3,tmp4); +//help:IntersectsgpL(options=["draw(put)","ie","Screen=n"+pointoptions]); + 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 tmp1=""; if(isstring(options), @@ -2253,6 +2293,7 @@ IntersectsgpL(name,sgstr,pLstr,optionsorg):=( ); options=remove(options,["draw","Draw"]); tmp=Divoptions(options); + eqL=tmp_5; strL=tmp_7; if(length(tmp1)>0, strL=append(strL,tmp1); @@ -2271,7 +2312,16 @@ IntersectsgpL(name,sgstr,pLstr,optionsorg):=( ); ); ); - options=remove(options,strL); + options=remove(options,strL); + scrflg="Y"; //181031from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(tmp1=="S", + scrflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //181031to tmp=select(options,substring(#,0,1)=="C"); if(length(tmp)==0,options=append(options,"Color=green"));//181026to Eps=10^(-4); @@ -2326,12 +2376,12 @@ IntersectsgpL(name,sgstr,pLstr,optionsorg):=( tmp=ptflg_2; tmp1=(tmp1)%(substring(tmp,0,1)=="e"); //181025from tmp2=(tmp2)%(substring(tmp,1,2)=="e"); - if(tmp1&tmp2, + if(tmp1&tmp2&(scrflg=="Y"), //181031 if(ptflg_1=="P", //181025 Putpoint3d([name,pR]); Fixpoint3d([name,pR]); , - Pointdata3d(name,pR,options); + Drawpoint3d(pR,options); ); // println(" pt"+name+" data:"+format(out,5)); , @@ -2506,7 +2556,7 @@ Mkbezierptcrv3(ptdata,options):=( //17.10.08 greatly changed Out; ); -/////////////////////////////////////////// +//////////old version /////////////////////////////// Readobj(filename):=Readobj(filename,[]); Readobj(filename,options):=( @@ -2539,8 +2589,8 @@ Readobj(filename,options):=( [vL,fnL]; ); -///////////////////////////////////////// - +//////////new version /////////////////////////////// +////%Readobj start//// Readobj(filename,options):=( //help:Readobj("file.obj",["size=-3"]); regional(eqL,size,vL,fnL,dtL,numer,flg,flg2, @@ -2644,6 +2694,7 @@ Readobj(filename,options):=( ); [vL,fnL]; ); +////%Readobj end//// Concatobj(objL):=Concatobj(objL,[]); Concatobj(objL,options):=( @@ -2750,15 +2801,14 @@ Mkobjfile(path,fnameorg,objL):=( ); -VertexandEdge(nm,vfnL):=VertexEdgeFace(nm,vfnL,[]); -VertexandEdge(nm,vfnL,options):=VertexEdgeFace(nm,vfnL,options); +////%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=geo","Edg=geo"]); -VertexEdgeFace(nm,vfnLorg,optionorg):=( +//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,tmp,tmp1,tmp2); + vL,eL,enL,face,edge,vtx,vname,fixflg,vtxflg, edgflg,dispflg,tmp,tmp1,tmp2); name3="phvef"+nm; namev="phv3d"+nm; namee="phe3d"+nm; @@ -2776,24 +2826,35 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( eqL=tmp_5; strL=tmp_7; fixflg=1; - vtxflg=1; //180905 - edgflg=1; + vtxflg=0; //180905 + edgflg=0; + dispflg=1; //181106 forall(eqL, - tmp1=Toupper(substring(#,0,1)); - tmp=indexof(#,"="); - tmp2=Toupper(substring(#,tmp,length(#))); + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=Toupper(substring(tmp_2,0,1)); if(tmp1=="P", - if(tmp2=="FREE", fixflg=0); + if(tmp2=="F", fixflg=0); options=remove(options,[#]); ); if(tmp1=="V", //180905from - if(substring(tmp2,0,1)=="N", vtxflg=0); + if((tmp2=="Y")%(tmp2==G), //181107 + vtxflg=1; + ); options=remove(options,[#]); ); //180905to if(tmp1=="E", - if(substring(tmp2,0,1)=="N", edgflg=0); + if((tmp2=="Y")%(tmp2=="G"),//181107(2lines) + if(vtxflg==1,edgflg=1); + ); options=remove(options,[#]); ); + if(tmp1=="D", //181106from + if(substring(tmp2,0,1)=="N", + dispflg=0; vtxflg=0; edgflg=0; + ); + options=remove(options,[#]); + ); //181106to ); forall(strL, if(Toupper(#)=="FREE", @@ -2808,14 +2869,13 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( if(ispoint(vtx), tmp=parse(text(vtx)+"3d"); vname=text(vtx); -// tmp=parse(text(vtx)+"3d"); -// tmp="v"+text(#)+"3d="+textformat(tmp,5); -// parse(tmp); , - vname="v"+text(#); + vname="V"+text(#); //181107 if(vtxflg==1, //180905 if(fixflg==1, - Putpoint3d([vname,vtx],"fix"); + Putpoint3d([vname,vtx],"fix"); + , + Putpoint3d([vname,vtx]); ); , //180905from tmp=vname+"3d="+format(vtx,6); @@ -2824,7 +2884,9 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( tmp=vname+"2d=Parapt("+vname+"3d)"; parse(tmp); Defvar(vname+"2d",parse(vname+"2d")); - drawtext(parse(vname+"2d"),vname); + if(dispflg==1, //181106 + drawtext(parse(vname+"2d"),vname); + ); ); //180905to ); vL=append(vL,vname); // 16.02.10 until @@ -2841,8 +2903,6 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( if(tmp2<tmp1, tmp=tmp2; tmp2=tmp1; tmp1=tmp; ); -// tmp1="v"+text(tmp1)+"3d"; -// tmp2="v"+text(tmp2)+"3d"; tmp1=vL_tmp1+"3d"; tmp2=vL_tmp2+"3d"; tmp=select(eL,#==[tmp1,tmp2] % #==[tmp2,tmp1]); @@ -2875,6 +2935,7 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( tmp1=replace(edge_1,"3d",""); tmp2=replace(edge_2,"3d",""); tmp=tmp1+tmp2; + tmp=replace(tmp,"V","v"); create([tmp],"Segment",[parse(tmp1),parse(tmp2)]); enL=append(enL,tmp+"3d");//16.02.29 ); @@ -2912,7 +2973,9 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( ); [namev,namee,namef]; ); +////%VertexEdgeFace end//// +////%Phparadata start//// Phparadata(nm,nmvf):=( regional(tmp1,tmp2); tmp1=parse("phv3d"+nmvf); @@ -3016,7 +3079,9 @@ Phparadata(nm,nmvf,vfL,options):=( ); ); ); +////%Phparadata end//// +////%Nohiddenseg start//// Nohiddenseg(seg,rng,triang,Eps):=( // help:Nohiddenseg("1",seg1,[0,1],["v1","v2","v3"]); regional(pA3,pB3,pC3,pA,pB,pC,sg1,sg2,ss1,ss2,parL,flgL,flg1,flg2, @@ -3057,15 +3122,13 @@ Nohiddenseg(seg,rng,triang,Eps):=( ); tmp1=Crossprod(pB3-pA3,pC3-pA3); if(abs(Dotprod(tmp1,sg2-sg1))>Eps, - tmp=IntersectsgpL("",[sg1,sg2],[pA3,pB3,pC3],["nodisp"]);//180815 - if(tmp_2>-Eps & tmp_2<1+Eps, - if(tmp_3>-Eps & tmp_4>-Eps & tmp_3+tmp_4<1+Eps, - tmp1=select(parL,abs(tmp_2-#)<Eps); - if(length(tmp1)==0, - parL=sort(append(parL,tmp_2)); - ); + tmp=IntersectsgpL("",[sg1,sg2],[pA3,pB3,pC3],["Screen=n"]);//181031from + if(tmp_2&tmp_3, + tmp1=select(parL,abs(tmp_4-#)<Eps); + if(length(tmp1)==0, + parL=sort(append(parL,tmp_4)); ); - ); + );//181031to ); flgL=[]; forall(parL, @@ -3073,7 +3136,7 @@ Nohiddenseg(seg,rng,triang,Eps):=( tmp=Projcoordpara(tmp1); tmp_3=tmp_3+1; tmp2=Cancoordpara(tmp); - tmp=IntersectsgpL("",[tmp1,tmp2],[pA3,pB3,pC3],["nodisp"]);//180815 + tmp=IntersectsgpL("",[tmp1,tmp2],[pA3,pB3,pC3],["Screen=n"]);//181031 tmp1=Projcoordpara(tmp1); tmp2=Projcoordpara(tmp_1); flg1=0; @@ -3149,7 +3212,9 @@ Nohiddenseg(seg,rng,triang,Eps):=( sgnoh=apply(sgnoh,rng_1+#*(rng_2-rng_1)); sgnoh; ); +////%Nohiddenseg end//// +////%Nohiddensegs start//// Nohiddensegs(seg,range,faceno,vtxL,Eps):=( regional(rng,face,vtx,out,ra,rb,tmp,tmp1,tmp2); // Eps=10^(-2); @@ -3188,7 +3253,9 @@ Nohiddensegs(seg,range,faceno,vtxL,Eps):=( ); rng; ); +////%Nohiddensegs end//// +////%Nohiddenbyfaces start//// Nohiddenbyfaces(nm,facestr):= Nohiddenbyfaces(nm,Datalist3d(),facestr,[],["do"]); Nohiddenbyfaces(nm,Arg1,Arg2):=( @@ -3298,8 +3365,8 @@ Nohiddenbyfaces(nm,segstr,faceL,vtxL,optionorg,optionsh):=( opcindy=tmp_(length(tmp)); forall(eqL, //180815from tmp=Strsplit(#,"="); - tmp1=Toupper(tmp_1); - if(substring(tmp1,0,3)=="EPS", + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(substring(tmp1,0,3)=="E", Eps=parse(tmp_2); options=remove(options,[#]); ); @@ -3358,8 +3425,11 @@ Nohiddenbyfaces(nm,segstr,faceL,vtxL,optionorg,optionsh):=( tmp="frh3d"+nm+"="+text(tmp1); parse(tmp); println(" generate totally "+"frh3d"+nm); + [frnL,frhL]; //181106 ); +////%Nohiddenbyfaces end//// +////%Faceremovaldata start//// Faceremovaldata(nm,vfdata,crvdata):=Faceremovaldata(nm,vfdata,crvdata,[]); Faceremovaldata(nm,vfdata,crvdata,options):=( regional(name2,name3,nameh2,nameh3,Ltype,Noflg,eqL,Hidden, @@ -3444,6 +3514,7 @@ Faceremovaldata(nm,vfdata,crvdata,options):=( ); ); ); +////%Faceremovaldata end//// Fullformfunc(FdL):=( regional(Out,nn,ii,Jrg,flg,Urg,Vrg,kk,Uname, @@ -3638,8 +3709,8 @@ SfbdparadataR(nm,fd):= SfbdparadataR(nm,fd,options):= SfbdparadataR(nm,fd,options,["nodisp"]); SfbdparadataR(nm,fdorg,optionorg,optionsh):=( -//help:SfbdparadataR("1",Fd); -//help:SfbdparadataR(options2=["Wait=60",division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +// help:SfbdparadataR("1",Fd); +// help:SfbdparadataR(options2=["Wait=60",division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(fd,options,name3,name3h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg); tmp=ConvertFdtoC(fdorg);//180430(2lines) @@ -3743,8 +3814,8 @@ CrvsfparadataR(nm,crv,sf,fd):= CrvsfparadataR(nm,crv,sf,fd,options):= CrvsfparadataR(nm,crv,sf,fd,options,["nodisp"]); CrvsfparadataR(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=( -//help:CrvsfparadataR("1","ax3d","sfbd3d1",fd); -//help:CrvsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +// help:CrvsfparadataR("1","ax3d","sfbd3d1",fd); +// help:CrvsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(gd,out,fd,options,name3,name3h, eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); tmp=replace(crvstr,"3d","2d"); @@ -3847,8 +3918,8 @@ Crv3onsfparadataR(nm,crv3d,sf,fd):= Crv3onsfparadataR(nm,crv3d,sf,fd,options):= Crv3onsfparadataR(nm,crv3d,sf,fd,options,["nodisp"]); Crv3onsfparadataR(nm,crv3dstr,sfstr,fdorg,optionorg,optionsh):=( -//help:Crv3onsfparadataR("1","sc1","sfbd3d1",fd); -//help:Crv3onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +// help:Crv3onsfparadataR("1","sc1","sfbd3d1",fd); +// help:Crv3onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(gd,out,fd,options,name3,name3h, eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); tmp1=replace(crv3dstr,"3d","2d"); @@ -3949,8 +4020,8 @@ Crv2onsfparadataR(nm,crv2d,sf,fd):= Crv2onsfparadataR(nm,crv2d,sf,fd,options):= Crv2onsfparadataR(nm,crv2d,sf,fd,options,["nodisp"]); Crv2onsfparadataR(nm,crv2dstr,sfstr,fdorg,optionorg,optionsh):=( -//help:Crv2onsfparadataR("1","pa1","sfbd3d1",fd); -//help:Crv2onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +//help :Crv2onsfparadataR("1","pa1","sfbd3d1",fd); +//help :Crv2onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(gd,out,fd,options,name3,name3h, eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); Changestyle(crv2dstr,["nodisp"]); @@ -4052,8 +4123,8 @@ WireparadataR(nm,sf,wr1,wr2,fd):= WireparadataR(nm,sf,fd,wr1,wr2,options):= WireparadataR(nm,sf,fd,wr1,wr2,options,["nodisp"]); WireparadataR(nm,sfstr,fdorg,wr1,wr2,optionorg,optionsh):=( -//help:WireparadataR("1","sfbd3d1",fd,5,5); -//help:WireparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +// help:WireparadataR("1","sfbd3d1",fd,5,5); +// help:WireparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(fd,options,name3,name3h,outreg, eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,flg,wflg); name3="wire3d"+nm; @@ -4159,9 +4230,9 @@ IntersectcrvsfR(nm,crv,fd,Arg):=( ); ); IntersectcrvsfR(nm,crvstr,fdorg,bdyeq,optionorg):=( -//help:IntersectcrvsfR("1",curve,fd); -//help:IntersectcrvsfR("1",curve,fd,curveequation); -//help:IntersectcrvsfR(options=[Np([50,50]),Eps(0.01)]); +// help:IntersectcrvsfR("1",curve,fd); +// help:IntersectcrvsfR("1",curve,fd,curveequation); +// help:IntersectcrvsfR(options=[Np([50,50]),Eps(0.01)]); regional(name,crv,fd,options,reL,fname,crvfname,argR, waiting,tmp,tmp1,tmp2,flg,wflg,pts); name="crvsf"+nm; name="crvsf"+nm; @@ -4245,8 +4316,8 @@ SfcutparadataR(nm,eqstr,sf,fd):= SfcutparadataR(nm,eqstr,sf,fd,options):= SfcutparadataR(nm,eqstr,sf,fd,options,["nodisp"]); SfcutparadataR(nm,eqstrorg,sf,fdorg,optionorg,optionsh):=( -//help:SfcutparadataR("1","x+y+z=1","sfbd3d1",fd); -//help:SfcutparadataR(options2=[Division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +// help:SfcutparadataR("1","x+y+z=1","sfbd3d1",fd); +// help:SfcutparadataR(options2=[Division(c(50,50)),Eps1(0.01), Eps2(0.05)]); regional(gd,out,fd,options,name3,name3h,eqstr, eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); tmp=Strsplit(eqstrorg,"="); @@ -4546,6 +4617,7 @@ Makeskeletondata(ObjL,PltL,R0):=( ////////////// current skeleton 2018.01.04 //////////////// +////%Skeletonparadata start//// Skeletondatacindy(nm):=Skeletondatacindy(nm,[]); Skeletondatacindy(nm,options):=( regional(tmp); @@ -4554,15 +4626,17 @@ Skeletondatacindy(nm,options):=( ); Skeletondatacindy(nm,pltdata1,pltdata2):= Skeletondatacindy(nm,pltdata1,pltdata2,[]); -Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( +Skeletondatacindy(nm,pltdata1org,pltdata2org,optionsorg):=( //help:Skeletondatacindy("1"); //help:Skeletondatacindy("1",[pdata1,pdata2],[pdata3]); -//help:Skeletondatacindy(options2=[1(width)]); - regional(Eps,Eps2,name2,name3,Ltype,Noflg,reL,opcindy, +//help:Skeletondatacindy(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); + 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 pltdata1=[];// 16.01.31 forall(pltdata1org,tmp1, tmp=parse(tmp1); @@ -4573,65 +4647,140 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( tmp=parse(tmp1); pltdata2=append(pltdata2,tmp); ); + options=optionsorg; tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; + eqL=tmp_5; reL=tmp_6; //16.02.28 color=tmp_(length(tmp)-2); opcindy=tmp_(length(tmp)); Rr=0.075*1000/2.54/MilliIn; size=1; Eps2=0.05; + fileflg="N"; + mkflg=1; if(length(reL)>0, //16.02.28 size=reL_1; Rr=size*Rr; if(length(reL)>1,Eps2=reL_2); ); + forall(eqL, //181101from + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="FI", + fileflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + if(tmp1=="N", + tmp=parse(tmp_2); + if(Anyselected(tmp), + mkflg=-1; + ); + options=remove(options,[#]); + ); + if(tmp1=="C", + chkL=parse(tmp_2); + options=remove(options,[#]); + ); + ); Eps=10^(-4); ObjL=Flattenlist(pltdata1); Plt3L=Flattenlist(pltdata2); tmp=apply(Plt3L,ProjcoordCurve(#)); Plt2L=Flattenlist(tmp); -/////////// tmp=apply(pltdata1,replace(#,"3d","2d")); - Out=[]; - forall(1..(length(ObjL)),ii, - Obj3=ObjL_ii; - tmp=ProjcoordCurve(Obj3); - Data=Makeskeletondata([tmp],Plt2L,Rr,Eps2); - forall(1..(length(Data)),jj, - Gd=Data_jj; - if((length(Gd)>1) - & (Norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps), - PtD=[]; - forall(1..(length(Gd)), - tmp=Gd_#; - tmp1=Invparapt(tmp,Obj3); - PtD=append(PtD,tmp1); + if((fileflg=="Y")%(fileflg=="M")&(mkflg>-1), //181101from, 181103 + wflg=1; + tmp=flatten(pltdata1org); + varL=tmp; + tmp1=flatten(pltdata2org); + forall(tmp1, + if(!contains(varL,#), + varL=append(varL,#); + ); + ); + varL=sort(varL); + forall(1..(length(varL)),nn, + tmp1=varL_nn; + tmp=select(GLIST,substring(#,0,length(tmp1))==tmp1); + varL_nn=tmp_1; + ); + tmp=["THETA="+format(THETA,5),"PHI="+format(PHI,5)]; + varL=concat(tmp,varL); + forall(chkL, + tmp=#+"="+Textformat(parse(#+".xy"),5); + varL=append(varL,tmp); + ); + if(fileflg=="M", + fileflg="Y"; + , + tmp1="skeleton"+nm+".txt"; + if(isexists(Dirwork,tmp1), + tmp2=load(tmp1); + tmp2=tokenize(tmp2,"//"); + tmp2=tmp2_(1..(length(tmp2)-1)); + if(tmp2==varL, + wflg=0; + if(isexists(Dirwork,fname), + mkflg=0; + ReadOutData(fname); + tmp=name3+"="+Textformat(parse(name3),5); + parse(tmp); + tmp=name2+"="+Textformat(parse(name2),5); + parse(tmp); + ); ); - Out=append(Out,PtD); ); ); ); - Out=select(Out,length(Projcurve(#))>0); // 16.12.19 - tmp1=apply(Out,textformat(#,5)); - tmp=name3+"="+tmp1; - parse(tmp); - tmp=name2+"=Projcurve("+tmp1+");"; - 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(mkflg==1, //181102 +///////////// tmp=apply(pltdata1,replace(#,"3d","2d")); + Out=[]; + forall(1..(length(ObjL)),ii, + Obj3=ObjL_ii; + tmp=ProjcoordCurve(Obj3); + Data=Makeskeletondata([tmp],Plt2L,Rr,Eps2); + forall(1..(length(Data)),jj, + Gd=Data_jj; + if((length(Gd)>1) + & (Norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps), + PtD=[]; + forall(1..(length(Gd)), + tmp=Gd_#; + tmp1=Invparapt(tmp,Obj3); + PtD=append(PtD,tmp1); + ); + Out=append(Out,PtD); + ); + ); + ); + Out=select(Out,length(Projcurve(#))>0); // 16.12.19 + tmp1=apply(Out,textformat(#,5)); + tmp=name3+"="+tmp1; + parse(tmp); + tmp=name2+"=Projcurve("+tmp1+");"; + parse(tmp); + ); + if(mkflg>-1, + Changestyle3d(pltdata1org,["nodisp"]); + ); + if((Noflg<3)&(mkflg>-1), //181103 + if(fileflg!="Y", //181102 + 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); + , + GLIST=append(GLIST,"ReadOutData("+Dq+fname+Dq+")");//181102 + ); ); - if(Noflg<2, + 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); @@ -4644,9 +4793,22 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( Subgraph(name3,opcindy); ); ); - Out; + if(mkflg>-1, + if((fileflg=="Y")&(wflg==1), //181102from + tmp1="skeleton"+nm+".txt"; + SCEOUTPUT = openfile(tmp1); + forall(varL, + println(SCEOUTPUT,#+"//"); + ); + closefile(SCEOUTPUT); + WriteOutData(fname,[name3,parse(name3),name2,parse(name2)]); + ); //181102to + Out; + ); ); +////%Skeletonparadata end//// +////%Makeskeletondata start//// Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( regional(Allres,Eps,Dmat,Dind,ii,Dt,nn1,nn2,Nind,Nobj, Plt2,PhL,ClipL,ns,pt1,pt2,pt,pta,ptb,za,zb,z1,z2,t1,t2,te, @@ -4849,7 +5011,9 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( ); Allres; ); +////%Makeskeletondata end//// +////%Kukannozoku start//// Kukannozoku(Jokyo,KukanL):=( regional(Res,Eps,nn,ii,t1,t2,Ku,Flg,contflg,tmp,tmp1); Eps=10^(-6); @@ -4902,6 +5066,7 @@ Kukannozoku(Jokyo,KukanL):=( ); Res; ); +////%Kukannozoku end//// ////////////////// end of current skeleton////////////// |