summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs')
-rw-r--r--Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs477
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//////////////