designix-uis 0.5.12 → 0.5.14
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.
- package/dist/designix-uis.js +1 -1
- package/dist/public/_app/immutable/chunks/{entry.GPxMRXYu.js → entry.1GK_9P7G.js} +1 -1
- package/dist/public/_app/immutable/chunks/{index.agfDoWe-.js → index.BLMsg5xO.js} +3 -3
- package/dist/public/_app/immutable/chunks/makeList.DKwXmwFM.js +120 -0
- package/dist/public/_app/immutable/chunks/paths.CqCwbvxs.js +1 -0
- package/dist/public/_app/immutable/chunks/{stores.CSSmL7t3.js → stores.DdOwhdnn.js} +1 -1
- package/dist/public/_app/immutable/entry/{app.DG3C1Wgp.js → app.C7DIE9mT.js} +2 -2
- package/dist/public/_app/immutable/entry/start.46Gu95PN.js +1 -0
- package/dist/public/_app/immutable/nodes/{0.8dKQomXz.js → 0.yoA7bHZu.js} +1 -1
- package/dist/public/_app/immutable/nodes/{1.BA0uT5RZ.js → 1.BKXWK5Bn.js} +1 -1
- package/dist/public/_app/immutable/nodes/{2.BrReFI2Z.js → 2.DwSyL7gr.js} +1 -1
- package/dist/public/_app/immutable/nodes/{3.CFHE2Ksk.js → 3.BXbzTzc-.js} +1 -1
- package/dist/public/_app/version.json +1 -1
- package/dist/public/gear/gear_wheel_wheel.html +13 -13
- package/dist/public/gear/simplified_gear_wheel.html +13 -13
- package/dist/public/heliostat/base.html +13 -13
- package/dist/public/heliostat/haxis_guidance.html +13 -13
- package/dist/public/heliostat/heliostat.html +24 -16
- package/dist/public/heliostat/heliostat_2.html +24 -16
- package/dist/public/heliostat/pole_static.html +13 -13
- package/dist/public/heliostat/rake.html +17 -13
- package/dist/public/heliostat/rake_stopper.html +17 -13
- package/dist/public/heliostat/ring.html +13 -13
- package/dist/public/heliostat/ring_guidance.html +13 -13
- package/dist/public/heliostat/rod.html +13 -13
- package/dist/public/heliostat/spider.html +13 -13
- package/dist/public/heliostat/surface.html +13 -13
- package/dist/public/heliostat/swing.html +17 -13
- package/dist/public/heliostat/trapeze.html +13 -13
- package/dist/public/heliostat/vaxis.html +13 -13
- package/dist/public/heliostat/vaxis_guidance.html +13 -13
- package/dist/public/heliostat/vaxis_holder.html +13 -13
- package/dist/public/index.html +11 -11
- package/package.json +1 -1
- package/dist/public/_app/immutable/chunks/makeList.BbKxrdUN.js +0 -112
- package/dist/public/_app/immutable/chunks/paths.BYdbYZGb.js +0 -1
- package/dist/public/_app/immutable/entry/start.ARFNsEBR.js +0 -1
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
var Le=Object.defineProperty;var He=(s,t,u)=>t in s?Le(s,t,{enumerable:!0,configurable:!0,writable:!0,value:u}):s[t]=u;var J=(s,t,u)=>(He(s,typeof t!="symbol"?t+"":t,u),u);import{p as e,a as q,b as ft,c as Dt,i as ht,d as wt,f as H,g as p,E as W,h as it,j as St,k as Lt,l as Ht,m as $,n as lt,t as Ft,r as ct,o as De,q as Pe,s as F,u as vt,v as Xt,w as B,x as at,y as Nt,z as Vt,A as Ot,S as Mt,B as xe}from"./index.agfDoWe-.js";var ve=class{constructor(s,t,u,o,n){J(this,"base_center_x");J(this,"base_center_y");J(this,"base_radius");J(this,"initial_angle");J(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),a=0;for(;Math.abs(n-s)>1e-4;)n<s?u+=o:u-=o,n=this.wFromU(u),o=o/2,a+=1;return console.log(`dbg072: uFromWslow itcnt ${a}`),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,a=this.base_center_x+Math.cos(n)*this.base_radius,i=this.base_center_y+Math.sin(n)*this.base_radius,c=n-this.angleSign()*Math.PI/2,d=u*this.base_radius,r=a+Math.cos(c)*d,h=i+Math.sin(c)*d,g=this.lFromU(u)*o,l=u,f=Math.cos(l)*g,S=Math.sin(l)*g;return[r,h,f,S]}};function $t(s,t,u,o,n){return new ve(s,t,u,o,n)}var $e=class{constructor(){J(this,"mod",1);J(this,"TN",23);J(this,"as",1);J(this,"cx",0);J(this,"cy",0);J(this,"brr",50);J(this,"blr",50);J(this,"ar",54);J(this,"pr",53);J(this,"dr",52);J(this,"br",51);J(this,"bRound",1);J(this,"adt",.5);J(this,"initAngle",0);J(this,"axisAngle",0);J(this,"involArcPairs",1);J(this,"skinThickness",0);J(this,"involuteR",$t(0,0,50,0,!0));J(this,"involuteL",$t(0,0,50,0,!1));J(this,"rud",0);J(this,"rup",0);J(this,"rua",0);J(this,"rwd",0);J(this,"rwp",0);J(this,"rwa",0);J(this,"lud",0);J(this,"lup",0);J(this,"lua",0);J(this,"lwd",0);J(this,"lwp",0);J(this,"lwa",0);J(this,"msg");J(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"),[$(this.cx,this.cy,this.ar,"Azure"),$(this.cx,this.cy,this.pr,"Azure"),$(this.cx,this.cy,this.dr,"Azure"),$(this.cx,this.cy,this.br,"Azure"),$(this.cx,this.cy,this.brr,"CornFlowerBlue"),$(this.cx,this.cy,this.blr,"Crimson")]}calcInvoluteAngles(){this.checkInitStep(4,"calcInvoluteAngles"),this.involuteR=$t(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=$t(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 ${H(o)}
|
|
2
|
-
`;const n=this.as*(1-this.adt),a=this.rwp-this.rwd,i=Math.abs(this.lwp-this.lwd),c=n-a-i;if(c<2*Math.atan2(this.bRound,this.br))throw`err555: No remaining Dedendum reserve ${H(c)} compare to bRound ${H(this.bRound)}
|
|
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,a=$t(this.cx,this.cy,this.brr,n-this.rwp,!0),[i,c]=a.ptc(this.rud+0*u),d=p(i,c,"Gold");for(let _=0;_<s;_++){const[g,l]=a.ptc(this.rud+(_+1)*u);d.addSegStrokeA(g,l)}const r=n+this.as*this.adt,h=$t(this.cx,this.cy,this.blr,r-this.lwp,!1);for(let _=0;_<s+1;_++){const[g,l]=h.ptc(this.lud+(s-_)*o);d.addSegStrokeA(g,l)}return d.closeSegStroke(),d}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 ${H(this.bRound)} too large for erdr ${H(u)} and br ${H(this.br)}`;if(this.bRound>o-this.br)throw`err408: getProfile bRound ${H(this.bRound)} too large for eldr ${H(o)} and br ${H(this.br)}`;const n=(this.rua-this.rud)/this.involArcPairs,a=(this.lua-this.lud)/this.involArcPairs,i=lt(this.cx,this.cy),c=i.translatePolar(this.initAngle+s,this.br),d=p(c.cx,c.cy);for(let r=0;r<this.TN;r++){const h=this.initAngle+r*this.as,_=i.translatePolar(h+s,this.br);d.addSegStrokeA(_.cx,_.cy).addCornerRounded(this.bRound);const g=$t(this.cx,this.cy,this.brr,h-this.rwp,!0),[l,f]=g.ptc(this.rud),S=g.ptcta(this.rud),P=lt(l,f).translatePolar(S-Math.PI/2,this.skinThickness);d.addSegStrokeA(P.cx,P.cy);for(let b=0;b<this.involArcPairs;b++){const T=this.rud+b*n,[E,y]=g.ptc(T+n),Y=g.ptcta(T),X=g.ptcta(T+n)+Math.PI,k=lt(E,y).translatePolar(Y-Math.PI/2,this.skinThickness);d.addPointA(k.cx,k.cy).addSeg2Arcs(Y,X)}const V=h+this.as*this.adt,v=$t(this.cx,this.cy,this.blr,V-this.lwp,!1),x=this.lud+this.involArcPairs*a,[R,M]=v.ptc(x),D=v.ptcta(x)+Math.PI,L=lt(R,M).translatePolar(D-Math.PI/2,this.skinThickness);d.addSegStrokeA(L.cx,L.cy);for(let b=0;b<this.involArcPairs;b++){const T=this.lud+(this.involArcPairs-b)*a,[E,y]=v.ptc(T-a),Y=v.ptcta(T)+Math.PI,X=v.ptcta(T-a),k=lt(E,y).translatePolar(Y-Math.PI/2,this.skinThickness);d.addPointA(k.cx,k.cy).addSeg2Arcs(Y,X)}const w=i.translatePolar(V+t,this.br);d.addSegStrokeA(w.cx,w.cy).addCornerRounded(this.bRound)}return d.closeSegStroke(),d}getMsg(){return this.msg}};function jt(){return new $e}function we(s,t,u,o){s.checkInitStep(1,"helper.gw2center-1"),t.checkInitStep(1,"helper.gw2center-2");const n=s.pr+t.pr+o,a=s.cx+n*Math.cos(u),i=s.cy+n*Math.sin(u);return[a,i,n]}function be(s,t,u,o,n,a,i,c,d){s.checkInitStep(3,"helper.baseCircles-1"),t.checkInitStep(3,"helper.baseCircles-2");let r=u,h=n,_=o,g=a;const l=c,f=d;return l===0&&(t.TN>s.TN?(r=s.dr,h=r*t.TN/s.TN):(h=t.dr,r=h*s.TN/t.TN)),f===0&&(t.TN>s.TN?(_=s.dr,g=_*t.TN/s.TN):(g=t.dr,_=g*s.TN/t.TN)),i===1&&(_=r,g=h),[r,_,h,g]}var Me=class{constructor(s,t,u,o,n,a){J(this,"gw1");J(this,"gw2");J(this,"initAngle1");J(this,"angleCenterCenter");J(this,"interAxis");J(this,"rightLeftCenter2");J(this,"msg");J(this,"apr");J(this,"apl");J(this,"lBDr",0);J(this,"lBDl",0);J(this,"laStartRr1",0);J(this,"laStartRr2",0);J(this,"laStartRl1",0);J(this,"laStartRl2",0);J(this,"aFODr1",0);J(this,"aFODr2",0);J(this,"aFODl1",0);J(this,"aFODl2",0);J(this,"lasr1",0);J(this,"lasr2",0);J(this,"lasl1",0);J(this,"lasl2",0);J(this,"firstToothUr1",0);J(this,"firstToothUl1",0);J(this,"ftdr1",0);J(this,"ftdl1",0);this.gw1=s,this.gw2=t,this.initAngle1=u,this.angleCenterCenter=o,this.interAxis=n,this.rightLeftCenter2=a,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 ${H(this.interAxis)} is too large compare to gw1.ar ${H(this.gw1.ar)} and gw2.ar ${H(this.gw2.ar)}
|
|
4
|
-
`),at(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} = ${H(this.gw1.TN/this.gw2.TN)} and brr1/brr2 = ${H(this.gw1.brr)}/${H(this.gw2.brr)} = ${H(this.gw1.brr/this.gw2.brr)}
|
|
5
|
-
`),at(this.gw1.blr*this.gw2.TN-this.gw2.blr*this.gw1.TN)!==0&&(this.msg+=`warn408: left ratios differ N1/N2 = ${this.gw1.TN} / ${this.gw2.TN} = ${H(this.gw1.TN/this.gw2.TN)} and blr1/blr2 = ${H(this.gw1.blr)}/${H(this.gw2.blr)} = ${H(this.gw1.blr/this.gw2.blr)}
|
|
6
|
-
`)}check2(){this.gw1.checkInitStep(5,"ActionLine.check2-1"),this.gw2.checkInitStep(5,"ActionLine.check2-2"),at(this.gw1.adt+this.gw2.adt-1)>0&&(this.msg+=`warn281: addendum thickness too large: adt1 ${H(this.gw1.adt)} adt2 ${H(this.gw2.adt)}
|
|
7
|
-
`);const s=this.gw1.ar-this.gw1.pr,t=this.gw1.pr-this.gw1.dr,u=this.gw2.ar-this.gw2.pr,o=this.gw2.pr-this.gw2.dr;at(o-s)<0&&(this.msg+=`warn282: addendum-1 ${H(s)} larger than dedendum-2 ${H(o)}
|
|
8
|
-
`),at(t-u)<0&&(this.msg+=`warn283: addendum-2 ${H(u)} larger than dedendum-1 ${H(t)}
|
|
9
|
-
`)}calcActionLine(){this.gw1.checkInitStep(4,"ActionLine.calcActionLine-1"),this.gw2.checkInitStep(4,"ActionLine.calcActionLine-2"),this.gw1.calcInvoluteAngles(),this.gw2.calcInvoluteAngles();const s=this.interAxis*this.gw1.brr/(this.gw1.brr+this.gw2.brr),t=this.interAxis*this.gw1.blr/(this.gw1.blr+this.gw2.blr),u=this.interAxis-s,o=this.interAxis-t;this.apr=Math.acos((this.gw1.brr+this.gw2.brr)/this.interAxis),this.apl=Math.acos((this.gw1.blr+this.gw2.blr)/this.interAxis),this.msg+=`Pressure angular: right: ${H(ct(this.apr))} left: ${H(ct(this.apl))} degree
|
|
10
|
-
`,this.lBDr=this.interAxis*Math.sin(this.apr),this.lBDl=this.interAxis*Math.sin(this.apl),this.msg+=`Line of Action Maximum length: right: ${H(this.lBDr)} left: ${H(this.lBDl)} mm
|
|
11
|
-
`;const n=Math.PI/2+this.apr,a=Nt(this.gw1.ar,s,n);this.aFODr1=Math.PI-n-a;const i=this.gw1.rua-this.apr-this.gw1.rwa;if(at(this.aFODr1-i)!==0)throw`dbg378: aFODr1 ${this.aFODr1} and aFODr1Alt ${i} differ`;const c=Vt(s,this.gw1.ar,this.aFODr1),d=n,r=Nt(this.gw2.ar,u,d);this.aFODr2=Math.PI-d-r;const h=this.gw2.rua-this.apr-this.gw2.rwa;if(at(this.aFODr2-h)!==0)throw`dbg379: aFODr2 ${this.aFODr2} and aFODr2Alt ${h} differ`;const _=Vt(u,this.gw2.ar,this.aFODr2),g=c+_,l=g/this.gw1.brr,f=g/this.gw2.brr,S=this.gw1.rua-l,P=this.gw2.rua-f;this.laStartRr1=this.gw1.involuteR.lFromU(S),this.laStartRr2=this.gw2.involuteR.lFromU(P);const V=Math.PI/2+this.apl,v=Nt(this.gw1.ar,t,V);this.aFODl1=Math.PI-V-v;const x=this.gw1.lua-this.apl+this.gw1.lwa;if(at(this.aFODl1-x)!==0)throw`dbg388: aFODl1 ${this.aFODl1} and aFODl1Alt ${x} differ`;const R=Vt(t,this.gw1.ar,this.aFODl1),M=n,D=Nt(this.gw2.ar,o,M);this.aFODl2=Math.PI-M-D;const L=this.gw2.lua-this.apl+this.gw2.lwa;if(at(this.aFODl2-L)!==0)throw`dbg389: aFODl2 ${this.aFODl2} and aFODl2Alt ${L} differ`;const w=Vt(o,this.gw2.ar,this.aFODl2),b=R+w,T=b/this.gw1.blr,E=b/this.gw2.blr,y=this.gw1.lua-T,Y=this.gw2.lua-E;this.laStartRl1=this.gw1.involuteL.lFromU(y),this.laStartRl2=this.gw2.involuteL.lFromU(Y),this.msg+=`Line of Action Effective length: right: ${H(g)} left: ${H(b)} mm
|
|
12
|
-
`,this.msg+=`Line of Action Effective rotation angle: right-1: ${H(ct(l))} right-2: ${H(ct(f))} left-1: ${H(ct(T))} left-2: ${H(ct(E))} degree
|
|
13
|
-
`,this.msg+=`Line of Action Effective height: right-1: ${H(this.gw1.ar-this.laStartRr1)} right-2: ${H(this.gw2.ar-this.laStartRr2)} left-1: ${H(this.gw1.ar-this.laStartRl1)} left-2: ${H(this.gw2.ar-this.laStartRl2)} mm
|
|
14
|
-
`,this.lasr1=2*Math.PI/this.gw1.TN*this.gw1.brr,this.lasr2=2*Math.PI/this.gw2.TN*this.gw2.brr,this.msg+=`Line of Action right: step length: 1: ${H(this.lasr1)} 2: ${H(this.lasr2)} mm
|
|
15
|
-
`,this.msg+=`Line of Action right: nb of contact point: 1: ${H(g/this.lasr1)} 2: ${H(g/this.lasr2)}
|
|
16
|
-
`,this.lasl1=2*Math.PI/this.gw1.TN*this.gw1.blr,this.lasl2=2*Math.PI/this.gw2.TN*this.gw2.blr,this.msg+=`Line of Action left: step length: 1: ${H(this.lasl1)} 2: ${H(this.lasl2)} mm
|
|
17
|
-
`,this.msg+=`Line of Action left: nb of contact point: 1: ${H(b/this.lasl1)} 2: ${H(b/this.lasl2)}
|
|
18
|
-
`}calcContactPoint1(){for(this.gw1.checkInitStep(5,"ActionLine.calcContactPoint1"),this.firstToothUr1=Ot(this.apr-(this.initAngle1-this.angleCenterCenter)+this.gw1.rwp);at(this.firstToothUr1-this.gw1.as)>=0;)this.firstToothUr1=at(this.firstToothUr1-this.gw1.as);for(this.firstToothUl1=Ot(this.apl+(this.initAngle1-this.angleCenterCenter)+this.gw1.as*this.gw1.adt-this.gw1.lwp);at(this.firstToothUl1-this.gw1.as)>=0;)this.firstToothUl1=at(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,a,i,c,d,r){const _=Math.floor(t/(2*u)),g=(o+_*u)/n,l=s?1:-1,[f,S,P,V]=a.laptc(i,l*c,g,.4);this.msg+=`speed ${d}: vx ${H(P)} vy: ${H(V)} m/s
|
|
19
|
-
`;const v=lt(f,S),x=i+l*c,R=p(f,S,r),M=v.translatePolar(x,-V);R.addSegStrokeA(M.cx,M.cy);const D=M.translatePolar(x-l*Math.PI/2,P);return R.addSegStrokeA(D.cx,D.cy),R.closeSegStroke(),R}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($(this.gw1.cx,this.gw1.cy,this.laStartRr1,"SkyBlue")),s.push($(this.gw1.cx,this.gw1.cy,this.laStartRl1,"SlateBlue")),s.push($(this.gw2.cx,this.gw2.cy,this.laStartRr2,"SkyBlue")),s.push($(this.gw2.cx,this.gw2.cy,this.laStartRl2,"SlateBlue"));const t=lt(this.gw1.cx,this.gw1.cy),u=lt(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),a=p(o.cx,o.cy,"YellowGreen");a.addSegStrokeA(n.cx,n.cy),a.closeSegStroke(),s.push(a);const i=t.translatePolar(this.angleCenterCenter-this.aFODr1,this.gw1.ar),c=u.translatePolar(this.angleCenterCenter+Math.PI-this.aFODr2,this.gw2.ar),d=p(i.cx,i.cy,"Yellow");d.addSegStrokeA(c.cx,c.cy),d.closeSegStroke(),s.push(d);const r=t.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr),h=u.translatePolar(this.angleCenterCenter+Math.PI-this.apl,this.gw2.blr),_=p(r.cx,r.cy,"YellowGreen");_.addSegStrokeA(h.cx,h.cy),_.closeSegStroke(),s.push(_);const g=t.translatePolar(this.angleCenterCenter+this.aFODl1,this.gw1.ar),l=u.translatePolar(this.angleCenterCenter+Math.PI+this.aFODl2,this.gw2.ar),f=p(g.cx,g.cy,"Yellow");return f.addSegStrokeA(l.cx,l.cy),f.closeSegStroke(),s.push(f),s.push(...this.getContactSpeed()),s}getContactPoint(){const s=[],t=lt(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(lt(u.cx,u.cy,Mt.eBigSquare)),s.push(lt(o.cx,o.cy,Mt.eBigSquare));const n=this.angleCenterCenter+this.apr-Math.PI/2,a=this.angleCenterCenter-this.apl+Math.PI/2,i=u.translatePolar(n,this.ftdr1),c=o.translatePolar(a,this.ftdl1);s.push(lt(i.cx,i.cy,Mt.eBigSquare)),s.push(lt(c.cx,c.cy,Mt.eBigSquare));let d=this.ftdr1;for(;d+this.lasr1<this.lBDr;){d+=this.lasr1;const h=u.translatePolar(n,d);s.push(lt(h.cx,h.cy,Mt.eBigSquare))}let r=this.ftdl1;for(;r+this.lasl1<this.lBDl;){r+=this.lasl1;const h=o.translatePolar(a,r);s.push(lt(h.cx,h.cy,Mt.eBigSquare))}return s}getMsg(){return this.msg}getInitAngle2(){let s=this.lBDr-this.ftdr1;for(;at(s-this.lasr2)>=0;)s=at(s-this.lasr2);let t=this.lBDl-this.ftdl1;for(;at(t-this.lasl2)>=0;)t=at(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 c=2*Math.PI+Ot(i);for(;at(c-this.gw2.as-n)>=0;)c=at(c-this.gw2.as);const d=c-n,r=d*this.gw2.brr/this.gw1.brr,h=d*this.gw2.brr,_=d*this.gw2.blr;this.msg+=`slack angle: 1: ${H(ct(r))} 2: ${H(ct(d))} degree
|
|
20
|
-
`,this.msg+=`slack on action line: right-2: ${H(h)} left-2: ${H(_)} mm
|
|
21
|
-
`;let g=0;if(this.rightLeftCenter2===0)g=n;else if(this.rightLeftCenter2===1)g=i;else if(this.rightLeftCenter2===2)g=n+d/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return xe(g)}};function ke(s,t,u,o,n,a){return new Me(s,t,u,o,n,a)}function Ee(s,t,u,o,n,a,i,c,d){let r=$(s,t,u);if(o>0){if(n>2*u)throw`err383: axisTorque ribWidth ${H(n)} larger than 2x axisRadius ${H(u)}`;const h=Math.asin(n/(2*u)),_=2*Math.PI/o;if(_-2.5*h<0)throw`err384: axisTorque ribWidth ${H(n)} or ribNb ${o} are too large`;if(i>n/2)throw`err385: axisTorque ribRound1 ${H(i)} too large compare to ribWidth ${H(n)}`;if(i+c>a)throw`err386: axisTorque ribRound12 ${H(i)} ${H(c)} too large compare to ribHeight ${H(n)}`;const g=_-2*h>Math.PI,l=lt(s,t),S=l.translatePolar(d,u+a).translatePolar(d+Math.PI/2,n/2);r=p(S.cx,S.cy);for(let P=0;P<o;P++){const V=d+P*_,v=V+_,x=l.translatePolar(V+h,u),R=l.translatePolar(v-h,u),D=l.translatePolar(V,u+a).translatePolar(V+Math.PI/2,n/2),w=l.translatePolar(v,u+a).translatePolar(v-Math.PI/2,n/2);r.addSegStrokeA(D.cx,D.cy).addCornerRounded(i),r.addSegStrokeA(x.cx,x.cy).addCornerRounded(c),r.addPointA(R.cx,R.cy).addSegArc(u,g,!0).addCornerRounded(c),r.addSegStrokeA(w.cx,w.cy).addCornerRounded(i)}r.closeSegStroke()}return r}function Ae(s,t,u,o,n,a,i,c){const d=2*Math.PI/n,r=Math.asin(a/(2*o)),h=Math.asin(a/(2*u));if(a>2*o)throw`err905: hollowStraight spokeWidth ${H(a)} too large for hollowInt ${H(o)}`;if(u-o<2.1*i)throw`err906: hollowStraight hollowExt ${H(u)}, hollowInt ${H(o)} and spokeRound ${H(i)} do not fit`;if(d-2*h<2.5*Math.asin(i/u))throw`err907: hollowStraight spokeNb ${n}, spokeWidth ${H(a)} or spokeRound ${H(i)} are too large`;const _=a/(2*Math.sin(d/2)),g=d-2*r<2.1*Math.asin(i/o),l=d-2*h>Math.PI,f=lt(s,t),S=[];for(let P=0;P<n;P++){const V=c+P*d,v=V+d,x=V+d/2,R=f.translatePolar(V+h,u),M=f.translatePolar(v-h,u),D=f.translatePolar(v-r,o),L=f.translatePolar(V+r,o),w=f.translatePolar(x,_),b=p(R.cx,R.cy);b.addCornerRounded(i),b.addPointA(M.cx,M.cy).addSegArc(u,l,!0).addCornerRounded(i),g?b.addSegStrokeA(w.cx,w.cy).addCornerRounded(i):(b.addSegStrokeA(D.cx,D.cy).addCornerRounded(i),b.addPointA(L.cx,L.cy).addSegArc(o,l,!1).addCornerRounded(i)),b.closeSegStroke(),S.push(b)}return S}function Zt(s,t,u,o,n,a,i,c,d,r){const h=r?1:-1,_=s/2,g=_+t,l=g+u,f=p(0,-l);return f.addSegStrokeA(h*o,-l).addCornerRounded(i).addSegStrokeA(h*o,-g).addCornerRounded(c).addSegStrokeA(h*n,-g).addSegStrokeA(h*a,-_).addCornerRounded(d).addSegStrokeA(h*a,_).addCornerRounded(d).addSegStrokeA(h*n,g).addSegStrokeA(h*o,g).addCornerRounded(c).addSegStrokeA(h*o,l).addCornerRounded(i).addSegStrokeA(0,l).closeSegStroke(),f}var Kt={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),ft("involSym",!0),Dt("involROpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),Dt("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),Dt("gw2Position",["right","left","center"]),q("Inner"),ft("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),ft("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"),ft("centralAxis",!0),ft("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 Re(s,t,u=""){const o=ht(Kt.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
22
|
-
`;try{const i=jt(),c=jt();i.set1ModuleToothNumber(t.module,t.N1),c.set1ModuleToothNumber(t.module,t.N2),i.set2CenterPosition(t.c1x,t.c1y);const d=wt(t.angleCenterCenter),[r,h,_]=we(i,c,d,t.addInterAxis);c.set2CenterPosition(r,h),i.set3CircleRadius(t.ah1,t.dh1,t.bh1,t.bRound1),c.set3CircleRadius(t.ah2,t.dh2,t.bh2,t.bRound2);const[g,l,f,S]=be(i,c,t.brr1,t.blr1,t.brr2,t.blr2,t.involSym,t.involROpt,t.involROpt);i.set4BaseCircles(g,l),c.set4BaseCircles(f,S),i.set5AddendumThickness(t.at1),c.set5AddendumThickness(t.at2);const P=wt(t.initAngle1)+s*3*i.as/100;i.set6Angles(P,d);const V=ke(i,c,P,d,_,t.gw2Position);V.prepare();for(const L of V.getContours())n.addDynamics(L);n.addPoints(V.getContactPoint()),c.set6Angles(V.getInitAngle2(),d+Math.PI),o.logstr+=V.getMsg(),i.set7InvoluteDetails(t.involArcPairs1,t.skinThickness1),c.set7InvoluteDetails(t.involArcPairs2,t.skinThickness2);for(const L of i.getRefCircles())n.addDynamics(L);for(const L of c.getRefCircles())n.addDynamics(L);n.addDynamics(i.getToothRef()),n.addDynamics(c.getToothRef());const v=i.getProfile();if(o.logstr+=i.getMsg(),o.logstr+=v.check(),n.addMain(v),t.centralAxis===1){const L=Ee(i.cx,i.cy,t.axisRadius,t.ribNb,t.ribWidth,t.ribHeight,t.ribRound1,t.ribRound2,P);o.logstr+=L.check(),n.addMain(L)}if(t.hollow===1){const L=i.br,w=t.axisRadius+t.ribHeight,b=L-t.materialHeightExt,T=w+t.materialHeightInt;if(T>b)throw`err902: hollowMaterialInt ${H(T)} bigger than hollowMaterialExt ${H(b)}`;const E=Ae(i.cx,i.cy,b,T,t.spokeNb,t.spokeWidth,t.spokeRound,P);for(const y of E)o.logstr+=y.check(),n.addMain(y)}const x=c.getProfile();o.logstr+=x.check(),n.addSecond(x);const R=i.ar+t.wheelRadiusExtra;if(t.wheelAxis===1){const L=Zt(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!0),w=Zt(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,R,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!1);a.addMain(L),a.addSecond(w)}else{const L=p(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke(),w=p(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(-R,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke();a.addMain(L),a.addSecond(w)}o.fig={teethProfile:n,axisProfile:a};const M=o.partName,D=t.wheelHeight/2+t.wheelMidExtra+t.wheelAxisLength+10;o.vol={extrudes:[{outName:`subpax_${M}_teethProfile`,face:`${M}_teethProfile`,extrudeMethod:W.eLinearOrtho,length:2*D,rotate:[0,0,0],translate:[0,0,-D]},{outName:`subpax_${M}_axisProfile`,face:`${M}_axisProfile`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${M}`,boolMethod:it.eIntersection,inList:[`subpax_${M}_teethProfile`,`subpax_${M}_axisProfile`]}]},o.logstr+=`gear_wheel_wheel drawn successfully!
|
|
23
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var mt={pTitle:"Gearwheel-gearwheel",pDescription:"Gear-system with two wheels",pDef:Kt,pGeom:Re},Qt={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),ft("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),ft("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),ft("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 Ne(s,t,u=""){const o=ht(Qt.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
24
|
-
`;try{const i=St(mt.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 c=mt.pGeom(s,i.getParamVal(),i.getSuffix());Lt(c),o.logstr+=Ht(c.logstr,i.getPartNameSuffix()),n.mergeFigure(c.fig.teethProfile),a.mergeFigure(c.fig.axisProfile),o.fig={teethProfile:n,axisProfile:a};const d=o.partName;o.vol={inherits:[{outName:`inpax_${d}_gearWW`,subdesign:"pax_gear_wheel_wheel_ref1",subgeom:c,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[],volumes:[{outName:`pax_${d}`,boolMethod:it.eIdentity,inList:[`inpax_${d}_gearWW`]}]};const r={partName:i.getPartName(),dparam:i.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]};o.sub={gear_wheel_wheel_1:r},o.logstr+=`simplified_gear_wheel drawn successfully!
|
|
25
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Ve={pTitle:"Simplified gearwheel",pDescription:"One simplified gearwheel without details on teeth-profile",pDef:Qt,pGeom:Ne};function Ce(s){let t="";const u=s.PHD1/2,o=s.PHD5/2,n=2*Math.asin(s.PHR4/u),a=2*Math.asin(s.PHL2/(2*o)),i=2*Math.PI/s.PHN1-a,c=s.PHL2/2,d=Math.sqrt(o**2-c**2)-u,r=Math.sqrt(c**2+d**2),h=Math.acos(d/r),_=Math.acos(s.PHR4/r),g=Math.PI-h-_;if(o<u+s.PHR4)throw`err211: PHD5 ${s.PHD5} too small compare to PHD1 ${s.PHD1} or PHR4 ${s.PHR4}`;if(i<a)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}`;g>Math.PI/2-n&&(t+=`warn345: PHL2 is quiet small ${H(s.PHL2)} mm
|
|
26
|
-
`),t+=`petal angle: ${H(ct(a))} degree
|
|
27
|
-
`,t+=`hollow angle: ${H(ct(i))} degree
|
|
28
|
-
`;const l=lt(0,0),S=lt(o,0).rotate(l,-a/2),P=lt(u,0),V=lt(u-s.PHR4,0),v=V.rotate(P,g),x=V.rotate(P,-g),R=p(S.cx,S.cy).addCornerRounded(s.PHR6).addSegStrokeA(v.cx,v.cy).addPointA(u-s.PHR4,0).addPointA(x.cx,x.cy).addSegArc2().addSegStrokeAP(a/2,o).addCornerRounded(s.PHR6).addPointAP(a/2+i/2,o).addPointAP(a/2+i,o).addSegArc2(),M=p(S.cx,S.cy),D=[...Array(s.PHN1).keys()].map(L=>L*(a+i));for(const L of D)M.addPartial(R.rotate(0,0,L));return[t,M,D]}function te(s){const t="",u=s.D1/2,o=s.D2/2,n=s.D4/2,a=2*Math.PI/s.N1,i=s.L1/2,c=Math.sqrt(o**2-i**2),d=Math.asin(i/o),r=u-c,h=Math.atan2(i,r),_=Math.sqrt(i**2+r**2),g=Math.acos(n/_),l=h+g,f=(a-2*d)/2;if(f<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=p(c,-i),P=lt(0,0),V=lt(o,0),v=lt(u,0),R=lt(u-n,0).rotate(v,l),M=V.rotate(P,d+f),D=V.rotate(P,a-d),L=p(c,-i).addCornerRounded(s.R5).addSegStrokeA(R.cx,R.cy).addPointA(u+n,0).addPointA(R.cx,-R.cy).addSegArc2().addSegStrokeA(c,i).addCornerRounded(s.R5).addPointA(M.cx,M.cy).addPointA(D.cx,D.cy).addSegArc2();for(let w=0;w<s.N1;w++)S.addPartial(L.rotate(0,0,w*a));return[t,S,a]}function Ct(s,t){let u="";const o=s.SD2/2,n=o+s.SE1,a=2*n;let i=!1,c=-o,d=-n;if(t&&(i=!0,c=n,d=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: ${H(s.SL1+a)} length: ${H(s.SN1*2*(s.SD2+s.SE1))}
|
|
29
|
-
`;const r=p(0,0);for(let h=0;h<s.SN1;h++)r.addSegStrokeR(0,-s.SL1).addPointR(2*c,0).addSegArc(Math.abs(c),!1,i),h<s.SN1-1?r.addSegStrokeR(0,s.SL1).addPointR(2*d,0).addSegArc(Math.abs(d),!1,!i):s.Send===1?r.addSegStrokeR(0,s.SL2):r.addSegStrokeR(0,s.SL2-n).addPointR(2*d,0).addSegArc(Math.abs(d),!1,!i);s.Send===1?r.addSegStrokeR(-s.SE1,0):r.addSegStrokeR(s.SE1,0);for(let h=0;h<s.SN1;h++)h>0?r.addPointR(-2*c,0).addSegArc(Math.abs(c),!1,i).addSegStrokeR(0,-s.SL1):s.Send===1?r.addSegStrokeR(0,-s.SL2):r.addPointR(-2*c,0).addSegArc(Math.abs(c),!1,i).addSegStrokeR(0,-s.SL2+n),r.addPointR(-2*d,0).addSegArc(Math.abs(d),!1,!i).addSegStrokeR(0,s.SL1);return[u,r]}function Ie(s){let t="";const u=s.D6/2,o=2*Math.PI/s.N2,n=s.E2/2,a=2*Math.asin(n/u),i=(o-a)/2,d=(s.N2<3?0:Math.PI/s.N2)+wt(s.SA1),r=Math.PI/2-d,h=-Math.PI/2+d,_=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[g,l]=Ct(s,!1),[,f]=Ct(s,!0);t+=g;const S=lt(0,-u),P=lt(0,0),V=S.rotate(P,a),v=S.translate(0,s.L2),x=v.translate(-_,0),R=x.translate(0,_),M=x.translate(0,_+s.SE1),D=M.rotate(x,r),L=v.translate(0,_+s.SE1).translate(s.SE1,0),w=S.rotate(P,-a),b=v.translate(_,0),T=b.translate(0,_),E=T.rotate(b,h),y=b.translate(0,_+s.SE1),Y=v.translate(0,_+s.SE1).translate(-s.SE1,0),X=p(V.cx,V.cy).addSegStrokeA(L.cx,L.cy).addSegStrokeA(M.cx,M.cy),k=p(M.cx,M.cy).addPointA(D.cx,D.cy).addSegArc(_+s.SE1,!1,!0);k.addPartial(l.rotate(0,0,-d).translate(D.cx,D.cy)),k.addPointA(R.cx,R.cy).addPointA(v.cx,v.cy).addSegArc2().addSegStrokeA(S.cx,S.cy),X.addPartial(k);const O=p(S.cx,S.cy).addSegStrokeA(v.cx,v.cy).addPointA(T.cx,T.cy).addPointA(E.cx,E.cy).addSegArc2();O.addPartial(f.rotate(0,0,d).translate(E.cx,E.cy)),O.addPointA(y.cx,y.cy).addSegArc(_+s.SE1,!1,!0);const z=p(y.cx,y.cy).addSegStrokeA(Y.cx,Y.cy).addSegStrokeA(w.cx,w.cy),K=p(S.cx,S.cy).addPartial(O).addPartial(z),et=p(u,0);if(s.orientation===2)for(let C=0;C<s.N2/2;C++){et.addPointAP(-2*C*o-2*i,u).addPointAP(-2*C*o-4*i,u).addSegArc2(),et.addCornerRounded(s.R7);const ot=Math.PI/2-(2*C+2)*o,j=ot+2*a;et.addPartial(O.rotate(0,0,j));const G=k.rotate(0,0,ot),U=G.getFirstPoint();et.addCornerRounded(s.R7),et.addSegStrokeA(U.cx,U.cy),et.addCornerRounded(s.R7),et.addPartial(G),et.addCornerRounded(s.R7)}else for(let C=0;C<s.N2;C++)et.addPointAP(-C*o-i,u).addPointAP(-C*o-2*i,u).addSegArc2().addCornerRounded(s.R7),s.orientation===0?et.addPartial(K.rotate(0,0,Math.PI/2-(C+1)*o+a)):s.orientation===1&&et.addPartial(X.rotate(0,0,Math.PI/2-(C+1)*o)),et.addCornerRounded(s.R7);return[t,et]}var ee={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,2,100,1),e("PHR4","mm",40,2,100,1),e("PHL2","mm",120,5,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 Be(s,t,u=""){const o=ht(ee.partName+u),n=B(),a=B(),i=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
30
|
-
`;try{const d=wt(t.PHA),r=t.PHD1/2,h=t.PHD2/2,_=t.PHD3/2,g=t.PHD5/2,l=h+t.PHL1/2*Math.sin(d),f=h-t.PHL1/2*Math.sin(d),S=t.PHL1*Math.cos(d),P=h-t.PHE2/Math.cos(d)+t.PHE1/2*Math.tan(d),V=h-t.PHE2/Math.cos(d)-t.PHE1/2*Math.tan(d),v=Math.min(P,V),x=(t.PHL1-t.PHE1/Math.cos(d))/2,R=h-t.PHE2/Math.cos(d);if(v<g)throw`err210: PHD5 ${t.PHD5} too large compare to PHE2 ${t.PHE2} or PHA ${t.PHA}`;o.logstr+=`vaxis_holder's height: ${H(S)} mm
|
|
31
|
-
`,o.logstr+=`vaxis_holder outerD1: ${H(2*l)} mm
|
|
32
|
-
`,o.logstr+=`vaxis_holder outerD2: ${H(2*f)} mm
|
|
33
|
-
`,o.logstr+=`vaxis_holder innerD: ${H(t.PHD1-2*t.PHR4)} mm
|
|
34
|
-
`,o.logstr+=`vaxis_holder D2-next: ${H(2*R)} mm
|
|
35
|
-
`;const M=function(C){return p(C*g,-t.PHE1/2).addSegStrokeR(C*(P-g),0).addSegStrokeRP(-Math.PI/2+C*d,x).addSegStrokeRP(-Math.PI/2+C*(Math.PI/2+d),t.PHE2).addSegStrokeRP(Math.PI/2+C*d,t.PHL1).addSegStrokeRP(Math.PI/2+C*(Math.PI/2+d),t.PHE2).addSegStrokeRP(-Math.PI/2+C*d,x).addSegStrokeA(C*g,t.PHE1/2).closeSegStroke()},D=function(C){return p(C*v,-t.PHE1/2).addSegStrokeA(C*v,t.PHE1/2).addSegStrokeA(C*(r-t.PHR4),t.PHE1/2).addSegStrokeA(C*(r-t.PHR4),-t.PHE1/2).closeSegStroke()},L=function(C){return p(C*(r+_),-t.PHE1/2).addSegStrokeA(C*(r+_),t.PHE1/2).addSegStrokeA(C*(r-_),t.PHE1/2).addSegStrokeA(C*(r-_),-t.PHE1/2).closeSegStroke()};n.addMain(M(1)),n.addSecond(M(-1)),n.addSecond(D(1)),n.addSecond(L(1)),n.addSecond(D(-1)),n.addSecond(L(-1));const w=function(C){return p(C*(r+t.PHR4),-t.PHE1/2).addSegStrokeA(C*P,-t.PHE1/2).addSegStrokeRP(-Math.PI/2+C*d,x).closeSegStroke()},b=function(C){return p(C*(r+t.PHR4),t.PHE1/2).addSegStrokeA(C*V,t.PHE1/2).addSegStrokeRP(Math.PI/2+C*d,x).addSegStrokeA(C*(r+t.PHR4),t.PHE1+t.PHH1).closeSegStroke()};n.addSecond(w(-1)),n.addSecond(b(-1)),i.mergeFigure(n,!0),c.mergeFigure(n,!0),n.addSecond(w(1)),n.addSecond(b(1)),i.addMain(w(1)),i.addSecond(b(1)),c.addSecond(w(1)),c.addMain(b(1)),a.addMain($(0,0,v)),a.addSecond($(0,0,h)),a.addSecond($(0,0,Math.max(l,f)));const[T,E,y]=Ce(t);o.logstr+=T,a.addMain(E);for(const C of y){const ot=lt(0,0).translatePolar(C,r);a.addMain($(ot.cx,ot.cy,t.PHD3/2))}const Y=p(r+t.PHR4,-t.PHE3).addSegStrokeA(v,-t.PHE3).addSegStrokeA(v,t.PHE3).addSegStrokeA(r+t.PHR4,t.PHE3).closeSegStroke();for(const C of y)a.addSecond(Y.rotate(0,0,C));o.fig={facePetal:a,faceOuter:n,faceButtress1:i,faceButtress2:c};const X=o.partName,k=Ft();k.addRotation(Math.PI/2,0,0),k.addTranslation(0,t.PHE3/2,0);const O=y.map((C,ot)=>{const j=Ft(k.getMatrix());return j.addRotation(0,0,C),{outName:`subpax_${X}_b1_${ot}`,face:`${X}_faceButtress1`,extrudeMethod:W.eLinearOrtho,length:t.PHE3,rotate:j.getRotation(),translate:j.getTranslation()}}),z=y.map((C,ot)=>{const j=Ft(k.getMatrix());return j.addRotation(0,0,C),{outName:`subpax_${X}_b2_${ot}`,face:`${X}_faceButtress2`,extrudeMethod:W.eLinearOrtho,length:t.PHE3,rotate:j.getRotation(),translate:j.getTranslation()}}),K=y.map((C,ot)=>`subpax_${X}_b1_${ot}`),et=y.map((C,ot)=>`subpax_${X}_b2_${ot}`);o.vol={extrudes:[{outName:`subpax_${X}_outer`,face:`${X}_faceOuter`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${X}_petal`,face:`${X}_facePetal`,extrudeMethod:W.eLinearOrtho,length:t.PHE1,rotate:[0,0,0],translate:[0,0,-t.PHE1/2]},...O,...z],volumes:[{outName:`pax_${X}`,boolMethod:it.eUnion,inList:[`subpax_${X}_petal`,`subpax_${X}_outer`,...K,...et]}]},o.sub={},o.logstr+=`vaxis_holder drawn successfully!
|
|
36
|
-
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var bt={pTitle:"Heliostat vaxis_holder",pDescription:"The holders of the guidance mechanism for azimuth motion",pDef:ee,pGeom:Be},oe={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"),ft("holders",!0),e("PHL1A","mm",400,10,1e3,1),e("PHL1B","mm",400,10,1e3,1),e("PHB","mm",5e3,10,2e4,1),e("PHD1A","mm",600,10,4e3,1),e("PHD1B","mm",380,10,4e3,1),e("PHN1AB","petal",6,1,24,1),q("holder-B"),e("PHD5B","mm",600,10,4e3,1),e("PHR4B","mm",30,3,400,1),e("PHD3B","mm",40,3,400,1),e("PHL2B","mm",140,3,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,10,4e3,1),e("PHR4A","mm",30,3,400,1),e("PHD3A","mm",40,3,400,1),e("PHL2A","mm",200,3,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_holders.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",PHD5B:"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 ye(s,t,u=""){const o=ht(oe.partName+u),n=B(),a=B(),i=B(),c=B(),d=B(),r=B(),h=B(),_=B(),g=B(),l=B(),f=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
37
|
-
`;try{const S=t.D1/2,P=t.D2/2,V=t.D3/2,v=t.H1+t.H2,x=Math.atan2(S-P,t.H2),R=t.E2*Math.tan(x/2),M=t.H1-R,D=t.PHL1B/Math.cos(x),L=P+t.PHL1B/2*Math.tan(x),w=t.H1+t.H2-t.PHL1B/2,b=P+(t.PHL1B/2+t.PHB)*Math.tan(x),T=t.H1+t.H2-t.PHL1B/2-t.PHB,E=t.PHL1A/Math.cos(x),y=S-t.PHL1A/2*Math.tan(x),Y=t.H1+t.PHL1A/2;if(P>S)throw`err091: D2 ${t.D2} is larger than D1 ${t.D1}`;if(V+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: ${H(v)} mm
|
|
38
|
-
`,o.logstr+=`cone-half-angle: ${H(ct(x))} degree
|
|
39
|
-
`,o.logstr+=`holder position: A: ${H(Y)} B1: ${H(T)} B2: ${H(w)} mm
|
|
40
|
-
`;const X=function(A){let I=P-t.E2*Math.cos(x);return I+=(v-t.E2*Math.sin(x)-A)*Math.tan(x),I},k=function(A,I){const Q=p(A*S,0).addSegStrokeA(A*S,t.H1).addSegStrokeA(A*P,v).addSegStrokeR(-A*t.E2*Math.cos(x),-t.E2*Math.sin(x));if(I&&t.holders){const Z=t.H1+t.PHL1A/2-t.PHE1A/2,rt=Z+t.PHE1A,_t=v-t.PHL1B/2+t.PHE1B/2,nt=_t-t.PHE1B,gt=_t-t.PHB,ut=gt-t.PHE1B;Q.addSegStrokeA(A*X(_t),_t).addSegStrokeA(A*(t.PHD1B/2-t.PHR4B),_t).addSegStrokeA(A*(t.PHD1B/2-t.PHR4B),nt).addSegStrokeA(A*X(nt),nt).addSegStrokeA(A*X(gt),gt).addSegStrokeA(A*(t.PHD1B/2-t.PHR4B),gt).addSegStrokeA(A*(t.PHD1B/2-t.PHR4B),ut).addSegStrokeA(A*X(ut),ut).addSegStrokeA(A*X(rt),rt).addSegStrokeA(A*(t.PHD1A/2-t.PHR4A),rt).addSegStrokeA(A*(t.PHD1A/2-t.PHR4A),Z).addSegStrokeA(A*X(Z),Z)}return Q.addSegStrokeA(A*(S-t.E2),M),I?Q.addSegStrokeA(A*(S-t.E2),t.E1).addSegStrokeA(A*V,t.E1).addSegStrokeA(A*V,0):Q.addSegStrokeA(A*(S-t.E2),0),Q.closeSegStroke(),Q};n.addMain(k(1,!1)),n.addSecond(k(1,!0)),n.addSecond(k(-1,!0));const O=t.D4/2,z=t.H4-2*O;if(z<0)throw`err121: H4 ${t.H4} is too small compare to D4 ${t.D4}`;if(O-t.L2<0)throw`err121: D4 ${t.D4} is too small compare to L2 ${t.L2}`;const K=function(A){const I=O-A;return De(0,t.H3+O-I,2*I,z+2*I,Math.PI/2)};a.addMain(K(0)),a.addMain(K(t.L2));const et=p(S,0).addSegStrokeA(S,t.H1).addSegStrokeA(P,v).addSegStrokeA(-P,v).addSegStrokeA(-S,t.H1).addSegStrokeA(-S,0).closeSegStroke();a.addSecond(et);const C=p(-S,t.H3).addSegStrokeR(0,t.H4).addSegStrokeR(-t.E3,0).addSegStrokeR(0,-t.H4).closeSegStroke();a.addSecond(C),i.addMain($(0,0,S)),i.addMain($(0,0,V));const ot=V+t.L1,j=2*Math.PI/t.N1;for(let A=0;A<t.N1;A++){const I=ot*Math.cos(A*j),Q=ot*Math.sin(A*j);i.addMain($(I,Q,t.D5/2))}i.addSecond($(0,0,P)),i.addSecond($(0,0,S-t.E2)),c.addMain($(0,0,S+t.E3)),c.addMain($(0,0,S-t.E2)),d.addMain(K(t.L2));const G=o.partName,U=[],N=[];let m={};if(t.holders){const A=St(bt.pDef,"B2");A.setVal("PHD1",t.PHD1B),A.setVal("PHD2",2*L),A.setVal("PHD5",t.PHD5B),A.setVal("PHN1",t.PHN1AB),A.setVal("PHD3",t.PHD3B),A.setVal("PHR4",t.PHR4B),A.setVal("PHL2",t.PHL2B),A.setVal("PHR6",t.PHR6B),A.setVal("PHE1",t.PHE1B),A.setVal("PHH1",t.PHH1B),A.setVal("PHA",ct(x)),A.setVal("PHL1",D),A.setVal("PHE2",t.E2),A.setVal("PHE3",t.PHE3B);const I=bt.pGeom(0,A.getParamVal(),A.getSuffix());Lt(I),o.logstr+=Ht(I.logstr,A.getPartNameSuffix()),r.mergeFigure(I.fig.faceOuter),h.mergeFigure(I.fig.facePetal);const Q={outName:`inpax_${G}_hB2`,subdesign:"pax_vaxis_holderB2",subgeom:I,rotate:[0,0,0],translate:[0,0,w]};U.push(Q),N.push(`inpax_${G}_hB2`);const Z=St(bt.pDef,"B1");Z.setVal("PHD1",t.PHD1B),Z.setVal("PHD2",2*b),Z.setVal("PHD5",t.PHD5B),Z.setVal("PHN1",t.PHN1AB),Z.setVal("PHD3",t.PHD3B),Z.setVal("PHR4",t.PHR4B),Z.setVal("PHL2",t.PHL2B),Z.setVal("PHR6",t.PHR6B),Z.setVal("PHE1",t.PHE1B),Z.setVal("PHH1",t.PHH1B),Z.setVal("PHA",ct(x)),Z.setVal("PHL1",D),Z.setVal("PHE2",t.E2),Z.setVal("PHE3",t.PHE3B);const rt=bt.pGeom(0,Z.getParamVal(),Z.getSuffix());Lt(rt),o.logstr+=Ht(rt.logstr,Z.getPartNameSuffix()),_.mergeFigure(rt.fig.faceOuter),g.mergeFigure(rt.fig.facePetal);const _t={outName:`inpax_${G}_hB1`,subdesign:"pax_vaxis_holderB1",subgeom:rt,rotate:[0,0,0],translate:[0,0,T]};U.push(_t),N.push(`inpax_${G}_hB1`);const nt=St(bt.pDef,"A");nt.setVal("PHD1",t.PHD1A),nt.setVal("PHD2",2*y),nt.setVal("PHD5",t.PHD5A),nt.setVal("PHN1",t.PHN1AB),nt.setVal("PHD3",t.PHD3A),nt.setVal("PHR4",t.PHR4A),nt.setVal("PHL2",t.PHL2A),nt.setVal("PHR6",t.PHR6A),nt.setVal("PHE1",t.PHE1A),nt.setVal("PHH1",t.PHH1A),nt.setVal("PHA",ct(x)),nt.setVal("PHL1",E),nt.setVal("PHE2",t.E2),nt.setVal("PHE3",t.PHE3A);const gt=bt.pGeom(0,nt.getParamVal(),nt.getSuffix());Lt(gt),o.logstr+=Ht(gt.logstr,nt.getPartNameSuffix()),l.mergeFigure(gt.fig.faceOuter),f.mergeFigure(gt.fig.facePetal);const ut={outName:`inpax_${G}_hA`,subdesign:"pax_vaxis_holderA",subgeom:gt,rotate:[0,0,0],translate:[0,0,Y]};U.push(ut),N.push(`inpax_${G}_hA`),m={vaxis_holder_B2:{partName:A.getPartName(),dparam:A.getDesignParamList(),orientation:[0,0,0],position:[0,0,w]},vaxis_holder_B1:{partName:Z.getPartName(),dparam:Z.getDesignParamList(),orientation:[0,0,0],position:[0,0,T]},vaxis_holder_A:{partName:nt.getPartName(),dparam:nt.getDesignParamList(),orientation:[0,0,0],position:[0,0,Y]}}}o.fig={poleCut:n,poleFace:a,poleBottom:i,emptyPole:c,emptyDoor:d,holderB2Section:r,holderB2Top:h,holderB1Section:_,holderB1Top:g,holderASection:l,holderATop:f},o.vol={inherits:U,extrudes:[{outName:`subpax_${G}_pole`,face:`${G}_poleCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${G}_bottom`,face:`${G}_poleBottom`,extrudeMethod:W.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${G}_door`,face:`${G}_poleFace`,extrudeMethod:W.eLinearOrtho,length:S+t.E3,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${G}_emptyPole`,face:`${G}_emptyPole`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${G}_emptyDoor`,face:`${G}_emptyDoor`,extrudeMethod:W.eLinearOrtho,length:S+t.E3+10,rotate:[Math.PI/2,0,0],translate:[0,0,0]}],volumes:[{outName:`ipax_${G}_door`,boolMethod:it.eIntersection,inList:[`subpax_${G}_door`,`subpax_${G}_emptyPole`]},{outName:`ipax_${G}_pole`,boolMethod:it.eSubstraction,inList:[`subpax_${G}_pole`,`subpax_${G}_emptyDoor`]},{outName:`pax_${G}`,boolMethod:it.eUnion,inList:[`ipax_${G}_pole`,`subpax_${G}_bottom`,`ipax_${G}_door`,...N]}]},o.sub=m,o.logstr+=`pole_static drawn successfully!
|
|
41
|
-
`,o.calcErr=!1}catch(S){o.logstr+=S,console.log(S)}return o}var Et={pTitle:"Heliostat pole static",pDescription:"The vertical pole of an heliostat",pDef:oe,pGeom:ye},se={partName:"rake",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",400,10,4e3,10),e("D3","mm",400,10,4e3,10),e("H1","mm",800,1,4e3,10),e("H2","mm",3e3,20,6e3,10),e("H3","mm",400,0,4e3,10),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),q("transversal"),e("H4","mm",400,10,1e3,10),e("D4","mm",300,10,1e3,10),e("E4","mm",20,1,80,1),e("H5","mm",1e3,10,2e3,10),e("D5","mm",200,1,1e3,10),e("L4","mm",300,1,1e3,10),e("L5","mm",2e3,10,4e3,10),e("L6","mm",2e3,1,4e3,10),e("D8","mm",400,1,1e3,10),q("diagonal"),e("D6","mm",100,1,600,10),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,10),e("H7","mm",600,10,2e3,10),e("L9","mm",300,1,1e3,10),e("R9","mm",50,0,300,1),e("doorOrientation","degree",0,-180,180,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_face.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 Te(s,t,u=""){const o=ht(se.partName+u),n=B(),a=B(),i=B(),c=B(),d=B(),r=B(),h=B(),_=B(),g=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
42
|
-
`;try{const l=t.D1/2,f=t.D2/2,S=t.D3/2,P=t.D4/2,V=t.D5/2,v=t.D6/2,x=t.D7/2,R=t.D8/2,M=t.H1+t.H2,D=M-t.H4+t.H5,L=4*t.L4+t.L5+2*t.L6,w=t.H1+t.H2-t.H4,b=P*Math.cos(Math.PI/6),T=P*Math.sin(Math.PI/6),E=V*Math.cos(Math.PI/6),y=V*Math.sin(Math.PI/6),Y=R*Math.cos(Math.PI/6),X=R*Math.sin(Math.PI/6),k=[-L/2,-t.L5/2-t.L4,t.L5/2,L/2-t.L4],O=t.H2-t.L8-t.H4-P,z=Math.atan2(l-f,t.H2),K=L/2-t.L7-l+t.L8*Math.tan(z),et=Math.sqrt(K**2+O**2),C=Math.atan2(K,O),ot=t.E1/Math.sin(C+z),j=et+t.E4/Math.cos(C)+ot,G=l-t.L8*Math.tan(z)-ot*Math.sin(C),U=t.H1+t.L8-ot*Math.cos(C),N=G-v*Math.cos(C),m=U+v*Math.sin(C),A=v-t.E6,I=G-t.E6*Math.cos(C),Q=U+t.E6*Math.sin(C),Z=Math.PI/2-C,rt=t.L9/2,_t=rt-t.H7*Math.tan(z);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+P>t.H2)throw`err119: H4 ${t.H4} is too large compare to H2 ${t.H2} and D4 ${t.D4}`;if(t.E4>P)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(O<0)throw`err140: H2 ${t.H2} too small compare to L8 ${t.L8}, H4 ${t.H4} and D4 ${t.D4}`;if(_t<t.R9)throw`err177: R9 ${t.R9} too large compare to doorHighX ${_t} and L9 ${t.L9}`;if(t.L9>t.D1)throw`err180: L9 ${t.L9} too large compare to D1 ${t.D1}`;o.logstr+=`cone-height: ${H(M)} mm
|
|
43
|
-
`,o.logstr+=`cone-height total: ${H(D)} mm
|
|
44
|
-
`,o.logstr+=`cone-angle: ${H(ct(z))} degree
|
|
45
|
-
`,o.logstr+=`wing-angle: ${H(ct(C))} degree
|
|
46
|
-
`;const nt=t.E1*Math.cos(z),gt=t.E1*Math.sin(z),ut=t.E1*Math.tan(z/2),Pt=function(dt){return p(dt*l,0).addSegStrokeA(dt*l,t.H1).addSegStrokeA(dt*f,M).addSegStrokeA(dt*(f-nt),M-gt).addSegStrokeA(dt*(l-t.E1),t.H1-ut).addSegStrokeA(dt*(l-t.E1),0).closeSegStroke()},xt=function(dt){return p(dt*l,0).addSegStrokeA(dt*l,t.H1).addSegStrokeA(dt*f,M).addSegStrokeA(dt*(f-nt),M-gt).addSegStrokeA(dt*(l-t.E1),t.H1-ut).addSegStrokeA(dt*(l-t.E1),t.H1-t.H3).addSegStrokeA(dt*S,t.H1-t.H3).addSegStrokeA(dt*S,t.H1-t.H3-t.E3).addSegStrokeA(dt*(l-t.E1),t.H1-t.H3-t.E3).addSegStrokeA(dt*(l-t.E1),0).closeSegStroke()},It=w-P-(t.H1-ut),Bt=l-t.E1-Math.tan(z)*It,tt=p(0,w-P).addSegStrokeA(Bt,w-P).addSegStrokeA(l-t.E1,t.H1-ut).addSegStrokeA(l-t.E1,t.H1-t.H3).addSegStrokeA(0,t.H1-t.H3).closeSegStroke(),yt=Pe(-rt,t.H1+t.H6,t.L9,2*_t,t.H7,t.R9);n.addMain(Pt(1)),n.addSecond(xt(1)),n.addSecond(xt(-1)),n.addSecond(F(-L/2,w-P,L,t.D4)),n.addSecond(F(-L/2,w-P+t.E4,L,t.D4-2*t.E4));for(const dt of k)n.addSecond(F(dt,w+T,t.L4,t.H5-T-y));n.addSecond(vt(G,U,j,2*v,Z)),n.addSecond(vt(I,Q,j,2*A,Z)),n.addSecond(vt(-G,U,2*v,j,C)),n.addSecond(vt(-I,Q,2*A,j,C)),n.addSecond(yt),a.mergeFigure(n,!0),a.addMain(tt);const Tt=p(b,w+T).addSegStrokeA(Y,w+t.H5-X).addSegStrokeA(E,w+t.H5-y).addPointA(-E,w+t.H5-y).addSegArc(V,!1,!1).addSegStrokeA(-Y,w+t.H5-X).addSegStrokeA(-b,w+T).closeSegArc(P,!1,!1);i.addMain($(0,w,P)),i.addMain($(0,w,P-t.E4)),i.addSecond(xt(1)),i.addSecond(xt(-1)),i.addSecond(Tt),i.addSecond($(0,w+t.H5,V)),i.addSecond(F(-v,t.H1+t.L8,2*v,O)),i.addSecond(F(-A,t.H1+t.L8,2*A,O)),i.addSecond(yt),c.addMain($(0,w,P-t.E4)),c.addSecond($(0,w,P)),c.addSecond(Tt),d.addMain($(0,0,l)),d.addMain($(0,0,S));const Wt=S+t.L1,qt=2*Math.PI/t.N1;for(let dt=0;dt<t.N1;dt++){const kt=Wt*Math.cos(dt*qt),Yt=Wt*Math.sin(dt*qt);d.addMain($(kt,Yt,x))}d.addSecond($(0,0,l-t.E1)),d.addSecond($(0,0,f)),d.addSecond(F(-P,-L/2,t.D4,L)),d.addSecond(F(-P+t.E4,-L/2,t.D4-2*t.E4,L));for(const dt of k)d.addSecond(F(-b,dt,2*b,t.L4)),d.addSecond(F(-E,dt,2*E,t.L4)),d.addSecond(F(-Y,dt,2*Y,t.L4));d.addSecond(F(-v,l-t.L8*Math.tan(z),2*v,K)),d.addSecond(F(-A,l-t.L8*Math.tan(z),2*A,K)),d.addSecond(F(-v,-l+t.L8*Math.tan(z)-K,2*v,K)),d.addSecond(F(-A,-l+t.L8*Math.tan(z)-K,2*A,K)),r.addMain(Tt),r.addSecond($(0,w,P)),r.addSecond($(0,w,P-t.E4)),r.addSecond($(0,w+t.H5,V)),h.addMain($(0,0,v)),h.addMain($(0,0,A)),_.addSecond($(0,0,v)),_.addMain($(0,0,A)),g.addMain(yt),g.addSecond(xt(1)),g.addSecond(xt(-1)),g.addSecond(F(-L/2,w-P,L,t.D4)),g.addSecond(F(-L/2,w-P+t.E4,L,t.D4-2*t.E4));for(const dt of k)g.addSecond(F(dt,w+T,t.L4,t.H5-T-y));g.addSecond(vt(G,U,j,2*v,Z)),g.addSecond(vt(I,Q,j,2*A,Z)),g.addSecond(vt(-G,U,2*v,j,C)),g.addSecond(vt(-I,Q,2*A,j,C)),o.fig={faceCone:n,faceConeHollow:a,faceBeam:i,faceBeamHollow:c,faceDisc:d,faceHand:r,faceWing:h,faceWingHollow:_,faceDoor:g};const st=o.partName,Se=k.map((dt,kt)=>({outName:`subpax_${st}_hand_${kt}`,face:`${st}_faceHand`,extrudeMethod:W.eLinearOrtho,length:t.L4,rotate:[Math.PI/2,0,0],translate:[0,-dt,0]}));o.vol={extrudes:[{outName:`subpax_${st}_cone`,face:`${st}_faceCone`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${st}_coneHollow`,face:`${st}_faceConeHollow`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${st}_beam`,face:`${st}_faceBeam`,extrudeMethod:W.eLinearOrtho,length:L,rotate:[Math.PI/2,0,0],translate:[0,L/2,0]},{outName:`subpax_${st}_beamHollow`,face:`${st}_faceBeamHollow`,extrudeMethod:W.eLinearOrtho,length:L,rotate:[Math.PI/2,0,0],translate:[0,L/2,0]},{outName:`subpax_${st}_disc`,face:`${st}_faceDisc`,extrudeMethod:W.eLinearOrtho,length:t.E3,rotate:[0,0,0],translate:[0,0,t.H1-t.H3-t.E3]},{outName:`subpax_${st}_wing_right`,face:`${st}_faceWing`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[-C,0,0],translate:[0,N,m]},{outName:`subpax_${st}_wing_left`,face:`${st}_faceWing`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[C,0,0],translate:[0,-N,m]},{outName:`subpax_${st}_wing_hollow_right`,face:`${st}_faceWingHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[-C,0,0],translate:[0,N,m]},{outName:`subpax_${st}_wing_hollow_left`,face:`${st}_faceWingHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[C,0,0],translate:[0,-N,m]},{outName:`subpax_${st}_door`,face:`${st}_faceDoor`,extrudeMethod:W.eLinearOrtho,length:t.D1,rotate:[Math.PI/2,0,-Math.PI/2+wt(t.doorOrientation)],translate:[0,0,0]},...Se],volumes:[{outName:`ipax_${st}_plus`,boolMethod:it.eUnion,inList:[`subpax_${st}_cone`,`subpax_${st}_beam`,`subpax_${st}_disc`,`subpax_${st}_hand_0`,`subpax_${st}_hand_1`,`subpax_${st}_hand_2`,`subpax_${st}_hand_3`,`subpax_${st}_wing_right`,`subpax_${st}_wing_left`]},{outName:`ipax_${st}_hollow`,boolMethod:it.eUnion,inList:[`subpax_${st}_coneHollow`,`subpax_${st}_beamHollow`,`subpax_${st}_wing_hollow_right`,`subpax_${st}_wing_hollow_left`,`subpax_${st}_door`]},{outName:`pax_${st}`,boolMethod:it.eSubstraction,inList:[`ipax_${st}_plus`,`ipax_${st}_hollow`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
|
|
47
|
-
`,o.calcErr=!1}catch(l){o.logstr+=l,console.log(l)}return o}var At={pTitle:"Heliostat rake",pDescription:"The rake on top of the V-Axis of the heliostat",pDef:se,pGeom:Te},Jt={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 Fe(s,t,u=""){const o=ht(Jt.partName+u);let n,a;const i=B(),c=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
48
|
-
`;try{const r=t.D1/2;if(t.D1<t.E2)throw`err476: D1 ${t.D1} smaller then E2 ${t.E2}`;const h=t.E2/2,_=Math.sqrt(r**2-h**2),g=t.L1+t.L2*Math.sqrt(2),l=t.L2+t.L1*Math.sqrt(2),f=t.L4-l;if(f<t.R2)throw`err984: L4 ${t.L4} too small compare to R2 ${t.R2}`;const S=f*Math.cos(Math.PI/4),P=f*Math.sin(Math.PI/4),V=t.E2*Math.cos(Math.PI/4),v=t.E2*Math.sin(Math.PI/4),x=t.E2*Math.tan(Math.PI/8);if(r<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 R=(t.L3-t.E2)/2*Math.cos(Math.PI/4),M=g+S+R,D=-t.L1-P+R,L=D-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 w=1;t.N1>1&&(w=(t.L5-t.L6)/(t.N1-1));const b=[...Array(t.N1).keys()].map(k=>k*w);n=function(k,O,z){return p(k,O).addSegStrokeA(k+z*Math.cos(Math.PI/4),O-z*Math.sin(Math.PI/4)).addSegStrokeA(k,O-2*z*Math.sin(Math.PI/4)).addSegStrokeA(k-z*Math.cos(Math.PI/4),O-z*Math.sin(Math.PI/4)).closeSegStroke()},a=function(k,O,z,K){return p(z,K).addSegStrokeA(z+k,K).addSegStrokeA(z+k,K+O).addSegStrokeA(z,K+O).closeSegStroke()};const T=Math.sin(2*Math.PI*s/Jt.sim.tMax)*Math.PI/2;o.logstr+=`spide leg number: ${t.N1}
|
|
49
|
-
`,o.logstr+=`spide position angle: ${H(ct(T))} degree
|
|
50
|
-
`;const E=p(h,-_).addCornerRounded(t.R2).addSegStrokeA(h,-t.L1).addCornerRounded(t.R2).addSegStrokeA(g,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(g+S,-t.L1-P).addSegStrokeA(g+S-V,-t.L1-P-v).addSegStrokeA(g-x,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-g+x,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-g-S+V,-t.L1-P-v).addSegStrokeA(-g-S,-t.L1-P).addSegStrokeA(-g,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(-h,-t.L1).addCornerRounded(t.R2).addSegStrokeA(-h,-_).addCornerRounded(t.R2).closeSegArc(r,!0,!1);i.addMain(E),i.addMain($(0,0,r-t.E1)),i.addSecond(n(M,D,t.L3)),i.addSecond(n(M,L,t.L3-2*t.E3)),i.addSecond(n(-M,D,t.L3)),i.addSecond(n(-M,L,t.L3-2*t.E3)),c.addMain($(0,0,r)),c.addMain($(0,0,r-t.E1)),c.addMain(n(M,D,t.L3)),c.addMain(n(M,L,t.L3-2*t.E3)),c.addMain(n(-M,D,t.L3)),c.addMain(n(-M,L,t.L3-2*t.E3)),c.addSecond(E),d.addSecond(a(t.L5,t.D1,0,-t.D1/2)),d.addSecond(a(t.L5,t.L3,0,-t.L4-t.L3));for(const k of b)d.addSecond(a(t.L6,t.L4,k,-t.L4));o.fig={faceLegs:i.rotate(0,0,T),faceTube:c.rotate(0,0,T),faceBody:d};const y=o.partName,Y=b.map((k,O)=>({outName:`subpax_${y}_leg_${O}`,face:`${y}_faceLegs`,extrudeMethod:W.eLinearOrtho,length:t.L6,rotate:[0,0,0],translate:[0,0,k]})),X=b.map((k,O)=>`subpax_${y}_leg_${O}`);o.vol={extrudes:[{outName:`subpax_${y}_tube`,face:`${y}_faceTube`,extrudeMethod:W.eLinearOrtho,length:t.L5,rotate:[0,0,0],translate:[0,0,0]},...Y],volumes:[{outName:`pax_${y}`,boolMethod:it.eUnion,inList:[`subpax_${y}_tube`,...X]}]},o.sub={},o.logstr+=`heliostat-spider drawn successfully!
|
|
51
|
-
`,o.calcErr=!1}catch(r){o.logstr+=r,console.log(r)}return o}var zt={pTitle:"Heliostat spider",pDescription:"The spider part for the control of the inclination of the heliostat",pDef:Jt,pGeom:Fe},ie={partName:"swing",params:[e("L1","mm",12500,100,4e4,10),e("L2","mm",6e3,100,4e4,10),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("radial"),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,1e3,1),e("R2","mm",100,0,1e3,1),q("rod overlay"),e("rod1","",10,1,40,1),e("rod2","mm",1300,10,4e3,10),e("rod3","mm",400,10,1e3,10),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",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 Oe(s,t,u=""){const o=ht(ie.partName+u),n=B(),a=B(),i=B(),c=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
52
|
-
`;try{const r=t.D1/2;o.logstr+=`swing size: L1 ${H(t.L1)} x L2 ${H(t.L2)} mm
|
|
53
|
-
`,n.addMain($(0,0,r)),n.addMain($(0,0,r-t.E1));const h=[-t.L2/2,-t.L3-t.H2,t.L3,t.L2/2-t.H2];for(const b of h)n.addMain(F(b,r-t.H4,t.H2,t.H4)),n.addMain(F(b+t.E2,r-t.H4+t.E2,t.H2-2*t.E2,t.H4-2*t.E2));n.addSecond(F(-t.L2/2,r,t.L2,t.H3));const _=[];_.push(-t.L1/2),_.push(t.L1/2-t.H1);for(const b 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])_.push(b+T);for(const b of _)a.addMain(F(b,r,t.H1,t.H3)),a.addMain(F(b+t.E3,r+t.E3,t.H1-2*t.E3,t.H3-2*t.E3));a.addSecond(F(-t.L1/2,-r,t.L1,t.D1)),a.addSecond(F(-t.L1/2,r-t.H4,t.L1,t.H4));for(const b of _)i.addSecond(F(b,-t.L2/2,t.H1,t.L2));for(const b of h)i.addSecond(F(-t.L1/2,b,t.L1,t.H2));i.addSecond(F(-t.L1/2,-r,t.L1,t.D1));const l=2*Math.atan2(t.S1,r),f=lt(0,0),P=lt(0,r).rotate(f,l),V=p(-t.L3,r).addSegStrokeA(-t.S1,r).addCornerRounded(t.R2).addSegStrokeA(P.cx,P.cy).addPointA(0,-r).addPointA(-P.cx,P.cy).addSegArc2().addSegStrokeA(t.S1,r).addCornerRounded(t.R2).addSegStrokeA(t.L3,r).addSegStrokeA(t.L3,r+t.E3).addSegStrokeA(-t.L3,r+t.E3).closeSegStroke();c.addMain(V),c.addMain($(0,0,r-t.E1)),n.addSecond(V);for(const b of _)d.addMain(F(b,-t.L2/2,t.H1,t.L2));for(const b of h)d.addMain(F(-t.L1/2,b,t.L1,t.H2));d.addMain(F(-t.L1/2,-r,t.L1,t.D1));const v=-((t.rod1-1)*t.rod2+t.rod3)/2,x=(t.rod3-t.rod4)/2,R=t.rod3/2,M=1.2*t.L2,D=(M-R)/3,L=-M/2;for(let b=0;b<t.rod1;b++){const T=v+b*t.rod2;d.addSecond(F(T+x,L,t.rod4,M));for(let E=0;E<4;E++)d.addSecond(F(T,L+E*D,t.rod3,R,R/4))}o.fig={faceSide:n,faceFace:a,faceTop:i,faceButtress:c,faceTopWithRods:d};const w=o.partName;o.vol={extrudes:[{outName:`subpax_${w}_side`,face:`${w}_faceSide`,extrudeMethod:W.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,-t.L1/2]},{outName:`subpax_${w}_face`,face:`${w}_faceFace`,extrudeMethod:W.eLinearOrtho,length:t.L2,rotate:[0,Math.PI/2,0],translate:[-t.L2/2,0,0]},..._.map((b,T)=>({outName:`subpax_${w}_buttress_${T}`,face:`${w}_faceButtress`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,b]}))],volumes:[{outName:`pax_${w}`,boolMethod:it.eUnion,inList:[`subpax_${w}_side`,`subpax_${w}_face`,..._.map((b,T)=>`subpax_${w}_buttress_${T}`)]}]},o.sub={},o.logstr+=`heliostat-swing drawn successfully!
|
|
54
|
-
`,o.calcErr=!1}catch(r){o.logstr+=r,console.log(r)}return o}var Rt={pTitle:"Heliostat swing",pDescription:"The swing for the heliostat inclination",pDef:ie,pGeom:Oe},Gt={partName:"heliostat",params:[e("H1","mm",3e3,10,4e4,10),e("H2","mm",2500,50,4e4,10),e("D1","mm",1e3,20,4e3,10),e("D2","mm",700,20,4e3,10),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,10),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,10),e("D4","mm",400,20,4e3,10),e("D5","mm",300,20,1e3,10),e("D6","mm",200,10,1e3,10),e("D7","mm",400,10,1e3,10),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,10),e("L2","mm",6e3,100,4e4,10),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 me(s,t,u=""){const o=ht(Gt.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
55
|
-
`;try{const i=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;o.logstr+=`heliostat-height: ${H(i)}, diameter ${H(t.D1)} m
|
|
56
|
-
`,o.logstr+=`heliostat-swing-length: ${H(t.L1)}, width ${H(t.L2)} m
|
|
57
|
-
`;const d=(t.al-t.ar)/2-Math.sin(2*Math.PI*s/Gt.sim.tMax)*(t.al+t.ar)/2,r=wt(d);o.logstr+=`swing position angle: ${H(ct(r))} degree
|
|
58
|
-
`;const h=t.H1+t.H2-t.H3,_=h+t.H4+t.H5-t.H6+t.H7,g=_+t.H8,l=St(Et.pDef),f=St(At.pDef),S=St(zt.pDef),P=St(Rt.pDef);l.setVal("H1",t.H1),l.setVal("H2",t.H2),l.setVal("D1",t.D1),l.setVal("D2",t.D2),l.setVal("D3",t.D1-6*t.E1),l.setVal("E1",t.E1),l.setVal("E2",t.E1);const V=32,v=(t.D1-6*t.E1)/(V*4);l.setVal("N1",V),l.setVal("D5",v),l.setVal("L1",t.E1+v/2),l.setVal("H3",t.H1/4),l.setVal("H4",t.H1/2),l.setVal("D4",t.H1/4),l.setVal("L2",t.H1/80),l.setVal("E3",t.H1/80),l.setVal("holders",0),f.setVal("H1",t.H4),f.setVal("H2",t.H5),f.setVal("H3",t.H4-2*t.E1),f.setVal("D1",t.D3),f.setVal("D2",t.D4),f.setVal("L9",t.D3/2),f.setVal("H7",t.D3/2*1.6),f.setVal("H6",t.D3/20),f.setVal("R9",t.D3/20),f.setVal("E1",t.E1),f.setVal("E3",t.E1),f.setVal("E4",t.E1);const x=t.D2*.6,R=24,M=x/(R*4);if(f.setVal("D3",x),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(f.setVal("N1",R),f.setVal("D7",M),f.setVal("L1",M),f.setVal("H4",t.H6),f.setVal("D4",t.D5),f.setVal("L7",t.L7),f.setVal("L8",t.L8),f.setVal("D6",t.D9),f.setVal("H5",t.H7+t.H8),f.setVal("D5",t.D6),f.setVal("D8",t.D7),t.D6>=t.D7)throw`err164: D6 ${t.D6} too large compare to D7 ${t.D7}`;const D=t.L4-2*t.L3;if(f.setVal("L4",D),D<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;f.setVal("L5",t.L5+2*t.L3),f.setVal("L6",t.L6+2*t.L3);const L=t.L5*.96,w=6;if(S.setVal("L5",L),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",w),S.setVal("L6",L/(w*10)),P.setVal("L2",t.L2),P.setVal("D1",t.D6),P.setVal("H3",t.H9),P.setVal("H4",t.H9),P.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}`;P.setVal("H1",t.L3),P.setVal("H2",t.L3),P.setVal("L4",t.L4),P.setVal("L5",t.L5),P.setVal("L6",t.L6),P.setVal("L3",t.D7);const b=Et.pGeom(0,l.getParamVal(),l.getSuffix());Lt(b),o.logstr+=Ht(b.logstr,l.getPartNameSuffix());const T=At.pGeom(0,f.getParamVal(),f.getSuffix());Lt(T),o.logstr+=Ht(T.logstr,f.getPartNameSuffix());const E=zt.pGeom(0,S.getParamVal(),S.getSuffix());Lt(E),o.logstr+=Ht(E.logstr,S.getPartNameSuffix());const y=Rt.pGeom(0,P.getParamVal(),P.getSuffix());Lt(y),o.logstr+=Ht(y.logstr,P.getPartNameSuffix()),n.mergeFigure(b.fig.poleCut),n.mergeFigure(T.fig.faceBeam.translate(0,h)),n.mergeFigure(E.fig.faceLegs.translate(0,_).rotate(0,_,r/2)),n.mergeFigure(y.fig.faceSide.translate(0,g).rotate(0,g,r)),a.mergeFigure(b.fig.poleCut),a.mergeFigure(T.fig.faceCone.translate(0,h)),a.mergeFigure(E.fig.faceBody.translate(-L/2,_)),a.mergeFigure(y.fig.faceFace.translate(0,g)),o.fig={faceSide:n,faceFace:a};const Y=o.partName;o.vol={inherits:[{outName:`inpax_${Y}_poleStatic`,subdesign:"pax_pole_static",subgeom:b,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${Y}_rake`,subdesign:"pax_rake",subgeom:T,rotate:[0,0,0],translate:[0,0,h]},{outName:`inpax_${Y}_swing`,subdesign:"pax_swing",subgeom:y,rotate:[Math.PI/2,0,0],translate:[0,0,g]},{outName:`inpax_${Y}_spider`,subdesign:"pax_spider",subgeom:E,rotate:[Math.PI/2,0,0],translate:[0,L/2,_]}],extrudes:[],volumes:[{outName:`pax_${Y}`,boolMethod:it.eUnion,inList:[`inpax_${Y}_poleStatic`,`inpax_${Y}_rake`,`inpax_${Y}_swing`,`inpax_${Y}_spider`]}]};const X={partName:l.getPartName(),dparam:l.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]},k={partName:f.getPartName(),dparam:f.getDesignParamList(),orientation:[0,0,0],position:[0,0,h]},O={partName:S.getPartName(),dparam:S.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,L/2,_]},z={partName:P.getPartName(),dparam:P.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,0,g]};o.sub={pole_static_1:X,rake_1:k,spider_1:O,swing_1:z},o.logstr+=`heliostat-overview drawn successfully!
|
|
59
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Je={pTitle:"Heliostat overview",pDescription:"The heliostat inclination mechanism",pDef:Gt,pGeom:me},ne={partName:"rake_stopper",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",400,10,4e3,10),e("D3","mm",400,1,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,10),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_face.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 ze(s,t,u=""){const o=ht(ne.partName+u),n=B(),a=B(),i=B(),c=B(),d=B(),r=B(),h=B(),_=B(),g=B(),l=B(),f=B(),S=B(),P=B(),V=B(),v=B(),x=B(),R=B(),M=B(),D=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
60
|
-
`;try{const L=t.D1/2,w=t.H1+t.H2,b=w-t.H4+t.H5,T=b-t.S2,E=t.H1+t.H2-t.H4,y=E+t.D4/2,Y=t.H1+t.S3,X=t.L5/2,k=t.S1/2,O=t.S1-2*t.E7,z=O/2,K=-L-t.S1/2-t.JS1,et=t.S2-k,C=T-k,ot=T-t.JH1,j=t.JD1/2,G=j-t.JE1,U=L+t.JS2,N=t.JD3/2,m=t.JD4/2,A=X-k;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(T-t.JH1-t.JD1/2<0)throw`err143: S2 ${t.S2} too large compare to H1H5 ${H(b)}`;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+k)throw`err148: JH1 ${t.JH1} too large compare to JD1 ${t.JD1} and S1 ${t.S1}`;if(t.JS2<t.JS1-k)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: ${H(w)} mm
|
|
61
|
-
`,o.logstr+=`cone-height total: ${H(b)} mm
|
|
62
|
-
`,x.addSecond(F(-X,C,t.L5,t.S1)),x.addSecond(F(-X,C+t.E7,t.L5,O)),x.addMain($(-t.JL1/2,ot,j)),x.addMain($(-t.JL1/2,ot,G)),x.addMain($(t.JL1/2,ot,j)),x.addMain($(t.JL1/2,ot,G));const I=St(At.pDef);I.setVal("D1",t.D1),I.setVal("D2",t.D2),I.setVal("D3",t.D3),I.setVal("H1",t.H1),I.setVal("H2",t.H2),I.setVal("H3",t.H3),I.setVal("E1",t.E1),I.setVal("E3",t.E3),I.setVal("H4",t.H4),I.setVal("D4",t.D4),I.setVal("E4",t.E4),I.setVal("H5",t.H5),I.setVal("D5",t.D5),I.setVal("L4",t.L4),I.setVal("L5",t.L5),I.setVal("L6",t.L6),I.setVal("D6",t.D6),I.setVal("E6",t.E6),I.setVal("L7",t.L7),I.setVal("L8",t.L8),I.setVal("N1",t.N1),I.setVal("D7",t.D7),I.setVal("L1",t.L1),I.setVal("D8",t.D8),I.setVal("H6",t.H6),I.setVal("H7",t.H7),I.setVal("L9",t.L9),I.setVal("R9",t.R9),I.setVal("doorOrientation",t.doorOrientation);const Q=At.pGeom(0,I.getParamVal(),I.getSuffix());Lt(Q),o.logstr+=Ht(Q.logstr,I.getPartNameSuffix()),n.mergeFigure(Q.fig.faceCone),n.mergeFigure(x,!0),a.mergeFigure(Q.fig.faceBeam),i.mergeFigure(Q.fig.faceBeamHollow),c.mergeFigure(Q.fig.faceDisc),d.mergeFigure(Q.fig.faceHand),r.mergeFigure(Q.fig.faceWing),h.mergeFigure(Q.fig.faceWingHollow),_.mergeFigure(Q.fig.faceDoor),_.mergeFigure(x,!0),g.mergeFigure(Q.fig.faceDisc,!0),g.addMain(F(K,-X,t.S1,t.L5)),g.addMain(F(K+t.E7,-X,O,t.L5)),g.addMain(F(t.S2-t.S1,-X,t.S1,t.L5)),g.addMain(F(t.S2-t.E7-O,-X,O,t.L5)),g.addMain(F(0,-X,et,t.S1)),g.addMain(F(0,-X+t.E7,et,O)),g.addMain(F(0,X-t.S1,et,t.S1)),g.addMain(F(0,X-t.S1+t.E7,et,O)),g.addMain(F(0,-L-t.S1,et,t.S1)),g.addMain(F(0,-L-t.S1+t.E7,et,O)),g.addMain(F(0,L,et,t.S1)),g.addMain(F(0,L+t.E7,et,O)),g.addSecond(F(-U,-t.JL1/2-j,U,2*j)),g.addSecond(F(-U,-t.JL1/2-G,U,2*G)),g.addSecond(F(-U,t.JL1/2-j,U,2*j)),g.addSecond(F(-U,t.JL1/2-G,U,2*G));const Z=L+t.JS3,rt=t.JD3-2*t.JE3;g.addSecond(F(-t.JD3/2,-Z,t.JD3,Z)),g.addSecond(F(-t.JD3/2+t.JE3,-Z,rt,Z)),g.addSecond(F(-t.JD3/2,0,t.JD3,Z)),g.addSecond(F(-t.JD3/2+t.JE3,0,rt,Z)),l.mergeFigure(Q.fig.faceBeam,!0),l.addMain($(-L-t.JS1,T,k)),l.addMain($(-L-t.JS1,T,z)),l.addMain($(et,y+k,k)),l.addMain($(et,y+k,z)),l.addSecond(F(0,y,et,t.S1)),l.addSecond(F(0,y+t.E7,et,O));const _t=y+k-Y,nt=Math.sqrt(et**2+_t**2),gt=Math.atan2(_t,et);o.logstr+=`stopper-rod: L ${H(nt)} mm, A ${H(ct(gt))} degree
|
|
63
|
-
`,l.addSecond(Xt(0,Y,nt,t.S1,gt)),l.addSecond(Xt(0,Y,nt,O,gt)),l.addSecond(F(-U,ot-j,U,2*j)),l.addSecond(F(-U,ot-G,U,2*G)),l.addSecond($(0,Y,t.JD3/2)),l.addSecond($(0,Y,t.JD3/2-t.JE3));const ut=t.D4/2+t.JS4,Pt=t.JD4/2-t.JE4;l.addSecond(F(-t.JD4/2,E,t.JD4,ut)),l.addSecond(F(-Pt,E,2*Pt,ut)),f.mergeFigure(l,!0),f.addMain($(-L-t.JS1,T,z)),f.addMain($(t.S2-k,y+k,z)),S.mergeFigure(Q.fig.faceCone,!0),S.mergeFigure(x,!0),S.addMain($(-t.L5/2+k,y+k,k)),S.addMain($(-t.L5/2+k,y+k,z)),S.addMain($(t.L5/2-k,y+k,k)),S.addMain($(t.L5/2-k,y+k,z)),P.mergeFigure(Q.fig.faceCone,!0),P.mergeFigure(x,!0),P.addSecond($(-t.L5/2+k,y+k,k)),P.addMain($(-t.L5/2+k,y+k,z)),P.addSecond($(t.L5/2-k,y+k,k)),P.addMain($(t.L5/2-k,y+k,z)),V.mergeFigure(Q.fig.faceCone,!0),V.mergeFigure(x,!0),V.addMain($(-L-k,0,k)),V.addMain($(-L-k,0,z)),V.addMain($(L+k,0,k)),V.addMain($(L+k,0,z)),v.mergeFigure(Q.fig.faceCone,!0),v.mergeFigure(x,!0),v.addSecond($(-L-k,0,k)),v.addMain($(-L-k,0,z)),v.addSecond($(L+k,0,k)),v.addMain($(L+k,0,z)),R.mergeFigure(Q.fig.faceCone,!0),R.mergeFigure(x);const xt=-A-Pt,It=A-Pt,Bt=Y-rt/2;R.addSecond(F(-A-m,E,t.JD4,ut)),R.addSecond(F(xt,E,2*Pt,ut)),R.addSecond(F(A-m,E,t.JD4,ut)),R.addSecond(F(It,E,2*Pt,ut)),R.addSecond(F(-Z,Y-N,Z,t.JD3)),R.addSecond(F(-Z,Bt,Z,rt)),R.addSecond(F(0,Y-N,Z,t.JD3)),R.addSecond(F(0,Y-rt/2,Z,rt)),M.mergeFigure(l,!0),M.addMain($(0,Y,t.JD3/2)),M.addMain($(0,Y,t.JD3/2-t.JE3)),D.mergeFigure(g,!0),D.addMain($(0,-A,m)),D.addMain($(0,-A,m-t.JE4)),D.addMain($(0,A,m)),D.addMain($(0,A,m-t.JE4)),o.fig={faceCone:n,faceBeam:a,faceBeamHollow:i,faceDisc:c,faceHand:d,faceWing:r,faceWingHollow:h,faceDoor:_,faceStopperTop:g,faceStopperSide:l,faceStopperSideH:f,faceStopperFaceT:S,faceStopperFaceTH:P,faceStopperFaceB:V,faceStopperFaceBH:v,faceLowStopperHolder:R,faceHi1StopperHolder:M,faceHi2StopperHolder:D};const tt=o.partName;o.vol={inherits:[{outName:`inpax_${tt}_rake`,subdesign:"pax_rake",subgeom:Q,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_coneHollow`,subdesign:"subpax_rake_coneHollow",subgeom:Q,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${tt}_beamHollow`,subdesign:"subpax_rake_beamHollow",subgeom:Q,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:et,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceTH`,face:`${tt}_faceStopperFaceTH`,extrudeMethod:W.eLinearOrtho,length:et,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_stpFaceB`,face:`${tt}_faceStopperFaceB`,extrudeMethod:W.eLinearOrtho,length:nt,rotate:[Math.PI/2-gt,0,Math.PI/2],translate:[0,0,Y]},{outName:`subpax_${tt}_stpFaceBH`,face:`${tt}_faceStopperFaceBH`,extrudeMethod:W.eLinearOrtho,length:nt,rotate:[Math.PI/2-gt,0,Math.PI/2],translate:[0,0,Y]},{outName:`subpax_${tt}_lowSH`,face:`${tt}_faceLowStopperHolder`,extrudeMethod:W.eLinearOrtho,length:U,rotate:[Math.PI/2,0,-Math.PI/2],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH1`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:W.eLinearOrtho,length:Z,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${tt}_Hi1SH2`,face:`${tt}_faceHi1StopperHolder`,extrudeMethod:W.eLinearOrtho,length:Z,rotate:[Math.PI/2,0,Math.PI],translate:[0,0,0]},{outName:`subpax_${tt}_Hi2SH`,face:`${tt}_faceHi2StopperHolder`,extrudeMethod:W.eLinearOrtho,length:ut,rotate:[0,0,0],translate:[0,0,E]}],volumes:[{outName:`ipax_${tt}_plus`,boolMethod:it.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:it.eUnion,inList:[`inpax_${tt}_coneHollow`,`inpax_${tt}_beamHollow`,`subpax_${tt}_stpSideH`,`subpax_${tt}_stpFaceTH`,`subpax_${tt}_stpFaceBH`]},{outName:`ipax_${tt}_stopper`,boolMethod:it.eSubstraction,inList:[`ipax_${tt}_plus`,`ipax_${tt}_hollow`]},{outName:`pax_${tt}`,boolMethod:it.eUnion,inList:[`inpax_${tt}_rake`,`ipax_${tt}_stopper`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
|
|
64
|
-
`,o.calcErr=!1}catch(L){o.logstr+=L,console.log(L)}return o}var Ut={pTitle:"Heliostat rake with stopper",pDescription:"The rake-stopper on top of the V-Axis of the heliostat",pDef:ne,pGeom:ze},pt={partName:"heliostat_2",params:[e("H1","mm",3e3,10,4e4,10),e("H2","mm",2500,50,4e4,10),e("D1","mm",1e3,20,4e3,10),e("D2","mm",700,20,4e3,10),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,10),e("H6","mm",200,1,4e3,1),e("H7","mm",400,1,4e3,1),e("D3","mm",900,20,4e3,10),e("D4","mm",400,20,4e3,10),e("D5","mm",300,20,1e3,10),e("D6","mm",200,10,1e3,10),e("D7","mm",400,10,1e3,10),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,10),e("L2","mm",6e3,100,4e4,10),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,10),e("L6","mm",2e3,1,6e3,1),e("H9","mm",100,1,400,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",al:"heliostat2_side_sizing.svg",S1:"heliostat2_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Ge(s,t,u=""){const o=ht(pt.partName+u),n=B(),a=B(),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
65
|
-
`;try{const c=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;o.logstr+=`heliostat-height: ${H(c)}, diameter ${H(t.D1)} m
|
|
66
|
-
`,o.logstr+=`heliostat-swing-length: ${H(t.L1)}, width ${H(t.L2)} m
|
|
67
|
-
`;const d=t.al*s/pt.sim.tMax,r=wt(d);o.logstr+=`swing position angle: ${H(ct(r))} degree
|
|
68
|
-
`;const h=t.H1+t.H2-t.H3,_=h+t.H4+t.H5-t.H6+t.H7,g=St(Et.pDef),l=St(Ut.pDef),f=St(Rt.pDef);g.setVal("H1",t.H1),g.setVal("H2",t.H2),g.setVal("D1",t.D1),g.setVal("D2",t.D2),g.setVal("D3",t.D1-6*t.E1),g.setVal("E1",t.E1),g.setVal("E2",t.E1);const S=32,P=(t.D1-6*t.E1)/(S*4);g.setVal("N1",S),g.setVal("D5",P),g.setVal("L1",t.E1+P/2),g.setVal("H3",t.H1/4),g.setVal("H4",t.H1/2),g.setVal("D4",t.H1/4),g.setVal("L2",t.H1/80),g.setVal("E3",t.H1/80),g.setVal("holders",0),l.setVal("H1",t.H4),l.setVal("H2",t.H5),l.setVal("H3",t.H4-2*t.E1),l.setVal("D1",t.D3),l.setVal("D2",t.D4),l.setVal("L9",t.D3/2),l.setVal("H7",t.D3/2*1.6),l.setVal("H6",t.D3/20),l.setVal("R9",t.D3/20),l.setVal("E1",t.E1),l.setVal("E3",t.E1),l.setVal("E4",t.E1),l.setVal("E6",t.E1),l.setVal("E7",t.E1);const V=t.D2*.6,v=24,x=V/(v*4);if(l.setVal("D3",V),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(l.setVal("N1",v),l.setVal("D7",x),l.setVal("L1",x),l.setVal("H4",t.H6),l.setVal("D4",t.D5),l.setVal("L7",t.L7),l.setVal("L8",t.L8),l.setVal("D6",t.D9),l.setVal("H5",t.H7),l.setVal("D5",t.D6),l.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(l.setVal("L4",R),R<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;if(l.setVal("L5",t.L5+2*t.L3),l.setVal("L6",t.L6+2*t.L3),l.setVal("S1",t.S1),l.setVal("S2",t.L2/2),f.setVal("L2",t.L2),f.setVal("D1",t.D6),f.setVal("H3",t.H9),f.setVal("H4",t.H9),f.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}`;f.setVal("H1",t.L3),f.setVal("H2",t.L3),f.setVal("L4",t.L4),f.setVal("L5",t.L5),f.setVal("L6",t.L6),f.setVal("L3",t.D7);const M=Et.pGeom(0,g.getParamVal(),g.getSuffix());Lt(M),o.logstr+=Ht(M.logstr,g.getPartNameSuffix());const D=Ut.pGeom(0,l.getParamVal(),l.getSuffix());Lt(D),o.logstr+=Ht(D.logstr,l.getPartNameSuffix());const L=Rt.pGeom(0,f.getParamVal(),f.getSuffix());Lt(L),o.logstr+=Ht(L.logstr,f.getPartNameSuffix()),n.mergeFigure(M.fig.poleCut),n.mergeFigure(D.fig.faceStopperSide.translate(0,h)),n.mergeFigure(L.fig.faceSide.translate(0,_).rotate(0,_,r)),a.mergeFigure(M.fig.poleCut),a.mergeFigure(D.fig.faceStopperFaceT.translate(0,h)),a.mergeFigure(L.fig.faceFace.translate(0,_)),i.mergeFigure(M.fig.poleBottom.translate(0,0)),i.mergeFigure(D.fig.faceStopperTop.translate(0,0)),i.mergeFigure(L.fig.faceTop.rotate(0,0,Math.PI/2)),o.fig={faceSide:n,faceFace:a,faceTop:i};const w=o.partName;o.vol={inherits:[{outName:`inpax_${w}_poleStatic`,subdesign:"pax_pole_static",subgeom:M,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${w}_rake`,subdesign:"pax_rake_stopper",subgeom:D,rotate:[0,0,0],translate:[0,0,h]},{outName:`inpax_${w}_swing`,subdesign:"pax_swing",subgeom:L,rotate:[Math.PI/2,0,0],translate:[0,0,_]}],extrudes:[],volumes:[{outName:`pax_${w}`,boolMethod:it.eUnion,inList:[`inpax_${w}_poleStatic`,`inpax_${w}_rake`,`inpax_${w}_swing`]}]};const b=g.getDesignParamList(),T={partName:g.getPartName(),dparam:b,orientation:[0,0,0],position:[0,0,0]},E={partName:l.getPartName(),dparam:l.getDesignParamList(),orientation:[0,0,0],position:[0,0,h]},y={partName:f.getPartName(),dparam:f.getDesignParamList(),orientation:[0,0,0],position:[0,0,_]};o.sub={pole_static_1:T,rake_1:E,swing_1:y},o.logstr+=`heliostat-2-overview drawn successfully!
|
|
69
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var Ue={pTitle:"Heliostat-2 overview",pDescription:"The heliostat-2 inclination mechanism",pDef:pt,pGeom:Ge},de={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 pe(s,t,u=""){const o=ht(de.partName+u);let n,a,i;const c=B(),d=B(),r=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
70
|
-
`;try{const h=t.D1/2,_=t.D2/2,g=t.D3/2,l=t.D4/2,f=t.D5/2,S=t.L2/2;if(_<h)throw`err089: D2 ${t.D2} too small compare to D1 ${t.D1}`;if(l>h-t.E2)throw`err189: D4 ${t.D4} too large compare to D1 ${t.D1} and E2 ${t.E2}`;o.logstr+=`base-height: ${H(t.H1)} mm
|
|
71
|
-
`,o.logstr+=`base-external-diameter: ${H(t.D2)} mm
|
|
72
|
-
`;const P=t.D1*Math.PI/t.N2-t.L2;if(o.logstr+=`inter-hollow: ${H(P)} mm
|
|
73
|
-
`,n=function(E){return p(E*_,0).addSegStrokeA(E*_,t.E3).addSegStrokeA(E*h,t.E3).addSegStrokeA(E*h,t.H1).addSegStrokeA(E*(h-t.E2),t.H1).addSegStrokeA(E*(h-t.E2),t.E3).addSegStrokeA(E*l,t.E3).addSegStrokeA(E*l,0).closeSegStroke()},a=function(E){return p(E*_,0).addSegStrokeA(E*_,t.E3).addSegStrokeA(E*h,t.E3).addSegStrokeA(E*h,t.H1).addSegStrokeA(E*g,t.H1).addSegStrokeA(E*g,t.H1-t.E1).addSegStrokeA(E*(h-t.E2),t.H1-t.E1).addSegStrokeA(E*(h-t.E2),t.E3).addSegStrokeA(E*l,t.E3).addSegStrokeA(E*l,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 V=2*Math.asin(S/(h-t.E2));if(t.N2*V>2*Math.PI)throw`err132: N2 ${t.N2} too large compare to L2 ${t.L2}, D1 ${t.D1}, E2 ${t.E2}`;const v=t.E3+t.H2+S;if(i=function(E){return p(E*S,v).addSegStrokeA(E*S,v+t.H3-t.L2).addPointA(-E*S,v+t.H3-t.L2).addSegArc(S,!1,!0).addSegStrokeA(-E*S,v).closeSegArc(S,!1,!0)},c.addMain(n(1)),c.addSecond(a(1)),c.addSecond(a(-1)),c.addSecond(i(1)),g+t.L1+f>h-t.E2)throw`err127: D3 ${t.D3} too large compare to D1 ${t.D1}, E2 ${t.E2}, L1 ${t.L1}, R5 ${t.D5}`;if(f>t.L1)throw`err130: D5 ${t.D5} too large compare to L1 ${t.L1}`;const x=2*Math.asin(f/(_+t.L1));if(t.N1*x>2*Math.PI)throw`err134: N1 ${t.N1} too large compare to D5 ${t.D5}, L1 ${t.L1}, D2 ${t.D2}`;d.addMain($(0,0,h)),d.addMain($(0,0,g));const R=g+t.L1,M=2*Math.PI/t.N1;for(let E=0;E<t.N1;E++){const y=R*Math.cos(E*M),Y=R*Math.sin(E*M);d.addMain($(y,Y,f))}d.addSecond($(0,0,h-t.E1)),d.addSecond($(0,0,_)),d.addSecond($(0,0,l)),r.addMain(i(1)),r.addSecond(a(1)),r.addSecond(a(-1)),o.fig={faceCut:c,faceTop:d,faceHollow:r};const D=o.partName,L=2*Math.PI/t.N2,w=[...Array(t.N2).keys()],b=w.map(E=>({outName:`subpax_${D}_hollow_${E}`,face:`${D}_faceHollow`,extrudeMethod:W.eLinearOrtho,length:_+t.E2,rotate:[Math.PI/2,0,E*L],translate:[0,0,0]})),T=w.map(E=>`subpax_${D}_hollow_${E}`);o.vol={extrudes:[{outName:`subpax_${D}_cut`,face:`${D}_faceCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[Math.PI/2,0,0]},{outName:`subpax_${D}_top`,face:`${D}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,t.H1-t.E1]},...b],volumes:[{outName:`ipax_${D}_hollows`,boolMethod:it.eUnion,inList:[...T]},{outName:`ipax_${D}_cylinder`,boolMethod:it.eSubstraction,inList:[`subpax_${D}_cut`,`ipax_${D}_hollows`]},{outName:`pax_${D}`,boolMethod:it.eUnion,inList:[`ipax_${D}_cylinder`,`subpax_${D}_top`]}]},o.sub={},o.logstr+=`heliostat-base drawn successfully!
|
|
74
|
-
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var We={pTitle:"Heliostat base",pDescription:"The base for the static-pole of the heliostat",pDef:de,pGeom:pe},le={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 qe(s,t,u=""){const o=ht(le.partName+u);let n;const a=B(),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
75
|
-
`;try{const c=t.D1/2,d=t.D2/2,r=t.D3/2;o.logstr+=`vaxis-height: ${H(t.H1)} mm
|
|
76
|
-
`;const h=p(c,0).addSegStrokeA(c,t.H1).addSegStrokeA(c-t.E1,t.H1).addSegStrokeA(c-t.E1,0).closeSegStroke();a.addMain(h),n=function(f){return p(f*c,0).addSegStrokeA(f*c,t.H1).addSegStrokeA(f*d,t.H1).addSegStrokeA(f*d,t.H1-t.E2).addSegStrokeA(f*(c-t.E1),t.H1-t.E2).addSegStrokeA(f*(c-t.E1),t.E2).addSegStrokeA(f*d,t.E2).addSegStrokeA(f*d,0).closeSegStroke()},a.addSecond(n(1)),a.addSecond(n(-1)),i.addMain($(0,0,c)),i.addMain($(0,0,d));const _=d+t.L1,g=2*Math.PI/t.N1;for(let f=0;f<t.N1;f++){const S=_*Math.cos(f*g),P=_*Math.sin(f*g);i.addMain($(S,P,r))}i.addSecond($(0,0,c-t.E1)),o.fig={faceCut:a,faceBottom:i};const l=o.partName;o.vol={extrudes:[{outName:`subpax_${l}_pole`,face:`${l}_faceCut`,extrudeMethod:W.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${l}_bottom`,face:`${l}_faceBottom`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${l}_top`,face:`${l}_faceBottom`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,t.H1-t.E2]}],volumes:[{outName:`pax_${l}`,boolMethod:it.eUnion,inList:[`subpax_${l}_pole`,`subpax_${l}_bottom`,`subpax_${l}_top`]}]},o.sub={},o.logstr+=`V-Axis drawn successfully!
|
|
77
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var Ye={pTitle:"Heliostat V-Axis",pDescription:"The vertical axis inside the pole of an heliostat",pDef:le,pGeom:qe},ce={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 Xe(s,t,u=""){const o=ht(ce.partName+u),n=B(),a=B(),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
78
|
-
`;try{const c=t.D1/2,d=t.D2/2,r=t.D3/2,h=t.H1+t.H2;if(t.L1<d)throw`err203: L1 ${t.L1} too small compare to D2 ${t.D2}`;if(c+t.L1+d>r-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(d,c+t.L1)>2*Math.PI/t.N2)throw`err205: D2 ${t.D2} too large compare to N2 ${t.N2}`;o.logstr+=`ring-height: ${H(h)} mm
|
|
79
|
-
`;const _=r-t.L2,g=_-t.L3,l=2*Math.PI/(2*t.N1),f=p(_,0);for(let D=0;D<t.N1;D++){const L=2*D+1,w=2*D+2,b=g*Math.cos(L*l),T=g*Math.sin(L*l),E=_*Math.cos(w*l),y=_*Math.sin(w*l);f.addSegStrokeA(b,T).addSegStrokeA(E,y)}n.addMain($(0,0,r)),n.addMain($(0,0,c));const S=c+t.L1,P=2*Math.PI/t.N2;for(let D=0;D<t.N2;D++){const L=S*Math.cos(D*P),w=S*Math.sin(D*P);n.addMain($(L,w,d)),a.addSecond($(L,w,d))}n.addSecond(f),a.addMain($(0,0,r)),a.addMain(f),a.addSecond($(0,0,c));const V=p(c,0).addSegStrokeA(-c,0).addSegStrokeA(-c,-t.H1).addSegStrokeA(c,-t.H1).closeSegStroke(),v=function(D){return p(D*(c+t.L1)+d,0).addSegStrokeR(-2*d,0).addSegStrokeR(0,-t.H1).addSegStrokeR(2*d,0).closeSegStroke()},x=function(D){return p(D*(r-t.L2),-t.H1).addSegStrokeR(-D*t.L3,0).addSegStrokeR(0,-t.H2).addSegStrokeR(D*t.L3,0).closeSegStroke()},R=function(D){return p(D*r,0).addSegStrokeR(-D*(r-c),0).addSegStrokeR(0,-t.H1).addSegStrokeR(D*(r-t.L2-t.L3-c),0).addSegStrokeR(0,-t.H2).addSegStrokeR(D*(t.L2+t.L3),0).closeSegStroke()};i.addSecond(V),i.addSecond(v(1)),i.addSecond(v(-1)),i.addSecond(x(1)),i.addSecond(x(-1)),i.addMain(R(1)),i.addSecond(R(-1)),o.fig={faceRingBase:n,faceRingTeeth:a,faceSection:i};const M=o.partName;o.vol={extrudes:[{outName:`subpax_${M}_base`,face:`${M}_faceRingBase`,extrudeMethod:W.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_teeth`,face:`${M}_faceRingTeeth`,extrudeMethod:W.eLinearOrtho,length:h,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${M}`,boolMethod:it.eUnion,inList:[`subpax_${M}_base`,`subpax_${M}_teeth`]}]},o.sub={},o.logstr+=`ring drawn successfully!
|
|
80
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var je={pTitle:"Heliostat ring",pDescription:"The gear ring for adjusting the azimuth of the heliostat",pDef:ce,pGeom:Xe},re={partName:"ring_guidance",params:[e("D1","mm",700,100,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,100,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 Ze(s,t,u=""){const o=ht(re.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
81
|
-
`;try{const i=t.D1/2,c=t.D3/2,d=t.D4/2,r=t.D6/2,h=t.D7/2,_=2*Math.PI/t.N2;if(h>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*h)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 ${H(t.D1+2*d)} mm
|
|
82
|
-
`;const[g,l,f]=te(t);o.logstr+=g,n.addMain(l),n.addMain($(0,0,r));for(let x=0;x<t.N2;x++)n.addMain($(r+t.L2,0,h).rotate(0,0,x*_));for(let x=0;x<t.N1;x++)n.addMain($(i,0,c).rotate(0,0,x*f));const S=function(x,R,M,D){return p(x,R).addSegStrokeR(M,0).addSegStrokeR(0,D).addSegStrokeR(-M,0).closeSegStroke()},P=i-r+d;a.addMain(S(r,0,P,t.T1)),a.addMain(S(-r-P,0,P,t.T1)),a.addSecond(S(i-c,0,2*c,t.T1)),a.addSecond(S(-i-c,0,2*c,t.T1));const V=r+t.L2;a.addSecond(S(V-h,0,2*h,t.T1)),a.addSecond(S(-V-h,0,2*h,t.T1)),o.fig={faceTop:n,faceSection:a};const v=o.partName;o.vol={extrudes:[{outName:`subpax_${v}_top`,face:`${v}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:it.eIdentity,inList:[`subpax_${v}_top`]}]},o.sub={},o.logstr+=`ring_guidance drawn successfully!
|
|
83
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var Ke={pTitle:"Ring-guidance",pDescription:"The guidance of the gear-ring for the heliostat azimuth",pDef:re,pGeom:Ze},ge={partName:"vaxis_guidance",params:[e("D1","mm",700,100,2500,1),e("N1","legs",6,1,24,1),e("D2","mm",600,100,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),Dt("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),Dt("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 Qe(s,t,u=""){const o=ht(ge.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
84
|
-
`;try{const i=t.D1/2,c=t.D2/2,d=t.D3/2,r=t.D4/2,h=t.D6/2;if(c<h)throw`err466: D6 ${t.D6} is too large compare to D2 ${t.D2}`;o.logstr+=`vaxis_guidance: Dmax ${H(t.D1+2*r)} mm
|
|
85
|
-
`;const[_,g,l]=te(t);o.logstr+=_,n.addMain(g);for(let v=0;v<t.N1;v++)n.addMain($(i,0,d).rotate(0,0,v*l));const[f,S]=Ie(t);o.logstr+=f,n.addMain(S),n.addSecond($(0,0,t.Dvaxis/2));const P=i-h+r;a.addMain(F(h,0,P,t.T1)),a.addMain(F(-h-P,0,P,t.T1)),a.addSecond(F(i-d,0,2*d,t.T1)),a.addSecond(F(-i-d,0,2*d,t.T1)),o.fig={faceTop:n,faceSection:a};const V=o.partName;o.vol={extrudes:[{outName:`subpax_${V}_top`,face:`${V}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${V}`,boolMethod:it.eIdentity,inList:[`subpax_${V}_top`]}]},o.sub={},o.logstr+=`vaxis_guidance drawn successfully!
|
|
86
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var to={pTitle:"Vaxis-guidance",pDescription:"The guidance of the V-Axis for the heliostat azimuth",pDef:ge,pGeom:Qe},ae={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),Dt("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 eo(s,t,u=""){const o=ht(ae.partName+u),n=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
87
|
-
`;try{const i=t.D5/2,c=t.D8/2,d=t.SD1/2,r=i+t.E5,h=c-t.E8,_=2*Math.asin(t.L5/(2*r)),g=Math.PI/12+wt(t.SA1),l=Math.PI/2+_-g,f=Math.PI-g,S=Math.PI/2-Math.PI/6+g;if(r+d+t.SE1>h)throw`err411: D8 ${t.D8} is too small compare to D5 ${t.D5}, E5 ${t.D5}, E8 ${t.E8}`;if(2*Math.PI/3-2*_<t.R9/h)throw`err412: L5 ${t.L5} is too large compare to R9 ${t.R9}`;o.logstr+=`haxis_guidance: Dinner ${H(2*r)} mm
|
|
88
|
-
`,n.addSecond($(0,0,i)),n.addSecond($(0,0,c));const[P,V]=Ct(t,!1),[,v]=Ct(t,!0);o.logstr+=P;const x=Math.PI/2-_,R=-Math.PI/6+_,M=lt(0,0),D=M.translatePolar(x,r+t.SE1+d),L=D.translatePolar(x-Math.PI/2,d),w=L.translatePolar(x+Math.PI,d+t.SE1),b=L.translatePolar(x+Math.PI,d),T=w.rotate(L,l),E=M.translatePolar(R,r+t.SE1+d),y=E.translatePolar(R+Math.PI/2,d),Y=y.translatePolar(R+Math.PI,d+t.SE1),X=y.translatePolar(R+Math.PI,d),k=X.rotate(y,-l),O=p(0,r).addSegStrokeA(w.cx,w.cy).addPointA(T.cx,T.cy).addSegArc(d+t.SE1,!1,!0);O.addPartial(V.rotate(0,0,f).translate(T.cx,T.cy)),O.addPointA(b.cx,b.cy).addPointA(D.cx,D.cy).addSegArc2().addSegStrokeAP(x,h).addCornerRounded(t.R9).addPointAP(R,h).addSegArc(h,!1,!1).addCornerRounded(t.R9).addSegStrokeA(E.cx,E.cy).addPointA(X.cx,X.cy).addPointA(k.cx,k.cy).addSegArc2(),O.addPartial(v.rotate(0,0,S).translate(k.cx,k.cy)),O.addPointA(Y.cx,Y.cy).addSegArc(d+t.SE1,!1,!0).addSegStrokeAP(-Math.PI/6,r).addSegStrokeAP(-Math.PI/6,c).addPointAP(Math.PI/2,c).addSegArc(c,!1,!0).closeSegStroke(),n.addMain(O);const z=c*Math.sin(Math.PI/6);a.addMain(F(0,-z,t.L4,c+z)),a.addSecond(F(0,-c,t.L4,2*c)),a.addSecond(F(0,-i,t.L4,2*i)),o.fig={faceProfile:n,faceSide:a};const K=o.partName;o.vol={extrudes:[{outName:`subpax_${K}_profile`,face:`${K}_faceProfile`,extrudeMethod:W.eLinearOrtho,length:t.L4,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${K}`,boolMethod:it.eIdentity,inList:[`subpax_${K}_profile`]}]},o.sub={},o.logstr+=`haxis_guidance drawn successfully!
|
|
89
|
-
`,o.calcErr=!1}catch(i){o.logstr+=i,console.log(i)}return o}var oo={pTitle:"Haxis-guidance",pDescription:"The guidance of the H-Axis for the heliostat inclination",pDef:ae,pGeom:eo},he={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 so(s,t,u=""){const o=ht(he.partName+u);let n,a;const i=B(),c=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
90
|
-
`;try{const r=t.D2/2,h=t.L3/(t.N3+1),_=t.L4/(t.N4+1);o.logstr+=`rod-length: ${H(t.L1)} mm
|
|
91
|
-
`;const g=(t.L1-t.L3)/(t.N1-1);o.logstr+=`space-length: ${H(g)} mm
|
|
92
|
-
`,n=function(D){const L=[],w=p(t.L4/2,D).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,D+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,D+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,D).addCornerRounded(t.R3).closeSegStroke();L.push(w);for(let b=1;b<t.N3+1;b++)L.push($(t.L4/2-t.L7,D+b*h,r)),L.push($(-t.L4/2+t.L7,D+b*h,r));for(let b=1;b<t.N4+1;b++)L.push($(-t.L4/2+b*_,D+t.L7,r)),L.push($(-t.L4/2+b*_,D+t.L3-t.L7,r));return L},a=function(D,L){return p(t.L2/2,D).addSegStrokeA(t.L2/2,D+L).addSegStrokeA(-t.L2/2,D+L).addSegStrokeA(-t.L2/2,D).closeSegStroke()};const l=t.L2/2,f=t.L4/2,S=(t.L2-2*t.E1)/2,P=t.H1-t.E1,V=p(l,0).addSegStrokeA(l,t.H1).addSegStrokeA(-l,t.H1).addSegStrokeA(-l,0).closeSegStroke(),v=p(S,t.E1).addSegStrokeA(S,P).addSegStrokeA(-S,P).addSegStrokeA(-S,t.E1).closeSegStroke(),x=p(f,t.H1).addSegStrokeA(f,t.H1+t.E2).addSegStrokeA(-f,t.H1+t.E2).addSegStrokeA(-f,t.H1).closeSegStroke();i.addMain(V),i.addMain(v),i.addSecond(x),n(0).forEach(D=>c.addMain(D)),c.addSecond(a(-t.L3/2,2*t.L3));const R=(t.L1-t.L3)/(t.N1-1);for(let D=0;D<t.N1;D++)n(D*R).forEach(L=>d.addMain(L));d.addSecond(a(0,t.L1)),o.fig={faceCut:i,facePlate:c,faceTop:d};const M=o.partName;o.vol={extrudes:[{outName:`subpax_${M}_rod`,face:`${M}_faceCut`,extrudeMethod:W.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${M}_plates`,face:`${M}_faceTop`,extrudeMethod:W.eLinearOrtho,length:t.E2,rotate:[Math.PI/2,0,0],translate:[0,t.E2+t.H1,0]}],volumes:[{outName:`pax_${M}`,boolMethod:it.eUnion,inList:[`subpax_${M}_rod`,`subpax_${M}_plates`]}]},o.sub={},o.logstr+=`heliostat-rod drawn successfully!
|
|
93
|
-
`,o.calcErr=!1}catch(r){o.logstr+=r,console.log(r)}return o}var io={pTitle:"Heliostat rod",pDescription:"The rod of an heliostat-surface",pDef:he,pGeom:so},ue={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 no(s,t,u=""){const o=ht(ue.partName+u);let n,a;const i=B(),c=B(),d=B(),r=B(),h=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
94
|
-
`;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 _=t.R1*(1-1/Math.sqrt(2)),g=t.R3*(1-1/Math.sqrt(2)),l=t.L2/2-_-(t.L4/2-g),f=t.L1/2-_-(t.L3/2-g),S=Math.sqrt(l**2+f**2),P=t.H1-t.H2-t.H3,V=Math.sqrt(S**2+P**2),v=Math.atan2(P,S),x=Math.atan2(f,l);o.logstr+=`rod-slope: length: ${H(V)} mm, angle: ${H(ct(v))} degree
|
|
95
|
-
`,o.logstr+=`rod-xy-angle: ${H(ct(x))} degree
|
|
96
|
-
`;const R=t.D3/Math.cos(Math.PI/2-v);o.logstr+=`rod-footprint-length: ${H(R)} mm
|
|
97
|
-
`;const M=Math.sqrt((R/2)**2+(t.D3/2)**2),D=Math.atan2(t.D3,R);if(n=function(m,A,I){return p(m,A).addPointRP(I+Math.PI-D,M).addSeg2Arcs(I+Math.PI/2,I).addPointRP(I+Math.PI+D,M).addSeg2Arcs(I+Math.PI,I+Math.PI/2).addPointRP(I-D,M).addSeg2Arcs(I+3*Math.PI/2,I+Math.PI).addPointRP(I+D,M).addSeg2Arcs(I,I-Math.PI/2)},a=function(m,A,I){const Q=m+M*Math.cos(I+Math.PI-D),Z=A+M*Math.sin(I+Math.PI-D);return p(Q,Z).addSegStrokeRP(I+Math.PI,S).addSegStrokeRP(I-Math.PI/2,t.D3).addSegStrokeRP(I,S).closeSegStroke()},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 L=p(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 w=p(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 b=p(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);i.addMain(L),i.addMain(w),i.addSecond(b);const T=t.L1/(t.N1+1),E=t.L2/(t.N2+1),y=t.L3/(t.N3+1),Y=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(y<t.D2/2+t.L7)throw`err661: D2 ${t.D2} or L7 ${t.L7} too large compare to L3 ${t.l3}`;if(Y<t.D2/2+t.L7)throw`err664: D2 ${t.D2} or L7 ${t.L7} too large compare to L4 ${t.l4}`;const X=[];for(let m=1;m<t.N1+1;m++)X.push($(t.L2/2-t.L6,-t.L1/2+m*T,t.D1/2)),X.push($(-t.L2/2+t.L6,-t.L1/2+m*T,t.D1/2));for(let m=1;m<t.N2+1;m++)X.push($(-t.L2/2+m*E,t.L1/2-t.L6,t.D1/2)),X.push($(-t.L2/2+m*E,-t.L1/2+t.L6,t.D1/2));const k=[];for(let m=1;m<t.N3+1;m++)k.push($(t.L4/2-t.L7,-t.L3/2+m*y,t.D2/2)),k.push($(-t.L4/2+t.L7,-t.L3/2+m*y,t.D2/2));for(let m=1;m<t.N4+1;m++)k.push($(-t.L4/2+m*Y,t.L3/2-t.L7,t.D2/2)),k.push($(-t.L4/2+m*Y,-t.L3/2+t.L7,t.D2/2));X.forEach(m=>{i.addMain(m)}),k.forEach(m=>{i.addSecond(m)});const O=[];O.push(n(t.L2/2-_,t.L1/2-_,x)),O.push(n(t.L4/2-g,t.L3/2-g,x)),O.push(n(-t.L2/2+_,t.L1/2-_,Math.PI-x)),O.push(n(-t.L4/2+g,t.L3/2-g,Math.PI-x)),O.push(n(-t.L2/2+_,-t.L1/2+_,Math.PI+x)),O.push(n(-t.L4/2+g,-t.L3/2+g,Math.PI+x)),O.push(n(t.L2/2-_,-t.L1/2+_,-x)),O.push(n(t.L4/2-g,-t.L3/2+g,-x));const z=[];if(z.push(a(t.L2/2-_,t.L1/2-_,x)),z.push(a(-t.L2/2+_,t.L1/2-_,Math.PI-x)),z.push(a(-t.L2/2+_,-t.L1/2+_,Math.PI+x)),z.push(a(t.L2/2-_,-t.L1/2+_,-x)),O.forEach(m=>{i.addSecond(m)}),z.forEach(m=>{i.addSecond(m)}),c.addMain(b),k.forEach(m=>{c.addMain(m)}),c.addSecond(L),c.addSecond(w),X.forEach(m=>{c.addSecond(m)}),O.forEach(m=>{c.addSecond(m)}),z.forEach(m=>{c.addSecond(m)}),t.D4>=t.D3)throw`err218: D4 ${t.D4} larger than D3 ${t.D3}`;d.addMain($(0,0,t.D3/2)),d.addSecond($(0,0,t.D4/2)),r.addMain($(0,0,t.D4/2)),r.addSecond($(0,0,t.D3/2));const K=t.D3*Math.cos(v),et=K/Math.tan(v),C=g+(R/2+et)*Math.cos(x),ot=g+(R/2+et)*Math.sin(x),j=V+2*(R+et+K),G=j+t.L3+t.L4+K,U=p(G,G).addSegStrokeA(-G,G).addSegStrokeA(-G,-G).addSegStrokeA(G,-G).closeSegStroke();h.addMain(U),o.fig={faceFrame:i,facePlate:c,faceRod:d,faceRodHollow:r,faceCutRod:h};const N=o.partName;o.vol={extrudes:[{outName:`subpax_${N}_frame`,face:`${N}_faceFrame`,extrudeMethod:W.eLinearOrtho,length:t.H2,rotate:[0,0,0],translate:[0,0,t.H1-t.H2]},{outName:`subpax_${N}_plate`,face:`${N}_facePlate`,extrudeMethod:W.eLinearOrtho,length:t.H3,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${N}_rod1`,face:`${N}_faceRod`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,x],translate:[t.L4/2-C,t.L3/2-ot,t.H3-K]},{outName:`subpax_${N}_rod2`,face:`${N}_faceRod`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,Math.PI-x],translate:[-t.L4/2+C,t.L3/2-ot,t.H3-K]},{outName:`subpax_${N}_rod3`,face:`${N}_faceRod`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,Math.PI+x],translate:[-t.L4/2+C,-t.L3/2+ot,t.H3-K]},{outName:`subpax_${N}_rod4`,face:`${N}_faceRod`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,-x],translate:[t.L4/2-C,-t.L3/2+ot,t.H3-K]},{outName:`subpax_${N}_rodH1`,face:`${N}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,x],translate:[t.L4/2-C,t.L3/2-ot,t.H3-K]},{outName:`subpax_${N}_rodH2`,face:`${N}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,Math.PI-x],translate:[-t.L4/2+C,t.L3/2-ot,t.H3-K]},{outName:`subpax_${N}_rodH3`,face:`${N}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,Math.PI+x],translate:[-t.L4/2+C,-t.L3/2+ot,t.H3-K]},{outName:`subpax_${N}_rodH4`,face:`${N}_faceRodHollow`,extrudeMethod:W.eLinearOrtho,length:j,rotate:[0,Math.PI/2-v,-x],translate:[t.L4/2-C,-t.L3/2+ot,t.H3-K]},{outName:`subpax_${N}_cut1`,face:`${N}_faceCutRod`,extrudeMethod:W.eLinearOrtho,length:G,rotate:[0,0,0],translate:[0,0,-G]},{outName:`subpax_${N}_cut2`,face:`${N}_faceCutRod`,extrudeMethod:W.eLinearOrtho,length:G,rotate:[0,0,0],translate:[0,0,t.H1]}],volumes:[{outName:`ipax_${N}_rawRod`,boolMethod:it.eUnion,inList:[`subpax_${N}_rod1`,`subpax_${N}_rod2`,`subpax_${N}_rod3`,`subpax_${N}_rod4`]},{outName:`ipax_${N}_rodHollow`,boolMethod:it.eUnion,inList:[`subpax_${N}_rodH1`,`subpax_${N}_rodH2`,`subpax_${N}_rodH3`,`subpax_${N}_rodH4`]},{outName:`ipax_${N}_halfRods`,boolMethod:it.eSubstraction,inList:[`ipax_${N}_rawRod`,`subpax_${N}_cut1`]},{outName:`ipax_${N}_rods`,boolMethod:it.eSubstraction,inList:[`ipax_${N}_halfRods`,`subpax_${N}_cut2`]},{outName:`ipax_${N}_plus`,boolMethod:it.eUnion,inList:[`subpax_${N}_frame`,`subpax_${N}_plate`,`ipax_${N}_rods`]},{outName:`pax_${N}`,boolMethod:it.eSubstraction,inList:[`ipax_${N}_plus`,`ipax_${N}_rodHollow`]}]},o.sub={},o.logstr+=`trapeze drawn successfully!
|
|
98
|
-
`,o.calcErr=!1}catch(_){o.logstr+=_,console.log(_)}return o}var lo={pTitle:"Heliostat trapeze",pDescription:"The support of one solar panel. Made out of aluminium for lightness and cooling",pDef:ue,pGeom:no},_e={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"),Dt("main_direction",["horizontal","vertical"]),ft("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),ft("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),Dt("EH_shape",["sinusoid","triangle","sawUp","sawDown"]),q("vertical spacing"),e("EV","mm",10,0,1e3,1),ft("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),Dt("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 co(s,t,u=""){const o=ht(_e.partName+u);let n;const a=B(),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
99
|
-
`;try{const c=t.LH*t.LV/1e6,d=t.solar_power*c*t.power_efficiency/100;o.logstr+=`panel surface: ${H(c)} m2
|
|
100
|
-
`,o.logstr+=`panel power: ${H(d)} W
|
|
101
|
-
`;const r=t.nx*t.ny;o.logstr+=`max panel number: ${r}
|
|
102
|
-
`,o.logstr+=`max panel surface: ${H(r*c)} m2
|
|
103
|
-
`,o.logstr+=`max panel power: ${H(r*d)} W
|
|
104
|
-
`;const h=t.main_direction===1?t.ny:t.nx,_=t.main_direction===1?t.nx:t.ny,g=t.main_direction===1?t.EV:t.EH,l=t.main_direction===1?t.EV_gradient:t.EH_gradient,f=t.main_direction===1?t.EV_sup:t.EH_sup,S=t.main_direction===1?t.EV_cycle:t.EH_cycle,P=t.main_direction===1?t.EV_start:t.EH_start,V=t.main_direction===1?t.EV_shape:t.EH_shape,v=t.main_direction===0?t.EV:t.EH,x=t.main_direction===0?t.EV_gradient:t.EH_gradient,R=t.main_direction===0?t.EV_sup:t.EH_sup,M=t.main_direction===0?t.EV_cycle:t.EH_cycle,D=t.main_direction===0?t.EV_start:t.EH_start,L=t.main_direction===0?t.EV_shape:t.EH_shape,w=Math.max(_,t.first_row,t.second_row),b=[];for(let U=0;U<h;U++){const N=(U+1)%2,m=t.crenel?_-N:_;b.push(m)}b[0]=t.first_row,b[b.length-1]=t.first_row,h>2&&(b[1]=t.second_row,b[b.length-2]=t.second_row);let T=0;b.forEach(U=>{T+=U}),o.logstr+=`actual panel number: ${T} (${H(100*T/r)} %)
|
|
105
|
-
`,o.logstr+=`actual panel surface: ${H(T*c)} m2
|
|
106
|
-
`,o.logstr+=`actual panel power: ${H(T*d)} W
|
|
107
|
-
`;const E=[];for(let U=0;U<h-1;U++){let N=g;if(l===1){const m=h>2?h-2:1,A=(P+U*S/m)%1;switch(V){case 0:N+=f*(1-Math.cos(A*2*Math.PI))/2;break;case 1:N+=f*(1-2*Math.abs(A-.5));break;case 2:N+=f*A;break;case 3:N+=f*(1-A);break;default:N+=f}}E.push(N)}let y=0;const Y=[];Y.push(0),E.forEach(U=>{y+=U,Y.push(y)});const X=[];for(let U=0;U<w-1;U++){let N=v;if(x===1){const m=w>2?w-2:1,A=(D+U*M/m)%1;switch(L){case 0:N+=R*(1-Math.cos(A*2*Math.PI))/2;break;case 1:N+=R*(1-2*Math.abs(A-.5));break;case 2:N+=R*A;break;case 3:N+=R*(1-A);break;default:N+=R}}X.push(N)}let k=0;const O=[];O.push(0),X.forEach(U=>{k+=U,O.push(k)});let z=0,K=0;t.main_direction===0?(z=h*t.LH+y,K=w*t.LV+k):(z=w*t.LH+k,K=h*t.LV+y);const et=z*K/10**6;o.logstr+=`global horizontal width: ${H(z/1e3)} m
|
|
108
|
-
`,o.logstr+=`global vertical height: ${H(K/1e3)} m
|
|
109
|
-
`,o.logstr+=`global area: ${H(et)} m2
|
|
110
|
-
`,o.logstr+=`area efficiency: ${H(100*T*c/et)} %
|
|
111
|
-
`;const C=-z/2,ot=-K/2;n=function(U,N){return p(U,N).addSegStrokeA(U+t.LH,N).addSegStrokeA(U+t.LH,N+t.LV).addSegStrokeA(U,N+t.LV).closeSegStroke()};const j=[];b.forEach((U,N)=>{const m=(w-U)%2,A=Math.floor((w-U)/2);for(let I=0;I<U;I++){let Q=0,Z=0;t.main_direction===0?(Q=C+N*t.LH+Y[N],Z=ot+(A+I)*t.LV+O[A+I],m===1&&(Z+=(t.LV+O[A+I+1]-O[A+I])/2)):(Z=ot+N*t.LV+Y[N],Q=C+(A+I)*t.LH+O[A+I],m===1&&(Q+=(t.LH+O[A+I+1]-O[A+I])/2)),j.push([Q,Z])}});for(const U of j)a.addMain(n(U[0],U[1]));i.addMain(n(0,0)),o.fig={faceSurface:a,faceOnePanel:i};const G=o.partName;o.vol={extrudes:j.map((U,N)=>({outName:`subpax_${G}_panel_${N}`,face:`${G}_faceOnePanel`,extrudeMethod:W.eLinearOrtho,length:t.LZ,rotate:[0,0,0],translate:[U[0],U[1],0]})),volumes:[{outName:`pax_${G}`,boolMethod:it.eUnion,inList:j.map((U,N)=>`subpax_${G}_panel_${N}`)}]},o.sub={},o.logstr+=`panel-surface drawn successfully!
|
|
112
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var ro={pTitle:"Heliostat panel-surface",pDescription:"The surface collecting the solar power",pDef:_e,pGeom:co};const fe={"gear/gear_wheel_wheel":mt,"gear/simplified_gear_wheel":Ve,"heliostat/heliostat":Je,"heliostat/heliostat_2":Ue,"heliostat/base":We,"heliostat/pole_static":Et,"heliostat/vaxis":Ye,"heliostat/ring":je,"heliostat/vaxis_holder":bt,"heliostat/ring_guidance":Ke,"heliostat/vaxis_guidance":to,"heliostat/rake":At,"heliostat/rake_stopper":Ut,"heliostat/haxis_guidance":oo,"heliostat/spider":zt,"heliostat/swing":Rt,"heliostat/rod":io,"heliostat/trapeze":lo,"heliostat/surface":ro};function go(s){const t=/^.*\//g;return s.replace(t,"")}function ao(s){const t={};for(const u of Object.keys(s)){const o=go(u);t[o]=`/${u}`}return t}function ho(s){const t=[];for(const u of Object.keys(s))t.push(u);return t}const fo=ao(fe),So=ho(fe);export{fe as a,fo as b,So as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var s;const e=((s=globalThis.__sveltekit_1ck9vi)==null?void 0:s.base)??"";var a;const t=((a=globalThis.__sveltekit_1ck9vi)==null?void 0:a.assets)??e;export{t as a,e as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as t}from"../chunks/entry.GPxMRXYu.js";export{t as start};
|