designix-uis 0.5.22 → 0.5.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/designix-uis.js +4 -4
  2. package/dist/public/_app/immutable/chunks/{entry.4cYjZEkR.js → entry.BDn2ajue.js} +1 -1
  3. package/dist/public/_app/immutable/chunks/{index.D-gTLL5b.js → index.5cS1cJhH.js} +60 -58
  4. package/dist/public/_app/immutable/chunks/{makeList.OjG4sjHO.js → makeList.ROrncb2q.js} +40 -40
  5. package/dist/public/_app/immutable/chunks/paths.Bw5WDkWL.js +1 -0
  6. package/dist/public/_app/immutable/chunks/{stores.DiRE9raP.js → stores.BHdW_sCo.js} +1 -1
  7. package/dist/public/_app/immutable/entry/{app.DCW7Wl1o.js → app.9PCQIkcK.js} +2 -2
  8. package/dist/public/_app/immutable/entry/start.B2AAIrSx.js +1 -0
  9. package/dist/public/_app/immutable/nodes/{0.TaUdkYxo.js → 0.AMLeLoD1.js} +1 -1
  10. package/dist/public/_app/immutable/nodes/{1.CUSF22-X.js → 1.Blbk91n_.js} +1 -1
  11. package/dist/public/_app/immutable/nodes/{2.CNisk3eY.js → 2.BFQSpl6c.js} +1 -1
  12. package/dist/public/_app/immutable/nodes/{3.hKP56OUw.js → 3.TVB99Exs.js} +1 -1
  13. package/dist/public/_app/version.json +1 -1
  14. package/dist/public/gear/gear_wheel_wheel.html +14 -14
  15. package/dist/public/gear/simplified_gear_wheel.html +14 -14
  16. package/dist/public/heliostat/base.html +14 -14
  17. package/dist/public/heliostat/haxis_guidance.html +14 -14
  18. package/dist/public/heliostat/heliostat.html +14 -14
  19. package/dist/public/heliostat/heliostat_2.html +14 -14
  20. package/dist/public/heliostat/pole_static.html +14 -14
  21. package/dist/public/heliostat/rake.html +14 -14
  22. package/dist/public/heliostat/rake_stopper.html +14 -14
  23. package/dist/public/heliostat/ring.html +14 -14
  24. package/dist/public/heliostat/ring_guidance.html +14 -14
  25. package/dist/public/heliostat/rod.html +14 -14
  26. package/dist/public/heliostat/spider.html +14 -14
  27. package/dist/public/heliostat/surface.html +14 -14
  28. package/dist/public/heliostat/swing.html +14 -14
  29. package/dist/public/heliostat/trapeze.html +14 -14
  30. package/dist/public/heliostat/vaxis.html +14 -14
  31. package/dist/public/heliostat/vaxis_guidance.html +14 -14
  32. package/dist/public/heliostat/vaxis_holder.html +14 -14
  33. package/dist/public/index.html +12 -12
  34. package/package.json +4 -4
  35. package/dist/public/_app/immutable/chunks/paths.B1t63Fye.js +0 -1
  36. package/dist/public/_app/immutable/entry/start.CBVzKzSB.js +0 -1
@@ -1,4 +1,4 @@
1
- var be=Object.defineProperty;var ke=(s,t,u)=>t in s?be(s,t,{enumerable:!0,configurable:!0,writable:!0,value:u}):s[t]=u;var p=(s,t,u)=>(ke(s,typeof t!="symbol"?t+"":t,u),u);import{p as e,a as W,b as Lt,c as xt,i as _t,d as kt,f as L,g as z,E as U,h as dt,j as Ht,k as Dt,l as Pt,m as x,n as rt,t as zt,r as ht,o as Me,q as Ee,s as Z,u as gt,v as wt,w as y,x as ut,y as yt,z as Ot,A as Gt,S as At,B as Ae}from"./index.D-gTLL5b.js";var Re=class{constructor(s,t,u,o,n){p(this,"base_center_x");p(this,"base_center_y");p(this,"base_radius");p(this,"initial_angle");p(this,"right_nleft");this.base_center_x=s,this.base_center_y=t,this.base_radius=u,this.initial_angle=o,this.right_nleft=n}angleSign(){return this.right_nleft?1:-1}lFromU(s){return this.base_radius*Math.sqrt(1+s**2)}wFromU(s){if(s<0)throw`err729: involute parameter au ${s} is negative`;if(Math.abs(s)>Math.PI/2)throw`err730: involute parameter au ${s} is larger than PI/2`;return this.angleSign()*(s-Math.atan(s))}w2FromU(s){return this.initial_angle+this.wFromU(s)}ptc(s){const t=this.lFromU(s),u=this.w2FromU(s),o=this.base_center_x+Math.cos(u)*t,n=this.base_center_y+Math.sin(u)*t;return[o,n]}ptcta(s){return this.initial_angle+this.angleSign()*s}uFromL(s){return Math.sqrt(s**2/this.base_radius**2-1)}uFromWslow(s){let u=Math.PI/3,o=u/2,n=this.wFromU(u),h=0;for(;Math.abs(n-s)>1e-4;)n<s?u+=o:u-=o,n=this.wFromU(u),o=o/2,h+=1;return console.log(`dbg072: uFromWslow itcnt ${h}`),u}laptc(s,t,u,o){if(Math.sign(t)*this.angleSign()<0)throw`err904: Invole.laptc angle-of-pressure ${t} not compatible with right_nleft ${this.right_nleft}`;const n=s+t,h=this.base_center_x+Math.cos(n)*this.base_radius,i=this.base_center_y+Math.sin(n)*this.base_radius,d=n-this.angleSign()*Math.PI/2,l=u*this.base_radius,g=h+Math.cos(d)*l,a=i+Math.sin(d)*l,r=this.lFromU(u)*o,c=u,_=Math.cos(c)*r,S=Math.sin(c)*r;return[g,a,_,S]}};function bt(s,t,u,o,n){return new Re(s,t,u,o,n)}var Ne=class{constructor(){p(this,"mod",1);p(this,"TN",23);p(this,"as",1);p(this,"cx",0);p(this,"cy",0);p(this,"brr",50);p(this,"blr",50);p(this,"ar",54);p(this,"pr",53);p(this,"dr",52);p(this,"br",51);p(this,"bRound",1);p(this,"adt",.5);p(this,"initAngle",0);p(this,"axisAngle",0);p(this,"involArcPairs",1);p(this,"skinThickness",0);p(this,"involuteR",bt(0,0,50,0,!0));p(this,"involuteL",bt(0,0,50,0,!1));p(this,"rud",0);p(this,"rup",0);p(this,"rua",0);p(this,"rwd",0);p(this,"rwp",0);p(this,"rwa",0);p(this,"lud",0);p(this,"lup",0);p(this,"lua",0);p(this,"lwd",0);p(this,"lwp",0);p(this,"lwa",0);p(this,"msg");p(this,"initStep",0);this.mod=1,this.msg="",this.initStep=0}incInitStep(s){if(this.initStep+1!==s)throw`err834: incInitStep initStep ${this.initStep} and target ${s} are not compatible`;this.initStep=s}checkInitStep(s,t){if(this.initStep<s)throw`err835: checkInitStep for ${t} initStep ${this.initStep} is too small compare to targetMin ${s}`}set1ModuleToothNumber(s,t){this.incInitStep(1),this.mod=s,this.TN=t,this.pr=this.mod*this.TN/2,this.as=2*Math.PI/this.TN}set2CenterPosition(s,t){this.incInitStep(2),this.cx=s,this.cy=t}set3CircleRadius(s,t,u,o){this.incInitStep(3),this.ar=this.pr+this.mod*s,this.dr=this.pr-this.mod*t,this.br=this.dr-this.mod*u,this.bRound=o}set4BaseCircles(s,t){this.incInitStep(4),this.brr=s,this.blr=t}set5AddendumThickness(s){this.incInitStep(5),this.adt=s/100}set6Angles(s,t){this.incInitStep(6),this.initAngle=s,this.axisAngle=t}set7InvoluteDetails(s,t){this.incInitStep(7),this.involArcPairs=s,this.skinThickness=t}getRefCircles(){return this.checkInitStep(4,"getRefCircles"),[x(this.cx,this.cy,this.ar,"Azure"),x(this.cx,this.cy,this.pr,"Azure"),x(this.cx,this.cy,this.dr,"Azure"),x(this.cx,this.cy,this.br,"Azure"),x(this.cx,this.cy,this.brr,"CornFlowerBlue"),x(this.cx,this.cy,this.blr,"Crimson")]}calcInvoluteAngles(){this.checkInitStep(4,"calcInvoluteAngles"),this.involuteR=bt(this.cx,this.cy,this.brr,0,!0),this.dr>this.brr?this.rud=this.involuteR.uFromL(this.dr):this.rud=0,this.rup=this.involuteR.uFromL(this.pr),this.rua=this.involuteR.uFromL(this.ar),this.rwd=this.involuteR.wFromU(this.rud),this.rwp=this.involuteR.wFromU(this.rup),this.rwa=this.involuteR.wFromU(this.rua),this.involuteL=bt(this.cx,this.cy,this.blr,0,!1),this.dr>this.blr?this.lud=this.involuteL.uFromL(this.dr):this.rud=0,this.lup=this.involuteL.uFromL(this.pr),this.lua=this.involuteL.uFromL(this.ar),this.lwd=this.involuteL.wFromU(this.lud),this.lwp=this.involuteL.wFromU(this.lup),this.lwa=this.involuteL.wFromU(this.lua)}checkProfileConditions(){const s=this.as*this.adt,t=this.rwa-this.rwp,u=Math.abs(this.lwa-this.lwp),o=s-t-u;if(o<0)throw`err554: No remaining Addendum reserve ${L(o)}
1
+ var be=Object.defineProperty;var ke=(s,t,u)=>t in s?be(s,t,{enumerable:!0,configurable:!0,writable:!0,value:u}):s[t]=u;var p=(s,t,u)=>(ke(s,typeof t!="symbol"?t+"":t,u),u);import{p as e,a as q,b as Lt,c as xt,i as _t,d as kt,f as L,g as z,E as W,h as dt,j as Ht,k as Dt,l as Pt,m as x,n as rt,t as zt,r as ht,o as Me,q as Ee,s as Z,u as gt,v as wt,w as y,x as ut,y as yt,z as Ot,A as Gt,S as At,B as Ae}from"./index.5cS1cJhH.js";var Re=class{constructor(s,t,u,o,n){p(this,"base_center_x");p(this,"base_center_y");p(this,"base_radius");p(this,"initial_angle");p(this,"right_nleft");this.base_center_x=s,this.base_center_y=t,this.base_radius=u,this.initial_angle=o,this.right_nleft=n}angleSign(){return this.right_nleft?1:-1}lFromU(s){return this.base_radius*Math.sqrt(1+s**2)}wFromU(s){if(s<0)throw`err729: involute parameter au ${s} is negative`;if(Math.abs(s)>Math.PI/2)throw`err730: involute parameter au ${s} is larger than PI/2`;return this.angleSign()*(s-Math.atan(s))}w2FromU(s){return this.initial_angle+this.wFromU(s)}ptc(s){const t=this.lFromU(s),u=this.w2FromU(s),o=this.base_center_x+Math.cos(u)*t,n=this.base_center_y+Math.sin(u)*t;return[o,n]}ptcta(s){return this.initial_angle+this.angleSign()*s}uFromL(s){return Math.sqrt(s**2/this.base_radius**2-1)}uFromWslow(s){let u=Math.PI/3,o=u/2,n=this.wFromU(u),h=0;for(;Math.abs(n-s)>1e-4;)n<s?u+=o:u-=o,n=this.wFromU(u),o=o/2,h+=1;return console.log(`dbg072: uFromWslow itcnt ${h}`),u}laptc(s,t,u,o){if(Math.sign(t)*this.angleSign()<0)throw`err904: Invole.laptc angle-of-pressure ${t} not compatible with right_nleft ${this.right_nleft}`;const n=s+t,h=this.base_center_x+Math.cos(n)*this.base_radius,i=this.base_center_y+Math.sin(n)*this.base_radius,d=n-this.angleSign()*Math.PI/2,l=u*this.base_radius,g=h+Math.cos(d)*l,a=i+Math.sin(d)*l,r=this.lFromU(u)*o,c=u,_=Math.cos(c)*r,S=Math.sin(c)*r;return[g,a,_,S]}};function bt(s,t,u,o,n){return new Re(s,t,u,o,n)}var Ne=class{constructor(){p(this,"mod",1);p(this,"TN",23);p(this,"as",1);p(this,"cx",0);p(this,"cy",0);p(this,"brr",50);p(this,"blr",50);p(this,"ar",54);p(this,"pr",53);p(this,"dr",52);p(this,"br",51);p(this,"bRound",1);p(this,"adt",.5);p(this,"initAngle",0);p(this,"axisAngle",0);p(this,"involArcPairs",1);p(this,"skinThickness",0);p(this,"involuteR",bt(0,0,50,0,!0));p(this,"involuteL",bt(0,0,50,0,!1));p(this,"rud",0);p(this,"rup",0);p(this,"rua",0);p(this,"rwd",0);p(this,"rwp",0);p(this,"rwa",0);p(this,"lud",0);p(this,"lup",0);p(this,"lua",0);p(this,"lwd",0);p(this,"lwp",0);p(this,"lwa",0);p(this,"msg");p(this,"initStep",0);this.mod=1,this.msg="",this.initStep=0}incInitStep(s){if(this.initStep+1!==s)throw`err834: incInitStep initStep ${this.initStep} and target ${s} are not compatible`;this.initStep=s}checkInitStep(s,t){if(this.initStep<s)throw`err835: checkInitStep for ${t} initStep ${this.initStep} is too small compare to targetMin ${s}`}set1ModuleToothNumber(s,t){this.incInitStep(1),this.mod=s,this.TN=t,this.pr=this.mod*this.TN/2,this.as=2*Math.PI/this.TN}set2CenterPosition(s,t){this.incInitStep(2),this.cx=s,this.cy=t}set3CircleRadius(s,t,u,o){this.incInitStep(3),this.ar=this.pr+this.mod*s,this.dr=this.pr-this.mod*t,this.br=this.dr-this.mod*u,this.bRound=o}set4BaseCircles(s,t){this.incInitStep(4),this.brr=s,this.blr=t}set5AddendumThickness(s){this.incInitStep(5),this.adt=s/100}set6Angles(s,t){this.incInitStep(6),this.initAngle=s,this.axisAngle=t}set7InvoluteDetails(s,t){this.incInitStep(7),this.involArcPairs=s,this.skinThickness=t}getRefCircles(){return this.checkInitStep(4,"getRefCircles"),[x(this.cx,this.cy,this.ar,"Azure"),x(this.cx,this.cy,this.pr,"Azure"),x(this.cx,this.cy,this.dr,"Azure"),x(this.cx,this.cy,this.br,"Azure"),x(this.cx,this.cy,this.brr,"CornFlowerBlue"),x(this.cx,this.cy,this.blr,"Crimson")]}calcInvoluteAngles(){this.checkInitStep(4,"calcInvoluteAngles"),this.involuteR=bt(this.cx,this.cy,this.brr,0,!0),this.dr>this.brr?this.rud=this.involuteR.uFromL(this.dr):this.rud=0,this.rup=this.involuteR.uFromL(this.pr),this.rua=this.involuteR.uFromL(this.ar),this.rwd=this.involuteR.wFromU(this.rud),this.rwp=this.involuteR.wFromU(this.rup),this.rwa=this.involuteR.wFromU(this.rua),this.involuteL=bt(this.cx,this.cy,this.blr,0,!1),this.dr>this.blr?this.lud=this.involuteL.uFromL(this.dr):this.rud=0,this.lup=this.involuteL.uFromL(this.pr),this.lua=this.involuteL.uFromL(this.ar),this.lwd=this.involuteL.wFromU(this.lud),this.lwp=this.involuteL.wFromU(this.lup),this.lwa=this.involuteL.wFromU(this.lua)}checkProfileConditions(){const s=this.as*this.adt,t=this.rwa-this.rwp,u=Math.abs(this.lwa-this.lwp),o=s-t-u;if(o<0)throw`err554: No remaining Addendum reserve ${L(o)}
2
2
  `;const n=this.as*(1-this.adt),h=this.rwp-this.rwd,i=Math.abs(this.lwp-this.lwd),d=n-h-i;if(d<2*Math.atan2(this.bRound,this.br))throw`err555: No remaining Dedendum reserve ${L(d)} compare to bRound ${L(this.bRound)}
3
3
  `}getToothRef(){const s=6*this.involArcPairs,t=0;this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles();const u=(this.rua-this.rud)/s,o=(this.lua-this.lud)/s,n=this.initAngle+t*this.as,h=bt(this.cx,this.cy,this.brr,n-this.rwp,!0),[i,d]=h.ptc(this.rud+0*u),l=z(i,d,"Gold");for(let f=0;f<s;f++){const[r,c]=h.ptc(this.rud+(f+1)*u);l.addSegStrokeA(r,c)}const g=n+this.as*this.adt,a=bt(this.cx,this.cy,this.blr,g-this.lwp,!1);for(let f=0;f<s+1;f++){const[r,c]=a.ptc(this.lud+(s-f)*o);l.addSegStrokeA(r,c)}return l.closeSegStroke(),l}getProfile(){this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles(),this.checkProfileConditions();const s=this.rwd-this.rwp,t=this.lwd-this.lwp,u=this.dr>this.brr?this.dr:this.brr,o=this.dr>this.blr?this.dr:this.blr;if(this.bRound>u-this.br)throw`err409: getProfile bRound ${L(this.bRound)} too large for erdr ${L(u)} and br ${L(this.br)}`;if(this.bRound>o-this.br)throw`err408: getProfile bRound ${L(this.bRound)} too large for eldr ${L(o)} and br ${L(this.br)}`;const n=(this.rua-this.rud)/this.involArcPairs,h=(this.lua-this.lud)/this.involArcPairs,i=rt(this.cx,this.cy),d=i.translatePolar(this.initAngle+s,this.br),l=z(d.cx,d.cy);for(let g=0;g<this.TN;g++){const a=this.initAngle+g*this.as,f=i.translatePolar(a+s,this.br);l.addSegStrokeA(f.cx,f.cy).addCornerRounded(this.bRound);const r=bt(this.cx,this.cy,this.brr,a-this.rwp,!0),[c,_]=r.ptc(this.rud),S=r.ptcta(this.rud),H=rt(c,_).translatePolar(S-Math.PI/2,this.skinThickness);l.addSegStrokeA(H.cx,H.cy);for(let $=0;$<this.involArcPairs;$++){const O=this.rud+$*n,[I,k]=r.ptc(O+n),m=r.ptcta(O),G=r.ptcta(O+n)+Math.PI,C=rt(I,k).translatePolar(m-Math.PI/2,this.skinThickness);l.addPointA(C.cx,C.cy).addSeg2Arcs(m,G)}const N=a+this.as*this.adt,w=bt(this.cx,this.cy,this.blr,N-this.lwp,!1),D=this.lud+this.involArcPairs*h,[E,A]=w.ptc(D),R=w.ptcta(D)+Math.PI,v=rt(E,A).translatePolar(R-Math.PI/2,this.skinThickness);l.addSegStrokeA(v.cx,v.cy);for(let $=0;$<this.involArcPairs;$++){const O=this.lud+(this.involArcPairs-$)*h,[I,k]=w.ptc(O-h),m=w.ptcta(O)+Math.PI,G=w.ptcta(O-h),C=rt(I,k).translatePolar(m-Math.PI/2,this.skinThickness);l.addPointA(C.cx,C.cy).addSeg2Arcs(m,G)}const b=i.translatePolar(N+t,this.br);l.addSegStrokeA(b.cx,b.cy).addCornerRounded(this.bRound)}return l.closeSegStroke(),l}getMsg(){return this.msg}};function te(){return new Ne}function Ie(s,t,u,o){s.checkInitStep(1,"helper.gw2center-1"),t.checkInitStep(1,"helper.gw2center-2");const n=s.pr+t.pr+o,h=s.cx+n*Math.cos(u),i=s.cy+n*Math.sin(u);return[h,i,n]}function Ve(s,t,u,o,n,h,i,d,l){s.checkInitStep(3,"helper.baseCircles-1"),t.checkInitStep(3,"helper.baseCircles-2");let g=u,a=n,f=o,r=h;const c=d,_=l;return c===0&&(t.TN>s.TN?(g=s.dr,a=g*t.TN/s.TN):(a=t.dr,g=a*s.TN/t.TN)),_===0&&(t.TN>s.TN?(f=s.dr,r=f*t.TN/s.TN):(r=t.dr,f=r*s.TN/t.TN)),i===1&&(f=g,r=a),[g,f,a,r]}var Ce=class{constructor(s,t,u,o,n,h){p(this,"gw1");p(this,"gw2");p(this,"initAngle1");p(this,"angleCenterCenter");p(this,"interAxis");p(this,"rightLeftCenter2");p(this,"msg");p(this,"apr");p(this,"apl");p(this,"lBDr",0);p(this,"lBDl",0);p(this,"laStartRr1",0);p(this,"laStartRr2",0);p(this,"laStartRl1",0);p(this,"laStartRl2",0);p(this,"aFODr1",0);p(this,"aFODr2",0);p(this,"aFODl1",0);p(this,"aFODl2",0);p(this,"lasr1",0);p(this,"lasr2",0);p(this,"lasl1",0);p(this,"lasl2",0);p(this,"firstToothUr1",0);p(this,"firstToothUl1",0);p(this,"ftdr1",0);p(this,"ftdl1",0);this.gw1=s,this.gw2=t,this.initAngle1=u,this.angleCenterCenter=o,this.interAxis=n,this.rightLeftCenter2=h,this.msg="",this.apr=0,this.apl=0}check1(){this.gw1.checkInitStep(4,"ActionLine.check1-1"),this.gw2.checkInitStep(4,"ActionLine.check1-2"),this.interAxis>this.gw1.ar+this.gw2.ar&&(this.msg+=`warn333: initAngle2 interAxis ${L(this.interAxis)} is too large compare to gw1.ar ${L(this.gw1.ar)} and gw2.ar ${L(this.gw2.ar)}
4
4
  `),ut(this.gw1.brr*this.gw2.TN-this.gw2.brr*this.gw1.TN)!==0&&(this.msg+=`warn407: right ratios differ N1/N2 = ${this.gw1.TN} / ${this.gw2.TN} = ${L(this.gw1.TN/this.gw2.TN)} and brr1/brr2 = ${L(this.gw1.brr)}/${L(this.gw2.brr)} = ${L(this.gw1.brr/this.gw2.brr)}
@@ -18,28 +18,28 @@ var be=Object.defineProperty;var ke=(s,t,u)=>t in s?be(s,t,{enumerable:!0,config
18
18
  `}calcContactPoint1(){for(this.gw1.checkInitStep(5,"ActionLine.calcContactPoint1"),this.firstToothUr1=Gt(this.apr-(this.initAngle1-this.angleCenterCenter)+this.gw1.rwp);ut(this.firstToothUr1-this.gw1.as)>=0;)this.firstToothUr1=ut(this.firstToothUr1-this.gw1.as);for(this.firstToothUl1=Gt(this.apl+(this.initAngle1-this.angleCenterCenter)+this.gw1.as*this.gw1.adt-this.gw1.lwp);ut(this.firstToothUl1-this.gw1.as)>=0;)this.firstToothUl1=ut(this.firstToothUl1-this.gw1.as);this.ftdr1=this.gw1.brr*this.firstToothUr1,this.ftdl1=this.gw1.blr*this.firstToothUl1}prepare(){this.check1(),this.check2(),this.calcActionLine(),this.calcContactPoint1()}oneContactSpeed(s,t,u,o,n,h,i,d,l,g){const f=Math.floor(t/(2*u)),r=(o+f*u)/n,c=s?1:-1,[_,S,H,N]=h.laptc(i,c*d,r,.4);this.msg+=`speed ${l}: vx ${L(H)} vy: ${L(N)} m/s
19
19
  `;const w=rt(_,S),D=i+c*d,E=z(_,S,g),A=w.translatePolar(D,-N);E.addSegStrokeA(A.cx,A.cy);const R=A.translatePolar(D-c*Math.PI/2,H);return E.addSegStrokeA(R.cx,R.cy),E.closeSegStroke(),E}getContactSpeed(){const s=this.oneContactSpeed(!0,this.lBDr,this.lasr1,this.ftdr1,this.gw1.brr,this.gw1.involuteR,this.angleCenterCenter,this.apr,"R1","Black"),t=this.oneContactSpeed(!1,this.lBDl,this.lasl1,this.ftdl1,this.gw1.blr,this.gw1.involuteL,this.angleCenterCenter,this.apl,"L1","Black"),u=[];return u.push(s),u.push(t),u}getContours(){const s=[];s.push(x(this.gw1.cx,this.gw1.cy,this.laStartRr1,"SkyBlue")),s.push(x(this.gw1.cx,this.gw1.cy,this.laStartRl1,"SlateBlue")),s.push(x(this.gw2.cx,this.gw2.cy,this.laStartRr2,"SkyBlue")),s.push(x(this.gw2.cx,this.gw2.cy,this.laStartRl2,"SlateBlue"));const t=rt(this.gw1.cx,this.gw1.cy),u=rt(this.gw2.cx,this.gw2.cy),o=t.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),n=u.translatePolar(this.angleCenterCenter+Math.PI+this.apr,this.gw2.brr),h=z(o.cx,o.cy,"YellowGreen");h.addSegStrokeA(n.cx,n.cy),h.closeSegStroke(),s.push(h);const i=t.translatePolar(this.angleCenterCenter-this.aFODr1,this.gw1.ar),d=u.translatePolar(this.angleCenterCenter+Math.PI-this.aFODr2,this.gw2.ar),l=z(i.cx,i.cy,"Yellow");l.addSegStrokeA(d.cx,d.cy),l.closeSegStroke(),s.push(l);const g=t.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr),a=u.translatePolar(this.angleCenterCenter+Math.PI-this.apl,this.gw2.blr),f=z(g.cx,g.cy,"YellowGreen");f.addSegStrokeA(a.cx,a.cy),f.closeSegStroke(),s.push(f);const r=t.translatePolar(this.angleCenterCenter+this.aFODl1,this.gw1.ar),c=u.translatePolar(this.angleCenterCenter+Math.PI+this.aFODl2,this.gw2.ar),_=z(r.cx,r.cy,"Yellow");return _.addSegStrokeA(c.cx,c.cy),_.closeSegStroke(),s.push(_),s.push(...this.getContactSpeed()),s}getContactPoint(){const s=[],t=rt(this.gw1.cx,this.gw1.cy),u=t.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),o=t.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr);s.push(rt(u.cx,u.cy,At.eBigSquare)),s.push(rt(o.cx,o.cy,At.eBigSquare));const n=this.angleCenterCenter+this.apr-Math.PI/2,h=this.angleCenterCenter-this.apl+Math.PI/2,i=u.translatePolar(n,this.ftdr1),d=o.translatePolar(h,this.ftdl1);s.push(rt(i.cx,i.cy,At.eBigSquare)),s.push(rt(d.cx,d.cy,At.eBigSquare));let l=this.ftdr1;for(;l+this.lasr1<this.lBDr;){l+=this.lasr1;const a=u.translatePolar(n,l);s.push(rt(a.cx,a.cy,At.eBigSquare))}let g=this.ftdl1;for(;g+this.lasl1<this.lBDl;){g+=this.lasl1;const a=o.translatePolar(h,g);s.push(rt(a.cx,a.cy,At.eBigSquare))}return s}getMsg(){return this.msg}getInitAngle2(){let s=this.lBDr-this.ftdr1;for(;ut(s-this.lasr2)>=0;)s=ut(s-this.lasr2);let t=this.lBDl-this.ftdl1;for(;ut(t-this.lasl2)>=0;)t=ut(t-this.lasl2);const u=s/this.gw2.brr,o=t/this.gw2.blr,n=this.angleCenterCenter+Math.PI+this.apr-u+this.gw2.rwp,i=this.angleCenterCenter+Math.PI-this.apl+o+this.gw2.lwp-this.gw2.as*this.gw2.adt;let d=2*Math.PI+Gt(i);for(;ut(d-this.gw2.as-n)>=0;)d=ut(d-this.gw2.as);const l=d-n,g=l*this.gw2.brr/this.gw1.brr,a=l*this.gw2.brr,f=l*this.gw2.blr;this.msg+=`slack angle: 1: ${L(ht(g))} 2: ${L(ht(l))} degree
20
20
  `,this.msg+=`slack on action line: right-2: ${L(a)} left-2: ${L(f)} mm
21
- `;let r=0;if(this.rightLeftCenter2===0)r=n;else if(this.rightLeftCenter2===1)r=i;else if(this.rightLeftCenter2===2)r=n+l/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return Ae(r)}};function Be(s,t,u,o,n,h){return new Ce(s,t,u,o,n,h)}function ye(s,t,u,o,n,h,i,d,l){let g=x(s,t,u);if(o>0){if(n>2*u)throw`err383: axisTorque ribWidth ${L(n)} larger than 2x axisRadius ${L(u)}`;const a=Math.asin(n/(2*u)),f=2*Math.PI/o;if(f-2.5*a<0)throw`err384: axisTorque ribWidth ${L(n)} or ribNb ${o} are too large`;if(i>n/2)throw`err385: axisTorque ribRound1 ${L(i)} too large compare to ribWidth ${L(n)}`;if(i+d>h)throw`err386: axisTorque ribRound12 ${L(i)} ${L(d)} too large compare to ribHeight ${L(n)}`;const r=f-2*a>Math.PI,c=rt(s,t),S=c.translatePolar(l,u+h).translatePolar(l+Math.PI/2,n/2);g=z(S.cx,S.cy);for(let H=0;H<o;H++){const N=l+H*f,w=N+f,D=c.translatePolar(N+a,u),E=c.translatePolar(w-a,u),R=c.translatePolar(N,u+h).translatePolar(N+Math.PI/2,n/2),b=c.translatePolar(w,u+h).translatePolar(w-Math.PI/2,n/2);g.addSegStrokeA(R.cx,R.cy).addCornerRounded(i),g.addSegStrokeA(D.cx,D.cy).addCornerRounded(d),g.addPointA(E.cx,E.cy).addSegArc(u,r,!0).addCornerRounded(d),g.addSegStrokeA(b.cx,b.cy).addCornerRounded(i)}g.closeSegStroke()}return g}function Oe(s,t,u,o,n,h,i,d){const l=2*Math.PI/n,g=Math.asin(h/(2*o)),a=Math.asin(h/(2*u));if(h>2*o)throw`err905: hollowStraight spokeWidth ${L(h)} too large for hollowInt ${L(o)}`;if(u-o<2.1*i)throw`err906: hollowStraight hollowExt ${L(u)}, hollowInt ${L(o)} and spokeRound ${L(i)} do not fit`;if(l-2*a<2.5*Math.asin(i/u))throw`err907: hollowStraight spokeNb ${n}, spokeWidth ${L(h)} or spokeRound ${L(i)} are too large`;const f=h/(2*Math.sin(l/2)),r=l-2*g<2.1*Math.asin(i/o),c=l-2*a>Math.PI,_=rt(s,t),S=[];for(let H=0;H<n;H++){const N=d+H*l,w=N+l,D=N+l/2,E=_.translatePolar(N+a,u),A=_.translatePolar(w-a,u),R=_.translatePolar(w-g,o),v=_.translatePolar(N+g,o),b=_.translatePolar(D,f),$=z(E.cx,E.cy);$.addCornerRounded(i),$.addPointA(A.cx,A.cy).addSegArc(u,c,!0).addCornerRounded(i),r?$.addSegStrokeA(b.cx,b.cy).addCornerRounded(i):($.addSegStrokeA(R.cx,R.cy).addCornerRounded(i),$.addPointA(v.cx,v.cy).addSegArc(o,c,!1).addCornerRounded(i)),$.closeSegStroke(),S.push($)}return S}function ee(s,t,u,o,n,h,i,d,l,g){const a=g?1:-1,f=s/2,r=f+t,c=r+u,_=z(0,-c);return _.addSegStrokeA(a*o,-c).addCornerRounded(i).addSegStrokeA(a*o,-r).addCornerRounded(d).addSegStrokeA(a*n,-r).addSegStrokeA(a*h,-f).addCornerRounded(l).addSegStrokeA(a*h,f).addCornerRounded(l).addSegStrokeA(a*n,r).addSegStrokeA(a*o,r).addCornerRounded(d).addSegStrokeA(a*o,c).addCornerRounded(i).addSegStrokeA(0,c).closeSegStroke(),_}var oe={partName:"gear_wheel_wheel",params:[e("module","mm",10,.1,100,.1),e("N1","scalar",23,3,1e3,1),e("N2","scalar",19,3,1e3,1),e("angleCenterCenter","degree",0,-180,180,1),e("addInterAxis","mm",0,0,100,.05),e("c1x","mm",0,-200,200,1),e("c1y","mm",0,-200,200,1),W("Tooth Profile"),e("ah1","scalar",1,.1,2,.05),e("dh1","scalar",1,.1,2,.05),e("bh1","scalar",.25,.1,2,.05),e("bRound1","mm",2,0,50,.1),e("ah2","scalar",1,.1,2,.05),e("dh2","scalar",1,.1,2,.05),e("bh2","scalar",.25,.1,2,.05),e("bRound2","mm",2,0,50,.1),e("at1","%",50,10,90,.5),e("at2","%",50,10,90,.5),Lt("involSym",!0),xt("involROpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),xt("involLOpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),e("brr1","mm",50,10,2e3,.05),e("brr2","mm",50,10,2e3,.05),e("blr1","mm",50,10,2e3,.05),e("blr2","mm",50,10,2e3,.05),e("involArcPairs1","scalar",2,1,40,1),e("involArcPairs2","scalar",2,1,40,1),e("skinThickness1","mm",0,-3,3,.01),e("skinThickness2","mm",0,-3,3,.01),e("initAngle1","degree",0,-180,180,1),xt("gw2Position",["right","left","center"]),W("Inner"),Lt("centralAxis",!0),e("axisRadius","mm",10,.1,200,.1),e("ribNb","scalar",5,0,32,1),e("ribWidth","mm",8,1,100,.1),e("ribHeight","mm",8,1,100,.1),e("ribRound1","mm",2,0,20,.1),e("ribRound2","mm",2,0,20,.1),Lt("hollow",!0),e("materialHeightExt","mm",20,1,200,.5),e("materialHeightInt","mm",15,1,200,.5),e("spokeNb","scalar",5,1,18,1),e("spokeWidth","mm",15,1,200,.1),e("spokeRound","mm",10,0,20,.1),W("Axis"),Lt("centralAxis",!0),Lt("wheelAxis",!0),e("wheelHeight","mm",40,.1,400,.1),e("wheelMidExtra","mm",6,0,10,.1),e("wheelAxisLength","mm",40,0,400,.1),e("wheelAxisRadius","mm",20,0,200,.1),e("wheelMidRadius","mm",60,0,200,.1),e("wheelRadiusExtra","mm",1,0,20,.1),e("wheelAxisExtRound","mm",4,0,20,.1),e("wheelAxisIntRound","mm",0,0,20,.1),e("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"default_param_blank.svg",N1:"default_param_blank.svg",N2:"default_param_blank.svg",angleCenterCenter:"default_param_blank.svg",addInterAxis:"default_param_blank.svg",c1x:"default_param_blank.svg",c1y:"default_param_blank.svg",ah1:"default_param_blank.svg",dh1:"default_param_blank.svg",bh1:"default_param_blank.svg",bRound1:"default_param_blank.svg",ah2:"default_param_blank.svg",dh2:"default_param_blank.svg",bh2:"default_param_blank.svg",bRound2:"default_param_blank.svg",at1:"default_param_blank.svg",at2:"default_param_blank.svg",involSym:"default_param_blank.svg",involROpt:"default_param_blank.svg",involLOpt:"default_param_blank.svg",brr1:"default_param_blank.svg",brr2:"default_param_blank.svg",blr1:"default_param_blank.svg",blr2:"default_param_blank.svg",involArcPairs1:"default_param_blank.svg",skinThickness1:"default_param_blank.svg",involArcPairs2:"default_param_blank.svg",skinThickness2:"default_param_blank.svg",initAngle1:"default_param_blank.svg",gw2Position:"default_param_blank.svg",centralAxis:"default_param_blank.svg",axisRadius:"default_param_blank.svg",ribNb:"default_param_blank.svg",ribWidth:"default_param_blank.svg",ribHeight:"default_param_blank.svg",ribRound1:"default_param_blank.svg",ribRound2:"default_param_blank.svg",hollow:"default_param_blank.svg",materialHeightExt:"default_param_blank.svg",materialHeightInt:"default_param_blank.svg",spokeNb:"default_param_blank.svg",spokeWidth:"default_param_blank.svg",spokeRound:"default_param_blank.svg",wheelAxis:"default_param_blank.svg",wheelHeight:"default_param_blank.svg",wheelMidExtra:"default_param_blank.svg",wheelAxisLength:"default_param_blank.svg",wheelAxisRadius:"default_param_blank.svg",wheelMidRadius:"default_param_blank.svg",wheelRadiusExtra:"default_param_blank.svg",wheelAxisExtRound:"default_param_blank.svg",wheelAxisIntRound:"default_param_blank.svg",wheelExtraRound:"default_param_blank.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Te(s,t,u=""){const o=_t(oe.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
22
- `;try{const i=[],d=te(),l=te();d.set1ModuleToothNumber(t.module,t.N1),l.set1ModuleToothNumber(t.module,t.N2),d.set2CenterPosition(t.c1x,t.c1y);const g=kt(t.angleCenterCenter),[a,f,r]=Ie(d,l,g,t.addInterAxis);l.set2CenterPosition(a,f),d.set3CircleRadius(t.ah1,t.dh1,t.bh1,t.bRound1),l.set3CircleRadius(t.ah2,t.dh2,t.bh2,t.bRound2);const[c,_,S,H]=Ve(d,l,t.brr1,t.blr1,t.brr2,t.blr2,t.involSym,t.involROpt,t.involROpt);d.set4BaseCircles(c,_),l.set4BaseCircles(S,H),d.set5AddendumThickness(t.at1),l.set5AddendumThickness(t.at2);const N=kt(t.initAngle1)+s*3*d.as/100;d.set6Angles(N,g);const w=Be(d,l,N,g,r,t.gw2Position);w.prepare();for(const $ of w.getContours())n.addDynamics($);n.addPoints(w.getContactPoint()),l.set6Angles(w.getInitAngle2(),g+Math.PI),o.logstr+=w.getMsg(),d.set7InvoluteDetails(t.involArcPairs1,t.skinThickness1),l.set7InvoluteDetails(t.involArcPairs2,t.skinThickness2);for(const $ of d.getRefCircles())n.addDynamics($);for(const $ of l.getRefCircles())n.addDynamics($);n.addDynamics(d.getToothRef()),n.addDynamics(l.getToothRef());const D=d.getProfile();if(o.logstr+=d.getMsg(),o.logstr+=D.check(),i.push(D),t.centralAxis===1){const $=ye(d.cx,d.cy,t.axisRadius,t.ribNb,t.ribWidth,t.ribHeight,t.ribRound1,t.ribRound2,N);o.logstr+=$.check(),i.push($)}if(t.hollow===1){const $=d.br,O=t.axisRadius+t.ribHeight,I=$-t.materialHeightExt,k=O+t.materialHeightInt;if(k>I)throw`err902: hollowMaterialInt ${L(k)} bigger than hollowMaterialExt ${L(I)}`;const m=Oe(d.cx,d.cy,I,k,t.spokeNb,t.spokeWidth,t.spokeRound,N);for(const G of m)o.logstr+=G.check(),i.push(G)}n.addMainOI(i);const E=l.getProfile();o.logstr+=E.check(),n.addSecond(E);const A=[],R=d.ar+t.wheelRadiusExtra;if(t.wheelAxis===1){const $=ee(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!0),O=ee(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!1);A.push($),h.addSecond(O)}else{const $=z(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke(),O=z(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(-R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke();A.push($),h.addSecond(O)}h.addMainOI(A),o.fig={teethProfile:n,axisProfile:h};const v=o.partName,b=t.wheelHeight/2+t.wheelMidExtra+t.wheelAxisLength+10;o.vol={extrudes:[{outName:`subpax_${v}_teethProfile`,face:`${v}_teethProfile`,extrudeMethod:U.eLinearOrtho,length:2*b,rotate:[0,0,0],translate:[0,0,-b]},{outName:`subpax_${v}_axisProfile`,face:`${v}_axisProfile`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:dt.eIntersection,inList:[`subpax_${v}_teethProfile`,`subpax_${v}_axisProfile`]}]},o.logstr+=`gear_wheel_wheel drawn successfully!
21
+ `;let r=0;if(this.rightLeftCenter2===0)r=n;else if(this.rightLeftCenter2===1)r=i;else if(this.rightLeftCenter2===2)r=n+l/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return Ae(r)}};function Be(s,t,u,o,n,h){return new Ce(s,t,u,o,n,h)}function ye(s,t,u,o,n,h,i,d,l){let g=x(s,t,u);if(o>0){if(n>2*u)throw`err383: axisTorque ribWidth ${L(n)} larger than 2x axisRadius ${L(u)}`;const a=Math.asin(n/(2*u)),f=2*Math.PI/o;if(f-2.5*a<0)throw`err384: axisTorque ribWidth ${L(n)} or ribNb ${o} are too large`;if(i>n/2)throw`err385: axisTorque ribRound1 ${L(i)} too large compare to ribWidth ${L(n)}`;if(i+d>h)throw`err386: axisTorque ribRound12 ${L(i)} ${L(d)} too large compare to ribHeight ${L(n)}`;const r=f-2*a>Math.PI,c=rt(s,t),S=c.translatePolar(l,u+h).translatePolar(l+Math.PI/2,n/2);g=z(S.cx,S.cy);for(let H=0;H<o;H++){const N=l+H*f,w=N+f,D=c.translatePolar(N+a,u),E=c.translatePolar(w-a,u),R=c.translatePolar(N,u+h).translatePolar(N+Math.PI/2,n/2),b=c.translatePolar(w,u+h).translatePolar(w-Math.PI/2,n/2);g.addSegStrokeA(R.cx,R.cy).addCornerRounded(i),g.addSegStrokeA(D.cx,D.cy).addCornerRounded(d),g.addPointA(E.cx,E.cy).addSegArc(u,r,!0).addCornerRounded(d),g.addSegStrokeA(b.cx,b.cy).addCornerRounded(i)}g.closeSegStroke()}return g}function Oe(s,t,u,o,n,h,i,d){const l=2*Math.PI/n,g=Math.asin(h/(2*o)),a=Math.asin(h/(2*u));if(h>2*o)throw`err905: hollowStraight spokeWidth ${L(h)} too large for hollowInt ${L(o)}`;if(u-o<2.1*i)throw`err906: hollowStraight hollowExt ${L(u)}, hollowInt ${L(o)} and spokeRound ${L(i)} do not fit`;if(l-2*a<2.5*Math.asin(i/u))throw`err907: hollowStraight spokeNb ${n}, spokeWidth ${L(h)} or spokeRound ${L(i)} are too large`;const f=h/(2*Math.sin(l/2)),r=l-2*g<2.1*Math.asin(i/o),c=l-2*a>Math.PI,_=rt(s,t),S=[];for(let H=0;H<n;H++){const N=d+H*l,w=N+l,D=N+l/2,E=_.translatePolar(N+a,u),A=_.translatePolar(w-a,u),R=_.translatePolar(w-g,o),v=_.translatePolar(N+g,o),b=_.translatePolar(D,f),$=z(E.cx,E.cy);$.addCornerRounded(i),$.addPointA(A.cx,A.cy).addSegArc(u,c,!0).addCornerRounded(i),r?$.addSegStrokeA(b.cx,b.cy).addCornerRounded(i):($.addSegStrokeA(R.cx,R.cy).addCornerRounded(i),$.addPointA(v.cx,v.cy).addSegArc(o,c,!1).addCornerRounded(i)),$.closeSegStroke(),S.push($)}return S}function ee(s,t,u,o,n,h,i,d,l,g){const a=g?1:-1,f=s/2,r=f+t,c=r+u,_=z(0,-c);return _.addSegStrokeA(a*o,-c).addCornerRounded(i).addSegStrokeA(a*o,-r).addCornerRounded(d).addSegStrokeA(a*n,-r).addSegStrokeA(a*h,-f).addCornerRounded(l).addSegStrokeA(a*h,f).addCornerRounded(l).addSegStrokeA(a*n,r).addSegStrokeA(a*o,r).addCornerRounded(d).addSegStrokeA(a*o,c).addCornerRounded(i).addSegStrokeA(0,c).closeSegStroke(),_}var oe={partName:"gear_wheel_wheel",params:[e("module","mm",10,.1,100,.1),e("N1","scalar",23,3,1e3,1),e("N2","scalar",19,3,1e3,1),e("angleCenterCenter","degree",0,-180,180,1),e("addInterAxis","mm",0,0,100,.05),e("c1x","mm",0,-200,200,1),e("c1y","mm",0,-200,200,1),q("Tooth Profile"),e("ah1","scalar",1,.1,2,.05),e("dh1","scalar",1,.1,2,.05),e("bh1","scalar",.25,.1,2,.05),e("bRound1","mm",2,0,50,.1),e("ah2","scalar",1,.1,2,.05),e("dh2","scalar",1,.1,2,.05),e("bh2","scalar",.25,.1,2,.05),e("bRound2","mm",2,0,50,.1),e("at1","%",50,10,90,.5),e("at2","%",50,10,90,.5),Lt("involSym",!0),xt("involROpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),xt("involLOpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),e("brr1","mm",50,10,2e3,.05),e("brr2","mm",50,10,2e3,.05),e("blr1","mm",50,10,2e3,.05),e("blr2","mm",50,10,2e3,.05),e("involArcPairs1","scalar",2,1,40,1),e("involArcPairs2","scalar",2,1,40,1),e("skinThickness1","mm",0,-3,3,.01),e("skinThickness2","mm",0,-3,3,.01),e("initAngle1","degree",0,-180,180,1),xt("gw2Position",["right","left","center"]),q("Inner"),Lt("centralAxis",!0),e("axisRadius","mm",10,.1,200,.1),e("ribNb","scalar",5,0,32,1),e("ribWidth","mm",8,1,100,.1),e("ribHeight","mm",8,1,100,.1),e("ribRound1","mm",2,0,20,.1),e("ribRound2","mm",2,0,20,.1),Lt("hollow",!0),e("materialHeightExt","mm",20,1,200,.5),e("materialHeightInt","mm",15,1,200,.5),e("spokeNb","scalar",5,1,18,1),e("spokeWidth","mm",15,1,200,.1),e("spokeRound","mm",10,0,20,.1),q("Axis"),Lt("centralAxis",!0),Lt("wheelAxis",!0),e("wheelHeight","mm",40,.1,400,.1),e("wheelMidExtra","mm",6,0,10,.1),e("wheelAxisLength","mm",40,0,400,.1),e("wheelAxisRadius","mm",20,0,200,.1),e("wheelMidRadius","mm",60,0,200,.1),e("wheelRadiusExtra","mm",1,0,20,.1),e("wheelAxisExtRound","mm",4,0,20,.1),e("wheelAxisIntRound","mm",0,0,20,.1),e("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"default_param_blank.svg",N1:"default_param_blank.svg",N2:"default_param_blank.svg",angleCenterCenter:"default_param_blank.svg",addInterAxis:"default_param_blank.svg",c1x:"default_param_blank.svg",c1y:"default_param_blank.svg",ah1:"default_param_blank.svg",dh1:"default_param_blank.svg",bh1:"default_param_blank.svg",bRound1:"default_param_blank.svg",ah2:"default_param_blank.svg",dh2:"default_param_blank.svg",bh2:"default_param_blank.svg",bRound2:"default_param_blank.svg",at1:"default_param_blank.svg",at2:"default_param_blank.svg",involSym:"default_param_blank.svg",involROpt:"default_param_blank.svg",involLOpt:"default_param_blank.svg",brr1:"default_param_blank.svg",brr2:"default_param_blank.svg",blr1:"default_param_blank.svg",blr2:"default_param_blank.svg",involArcPairs1:"default_param_blank.svg",skinThickness1:"default_param_blank.svg",involArcPairs2:"default_param_blank.svg",skinThickness2:"default_param_blank.svg",initAngle1:"default_param_blank.svg",gw2Position:"default_param_blank.svg",centralAxis:"default_param_blank.svg",axisRadius:"default_param_blank.svg",ribNb:"default_param_blank.svg",ribWidth:"default_param_blank.svg",ribHeight:"default_param_blank.svg",ribRound1:"default_param_blank.svg",ribRound2:"default_param_blank.svg",hollow:"default_param_blank.svg",materialHeightExt:"default_param_blank.svg",materialHeightInt:"default_param_blank.svg",spokeNb:"default_param_blank.svg",spokeWidth:"default_param_blank.svg",spokeRound:"default_param_blank.svg",wheelAxis:"default_param_blank.svg",wheelHeight:"default_param_blank.svg",wheelMidExtra:"default_param_blank.svg",wheelAxisLength:"default_param_blank.svg",wheelAxisRadius:"default_param_blank.svg",wheelMidRadius:"default_param_blank.svg",wheelRadiusExtra:"default_param_blank.svg",wheelAxisExtRound:"default_param_blank.svg",wheelAxisIntRound:"default_param_blank.svg",wheelExtraRound:"default_param_blank.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Te(s,t,u=""){const o=_t(oe.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
22
+ `;try{const i=[],d=te(),l=te();d.set1ModuleToothNumber(t.module,t.N1),l.set1ModuleToothNumber(t.module,t.N2),d.set2CenterPosition(t.c1x,t.c1y);const g=kt(t.angleCenterCenter),[a,f,r]=Ie(d,l,g,t.addInterAxis);l.set2CenterPosition(a,f),d.set3CircleRadius(t.ah1,t.dh1,t.bh1,t.bRound1),l.set3CircleRadius(t.ah2,t.dh2,t.bh2,t.bRound2);const[c,_,S,H]=Ve(d,l,t.brr1,t.blr1,t.brr2,t.blr2,t.involSym,t.involROpt,t.involROpt);d.set4BaseCircles(c,_),l.set4BaseCircles(S,H),d.set5AddendumThickness(t.at1),l.set5AddendumThickness(t.at2);const N=kt(t.initAngle1)+s*3*d.as/100;d.set6Angles(N,g);const w=Be(d,l,N,g,r,t.gw2Position);w.prepare();for(const $ of w.getContours())n.addDynamics($);n.addPoints(w.getContactPoint()),l.set6Angles(w.getInitAngle2(),g+Math.PI),o.logstr+=w.getMsg(),d.set7InvoluteDetails(t.involArcPairs1,t.skinThickness1),l.set7InvoluteDetails(t.involArcPairs2,t.skinThickness2);for(const $ of d.getRefCircles())n.addDynamics($);for(const $ of l.getRefCircles())n.addDynamics($);n.addDynamics(d.getToothRef()),n.addDynamics(l.getToothRef());const D=d.getProfile();if(o.logstr+=d.getMsg(),o.logstr+=D.check(),i.push(D),t.centralAxis===1){const $=ye(d.cx,d.cy,t.axisRadius,t.ribNb,t.ribWidth,t.ribHeight,t.ribRound1,t.ribRound2,N);o.logstr+=$.check(),i.push($)}if(t.hollow===1){const $=d.br,O=t.axisRadius+t.ribHeight,I=$-t.materialHeightExt,k=O+t.materialHeightInt;if(k>I)throw`err902: hollowMaterialInt ${L(k)} bigger than hollowMaterialExt ${L(I)}`;const m=Oe(d.cx,d.cy,I,k,t.spokeNb,t.spokeWidth,t.spokeRound,N);for(const G of m)o.logstr+=G.check(),i.push(G)}n.addMainOI(i);const E=l.getProfile();o.logstr+=E.check(),n.addSecond(E);const A=[],R=d.ar+t.wheelRadiusExtra;if(t.wheelAxis===1){const $=ee(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!0),O=ee(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!1);A.push($),h.addSecond(O)}else{const $=z(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke(),O=z(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(-R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke();A.push($),h.addSecond(O)}h.addMainOI(A),o.fig={teethProfile:n,axisProfile:h};const v=o.partName,b=t.wheelHeight/2+t.wheelMidExtra+t.wheelAxisLength+10;o.vol={extrudes:[{outName:`subpax_${v}_teethProfile`,face:`${v}_teethProfile`,extrudeMethod:W.eLinearOrtho,length:2*b,rotate:[0,0,0],translate:[0,0,-b]},{outName:`subpax_${v}_axisProfile`,face:`${v}_axisProfile`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:dt.eIntersection,inList:[`subpax_${v}_teethProfile`,`subpax_${v}_axisProfile`]}]},o.logstr+=`gear_wheel_wheel drawn successfully!
23
23
  `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Ut={pTitle:"Gearwheel-gearwheel",pDescription:"Gear-system with two wheels",pDef:oe,pGeom:Te},se={partName:"simplified_gear_wheel",params:[e("module","mm",10,.1,100,.1),e("N1","scalar",23,3,1e3,1),e("c1x","mm",0,-200,200,1),e("c1y","mm",0,-200,200,1),Lt("centralAxis",!0),e("axisRadius","mm",10,.1,200,.1),e("ribNb","scalar",5,0,32,1),e("ribWidth","mm",8,1,100,.1),e("ribHeight","mm",8,1,100,.1),e("ribRound1","mm",2,0,20,.1),e("ribRound2","mm",2,0,20,.1),Lt("hollow",!0),e("materialHeightExt","mm",20,1,200,.5),e("materialHeightInt","mm",15,1,200,.5),e("spokeNb","scalar",5,1,18,1),e("spokeWidth","mm",15,1,200,.1),e("spokeRound","mm",10,0,20,.1),Lt("wheelAxis",!0),e("wheelHeight","mm",40,.1,400,.1),e("wheelMidExtra","mm",6,0,10,.1),e("wheelAxisLength","mm",40,0,400,.1),e("wheelAxisRadius","mm",20,0,200,.1),e("wheelMidRadius","mm",60,0,200,.1),e("wheelRadiusExtra","mm",1,0,20,.1),e("wheelAxisExtRound","mm",4,0,20,.1),e("wheelAxisIntRound","mm",0,0,20,.1),e("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"default_param_blank.svg",N1:"default_param_blank.svg",c1x:"default_param_blank.svg",c1y:"default_param_blank.svg",centralAxis:"default_param_blank.svg",axisRadius:"default_param_blank.svg",ribNb:"default_param_blank.svg",ribWidth:"default_param_blank.svg",ribHeight:"default_param_blank.svg",ribRound1:"default_param_blank.svg",ribRound2:"default_param_blank.svg",hollow:"default_param_blank.svg",materialHeightExt:"default_param_blank.svg",materialHeightInt:"default_param_blank.svg",spokeNb:"default_param_blank.svg",spokeWidth:"default_param_blank.svg",spokeRound:"default_param_blank.svg",wheelAxis:"default_param_blank.svg",wheelHeight:"default_param_blank.svg",wheelMidExtra:"default_param_blank.svg",wheelAxisLength:"default_param_blank.svg",wheelAxisRadius:"default_param_blank.svg",wheelMidRadius:"default_param_blank.svg",wheelRadiusExtra:"default_param_blank.svg",wheelAxisExtRound:"default_param_blank.svg",wheelAxisIntRound:"default_param_blank.svg",wheelExtraRound:"default_param_blank.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Fe(s,t,u=""){const o=_t(se.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
24
24
  `;try{const i=Ht(Ut.pDef,"_ref1");i.setVal("module",t.module),i.setVal("N1",t.N1),i.setVal("c1x",t.c1x),i.setVal("c1y",t.c1y),i.setVal("centralAxis",t.centralAxis),i.setVal("axisRadius",t.axisRadius),i.setVal("ribNb",t.ribNb),i.setVal("ribWidth",t.ribWidth),i.setVal("ribHeight",t.ribHeight),i.setVal("ribRound1",t.ribRound1),i.setVal("ribRound2",t.ribRound2),i.setVal("hollow",t.hollow),i.setVal("materialHeightExt",t.materialHeightExt),i.setVal("materialHeightInt",t.materialHeightInt),i.setVal("spokeNb",t.spokeNb),i.setVal("spokeWidth",t.spokeWidth),i.setVal("spokeRound",t.spokeRound),i.setVal("wheelAxis",t.wheelAxis),i.setVal("wheelHeight",t.wheelHeight),i.setVal("wheelMidExtra",t.wheelMidExtra),i.setVal("wheelAxisLength",t.wheelAxisLength),i.setVal("wheelAxisRadius",t.wheelAxisRadius),i.setVal("wheelMidRadius",t.wheelMidRadius),i.setVal("wheelRadiusExtra",t.wheelRadiusExtra),i.setVal("wheelAxisExtRound",t.wheelAxisExtRound),i.setVal("wheelAxisIntRound",t.wheelAxisIntRound),i.setVal("wheelExtraRound",t.wheelExtraRound);const d=Ut.pGeom(s,i.getParamVal(),i.getSuffix());Dt(d),o.logstr+=Pt(d.logstr,i.getPartNameSuffix()),n.mergeFigure(d.fig.teethProfile),h.mergeFigure(d.fig.axisProfile),o.fig={teethProfile:n,axisProfile:h};const l=o.partName;o.vol={inherits:[{outName:`inpax_${l}_gearWW`,subdesign:"pax_gear_wheel_wheel_ref1",subgeom:d,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[],volumes:[{outName:`pax_${l}`,boolMethod:dt.eIdentity,inList:[`inpax_${l}_gearWW`]}]};const g={partName:i.getPartName(),dparam:i.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]};o.sub={gear_wheel_wheel_1:g},o.logstr+=`simplified_gear_wheel drawn successfully!
25
25
  `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var me={pTitle:"Simplified gearwheel",pDescription:"One simplified gearwheel without details on teeth-profile",pDef:se,pGeom:Fe};function pe(s){let t="";const u=s.PHD1/2,o=s.PHD5/2,n=2*Math.asin(s.PHR4/u),h=2*Math.asin(s.PHL2/(2*o)),i=2*Math.PI/s.PHN1-h,d=s.PHL2/2,l=Math.sqrt(o**2-d**2)-u,g=Math.sqrt(d**2+l**2),a=Math.acos(l/g),f=Math.acos(s.PHR4/g),r=Math.PI-a-f;if(o<u+s.PHR4)throw`err211: PHD5 ${s.PHD5} too small compare to PHD1 ${s.PHD1} or PHR4 ${s.PHR4}`;if(i<h)throw`err212: PHL2 ${s.PHL2} too large compare to PHN1 ${s.PHN1}`;if(s.PHD3>2*s.PHR4)throw`err213: PHD3 ${s.PHD3} too large compare to PHR4 ${s.PHR4}`;r>Math.PI/2-n&&(t+=`warn345: PHL2 is quiet small ${L(s.PHL2)} mm
26
26
  `),t+=`petal angle: ${L(ht(h))} degree
27
27
  `,t+=`hollow angle: ${L(ht(i))} degree
28
28
  `;const c=rt(0,0),S=rt(o,0).rotate(c,-h/2),H=rt(u,0),N=rt(u-s.PHR4,0),w=N.rotate(H,r),D=N.rotate(H,-r),E=z(S.cx,S.cy).addCornerRounded(s.PHR6).addSegStrokeA(w.cx,w.cy).addPointA(u-s.PHR4,0).addPointA(D.cx,D.cy).addSegArc2().addSegStrokeAP(h/2,o).addCornerRounded(s.PHR6).addPointAP(h/2+i/2,o).addPointAP(h/2+i,o).addSegArc2(),A=z(S.cx,S.cy),R=[...Array(s.PHN1).keys()].map(v=>v*(h+i));for(const v of R)A.addPartial(E.rotate(0,0,v));return[t,A,R]}function ie(s){const t="",u=s.D1/2,o=s.D2/2,n=s.D4/2,h=2*Math.PI/s.N1,i=s.L1/2,d=Math.sqrt(o**2-i**2),l=Math.asin(i/o),g=u-d,a=Math.atan2(i,g),f=Math.sqrt(i**2+g**2),r=Math.acos(n/f),c=a+r,_=(h-2*l)/2;if(_<0)throw`err464: N1 ${s.N1} is too large compare to D2 ${s.D2}, L1 ${s.L1}`;if(u<o)throw`err465: D2 ${s.D2} is too large compare to D1 ${s.D1}`;const S=z(d,-i),H=rt(0,0),N=rt(o,0),w=rt(u,0),E=rt(u-n,0).rotate(w,c),A=N.rotate(H,l+_),R=N.rotate(H,h-l),v=z(d,-i).addCornerRounded(s.R5).addSegStrokeA(E.cx,E.cy).addPointA(u+n,0).addPointA(E.cx,-E.cy).addSegArc2().addSegStrokeA(d,i).addCornerRounded(s.R5).addPointA(A.cx,A.cy).addPointA(R.cx,R.cy).addSegArc2();for(let b=0;b<s.N1;b++)S.addPartial(v.rotate(0,0,b*h));return[t,S,h]}function Tt(s,t){let u="";const o=s.SD2/2,n=o+s.SE1,h=2*n;let i=!1,d=-o,l=-n;if(t&&(i=!0,d=n,l=o),s.SL2<n)throw`err421: SL2 ${s.SL2} is too small compare to SD2 ${s.SD2} and SE1 ${s.SE1}`;u+=`info309: spring height: ${L(s.SL1+h)} length: ${L(s.SN1*2*(s.SD2+s.SE1))}
29
- `;const g=z(0,0);for(let a=0;a<s.SN1;a++)g.addSegStrokeR(0,-s.SL1).addPointR(2*d,0).addSegArc(Math.abs(d),!1,i),a<s.SN1-1?g.addSegStrokeR(0,s.SL1).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!i):s.Send===1?g.addSegStrokeR(0,s.SL2):g.addSegStrokeR(0,s.SL2-n).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!i);s.Send===1?g.addSegStrokeR(-s.SE1,0):g.addSegStrokeR(s.SE1,0);for(let a=0;a<s.SN1;a++)a>0?g.addPointR(-2*d,0).addSegArc(Math.abs(d),!1,i).addSegStrokeR(0,-s.SL1):s.Send===1?g.addSegStrokeR(0,-s.SL2):g.addPointR(-2*d,0).addSegArc(Math.abs(d),!1,i).addSegStrokeR(0,-s.SL2+n),g.addPointR(-2*l,0).addSegArc(Math.abs(l),!1,!i).addSegStrokeR(0,s.SL1);return[u,g]}function Je(s){let t="";const u=s.D6/2,o=2*Math.PI/s.N2,n=s.E2/2,h=2*Math.asin(n/u),i=(o-h)/2,l=(s.N2<3?0:Math.PI/s.N2)+kt(s.SA1),g=Math.PI/2-l,a=-Math.PI/2+l,f=s.SD1/2;if(i<0)throw`err564: N2 ${s.N2} is too large compare to D6 ${s.D6}, E2 ${s.E2}`;if(s.orientation===2&&s.N2%2===1)throw`err565: N2 ${s.N2} is odd and orientation is alt`;const[r,c]=Tt(s,!1),[,_]=Tt(s,!0);t+=r;const S=rt(0,-u),H=rt(0,0),N=S.rotate(H,h),w=S.translate(0,s.L2),D=w.translate(-f,0),E=D.translate(0,f),A=D.translate(0,f+s.SE1),R=A.rotate(D,g),v=w.translate(0,f+s.SE1).translate(s.SE1,0),b=S.rotate(H,-h),$=w.translate(f,0),O=$.translate(0,f),I=O.rotate($,a),k=$.translate(0,f+s.SE1),m=w.translate(0,f+s.SE1).translate(-s.SE1,0),G=z(N.cx,N.cy).addSegStrokeA(v.cx,v.cy).addSegStrokeA(A.cx,A.cy),C=z(A.cx,A.cy).addPointA(R.cx,R.cy).addSegArc(f+s.SE1,!1,!0);C.addPartial(c.rotate(0,0,-l).translate(R.cx,R.cy)),C.addPointA(E.cx,E.cy).addPointA(w.cx,w.cy).addSegArc2().addSegStrokeA(S.cx,S.cy),G.addPartial(C);const T=z(S.cx,S.cy).addSegStrokeA(w.cx,w.cy).addPointA(O.cx,O.cy).addPointA(I.cx,I.cy).addSegArc2();T.addPartial(_.rotate(0,0,l).translate(I.cx,I.cy)),T.addPointA(k.cx,k.cy).addSegArc(f+s.SE1,!1,!0);const J=z(k.cx,k.cy).addSegStrokeA(m.cx,m.cy).addSegStrokeA(b.cx,b.cy),j=z(S.cx,S.cy).addPartial(T).addPartial(J),V=z(u,0);if(s.orientation===2)for(let K=0;K<s.N2/2;K++){V.addPointAP(-2*K*o-2*i,u).addPointAP(-2*K*o-4*i,u).addSegArc2(),V.addCornerRounded(s.R7);const F=Math.PI/2-(2*K+2)*o,Y=F+2*h;V.addPartial(T.rotate(0,0,Y));const it=C.rotate(0,0,F),M=it.getFirstPoint();V.addCornerRounded(s.R7),V.addSegStrokeA(M.cx,M.cy),V.addCornerRounded(s.R7),V.addPartial(it),V.addCornerRounded(s.R7)}else for(let K=0;K<s.N2;K++)V.addPointAP(-K*o-i,u).addPointAP(-K*o-2*i,u).addSegArc2().addCornerRounded(s.R7),s.orientation===0?V.addPartial(j.rotate(0,0,Math.PI/2-(K+1)*o+h)):s.orientation===1&&V.addPartial(G.rotate(0,0,Math.PI/2-(K+1)*o)),V.addCornerRounded(s.R7);return[t,V]}var ne={partName:"vaxis_holder",params:[e("PHD1","mm",700,1,2e3,1),e("PHD2","mm",900,1,4e3,1),e("PHD5","mm",800,1,4e3,1),e("PHN1","holes",6,1,24,1),W("screw holes"),e("PHD3","mm",40,1,100,1),e("PHR4","mm",40,1,100,1),e("PHL2","mm",120,1,400,1),e("PHR6","mm",20,0,400,1),W("section"),e("PHE1","mm",10,1,80,1),e("PHH1","mm",50,1,200,1),e("PHA","degree",5,-45,45,.1),e("PHL1","mm",300,1,500,1),e("PHE2","mm",10,1,80,1),e("PHE3","mm",10,1,80,1)],paramSvg:{PHD1:"vaxis_holder_top.svg",PHD2:"vaxis_holder_top.svg",PHD5:"vaxis_holder_top.svg",PHD3:"vaxis_holder_top.svg",PHR4:"vaxis_holder_top.svg",PHN1:"vaxis_holder_top.svg",PHL2:"vaxis_holder_top.svg",PHR6:"vaxis_holder_top.svg",PHE1:"vaxis_holder_section.svg",PHH1:"vaxis_holder_section.svg",PHA:"vaxis_holder_section.svg",PHL1:"vaxis_holder_section.svg",PHE2:"vaxis_holder_section.svg",PHE3:"vaxis_holder_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function ze(s,t,u=""){const o=_t(ne.partName+u),n=y(),h=y(),i=y(),d=y();o.logstr+=`${o.partName} simTime: ${s}
29
+ `;const g=z(0,0);for(let a=0;a<s.SN1;a++)g.addSegStrokeR(0,-s.SL1).addPointR(2*d,0).addSegArc(Math.abs(d),!1,i),a<s.SN1-1?g.addSegStrokeR(0,s.SL1).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!i):s.Send===1?g.addSegStrokeR(0,s.SL2):g.addSegStrokeR(0,s.SL2-n).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!i);s.Send===1?g.addSegStrokeR(-s.SE1,0):g.addSegStrokeR(s.SE1,0);for(let a=0;a<s.SN1;a++)a>0?g.addPointR(-2*d,0).addSegArc(Math.abs(d),!1,i).addSegStrokeR(0,-s.SL1):s.Send===1?g.addSegStrokeR(0,-s.SL2):g.addPointR(-2*d,0).addSegArc(Math.abs(d),!1,i).addSegStrokeR(0,-s.SL2+n),g.addPointR(-2*l,0).addSegArc(Math.abs(l),!1,!i).addSegStrokeR(0,s.SL1);return[u,g]}function Je(s){let t="";const u=s.D6/2,o=2*Math.PI/s.N2,n=s.E2/2,h=2*Math.asin(n/u),i=(o-h)/2,l=(s.N2<3?0:Math.PI/s.N2)+kt(s.SA1),g=Math.PI/2-l,a=-Math.PI/2+l,f=s.SD1/2;if(i<0)throw`err564: N2 ${s.N2} is too large compare to D6 ${s.D6}, E2 ${s.E2}`;if(s.orientation===2&&s.N2%2===1)throw`err565: N2 ${s.N2} is odd and orientation is alt`;const[r,c]=Tt(s,!1),[,_]=Tt(s,!0);t+=r;const S=rt(0,-u),H=rt(0,0),N=S.rotate(H,h),w=S.translate(0,s.L2),D=w.translate(-f,0),E=D.translate(0,f),A=D.translate(0,f+s.SE1),R=A.rotate(D,g),v=w.translate(0,f+s.SE1).translate(s.SE1,0),b=S.rotate(H,-h),$=w.translate(f,0),O=$.translate(0,f),I=O.rotate($,a),k=$.translate(0,f+s.SE1),m=w.translate(0,f+s.SE1).translate(-s.SE1,0),G=z(N.cx,N.cy).addSegStrokeA(v.cx,v.cy).addSegStrokeA(A.cx,A.cy),C=z(A.cx,A.cy).addPointA(R.cx,R.cy).addSegArc(f+s.SE1,!1,!0);C.addPartial(c.rotate(0,0,-l).translate(R.cx,R.cy)),C.addPointA(E.cx,E.cy).addPointA(w.cx,w.cy).addSegArc2().addSegStrokeA(S.cx,S.cy),G.addPartial(C);const T=z(S.cx,S.cy).addSegStrokeA(w.cx,w.cy).addPointA(O.cx,O.cy).addPointA(I.cx,I.cy).addSegArc2();T.addPartial(_.rotate(0,0,l).translate(I.cx,I.cy)),T.addPointA(k.cx,k.cy).addSegArc(f+s.SE1,!1,!0);const J=z(k.cx,k.cy).addSegStrokeA(m.cx,m.cy).addSegStrokeA(b.cx,b.cy),j=z(S.cx,S.cy).addPartial(T).addPartial(J),V=z(u,0);if(s.orientation===2)for(let K=0;K<s.N2/2;K++){V.addPointAP(-2*K*o-2*i,u).addPointAP(-2*K*o-4*i,u).addSegArc2(),V.addCornerRounded(s.R7);const F=Math.PI/2-(2*K+2)*o,U=F+2*h;V.addPartial(T.rotate(0,0,U));const st=C.rotate(0,0,F),M=st.getFirstPoint();V.addCornerRounded(s.R7),V.addSegStrokeA(M.cx,M.cy),V.addCornerRounded(s.R7),V.addPartial(st),V.addCornerRounded(s.R7)}else for(let K=0;K<s.N2;K++)V.addPointAP(-K*o-i,u).addPointAP(-K*o-2*i,u).addSegArc2().addCornerRounded(s.R7),s.orientation===0?V.addPartial(j.rotate(0,0,Math.PI/2-(K+1)*o+h)):s.orientation===1&&V.addPartial(G.rotate(0,0,Math.PI/2-(K+1)*o)),V.addCornerRounded(s.R7);return[t,V]}var ne={partName:"vaxis_holder",params:[e("PHD1","mm",700,1,2e3,1),e("PHD2","mm",900,1,4e3,1),e("PHD5","mm",800,1,4e3,1),e("PHN1","holes",6,1,24,1),q("screw holes"),e("PHD3","mm",40,1,100,1),e("PHR4","mm",40,1,100,1),e("PHL2","mm",120,1,400,1),e("PHR6","mm",20,0,400,1),q("section"),e("PHE1","mm",10,1,80,1),e("PHH1","mm",50,1,200,1),e("PHA","degree",5,-45,45,.1),e("PHL1","mm",300,1,500,1),e("PHE2","mm",10,1,80,1),e("PHE3","mm",10,1,80,1)],paramSvg:{PHD1:"vaxis_holder_top.svg",PHD2:"vaxis_holder_top.svg",PHD5:"vaxis_holder_top.svg",PHD3:"vaxis_holder_top.svg",PHR4:"vaxis_holder_top.svg",PHN1:"vaxis_holder_top.svg",PHL2:"vaxis_holder_top.svg",PHR6:"vaxis_holder_top.svg",PHE1:"vaxis_holder_section.svg",PHH1:"vaxis_holder_section.svg",PHA:"vaxis_holder_section.svg",PHL1:"vaxis_holder_section.svg",PHE2:"vaxis_holder_section.svg",PHE3:"vaxis_holder_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function ze(s,t,u=""){const o=_t(ne.partName+u),n=y(),h=y(),i=y(),d=y();o.logstr+=`${o.partName} simTime: ${s}
30
30
  `;try{const l=kt(t.PHA),g=t.PHD1/2,a=t.PHD2/2,f=t.PHD3/2,r=t.PHD5/2,c=a+t.PHL1/2*Math.sin(l),_=a-t.PHL1/2*Math.sin(l),S=t.PHL1*Math.cos(l),H=a-t.PHE2/Math.cos(l)+t.PHE1/2*Math.tan(l),N=a-t.PHE2/Math.cos(l)-t.PHE1/2*Math.tan(l),w=Math.min(H,N),D=(t.PHL1-t.PHE1/Math.cos(l))/2,E=a-t.PHE2/Math.cos(l);if(w<r)throw`err210: PHD5 ${t.PHD5} too large compare to PHE2 ${t.PHE2} or PHA ${t.PHA}`;o.logstr+=`vaxis_holder's height: ${L(S)} mm
31
31
  `,o.logstr+=`vaxis_holder outerD1: ${L(2*c)} mm
32
32
  `,o.logstr+=`vaxis_holder outerD2: ${L(2*_)} mm
33
33
  `,o.logstr+=`vaxis_holder innerD: ${L(t.PHD1-2*t.PHR4)} mm
34
34
  `,o.logstr+=`vaxis_holder D2-next: ${L(2*E)} mm
35
- `;const A=function(F){return z(F*r,-t.PHE1/2).addSegStrokeR(F*(H-r),0).addSegStrokeRP(-Math.PI/2+F*l,D).addSegStrokeRP(-Math.PI/2+F*(Math.PI/2+l),t.PHE2).addSegStrokeRP(Math.PI/2+F*l,t.PHL1).addSegStrokeRP(Math.PI/2+F*(Math.PI/2+l),t.PHE2).addSegStrokeRP(-Math.PI/2+F*l,D).addSegStrokeA(F*r,t.PHE1/2).closeSegStroke()},R=function(F){return z(F*w,-t.PHE1/2).addSegStrokeA(F*w,t.PHE1/2).addSegStrokeA(F*(g-t.PHR4),t.PHE1/2).addSegStrokeA(F*(g-t.PHR4),-t.PHE1/2).closeSegStroke()},v=function(F){return z(F*(g+f),-t.PHE1/2).addSegStrokeA(F*(g+f),t.PHE1/2).addSegStrokeA(F*(g-f),t.PHE1/2).addSegStrokeA(F*(g-f),-t.PHE1/2).closeSegStroke()};n.addMainO(A(1)),n.addSecond(A(-1)),n.addSecond(R(1)),n.addSecond(v(1)),n.addSecond(R(-1)),n.addSecond(v(-1));const b=function(F){return z(F*(g+t.PHR4),-t.PHE1/2).addSegStrokeA(F*H,-t.PHE1/2).addSegStrokeRP(-Math.PI/2+F*l,D).closeSegStroke()},$=function(F){return z(F*(g+t.PHR4),t.PHE1/2).addSegStrokeA(F*N,t.PHE1/2).addSegStrokeRP(Math.PI/2+F*l,D).addSegStrokeA(F*(g+t.PHR4),t.PHE1+t.PHH1).closeSegStroke()};n.addSecond(b(-1)),n.addSecond($(-1)),i.mergeFigure(n,!0),d.mergeFigure(n,!0),n.addSecond(b(1)),n.addSecond($(1)),i.addMainO(b(1)),i.addSecond($(1)),d.addSecond(b(1)),d.addMainO($(1));const O=[];O.push(x(0,0,w)),h.addSecond(x(0,0,a)),h.addSecond(x(0,0,Math.max(c,_)));const[I,k,m]=pe(t);o.logstr+=I,O.push(k);for(const F of m){const Y=rt(0,0).translatePolar(F,g);O.push(x(Y.cx,Y.cy,t.PHD3/2))}const G=z(g+t.PHR4,-t.PHE3).addSegStrokeA(w,-t.PHE3).addSegStrokeA(w,t.PHE3).addSegStrokeA(g+t.PHR4,t.PHE3).closeSegStroke();for(const F of m)h.addSecond(G.rotate(0,0,F));h.addMainOI(O),o.fig={facePetal:h,faceOuter:n,faceButtress1:i,faceButtress2:d};const C=o.partName,T=zt();T.addRotation(Math.PI/2,0,0),T.addTranslation(0,t.PHE3/2,0);const J=m.map((F,Y)=>{const it=zt(T.getMatrix());return it.addRotation(0,0,F),{outName:`subpax_${C}_b1_${Y}`,face:`${C}_faceButtress1`,extrudeMethod:U.eLinearOrtho,length:t.PHE3,rotate:it.getRotation(),translate:it.getTranslation()}}),j=m.map((F,Y)=>{const it=zt(T.getMatrix());return it.addRotation(0,0,F),{outName:`subpax_${C}_b2_${Y}`,face:`${C}_faceButtress2`,extrudeMethod:U.eLinearOrtho,length:t.PHE3,rotate:it.getRotation(),translate:it.getTranslation()}}),V=m.map((F,Y)=>`subpax_${C}_b1_${Y}`),K=m.map((F,Y)=>`subpax_${C}_b2_${Y}`);o.vol={extrudes:[{outName:`subpax_${C}_outer`,face:`${C}_faceOuter`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${C}_petal`,face:`${C}_facePetal`,extrudeMethod:U.eLinearOrtho,length:t.PHE1,rotate:[0,0,0],translate:[0,0,-t.PHE1/2]},...J,...j],volumes:[{outName:`pax_${C}`,boolMethod:dt.eUnion,inList:[`subpax_${C}_petal`,`subpax_${C}_outer`,...V,...K]}]},o.sub={},o.logstr+=`vaxis_holder drawn successfully!
36
- `,o.calcErr=!1}catch(l){o.logstr+=l,console.log(l)}return o}var Mt={pTitle:"Heliostat vaxis_holder",pDescription:"The holders of the guidance mechanism for azimuth motion",pDef:ne,pGeom:ze},le={partName:"pole_static",params:[e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,10,4e3,1),e("D3","mm",800,10,4e3,1),e("H1","mm",3e3,10,4e4,10),e("H2","mm",7e3,50,4e4,10),W("thickness"),e("E1","mm",30,1,80,1),e("E2","mm",5,1,80,1),W("base holes"),e("N1","",32,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",45,1,300,1),W("door"),e("D4","mm",600,1,1200,1),e("H3","mm",300,5,1200,1),e("H4","mm",1800,10,2500,1),e("L2","mm",30,1,100,1),e("E3","mm",40,1,100,1),W("holders"),Lt("holders",!0),e("PHL1A","mm",400,1,1e3,1),e("PHL1B","mm",400,1,1e3,1),e("PHB","mm",5e3,1,2e4,1),e("PHD1A","mm",600,1,4e3,1),e("PHD1B","mm",380,1,4e3,1),e("PHN1AB","petal",6,1,24,1),W("holder-B"),e("PHD5B2","mm",600,1,4e3,1),e("PHD5B1","mm",600,1,4e3,1),e("PHR4B","mm",30,1,400,1),e("PHD3B","mm",40,1,400,1),e("PHL2B","mm",140,1,400,1),e("PHE3B","mm",10,1,50,1),e("PHR6B","mm",20,0,400,1),e("PHE1B","mm",10,1,50,1),e("PHH1B","mm",10,1,50,1),W("holder-A"),e("PHD5A","mm",900,1,4e3,1),e("PHR4A","mm",30,1,400,1),e("PHD3A","mm",40,1,400,1),e("PHL2A","mm",200,1,400,1),e("PHE3A","mm",10,1,50,1),e("PHR6A","mm",20,0,400,1),e("PHE1A","mm",10,1,50,1),e("PHH1A","mm",10,1,50,1)],paramSvg:{D1:"pole_stator_cut.svg",D2:"pole_stator_cut.svg",D3:"pole_stator_cut.svg",H1:"pole_stator_cut.svg",H2:"pole_stator_cut.svg",E1:"pole_stator_cut.svg",E2:"pole_stator_E2.svg",N1:"pole_stator_bottom.svg",D5:"pole_stator_bottom.svg",L1:"pole_stator_bottom.svg",D4:"pole_stator_face.svg",H3:"pole_stator_face.svg",H4:"pole_stator_face.svg",L2:"pole_stator_face.svg",E3:"pole_stator_right.svg",holders:"pole_stator_holders.svg",PHL1A:"pole_stator_holders.svg",PHL1B:"pole_stator_holders.svg",PHB:"pole_stator_holders.svg",PHD1A:"pole_stator_holders.svg",PHD1B:"pole_stator_holders.svg",PHN1AB:"pole_stator_holderB_top.svg",PHD5A:"pole_stator_holderB_top.svg",PHR4A:"pole_stator_holderB_top.svg",PHD3A:"pole_stator_holderB_top.svg",PHL2A:"pole_stator_holderB_top.svg",PHE3A:"pole_stator_holderB_top.svg",PHR6A:"pole_stator_holderB_top.svg",PHE1A:"pole_stator_holderB_section.svg",PHH1A:"pole_stator_holderB_section.svg",PHD5B1:"pole_stator_holderB_top.svg",PHD5B2:"pole_stator_holderB_top.svg",PHR4B:"pole_stator_holderB_top.svg",PHD3B:"pole_stator_holderB_top.svg",PHL2B:"pole_stator_holderB_top.svg",PHE3B:"pole_stator_holderB_top.svg",PHR6B:"pole_stator_holderB_top.svg",PHE1B:"pole_stator_holderB_section.svg",PHH1B:"pole_stator_holderB_section.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ge(s,t,u=""){const o=_t(le.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y(),c=y(),_=y();o.logstr+=`${o.partName} simTime: ${s}
35
+ `;const A=function(F){const U=r+(H-r)/2;return z(F*U,-t.PHE1/2).addSegStrokeR(F*(H-U),0).addSegStrokeRP(-Math.PI/2+F*l,D).addSegStrokeRP(-Math.PI/2+F*(Math.PI/2+l),t.PHE2).addSegStrokeRP(Math.PI/2+F*l,t.PHL1).addSegStrokeRP(Math.PI/2+F*(Math.PI/2+l),t.PHE2).addSegStrokeRP(-Math.PI/2+F*l,D).addSegStrokeA(F*U,t.PHE1/2).closeSegStroke()},R=function(F){return z(F*w,-t.PHE1/2).addSegStrokeA(F*w,t.PHE1/2).addSegStrokeA(F*(g-t.PHR4),t.PHE1/2).addSegStrokeA(F*(g-t.PHR4),-t.PHE1/2).closeSegStroke()},v=function(F){return z(F*(g+f),-t.PHE1/2).addSegStrokeA(F*(g+f),t.PHE1/2).addSegStrokeA(F*(g-f),t.PHE1/2).addSegStrokeA(F*(g-f),-t.PHE1/2).closeSegStroke()};n.addMainO(A(1)),n.addSecond(A(-1)),n.addSecond(R(1)),n.addSecond(v(1)),n.addSecond(R(-1)),n.addSecond(v(-1));const b=function(F){return z(F*(g+t.PHR4),-t.PHE1/2).addSegStrokeA(F*H,-t.PHE1/2).addSegStrokeRP(-Math.PI/2+F*l,D).closeSegStroke()},$=function(F){return z(F*(g+t.PHR4),t.PHE1/2).addSegStrokeA(F*N,t.PHE1/2).addSegStrokeRP(Math.PI/2+F*l,D).addSegStrokeA(F*(g+t.PHR4),t.PHE1+t.PHH1).closeSegStroke()};n.addSecond(b(-1)),n.addSecond($(-1)),i.mergeFigure(n,!0),d.mergeFigure(n,!0),n.addSecond(b(1)),n.addSecond($(1)),i.addMainO(b(1)),i.addSecond($(1)),d.addSecond(b(1)),d.addMainO($(1));const O=[];O.push(x(0,0,w)),h.addSecond(x(0,0,a)),h.addSecond(x(0,0,Math.max(c,_)));const[I,k,m]=pe(t);o.logstr+=I,O.push(k);for(const F of m){const U=rt(0,0).translatePolar(F,g);O.push(x(U.cx,U.cy,t.PHD3/2))}const G=z(g+t.PHR4,-t.PHE3).addSegStrokeA(w,-t.PHE3).addSegStrokeA(w,t.PHE3).addSegStrokeA(g+t.PHR4,t.PHE3).closeSegStroke();for(const F of m)h.addSecond(G.rotate(0,0,F));h.addMainOI(O),o.fig={facePetal:h,faceOuter:n,faceButtress1:i,faceButtress2:d};const C=o.partName,T=zt();T.addRotation(Math.PI/2,0,0),T.addTranslation(0,t.PHE3/2,0);const J=m.map((F,U)=>{const st=zt(T.getMatrix());return st.addRotation(0,0,F),{outName:`subpax_${C}_b1_${U}`,face:`${C}_faceButtress1`,extrudeMethod:W.eLinearOrtho,length:t.PHE3,rotate:st.getRotation(),translate:st.getTranslation()}}),j=m.map((F,U)=>{const st=zt(T.getMatrix());return st.addRotation(0,0,F),{outName:`subpax_${C}_b2_${U}`,face:`${C}_faceButtress2`,extrudeMethod:W.eLinearOrtho,length:t.PHE3,rotate:st.getRotation(),translate:st.getTranslation()}}),V=m.map((F,U)=>`subpax_${C}_b1_${U}`),K=m.map((F,U)=>`subpax_${C}_b2_${U}`);o.vol={extrudes:[{outName:`subpax_${C}_outer`,face:`${C}_faceOuter`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${C}_petal`,face:`${C}_facePetal`,extrudeMethod:W.eLinearOrtho,length:t.PHE1,rotate:[0,0,0],translate:[0,0,-t.PHE1/2]},...J,...j],volumes:[{outName:`pax_${C}`,boolMethod:dt.eUnion,inList:[`subpax_${C}_petal`,`subpax_${C}_outer`,...V,...K]}]},o.sub={},o.logstr+=`vaxis_holder drawn successfully!
36
+ `,o.calcErr=!1}catch(l){o.logstr+=l,console.log(l)}return o}var Mt={pTitle:"Heliostat vaxis_holder",pDescription:"The holders of the guidance mechanism for azimuth motion",pDef:ne,pGeom:ze},le={partName:"pole_static",params:[e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,10,4e3,1),e("D3","mm",800,10,4e3,1),e("H1","mm",3e3,10,4e4,10),e("H2","mm",7e3,50,4e4,10),q("thickness"),e("E1","mm",30,1,80,1),e("E2","mm",5,1,80,1),q("base holes"),e("N1","",32,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",45,1,300,1),q("door"),e("D4","mm",600,1,1200,1),e("H3","mm",300,5,1200,1),e("H4","mm",1800,10,2500,1),e("L2","mm",30,1,100,1),e("E3","mm",40,1,100,1),q("holders"),Lt("holders",!0),e("PHL1A","mm",400,1,1e3,1),e("PHL1B","mm",400,1,1e3,1),e("PHB","mm",5e3,1,2e4,1),e("PHD1A","mm",600,1,4e3,1),e("PHD1B","mm",380,1,4e3,1),e("PHN1AB","petal",6,1,24,1),q("holder-B"),e("PHD5B2","mm",600,1,4e3,1),e("PHD5B1","mm",600,1,4e3,1),e("PHR4B","mm",30,1,400,1),e("PHD3B","mm",40,1,400,1),e("PHL2B","mm",140,1,400,1),e("PHE3B","mm",10,1,50,1),e("PHR6B","mm",20,0,400,1),e("PHE1B","mm",10,1,50,1),e("PHH1B","mm",10,1,50,1),q("holder-A"),e("PHD5A","mm",900,1,4e3,1),e("PHR4A","mm",30,1,400,1),e("PHD3A","mm",40,1,400,1),e("PHL2A","mm",200,1,400,1),e("PHE3A","mm",10,1,50,1),e("PHR6A","mm",20,0,400,1),e("PHE1A","mm",10,1,50,1),e("PHH1A","mm",10,1,50,1)],paramSvg:{D1:"pole_stator_cut.svg",D2:"pole_stator_cut.svg",D3:"pole_stator_cut.svg",H1:"pole_stator_cut.svg",H2:"pole_stator_cut.svg",E1:"pole_stator_cut.svg",E2:"pole_stator_E2.svg",N1:"pole_stator_bottom.svg",D5:"pole_stator_bottom.svg",L1:"pole_stator_bottom.svg",D4:"pole_stator_face.svg",H3:"pole_stator_face.svg",H4:"pole_stator_face.svg",L2:"pole_stator_face.svg",E3:"pole_stator_right.svg",holders:"pole_stator_holders.svg",PHL1A:"pole_stator_holders.svg",PHL1B:"pole_stator_holders.svg",PHB:"pole_stator_holders.svg",PHD1A:"pole_stator_holders.svg",PHD1B:"pole_stator_holders.svg",PHN1AB:"pole_stator_holderB_top.svg",PHD5A:"pole_stator_holderB_top.svg",PHR4A:"pole_stator_holderB_top.svg",PHD3A:"pole_stator_holderB_top.svg",PHL2A:"pole_stator_holderB_top.svg",PHE3A:"pole_stator_holderB_top.svg",PHR6A:"pole_stator_holderB_top.svg",PHE1A:"pole_stator_holderB_section.svg",PHH1A:"pole_stator_holderB_section.svg",PHD5B1:"pole_stator_holderB_top.svg",PHD5B2:"pole_stator_holderB_top.svg",PHR4B:"pole_stator_holderB_top.svg",PHD3B:"pole_stator_holderB_top.svg",PHL2B:"pole_stator_holderB_top.svg",PHE3B:"pole_stator_holderB_top.svg",PHR6B:"pole_stator_holderB_top.svg",PHE1B:"pole_stator_holderB_section.svg",PHH1B:"pole_stator_holderB_section.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ge(s,t,u=""){const o=_t(le.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y(),c=y(),_=y();o.logstr+=`${o.partName} simTime: ${s}
37
37
  `;try{const S=t.D1/2,H=t.D2/2,N=t.D3/2,w=t.H1+t.H2,D=Math.atan2(S-H,t.H2),E=t.E2*Math.tan(D/2),A=t.H1-E,R=t.PHL1B/Math.cos(D),v=H+t.PHL1B/2*Math.tan(D),b=t.H1+t.H2-t.PHL1B/2,$=H+(t.PHL1B/2+t.PHB)*Math.tan(D),O=t.H1+t.H2-t.PHL1B/2-t.PHB,I=t.PHL1A/Math.cos(D),k=S-t.PHL1A/2*Math.tan(D),m=t.H1+t.PHL1A/2;if(H>S)throw`err091: D2 ${t.D2} is larger than D1 ${t.D1}`;if(N+t.E2>S)throw`err095: D3 ${t.D3} and E2 ${t.E2} are too large compare to D1 ${t.D1}`;if(t.holders){if(t.PHB<t.PHL1B)throw`err131: PHB ${t.PHB} is too small compare to PHL1B ${t.PHL1B}`;if(t.PHB>t.H2-t.PHL1B-t.PHL1A)throw`err132: PHB ${t.PHB} is too large compare to H2 ${t.H2}, PHL1B ${t.PHL1B} and PHL1A ${t.PHL1A}`}o.logstr+=`pole-height: ${L(w)} mm
38
38
  `,o.logstr+=`cone-half-angle: ${L(ht(D))} degree
39
39
  `,o.logstr+=`holder position: A: ${L(m)} B1: ${L(O)} B2: ${L(b)} mm
40
- `;const G=function(P){let nt=H-t.E2*Math.cos(D);return nt+=(w-t.E2*Math.sin(D)-P)*Math.tan(D),nt},C=function(P,nt){const Q=z(P*S,0).addSegStrokeA(P*S,t.H1).addSegStrokeA(P*H,w).addSegStrokeR(-P*t.E2*Math.cos(D),-t.E2*Math.sin(D));if(nt&&t.holders){const et=t.H1+t.PHL1A/2-t.PHE1A/2,at=et+t.PHE1A,ft=w-t.PHL1B/2+t.PHE1B/2,q=ft-t.PHE1B,lt=ft-t.PHB,St=lt-t.PHE1B;Q.addSegStrokeA(P*G(ft),ft).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),ft).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),q).addSegStrokeA(P*G(q),q).addSegStrokeA(P*G(lt),lt).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),lt).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),St).addSegStrokeA(P*G(St),St).addSegStrokeA(P*G(at),at).addSegStrokeA(P*(t.PHD1A/2-t.PHR4A),at).addSegStrokeA(P*(t.PHD1A/2-t.PHR4A),et).addSegStrokeA(P*G(et),et)}return Q.addSegStrokeA(P*(S-t.E2),A),nt?Q.addSegStrokeA(P*(S-t.E2),t.E1).addSegStrokeA(P*N,t.E1).addSegStrokeA(P*N,0):Q.addSegStrokeA(P*(S-t.E2),0),Q.closeSegStroke(),Q};n.addMainO(C(1,!1)),n.addSecond(C(1,!0)),n.addSecond(C(-1,!0));const T=t.D4/2,J=t.H4-2*T;if(J<0)throw`err121: H4 ${t.H4} is too small compare to D4 ${t.D4}`;if(T-t.L2<0)throw`err121: D4 ${t.D4} is too small compare to L2 ${t.L2}`;const j=function(P){const nt=T-P;return Me(0,t.H3+T-nt,2*nt,J+2*nt,Math.PI/2)};h.addMainOI([j(0),j(t.L2)]);const V=z(S,0).addSegStrokeA(S,t.H1).addSegStrokeA(H,w).addSegStrokeA(-H,w).addSegStrokeA(-S,t.H1).addSegStrokeA(-S,0).closeSegStroke();h.addSecond(V);const K=z(-S,t.H3).addSegStrokeR(0,t.H4).addSegStrokeR(-t.E3,0).addSegStrokeR(0,-t.H4).closeSegStroke();h.addSecond(K);const F=[];F.push(x(0,0,S)),F.push(x(0,0,N));const Y=N+t.L1,it=2*Math.PI/t.N1;for(let P=0;P<t.N1;P++){const nt=Y*Math.cos(P*it),Q=Y*Math.sin(P*it);F.push(x(nt,Q,t.D5/2))}i.addSecond(x(0,0,H)),i.addSecond(x(0,0,S-t.E2)),i.addMainOI(F),d.addMainOI([x(0,0,S+t.E3),x(0,0,S-t.E2)]),l.addMainO(j(t.L2));const M=o.partName,X=[],st=[];let B={};if(t.holders){const P=Ht(Mt.pDef,"B2");P.setVal("PHD1",t.PHD1B),P.setVal("PHD2",2*v),P.setVal("PHD5",t.PHD5B2),P.setVal("PHN1",t.PHN1AB),P.setVal("PHD3",t.PHD3B),P.setVal("PHR4",t.PHR4B),P.setVal("PHL2",t.PHL2B),P.setVal("PHR6",t.PHR6B),P.setVal("PHE1",t.PHE1B),P.setVal("PHH1",t.PHH1B),P.setVal("PHA",ht(D)),P.setVal("PHL1",R),P.setVal("PHE2",t.E2),P.setVal("PHE3",t.PHE3B);const nt=Mt.pGeom(0,P.getParamVal(),P.getSuffix());Dt(nt),o.logstr+=Pt(nt.logstr,P.getPartNameSuffix()),g.mergeFigure(nt.fig.faceOuter),a.mergeFigure(nt.fig.facePetal);const Q={outName:`inpax_${M}_hB2`,subdesign:"pax_vaxis_holderB2",subgeom:nt,rotate:[0,0,0],translate:[0,0,b]};X.push(Q),st.push(`inpax_${M}_hB2`);const et=Ht(Mt.pDef,"B1");et.setVal("PHD1",t.PHD1B),et.setVal("PHD2",2*$),et.setVal("PHD5",t.PHD5B1),et.setVal("PHN1",t.PHN1AB),et.setVal("PHD3",t.PHD3B),et.setVal("PHR4",t.PHR4B),et.setVal("PHL2",t.PHL2B),et.setVal("PHR6",t.PHR6B),et.setVal("PHE1",t.PHE1B),et.setVal("PHH1",t.PHH1B),et.setVal("PHA",ht(D)),et.setVal("PHL1",R),et.setVal("PHE2",t.E2),et.setVal("PHE3",t.PHE3B);const at=Mt.pGeom(0,et.getParamVal(),et.getSuffix());Dt(at),o.logstr+=Pt(at.logstr,et.getPartNameSuffix()),f.mergeFigure(at.fig.faceOuter),r.mergeFigure(at.fig.facePetal);const ft={outName:`inpax_${M}_hB1`,subdesign:"pax_vaxis_holderB1",subgeom:at,rotate:[0,0,0],translate:[0,0,O]};X.push(ft),st.push(`inpax_${M}_hB1`);const q=Ht(Mt.pDef,"A");q.setVal("PHD1",t.PHD1A),q.setVal("PHD2",2*k),q.setVal("PHD5",t.PHD5A),q.setVal("PHN1",t.PHN1AB),q.setVal("PHD3",t.PHD3A),q.setVal("PHR4",t.PHR4A),q.setVal("PHL2",t.PHL2A),q.setVal("PHR6",t.PHR6A),q.setVal("PHE1",t.PHE1A),q.setVal("PHH1",t.PHH1A),q.setVal("PHA",ht(D)),q.setVal("PHL1",I),q.setVal("PHE2",t.E2),q.setVal("PHE3",t.PHE3A);const lt=Mt.pGeom(0,q.getParamVal(),q.getSuffix());Dt(lt),o.logstr+=Pt(lt.logstr,q.getPartNameSuffix()),c.mergeFigure(lt.fig.faceOuter),_.mergeFigure(lt.fig.facePetal);const St={outName:`inpax_${M}_hA`,subdesign:"pax_vaxis_holderA",subgeom:lt,rotate:[0,0,0],translate:[0,0,m]};X.push(St),st.push(`inpax_${M}_hA`),B={vaxis_holder_B2:{partName:P.getPartName(),dparam:P.getDesignParamList(),orientation:[0,0,0],position:[0,0,b]},vaxis_holder_B1:{partName:et.getPartName(),dparam:et.getDesignParamList(),orientation:[0,0,0],position:[0,0,O]},vaxis_holder_A:{partName:q.getPartName(),dparam:q.getDesignParamList(),orientation:[0,0,0],position:[0,0,m]}}}o.fig={poleCut:n,poleFace:h,poleBottom:i,emptyPole:d,emptyDoor:l,holderB2Section:g,holderB2Top:a,holderB1Section:f,holderB1Top:r,holderASection:c,holderATop:_},o.vol={inherits:X,extrudes:[{outName:`subpax_${M}_pole`,face:`${M}_poleCut`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_bottom`,face:`${M}_poleBottom`,extrudeMethod:U.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_door`,face:`${M}_poleFace`,extrudeMethod:U.eLinearOrtho,length:S+t.E3,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${M}_emptyPole`,face:`${M}_emptyPole`,extrudeMethod:U.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_emptyDoor`,face:`${M}_emptyDoor`,extrudeMethod:U.eLinearOrtho,length:S+t.E3+10,rotate:[Math.PI/2,0,0],translate:[0,0,0]}],volumes:[{outName:`ipax_${M}_door`,boolMethod:dt.eIntersection,inList:[`subpax_${M}_door`,`subpax_${M}_emptyPole`]},{outName:`ipax_${M}_pole`,boolMethod:dt.eSubstraction,inList:[`subpax_${M}_pole`,`subpax_${M}_emptyDoor`]},{outName:`pax_${M}`,boolMethod:dt.eUnion,inList:[`ipax_${M}_pole`,`subpax_${M}_bottom`,`ipax_${M}_door`,...st]}]},o.sub=B,o.logstr+=`pole_static drawn successfully!
41
- `,o.calcErr=!1}catch(S){o.logstr+=S,console.log(S)}return o}var Nt={pTitle:"Heliostat pole static",pDescription:"The vertical pole of an heliostat",pDef:le,pGeom:Ge},de={partName:"rake",params:[e("D1","mm",600,10,4e3,1),e("D2","mm",400,10,4e3,1),e("D3","mm",400,10,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,1),e("H3","mm",400,0,4e3,1),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),W("transversal"),e("H4","mm",400,10,1e3,1),e("D4","mm",300,10,1e3,1),e("E4","mm",20,1,80,1),e("H5","mm",1e3,10,2e3,1),e("D5","mm",200,1,1e3,1),e("L4","mm",300,1,1e3,1),e("L5","mm",2e3,10,4e3,1),e("L6","mm",2e3,1,4e3,1),e("D8","mm",400,1,1e3,1),W("diagonal"),e("D6","mm",100,1,600,1),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),W("base"),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),W("door"),e("H6","mm",100,1,1e3,1),e("H7","mm",600,10,2e3,1),e("L9","mm",300,1,1e3,1),e("R9","mm",50,0,300,1),e("doorOrientation","degree",0,-180,180,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ue(s,t,u=""){const o=_t(de.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y();o.logstr+=`${o.partName} simTime: ${s}
42
- `;try{const _=Math.PI/2,S=-Math.PI/2,H=t.D1/2,N=t.D2/2,w=t.D3/2,D=t.D4/2,E=t.D5/2,A=t.D6/2,R=t.D7/2,v=t.D8/2,b=t.D4-2*t.E4,$=t.H1+t.H2,O=$-t.H4+t.H5,I=4*t.L4+t.L5+2*t.L6,k=t.H1+t.H2-t.H4,m=D*Math.cos(Math.PI/6),G=D*Math.sin(Math.PI/6),C=E*Math.cos(Math.PI/6),T=E*Math.sin(Math.PI/6),J=v*Math.cos(Math.PI/6),j=v*Math.sin(Math.PI/6),V=[-I/2,-t.L5/2-t.L4,t.L5/2,I/2-t.L4],K=t.H2-t.L8-t.H4-D,F=Math.atan2(H-N,t.H2),Y=I/2-t.L7-H+t.L8*Math.tan(F),it=Math.sqrt(Y**2+K**2),M=Math.atan2(Y,K),X=t.E1/Math.sin(M+F),st=it+t.E4/Math.cos(M)+X,B=H-t.L8*Math.tan(F)-X*Math.sin(M),P=t.H1+t.L8-X*Math.cos(M),nt=B-A*Math.cos(M),Q=P+A*Math.sin(M),et=A-t.E6,at=B-t.E6*Math.cos(M),ft=P+t.E6*Math.sin(M),q=Math.PI/2-M,lt=t.L9/2,St=lt-t.H7*Math.tan(F);if(t.D2>t.D1)throw`err110: D2 ${t.D2} is larger than D1 ${t.D1}`;if(t.D3+t.E1>t.D1)throw`err113: D3 ${t.D3} is too large compare to D1 ${t.D1} and E1 ${t.E1}`;if(t.H3+t.E3>t.H1)throw`err116: H3 ${t.H3} is too large compare to H1 ${t.H1} and E3 ${t.E3}`;if(t.H4+D>t.H2)throw`err119: H4 ${t.H4} is too large compare to H2 ${t.H2} and D4 ${t.D4}`;if(t.E4>D)throw`err122: E4 ${t.E4} is too large compare to D4 ${t.D4}`;if(t.D8<=t.D5)throw`err146: D8 ${t.D8} is too small compare to D5 ${t.D5}`;if(K<0)throw`err140: H2 ${t.H2} too small compare to L8 ${t.L8}, H4 ${t.H4} and D4 ${t.D4}`;if(St<t.R9)throw`err177: R9 ${t.R9} too large compare to doorHighX ${St} and L9 ${t.L9}`;if(t.L9>t.D1)throw`err180: L9 ${t.L9} too large compare to D1 ${t.D1}`;if(t.E6>t.D6/2)throw`err197: E6 ${t.E6} is too large compare to D6 ${t.D6}`;o.logstr+=`rake-L4: ${L(t.L4)} mm (compare with swing)
40
+ `;const G=function(P){let nt=H-t.E2*Math.cos(D);return nt+=(w-t.E2*Math.sin(D)-P)*Math.tan(D),nt},C=function(P,nt){const Q=z(P*S,0).addSegStrokeA(P*S,t.H1).addSegStrokeA(P*H,w).addSegStrokeR(-P*t.E2*Math.cos(D),-t.E2*Math.sin(D));if(nt&&t.holders){const et=t.H1+t.PHL1A/2-t.PHE1A/2,at=et+t.PHE1A,ft=w-t.PHL1B/2+t.PHE1B/2,Y=ft-t.PHE1B,lt=ft-t.PHB,St=lt-t.PHE1B;Q.addSegStrokeA(P*G(ft),ft).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),ft).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),Y).addSegStrokeA(P*G(Y),Y).addSegStrokeA(P*G(lt),lt).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),lt).addSegStrokeA(P*(t.PHD1B/2-t.PHR4B),St).addSegStrokeA(P*G(St),St).addSegStrokeA(P*G(at),at).addSegStrokeA(P*(t.PHD1A/2-t.PHR4A),at).addSegStrokeA(P*(t.PHD1A/2-t.PHR4A),et).addSegStrokeA(P*G(et),et)}return Q.addSegStrokeA(P*(S-t.E2),A),nt?Q.addSegStrokeA(P*(S-t.E2),t.E1).addSegStrokeA(P*N,t.E1).addSegStrokeA(P*N,0):Q.addSegStrokeA(P*(S-t.E2),0),Q.closeSegStroke(),Q};n.addMainO(C(1,!1)),n.addSecond(C(1,!0)),n.addSecond(C(-1,!0));const T=t.D4/2,J=t.H4-2*T;if(J<0)throw`err121: H4 ${t.H4} is too small compare to D4 ${t.D4}`;if(T-t.L2<0)throw`err121: D4 ${t.D4} is too small compare to L2 ${t.L2}`;const j=function(P){const nt=T-P;return Me(0,t.H3+T-nt,2*nt,J+2*nt,Math.PI/2)};h.addMainOI([j(0),j(t.L2)]);const V=z(S,0).addSegStrokeA(S,t.H1).addSegStrokeA(H,w).addSegStrokeA(-H,w).addSegStrokeA(-S,t.H1).addSegStrokeA(-S,0).closeSegStroke();h.addSecond(V);const K=z(-S,t.H3).addSegStrokeR(0,t.H4).addSegStrokeR(-t.E3,0).addSegStrokeR(0,-t.H4).closeSegStroke();h.addSecond(K);const F=[];F.push(x(0,0,S)),F.push(x(0,0,N));const U=N+t.L1,st=2*Math.PI/t.N1;for(let P=0;P<t.N1;P++){const nt=U*Math.cos(P*st),Q=U*Math.sin(P*st);F.push(x(nt,Q,t.D5/2))}i.addSecond(x(0,0,H)),i.addSecond(x(0,0,S-t.E2)),i.addMainOI(F),d.addMainOI([x(0,0,S+t.E3),x(0,0,S-t.E2)]),l.addMainO(j(t.L2));const M=o.partName,X=[],it=[];let B={};if(t.holders){const P=Ht(Mt.pDef,"B2");P.setVal("PHD1",t.PHD1B),P.setVal("PHD2",2*v),P.setVal("PHD5",t.PHD5B2),P.setVal("PHN1",t.PHN1AB),P.setVal("PHD3",t.PHD3B),P.setVal("PHR4",t.PHR4B),P.setVal("PHL2",t.PHL2B),P.setVal("PHR6",t.PHR6B),P.setVal("PHE1",t.PHE1B),P.setVal("PHH1",t.PHH1B),P.setVal("PHA",ht(D)),P.setVal("PHL1",R),P.setVal("PHE2",t.E2),P.setVal("PHE3",t.PHE3B);const nt=Mt.pGeom(0,P.getParamVal(),P.getSuffix());Dt(nt),o.logstr+=Pt(nt.logstr,P.getPartNameSuffix()),g.mergeFigure(nt.fig.faceOuter),a.mergeFigure(nt.fig.facePetal);const Q={outName:`inpax_${M}_hB2`,subdesign:"pax_vaxis_holderB2",subgeom:nt,rotate:[0,0,0],translate:[0,0,b]};X.push(Q),it.push(`inpax_${M}_hB2`);const et=Ht(Mt.pDef,"B1");et.setVal("PHD1",t.PHD1B),et.setVal("PHD2",2*$),et.setVal("PHD5",t.PHD5B1),et.setVal("PHN1",t.PHN1AB),et.setVal("PHD3",t.PHD3B),et.setVal("PHR4",t.PHR4B),et.setVal("PHL2",t.PHL2B),et.setVal("PHR6",t.PHR6B),et.setVal("PHE1",t.PHE1B),et.setVal("PHH1",t.PHH1B),et.setVal("PHA",ht(D)),et.setVal("PHL1",R),et.setVal("PHE2",t.E2),et.setVal("PHE3",t.PHE3B);const at=Mt.pGeom(0,et.getParamVal(),et.getSuffix());Dt(at),o.logstr+=Pt(at.logstr,et.getPartNameSuffix()),f.mergeFigure(at.fig.faceOuter),r.mergeFigure(at.fig.facePetal);const ft={outName:`inpax_${M}_hB1`,subdesign:"pax_vaxis_holderB1",subgeom:at,rotate:[0,0,0],translate:[0,0,O]};X.push(ft),it.push(`inpax_${M}_hB1`);const Y=Ht(Mt.pDef,"A");Y.setVal("PHD1",t.PHD1A),Y.setVal("PHD2",2*k),Y.setVal("PHD5",t.PHD5A),Y.setVal("PHN1",t.PHN1AB),Y.setVal("PHD3",t.PHD3A),Y.setVal("PHR4",t.PHR4A),Y.setVal("PHL2",t.PHL2A),Y.setVal("PHR6",t.PHR6A),Y.setVal("PHE1",t.PHE1A),Y.setVal("PHH1",t.PHH1A),Y.setVal("PHA",ht(D)),Y.setVal("PHL1",I),Y.setVal("PHE2",t.E2),Y.setVal("PHE3",t.PHE3A);const lt=Mt.pGeom(0,Y.getParamVal(),Y.getSuffix());Dt(lt),o.logstr+=Pt(lt.logstr,Y.getPartNameSuffix()),c.mergeFigure(lt.fig.faceOuter),_.mergeFigure(lt.fig.facePetal);const St={outName:`inpax_${M}_hA`,subdesign:"pax_vaxis_holderA",subgeom:lt,rotate:[0,0,0],translate:[0,0,m]};X.push(St),it.push(`inpax_${M}_hA`),B={vaxis_holder_B2:{partName:P.getPartName(),dparam:P.getDesignParamList(),orientation:[0,0,0],position:[0,0,b]},vaxis_holder_B1:{partName:et.getPartName(),dparam:et.getDesignParamList(),orientation:[0,0,0],position:[0,0,O]},vaxis_holder_A:{partName:Y.getPartName(),dparam:Y.getDesignParamList(),orientation:[0,0,0],position:[0,0,m]}}}o.fig={poleCut:n,poleFace:h,poleBottom:i,emptyPole:d,emptyDoor:l,holderB2Section:g,holderB2Top:a,holderB1Section:f,holderB1Top:r,holderASection:c,holderATop:_},o.vol={inherits:X,extrudes:[{outName:`subpax_${M}_pole`,face:`${M}_poleCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_bottom`,face:`${M}_poleBottom`,extrudeMethod:W.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_door`,face:`${M}_poleFace`,extrudeMethod:W.eLinearOrtho,length:S+t.E3,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${M}_emptyPole`,face:`${M}_emptyPole`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_emptyDoor`,face:`${M}_emptyDoor`,extrudeMethod:W.eLinearOrtho,length:S+t.E3+10,rotate:[Math.PI/2,0,0],translate:[0,0,0]}],volumes:[{outName:`ipax_${M}_door`,boolMethod:dt.eIntersection,inList:[`subpax_${M}_door`,`subpax_${M}_emptyPole`]},{outName:`ipax_${M}_pole`,boolMethod:dt.eSubstraction,inList:[`subpax_${M}_pole`,`subpax_${M}_emptyDoor`]},{outName:`pax_${M}`,boolMethod:dt.eUnion,inList:[`ipax_${M}_pole`,`subpax_${M}_bottom`,`ipax_${M}_door`,...it]}]},o.sub=B,o.logstr+=`pole_static drawn successfully!
41
+ `,o.calcErr=!1}catch(S){o.logstr+=S,console.log(S)}return o}var Nt={pTitle:"Heliostat pole static",pDescription:"The vertical pole of an heliostat",pDef:le,pGeom:Ge},de={partName:"rake",params:[e("D1","mm",600,10,4e3,1),e("D2","mm",400,10,4e3,1),e("D3","mm",400,10,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,1),e("H3","mm",400,0,4e3,1),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),q("transversal"),e("H4","mm",400,10,1e3,1),e("D4","mm",300,10,1e3,1),e("E4","mm",20,1,80,1),e("H5","mm",1e3,10,2e3,1),e("D5","mm",200,1,1e3,1),e("L4","mm",300,1,1e3,1),e("L5","mm",2e3,10,4e3,1),e("L6","mm",2e3,1,4e3,1),e("D8","mm",400,1,1e3,1),q("diagonal"),e("D6","mm",100,1,600,1),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),q("base"),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),q("door"),e("H6","mm",100,1,1e3,1),e("H7","mm",600,10,2e3,1),e("L9","mm",300,1,1e3,1),e("R9","mm",50,0,300,1),e("doorOrientation","degree",0,-180,180,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ue(s,t,u=""){const o=_t(de.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y();o.logstr+=`${o.partName} simTime: ${s}
42
+ `;try{const _=Math.PI/2,S=-Math.PI/2,H=t.D1/2,N=t.D2/2,w=t.D3/2,D=t.D4/2,E=t.D5/2,A=t.D6/2,R=t.D7/2,v=t.D8/2,b=t.D4-2*t.E4,$=t.H1+t.H2,O=$-t.H4+t.H5,I=4*t.L4+t.L5+2*t.L6,k=t.H1+t.H2-t.H4,m=D*Math.cos(Math.PI/6),G=D*Math.sin(Math.PI/6),C=E*Math.cos(Math.PI/6),T=E*Math.sin(Math.PI/6),J=v*Math.cos(Math.PI/6),j=v*Math.sin(Math.PI/6),V=[-I/2,-t.L5/2-t.L4,t.L5/2,I/2-t.L4],K=t.H2-t.L8-t.H4-D,F=Math.atan2(H-N,t.H2),U=I/2-t.L7-H+t.L8*Math.tan(F),st=Math.sqrt(U**2+K**2),M=Math.atan2(U,K),X=t.E1/Math.sin(M+F),it=st+t.E4/Math.cos(M)+X,B=H-t.L8*Math.tan(F)-X*Math.sin(M),P=t.H1+t.L8-X*Math.cos(M),nt=B-A*Math.cos(M),Q=P+A*Math.sin(M),et=A-t.E6,at=B-t.E6*Math.cos(M),ft=P+t.E6*Math.sin(M),Y=Math.PI/2-M,lt=t.L9/2,St=lt-t.H7*Math.tan(F);if(t.D2>t.D1)throw`err110: D2 ${t.D2} is larger than D1 ${t.D1}`;if(t.D3+t.E1>t.D1)throw`err113: D3 ${t.D3} is too large compare to D1 ${t.D1} and E1 ${t.E1}`;if(t.H3+t.E3>t.H1)throw`err116: H3 ${t.H3} is too large compare to H1 ${t.H1} and E3 ${t.E3}`;if(t.H4+D>t.H2)throw`err119: H4 ${t.H4} is too large compare to H2 ${t.H2} and D4 ${t.D4}`;if(t.E4>D)throw`err122: E4 ${t.E4} is too large compare to D4 ${t.D4}`;if(t.D8<=t.D5)throw`err146: D8 ${t.D8} is too small compare to D5 ${t.D5}`;if(K<0)throw`err140: H2 ${t.H2} too small compare to L8 ${t.L8}, H4 ${t.H4} and D4 ${t.D4}`;if(St<t.R9)throw`err177: R9 ${t.R9} too large compare to doorHighX ${St} and L9 ${t.L9}`;if(t.L9>t.D1)throw`err180: L9 ${t.L9} too large compare to D1 ${t.D1}`;if(t.E6>t.D6/2)throw`err197: E6 ${t.E6} is too large compare to D6 ${t.D6}`;o.logstr+=`rake-L4: ${L(t.L4)} mm (compare with swing)
43
43
  `,o.logstr+=`rake-L5: ${L(t.L5)} mm (compare with swing)
44
44
  `,o.logstr+=`rake-L6: ${L(t.L6)} mm (compare with swing)
45
45
  `,o.logstr+=`rake-beamL (4*L4+L5+2*L6): ${L(I)} mm (compare with swing)
@@ -47,74 +47,74 @@ var be=Object.defineProperty;var ke=(s,t,u)=>t in s?be(s,t,{enumerable:!0,config
47
47
  `,o.logstr+=`cone-height total: ${L(O)} mm
48
48
  `,o.logstr+=`cone-angle: ${L(ht(F))} degree
49
49
  `,o.logstr+=`wing-angle: ${L(ht(M))} degree
50
- `;const vt=t.E1*Math.cos(F),$t=t.E1*Math.sin(F),tt=t.E1*Math.tan(F/2),Pe=function(ct){return z(ct*H,0).addSegStrokeA(ct*H,t.H1).addSegStrokeA(ct*N,$).addSegStrokeA(ct*(N-vt),$-$t).addSegStrokeA(ct*(H-t.E1),t.H1-tt).addSegStrokeA(ct*(H-t.E1),0).closeSegStroke()},Et=function(ct){return z(ct*H,0).addSegStrokeA(ct*H,t.H1).addSegStrokeA(ct*N,$).addSegStrokeA(ct*(N-vt),$-$t).addSegStrokeA(ct*(H-t.E1),t.H1-tt).addSegStrokeA(ct*(H-t.E1),t.H1-t.H3).addSegStrokeA(ct*w,t.H1-t.H3).addSegStrokeA(ct*w,t.H1-t.H3-t.E3).addSegStrokeA(ct*(H-t.E1),t.H1-t.H3-t.E3).addSegStrokeA(ct*(H-t.E1),0).closeSegStroke()},xe=k-D-(t.H1-tt),ve=H-t.E1-Math.tan(F)*xe,$e=z(0,k-D).addSegStrokeA(ve,k-D).addSegStrokeA(H-t.E1,t.H1-tt).addSegStrokeA(H-t.E1,t.H1-t.H3).addSegStrokeA(0,t.H1-t.H3).closeSegStroke(),Ft=Ee(-lt,t.H1+t.H6,t.L9,2*St,t.H7,t.R9);n.addMainO(Pe(1)),n.addSecond(Et(1)),n.addSecond(Et(-1)),n.addSecond(Z(-I/2,k,I,t.D4,0)),n.addSecond(Z(-I/2,k,I,b,0));for(const ct of V)n.addSecond(gt(ct,k+G,t.L4,t.H5-G-T));n.addSecond(wt(B,P,st,2*A,q)),n.addSecond(wt(at,ft,st,2*et,q)),n.addSecond(wt(-B,P,2*A,st,M)),n.addSecond(wt(-at,ft,2*et,st,M)),n.addSecond(Ft),h.mergeFigure(n,!0),h.addMainO($e);const mt=[],pt=z(m,k+G).addSegStrokeA(J,k+t.H5-j).addSegStrokeA(C,k+t.H5-T).addPointA(-C,k+t.H5-T).addSegArc(E,!1,!1).addSegStrokeA(-J,k+t.H5-j).addSegStrokeA(-m,k+G).closeSegArc(D,!1,!1);mt.push(x(0,k,D)),mt.push(x(0,k,D-t.E4)),i.addSecond(Et(1)),i.addSecond(Et(-1)),i.addSecond(pt),i.addSecond(x(0,k+t.H5,E)),i.addSecond(Z(0,t.H1+t.L8,K,2*A,_)),i.addSecond(Z(0,t.H1+t.L8,K,2*et,_)),i.addSecond(Ft),i.addMainOI(mt),d.addMainO(x(0,k,D-t.E4)),d.addSecond(x(0,k,D)),d.addSecond(pt);const Ct=[];Ct.push(x(0,0,H)),Ct.push(x(0,0,w));const Zt=w+t.L1,Kt=2*Math.PI/t.N1;for(let ct=0;ct<t.N1;ct++){const Rt=Zt*Math.cos(ct*Kt),Qt=Zt*Math.sin(ct*Kt);Ct.push(x(Rt,Qt,R))}l.addSecond(x(0,0,H-t.E1)),l.addSecond(x(0,0,N)),l.addSecond(Z(0,-I/2,I,t.D4,_)),l.addSecond(Z(0,-I/2,I,b,_));for(const ct of V)l.addSecond(Z(0,ct,t.L4,2*m,_)),l.addSecond(Z(0,ct,t.L4,2*C,_)),l.addSecond(Z(0,ct,t.L4,2*J,_));const Bt=H-t.L8*Math.tan(F);l.addSecond(Z(0,Bt,Y,2*A,_)),l.addSecond(Z(0,Bt,Y,2*et,_)),l.addSecond(Z(0,-Bt,Y,2*A,S)),l.addSecond(Z(0,-Bt,Y,2*et,S)),l.addMainOI(Ct),g.addMainO(pt),g.addSecond(x(0,k,D)),g.addSecond(x(0,k,D-t.E4)),g.addSecond(x(0,k+t.H5,E));const Jt=[];Jt.push(x(0,0,A)),Jt.push(x(0,0,et)),a.addMainOI(Jt),f.addSecond(x(0,0,A)),f.addMainO(x(0,0,et)),r.addMainO(Ft),r.addSecond(Et(1)),r.addSecond(Et(-1)),r.addSecond(Z(-I/2,k,I,t.D4,0)),r.addSecond(Z(-I/2,k,I,b,0));for(const ct of V)r.addSecond(gt(ct,k+G,t.L4,t.H5-G-T));r.addSecond(wt(B,P,st,2*A,q)),r.addSecond(wt(at,ft,st,2*et,q)),r.addSecond(wt(-B,P,2*A,st,M)),r.addSecond(wt(-at,ft,2*et,st,M)),o.fig={faceCone:n,faceConeHollow:h,faceBeam:i,faceBeamHollow:d,faceDisc:l,faceHand:g,faceWing:a,faceWingHollow:f,faceDoor:r};const ot=o.partName,we=V.map((ct,Rt)=>({outName:`subpax_${ot}_hand_${Rt}`,face:`${ot}_faceHand`,extrudeMethod:U.eLinearOrtho,length:t.L4,rotate:[Math.PI/2,0,0],translate:[0,-ct,0]}));o.vol={extrudes:[{outName:`subpax_${ot}_cone`,face:`${ot}_faceCone`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${ot}_coneHollow`,face:`${ot}_faceConeHollow`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${ot}_beam`,face:`${ot}_faceBeam`,extrudeMethod:U.eLinearOrtho,length:I,rotate:[Math.PI/2,0,0],translate:[0,I/2,0]},{outName:`subpax_${ot}_beamHollow`,face:`${ot}_faceBeamHollow`,extrudeMethod:U.eLinearOrtho,length:I,rotate:[Math.PI/2,0,0],translate:[0,I/2,0]},{outName:`subpax_${ot}_disc`,face:`${ot}_faceDisc`,extrudeMethod:U.eLinearOrtho,length:t.E3,rotate:[0,0,0],translate:[0,0,t.H1-t.H3-t.E3]},{outName:`subpax_${ot}_wing_right`,face:`${ot}_faceWing`,extrudeMethod:U.eLinearOrtho,length:st,rotate:[-M,0,0],translate:[0,nt,Q]},{outName:`subpax_${ot}_wing_left`,face:`${ot}_faceWing`,extrudeMethod:U.eLinearOrtho,length:st,rotate:[M,0,0],translate:[0,-nt,Q]},{outName:`subpax_${ot}_wing_hollow_right`,face:`${ot}_faceWingHollow`,extrudeMethod:U.eLinearOrtho,length:st,rotate:[-M,0,0],translate:[0,nt,Q]},{outName:`subpax_${ot}_wing_hollow_left`,face:`${ot}_faceWingHollow`,extrudeMethod:U.eLinearOrtho,length:st,rotate:[M,0,0],translate:[0,-nt,Q]},{outName:`subpax_${ot}_door`,face:`${ot}_faceDoor`,extrudeMethod:U.eLinearOrtho,length:t.D1,rotate:[Math.PI/2,0,-Math.PI/2+kt(t.doorOrientation)],translate:[0,0,0]},...we],volumes:[{outName:`ipax_${ot}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${ot}_cone`,`subpax_${ot}_beam`,`subpax_${ot}_disc`,`subpax_${ot}_hand_0`,`subpax_${ot}_hand_1`,`subpax_${ot}_hand_2`,`subpax_${ot}_hand_3`,`subpax_${ot}_wing_right`,`subpax_${ot}_wing_left`]},{outName:`ipax_${ot}_hollow`,boolMethod:dt.eUnion,inList:[`subpax_${ot}_coneHollow`,`subpax_${ot}_beamHollow`,`subpax_${ot}_wing_hollow_right`,`subpax_${ot}_wing_hollow_left`,`subpax_${ot}_door`]},{outName:`pax_${ot}`,boolMethod:dt.eSubstraction,inList:[`ipax_${ot}_plus`,`ipax_${ot}_hollow`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
51
- `,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var It={pTitle:"Heliostat rake",pDescription:"The rake on top of the V-Axis of the heliostat",pDef:de,pGeom:Ue},Wt={partName:"spider",params:[e("D1","mm",100,1,400,1),e("L1","mm",400,1,1e3,1),e("L2","mm",400,1,1e3,1),e("L3","mm",100,1,400,1),e("L4","mm",3e3,10,8e3,10),W("longitude"),e("L5","mm",2e3,1,8e3,1),e("N1","",6,1,20,1),e("L6","mm",30,1,100,1),W("thickness"),e("E1","mm",3,1,80,1),e("E2","mm",50,1,200,1),e("E3","mm",3,1,80,1),e("R2","mm",100,0,400,10)],paramSvg:{D1:"spider_profile.svg",L1:"spider_profile.svg",L2:"spider_profile.svg",L3:"spider_profile.svg",L4:"spider_profile.svg",L5:"spider_lateral.svg",L6:"spider_lateral.svg",E1:"spider_profile.svg",E2:"spider_profile.svg",E3:"spider_profile.svg",R2:"spider_profile.svg",N1:"spider_lateral.svg"},sim:{tMax:360,tStep:.5,tUpdate:500}};function We(s,t,u=""){const o=_t(Wt.partName+u);let n,h;const i=y(),d=y(),l=y();o.logstr+=`${o.partName} simTime: ${s}
50
+ `;const vt=t.E1*Math.cos(F),$t=t.E1*Math.sin(F),tt=t.E1*Math.tan(F/2),Pe=function(ct){return z(ct*H,0).addSegStrokeA(ct*H,t.H1).addSegStrokeA(ct*N,$).addSegStrokeA(ct*(N-vt),$-$t).addSegStrokeA(ct*(H-t.E1),t.H1-tt).addSegStrokeA(ct*(H-t.E1),0).closeSegStroke()},Et=function(ct){return z(ct*H,0).addSegStrokeA(ct*H,t.H1).addSegStrokeA(ct*N,$).addSegStrokeA(ct*(N-vt),$-$t).addSegStrokeA(ct*(H-t.E1),t.H1-tt).addSegStrokeA(ct*(H-t.E1),t.H1-t.H3).addSegStrokeA(ct*w,t.H1-t.H3).addSegStrokeA(ct*w,t.H1-t.H3-t.E3).addSegStrokeA(ct*(H-t.E1),t.H1-t.H3-t.E3).addSegStrokeA(ct*(H-t.E1),0).closeSegStroke()},xe=k-D-(t.H1-tt),ve=H-t.E1-Math.tan(F)*xe,$e=z(0,k-D).addSegStrokeA(ve,k-D).addSegStrokeA(H-t.E1,t.H1-tt).addSegStrokeA(H-t.E1,t.H1-t.H3).addSegStrokeA(0,t.H1-t.H3).closeSegStroke(),Ft=Ee(-lt,t.H1+t.H6,t.L9,2*St,t.H7,t.R9);n.addMainO(Pe(1)),n.addSecond(Et(1)),n.addSecond(Et(-1)),n.addSecond(Z(-I/2,k,I,t.D4,0)),n.addSecond(Z(-I/2,k,I,b,0));for(const ct of V)n.addSecond(gt(ct,k+G,t.L4,t.H5-G-T));n.addSecond(wt(B,P,it,2*A,Y)),n.addSecond(wt(at,ft,it,2*et,Y)),n.addSecond(wt(-B,P,2*A,it,M)),n.addSecond(wt(-at,ft,2*et,it,M)),n.addSecond(Ft),h.mergeFigure(n,!0),h.addMainO($e);const mt=[],pt=z(m,k+G).addSegStrokeA(J,k+t.H5-j).addSegStrokeA(C,k+t.H5-T).addPointA(-C,k+t.H5-T).addSegArc(E,!1,!1).addSegStrokeA(-J,k+t.H5-j).addSegStrokeA(-m,k+G).closeSegArc(D,!1,!1);mt.push(x(0,k,D)),mt.push(x(0,k,D-t.E4)),i.addSecond(Et(1)),i.addSecond(Et(-1)),i.addSecond(pt),i.addSecond(x(0,k+t.H5,E)),i.addSecond(Z(0,t.H1+t.L8,K,2*A,_)),i.addSecond(Z(0,t.H1+t.L8,K,2*et,_)),i.addSecond(Ft),i.addMainOI(mt),d.addMainO(x(0,k,D-t.E4)),d.addSecond(x(0,k,D)),d.addSecond(pt);const Ct=[];Ct.push(x(0,0,H)),Ct.push(x(0,0,w));const Zt=w+t.L1,Kt=2*Math.PI/t.N1;for(let ct=0;ct<t.N1;ct++){const Rt=Zt*Math.cos(ct*Kt),Qt=Zt*Math.sin(ct*Kt);Ct.push(x(Rt,Qt,R))}l.addSecond(x(0,0,H-t.E1)),l.addSecond(x(0,0,N)),l.addSecond(Z(0,-I/2,I,t.D4,_)),l.addSecond(Z(0,-I/2,I,b,_));for(const ct of V)l.addSecond(Z(0,ct,t.L4,2*m,_)),l.addSecond(Z(0,ct,t.L4,2*C,_)),l.addSecond(Z(0,ct,t.L4,2*J,_));const Bt=H-t.L8*Math.tan(F);l.addSecond(Z(0,Bt,U,2*A,_)),l.addSecond(Z(0,Bt,U,2*et,_)),l.addSecond(Z(0,-Bt,U,2*A,S)),l.addSecond(Z(0,-Bt,U,2*et,S)),l.addMainOI(Ct),g.addMainO(pt),g.addSecond(x(0,k,D)),g.addSecond(x(0,k,D-t.E4)),g.addSecond(x(0,k+t.H5,E));const Jt=[];Jt.push(x(0,0,A)),Jt.push(x(0,0,et)),a.addMainOI(Jt),f.addSecond(x(0,0,A)),f.addMainO(x(0,0,et)),r.addMainO(Ft),r.addSecond(Et(1)),r.addSecond(Et(-1)),r.addSecond(Z(-I/2,k,I,t.D4,0)),r.addSecond(Z(-I/2,k,I,b,0));for(const ct of V)r.addSecond(gt(ct,k+G,t.L4,t.H5-G-T));r.addSecond(wt(B,P,it,2*A,Y)),r.addSecond(wt(at,ft,it,2*et,Y)),r.addSecond(wt(-B,P,2*A,it,M)),r.addSecond(wt(-at,ft,2*et,it,M)),o.fig={faceCone:n,faceConeHollow:h,faceBeam:i,faceBeamHollow:d,faceDisc:l,faceHand:g,faceWing:a,faceWingHollow:f,faceDoor:r};const ot=o.partName,we=V.map((ct,Rt)=>({outName:`subpax_${ot}_hand_${Rt}`,face:`${ot}_faceHand`,extrudeMethod:W.eLinearOrtho,length:t.L4,rotate:[Math.PI/2,0,0],translate:[0,-ct,0]}));o.vol={extrudes:[{outName:`subpax_${ot}_cone`,face:`${ot}_faceCone`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${ot}_coneHollow`,face:`${ot}_faceConeHollow`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${ot}_beam`,face:`${ot}_faceBeam`,extrudeMethod:W.eLinearOrtho,length:I,rotate:[Math.PI/2,0,0],translate:[0,I/2,0]},{outName:`subpax_${ot}_beamHollow`,face:`${ot}_faceBeamHollow`,extrudeMethod:W.eLinearOrtho,length:I,rotate:[Math.PI/2,0,0],translate:[0,I/2,0]},{outName:`subpax_${ot}_disc`,face:`${ot}_faceDisc`,extrudeMethod:W.eLinearOrtho,length:t.E3,rotate:[0,0,0],translate:[0,0,t.H1-t.H3-t.E3]},{outName:`subpax_${ot}_wing_right`,face:`${ot}_faceWing`,extrudeMethod:W.eLinearOrtho,length:it,rotate:[-M,0,0],translate:[0,nt,Q]},{outName:`subpax_${ot}_wing_left`,face:`${ot}_faceWing`,extrudeMethod:W.eLinearOrtho,length:it,rotate:[M,0,0],translate:[0,-nt,Q]},{outName:`subpax_${ot}_wing_hollow_right`,face:`${ot}_faceWingHollow`,extrudeMethod:W.eLinearOrtho,length:it,rotate:[-M,0,0],translate:[0,nt,Q]},{outName:`subpax_${ot}_wing_hollow_left`,face:`${ot}_faceWingHollow`,extrudeMethod:W.eLinearOrtho,length:it,rotate:[M,0,0],translate:[0,-nt,Q]},{outName:`subpax_${ot}_door`,face:`${ot}_faceDoor`,extrudeMethod:W.eLinearOrtho,length:t.D1,rotate:[Math.PI/2,0,-Math.PI/2+kt(t.doorOrientation)],translate:[0,0,0]},...we],volumes:[{outName:`ipax_${ot}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${ot}_cone`,`subpax_${ot}_beam`,`subpax_${ot}_disc`,`subpax_${ot}_hand_0`,`subpax_${ot}_hand_1`,`subpax_${ot}_hand_2`,`subpax_${ot}_hand_3`,`subpax_${ot}_wing_right`,`subpax_${ot}_wing_left`]},{outName:`ipax_${ot}_hollow`,boolMethod:dt.eUnion,inList:[`subpax_${ot}_coneHollow`,`subpax_${ot}_beamHollow`,`subpax_${ot}_wing_hollow_right`,`subpax_${ot}_wing_hollow_left`,`subpax_${ot}_door`]},{outName:`pax_${ot}`,boolMethod:dt.eSubstraction,inList:[`ipax_${ot}_plus`,`ipax_${ot}_hollow`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
51
+ `,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var It={pTitle:"Heliostat rake",pDescription:"The rake on top of the V-Axis of the heliostat",pDef:de,pGeom:Ue},Wt={partName:"spider",params:[e("D1","mm",100,1,400,1),e("L1","mm",400,1,1e3,1),e("L2","mm",400,1,1e3,1),e("L3","mm",100,1,400,1),e("L4","mm",3e3,10,8e3,10),q("longitude"),e("L5","mm",2e3,1,8e3,1),e("N1","",6,1,20,1),e("L6","mm",30,1,100,1),q("thickness"),e("E1","mm",3,1,80,1),e("E2","mm",50,1,200,1),e("E3","mm",3,1,80,1),e("R2","mm",100,0,400,10)],paramSvg:{D1:"spider_profile.svg",L1:"spider_profile.svg",L2:"spider_profile.svg",L3:"spider_profile.svg",L4:"spider_profile.svg",L5:"spider_lateral.svg",L6:"spider_lateral.svg",E1:"spider_profile.svg",E2:"spider_profile.svg",E3:"spider_profile.svg",R2:"spider_profile.svg",N1:"spider_lateral.svg"},sim:{tMax:360,tStep:.5,tUpdate:500}};function We(s,t,u=""){const o=_t(Wt.partName+u);let n,h;const i=y(),d=y(),l=y();o.logstr+=`${o.partName} simTime: ${s}
52
52
  `;try{const g=t.D1/2;if(t.D1<t.E2)throw`err476: D1 ${t.D1} smaller then E2 ${t.E2}`;const a=t.E2/2,f=Math.sqrt(g**2-a**2),r=t.L1+t.L2*Math.sqrt(2),c=t.L2+t.L1*Math.sqrt(2),_=t.L4-c;if(_<t.R2)throw`err984: L4 ${t.L4} too small compare to R2 ${t.R2}`;const S=_*Math.cos(Math.PI/4),H=_*Math.sin(Math.PI/4),N=t.E2*Math.cos(Math.PI/4),w=t.E2*Math.sin(Math.PI/4),D=t.E2*Math.tan(Math.PI/8);if(g<t.E1)throw`err092: D1 ${t.D1} too small compare to E1 ${t.E1}`;if(t.L3<t.E2)throw`err994: L3 ${t.L3} smaller than E2 ${t.E2}`;if(t.L3<2*t.E3)throw`err997: L3 ${t.L3} too small compare to E3 ${t.E3}`;const E=(t.L3-t.E2)/2*Math.cos(Math.PI/4),A=r+S+E,R=-t.L1-H+E,v=R-t.E3*Math.sqrt(2);if(t.L5<t.N1*t.L6)throw`err110: L5 ${t.L5} too small compare to N1 ${t.N1} and L6 ${t.L6}`;let b=1;t.N1>1&&(b=(t.L5-t.L6)/(t.N1-1));const $=[...Array(t.N1).keys()].map(T=>T*b);n=function(T,J,j){return z(T,J).addSegStrokeA(T+j*Math.cos(Math.PI/4),J-j*Math.sin(Math.PI/4)).addSegStrokeA(T,J-2*j*Math.sin(Math.PI/4)).addSegStrokeA(T-j*Math.cos(Math.PI/4),J-j*Math.sin(Math.PI/4)).closeSegStroke()},h=function(T,J,j,V){return z(j,V).addSegStrokeA(j+T,V).addSegStrokeA(j+T,V+J).addSegStrokeA(j,V+J).closeSegStroke()};const O=Math.sin(2*Math.PI*s/Wt.sim.tMax)*Math.PI/2;o.logstr+=`spide leg number: ${t.N1}
53
53
  `,o.logstr+=`spide position angle: ${L(ht(O))} degree
54
- `;const I=[],k=z(a,-f).addCornerRounded(t.R2).addSegStrokeA(a,-t.L1).addCornerRounded(t.R2).addSegStrokeA(r,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(r+S,-t.L1-H).addSegStrokeA(r+S-N,-t.L1-H-w).addSegStrokeA(r-D,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-r+D,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-r-S+N,-t.L1-H-w).addSegStrokeA(-r-S,-t.L1-H).addSegStrokeA(-r,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(-a,-t.L1).addCornerRounded(t.R2).addSegStrokeA(-a,-f).addCornerRounded(t.R2).closeSegArc(g,!0,!1);I.push(k),I.push(x(0,0,g-t.E1)),i.addSecond(n(A,R,t.L3)),i.addSecond(n(A,v,t.L3-2*t.E3)),i.addSecond(n(-A,R,t.L3)),i.addSecond(n(-A,v,t.L3-2*t.E3)),i.addMainOI(I),d.addMainOI([x(0,0,g),x(0,0,g-t.E1)]),d.addMainOI([n(A,R,t.L3),n(A,v,t.L3-2*t.E3)]),d.addMainOI([n(-A,R,t.L3),n(-A,v,t.L3-2*t.E3)]),d.addSecond(k),l.addSecond(h(t.L5,t.D1,0,-t.D1/2)),l.addSecond(h(t.L5,t.L3,0,-t.L4-t.L3));for(const T of $)l.addSecond(h(t.L6,t.L4,T,-t.L4));o.fig={faceLegs:i.rotate(0,0,O),faceTube:d.rotate(0,0,O),faceBody:l};const m=o.partName,G=$.map((T,J)=>({outName:`subpax_${m}_leg_${J}`,face:`${m}_faceLegs`,extrudeMethod:U.eLinearOrtho,length:t.L6,rotate:[0,0,0],translate:[0,0,T]})),C=$.map((T,J)=>`subpax_${m}_leg_${J}`);o.vol={extrudes:[{outName:`subpax_${m}_tube`,face:`${m}_faceTube`,extrudeMethod:U.eLinearOrtho,length:t.L5,rotate:[0,0,0],translate:[0,0,0]},...G],volumes:[{outName:`pax_${m}`,boolMethod:dt.eUnion,inList:[`subpax_${m}_tube`,...C]}]},o.sub={},o.logstr+=`heliostat-spider drawn successfully!
55
- `,o.calcErr=!1}catch(g){o.logstr+=g,console.log(g)}return o}var qt={pTitle:"Heliostat spider",pDescription:"The spider part for the control of the inclination of the heliostat",pDef:Wt,pGeom:We},ce={partName:"swing",params:[e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),W("radial"),e("D1","mm",400,1,1e3,1),e("E1","mm",5,1,80,1),e("H2","mm",100,1,400,1),e("H4","mm",100,1,400,1),e("E2","mm",3,1,80,1),e("L3","mm",500,1,4e3,1),W("longitudinal"),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,1,1e4,1),e("L6","mm",2e3,1,1e4,1),e("H1","mm",100,1,400,1),e("H3","mm",100,1,400,1),e("E3","mm",3,1,80,1),W("buttress"),e("S1","mm",300,0,3e3,1),e("S2","mm",10,0,2e3,1),e("R2","mm",100,0,1e3,1),W("rod overlay"),e("rod1","",10,1,40,1),e("rod2","mm",1300,10,4e3,1),e("rod3","mm",400,10,1e3,1),e("rod4","mm",100,1,400,1)],paramSvg:{L1:"swing_top.svg",L2:"swing_top.svg",L3:"swing_top.svg",L4:"swing_top.svg",L5:"swing_top.svg",L6:"swing_top.svg",D1:"swing_top.svg",H1:"swing_top.svg",H2:"swing_top.svg",H3:"swing_side.svg",H4:"swing_side.svg",E1:"swing_side.svg",E2:"swing_side.svg",E3:"swing_face.svg",S1:"swing_buttress.svg",S2:"swing_buttress.svg",R2:"swing_buttress.svg",rod1:"swing_with_rod.svg",rod2:"swing_with_rod.svg",rod3:"swing_with_rod.svg",rod4:"swing_with_rod.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function qe(s,t,u=""){const o=_t(ce.partName+u),n=y(),h=y(),i=y(),d=y(),l=y();o.logstr+=`${o.partName} simTime: ${s}
54
+ `;const I=[],k=z(a,-f).addCornerRounded(t.R2).addSegStrokeA(a,-t.L1).addCornerRounded(t.R2).addSegStrokeA(r,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(r+S,-t.L1-H).addSegStrokeA(r+S-N,-t.L1-H-w).addSegStrokeA(r-D,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-r+D,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-r-S+N,-t.L1-H-w).addSegStrokeA(-r-S,-t.L1-H).addSegStrokeA(-r,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(-a,-t.L1).addCornerRounded(t.R2).addSegStrokeA(-a,-f).addCornerRounded(t.R2).closeSegArc(g,!0,!1);I.push(k),I.push(x(0,0,g-t.E1)),i.addSecond(n(A,R,t.L3)),i.addSecond(n(A,v,t.L3-2*t.E3)),i.addSecond(n(-A,R,t.L3)),i.addSecond(n(-A,v,t.L3-2*t.E3)),i.addMainOI(I),d.addMainOI([x(0,0,g),x(0,0,g-t.E1)]),d.addMainOI([n(A,R,t.L3),n(A,v,t.L3-2*t.E3)]),d.addMainOI([n(-A,R,t.L3),n(-A,v,t.L3-2*t.E3)]),d.addSecond(k),l.addSecond(h(t.L5,t.D1,0,-t.D1/2)),l.addSecond(h(t.L5,t.L3,0,-t.L4-t.L3));for(const T of $)l.addSecond(h(t.L6,t.L4,T,-t.L4));o.fig={faceLegs:i.rotate(0,0,O),faceTube:d.rotate(0,0,O),faceBody:l};const m=o.partName,G=$.map((T,J)=>({outName:`subpax_${m}_leg_${J}`,face:`${m}_faceLegs`,extrudeMethod:W.eLinearOrtho,length:t.L6,rotate:[0,0,0],translate:[0,0,T]})),C=$.map((T,J)=>`subpax_${m}_leg_${J}`);o.vol={extrudes:[{outName:`subpax_${m}_tube`,face:`${m}_faceTube`,extrudeMethod:W.eLinearOrtho,length:t.L5,rotate:[0,0,0],translate:[0,0,0]},...G],volumes:[{outName:`pax_${m}`,boolMethod:dt.eUnion,inList:[`subpax_${m}_tube`,...C]}]},o.sub={},o.logstr+=`heliostat-spider drawn successfully!
55
+ `,o.calcErr=!1}catch(g){o.logstr+=g,console.log(g)}return o}var qt={pTitle:"Heliostat spider",pDescription:"The spider part for the control of the inclination of the heliostat",pDef:Wt,pGeom:We},ce={partName:"swing",params:[e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),q("radial"),e("D1","mm",400,1,1e3,1),e("E1","mm",5,1,80,1),e("H2","mm",100,1,400,1),e("H4","mm",100,1,400,1),e("E2","mm",3,1,80,1),e("L3","mm",500,1,4e3,1),q("longitudinal"),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,1,1e4,1),e("L6","mm",2e3,1,1e4,1),e("H1","mm",100,1,400,1),e("H3","mm",100,1,400,1),e("E3","mm",3,1,80,1),q("buttress"),e("S1","mm",300,0,3e3,1),e("S2","mm",10,0,2e3,1),e("R2","mm",100,0,1e3,1),q("rod overlay"),e("rod1","",10,1,40,1),e("rod2","mm",1300,10,4e3,1),e("rod3","mm",400,10,1e3,1),e("rod4","mm",100,1,400,1)],paramSvg:{L1:"swing_top.svg",L2:"swing_top.svg",L3:"swing_top.svg",L4:"swing_top.svg",L5:"swing_top.svg",L6:"swing_top.svg",D1:"swing_top.svg",H1:"swing_top.svg",H2:"swing_top.svg",H3:"swing_side.svg",H4:"swing_side.svg",E1:"swing_side.svg",E2:"swing_side.svg",E3:"swing_face.svg",S1:"swing_buttress.svg",S2:"swing_buttress.svg",R2:"swing_buttress.svg",rod1:"swing_with_rod.svg",rod2:"swing_with_rod.svg",rod3:"swing_with_rod.svg",rod4:"swing_with_rod.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function qe(s,t,u=""){const o=_t(ce.partName+u),n=y(),h=y(),i=y(),d=y(),l=y();o.logstr+=`${o.partName} simTime: ${s}
56
56
  `;try{const g=t.D1/2,a=g+t.S2,f=4*t.L4+t.L5+2*t.L6-2*t.H1,r=t.L4-2*t.H1,c=t.L5+2*t.H1,_=t.L6+2*t.H1;o.logstr+=`swing size: L1 ${L(t.L1)} x L2 ${L(t.L2)} mm
57
57
  `,o.logstr+=`rake-L4: ${L(r)} mm (compare with rake)
58
58
  `,o.logstr+=`rake-L5: ${L(c)} mm (compare with rake)
59
59
  `,o.logstr+=`rake-L6: ${L(_)} mm (compare with rake)
60
60
  `,o.logstr+=`rake-beamL: (4*L4+L5+2*L6-2*H1) ${L(f)} mm (compare with rake)
61
- `,n.addMainOI([x(0,0,g),x(0,0,g-t.E1)]);const S=[-t.L2/2,-t.L3-t.H2,t.L3,t.L2/2-t.H2];for(const C of S)n.addMainOI([gt(C,a-t.H4,t.H2,t.H4),gt(C+t.E2,a-t.H4+t.E2,t.H2-2*t.E2,t.H4-2*t.E2)]);n.addSecond(gt(-t.L2/2,a,t.L2,t.H3));const H=[];H.push(-t.L1/2),H.push(t.L1/2-t.H1);for(const C of[-t.L5/2-2*t.L4-t.L6,-t.L5/2-t.L4,t.L5/2,t.L5/2+t.L4+t.L6])for(const T of[0,t.L4-t.H1])H.push(C+T);for(const C of H)h.addMainOI([gt(C,a,t.H1,t.H3),gt(C+t.E3,a+t.E3,t.H1-2*t.E3,t.H3-2*t.E3)]);h.addSecond(gt(-t.L1/2,-g,t.L1,t.D1)),h.addSecond(gt(-t.L1/2,a-t.H4,t.L1,t.H4));for(const C of H)i.addSecond(gt(C,-t.L2/2,t.H1,t.L2));for(const C of S)i.addSecond(gt(-t.L1/2,C,t.L1,t.H2));i.addSecond(gt(-t.L1/2,-g,t.L1,t.D1));const N=Math.sqrt(a**2+t.S1**2),w=Math.acos(g/N),D=Math.atan2(t.S1,a),E=rt(0,0),R=E.translatePolar(Math.PI/2+D,g).rotate(E,w),v=z(-t.L3,a).addSegStrokeA(-t.S1,a).addCornerRounded(t.R2).addSegStrokeA(R.cx,R.cy).addPointA(0,-g).addPointA(-R.cx,R.cy).addSegArc2().addSegStrokeA(t.S1,a).addCornerRounded(t.R2).addSegStrokeA(t.L3,a).addSegStrokeA(t.L3,a+t.E3).addSegStrokeA(-t.L3,a+t.E3).closeSegStroke();d.addMainOI([v,x(0,0,g-t.E1)]),n.addSecond(v);for(const C of H)l.addMainO(gt(C,-t.L2/2,t.H1,t.L2));for(const C of S)l.addMainO(gt(-t.L1/2,C,t.L1,t.H2));l.addMainO(gt(-t.L1/2,-g,t.L1,t.D1));const b=-((t.rod1-1)*t.rod2+t.rod3)/2,$=(t.rod3-t.rod4)/2,O=t.rod3/2,I=1.2*t.L2,k=(I-O)/3,m=-I/2;for(let C=0;C<t.rod1;C++){const T=b+C*t.rod2;l.addSecond(gt(T+$,m,t.rod4,I));for(let J=0;J<4;J++)l.addSecond(gt(T,m+J*k,t.rod3,O,O/4))}o.fig={faceSide:n,faceFace:h,faceTop:i,faceButtress:d,faceTopWithRods:l};const G=o.partName;o.vol={extrudes:[{outName:`subpax_${G}_side`,face:`${G}_faceSide`,extrudeMethod:U.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,-t.L1/2]},{outName:`subpax_${G}_face`,face:`${G}_faceFace`,extrudeMethod:U.eLinearOrtho,length:t.L2,rotate:[0,Math.PI/2,0],translate:[-t.L2/2,0,0]},...H.map((C,T)=>({outName:`subpax_${G}_buttress_${T}`,face:`${G}_faceButtress`,extrudeMethod:U.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,C]}))],volumes:[{outName:`pax_${G}`,boolMethod:dt.eUnion,inList:[`subpax_${G}_side`,`subpax_${G}_face`,...H.map((C,T)=>`subpax_${G}_buttress_${T}`)]}]},o.sub={},o.logstr+=`heliostat-swing drawn successfully!
62
- `,o.calcErr=!1}catch(g){o.logstr+=g,console.log(g)}return o}var Vt={pTitle:"Heliostat swing",pDescription:"The swing for the heliostat inclination",pDef:ce,pGeom:qe},Yt={partName:"heliostat",params:[e("H1","mm",3e3,10,4e4,1),e("H2","mm",2500,50,4e4,1),e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,20,4e3,1),e("E1","mm",30,1,80,1),W("rake"),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,1),e("H6","mm",200,1,4e3,1),e("H7","mm",800,1,4e3,1),e("H8","mm",200,1,4e3,1),e("D3","mm",900,20,4e3,1),e("D4","mm",400,20,4e3,1),e("D5","mm",300,20,1e3,1),e("D6","mm",200,10,1e3,1),e("D7","mm",400,10,1e3,1),W("rake diagonal"),e("D9","mm",100,1,1e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),W("spider"),e("D8","mm",100,1,1e3,1),e("S1","mm",250,1,800,1),e("S2","mm",200,1,800,1),e("E2","mm",50,1,80,1),W("swing"),e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,1),e("L6","mm",2e3,1,6e3,1),e("H9","mm",100,1,400,1),W("motion amplitude"),e("al","degree",80,0,95,1),e("ar","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat_side_sizing.svg",H4:"heliostat_side_sizing.svg",H5:"heliostat_side_sizing.svg",H6:"heliostat_side_sizing.svg",H7:"heliostat_side_sizing.svg",H8:"heliostat_side_sizing.svg",H9:"heliostat_side_sizing.svg",D1:"heliostat_side_sizing.svg",D2:"heliostat_side_sizing.svg",D3:"heliostat_side_sizing.svg",D4:"heliostat_side_sizing.svg",D5:"heliostat_side_sizing.svg",D6:"heliostat_side_sizing.svg",D7:"heliostat_side_sizing.svg",D8:"heliostat_side_sizing.svg",D9:"heliostat_face_sizing.svg",S1:"heliostat_side_sizing.svg",S2:"heliostat_side_sizing.svg",E1:"heliostat_side_sizing.svg",E2:"heliostat_side_sizing.svg",L1:"heliostat_face_sizing.svg",L2:"heliostat_side_sizing.svg",L3:"heliostat_face_sizing.svg",L4:"heliostat_face_sizing.svg",L5:"heliostat_face_sizing.svg",L6:"heliostat_face_sizing.svg",L7:"heliostat_face_sizing.svg",L8:"heliostat_face_sizing.svg",al:"heliostat_side_sizing.svg",ar:"heliostat_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Ye(s,t,u=""){const o=_t(Yt.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
61
+ `,n.addMainOI([x(0,0,g),x(0,0,g-t.E1)]);const S=[-t.L2/2,-t.L3-t.H2,t.L3,t.L2/2-t.H2];for(const C of S)n.addMainOI([gt(C,a-t.H4,t.H2,t.H4),gt(C+t.E2,a-t.H4+t.E2,t.H2-2*t.E2,t.H4-2*t.E2)]);n.addSecond(gt(-t.L2/2,a,t.L2,t.H3));const H=[];H.push(-t.L1/2),H.push(t.L1/2-t.H1);for(const C of[-t.L5/2-2*t.L4-t.L6,-t.L5/2-t.L4,t.L5/2,t.L5/2+t.L4+t.L6])for(const T of[0,t.L4-t.H1])H.push(C+T);for(const C of H)h.addMainOI([gt(C,a,t.H1,t.H3),gt(C+t.E3,a+t.E3,t.H1-2*t.E3,t.H3-2*t.E3)]);h.addSecond(gt(-t.L1/2,-g,t.L1,t.D1)),h.addSecond(gt(-t.L1/2,a-t.H4,t.L1,t.H4));for(const C of H)i.addSecond(gt(C,-t.L2/2,t.H1,t.L2));for(const C of S)i.addSecond(gt(-t.L1/2,C,t.L1,t.H2));i.addSecond(gt(-t.L1/2,-g,t.L1,t.D1));const N=Math.sqrt(a**2+t.S1**2),w=Math.acos(g/N),D=Math.atan2(t.S1,a),E=rt(0,0),R=E.translatePolar(Math.PI/2+D,g).rotate(E,w),v=z(-t.L3,a).addSegStrokeA(-t.S1,a).addCornerRounded(t.R2).addSegStrokeA(R.cx,R.cy).addPointA(0,-g).addPointA(-R.cx,R.cy).addSegArc2().addSegStrokeA(t.S1,a).addCornerRounded(t.R2).addSegStrokeA(t.L3,a).addSegStrokeA(t.L3,a+t.E3).addSegStrokeA(-t.L3,a+t.E3).closeSegStroke();d.addMainOI([v,x(0,0,g-t.E1)]),n.addSecond(v);for(const C of H)l.addMainO(gt(C,-t.L2/2,t.H1,t.L2));for(const C of S)l.addMainO(gt(-t.L1/2,C,t.L1,t.H2));l.addMainO(gt(-t.L1/2,-g,t.L1,t.D1));const b=-((t.rod1-1)*t.rod2+t.rod3)/2,$=(t.rod3-t.rod4)/2,O=t.rod3/2,I=1.2*t.L2,k=(I-O)/3,m=-I/2;for(let C=0;C<t.rod1;C++){const T=b+C*t.rod2;l.addSecond(gt(T+$,m,t.rod4,I));for(let J=0;J<4;J++)l.addSecond(gt(T,m+J*k,t.rod3,O,O/4))}o.fig={faceSide:n,faceFace:h,faceTop:i,faceButtress:d,faceTopWithRods:l};const G=o.partName;o.vol={extrudes:[{outName:`subpax_${G}_side`,face:`${G}_faceSide`,extrudeMethod:W.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,-t.L1/2]},{outName:`subpax_${G}_face`,face:`${G}_faceFace`,extrudeMethod:W.eLinearOrtho,length:t.L2,rotate:[0,Math.PI/2,0],translate:[-t.L2/2,0,0]},...H.map((C,T)=>({outName:`subpax_${G}_buttress_${T}`,face:`${G}_faceButtress`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,C]}))],volumes:[{outName:`pax_${G}`,boolMethod:dt.eUnion,inList:[`subpax_${G}_side`,`subpax_${G}_face`,...H.map((C,T)=>`subpax_${G}_buttress_${T}`)]}]},o.sub={},o.logstr+=`heliostat-swing drawn successfully!
62
+ `,o.calcErr=!1}catch(g){o.logstr+=g,console.log(g)}return o}var Vt={pTitle:"Heliostat swing",pDescription:"The swing for the heliostat inclination",pDef:ce,pGeom:qe},Yt={partName:"heliostat",params:[e("H1","mm",3e3,10,4e4,1),e("H2","mm",2500,50,4e4,1),e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,20,4e3,1),e("E1","mm",30,1,80,1),q("rake"),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,1),e("H6","mm",200,1,4e3,1),e("H7","mm",800,1,4e3,1),e("H8","mm",200,1,4e3,1),e("D3","mm",900,20,4e3,1),e("D4","mm",400,20,4e3,1),e("D5","mm",300,20,1e3,1),e("D6","mm",200,10,1e3,1),e("D7","mm",400,10,1e3,1),q("rake diagonal"),e("D9","mm",100,1,1e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),q("spider"),e("D8","mm",100,1,1e3,1),e("S1","mm",250,1,800,1),e("S2","mm",200,1,800,1),e("E2","mm",50,1,80,1),q("swing"),e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,1),e("L6","mm",2e3,1,6e3,1),e("H9","mm",100,1,400,1),q("motion amplitude"),e("al","degree",80,0,95,1),e("ar","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat_side_sizing.svg",H4:"heliostat_side_sizing.svg",H5:"heliostat_side_sizing.svg",H6:"heliostat_side_sizing.svg",H7:"heliostat_side_sizing.svg",H8:"heliostat_side_sizing.svg",H9:"heliostat_side_sizing.svg",D1:"heliostat_side_sizing.svg",D2:"heliostat_side_sizing.svg",D3:"heliostat_side_sizing.svg",D4:"heliostat_side_sizing.svg",D5:"heliostat_side_sizing.svg",D6:"heliostat_side_sizing.svg",D7:"heliostat_side_sizing.svg",D8:"heliostat_side_sizing.svg",D9:"heliostat_face_sizing.svg",S1:"heliostat_side_sizing.svg",S2:"heliostat_side_sizing.svg",E1:"heliostat_side_sizing.svg",E2:"heliostat_side_sizing.svg",L1:"heliostat_face_sizing.svg",L2:"heliostat_side_sizing.svg",L3:"heliostat_face_sizing.svg",L4:"heliostat_face_sizing.svg",L5:"heliostat_face_sizing.svg",L6:"heliostat_face_sizing.svg",L7:"heliostat_face_sizing.svg",L8:"heliostat_face_sizing.svg",al:"heliostat_side_sizing.svg",ar:"heliostat_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Ye(s,t,u=""){const o=_t(Yt.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
63
63
  `;try{const i=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;o.logstr+=`heliostat-height: ${L(i)}, diameter ${L(t.D1)} m
64
64
  `,o.logstr+=`heliostat-swing-length: ${L(t.L1)}, width ${L(t.L2)} m
65
65
  `;const l=(t.al-t.ar)/2-Math.sin(2*Math.PI*s/Yt.sim.tMax)*(t.al+t.ar)/2,g=kt(l);o.logstr+=`swing position angle: ${L(ht(g))} degree
66
66
  `;const a=t.H1+t.H2-t.H3,f=a+t.H4+t.H5-t.H6+t.H7,r=f+t.H8,c=Ht(Nt.pDef),_=Ht(It.pDef),S=Ht(qt.pDef),H=Ht(Vt.pDef);c.setVal("H1",t.H1),c.setVal("H2",t.H2),c.setVal("D1",t.D1),c.setVal("D2",t.D2),c.setVal("D3",t.D1-6*t.E1),c.setVal("E1",t.E1),c.setVal("E2",t.E1);const N=32,w=(t.D1-6*t.E1)/(N*4);c.setVal("N1",N),c.setVal("D5",w),c.setVal("L1",t.E1+w/2),c.setVal("H3",t.H1/4),c.setVal("H4",t.H1/2),c.setVal("D4",t.H1/4),c.setVal("L2",t.H1/80),c.setVal("E3",t.H1/80),c.setVal("holders",0),_.setVal("H1",t.H4),_.setVal("H2",t.H5),_.setVal("H3",t.H4-2*t.E1),_.setVal("D1",t.D3),_.setVal("D2",t.D4),_.setVal("L9",t.D3/2),_.setVal("H7",t.D3/2*1.6),_.setVal("H6",t.D3/20),_.setVal("R9",t.D3/20),_.setVal("E1",t.E1),_.setVal("E3",t.E1),_.setVal("E4",t.E1),_.setVal("E6",t.E1);const D=t.D2*.6,E=24,A=D/(E*4);if(_.setVal("D3",D),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(_.setVal("N1",E),_.setVal("D7",A),_.setVal("L1",A),_.setVal("H4",t.H6),_.setVal("D4",t.D5),_.setVal("L7",t.L7),_.setVal("L8",t.L8),_.setVal("D6",t.D9),_.setVal("H5",t.H7+t.H8),_.setVal("D5",t.D6),_.setVal("D8",t.D7),t.D6>=t.D7)throw`err164: D6 ${t.D6} too large compare to D7 ${t.D7}`;const R=t.L4-2*t.L3;if(_.setVal("L4",R),R<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;_.setVal("L5",t.L5+2*t.L3),_.setVal("L6",t.L6+2*t.L3);const v=t.L5*.96,b=6;if(S.setVal("L5",v),S.setVal("D1",t.D8),S.setVal("L1",t.S1),S.setVal("L2",t.S2),S.setVal("L3",t.E2*2),S.setVal("E1",t.E1),S.setVal("E2",t.E2),S.setVal("E3",t.E1),S.setVal("L4",t.L2/2-t.H8),S.setVal("R2",0),S.setVal("N1",b),S.setVal("L6",v/(b*10)),H.setVal("L2",t.L2),H.setVal("D1",t.D6),H.setVal("H3",t.H9),H.setVal("H4",t.H9),H.setVal("L1",t.L1),t.L1<4*t.L4+2*t.L6+t.L5+2*t.L3)throw`err185: L1 ${t.L1} too small compare to L4 ${t.L4}, L5 ${t.L5}, L6 ${t.L6}`;H.setVal("H1",t.L3),H.setVal("H2",t.L3),H.setVal("L4",t.L4),H.setVal("L5",t.L5),H.setVal("L6",t.L6),H.setVal("L3",t.D7),H.setVal("S1",t.D6/2),H.setVal("R2",0);const $=Nt.pGeom(0,c.getParamVal(),c.getSuffix());Dt($),o.logstr+=Pt($.logstr,c.getPartNameSuffix());const O=It.pGeom(0,_.getParamVal(),_.getSuffix());Dt(O),o.logstr+=Pt(O.logstr,_.getPartNameSuffix());const I=qt.pGeom(0,S.getParamVal(),S.getSuffix());Dt(I),o.logstr+=Pt(I.logstr,S.getPartNameSuffix());const k=Vt.pGeom(0,H.getParamVal(),H.getSuffix());Dt(k),o.logstr+=Pt(k.logstr,H.getPartNameSuffix()),n.mergeFigure($.fig.poleCut),n.mergeFigure(O.fig.faceBeam.translate(0,a)),n.mergeFigure(I.fig.faceLegs.translate(0,f).rotate(0,f,g/2)),n.mergeFigure(k.fig.faceSide.translate(0,r).rotate(0,r,g)),h.mergeFigure($.fig.poleCut),h.mergeFigure(O.fig.faceCone.translate(0,a)),h.mergeFigure(I.fig.faceBody.translate(-v/2,f)),h.mergeFigure(k.fig.faceFace.translate(0,r)),o.fig={faceSide:n,faceFace:h};const m=o.partName;o.vol={inherits:[{outName:`inpax_${m}_poleStatic`,subdesign:"pax_pole_static",subgeom:$,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${m}_rake`,subdesign:"pax_rake",subgeom:O,rotate:[0,0,0],translate:[0,0,a]},{outName:`inpax_${m}_swing`,subdesign:"pax_swing",subgeom:k,rotate:[Math.PI/2,0,0],translate:[0,0,r]},{outName:`inpax_${m}_spider`,subdesign:"pax_spider",subgeom:I,rotate:[Math.PI/2,0,0],translate:[0,v/2,f]}],extrudes:[],volumes:[{outName:`pax_${m}`,boolMethod:dt.eUnion,inList:[`inpax_${m}_poleStatic`,`inpax_${m}_rake`,`inpax_${m}_swing`,`inpax_${m}_spider`]}]};const G={partName:c.getPartName(),dparam:c.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]},C={partName:_.getPartName(),dparam:_.getDesignParamList(),orientation:[0,0,0],position:[0,0,a]},T={partName:S.getPartName(),dparam:S.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,v/2,f]},J={partName:H.getPartName(),dparam:H.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,0,r]};o.sub={pole_static_1:G,rake_1:C,spider_1:T,swing_1:J},o.logstr+=`heliostat-overview drawn successfully!
67
- `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Xe={pTitle:"Heliostat overview",pDescription:"The heliostat inclination mechanism",pDef:Yt,pGeom:Ye},re={partName:"rake_stopper",params:[e("D1","mm",600,10,4e3,1),e("D2","mm",400,10,4e3,1),e("D3","mm",400,1,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,1),e("H3","mm",400,0,4e3,1),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),W("transversal"),e("H4","mm",200,1,1e3,1),e("D4","mm",300,1,1e3,1),e("E4","mm",20,1,80,1),e("H5","mm",400,1,2e3,1),e("D5","mm",200,1,1e3,1),e("L4","mm",300,1,1e3,1),e("L5","mm",2e3,1,4e3,1),e("L6","mm",2e3,1,4e3,1),e("D8","mm",400,1,1e3,1),W("diagonal"),e("D6","mm",100,1,600,1),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),W("base"),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),W("door"),e("H6","mm",100,1,1e3,1),e("H7","mm",600,1,2e3,1),e("L9","mm",300,1,1e3,1),e("R9","mm",50,0,300,1),e("doorOrientation","degree",0,-180,180,1),W("stoppers"),e("S1","mm",100,1,300,1),e("S2","mm",2e3,1,8e3,1),e("S3","mm",100,0,8e3,1),e("E7","mm",5,1,80,1),W("low stopper"),e("JD1","mm",200,1,500,1),e("JE1","mm",5,1,80,1),e("JL1","mm",260,1,2e3,1),e("JH1","mm",20,-500,500,1),e("JS1","mm",100,1,500,1),e("JS2","mm",200,1,500,1),W("high stopper"),e("JD3","mm",200,1,500,1),e("JE3","mm",5,1,80,1),e("JS3","mm",120,1,500,1),e("JD4","mm",200,1,500,1),e("JE4","mm",5,1,80,1),e("JS4","mm",120,1,500,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg",S1:"rake_side_stopper.svg",S2:"rake_top_stopper.svg",S3:"rake_side_stopper.svg",E7:"rake_side_stopper.svg",JD1:"rake_low_stopper_holder.svg",JE1:"rake_low_stopper_holder.svg",JL1:"rake_low_stopper_holder.svg",JH1:"rake_low_stopper_holder.svg",JS1:"rake_side_stopper.svg",JS2:"rake_top_stopper.svg",JD3:"rake_side_stopper.svg",JE3:"rake_side_stopper.svg",JS3:"rake_top_stopper.svg",JD4:"rake_top_stopper.svg",JE4:"rake_top_stopper.svg",JS4:"rake_side_stopper.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function je(s,t,u=""){const o=_t(re.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y(),c=y(),_=y(),S=y(),H=y(),N=y(),w=y(),D=y(),E=y(),A=y(),R=y();o.logstr+=`${o.partName} simTime: ${s}
68
- `;try{const b=Math.PI,$=Math.PI/2,O=-Math.PI/2,I=t.D1/2,k=t.H1+t.H2,m=k-t.H4+t.H5,G=m-t.S2,C=t.H1+t.H2-t.H4,T=C+t.D4/2,J=t.H1+t.S3,j=t.L5/2,V=t.S1/2,K=t.S1-2*t.E7,F=K/2,Y=t.S2-V,it=G-t.JH1,M=t.JD1/2,X=M-t.JE1,st=I+t.JS2,B=j-V,P=I+t.JS3,nt=t.JD3-2*t.JE3,Q=t.D4/2+t.JS4,et=t.JD4-2*t.JE4;if(2*t.E7>=t.S1)throw`err135: E7 ${t.E7} too large compare to S1 ${t.S1}`;if(t.L5<t.D2)throw`err138: L5 ${t.L5} too small compare to D2 ${t.D2}`;if(G-t.JH1-t.JD1/2<0)throw`err143: S2 ${t.S2} too large compare to H1H5 ${L(m)}`;if(t.JS1<t.S1/2)throw`err144: JS1 ${t.JS1} too small compare to S1 ${t.S1}`;if(t.JE1>t.JD1/2)throw`err145: JE1 ${t.JE1} too large compare to JD1 ${t.JD1}`;if(t.JL1>t.D1)throw`err146: JL1 ${t.JL1} too large compare to D1 ${t.D1}`;if(t.JL1<t.JD1)throw`err147: JL1 ${t.JL1} too small compare to JD1 ${t.JD1}`;if(Math.abs(t.JH1)>t.JD1/2+V)throw`err148: JH1 ${t.JH1} too large compare to JD1 ${t.JD1} and S1 ${t.S1}`;if(t.JS2<t.JS1-V)throw`err149: JS2 ${t.JS2} too small compare to JS1 ${t.JS1} and S1 ${t.S1}`;if(t.S3>t.H2-t.H4)throw`err150: S3 ${t.S3} too large compare to H2 ${t.H2} and H4 ${t.H4}`;if(t.JE3>t.JD3/2)throw`err151: JE3 ${t.JE3} too large compare to JD3 ${t.JD3}`;if(t.JE4>t.JD4/2)throw`err152: JE4 ${t.JE4} too large compare to JD4 ${t.JD4}`;o.logstr+=`cone-height: ${L(k)} mm
67
+ `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Xe={pTitle:"Heliostat overview",pDescription:"The heliostat inclination mechanism",pDef:Yt,pGeom:Ye},re={partName:"rake_stopper",params:[e("D1","mm",600,10,4e3,1),e("D2","mm",400,10,4e3,1),e("D3","mm",400,1,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,1),e("H3","mm",400,0,4e3,1),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),q("transversal"),e("H4","mm",200,1,1e3,1),e("D4","mm",300,1,1e3,1),e("E4","mm",20,1,80,1),e("H5","mm",400,1,2e3,1),e("D5","mm",200,1,1e3,1),e("L4","mm",300,1,1e3,1),e("L5","mm",2e3,1,4e3,1),e("L6","mm",2e3,1,4e3,1),e("D8","mm",400,1,1e3,1),q("diagonal"),e("D6","mm",100,1,600,1),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),q("base"),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),q("door"),e("H6","mm",100,1,1e3,1),e("H7","mm",600,1,2e3,1),e("L9","mm",300,1,1e3,1),e("R9","mm",50,0,300,1),e("doorOrientation","degree",0,-180,180,1),q("stoppers"),e("S1","mm",100,1,300,1),e("S2","mm",2e3,1,8e3,1),e("S3","mm",100,0,8e3,1),e("E7","mm",5,1,80,1),q("low stopper"),e("JD1","mm",200,1,500,1),e("JE1","mm",5,1,80,1),e("JL1","mm",260,1,2e3,1),e("JH1","mm",20,-500,500,1),e("JS1","mm",100,1,500,1),e("JS2","mm",200,1,500,1),q("high stopper"),e("JD3","mm",200,1,500,1),e("JE3","mm",5,1,80,1),e("JS3","mm",120,1,500,1),e("JD4","mm",200,1,500,1),e("JE4","mm",5,1,80,1),e("JS4","mm",120,1,500,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg",S1:"rake_side_stopper.svg",S2:"rake_top_stopper.svg",S3:"rake_side_stopper.svg",E7:"rake_side_stopper.svg",JD1:"rake_low_stopper_holder.svg",JE1:"rake_low_stopper_holder.svg",JL1:"rake_low_stopper_holder.svg",JH1:"rake_low_stopper_holder.svg",JS1:"rake_side_stopper.svg",JS2:"rake_top_stopper.svg",JD3:"rake_side_stopper.svg",JE3:"rake_side_stopper.svg",JS3:"rake_top_stopper.svg",JD4:"rake_top_stopper.svg",JE4:"rake_top_stopper.svg",JS4:"rake_side_stopper.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function je(s,t,u=""){const o=_t(re.partName+u),n=y(),h=y(),i=y(),d=y(),l=y(),g=y(),a=y(),f=y(),r=y(),c=y(),_=y(),S=y(),H=y(),N=y(),w=y(),D=y(),E=y(),A=y(),R=y();o.logstr+=`${o.partName} simTime: ${s}
68
+ `;try{const b=Math.PI,$=Math.PI/2,O=-Math.PI/2,I=t.D1/2,k=t.H1+t.H2,m=k-t.H4+t.H5,G=m-t.S2,C=t.H1+t.H2-t.H4,T=C+t.D4/2,J=t.H1+t.S3,j=t.L5/2,V=t.S1/2,K=t.S1-2*t.E7,F=K/2,U=t.S2-V,st=G-t.JH1,M=t.JD1/2,X=M-t.JE1,it=I+t.JS2,B=j-V,P=I+t.JS3,nt=t.JD3-2*t.JE3,Q=t.D4/2+t.JS4,et=t.JD4-2*t.JE4;if(2*t.E7>=t.S1)throw`err135: E7 ${t.E7} too large compare to S1 ${t.S1}`;if(t.L5<t.D2)throw`err138: L5 ${t.L5} too small compare to D2 ${t.D2}`;if(G-t.JH1-t.JD1/2<0)throw`err143: S2 ${t.S2} too large compare to H1H5 ${L(m)}`;if(t.JS1<t.S1/2)throw`err144: JS1 ${t.JS1} too small compare to S1 ${t.S1}`;if(t.JE1>t.JD1/2)throw`err145: JE1 ${t.JE1} too large compare to JD1 ${t.JD1}`;if(t.JL1>t.D1)throw`err146: JL1 ${t.JL1} too large compare to D1 ${t.D1}`;if(t.JL1<t.JD1)throw`err147: JL1 ${t.JL1} too small compare to JD1 ${t.JD1}`;if(Math.abs(t.JH1)>t.JD1/2+V)throw`err148: JH1 ${t.JH1} too large compare to JD1 ${t.JD1} and S1 ${t.S1}`;if(t.JS2<t.JS1-V)throw`err149: JS2 ${t.JS2} too small compare to JS1 ${t.JS1} and S1 ${t.S1}`;if(t.S3>t.H2-t.H4)throw`err150: S3 ${t.S3} too large compare to H2 ${t.H2} and H4 ${t.H4}`;if(t.JE3>t.JD3/2)throw`err151: JE3 ${t.JE3} too large compare to JD3 ${t.JD3}`;if(t.JE4>t.JD4/2)throw`err152: JE4 ${t.JE4} too large compare to JD4 ${t.JD4}`;o.logstr+=`cone-height: ${L(k)} mm
69
69
  `,o.logstr+=`cone-height total: ${L(m)} mm
70
- `;const at=[],ft=[];D.addSecond(Z(-j,G,t.L5,t.S1,0)),D.addSecond(Z(-j,G,t.L5,K,0)),at.push(x(-t.JL1/2,it,M)),at.push(x(-t.JL1/2,it,X)),ft.push(x(t.JL1/2,it,M)),ft.push(x(t.JL1/2,it,X)),D.addMainOI(at),D.addMainOI(ft);const q=Ht(It.pDef);q.setVal("D1",t.D1),q.setVal("D2",t.D2),q.setVal("D3",t.D3),q.setVal("H1",t.H1),q.setVal("H2",t.H2),q.setVal("H3",t.H3),q.setVal("E1",t.E1),q.setVal("E3",t.E3),q.setVal("H4",t.H4),q.setVal("D4",t.D4),q.setVal("E4",t.E4),q.setVal("H5",t.H5),q.setVal("D5",t.D5),q.setVal("L4",t.L4),q.setVal("L5",t.L5),q.setVal("L6",t.L6),q.setVal("D6",t.D6),q.setVal("E6",t.E6),q.setVal("L7",t.L7),q.setVal("L8",t.L8),q.setVal("N1",t.N1),q.setVal("D7",t.D7),q.setVal("L1",t.L1),q.setVal("D8",t.D8),q.setVal("H6",t.H6),q.setVal("H7",t.H7),q.setVal("L9",t.L9),q.setVal("R9",t.R9),q.setVal("doorOrientation",t.doorOrientation);const lt=It.pGeom(0,q.getParamVal(),q.getSuffix());Dt(lt),o.logstr+=Pt(lt.logstr,q.getPartNameSuffix()),n.mergeFigure(lt.fig.faceCone),n.mergeFigure(D,!0),h.mergeFigure(lt.fig.faceBeam),i.mergeFigure(lt.fig.faceBeamHollow),d.mergeFigure(lt.fig.faceDisc),l.mergeFigure(lt.fig.faceHand),g.mergeFigure(lt.fig.faceWing),a.mergeFigure(lt.fig.faceWingHollow),f.mergeFigure(lt.fig.faceDoor),f.mergeFigure(D,!0),r.mergeFigure(lt.fig.faceDisc,!0),r.addMainOI([Z(-I-t.JS1,-j,t.L5,t.S1,$),Z(-I-t.JS1,-j,t.L5,K,$)]),r.addMainOI([Z(Y,-j,t.L5,t.S1,$),Z(Y,-j,t.L5,K,$)]),r.addMainOI([Z(0,-j+V,Y,t.S1,0),Z(0,-j+V,Y,K,0)]),r.addMainOI([Z(0,j-V,Y,t.S1,0),Z(0,j-V,Y,K,0)]),r.addMainOI([Z(0,-I-V,Y,t.S1,0),Z(0,-I-V,Y,K,0)]),r.addMainOI([Z(0,I+V,Y,t.S1,0),Z(0,I+V,Y,K,0)]),r.addSecond(Z(0,-t.JL1/2,st,2*M,b)),r.addSecond(Z(0,-t.JL1/2,st,2*X,b)),r.addSecond(Z(0,t.JL1/2,st,2*M,b)),r.addSecond(Z(0,t.JL1/2,st,2*X,b)),r.addSecond(Z(0,0,P,t.JD3,O)),r.addSecond(Z(0,0,P,nt,O)),r.addSecond(Z(0,0,P,t.JD3,$)),r.addSecond(Z(0,0,P,nt,$)),c.mergeFigure(lt.fig.faceBeam,!0),c.addMainOI([x(-I-t.JS1,G,V),x(-I-t.JS1,G,F)]),c.addMainOI([x(Y,T+V,V),x(Y,T+V,F)]),c.addSecond(Z(0,T+V,Y,t.S1,0)),c.addSecond(Z(0,T+V,Y,K,0));const St=T+V-J,vt=Math.sqrt(Y**2+St**2),$t=Math.atan2(St,Y);o.logstr+=`stopper-rod: L ${L(vt)} mm, A ${L(ht($t))} degree
71
- `,c.addSecond(Z(0,J,vt,t.S1,$t)),c.addSecond(Z(0,J,vt,K,$t)),c.addSecond(Z(0,it,st,2*M,b)),c.addSecond(Z(0,it,st,2*X,b)),c.addSecond(x(0,J,t.JD3/2)),c.addSecond(x(0,J,t.JD3/2-t.JE3)),c.addSecond(Z(0,C,Q,t.JD4,$)),c.addSecond(Z(0,C,Q,et,$)),_.mergeFigure(c,!0),_.addMainO(x(-I-t.JS1,G,F)),_.addMainO(x(t.S2-V,T+V,F)),S.mergeFigure(lt.fig.faceCone,!0),S.mergeFigure(D,!0),S.addMainOI([x(-t.L5/2+V,T+V,V),x(-t.L5/2+V,T+V,F)]),S.addMainOI([x(t.L5/2-V,T+V,V),x(t.L5/2-V,T+V,F)]),H.mergeFigure(lt.fig.faceCone,!0),H.mergeFigure(D,!0),H.addSecond(x(-t.L5/2+V,T+V,V)),H.addMainO(x(-t.L5/2+V,T+V,F)),H.addSecond(x(t.L5/2-V,T+V,V)),H.addMainO(x(t.L5/2-V,T+V,F)),N.mergeFigure(lt.fig.faceCone,!0),N.mergeFigure(D,!0),N.addMainOI([x(-I-V,0,V),x(-I-V,0,F)]),N.addMainOI([x(I+V,0,V),x(I+V,0,F)]),w.mergeFigure(lt.fig.faceCone,!0),w.mergeFigure(D,!0),w.addSecond(x(-I-V,0,V)),w.addMainO(x(-I-V,0,F)),w.addSecond(x(I+V,0,V)),w.addMainO(x(I+V,0,F)),E.mergeFigure(lt.fig.faceCone,!0),E.mergeFigure(D),E.addSecond(Z(-B,C,Q,t.JD4,$)),E.addSecond(Z(-B,C,Q,et,$)),E.addSecond(Z(B,C,Q,t.JD4,$)),E.addSecond(Z(B,C,Q,et,$)),E.addSecond(Z(0,J,P,t.JD3,b)),E.addSecond(Z(0,J,P,nt,b)),E.addSecond(Z(0,J,P,t.JD3,0)),E.addSecond(Z(0,J,P,nt,0)),A.mergeFigure(c,!0),A.addMainOI([x(0,J,t.JD3/2),x(0,J,t.JD3/2-t.JE3)]),R.mergeFigure(r,!0),R.addMainOI([x(0,-B,t.JD4/2),x(0,-B,t.JD4/2-t.JE4)]),R.addMainOI([x(0,B,t.JD4/2),x(0,B,t.JD4/2-t.JE4)]),o.fig={faceCone:n,faceBeam:h,faceBeamHollow:i,faceDisc:d,faceHand:l,faceWing:g,faceWingHollow:a,faceDoor:f,faceStopperTop:r,faceStopperSide:c,faceStopperSideH:_,faceStopperFaceT:S,faceStopperFaceTH:H,faceStopperFaceB:N,faceStopperFaceBH:w,faceLowStopperHolder:E,faceHi1StopperHolder:A,faceHi2StopperHolder:R};const tt=o.partName;o.vol={inherits:[{outName:`inpax_${tt}_rake`,subdesign:"pax_rake",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_coneHollow`,subdesign:"subpax_rake_coneHollow",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_beamHollow`,subdesign:"subpax_rake_beamHollow",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[{outName:`subpax_${tt}_stpSide`,face:`${tt}_faceStopperSide`,extrudeMethod:U.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${tt}_stpSideH`,face:`${tt}_faceStopperSideH`,extrudeMethod:U.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${tt}_stpFaceT`,face:`${tt}_faceStopperFaceT`,extrudeMethod:U.eLinearOrtho,length:Y,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceTH`,face:`${tt}_faceStopperFaceTH`,extrudeMethod:U.eLinearOrtho,length:Y,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceB`,face:`${tt}_faceStopperFaceB`,extrudeMethod:U.eLinearOrtho,length:vt,rotate:[Math.PI/2-$t,0,Math.PI/2],translate:[0,0,J]},{outName:`subpax_${tt}_stpFaceBH`,face:`${tt}_faceStopperFaceBH`,extrudeMethod:U.eLinearOrtho,length:vt,rotate:[Math.PI/2-$t,0,Math.PI/2],translate:[0,0,J]},{outName:`subpax_${tt}_lowSH`,face:`${tt}_faceLowStopperHolder`,extrudeMethod:U.eLinearOrtho,length:st,rotate:[Math.PI/2,0,-Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH1`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:U.eLinearOrtho,length:P,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH2`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:U.eLinearOrtho,length:P,rotate:[Math.PI/2,0,Math.PI],translate:[0,0,0]},{outName:`subpax_${tt}_Hi2SH`,face:`${tt}_faceHi2StopperHolder`,extrudeMethod:U.eLinearOrtho,length:Q,rotate:[0,0,0],translate:[0,0,C]}],volumes:[{outName:`ipax_${tt}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${tt}_stpSide`,`subpax_${tt}_stpFaceT`,`subpax_${tt}_stpFaceB`,`subpax_${tt}_lowSH`,`subpax_${tt}_Hi1SH1`,`subpax_${tt}_Hi1SH2`,`subpax_${tt}_Hi2SH`]},{outName:`ipax_${tt}_hollow`,boolMethod:dt.eUnion,inList:[`inpax_${tt}_coneHollow`,`inpax_${tt}_beamHollow`,`subpax_${tt}_stpSideH`,`subpax_${tt}_stpFaceTH`,`subpax_${tt}_stpFaceBH`]},{outName:`ipax_${tt}_stopper`,boolMethod:dt.eSubstraction,inList:[`ipax_${tt}_plus`,`ipax_${tt}_hollow`]},{outName:`pax_${tt}`,boolMethod:dt.eUnion,inList:[`inpax_${tt}_rake`,`ipax_${tt}_stopper`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
72
- `,o.calcErr=!1}catch(v){o.logstr+=v,console.log(v)}return o}var Xt={pTitle:"Heliostat rake with stopper",pDescription:"The rake-stopper on top of the V-Axis of the heliostat",pDef:re,pGeom:je},jt={partName:"heliostat_2",params:[e("H1","mm",3e3,10,4e4,1),e("H2","mm",2500,50,4e4,1),e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,20,4e3,1),e("E1","mm",30,1,80,1),W("rake"),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,1),e("H6","mm",200,1,4e3,1),e("H7","mm",400,1,4e3,1),e("D3","mm",900,20,4e3,1),e("D4","mm",400,20,4e3,1),e("D5","mm",300,20,1e3,1),e("D6","mm",200,10,1e3,1),e("D7","mm",400,10,1e3,1),W("rake diagonal"),e("D9","mm",100,1,1e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),W("rake stopper"),e("S1","mm",100,1,800,1),W("swing"),e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,1),e("L6","mm",2e3,1,6e3,1),e("H9","mm",100,1,400,1),e("S2","mm",10,0,2e3,1),W("motion amplitude"),e("al","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat2_side_sizing.svg",H4:"heliostat2_side_sizing.svg",H5:"heliostat2_side_sizing.svg",H6:"heliostat2_side_sizing.svg",H7:"heliostat2_side_sizing.svg",H9:"heliostat2_side_sizing.svg",D1:"heliostat2_side_sizing.svg",D2:"heliostat2_side_sizing.svg",D3:"heliostat2_side_sizing.svg",D4:"heliostat2_side_sizing.svg",D5:"heliostat2_side_sizing.svg",D6:"heliostat2_side_sizing.svg",D7:"heliostat2_side_sizing.svg",D9:"heliostat2_face_sizing.svg",E1:"heliostat2_side_sizing.svg",L1:"heliostat2_face_sizing.svg",L2:"heliostat2_side_sizing.svg",L3:"heliostat2_face_sizing.svg",L4:"heliostat2_face_sizing.svg",L5:"heliostat2_face_sizing.svg",L6:"heliostat2_face_sizing.svg",L7:"heliostat2_face_sizing.svg",L8:"heliostat2_face_sizing.svg",S1:"heliostat2_side_sizing.svg",S2:"heliostat2_side_sizing.svg",al:"heliostat2_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Ze(s,t,u=""){const o=_t(jt.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
70
+ `;const at=[],ft=[];D.addSecond(Z(-j,G,t.L5,t.S1,0)),D.addSecond(Z(-j,G,t.L5,K,0)),at.push(x(-t.JL1/2,st,M)),at.push(x(-t.JL1/2,st,X)),ft.push(x(t.JL1/2,st,M)),ft.push(x(t.JL1/2,st,X)),D.addMainOI(at),D.addMainOI(ft);const Y=Ht(It.pDef);Y.setVal("D1",t.D1),Y.setVal("D2",t.D2),Y.setVal("D3",t.D3),Y.setVal("H1",t.H1),Y.setVal("H2",t.H2),Y.setVal("H3",t.H3),Y.setVal("E1",t.E1),Y.setVal("E3",t.E3),Y.setVal("H4",t.H4),Y.setVal("D4",t.D4),Y.setVal("E4",t.E4),Y.setVal("H5",t.H5),Y.setVal("D5",t.D5),Y.setVal("L4",t.L4),Y.setVal("L5",t.L5),Y.setVal("L6",t.L6),Y.setVal("D6",t.D6),Y.setVal("E6",t.E6),Y.setVal("L7",t.L7),Y.setVal("L8",t.L8),Y.setVal("N1",t.N1),Y.setVal("D7",t.D7),Y.setVal("L1",t.L1),Y.setVal("D8",t.D8),Y.setVal("H6",t.H6),Y.setVal("H7",t.H7),Y.setVal("L9",t.L9),Y.setVal("R9",t.R9),Y.setVal("doorOrientation",t.doorOrientation);const lt=It.pGeom(0,Y.getParamVal(),Y.getSuffix());Dt(lt),o.logstr+=Pt(lt.logstr,Y.getPartNameSuffix()),n.mergeFigure(lt.fig.faceCone),n.mergeFigure(D,!0),h.mergeFigure(lt.fig.faceBeam),i.mergeFigure(lt.fig.faceBeamHollow),d.mergeFigure(lt.fig.faceDisc),l.mergeFigure(lt.fig.faceHand),g.mergeFigure(lt.fig.faceWing),a.mergeFigure(lt.fig.faceWingHollow),f.mergeFigure(lt.fig.faceDoor),f.mergeFigure(D,!0),r.mergeFigure(lt.fig.faceDisc,!0),r.addMainOI([Z(-I-t.JS1,-j,t.L5,t.S1,$),Z(-I-t.JS1,-j,t.L5,K,$)]),r.addMainOI([Z(U,-j,t.L5,t.S1,$),Z(U,-j,t.L5,K,$)]),r.addMainOI([Z(0,-j+V,U,t.S1,0),Z(0,-j+V,U,K,0)]),r.addMainOI([Z(0,j-V,U,t.S1,0),Z(0,j-V,U,K,0)]),r.addMainOI([Z(0,-I-V,U,t.S1,0),Z(0,-I-V,U,K,0)]),r.addMainOI([Z(0,I+V,U,t.S1,0),Z(0,I+V,U,K,0)]),r.addSecond(Z(0,-t.JL1/2,it,2*M,b)),r.addSecond(Z(0,-t.JL1/2,it,2*X,b)),r.addSecond(Z(0,t.JL1/2,it,2*M,b)),r.addSecond(Z(0,t.JL1/2,it,2*X,b)),r.addSecond(Z(0,0,P,t.JD3,O)),r.addSecond(Z(0,0,P,nt,O)),r.addSecond(Z(0,0,P,t.JD3,$)),r.addSecond(Z(0,0,P,nt,$)),c.mergeFigure(lt.fig.faceBeam,!0),c.addMainOI([x(-I-t.JS1,G,V),x(-I-t.JS1,G,F)]),c.addMainOI([x(U,T+V,V),x(U,T+V,F)]),c.addSecond(Z(0,T+V,U,t.S1,0)),c.addSecond(Z(0,T+V,U,K,0));const St=T+V-J,vt=Math.sqrt(U**2+St**2),$t=Math.atan2(St,U);o.logstr+=`stopper-rod: L ${L(vt)} mm, A ${L(ht($t))} degree
71
+ `,c.addSecond(Z(0,J,vt,t.S1,$t)),c.addSecond(Z(0,J,vt,K,$t)),c.addSecond(Z(0,st,it,2*M,b)),c.addSecond(Z(0,st,it,2*X,b)),c.addSecond(x(0,J,t.JD3/2)),c.addSecond(x(0,J,t.JD3/2-t.JE3)),c.addSecond(Z(0,C,Q,t.JD4,$)),c.addSecond(Z(0,C,Q,et,$)),_.mergeFigure(c,!0),_.addMainO(x(-I-t.JS1,G,F)),_.addMainO(x(t.S2-V,T+V,F)),S.mergeFigure(lt.fig.faceCone,!0),S.mergeFigure(D,!0),S.addMainOI([x(-t.L5/2+V,T+V,V),x(-t.L5/2+V,T+V,F)]),S.addMainOI([x(t.L5/2-V,T+V,V),x(t.L5/2-V,T+V,F)]),H.mergeFigure(lt.fig.faceCone,!0),H.mergeFigure(D,!0),H.addSecond(x(-t.L5/2+V,T+V,V)),H.addMainO(x(-t.L5/2+V,T+V,F)),H.addSecond(x(t.L5/2-V,T+V,V)),H.addMainO(x(t.L5/2-V,T+V,F)),N.mergeFigure(lt.fig.faceCone,!0),N.mergeFigure(D,!0),N.addMainOI([x(-I-V,0,V),x(-I-V,0,F)]),N.addMainOI([x(I+V,0,V),x(I+V,0,F)]),w.mergeFigure(lt.fig.faceCone,!0),w.mergeFigure(D,!0),w.addSecond(x(-I-V,0,V)),w.addMainO(x(-I-V,0,F)),w.addSecond(x(I+V,0,V)),w.addMainO(x(I+V,0,F)),E.mergeFigure(lt.fig.faceCone,!0),E.mergeFigure(D),E.addSecond(Z(-B,C,Q,t.JD4,$)),E.addSecond(Z(-B,C,Q,et,$)),E.addSecond(Z(B,C,Q,t.JD4,$)),E.addSecond(Z(B,C,Q,et,$)),E.addSecond(Z(0,J,P,t.JD3,b)),E.addSecond(Z(0,J,P,nt,b)),E.addSecond(Z(0,J,P,t.JD3,0)),E.addSecond(Z(0,J,P,nt,0)),A.mergeFigure(c,!0),A.addMainOI([x(0,J,t.JD3/2),x(0,J,t.JD3/2-t.JE3)]),R.mergeFigure(r,!0),R.addMainOI([x(0,-B,t.JD4/2),x(0,-B,t.JD4/2-t.JE4)]),R.addMainOI([x(0,B,t.JD4/2),x(0,B,t.JD4/2-t.JE4)]),o.fig={faceCone:n,faceBeam:h,faceBeamHollow:i,faceDisc:d,faceHand:l,faceWing:g,faceWingHollow:a,faceDoor:f,faceStopperTop:r,faceStopperSide:c,faceStopperSideH:_,faceStopperFaceT:S,faceStopperFaceTH:H,faceStopperFaceB:N,faceStopperFaceBH:w,faceLowStopperHolder:E,faceHi1StopperHolder:A,faceHi2StopperHolder:R};const tt=o.partName;o.vol={inherits:[{outName:`inpax_${tt}_rake`,subdesign:"pax_rake",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_coneHollow`,subdesign:"subpax_rake_coneHollow",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_beamHollow`,subdesign:"subpax_rake_beamHollow",subgeom:lt,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[{outName:`subpax_${tt}_stpSide`,face:`${tt}_faceStopperSide`,extrudeMethod:W.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${tt}_stpSideH`,face:`${tt}_faceStopperSideH`,extrudeMethod:W.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${tt}_stpFaceT`,face:`${tt}_faceStopperFaceT`,extrudeMethod:W.eLinearOrtho,length:U,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceTH`,face:`${tt}_faceStopperFaceTH`,extrudeMethod:W.eLinearOrtho,length:U,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceB`,face:`${tt}_faceStopperFaceB`,extrudeMethod:W.eLinearOrtho,length:vt,rotate:[Math.PI/2-$t,0,Math.PI/2],translate:[0,0,J]},{outName:`subpax_${tt}_stpFaceBH`,face:`${tt}_faceStopperFaceBH`,extrudeMethod:W.eLinearOrtho,length:vt,rotate:[Math.PI/2-$t,0,Math.PI/2],translate:[0,0,J]},{outName:`subpax_${tt}_lowSH`,face:`${tt}_faceLowStopperHolder`,extrudeMethod:W.eLinearOrtho,length:it,rotate:[Math.PI/2,0,-Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH1`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:W.eLinearOrtho,length:P,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH2`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:W.eLinearOrtho,length:P,rotate:[Math.PI/2,0,Math.PI],translate:[0,0,0]},{outName:`subpax_${tt}_Hi2SH`,face:`${tt}_faceHi2StopperHolder`,extrudeMethod:W.eLinearOrtho,length:Q,rotate:[0,0,0],translate:[0,0,C]}],volumes:[{outName:`ipax_${tt}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${tt}_stpSide`,`subpax_${tt}_stpFaceT`,`subpax_${tt}_stpFaceB`,`subpax_${tt}_lowSH`,`subpax_${tt}_Hi1SH1`,`subpax_${tt}_Hi1SH2`,`subpax_${tt}_Hi2SH`]},{outName:`ipax_${tt}_hollow`,boolMethod:dt.eUnion,inList:[`inpax_${tt}_coneHollow`,`inpax_${tt}_beamHollow`,`subpax_${tt}_stpSideH`,`subpax_${tt}_stpFaceTH`,`subpax_${tt}_stpFaceBH`]},{outName:`ipax_${tt}_stopper`,boolMethod:dt.eSubstraction,inList:[`ipax_${tt}_plus`,`ipax_${tt}_hollow`]},{outName:`pax_${tt}`,boolMethod:dt.eUnion,inList:[`inpax_${tt}_rake`,`ipax_${tt}_stopper`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
72
+ `,o.calcErr=!1}catch(v){o.logstr+=v,console.log(v)}return o}var Xt={pTitle:"Heliostat rake with stopper",pDescription:"The rake-stopper on top of the V-Axis of the heliostat",pDef:re,pGeom:je},jt={partName:"heliostat_2",params:[e("H1","mm",3e3,10,4e4,1),e("H2","mm",2500,50,4e4,1),e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,20,4e3,1),e("E1","mm",30,1,80,1),q("rake"),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,1),e("H6","mm",200,1,4e3,1),e("H7","mm",400,1,4e3,1),e("D3","mm",900,20,4e3,1),e("D4","mm",400,20,4e3,1),e("D5","mm",300,20,1e3,1),e("D6","mm",200,10,1e3,1),e("D7","mm",400,10,1e3,1),q("rake diagonal"),e("D9","mm",100,1,1e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),q("rake stopper"),e("S1","mm",100,1,800,1),q("swing"),e("L1","mm",12500,100,4e4,1),e("L2","mm",6e3,100,4e4,1),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,1),e("L6","mm",2e3,1,6e3,1),e("H9","mm",100,1,400,1),e("S2","mm",10,0,2e3,1),q("motion amplitude"),e("al","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat2_side_sizing.svg",H4:"heliostat2_side_sizing.svg",H5:"heliostat2_side_sizing.svg",H6:"heliostat2_side_sizing.svg",H7:"heliostat2_side_sizing.svg",H9:"heliostat2_side_sizing.svg",D1:"heliostat2_side_sizing.svg",D2:"heliostat2_side_sizing.svg",D3:"heliostat2_side_sizing.svg",D4:"heliostat2_side_sizing.svg",D5:"heliostat2_side_sizing.svg",D6:"heliostat2_side_sizing.svg",D7:"heliostat2_side_sizing.svg",D9:"heliostat2_face_sizing.svg",E1:"heliostat2_side_sizing.svg",L1:"heliostat2_face_sizing.svg",L2:"heliostat2_side_sizing.svg",L3:"heliostat2_face_sizing.svg",L4:"heliostat2_face_sizing.svg",L5:"heliostat2_face_sizing.svg",L6:"heliostat2_face_sizing.svg",L7:"heliostat2_face_sizing.svg",L8:"heliostat2_face_sizing.svg",S1:"heliostat2_side_sizing.svg",S2:"heliostat2_side_sizing.svg",al:"heliostat2_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Ze(s,t,u=""){const o=_t(jt.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
73
73
  `;try{const d=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;o.logstr+=`heliostat-height: ${L(d)}, diameter ${L(t.D1)} m
74
74
  `,o.logstr+=`heliostat-swing-length: ${L(t.L1)}, width ${L(t.L2)} m
75
75
  `;const l=t.al*s/jt.sim.tMax,g=kt(l);o.logstr+=`swing position angle: ${L(ht(g))} degree
76
76
  `;const a=t.H1+t.H2-t.H3,f=a+t.H4+t.H5-t.H6+t.H7,r=Ht(Nt.pDef),c=Ht(Xt.pDef),_=Ht(Vt.pDef);r.setVal("H1",t.H1),r.setVal("H2",t.H2),r.setVal("D1",t.D1),r.setVal("D2",t.D2),r.setVal("D3",t.D1-6*t.E1),r.setVal("E1",t.E1),r.setVal("E2",t.E1);const S=32,H=(t.D1-6*t.E1)/(S*4);r.setVal("N1",S),r.setVal("D5",H),r.setVal("L1",t.E1+H/2),r.setVal("H3",t.H1/4),r.setVal("H4",t.H1/2),r.setVal("D4",t.H1/4),r.setVal("L2",t.H1/80),r.setVal("E3",t.H1/80),r.setVal("holders",0),c.setVal("H1",t.H4),c.setVal("H2",t.H5),c.setVal("H3",t.H4-2*t.E1),c.setVal("D1",t.D3),c.setVal("D2",t.D4),c.setVal("L9",t.D3/2),c.setVal("H7",t.D3/2*1.6),c.setVal("H6",t.D3/20),c.setVal("R9",t.D3/20),c.setVal("E1",t.E1),c.setVal("E3",t.E1),c.setVal("E4",t.E1),c.setVal("E6",t.E1),c.setVal("E7",t.E1);const N=t.D2*.6,w=24,D=N/(w*4);if(c.setVal("D3",N),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(c.setVal("N1",w),c.setVal("D7",D),c.setVal("L1",D),c.setVal("H4",t.H6),c.setVal("D4",t.D5),c.setVal("L7",t.L7),c.setVal("L8",t.L8),c.setVal("D6",t.D9),c.setVal("H5",t.H7),c.setVal("D5",t.D6),c.setVal("D8",t.D7),t.D6>=t.D7)throw`err164: D6 ${t.D6} too large compare to D7 ${t.D7}`;const E=t.L4-2*t.L3;if(c.setVal("L4",E),E<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;if(c.setVal("L5",t.L5+2*t.L3),c.setVal("L6",t.L6+2*t.L3),c.setVal("S1",t.S1),c.setVal("S2",t.L2/2),c.setVal("S3",0),c.setVal("S3",0),c.setVal("JD1",t.D3/4),c.setVal("JE1",t.E1),c.setVal("JL1",t.D3/3),c.setVal("JH1",0),c.setVal("JS1",t.S1/2),c.setVal("JS2",t.S1/2),c.setVal("JD3",t.D4/4),c.setVal("JE3",t.E1),c.setVal("JS3",t.D4/4),c.setVal("JD4",t.D4/4),c.setVal("JE4",t.E1),c.setVal("JS4",t.D4/4),_.setVal("L2",t.L2),_.setVal("D1",t.D6),_.setVal("H3",t.H9),_.setVal("H4",t.H9),_.setVal("L1",t.L1),t.L1<4*t.L4+2*t.L6+t.L5+2*t.L3)throw`err185: L1 ${t.L1} too small compare to L4 ${t.L4}, L5 ${t.L5}, L6 ${t.L6}`;_.setVal("H1",t.L3),_.setVal("H2",t.L3),_.setVal("L4",t.L4),_.setVal("L5",t.L5),_.setVal("L6",t.L6),_.setVal("L3",t.D7),_.setVal("S1",t.D6/2),_.setVal("S2",t.S2),_.setVal("R2",0);const A=Nt.pGeom(0,r.getParamVal(),r.getSuffix());Dt(A),o.logstr+=Pt(A.logstr,r.getPartNameSuffix());const R=Xt.pGeom(0,c.getParamVal(),c.getSuffix());Dt(R),o.logstr+=Pt(R.logstr,c.getPartNameSuffix());const v=Vt.pGeom(0,_.getParamVal(),_.getSuffix());Dt(v),o.logstr+=Pt(v.logstr,_.getPartNameSuffix()),n.mergeFigure(A.fig.poleCut),n.mergeFigure(R.fig.faceStopperSide.translate(0,a)),n.mergeFigure(v.fig.faceSide.translate(0,f).rotate(0,f,g)),h.mergeFigure(A.fig.poleCut),h.mergeFigure(R.fig.faceStopperFaceT.translate(0,a)),h.mergeFigure(v.fig.faceFace.translate(0,f)),i.mergeFigure(A.fig.poleBottom.translate(0,0)),i.mergeFigure(R.fig.faceStopperTop.translate(0,0)),i.mergeFigure(v.fig.faceTop.rotate(0,0,Math.PI/2)),o.fig={faceSide:n,faceFace:h,faceTop:i};const b=o.partName;o.vol={inherits:[{outName:`inpax_${b}_poleStatic`,subdesign:"pax_pole_static",subgeom:A,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${b}_rake`,subdesign:"pax_rake_stopper",subgeom:R,rotate:[0,0,0],translate:[0,0,a]},{outName:`inpax_${b}_swing`,subdesign:"pax_swing",subgeom:v,rotate:[Math.PI/2,0,0],translate:[0,0,f]}],extrudes:[],volumes:[{outName:`pax_${b}`,boolMethod:dt.eUnion,inList:[`inpax_${b}_poleStatic`,`inpax_${b}_rake`,`inpax_${b}_swing`]}]};const $=r.getDesignParamList(),O={partName:r.getPartName(),dparam:$,orientation:[0,0,0],position:[0,0,0]},I={partName:c.getPartName(),dparam:c.getDesignParamList(),orientation:[0,0,0],position:[0,0,a]},k={partName:_.getPartName(),dparam:_.getDesignParamList(),orientation:[0,0,0],position:[0,0,f]};o.sub={pole_static_1:O,rake_1:I,swing_1:k},o.logstr+=`heliostat-2-overview drawn successfully!
77
- `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var Ke={pTitle:"Heliostat-2 overview",pDescription:"The heliostat-2 inclination mechanism",pDef:jt,pGeom:Ze},ge={partName:"base",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",700,10,4e3,10),e("D3","mm",400,10,4e3,10),e("D4","mm",500,10,4e3,10),e("E1","mm",30,1,80,1),e("E2","mm",30,1,80,1),e("E3","mm",30,1,80,1),e("H1","mm",800,10,4e3,10),e("H2","mm",50,1,4e3,1),W("side holes"),e("H3","mm",400,10,4e3,10),e("N2","",12,1,100,1),e("L2","mm",100,1,400,1),W("base holes"),e("N1","",24,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",34,1,300,1)],paramSvg:{D1:"base_cut.svg",D2:"base_cut.svg",D3:"base_cut.svg",D4:"base_cut.svg",E1:"base_cut.svg",E2:"base_cut.svg",E3:"base_cut.svg",H1:"base_cut.svg",H2:"base_hollow.svg",H3:"base_hollow.svg",N2:"base_hollow.svg",L2:"base_hollow.svg",N1:"base_top.svg",D5:"base_top.svg",L1:"base_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Qe(s,t,u=""){const o=_t(ge.partName+u);let n,h,i;const d=y(),l=y(),g=y();o.logstr+=`${o.partName} simTime: ${s}
77
+ `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var Ke={pTitle:"Heliostat-2 overview",pDescription:"The heliostat-2 inclination mechanism",pDef:jt,pGeom:Ze},ge={partName:"base",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",700,10,4e3,10),e("D3","mm",400,10,4e3,10),e("D4","mm",500,10,4e3,10),e("E1","mm",30,1,80,1),e("E2","mm",30,1,80,1),e("E3","mm",30,1,80,1),e("H1","mm",800,10,4e3,10),e("H2","mm",50,1,4e3,1),q("side holes"),e("H3","mm",400,10,4e3,10),e("N2","",12,1,100,1),e("L2","mm",100,1,400,1),q("base holes"),e("N1","",24,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",34,1,300,1)],paramSvg:{D1:"base_cut.svg",D2:"base_cut.svg",D3:"base_cut.svg",D4:"base_cut.svg",E1:"base_cut.svg",E2:"base_cut.svg",E3:"base_cut.svg",H1:"base_cut.svg",H2:"base_hollow.svg",H3:"base_hollow.svg",N2:"base_hollow.svg",L2:"base_hollow.svg",N1:"base_top.svg",D5:"base_top.svg",L1:"base_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Qe(s,t,u=""){const o=_t(ge.partName+u);let n,h,i;const d=y(),l=y(),g=y();o.logstr+=`${o.partName} simTime: ${s}
78
78
  `;try{const a=t.D1/2,f=t.D2/2,r=t.D3/2,c=t.D4/2,_=t.D5/2,S=t.L2/2;if(f<a)throw`err089: D2 ${t.D2} too small compare to D1 ${t.D1}`;if(c>a-t.E2)throw`err189: D4 ${t.D4} too large compare to D1 ${t.D1} and E2 ${t.E2}`;o.logstr+=`base-height: ${L(t.H1)} mm
79
79
  `,o.logstr+=`base-external-diameter: ${L(t.D2)} mm
80
80
  `;const H=t.D1*Math.PI/t.N2-t.L2;if(o.logstr+=`inter-hollow: ${L(H)} mm
81
- `,n=function(k){return z(k*f,0).addSegStrokeA(k*f,t.E3).addSegStrokeA(k*a,t.E3).addSegStrokeA(k*a,t.H1).addSegStrokeA(k*(a-t.E2),t.H1).addSegStrokeA(k*(a-t.E2),t.E3).addSegStrokeA(k*c,t.E3).addSegStrokeA(k*c,0).closeSegStroke()},h=function(k){return z(k*f,0).addSegStrokeA(k*f,t.E3).addSegStrokeA(k*a,t.E3).addSegStrokeA(k*a,t.H1).addSegStrokeA(k*r,t.H1).addSegStrokeA(k*r,t.H1-t.E1).addSegStrokeA(k*(a-t.E2),t.H1-t.E1).addSegStrokeA(k*(a-t.E2),t.E3).addSegStrokeA(k*c,t.E3).addSegStrokeA(k*c,0).closeSegStroke()},t.H1<t.E3+t.H2+t.H3+t.E1)throw`err125: H1 ${t.H1} too small compare to E3 ${t.H3}, H2 ${t.H2}, H3 ${t.H3}, E1 ${t.E1}`;if(t.D5>t.H3)throw`err128: D5 ${t.D5} too large compare to H3 ${t.H3}`;const N=2*Math.asin(S/(a-t.E2));if(t.N2*N>2*Math.PI)throw`err132: N2 ${t.N2} too large compare to L2 ${t.L2}, D1 ${t.D1}, E2 ${t.E2}`;const w=t.E3+t.H2+S;i=function(k){return z(k*S,w).addSegStrokeA(k*S,w+t.H3-t.L2).addPointA(-k*S,w+t.H3-t.L2).addSegArc(S,!1,!0).addSegStrokeA(-k*S,w).closeSegArc(S,!1,!0)},d.addMainO(n(1)),d.addSecond(h(1)),d.addSecond(h(-1)),d.addSecond(i(1));const D=[];if(r+t.L1+_>a-t.E2)throw`err127: D3 ${t.D3} too large compare to D1 ${t.D1}, E2 ${t.E2}, L1 ${t.L1}, R5 ${t.D5}`;if(_>t.L1)throw`err130: D5 ${t.D5} too large compare to L1 ${t.L1}`;const E=2*Math.asin(_/(f+t.L1));if(t.N1*E>2*Math.PI)throw`err134: N1 ${t.N1} too large compare to D5 ${t.D5}, L1 ${t.L1}, D2 ${t.D2}`;D.push(x(0,0,a)),D.push(x(0,0,r));const A=r+t.L1,R=2*Math.PI/t.N1;for(let k=0;k<t.N1;k++){const m=A*Math.cos(k*R),G=A*Math.sin(k*R);D.push(x(m,G,_))}l.addMainOI(D),l.addSecond(x(0,0,a-t.E1)),l.addSecond(x(0,0,f)),l.addSecond(x(0,0,c)),g.addMainO(i(1)),g.addSecond(h(1)),g.addSecond(h(-1)),o.fig={faceCut:d,faceTop:l,faceHollow:g};const v=o.partName,b=2*Math.PI/t.N2,$=[...Array(t.N2).keys()],O=$.map(k=>({outName:`subpax_${v}_hollow_${k}`,face:`${v}_faceHollow`,extrudeMethod:U.eLinearOrtho,length:f+t.E2,rotate:[Math.PI/2,0,k*b],translate:[0,0,0]})),I=$.map(k=>`subpax_${v}_hollow_${k}`);o.vol={extrudes:[{outName:`subpax_${v}_cut`,face:`${v}_faceCut`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[Math.PI/2,0,0]},{outName:`subpax_${v}_top`,face:`${v}_faceTop`,extrudeMethod:U.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,t.H1-t.E1]},...O],volumes:[{outName:`ipax_${v}_hollows`,boolMethod:dt.eUnion,inList:[...I]},{outName:`ipax_${v}_cylinder`,boolMethod:dt.eSubstraction,inList:[`subpax_${v}_cut`,`ipax_${v}_hollows`]},{outName:`pax_${v}`,boolMethod:dt.eUnion,inList:[`ipax_${v}_cylinder`,`subpax_${v}_top`]}]},o.sub={},o.logstr+=`heliostat-base drawn successfully!
82
- `,o.calcErr=!1}catch(a){o.logstr+=a,console.log(a)}return o}var to={pTitle:"Heliostat base",pDescription:"The base for the static-pole of the heliostat",pDef:ge,pGeom:Qe},he={partName:"vaxis",params:[e("D1","mm",600,1,4e3,1),e("D2","mm",400,1,4e3,1),e("H1","mm",8e3,10,4e4,10),e("E1","mm",5,1,80,1),e("E2","mm",30,1,80,1),W("base holes"),e("N1","",24,3,100,1),e("D3","mm",40,1,100,1),e("L1","mm",45,1,300,1)],paramSvg:{D1:"vaxis_cut.svg",D2:"vaxis_cut.svg",H1:"vaxis_cut.svg",E1:"vaxis_cut.svg",E2:"vaxis_cut.svg",N1:"vaxis_ends.svg",D3:"vaxis_ends.svg",L1:"vaxis_ends.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function eo(s,t,u=""){const o=_t(he.partName+u);let n;const h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
81
+ `,n=function(k){return z(k*f,0).addSegStrokeA(k*f,t.E3).addSegStrokeA(k*a,t.E3).addSegStrokeA(k*a,t.H1).addSegStrokeA(k*(a-t.E2),t.H1).addSegStrokeA(k*(a-t.E2),t.E3).addSegStrokeA(k*c,t.E3).addSegStrokeA(k*c,0).closeSegStroke()},h=function(k){return z(k*f,0).addSegStrokeA(k*f,t.E3).addSegStrokeA(k*a,t.E3).addSegStrokeA(k*a,t.H1).addSegStrokeA(k*r,t.H1).addSegStrokeA(k*r,t.H1-t.E1).addSegStrokeA(k*(a-t.E2),t.H1-t.E1).addSegStrokeA(k*(a-t.E2),t.E3).addSegStrokeA(k*c,t.E3).addSegStrokeA(k*c,0).closeSegStroke()},t.H1<t.E3+t.H2+t.H3+t.E1)throw`err125: H1 ${t.H1} too small compare to E3 ${t.H3}, H2 ${t.H2}, H3 ${t.H3}, E1 ${t.E1}`;if(t.D5>t.H3)throw`err128: D5 ${t.D5} too large compare to H3 ${t.H3}`;const N=2*Math.asin(S/(a-t.E2));if(t.N2*N>2*Math.PI)throw`err132: N2 ${t.N2} too large compare to L2 ${t.L2}, D1 ${t.D1}, E2 ${t.E2}`;const w=t.E3+t.H2+S;i=function(k){return z(k*S,w).addSegStrokeA(k*S,w+t.H3-t.L2).addPointA(-k*S,w+t.H3-t.L2).addSegArc(S,!1,!0).addSegStrokeA(-k*S,w).closeSegArc(S,!1,!0)},d.addMainO(n(1)),d.addSecond(h(1)),d.addSecond(h(-1)),d.addSecond(i(1));const D=[];if(r+t.L1+_>a-t.E2)throw`err127: D3 ${t.D3} too large compare to D1 ${t.D1}, E2 ${t.E2}, L1 ${t.L1}, R5 ${t.D5}`;if(_>t.L1)throw`err130: D5 ${t.D5} too large compare to L1 ${t.L1}`;const E=2*Math.asin(_/(f+t.L1));if(t.N1*E>2*Math.PI)throw`err134: N1 ${t.N1} too large compare to D5 ${t.D5}, L1 ${t.L1}, D2 ${t.D2}`;D.push(x(0,0,a)),D.push(x(0,0,r));const A=r+t.L1,R=2*Math.PI/t.N1;for(let k=0;k<t.N1;k++){const m=A*Math.cos(k*R),G=A*Math.sin(k*R);D.push(x(m,G,_))}l.addMainOI(D),l.addSecond(x(0,0,a-t.E1)),l.addSecond(x(0,0,f)),l.addSecond(x(0,0,c)),g.addMainO(i(1)),g.addSecond(h(1)),g.addSecond(h(-1)),o.fig={faceCut:d,faceTop:l,faceHollow:g};const v=o.partName,b=2*Math.PI/t.N2,$=[...Array(t.N2).keys()],O=$.map(k=>({outName:`subpax_${v}_hollow_${k}`,face:`${v}_faceHollow`,extrudeMethod:W.eLinearOrtho,length:f+t.E2,rotate:[Math.PI/2,0,k*b],translate:[0,0,0]})),I=$.map(k=>`subpax_${v}_hollow_${k}`);o.vol={extrudes:[{outName:`subpax_${v}_cut`,face:`${v}_faceCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[Math.PI/2,0,0]},{outName:`subpax_${v}_top`,face:`${v}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,t.H1-t.E1]},...O],volumes:[{outName:`ipax_${v}_hollows`,boolMethod:dt.eUnion,inList:[...I]},{outName:`ipax_${v}_cylinder`,boolMethod:dt.eSubstraction,inList:[`subpax_${v}_cut`,`ipax_${v}_hollows`]},{outName:`pax_${v}`,boolMethod:dt.eUnion,inList:[`ipax_${v}_cylinder`,`subpax_${v}_top`]}]},o.sub={},o.logstr+=`heliostat-base drawn successfully!
82
+ `,o.calcErr=!1}catch(a){o.logstr+=a,console.log(a)}return o}var to={pTitle:"Heliostat base",pDescription:"The base for the static-pole of the heliostat",pDef:ge,pGeom:Qe},he={partName:"vaxis",params:[e("D1","mm",600,1,4e3,1),e("D2","mm",400,1,4e3,1),e("H1","mm",8e3,10,4e4,10),e("E1","mm",5,1,80,1),e("E2","mm",30,1,80,1),q("base holes"),e("N1","",24,3,100,1),e("D3","mm",40,1,100,1),e("L1","mm",45,1,300,1)],paramSvg:{D1:"vaxis_cut.svg",D2:"vaxis_cut.svg",H1:"vaxis_cut.svg",E1:"vaxis_cut.svg",E2:"vaxis_cut.svg",N1:"vaxis_ends.svg",D3:"vaxis_ends.svg",L1:"vaxis_ends.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function eo(s,t,u=""){const o=_t(he.partName+u);let n;const h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
83
83
  `;try{const d=t.D1/2,l=t.D2/2,g=t.D3/2;o.logstr+=`vaxis-height: ${L(t.H1)} mm
84
- `;const a=z(d,0).addSegStrokeA(d,t.H1).addSegStrokeA(d-t.E1,t.H1).addSegStrokeA(d-t.E1,0).closeSegStroke();h.addMainO(a),n=function(S){return z(S*d,0).addSegStrokeA(S*d,t.H1).addSegStrokeA(S*l,t.H1).addSegStrokeA(S*l,t.H1-t.E2).addSegStrokeA(S*(d-t.E1),t.H1-t.E2).addSegStrokeA(S*(d-t.E1),t.E2).addSegStrokeA(S*l,t.E2).addSegStrokeA(S*l,0).closeSegStroke()},h.addSecond(n(1)),h.addSecond(n(-1));const f=[];f.push(x(0,0,d)),f.push(x(0,0,l));const r=l+t.L1,c=2*Math.PI/t.N1;for(let S=0;S<t.N1;S++){const H=r*Math.cos(S*c),N=r*Math.sin(S*c);f.push(x(H,N,g))}i.addSecond(x(0,0,d-t.E1)),i.addMainOI(f),o.fig={faceCut:h,faceBottom:i};const _=o.partName;o.vol={extrudes:[{outName:`subpax_${_}_pole`,face:`${_}_faceCut`,extrudeMethod:U.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${_}_bottom`,face:`${_}_faceBottom`,extrudeMethod:U.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${_}_top`,face:`${_}_faceBottom`,extrudeMethod:U.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,t.H1-t.E2]}],volumes:[{outName:`pax_${_}`,boolMethod:dt.eUnion,inList:[`subpax_${_}_pole`,`subpax_${_}_bottom`,`subpax_${_}_top`]}]},o.sub={},o.logstr+=`V-Axis drawn successfully!
85
- `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var oo={pTitle:"Heliostat V-Axis",pDescription:"The vertical axis inside the pole of an heliostat",pDef:he,pGeom:eo},ae={partName:"ring",params:[e("D1","mm",400,1,2e3,1),e("D3","mm",800,1,4e3,1),e("H1","mm",20,1,100,1),e("H2","mm",100,1,600,1),W("ring holes"),e("N2","",24,3,100,1),e("D2","mm",40,1,100,1),e("L1","mm",45,1,300,1),W("ring fake teeth"),e("N1","",100,3,1e4,1),e("L2","mm",30,1,200,1),e("L3","mm",30,1,200,1)],paramSvg:{D1:"ring_top.svg",D3:"ring_top.svg",H1:"ring_section.svg",H2:"ring_section.svg",N2:"ring_top.svg",D2:"ring_top.svg",L1:"ring_top.svg",N1:"ring_top.svg",L2:"ring_top.svg",L3:"ring_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function so(s,t,u=""){const o=_t(ae.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
84
+ `;const a=z(d,0).addSegStrokeA(d,t.H1).addSegStrokeA(d-t.E1,t.H1).addSegStrokeA(d-t.E1,0).closeSegStroke();h.addMainO(a),n=function(S){return z(S*d,0).addSegStrokeA(S*d,t.H1).addSegStrokeA(S*l,t.H1).addSegStrokeA(S*l,t.H1-t.E2).addSegStrokeA(S*(d-t.E1),t.H1-t.E2).addSegStrokeA(S*(d-t.E1),t.E2).addSegStrokeA(S*l,t.E2).addSegStrokeA(S*l,0).closeSegStroke()},h.addSecond(n(1)),h.addSecond(n(-1));const f=[];f.push(x(0,0,d)),f.push(x(0,0,l));const r=l+t.L1,c=2*Math.PI/t.N1;for(let S=0;S<t.N1;S++){const H=r*Math.cos(S*c),N=r*Math.sin(S*c);f.push(x(H,N,g))}i.addSecond(x(0,0,d-t.E1)),i.addMainOI(f),o.fig={faceCut:h,faceBottom:i};const _=o.partName;o.vol={extrudes:[{outName:`subpax_${_}_pole`,face:`${_}_faceCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${_}_bottom`,face:`${_}_faceBottom`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${_}_top`,face:`${_}_faceBottom`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,t.H1-t.E2]}],volumes:[{outName:`pax_${_}`,boolMethod:dt.eUnion,inList:[`subpax_${_}_pole`,`subpax_${_}_bottom`,`subpax_${_}_top`]}]},o.sub={},o.logstr+=`V-Axis drawn successfully!
85
+ `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var oo={pTitle:"Heliostat V-Axis",pDescription:"The vertical axis inside the pole of an heliostat",pDef:he,pGeom:eo},ae={partName:"ring",params:[e("D1","mm",400,1,2e3,1),e("D3","mm",800,1,4e3,1),e("H1","mm",20,1,100,1),e("H2","mm",100,1,600,1),q("ring holes"),e("N2","",24,3,100,1),e("D2","mm",40,1,100,1),e("L1","mm",45,1,300,1),q("ring fake teeth"),e("N1","",100,3,1e4,1),e("L2","mm",30,1,200,1),e("L3","mm",30,1,200,1)],paramSvg:{D1:"ring_top.svg",D3:"ring_top.svg",H1:"ring_section.svg",H2:"ring_section.svg",N2:"ring_top.svg",D2:"ring_top.svg",L1:"ring_top.svg",N1:"ring_top.svg",L2:"ring_top.svg",L3:"ring_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function so(s,t,u=""){const o=_t(ae.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
86
86
  `;try{const d=t.D1/2,l=t.D2/2,g=t.D3/2,a=t.H1+t.H2;if(t.L1<l)throw`err203: L1 ${t.L1} too small compare to D2 ${t.D2}`;if(d+t.L1+l>g-t.L2-t.L3)throw`err204: D3 ${t.D3} too small compare to D1 ${t.D1}, L1 ${t.L1}, L2 ${t.L2}, L3 ${t.L3}`;if(2*Math.atan2(l,d+t.L1)>2*Math.PI/t.N2)throw`err205: D2 ${t.D2} too large compare to N2 ${t.N2}`;o.logstr+=`ring-height: ${L(a)} mm
87
- `;const f=g-t.L3,r=f-t.L2,c=2*Math.PI/(2*t.N1),_=z(f,0);for(let b=0;b<t.N1;b++){const $=2*b+1,O=2*b+2,I=r*Math.cos($*c),k=r*Math.sin($*c),m=f*Math.cos(O*c),G=f*Math.sin(O*c);_.addSegStrokeA(I,k).addSegStrokeA(m,G)}const S=[];S.push(x(0,0,g)),S.push(x(0,0,d));const H=d+t.L1,N=2*Math.PI/t.N2;for(let b=0;b<t.N2;b++){const $=H*Math.cos(b*N),O=H*Math.sin(b*N);S.push(x($,O,l)),h.addSecond(x($,O,l))}n.addSecond(_),n.addMainOI(S);const w=[];w.push(x(0,0,g)),w.push(_),h.addSecond(x(0,0,d)),h.addMainOI(w);const D=z(d,0).addSegStrokeA(-d,0).addSegStrokeA(-d,-t.H1).addSegStrokeA(d,-t.H1).closeSegStroke(),E=function(b){return z(b*(d+t.L1)+l,0).addSegStrokeR(-2*l,0).addSegStrokeR(0,-t.H1).addSegStrokeR(2*l,0).closeSegStroke()},A=function(b){return z(b*(g-t.L3),-t.H1).addSegStrokeR(-b*t.L2,0).addSegStrokeR(0,-t.H2).addSegStrokeR(b*t.L2,0).closeSegStroke()},R=function(b){return z(b*g,0).addSegStrokeR(-b*(g-d),0).addSegStrokeR(0,-t.H1).addSegStrokeR(b*(g-t.L2-t.L3-d),0).addSegStrokeR(0,-t.H2).addSegStrokeR(b*(t.L2+t.L3),0).closeSegStroke()};i.addSecond(D),i.addSecond(E(1)),i.addSecond(E(-1)),i.addSecond(A(1)),i.addSecond(A(-1)),i.addMainO(R(1)),i.addSecond(R(-1)),o.fig={faceRingBase:n,faceRingTeeth:h,faceSection:i};const v=o.partName;o.vol={extrudes:[{outName:`subpax_${v}_base`,face:`${v}_faceRingBase`,extrudeMethod:U.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_teeth`,face:`${v}_faceRingTeeth`,extrudeMethod:U.eLinearOrtho,length:a,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:dt.eUnion,inList:[`subpax_${v}_base`,`subpax_${v}_teeth`]}]},o.sub={},o.logstr+=`ring drawn successfully!
88
- `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var io={pTitle:"Heliostat ring",pDescription:"The gear ring for adjusting the azimuth of the heliostat",pDef:ae,pGeom:so},ue={partName:"ring_guidance",params:[e("D1","mm",700,5,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,5,2e3,1),W("leg details"),e("D3","mm",30,1,200,1),e("D4","mm",50,1,200,1),e("L1","mm",90,1,900,1),e("R5","mm",20,0,500,1),W("inner"),e("D6","mm",300,1,1e3,1),e("N2","motors",8,1,200,1),e("L2","mm",50,1,200,1),e("D7","mm",80,1,200,1),W("thickness"),e("T1","mm",10,1,200,1)],paramSvg:{D1:"ring_guidance_top.svg",D2:"ring_guidance_top.svg",D3:"ring_guidance_top.svg",D4:"ring_guidance_top.svg",R5:"ring_guidance_top.svg",D6:"ring_guidance_top.svg",D7:"ring_guidance_top.svg",N1:"ring_guidance_top.svg",N2:"ring_guidance_top.svg",L1:"ring_guidance_top.svg",L2:"ring_guidance_top.svg",T1:"ring_guidance_top.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function no(s,t,u=""){const o=_t(ue.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
87
+ `;const f=g-t.L3,r=f-t.L2,c=2*Math.PI/(2*t.N1),_=z(f,0);for(let b=0;b<t.N1;b++){const $=2*b+1,O=2*b+2,I=r*Math.cos($*c),k=r*Math.sin($*c),m=f*Math.cos(O*c),G=f*Math.sin(O*c);_.addSegStrokeA(I,k).addSegStrokeA(m,G)}const S=[];S.push(x(0,0,g)),S.push(x(0,0,d));const H=d+t.L1,N=2*Math.PI/t.N2;for(let b=0;b<t.N2;b++){const $=H*Math.cos(b*N),O=H*Math.sin(b*N);S.push(x($,O,l)),h.addSecond(x($,O,l))}n.addSecond(_),n.addMainOI(S);const w=[];w.push(x(0,0,g)),w.push(_),h.addSecond(x(0,0,d)),h.addMainOI(w);const D=z(d,0).addSegStrokeA(-d,0).addSegStrokeA(-d,-t.H1).addSegStrokeA(d,-t.H1).closeSegStroke(),E=function(b){return z(b*(d+t.L1)+l,0).addSegStrokeR(-2*l,0).addSegStrokeR(0,-t.H1).addSegStrokeR(2*l,0).closeSegStroke()},A=function(b){return z(b*(g-t.L3),-t.H1).addSegStrokeR(-b*t.L2,0).addSegStrokeR(0,-t.H2).addSegStrokeR(b*t.L2,0).closeSegStroke()},R=function(b){return z(b*g,0).addSegStrokeR(-b*(g-d),0).addSegStrokeR(0,-t.H1).addSegStrokeR(b*(g-t.L2-t.L3-d),0).addSegStrokeR(0,-t.H2).addSegStrokeR(b*(t.L2+t.L3),0).closeSegStroke()};i.addSecond(D),i.addSecond(E(1)),i.addSecond(E(-1)),i.addSecond(A(1)),i.addSecond(A(-1)),i.addMainO(R(1)),i.addSecond(R(-1)),o.fig={faceRingBase:n,faceRingTeeth:h,faceSection:i};const v=o.partName;o.vol={extrudes:[{outName:`subpax_${v}_base`,face:`${v}_faceRingBase`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_teeth`,face:`${v}_faceRingTeeth`,extrudeMethod:W.eLinearOrtho,length:a,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:dt.eUnion,inList:[`subpax_${v}_base`,`subpax_${v}_teeth`]}]},o.sub={},o.logstr+=`ring drawn successfully!
88
+ `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var io={pTitle:"Heliostat ring",pDescription:"The gear ring for adjusting the azimuth of the heliostat",pDef:ae,pGeom:so},ue={partName:"ring_guidance",params:[e("D1","mm",700,5,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,5,2e3,1),q("leg details"),e("D3","mm",30,1,200,1),e("D4","mm",50,1,200,1),e("L1","mm",90,1,900,1),e("R5","mm",20,0,500,1),q("inner"),e("D6","mm",300,1,1e3,1),e("N2","motors",8,1,200,1),e("L2","mm",50,1,200,1),e("D7","mm",80,1,200,1),q("thickness"),e("T1","mm",10,1,200,1)],paramSvg:{D1:"ring_guidance_top.svg",D2:"ring_guidance_top.svg",D3:"ring_guidance_top.svg",D4:"ring_guidance_top.svg",R5:"ring_guidance_top.svg",D6:"ring_guidance_top.svg",D7:"ring_guidance_top.svg",N1:"ring_guidance_top.svg",N2:"ring_guidance_top.svg",L1:"ring_guidance_top.svg",L2:"ring_guidance_top.svg",T1:"ring_guidance_top.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function no(s,t,u=""){const o=_t(ue.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
89
89
  `;try{const i=t.D1/2,d=t.D3/2,l=t.D4/2,g=t.D6/2,a=t.D7/2,f=2*Math.PI/t.N2;if(a>t.L2)throw`err461: D7 ${t.D7} is too large compare to L2 ${t.L2}`;if(t.N2*t.D7>(t.D6+2*t.L2)*Math.PI)throw`err462: N2 ${t.N2} is too large compare to D6 ${t.D6}, D7 ${t.D7} and L2 ${t.L2}`;if(t.D2<t.D6+2*t.L2+2*a)throw`err463: D2 ${t.D2} is too small compare to D6 ${t.D6}, L2 ${t.L2} and D7 ${t.D7}`;o.logstr+=`ring_guidance: Dmax ${L(t.D1+2*l)} mm
90
- `;const r=[],[c,_,S]=ie(t);o.logstr+=c,r.push(_),r.push(x(0,0,g));for(let E=0;E<t.N2;E++)r.push(x(g+t.L2,0,a).rotate(0,0,E*f));for(let E=0;E<t.N1;E++)r.push(x(i,0,d).rotate(0,0,E*S));n.addMainOI(r);const H=function(E,A,R,v){return z(E,A).addSegStrokeR(R,0).addSegStrokeR(0,v).addSegStrokeR(-R,0).closeSegStroke()},N=i-g+l;h.addMainO(H(g,0,N,t.T1)),h.addMainO(H(-g-N,0,N,t.T1)),h.addSecond(H(i-d,0,2*d,t.T1)),h.addSecond(H(-i-d,0,2*d,t.T1));const w=g+t.L2;h.addSecond(H(w-a,0,2*a,t.T1)),h.addSecond(H(-w-a,0,2*a,t.T1)),o.fig={faceTop:n,faceSection:h};const D=o.partName;o.vol={extrudes:[{outName:`subpax_${D}_top`,face:`${D}_faceTop`,extrudeMethod:U.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${D}`,boolMethod:dt.eIdentity,inList:[`subpax_${D}_top`]}]},o.sub={},o.logstr+=`ring_guidance drawn successfully!
91
- `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var lo={pTitle:"Ring-guidance",pDescription:"The guidance of the gear-ring for the heliostat azimuth",pDef:ue,pGeom:no},_e={partName:"vaxis_guidance",params:[e("D1","mm",700,5,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,5,2e3,1),W("leg details"),e("D3","mm",30,1,200,1),e("D4","mm",50,1,200,1),e("L1","mm",90,1,900,1),e("R5","mm",20,0,500,1),W("inner"),e("D6","mm",540,1,1e3,1),e("N2","springs",6,1,24,1),xt("orientation",["ccw","cw","alt"]),e("R7","mm",10,0,100,1),e("L2","mm",100,1,900,1),e("E2","mm",20,1,200,1),W("spring"),e("SA1","degree",0,-45,45,1),e("SE1","mm",10,.1,200,.1),e("SD1","mm",20,1,200,1),e("SD2","mm",10,1,200,1),e("SN1","loops",2,0,8,1),e("SL1","mm",40,1,900,1),e("SL2","mm",70,0,900,1),xt("Send",["round","pike"]),W("thickness"),e("T1","mm",10,1,200,1),e("Dvaxis","mm",260,5,1e3,1)],paramSvg:{D1:"vaxis_guidance_top.svg",N1:"vaxis_guidance_top.svg",D2:"vaxis_guidance_top.svg",D3:"vaxis_guidance_top.svg",D4:"vaxis_guidance_top.svg",L1:"vaxis_guidance_top.svg",R5:"vaxis_guidance_top.svg",D6:"vaxis_guidance_top.svg",N2:"vaxis_guidance_top.svg",orientation:"vaxis_guidance_top.svg",R7:"vaxis_guidance_top.svg",L2:"vaxis_guidance_spring.svg",E2:"vaxis_guidance_spring.svg",SA1:"vaxis_guidance_spring.svg",SE1:"vaxis_guidance_spring.svg",SD1:"vaxis_guidance_spring.svg",SD2:"vaxis_guidance_spring.svg",SN1:"vaxis_guidance_spring.svg",SL1:"vaxis_guidance_spring.svg",SL2:"vaxis_guidance_spring.svg",Send:"vaxis_guidance_spring.svg",T1:"vaxis_guidance_top.svg",Dvaxis:"vaxis_guidance_top.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function co(s,t,u=""){const o=_t(_e.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
90
+ `;const r=[],[c,_,S]=ie(t);o.logstr+=c,r.push(_),r.push(x(0,0,g));for(let E=0;E<t.N2;E++)r.push(x(g+t.L2,0,a).rotate(0,0,E*f));for(let E=0;E<t.N1;E++)r.push(x(i,0,d).rotate(0,0,E*S));n.addMainOI(r);const H=function(E,A,R,v){return z(E,A).addSegStrokeR(R,0).addSegStrokeR(0,v).addSegStrokeR(-R,0).closeSegStroke()},N=i-g+l;h.addMainO(H(g,0,N,t.T1)),h.addMainO(H(-g-N,0,N,t.T1)),h.addSecond(H(i-d,0,2*d,t.T1)),h.addSecond(H(-i-d,0,2*d,t.T1));const w=g+t.L2;h.addSecond(H(w-a,0,2*a,t.T1)),h.addSecond(H(-w-a,0,2*a,t.T1)),o.fig={faceTop:n,faceSection:h};const D=o.partName;o.vol={extrudes:[{outName:`subpax_${D}_top`,face:`${D}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${D}`,boolMethod:dt.eIdentity,inList:[`subpax_${D}_top`]}]},o.sub={},o.logstr+=`ring_guidance drawn successfully!
91
+ `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var lo={pTitle:"Ring-guidance",pDescription:"The guidance of the gear-ring for the heliostat azimuth",pDef:ue,pGeom:no},_e={partName:"vaxis_guidance",params:[e("D1","mm",700,5,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,5,2e3,1),q("leg details"),e("D3","mm",30,1,200,1),e("D4","mm",50,1,200,1),e("L1","mm",90,1,900,1),e("R5","mm",20,0,500,1),q("inner"),e("D6","mm",540,1,1e3,1),e("N2","springs",6,1,24,1),xt("orientation",["ccw","cw","alt"]),e("R7","mm",10,0,100,1),e("L2","mm",100,1,900,1),e("E2","mm",20,1,200,1),q("spring"),e("SA1","degree",0,-45,45,1),e("SE1","mm",10,.1,200,.1),e("SD1","mm",20,1,200,1),e("SD2","mm",10,1,200,1),e("SN1","loops",2,0,8,1),e("SL1","mm",40,1,900,1),e("SL2","mm",70,0,900,1),xt("Send",["round","pike"]),q("thickness"),e("T1","mm",10,1,200,1),e("Dvaxis","mm",260,5,1e3,1)],paramSvg:{D1:"vaxis_guidance_top.svg",N1:"vaxis_guidance_top.svg",D2:"vaxis_guidance_top.svg",D3:"vaxis_guidance_top.svg",D4:"vaxis_guidance_top.svg",L1:"vaxis_guidance_top.svg",R5:"vaxis_guidance_top.svg",D6:"vaxis_guidance_top.svg",N2:"vaxis_guidance_top.svg",orientation:"vaxis_guidance_top.svg",R7:"vaxis_guidance_top.svg",L2:"vaxis_guidance_spring.svg",E2:"vaxis_guidance_spring.svg",SA1:"vaxis_guidance_spring.svg",SE1:"vaxis_guidance_spring.svg",SD1:"vaxis_guidance_spring.svg",SD2:"vaxis_guidance_spring.svg",SN1:"vaxis_guidance_spring.svg",SL1:"vaxis_guidance_spring.svg",SL2:"vaxis_guidance_spring.svg",Send:"vaxis_guidance_spring.svg",T1:"vaxis_guidance_top.svg",Dvaxis:"vaxis_guidance_top.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function co(s,t,u=""){const o=_t(_e.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
92
92
  `;try{const i=t.D1/2,d=t.D2/2,l=t.D3/2,g=t.D4/2,a=t.D6/2;if(d<a)throw`err466: D6 ${t.D6} is too large compare to D2 ${t.D2}`;o.logstr+=`vaxis_guidance: Dmax ${L(t.D1+2*g)} mm
93
- `;const f=[],[r,c,_]=ie(t);o.logstr+=r,f.push(c);for(let D=0;D<t.N1;D++)f.push(x(i,0,l).rotate(0,0,D*_));const[S,H]=Je(t);o.logstr+=S,f.push(H),n.addSecond(x(0,0,t.Dvaxis/2)),n.addMainOI(f);const N=i-a+g;h.addMainO(gt(a,0,N,t.T1)),h.addMainO(gt(-a-N,0,N,t.T1)),h.addSecond(gt(i-l,0,2*l,t.T1)),h.addSecond(gt(-i-l,0,2*l,t.T1)),o.fig={faceTop:n,faceSection:h};const w=o.partName;o.vol={extrudes:[{outName:`subpax_${w}_top`,face:`${w}_faceTop`,extrudeMethod:U.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${w}`,boolMethod:dt.eIdentity,inList:[`subpax_${w}_top`]}]},o.sub={},o.logstr+=`vaxis_guidance drawn successfully!
94
- `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var ro={pTitle:"Vaxis-guidance",pDescription:"The guidance of the V-Axis for the heliostat azimuth",pDef:_e,pGeom:co},fe={partName:"haxis_guidance",params:[e("D5","mm",600,1,2e3,1),e("D8","mm",1e3,1,2e3,1),W("outer details"),e("E5","mm",1,0,200,1),e("E8","mm",20,1,200,1),e("L5","mm",20,1,200,1),e("R9","mm",20,0,500,1),W("inner spring"),e("SA1","degree",0,-45,45,1),e("SE1","mm",2,.1,100,.1),e("SD1","mm",20,1,200,1),e("SD2","mm",10,1,200,1),e("SN1","springs",7,1,24,1),e("SL1","mm",60,0,500,1),e("SL2","mm",100,0,500,1),xt("Send",["round","pike"]),W("thickness"),e("L4","mm",400,1,2e3,1)],paramSvg:{D5:"haxis_guidance_outer.svg",D8:"haxis_guidance_outer.svg",E5:"haxis_guidance_outer.svg",E8:"haxis_guidance_outer.svg",L5:"haxis_guidance_outer.svg",R9:"haxis_guidance_outer.svg",SA1:"haxis_guidance_spring.svg",SE1:"haxis_guidance_spring.svg",SD1:"haxis_guidance_spring.svg",SD2:"haxis_guidance_spring.svg",SN1:"haxis_guidance_spring.svg",SL1:"haxis_guidance_spring.svg",SL2:"haxis_guidance_spring.svg",Send:"haxis_guidance_spring.svg",L4:"haxis_guidance_outer.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function go(s,t,u=""){const o=_t(fe.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
93
+ `;const f=[],[r,c,_]=ie(t);o.logstr+=r,f.push(c);for(let D=0;D<t.N1;D++)f.push(x(i,0,l).rotate(0,0,D*_));const[S,H]=Je(t);o.logstr+=S,f.push(H),n.addSecond(x(0,0,t.Dvaxis/2)),n.addMainOI(f);const N=i-a+g;h.addMainO(gt(a,0,N,t.T1)),h.addMainO(gt(-a-N,0,N,t.T1)),h.addSecond(gt(i-l,0,2*l,t.T1)),h.addSecond(gt(-i-l,0,2*l,t.T1)),o.fig={faceTop:n,faceSection:h};const w=o.partName;o.vol={extrudes:[{outName:`subpax_${w}_top`,face:`${w}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${w}`,boolMethod:dt.eIdentity,inList:[`subpax_${w}_top`]}]},o.sub={},o.logstr+=`vaxis_guidance drawn successfully!
94
+ `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var ro={pTitle:"Vaxis-guidance",pDescription:"The guidance of the V-Axis for the heliostat azimuth",pDef:_e,pGeom:co},fe={partName:"haxis_guidance",params:[e("D5","mm",600,1,2e3,1),e("D8","mm",1e3,1,2e3,1),q("outer details"),e("E5","mm",1,0,200,1),e("E8","mm",20,1,200,1),e("L5","mm",20,1,200,1),e("R9","mm",20,0,500,1),q("inner spring"),e("SA1","degree",0,-45,45,1),e("SE1","mm",2,.1,100,.1),e("SD1","mm",20,1,200,1),e("SD2","mm",10,1,200,1),e("SN1","springs",7,1,24,1),e("SL1","mm",60,0,500,1),e("SL2","mm",100,0,500,1),xt("Send",["round","pike"]),q("thickness"),e("L4","mm",400,1,2e3,1)],paramSvg:{D5:"haxis_guidance_outer.svg",D8:"haxis_guidance_outer.svg",E5:"haxis_guidance_outer.svg",E8:"haxis_guidance_outer.svg",L5:"haxis_guidance_outer.svg",R9:"haxis_guidance_outer.svg",SA1:"haxis_guidance_spring.svg",SE1:"haxis_guidance_spring.svg",SD1:"haxis_guidance_spring.svg",SD2:"haxis_guidance_spring.svg",SN1:"haxis_guidance_spring.svg",SL1:"haxis_guidance_spring.svg",SL2:"haxis_guidance_spring.svg",Send:"haxis_guidance_spring.svg",L4:"haxis_guidance_outer.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function go(s,t,u=""){const o=_t(fe.partName+u),n=y(),h=y();o.logstr+=`${o.partName} simTime: ${s}
95
95
  `;try{const i=t.D5/2,d=t.D8/2,l=t.SD1/2,g=i+t.E5,a=d-t.E8,f=2*Math.asin(t.L5/(2*g)),r=Math.PI/12+kt(t.SA1),c=Math.PI/2+f-r,_=Math.PI-r,S=Math.PI/2-Math.PI/6+r;if(g+l+t.SE1>a)throw`err411: D8 ${t.D8} is too small compare to D5 ${t.D5}, E5 ${t.E5}, E8 ${t.E8}`;if(2*Math.PI/3-2*f<t.R9/a)throw`err412: L5 ${t.L5} is too large compare to R9 ${t.R9}`;o.logstr+=`haxis_guidance: Dinner ${L(2*g)} mm
96
- `,n.addSecond(x(0,0,i)),n.addSecond(x(0,0,d));const[H,N]=Tt(t,!1),[,w]=Tt(t,!0);o.logstr+=H;const D=Math.PI/2-f,E=-Math.PI/6+f,A=rt(0,0),R=A.translatePolar(D,g+t.SE1+l),v=R.translatePolar(D-Math.PI/2,l),b=v.translatePolar(D+Math.PI,l+t.SE1),$=v.translatePolar(D+Math.PI,l),O=b.rotate(v,c),I=A.translatePolar(E,g+t.SE1+l),k=I.translatePolar(E+Math.PI/2,l),m=k.translatePolar(E+Math.PI,l+t.SE1),G=k.translatePolar(E+Math.PI,l),C=G.rotate(k,-c),T=z(0,g).addSegStrokeA(b.cx,b.cy).addPointA(O.cx,O.cy).addSegArc(l+t.SE1,!1,!0);T.addPartial(N.rotate(0,0,_).translate(O.cx,O.cy)),T.addPointA($.cx,$.cy).addPointA(R.cx,R.cy).addSegArc2().addSegStrokeAP(D,a).addCornerRounded(t.R9).addPointAP(E,a).addSegArc(a,!1,!1).addCornerRounded(t.R9).addSegStrokeA(I.cx,I.cy).addPointA(G.cx,G.cy).addPointA(C.cx,C.cy).addSegArc2(),T.addPartial(w.rotate(0,0,S).translate(C.cx,C.cy)),T.addPointA(m.cx,m.cy).addSegArc(l+t.SE1,!1,!0).addSegStrokeAP(-Math.PI/6,g).addSegStrokeAP(-Math.PI/6,d).addPointAP(Math.PI/2,d).addSegArc(d,!1,!0).closeSegStroke(),n.addMainO(T);const J=d*Math.sin(Math.PI/6);h.addMainO(gt(0,-J,t.L4,d+J)),h.addSecond(gt(0,-d,t.L4,2*d)),h.addSecond(gt(0,-i,t.L4,2*i)),o.fig={faceProfile:n,faceSide:h};const j=o.partName;o.vol={extrudes:[{outName:`subpax_${j}_profile`,face:`${j}_faceProfile`,extrudeMethod:U.eLinearOrtho,length:t.L4,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${j}`,boolMethod:dt.eIdentity,inList:[`subpax_${j}_profile`]}]},o.sub={},o.logstr+=`haxis_guidance drawn successfully!
97
- `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var ho={pTitle:"Haxis-guidance",pDescription:"The guidance of the H-Axis for the heliostat inclination",pDef:fe,pGeom:go},Se={partName:"rod",params:[e("L1","mm",1e4,100,4e4,10),e("L2","mm",100,2,400,1),e("L3","mm",400,10,1e3,1),e("L4","mm",600,10,1e3,1),e("N1","",10,2,50,1),W("section"),e("H1","mm",200,5,4e3,1),e("E1","mm",2,1,80,1),e("E2","mm",10,1,80,1),W("pad"),e("N3","",2,1,20,1),e("N4","",4,1,20,1),e("R3","mm",100,1,500,1),e("D2","mm",10,1,100,1),e("L7","mm",10,1,300,1)],paramSvg:{L1:"rod_top.svg",L2:"rod_top.svg",L3:"rod_top.svg",L4:"rod_top.svg",H1:"rod_cut.svg",E1:"rod_cut.svg",E2:"rod_cut.svg",N1:"rod_top.svg",N3:"rod_top.svg",N4:"rod_top.svg",R3:"rod_top.svg",D2:"rod_plate.svg",L7:"rod_plate.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function ao(s,t,u=""){const o=_t(Se.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
96
+ `,n.addSecond(x(0,0,i)),n.addSecond(x(0,0,d));const[H,N]=Tt(t,!1),[,w]=Tt(t,!0);o.logstr+=H;const D=Math.PI/2-f,E=-Math.PI/6+f,A=rt(0,0),R=A.translatePolar(D,g+t.SE1+l),v=R.translatePolar(D-Math.PI/2,l),b=v.translatePolar(D+Math.PI,l+t.SE1),$=v.translatePolar(D+Math.PI,l),O=b.rotate(v,c),I=A.translatePolar(E,g+t.SE1+l),k=I.translatePolar(E+Math.PI/2,l),m=k.translatePolar(E+Math.PI,l+t.SE1),G=k.translatePolar(E+Math.PI,l),C=G.rotate(k,-c),T=z(0,g).addSegStrokeA(b.cx,b.cy).addPointA(O.cx,O.cy).addSegArc(l+t.SE1,!1,!0);T.addPartial(N.rotate(0,0,_).translate(O.cx,O.cy)),T.addPointA($.cx,$.cy).addPointA(R.cx,R.cy).addSegArc2().addSegStrokeAP(D,a).addCornerRounded(t.R9).addPointAP(E,a).addSegArc(a,!1,!1).addCornerRounded(t.R9).addSegStrokeA(I.cx,I.cy).addPointA(G.cx,G.cy).addPointA(C.cx,C.cy).addSegArc2(),T.addPartial(w.rotate(0,0,S).translate(C.cx,C.cy)),T.addPointA(m.cx,m.cy).addSegArc(l+t.SE1,!1,!0).addSegStrokeAP(-Math.PI/6,g).addSegStrokeAP(-Math.PI/6,d).addPointAP(Math.PI/2,d).addSegArc(d,!1,!0).closeSegStroke(),n.addMainO(T);const J=d*Math.sin(Math.PI/6);h.addMainO(gt(0,-J,t.L4,d+J)),h.addSecond(gt(0,-d,t.L4,2*d)),h.addSecond(gt(0,-i,t.L4,2*i)),o.fig={faceProfile:n,faceSide:h};const j=o.partName;o.vol={extrudes:[{outName:`subpax_${j}_profile`,face:`${j}_faceProfile`,extrudeMethod:W.eLinearOrtho,length:t.L4,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${j}`,boolMethod:dt.eIdentity,inList:[`subpax_${j}_profile`]}]},o.sub={},o.logstr+=`haxis_guidance drawn successfully!
97
+ `,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var ho={pTitle:"Haxis-guidance",pDescription:"The guidance of the H-Axis for the heliostat inclination",pDef:fe,pGeom:go},Se={partName:"rod",params:[e("L1","mm",1e4,100,4e4,10),e("L2","mm",100,2,400,1),e("L3","mm",400,10,1e3,1),e("L4","mm",600,10,1e3,1),e("N1","",10,2,50,1),q("section"),e("H1","mm",200,5,4e3,1),e("E1","mm",2,1,80,1),e("E2","mm",10,1,80,1),q("pad"),e("N3","",2,1,20,1),e("N4","",4,1,20,1),e("R3","mm",100,1,500,1),e("D2","mm",10,1,100,1),e("L7","mm",10,1,300,1)],paramSvg:{L1:"rod_top.svg",L2:"rod_top.svg",L3:"rod_top.svg",L4:"rod_top.svg",H1:"rod_cut.svg",E1:"rod_cut.svg",E2:"rod_cut.svg",N1:"rod_top.svg",N3:"rod_top.svg",N4:"rod_top.svg",R3:"rod_top.svg",D2:"rod_plate.svg",L7:"rod_plate.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function ao(s,t,u=""){const o=_t(Se.partName+u),n=y(),h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
98
98
  `;try{const d=t.D2/2,l=t.L3/(t.N3+1),g=t.L4/(t.N4+1);o.logstr+=`rod-length: ${L(t.L1)} mm
99
99
  `;const a=(t.L1-t.L3)/(t.N1-1);o.logstr+=`space-length: ${L(a)} mm
100
- `;const f=function(v){const b=[],$=z(t.L4/2,v).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,v+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,v+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,v).addCornerRounded(t.R3).closeSegStroke();b.push($);for(let O=1;O<t.N3+1;O++)b.push(x(t.L4/2-t.L7,v+O*l,d)),b.push(x(-t.L4/2+t.L7,v+O*l,d));for(let O=1;O<t.N4+1;O++)b.push(x(-t.L4/2+O*g,v+t.L7,d)),b.push(x(-t.L4/2+O*g,v+t.L3-t.L7,d));return b},r=function(v,b){return z(t.L2/2,v).addSegStrokeA(t.L2/2,v+b).addSegStrokeA(-t.L2/2,v+b).addSegStrokeA(-t.L2/2,v).closeSegStroke()},c=[],_=t.L2/2,S=t.L4/2,H=(t.L2-2*t.E1)/2,N=t.H1-t.E1,w=z(_,0).addSegStrokeA(_,t.H1).addSegStrokeA(-_,t.H1).addSegStrokeA(-_,0).closeSegStroke(),D=z(H,t.E1).addSegStrokeA(H,N).addSegStrokeA(-H,N).addSegStrokeA(-H,t.E1).closeSegStroke(),E=z(S,t.H1).addSegStrokeA(S,t.H1+t.E2).addSegStrokeA(-S,t.H1+t.E2).addSegStrokeA(-S,t.H1).closeSegStroke();c.push(w),c.push(D),n.addSecond(E),n.addMainOI(c),h.addMainOI(f(0)),h.addSecond(r(-t.L3/2,2*t.L3));const A=(t.L1-t.L3)/(t.N1-1);for(let v=0;v<t.N1;v++)i.addMainOI(f(v*A));i.addSecond(r(0,t.L1)),o.fig={faceCut:n,facePlate:h,faceTop:i};const R=o.partName;o.vol={extrudes:[{outName:`subpax_${R}_rod`,face:`${R}_faceCut`,extrudeMethod:U.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${R}_plates`,face:`${R}_faceTop`,extrudeMethod:U.eLinearOrtho,length:t.E2,rotate:[Math.PI/2,0,0],translate:[0,t.E2+t.H1,0]}],volumes:[{outName:`pax_${R}`,boolMethod:dt.eUnion,inList:[`subpax_${R}_rod`,`subpax_${R}_plates`]}]},o.sub={},o.logstr+=`heliostat-rod drawn successfully!
101
- `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var uo={pTitle:"Heliostat rod",pDescription:"The rod of an heliostat-surface",pDef:Se,pGeom:ao},Le={partName:"trapeze",params:[e("L1","mm",1600,10,4e3,1),e("L2","mm",1e3,10,4e3,1),e("L3","mm",400,5,800,1),e("L4","mm",300,5,800,1),W("outer frame"),e("N1","",7,1,20,1),e("N2","",4,1,20,1),e("D1","mm",10,1,40,1),e("L5","mm",100,1,400,1),e("L6","mm",20,1,400,1),e("R1","mm",60,1,400,1),e("R2","mm",20,1,400,1),W("inner pad"),e("N3","",2,1,20,1),e("N4","",2,1,20,1),e("D2","mm",10,1,40,1),e("L7","mm",20,1,400,1),e("R3","mm",20,1,400,1),W("diagonal shaft"),e("D3","mm",30,1,100,1),e("D4","mm",26,1,100,1),e("H1","mm",300,.5,800,.5),e("H2","mm",2,.5,800,.5),e("H3","mm",5,.5,800,.5)],paramSvg:{L1:"trapeze_top.svg",L2:"trapeze_top.svg",L3:"trapeze_top.svg",L4:"trapeze_top.svg",N1:"trapeze_top.svg",N2:"trapeze_top.svg",N3:"trapeze_top.svg",N4:"trapeze_top.svg",L5:"trapeze_top.svg",L6:"trapeze_top.svg",L7:"trapeze_top.svg",D1:"trapeze_top.svg",D2:"trapeze_top.svg",D3:"trapeze_rod.svg",D4:"trapeze_rod.svg",R1:"trapeze_top.svg",R2:"trapeze_top.svg",R3:"trapeze_top.svg",H1:"trapeze_side.svg",H2:"trapeze_side.svg",H3:"trapeze_side.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function _o(s,t,u=""){const o=_t(Le.partName+u);let n,h;const i=y(),d=y(),l=y(),g=y(),a=y();o.logstr+=`${o.partName} simTime: ${s}
100
+ `;const f=function(v){const b=[],$=z(t.L4/2,v).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,v+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,v+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,v).addCornerRounded(t.R3).closeSegStroke();b.push($);for(let O=1;O<t.N3+1;O++)b.push(x(t.L4/2-t.L7,v+O*l,d)),b.push(x(-t.L4/2+t.L7,v+O*l,d));for(let O=1;O<t.N4+1;O++)b.push(x(-t.L4/2+O*g,v+t.L7,d)),b.push(x(-t.L4/2+O*g,v+t.L3-t.L7,d));return b},r=function(v,b){return z(t.L2/2,v).addSegStrokeA(t.L2/2,v+b).addSegStrokeA(-t.L2/2,v+b).addSegStrokeA(-t.L2/2,v).closeSegStroke()},c=[],_=t.L2/2,S=t.L4/2,H=(t.L2-2*t.E1)/2,N=t.H1-t.E1,w=z(_,0).addSegStrokeA(_,t.H1).addSegStrokeA(-_,t.H1).addSegStrokeA(-_,0).closeSegStroke(),D=z(H,t.E1).addSegStrokeA(H,N).addSegStrokeA(-H,N).addSegStrokeA(-H,t.E1).closeSegStroke(),E=z(S,t.H1).addSegStrokeA(S,t.H1+t.E2).addSegStrokeA(-S,t.H1+t.E2).addSegStrokeA(-S,t.H1).closeSegStroke();c.push(w),c.push(D),n.addSecond(E),n.addMainOI(c),h.addMainOI(f(0)),h.addSecond(r(-t.L3/2,2*t.L3));const A=(t.L1-t.L3)/(t.N1-1);for(let v=0;v<t.N1;v++)i.addMainOI(f(v*A));i.addSecond(r(0,t.L1)),o.fig={faceCut:n,facePlate:h,faceTop:i};const R=o.partName;o.vol={extrudes:[{outName:`subpax_${R}_rod`,face:`${R}_faceCut`,extrudeMethod:W.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${R}_plates`,face:`${R}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[Math.PI/2,0,0],translate:[0,t.E2+t.H1,0]}],volumes:[{outName:`pax_${R}`,boolMethod:dt.eUnion,inList:[`subpax_${R}_rod`,`subpax_${R}_plates`]}]},o.sub={},o.logstr+=`heliostat-rod drawn successfully!
101
+ `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var uo={pTitle:"Heliostat rod",pDescription:"The rod of an heliostat-surface",pDef:Se,pGeom:ao},Le={partName:"trapeze",params:[e("L1","mm",1600,10,4e3,1),e("L2","mm",1e3,10,4e3,1),e("L3","mm",400,5,800,1),e("L4","mm",300,5,800,1),q("outer frame"),e("N1","",7,1,20,1),e("N2","",4,1,20,1),e("D1","mm",10,1,40,1),e("L5","mm",100,1,400,1),e("L6","mm",20,1,400,1),e("R1","mm",60,1,400,1),e("R2","mm",20,1,400,1),q("inner pad"),e("N3","",2,1,20,1),e("N4","",2,1,20,1),e("D2","mm",10,1,40,1),e("L7","mm",20,1,400,1),e("R3","mm",20,1,400,1),q("diagonal shaft"),e("D3","mm",30,1,100,1),e("D4","mm",26,1,100,1),e("H1","mm",300,.5,800,.5),e("H2","mm",2,.5,800,.5),e("H3","mm",5,.5,800,.5)],paramSvg:{L1:"trapeze_top.svg",L2:"trapeze_top.svg",L3:"trapeze_top.svg",L4:"trapeze_top.svg",N1:"trapeze_top.svg",N2:"trapeze_top.svg",N3:"trapeze_top.svg",N4:"trapeze_top.svg",L5:"trapeze_top.svg",L6:"trapeze_top.svg",L7:"trapeze_top.svg",D1:"trapeze_top.svg",D2:"trapeze_top.svg",D3:"trapeze_rod.svg",D4:"trapeze_rod.svg",R1:"trapeze_top.svg",R2:"trapeze_top.svg",R3:"trapeze_top.svg",H1:"trapeze_side.svg",H2:"trapeze_side.svg",H3:"trapeze_side.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function _o(s,t,u=""){const o=_t(Le.partName+u);let n,h;const i=y(),d=y(),l=y(),g=y(),a=y();o.logstr+=`${o.partName} simTime: ${s}
102
102
  `;try{if(t.L3>t.L1-t.L5)throw`err595: L3 ${t.L3} too large compare to L1 ${t.L1} and L5 ${t.L5}`;if(t.L4>t.L2-t.L5)throw`err596: L4 ${t.L4} too large compare to L2 ${t.L2} and L5 ${t.L5}`;if(t.H1-t.H2-t.H3<4*t.D3)throw`err597: H1 ${t.H1} too small compare to H2 ${t.H2}, H3 ${t.H3} and D3 ${t.D3}`;const f=t.R1*(1-1/Math.sqrt(2)),r=t.R3*(1-1/Math.sqrt(2)),c=t.L2/2-f-(t.L4/2-r),_=t.L1/2-f-(t.L3/2-r),S=Math.sqrt(c**2+_**2),H=t.H1-t.H2-t.H3,N=Math.sqrt(S**2+H**2),w=Math.atan2(H,S),D=Math.atan2(_,c);o.logstr+=`rod-slope: length: ${L(N)} mm, angle: ${L(ht(w))} degree
103
103
  `,o.logstr+=`rod-xy-angle: ${L(ht(D))} degree
104
104
  `;const E=t.D3/Math.cos(Math.PI/2-w);o.logstr+=`rod-footprint-length: ${L(E)} mm
105
- `;const A=Math.sqrt((E/2)**2+(t.D3/2)**2),R=Math.atan2(t.D3,E);n=function(P,nt,Q){return z(P,nt).addPointRP(Q+Math.PI-R,A).addSeg2Arcs(Q+Math.PI/2,Q).addPointRP(Q+Math.PI+R,A).addSeg2Arcs(Q+Math.PI,Q+Math.PI/2).addPointRP(Q-R,A).addSeg2Arcs(Q+3*Math.PI/2,Q+Math.PI).addPointRP(Q+R,A).addSeg2Arcs(Q,Q-Math.PI/2)},h=function(P,nt,Q){const et=P+A*Math.cos(Q+Math.PI-R),at=nt+A*Math.sin(Q+Math.PI-R);return z(et,at).addSegStrokeRP(Q+Math.PI,S).addSegStrokeRP(Q-Math.PI/2,t.D3).addSegStrokeRP(Q,S).closeSegStroke()};const v=[];if(t.R1>t.L1/4||t.R1>t.L2/4)throw`err614: R1 ${t.R1} too large compare to L1 ${t.L1} or L2 ${t.L2}`;const b=z(t.L2/2,t.L1/2).addSegStrokeA(-t.L2/2,t.L1/2).addCornerRounded(t.R1).addSegStrokeA(-t.L2/2,-t.L1/2).addCornerRounded(t.R1).addSegStrokeA(t.L2/2,-t.L1/2).addCornerRounded(t.R1).closeSegStroke().addCornerRounded(t.R1);if(t.R2>(t.L1-2*t.L5)/4||t.R2>(t.L2-2*t.L5)/4)throw`err627: R2 ${t.R2} too large compare to L1 ${t.L1}, L2 ${t.L2} and L5 ${t.L5}`;const $=z(t.L2/2-t.L5,t.L1/2-t.L5).addSegStrokeA(-t.L2/2+t.L5,t.L1/2-t.L5).addCornerRounded(t.R2).addSegStrokeA(-t.L2/2+t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).addSegStrokeA(t.L2/2-t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).closeSegStroke().addCornerRounded(t.R2);if(t.R3>t.L3/4||t.R3>t.L4/4)throw`err639: R3 ${t.R3} too large compare to L3 ${t.L3} or L4 ${t.L4}`;const O=z(t.L4/2,t.L3/2).addSegStrokeA(-t.L4/2,t.L3/2).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,-t.L3/2).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,-t.L3/2).addCornerRounded(t.R3).closeSegStroke().addCornerRounded(t.R3);v.push(b),v.push($),i.addSecond(O);const I=t.L1/(t.N1+1),k=t.L2/(t.N2+1),m=t.L3/(t.N3+1),G=t.L4/(t.N4+1);if(t.L5<t.D1/2+t.L6)throw`err658: L5 ${t.L5} too small compare to D1 ${t.D1} or L6 ${t.L6}`;if(m<t.D2/2+t.L7)throw`err661: D2 ${t.D2} or L7 ${t.L7} too large compare to L3 ${t.l3}`;if(G<t.D2/2+t.L7)throw`err664: D2 ${t.D2} or L7 ${t.L7} too large compare to L4 ${t.l4}`;const C=[];for(let P=1;P<t.N1+1;P++)C.push(x(t.L2/2-t.L6,-t.L1/2+P*I,t.D1/2)),C.push(x(-t.L2/2+t.L6,-t.L1/2+P*I,t.D1/2));for(let P=1;P<t.N2+1;P++)C.push(x(-t.L2/2+P*k,t.L1/2-t.L6,t.D1/2)),C.push(x(-t.L2/2+P*k,-t.L1/2+t.L6,t.D1/2));const T=[];for(let P=1;P<t.N3+1;P++)T.push(x(t.L4/2-t.L7,-t.L3/2+P*m,t.D2/2)),T.push(x(-t.L4/2+t.L7,-t.L3/2+P*m,t.D2/2));for(let P=1;P<t.N4+1;P++)T.push(x(-t.L4/2+P*G,t.L3/2-t.L7,t.D2/2)),T.push(x(-t.L4/2+P*G,-t.L3/2+t.L7,t.D2/2));C.forEach(P=>{v.push(P)}),T.forEach(P=>{i.addSecond(P)}),i.addMainOI(v);const J=[];J.push(n(t.L2/2-f,t.L1/2-f,D)),J.push(n(t.L4/2-r,t.L3/2-r,D)),J.push(n(-t.L2/2+f,t.L1/2-f,Math.PI-D)),J.push(n(-t.L4/2+r,t.L3/2-r,Math.PI-D)),J.push(n(-t.L2/2+f,-t.L1/2+f,Math.PI+D)),J.push(n(-t.L4/2+r,-t.L3/2+r,Math.PI+D)),J.push(n(t.L2/2-f,-t.L1/2+f,-D)),J.push(n(t.L4/2-r,-t.L3/2+r,-D));const j=[];j.push(h(t.L2/2-f,t.L1/2-f,D)),j.push(h(-t.L2/2+f,t.L1/2-f,Math.PI-D)),j.push(h(-t.L2/2+f,-t.L1/2+f,Math.PI+D)),j.push(h(t.L2/2-f,-t.L1/2+f,-D)),J.forEach(P=>{i.addSecond(P)}),j.forEach(P=>{i.addSecond(P)});const V=[];if(V.push(O),T.forEach(P=>{V.push(P)}),d.addSecond(b),d.addSecond($),C.forEach(P=>{d.addSecond(P)}),J.forEach(P=>{d.addSecond(P)}),j.forEach(P=>{d.addSecond(P)}),d.addMainOI(V),t.D4>=t.D3)throw`err218: D4 ${t.D4} larger than D3 ${t.D3}`;l.addMainO(x(0,0,t.D3/2)),l.addSecond(x(0,0,t.D4/2)),g.addMainO(x(0,0,t.D4/2)),g.addSecond(x(0,0,t.D3/2));const K=t.D3*Math.cos(w),F=K/Math.tan(w),Y=r+(E/2+F)*Math.cos(D),it=r+(E/2+F)*Math.sin(D),M=N+2*(E+F+K),X=M+t.L3+t.L4+K,st=z(X,X).addSegStrokeA(-X,X).addSegStrokeA(-X,-X).addSegStrokeA(X,-X).closeSegStroke();a.addMainO(st),o.fig={faceFrame:i,facePlate:d,faceRod:l,faceRodHollow:g,faceCutRod:a};const B=o.partName;o.vol={extrudes:[{outName:`subpax_${B}_frame`,face:`${B}_faceFrame`,extrudeMethod:U.eLinearOrtho,length:t.H2,rotate:[0,0,0],translate:[0,0,t.H1-t.H2]},{outName:`subpax_${B}_plate`,face:`${B}_facePlate`,extrudeMethod:U.eLinearOrtho,length:t.H3,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${B}_rod1`,face:`${B}_faceRod`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,D],translate:[t.L4/2-Y,t.L3/2-it,t.H3-K]},{outName:`subpax_${B}_rod2`,face:`${B}_faceRod`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI-D],translate:[-t.L4/2+Y,t.L3/2-it,t.H3-K]},{outName:`subpax_${B}_rod3`,face:`${B}_faceRod`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI+D],translate:[-t.L4/2+Y,-t.L3/2+it,t.H3-K]},{outName:`subpax_${B}_rod4`,face:`${B}_faceRod`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,-D],translate:[t.L4/2-Y,-t.L3/2+it,t.H3-K]},{outName:`subpax_${B}_rodH1`,face:`${B}_faceRodHollow`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,D],translate:[t.L4/2-Y,t.L3/2-it,t.H3-K]},{outName:`subpax_${B}_rodH2`,face:`${B}_faceRodHollow`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI-D],translate:[-t.L4/2+Y,t.L3/2-it,t.H3-K]},{outName:`subpax_${B}_rodH3`,face:`${B}_faceRodHollow`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI+D],translate:[-t.L4/2+Y,-t.L3/2+it,t.H3-K]},{outName:`subpax_${B}_rodH4`,face:`${B}_faceRodHollow`,extrudeMethod:U.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,-D],translate:[t.L4/2-Y,-t.L3/2+it,t.H3-K]},{outName:`subpax_${B}_cut1`,face:`${B}_faceCutRod`,extrudeMethod:U.eLinearOrtho,length:X,rotate:[0,0,0],translate:[0,0,-X]},{outName:`subpax_${B}_cut2`,face:`${B}_faceCutRod`,extrudeMethod:U.eLinearOrtho,length:X,rotate:[0,0,0],translate:[0,0,t.H1]}],volumes:[{outName:`ipax_${B}_rawRod`,boolMethod:dt.eUnion,inList:[`subpax_${B}_rod1`,`subpax_${B}_rod2`,`subpax_${B}_rod3`,`subpax_${B}_rod4`]},{outName:`ipax_${B}_rodHollow`,boolMethod:dt.eUnion,inList:[`subpax_${B}_rodH1`,`subpax_${B}_rodH2`,`subpax_${B}_rodH3`,`subpax_${B}_rodH4`]},{outName:`ipax_${B}_halfRods`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_rawRod`,`subpax_${B}_cut1`]},{outName:`ipax_${B}_rods`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_halfRods`,`subpax_${B}_cut2`]},{outName:`ipax_${B}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${B}_frame`,`subpax_${B}_plate`,`ipax_${B}_rods`]},{outName:`pax_${B}`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_plus`,`ipax_${B}_rodHollow`]}]},o.sub={},o.logstr+=`trapeze drawn successfully!
106
- `,o.calcErr=!1}catch(f){o.logstr+=f,console.log(f)}return o}var fo={pTitle:"Heliostat trapeze",pDescription:"The support of one solar panel. Made out of aluminium for lightness and cooling",pDef:Le,pGeom:_o},He={partName:"surface",params:[e("LH","mm",1600,10,4e3,1),e("LV","mm",1e3,10,4e3,1),e("LZ","mm",40,0,100,1),e("nx","",9,1,40,1),e("ny","",9,1,40,1),W("main fantasia"),xt("main_direction",["horizontal","vertical"]),Lt("crenel",!1),e("first_row","",9,1,40,1),e("second_row","",9,1,40,1),W("horizontal spacing"),e("EH","mm",10,0,1e3,1),Lt("EH_gradient",!1),e("EH_sup","mm",500,0,1e3,1),e("EH_cycle","",1,0,3,.05),e("EH_start","",0,0,1,.05),xt("EH_shape",["sinusoid","triangle","sawUp","sawDown"]),W("vertical spacing"),e("EV","mm",10,0,1e3,1),Lt("EV_gradient",!1),e("EV_sup","mm",500,0,1e3,1),e("EV_cycle","",1,0,3,.05),e("EV_start","",0,0,1,.05),xt("EV_shape",["sinusoid","triangle","sawUp","sawDown"]),W("solar power"),e("power_efficiency","%",16,0,100,.1),e("solar_power","W/m2",816,100,2e3,1)],paramSvg:{LH:"surface_main.svg",LV:"surface_main.svg",LZ:"surface_lz.svg",nx:"surface_main.svg",ny:"surface_main.svg",main_direction:"surface_crenel.svg",crenel:"surface_crenel.svg",first_row:"surface_extremities.svg",second_row:"surface_extremities.svg",EH:"surface_main.svg",EH_gradient:"surface_space_evolution.svg",EH_sup:"surface_space_evolution.svg",EH_cycle:"surface_space_evolution.svg",EH_start:"surface_space_evolution.svg",EH_shape:"surface_space_shape.svg",EV:"surface_main.svg",EV_gradient:"surface_space_evolution.svg",EV_sup:"surface_space_evolution.svg",EV_cycle:"surface_space_evolution.svg",EV_start:"surface_space_evolution.svg",EV_shape:"surface_space_shape.svg",power_efficiency:"surface_power.svg",solar_power:"surface_power.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function So(s,t,u=""){const o=_t(He.partName+u);let n;const h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
105
+ `;const A=Math.sqrt((E/2)**2+(t.D3/2)**2),R=Math.atan2(t.D3,E);n=function(P,nt,Q){return z(P,nt).addPointRP(Q+Math.PI-R,A).addSeg2Arcs(Q+Math.PI/2,Q).addPointRP(Q+Math.PI+R,A).addSeg2Arcs(Q+Math.PI,Q+Math.PI/2).addPointRP(Q-R,A).addSeg2Arcs(Q+3*Math.PI/2,Q+Math.PI).addPointRP(Q+R,A).addSeg2Arcs(Q,Q-Math.PI/2)},h=function(P,nt,Q){const et=P+A*Math.cos(Q+Math.PI-R),at=nt+A*Math.sin(Q+Math.PI-R);return z(et,at).addSegStrokeRP(Q+Math.PI,S).addSegStrokeRP(Q-Math.PI/2,t.D3).addSegStrokeRP(Q,S).closeSegStroke()};const v=[];if(t.R1>t.L1/4||t.R1>t.L2/4)throw`err614: R1 ${t.R1} too large compare to L1 ${t.L1} or L2 ${t.L2}`;const b=z(t.L2/2,t.L1/2).addSegStrokeA(-t.L2/2,t.L1/2).addCornerRounded(t.R1).addSegStrokeA(-t.L2/2,-t.L1/2).addCornerRounded(t.R1).addSegStrokeA(t.L2/2,-t.L1/2).addCornerRounded(t.R1).closeSegStroke().addCornerRounded(t.R1);if(t.R2>(t.L1-2*t.L5)/4||t.R2>(t.L2-2*t.L5)/4)throw`err627: R2 ${t.R2} too large compare to L1 ${t.L1}, L2 ${t.L2} and L5 ${t.L5}`;const $=z(t.L2/2-t.L5,t.L1/2-t.L5).addSegStrokeA(-t.L2/2+t.L5,t.L1/2-t.L5).addCornerRounded(t.R2).addSegStrokeA(-t.L2/2+t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).addSegStrokeA(t.L2/2-t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).closeSegStroke().addCornerRounded(t.R2);if(t.R3>t.L3/4||t.R3>t.L4/4)throw`err639: R3 ${t.R3} too large compare to L3 ${t.L3} or L4 ${t.L4}`;const O=z(t.L4/2,t.L3/2).addSegStrokeA(-t.L4/2,t.L3/2).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,-t.L3/2).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,-t.L3/2).addCornerRounded(t.R3).closeSegStroke().addCornerRounded(t.R3);v.push(b),v.push($),i.addSecond(O);const I=t.L1/(t.N1+1),k=t.L2/(t.N2+1),m=t.L3/(t.N3+1),G=t.L4/(t.N4+1);if(t.L5<t.D1/2+t.L6)throw`err658: L5 ${t.L5} too small compare to D1 ${t.D1} or L6 ${t.L6}`;if(m<t.D2/2+t.L7)throw`err661: D2 ${t.D2} or L7 ${t.L7} too large compare to L3 ${t.l3}`;if(G<t.D2/2+t.L7)throw`err664: D2 ${t.D2} or L7 ${t.L7} too large compare to L4 ${t.l4}`;const C=[];for(let P=1;P<t.N1+1;P++)C.push(x(t.L2/2-t.L6,-t.L1/2+P*I,t.D1/2)),C.push(x(-t.L2/2+t.L6,-t.L1/2+P*I,t.D1/2));for(let P=1;P<t.N2+1;P++)C.push(x(-t.L2/2+P*k,t.L1/2-t.L6,t.D1/2)),C.push(x(-t.L2/2+P*k,-t.L1/2+t.L6,t.D1/2));const T=[];for(let P=1;P<t.N3+1;P++)T.push(x(t.L4/2-t.L7,-t.L3/2+P*m,t.D2/2)),T.push(x(-t.L4/2+t.L7,-t.L3/2+P*m,t.D2/2));for(let P=1;P<t.N4+1;P++)T.push(x(-t.L4/2+P*G,t.L3/2-t.L7,t.D2/2)),T.push(x(-t.L4/2+P*G,-t.L3/2+t.L7,t.D2/2));C.forEach(P=>{v.push(P)}),T.forEach(P=>{i.addSecond(P)}),i.addMainOI(v);const J=[];J.push(n(t.L2/2-f,t.L1/2-f,D)),J.push(n(t.L4/2-r,t.L3/2-r,D)),J.push(n(-t.L2/2+f,t.L1/2-f,Math.PI-D)),J.push(n(-t.L4/2+r,t.L3/2-r,Math.PI-D)),J.push(n(-t.L2/2+f,-t.L1/2+f,Math.PI+D)),J.push(n(-t.L4/2+r,-t.L3/2+r,Math.PI+D)),J.push(n(t.L2/2-f,-t.L1/2+f,-D)),J.push(n(t.L4/2-r,-t.L3/2+r,-D));const j=[];j.push(h(t.L2/2-f,t.L1/2-f,D)),j.push(h(-t.L2/2+f,t.L1/2-f,Math.PI-D)),j.push(h(-t.L2/2+f,-t.L1/2+f,Math.PI+D)),j.push(h(t.L2/2-f,-t.L1/2+f,-D)),J.forEach(P=>{i.addSecond(P)}),j.forEach(P=>{i.addSecond(P)});const V=[];if(V.push(O),T.forEach(P=>{V.push(P)}),d.addSecond(b),d.addSecond($),C.forEach(P=>{d.addSecond(P)}),J.forEach(P=>{d.addSecond(P)}),j.forEach(P=>{d.addSecond(P)}),d.addMainOI(V),t.D4>=t.D3)throw`err218: D4 ${t.D4} larger than D3 ${t.D3}`;l.addMainO(x(0,0,t.D3/2)),l.addSecond(x(0,0,t.D4/2)),g.addMainO(x(0,0,t.D4/2)),g.addSecond(x(0,0,t.D3/2));const K=t.D3*Math.cos(w),F=K/Math.tan(w),U=r+(E/2+F)*Math.cos(D),st=r+(E/2+F)*Math.sin(D),M=N+2*(E+F+K),X=M+t.L3+t.L4+K,it=z(X,X).addSegStrokeA(-X,X).addSegStrokeA(-X,-X).addSegStrokeA(X,-X).closeSegStroke();a.addMainO(it),o.fig={faceFrame:i,facePlate:d,faceRod:l,faceRodHollow:g,faceCutRod:a};const B=o.partName;o.vol={extrudes:[{outName:`subpax_${B}_frame`,face:`${B}_faceFrame`,extrudeMethod:W.eLinearOrtho,length:t.H2,rotate:[0,0,0],translate:[0,0,t.H1-t.H2]},{outName:`subpax_${B}_plate`,face:`${B}_facePlate`,extrudeMethod:W.eLinearOrtho,length:t.H3,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${B}_rod1`,face:`${B}_faceRod`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,D],translate:[t.L4/2-U,t.L3/2-st,t.H3-K]},{outName:`subpax_${B}_rod2`,face:`${B}_faceRod`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI-D],translate:[-t.L4/2+U,t.L3/2-st,t.H3-K]},{outName:`subpax_${B}_rod3`,face:`${B}_faceRod`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI+D],translate:[-t.L4/2+U,-t.L3/2+st,t.H3-K]},{outName:`subpax_${B}_rod4`,face:`${B}_faceRod`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,-D],translate:[t.L4/2-U,-t.L3/2+st,t.H3-K]},{outName:`subpax_${B}_rodH1`,face:`${B}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,D],translate:[t.L4/2-U,t.L3/2-st,t.H3-K]},{outName:`subpax_${B}_rodH2`,face:`${B}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI-D],translate:[-t.L4/2+U,t.L3/2-st,t.H3-K]},{outName:`subpax_${B}_rodH3`,face:`${B}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,Math.PI+D],translate:[-t.L4/2+U,-t.L3/2+st,t.H3-K]},{outName:`subpax_${B}_rodH4`,face:`${B}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:M,rotate:[0,Math.PI/2-w,-D],translate:[t.L4/2-U,-t.L3/2+st,t.H3-K]},{outName:`subpax_${B}_cut1`,face:`${B}_faceCutRod`,extrudeMethod:W.eLinearOrtho,length:X,rotate:[0,0,0],translate:[0,0,-X]},{outName:`subpax_${B}_cut2`,face:`${B}_faceCutRod`,extrudeMethod:W.eLinearOrtho,length:X,rotate:[0,0,0],translate:[0,0,t.H1]}],volumes:[{outName:`ipax_${B}_rawRod`,boolMethod:dt.eUnion,inList:[`subpax_${B}_rod1`,`subpax_${B}_rod2`,`subpax_${B}_rod3`,`subpax_${B}_rod4`]},{outName:`ipax_${B}_rodHollow`,boolMethod:dt.eUnion,inList:[`subpax_${B}_rodH1`,`subpax_${B}_rodH2`,`subpax_${B}_rodH3`,`subpax_${B}_rodH4`]},{outName:`ipax_${B}_halfRods`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_rawRod`,`subpax_${B}_cut1`]},{outName:`ipax_${B}_rods`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_halfRods`,`subpax_${B}_cut2`]},{outName:`ipax_${B}_plus`,boolMethod:dt.eUnion,inList:[`subpax_${B}_frame`,`subpax_${B}_plate`,`ipax_${B}_rods`]},{outName:`pax_${B}`,boolMethod:dt.eSubstraction,inList:[`ipax_${B}_plus`,`ipax_${B}_rodHollow`]}]},o.sub={},o.logstr+=`trapeze drawn successfully!
106
+ `,o.calcErr=!1}catch(f){o.logstr+=f,console.log(f)}return o}var fo={pTitle:"Heliostat trapeze",pDescription:"The support of one solar panel. Made out of aluminium for lightness and cooling",pDef:Le,pGeom:_o},He={partName:"surface",params:[e("LH","mm",1600,10,4e3,1),e("LV","mm",1e3,10,4e3,1),e("LZ","mm",40,0,100,1),e("nx","",9,1,40,1),e("ny","",9,1,40,1),q("main fantasia"),xt("main_direction",["horizontal","vertical"]),Lt("crenel",!1),e("first_row","",9,1,40,1),e("second_row","",9,1,40,1),q("horizontal spacing"),e("EH","mm",10,0,1e3,1),Lt("EH_gradient",!1),e("EH_sup","mm",500,0,1e3,1),e("EH_cycle","",1,0,3,.05),e("EH_start","",0,0,1,.05),xt("EH_shape",["sinusoid","triangle","sawUp","sawDown"]),q("vertical spacing"),e("EV","mm",10,0,1e3,1),Lt("EV_gradient",!1),e("EV_sup","mm",500,0,1e3,1),e("EV_cycle","",1,0,3,.05),e("EV_start","",0,0,1,.05),xt("EV_shape",["sinusoid","triangle","sawUp","sawDown"]),q("solar power"),e("power_efficiency","%",16,0,100,.1),e("solar_power","W/m2",816,100,2e3,1)],paramSvg:{LH:"surface_main.svg",LV:"surface_main.svg",LZ:"surface_lz.svg",nx:"surface_main.svg",ny:"surface_main.svg",main_direction:"surface_crenel.svg",crenel:"surface_crenel.svg",first_row:"surface_extremities.svg",second_row:"surface_extremities.svg",EH:"surface_main.svg",EH_gradient:"surface_space_evolution.svg",EH_sup:"surface_space_evolution.svg",EH_cycle:"surface_space_evolution.svg",EH_start:"surface_space_evolution.svg",EH_shape:"surface_space_shape.svg",EV:"surface_main.svg",EV_gradient:"surface_space_evolution.svg",EV_sup:"surface_space_evolution.svg",EV_cycle:"surface_space_evolution.svg",EV_start:"surface_space_evolution.svg",EV_shape:"surface_space_shape.svg",power_efficiency:"surface_power.svg",solar_power:"surface_power.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function So(s,t,u=""){const o=_t(He.partName+u);let n;const h=y(),i=y();o.logstr+=`${o.partName} simTime: ${s}
107
107
  `;try{const d=t.LH*t.LV/1e6,l=t.solar_power*d*t.power_efficiency/100;o.logstr+=`panel surface: ${L(d)} m2
108
108
  `,o.logstr+=`panel power: ${L(l)} W
109
109
  `;const g=t.nx*t.ny;o.logstr+=`max panel number: ${g}
110
110
  `,o.logstr+=`max panel surface: ${L(g*d)} m2
111
111
  `,o.logstr+=`max panel power: ${L(g*l)} W
112
- `;const a=t.main_direction===1?t.ny:t.nx,f=t.main_direction===1?t.nx:t.ny,r=t.main_direction===1?t.EV:t.EH,c=t.main_direction===1?t.EV_gradient:t.EH_gradient,_=t.main_direction===1?t.EV_sup:t.EH_sup,S=t.main_direction===1?t.EV_cycle:t.EH_cycle,H=t.main_direction===1?t.EV_start:t.EH_start,N=t.main_direction===1?t.EV_shape:t.EH_shape,w=t.main_direction===0?t.EV:t.EH,D=t.main_direction===0?t.EV_gradient:t.EH_gradient,E=t.main_direction===0?t.EV_sup:t.EH_sup,A=t.main_direction===0?t.EV_cycle:t.EH_cycle,R=t.main_direction===0?t.EV_start:t.EH_start,v=t.main_direction===0?t.EV_shape:t.EH_shape,b=Math.max(f,t.first_row,t.second_row),$=[];for(let M=0;M<a;M++){const X=(M+1)%2,st=t.crenel?f-X:f;$.push(st)}$[0]=t.first_row,$[$.length-1]=t.first_row,a>2&&($[1]=t.second_row,$[$.length-2]=t.second_row);let O=0;$.forEach(M=>{O+=M}),o.logstr+=`actual panel number: ${O} (${L(100*O/g)} %)
112
+ `;const a=t.main_direction===1?t.ny:t.nx,f=t.main_direction===1?t.nx:t.ny,r=t.main_direction===1?t.EV:t.EH,c=t.main_direction===1?t.EV_gradient:t.EH_gradient,_=t.main_direction===1?t.EV_sup:t.EH_sup,S=t.main_direction===1?t.EV_cycle:t.EH_cycle,H=t.main_direction===1?t.EV_start:t.EH_start,N=t.main_direction===1?t.EV_shape:t.EH_shape,w=t.main_direction===0?t.EV:t.EH,D=t.main_direction===0?t.EV_gradient:t.EH_gradient,E=t.main_direction===0?t.EV_sup:t.EH_sup,A=t.main_direction===0?t.EV_cycle:t.EH_cycle,R=t.main_direction===0?t.EV_start:t.EH_start,v=t.main_direction===0?t.EV_shape:t.EH_shape,b=Math.max(f,t.first_row,t.second_row),$=[];for(let M=0;M<a;M++){const X=(M+1)%2,it=t.crenel?f-X:f;$.push(it)}$[0]=t.first_row,$[$.length-1]=t.first_row,a>2&&($[1]=t.second_row,$[$.length-2]=t.second_row);let O=0;$.forEach(M=>{O+=M}),o.logstr+=`actual panel number: ${O} (${L(100*O/g)} %)
113
113
  `,o.logstr+=`actual panel surface: ${L(O*d)} m2
114
114
  `,o.logstr+=`actual panel power: ${L(O*l)} W
115
- `;const I=[];for(let M=0;M<a-1;M++){let X=r;if(c===1){const st=a>2?a-2:1,B=(H+M*S/st)%1;switch(N){case 0:X+=_*(1-Math.cos(B*2*Math.PI))/2;break;case 1:X+=_*(1-2*Math.abs(B-.5));break;case 2:X+=_*B;break;case 3:X+=_*(1-B);break;default:X+=_}}I.push(X)}let k=0;const m=[];m.push(0),I.forEach(M=>{k+=M,m.push(k)});const G=[];for(let M=0;M<b-1;M++){let X=w;if(D===1){const st=b>2?b-2:1,B=(R+M*A/st)%1;switch(v){case 0:X+=E*(1-Math.cos(B*2*Math.PI))/2;break;case 1:X+=E*(1-2*Math.abs(B-.5));break;case 2:X+=E*B;break;case 3:X+=E*(1-B);break;default:X+=E}}G.push(X)}let C=0;const T=[];T.push(0),G.forEach(M=>{C+=M,T.push(C)});let J=0,j=0;t.main_direction===0?(J=a*t.LH+k,j=b*t.LV+C):(J=b*t.LH+C,j=a*t.LV+k);const V=J*j/10**6;o.logstr+=`global horizontal width: ${L(J/1e3)} m
115
+ `;const I=[];for(let M=0;M<a-1;M++){let X=r;if(c===1){const it=a>2?a-2:1,B=(H+M*S/it)%1;switch(N){case 0:X+=_*(1-Math.cos(B*2*Math.PI))/2;break;case 1:X+=_*(1-2*Math.abs(B-.5));break;case 2:X+=_*B;break;case 3:X+=_*(1-B);break;default:X+=_}}I.push(X)}let k=0;const m=[];m.push(0),I.forEach(M=>{k+=M,m.push(k)});const G=[];for(let M=0;M<b-1;M++){let X=w;if(D===1){const it=b>2?b-2:1,B=(R+M*A/it)%1;switch(v){case 0:X+=E*(1-Math.cos(B*2*Math.PI))/2;break;case 1:X+=E*(1-2*Math.abs(B-.5));break;case 2:X+=E*B;break;case 3:X+=E*(1-B);break;default:X+=E}}G.push(X)}let C=0;const T=[];T.push(0),G.forEach(M=>{C+=M,T.push(C)});let J=0,j=0;t.main_direction===0?(J=a*t.LH+k,j=b*t.LV+C):(J=b*t.LH+C,j=a*t.LV+k);const V=J*j/10**6;o.logstr+=`global horizontal width: ${L(J/1e3)} m
116
116
  `,o.logstr+=`global vertical height: ${L(j/1e3)} m
117
117
  `,o.logstr+=`global area: ${L(V)} m2
118
118
  `,o.logstr+=`area efficiency: ${L(100*O*d/V)} %
119
- `;const K=-J/2,F=-j/2;n=function(M,X){return z(M,X).addSegStrokeA(M+t.LH,X).addSegStrokeA(M+t.LH,X+t.LV).addSegStrokeA(M,X+t.LV).closeSegStroke()};const Y=[];$.forEach((M,X)=>{const st=(b-M)%2,B=Math.floor((b-M)/2);for(let P=0;P<M;P++){let nt=0,Q=0;t.main_direction===0?(nt=K+X*t.LH+m[X],Q=F+(B+P)*t.LV+T[B+P],st===1&&(Q+=(t.LV+T[B+P+1]-T[B+P])/2)):(Q=F+X*t.LV+m[X],nt=K+(B+P)*t.LH+T[B+P],st===1&&(nt+=(t.LH+T[B+P+1]-T[B+P])/2)),Y.push([nt,Q])}});for(const M of Y)h.addMainO(n(M[0],M[1]));i.addMainO(n(0,0)),o.fig={faceSurface:h,faceOnePanel:i};const it=o.partName;o.vol={extrudes:Y.map((M,X)=>({outName:`subpax_${it}_panel_${X}`,face:`${it}_faceOnePanel`,extrudeMethod:U.eLinearOrtho,length:t.LZ,rotate:[0,0,0],translate:[M[0],M[1],0]})),volumes:[{outName:`pax_${it}`,boolMethod:dt.eUnion,inList:Y.map((M,X)=>`subpax_${it}_panel_${X}`)}]},o.sub={},o.logstr+=`panel-surface drawn successfully!
119
+ `;const K=-J/2,F=-j/2;n=function(M,X){return z(M,X).addSegStrokeA(M+t.LH,X).addSegStrokeA(M+t.LH,X+t.LV).addSegStrokeA(M,X+t.LV).closeSegStroke()};const U=[];$.forEach((M,X)=>{const it=(b-M)%2,B=Math.floor((b-M)/2);for(let P=0;P<M;P++){let nt=0,Q=0;t.main_direction===0?(nt=K+X*t.LH+m[X],Q=F+(B+P)*t.LV+T[B+P],it===1&&(Q+=(t.LV+T[B+P+1]-T[B+P])/2)):(Q=F+X*t.LV+m[X],nt=K+(B+P)*t.LH+T[B+P],it===1&&(nt+=(t.LH+T[B+P+1]-T[B+P])/2)),U.push([nt,Q])}});for(const M of U)h.addMainO(n(M[0],M[1]));i.addMainO(n(0,0)),o.fig={faceSurface:h,faceOnePanel:i};const st=o.partName;o.vol={extrudes:U.map((M,X)=>({outName:`subpax_${st}_panel_${X}`,face:`${st}_faceOnePanel`,extrudeMethod:W.eLinearOrtho,length:t.LZ,rotate:[0,0,0],translate:[M[0],M[1],0]})),volumes:[{outName:`pax_${st}`,boolMethod:dt.eUnion,inList:U.map((M,X)=>`subpax_${st}_panel_${X}`)}]},o.sub={},o.logstr+=`panel-surface drawn successfully!
120
120
  `,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var Lo={pTitle:"Heliostat panel-surface",pDescription:"The surface collecting the solar power",pDef:He,pGeom:So};const De={"gear/gear_wheel_wheel":Ut,"gear/simplified_gear_wheel":me,"heliostat/heliostat":Xe,"heliostat/heliostat_2":Ke,"heliostat/base":to,"heliostat/pole_static":Nt,"heliostat/vaxis":oo,"heliostat/ring":io,"heliostat/vaxis_holder":Mt,"heliostat/ring_guidance":lo,"heliostat/vaxis_guidance":ro,"heliostat/rake":It,"heliostat/rake_stopper":Xt,"heliostat/haxis_guidance":ho,"heliostat/spider":qt,"heliostat/swing":Vt,"heliostat/rod":uo,"heliostat/trapeze":fo,"heliostat/surface":Lo};function Ho(s){const t=/^.*\//g;return s.replace(t,"")}function Do(s){const t={};for(const u of Object.keys(s)){const o=Ho(u);t[o]=`/${u}`}return t}function Po(s){const t=[];for(const u of Object.keys(s))t.push(u);return t}const $o=Do(De),wo=Po(De);export{De as a,$o as b,wo as d};