designix-uis 1.0.21 → 1.0.23
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/README.md +8 -5
- package/dist/designix-uis.js +7 -172
- package/dist/public/_app/immutable/chunks/BAJXIW7S.js +1 -0
- package/dist/public/_app/immutable/chunks/BV-6sV8s.js +1 -0
- package/dist/public/_app/immutable/chunks/BZKKtHJm.js +1 -0
- package/dist/public/_app/immutable/chunks/CSTDUB7c.js +1 -0
- package/dist/public/_app/immutable/chunks/CvbaRLDH.js +3 -0
- package/dist/public/_app/immutable/chunks/NZTpNUN0.js +1 -0
- package/dist/public/_app/immutable/chunks/{B8G2Sjpx.js → Ro4-rfrB.js} +82 -82
- package/dist/public/_app/immutable/chunks/em6s37JS.js +1 -0
- package/dist/public/_app/immutable/chunks/gQGuvN5u.js +216 -0
- package/dist/public/_app/immutable/chunks/p-bDl7sE.js +1 -0
- package/dist/public/_app/immutable/chunks/vFk_Fhzd.js +1 -0
- package/dist/public/_app/immutable/entry/app.BWJ0nM3W.js +2 -0
- package/dist/public/_app/immutable/entry/start.hgv5ZWWK.js +1 -0
- package/dist/public/_app/immutable/nodes/0.Dk1NZOJ4.js +2 -0
- package/dist/public/_app/immutable/nodes/1.BXpOc_LD.js +1 -0
- package/dist/public/_app/immutable/nodes/2.DbkECoJr.js +1 -0
- package/dist/public/_app/immutable/nodes/3.BVAP6CmT.js +10 -0
- package/dist/public/_app/version.json +1 -1
- package/dist/public/gear/gear_bar.html +20 -20
- package/dist/public/gear/gear_epicycloid.html +20 -20
- package/dist/public/gear/gear_ring.html +20 -20
- package/dist/public/gear/gear_wheel.html +20 -20
- package/dist/public/heliostat/base.html +20 -20
- package/dist/public/heliostat/haxis_guidance.html +20 -20
- package/dist/public/heliostat/heliostat.html +20 -20
- package/dist/public/heliostat/heliostat_2.html +20 -20
- package/dist/public/heliostat/pole_static.html +20 -20
- package/dist/public/heliostat/rake.html +20 -20
- package/dist/public/heliostat/rake_stopper.html +20 -20
- package/dist/public/heliostat/ring.html +20 -20
- package/dist/public/heliostat/ring_guidance.html +20 -20
- package/dist/public/heliostat/rod.html +20 -20
- package/dist/public/heliostat/spider.html +20 -20
- package/dist/public/heliostat/surface.html +20 -20
- package/dist/public/heliostat/swing.html +20 -20
- package/dist/public/heliostat/trapeze.html +20 -20
- package/dist/public/heliostat/vaxis.html +20 -20
- package/dist/public/heliostat/vaxis_guidance.html +20 -20
- package/dist/public/heliostat/vaxis_holder.html +20 -20
- package/dist/public/index.html +18 -18
- package/dist/public/pgdsvg/base.svg +1 -1
- package/dist/public/pgdsvg/base_cut.svg +1 -1
- package/dist/public/pgdsvg/base_hollow.svg +1 -1
- package/dist/public/pgdsvg/base_top.svg +1 -1
- package/dist/public/pgdsvg/calculation_of_initAngle2.svg +1 -1
- package/dist/public/pgdsvg/circles.svg +1 -1
- package/dist/public/pgdsvg/circles_amplitude-offset.svg +1 -1
- package/dist/public/pgdsvg/circles_amplitude-scale.svg +1 -1
- package/dist/public/pgdsvg/circles_angle.svg +1 -1
- package/dist/public/pgdsvg/default_param_blank.svg +1 -1
- package/dist/public/pgdsvg/gear_addendeum_dedendum_sizes.svg +9 -9
- package/dist/public/pgdsvg/gear_addendum_and_dedendum.svg +1 -1
- package/dist/public/pgdsvg/gear_adherence_replaced_by_teeth.svg +1 -1
- package/dist/public/pgdsvg/gear_base_circle_for_involute.svg +2 -2
- package/dist/public/pgdsvg/gear_base_left_circle_for_involute.svg +2 -2
- package/dist/public/pgdsvg/gear_base_right_circle_for_involute.svg +2 -2
- package/dist/public/pgdsvg/gear_inter_axis_maximum_distance.svg +1 -1
- package/dist/public/pgdsvg/gear_inter_axis_minimum_distance.svg +1 -1
- package/dist/public/pgdsvg/gear_large_base_radius.svg +1 -1
- package/dist/public/pgdsvg/gear_module_and_tooth_thickness.svg +3 -3
- package/dist/public/pgdsvg/gear_optimum_base_radius.svg +2 -2
- package/dist/public/pgdsvg/gear_optimum_base_radius_with_longer_inter_axis.svg +2 -2
- package/dist/public/pgdsvg/gear_right_left_base_circles.svg +1 -1
- package/dist/public/pgdsvg/gear_small_base_radius.svg +1 -1
- package/dist/public/pgdsvg/gear_wheel_circles.svg +2 -2
- package/dist/public/pgdsvg/gears_motion_transmission_via_adherence.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_addendum_portion.svg +3 -3
- package/dist/public/pgdsvg/gearwheel_params_baseCircles.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_hollow_axis.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_initAngle.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_interaxis.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_involSym.svg +3 -3
- package/dist/public/pgdsvg/gearwheel_params_main.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_side.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_skin.svg +1 -1
- package/dist/public/pgdsvg/gearwheel_params_teeth_height.svg +7 -7
- package/dist/public/pgdsvg/haxis_guidance.svg +1 -1
- package/dist/public/pgdsvg/haxis_guidance_outer.svg +1 -1
- package/dist/public/pgdsvg/haxis_guidance_spring.svg +1 -1
- package/dist/public/pgdsvg/heliostat.svg +1 -1
- package/dist/public/pgdsvg/heliostat2_face_sizing.svg +1 -1
- package/dist/public/pgdsvg/heliostat2_side_sizing.svg +1 -1
- package/dist/public/pgdsvg/heliostat_face_sizing.svg +1 -1
- package/dist/public/pgdsvg/heliostat_overview.svg +1 -1
- package/dist/public/pgdsvg/heliostat_side.svg +1 -1
- package/dist/public/pgdsvg/heliostat_side_sizing.svg +1 -1
- package/dist/public/pgdsvg/involute_of_circle_R0.svg +1 -1
- package/dist/public/pgdsvg/involute_of_circle_Ri1_u0.svg +1 -1
- package/dist/public/pgdsvg/involute_of_circle_Ri2_u2.svg +1 -1
- package/dist/public/pgdsvg/left_side_angle_kitchen.svg +1 -1
- package/dist/public/pgdsvg/negative_involute_of_circle_R0.svg +1 -1
- package/dist/public/pgdsvg/point_c_position_and_speed_negative.svg +1 -1
- package/dist/public/pgdsvg/point_c_position_and_speed_positive.svg +1 -1
- package/dist/public/pgdsvg/pole_stator.svg +3 -3
- package/dist/public/pgdsvg/pole_stator_E2.svg +2 -2
- package/dist/public/pgdsvg/pole_stator_bottom.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_cut.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_face.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_holderB_section.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_holderB_top.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_holders.svg +1 -1
- package/dist/public/pgdsvg/pole_stator_right.svg +1 -1
- package/dist/public/pgdsvg/rake.svg +1 -1
- package/dist/public/pgdsvg/rake_door.svg +1 -1
- package/dist/public/pgdsvg/rake_face.svg +1 -1
- package/dist/public/pgdsvg/rake_low_stopper_holder.svg +1 -1
- package/dist/public/pgdsvg/rake_side.svg +1 -1
- package/dist/public/pgdsvg/rake_side_stopper.svg +1 -1
- package/dist/public/pgdsvg/rake_top.svg +1 -1
- package/dist/public/pgdsvg/rake_top_stopper.svg +1 -1
- package/dist/public/pgdsvg/rectangle.svg +1 -1
- package/dist/public/pgdsvg/rectangle_height.svg +1 -1
- package/dist/public/pgdsvg/rectangle_width.svg +1 -1
- package/dist/public/pgdsvg/right_side_angle_kitchen.svg +1 -1
- package/dist/public/pgdsvg/ring.svg +1 -1
- package/dist/public/pgdsvg/ring_guidance.svg +1 -1
- package/dist/public/pgdsvg/ring_guidance_top.svg +1 -1
- package/dist/public/pgdsvg/ring_section.svg +1 -1
- package/dist/public/pgdsvg/ring_top.svg +1 -1
- package/dist/public/pgdsvg/rod.svg +1 -1
- package/dist/public/pgdsvg/rod_cut.svg +1 -1
- package/dist/public/pgdsvg/rod_plate.svg +1 -1
- package/dist/public/pgdsvg/rod_top.svg +1 -1
- package/dist/public/pgdsvg/spider.svg +1 -1
- package/dist/public/pgdsvg/spider_lateral.svg +1 -1
- package/dist/public/pgdsvg/spider_profile.svg +1 -1
- package/dist/public/pgdsvg/src_gears.svg +27 -27
- package/dist/public/pgdsvg/src_gearwheel_params.svg +12 -12
- package/dist/public/pgdsvg/src_involute_of_circle.svg +4 -4
- package/dist/public/pgdsvg/surface.svg +2 -2
- package/dist/public/pgdsvg/surface_crenel.svg +1 -1
- package/dist/public/pgdsvg/surface_extremities.svg +1 -1
- package/dist/public/pgdsvg/surface_lz.svg +1 -1
- package/dist/public/pgdsvg/surface_main.svg +1 -1
- package/dist/public/pgdsvg/surface_power.svg +1 -1
- package/dist/public/pgdsvg/surface_space_evolution.svg +1 -1
- package/dist/public/pgdsvg/surface_space_shape.svg +1 -1
- package/dist/public/pgdsvg/swing.svg +1 -1
- package/dist/public/pgdsvg/swing_buttress.svg +1 -1
- package/dist/public/pgdsvg/swing_face.svg +1 -1
- package/dist/public/pgdsvg/swing_side.svg +1 -1
- package/dist/public/pgdsvg/swing_top.svg +1 -1
- package/dist/public/pgdsvg/swing_with_rod.svg +1 -1
- package/dist/public/pgdsvg/trapeze.svg +1 -1
- package/dist/public/pgdsvg/trapeze_rod.svg +1 -1
- package/dist/public/pgdsvg/trapeze_side.svg +1 -1
- package/dist/public/pgdsvg/trapeze_top.svg +1 -1
- package/dist/public/pgdsvg/vaxis.svg +1 -1
- package/dist/public/pgdsvg/vaxis_cut.svg +1 -1
- package/dist/public/pgdsvg/vaxis_ends.svg +1 -1
- package/dist/public/pgdsvg/vaxis_guidance.svg +2 -2
- package/dist/public/pgdsvg/vaxis_guidance_spring.svg +1 -1
- package/dist/public/pgdsvg/vaxis_guidance_top.svg +1 -1
- package/dist/public/pgdsvg/vaxis_holder.svg +1 -1
- package/dist/public/pgdsvg/vaxis_holder_section.svg +1 -1
- package/dist/public/pgdsvg/vaxis_holder_top.svg +1 -1
- package/dist/public/pgdsvg/verify_contour_1.svg +1 -1
- package/dist/public/pgdsvg/verify_contour_1_l1.svg +1 -1
- package/dist/public/pgdsvg/verify_contour_1_r1.svg +1 -1
- package/dist/public/pgdsvg/verify_line.svg +1 -1
- package/dist/public/pgdsvg/verify_line_2_l1cx.svg +1 -1
- package/dist/public/pgdsvg/verify_line_p1x.svg +1 -1
- package/dist/public/pgdsvg/verify_point.svg +1 -1
- package/dist/public/pgdsvg/verify_point_p1x.svg +1 -1
- package/dist/public/pgdsvg/verify_vector_p1x.svg +1 -1
- package/dist/public/pgdsvg/voila.svg +1 -1
- package/dist/public/pgdsvg/voila_face.svg +1 -1
- package/package.json +16 -21
- package/dist/public/_app/immutable/chunks/5B5AdHSA.js +0 -3
- package/dist/public/_app/immutable/chunks/9bBEqoCM.js +0 -1
- package/dist/public/_app/immutable/chunks/BMeoROdI.js +0 -1
- package/dist/public/_app/immutable/chunks/Cd9UBKFE.js +0 -1
- package/dist/public/_app/immutable/chunks/D7zLLAQ4.js +0 -1
- package/dist/public/_app/immutable/chunks/DUh4Zae0.js +0 -216
- package/dist/public/_app/immutable/chunks/DWPiqmJ1.js +0 -1
- package/dist/public/_app/immutable/chunks/K45ZhT9R.js +0 -1
- package/dist/public/_app/immutable/chunks/ftxVTuWM.js +0 -1
- package/dist/public/_app/immutable/chunks/s_uONAcq.js +0 -1
- package/dist/public/_app/immutable/entry/app.B5CS7YKv.js +0 -2
- package/dist/public/_app/immutable/entry/start.c5BT8wWD.js +0 -1
- package/dist/public/_app/immutable/nodes/0.BgkqF2QY.js +0 -2
- package/dist/public/_app/immutable/nodes/1.CWhP_fAL.js +0 -1
- package/dist/public/_app/immutable/nodes/2.Dh0s2Wro.js +0 -1
- package/dist/public/_app/immutable/nodes/3.D8XvA1WK.js +0 -10
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
|
|
1
|
+
import{p as t,a as z,b as ve,c as xe,i as ue,f as L,d as J,g as B,E as ce,h as G,r as he,j as P,k as le,l as de,m as Pe,n as Y,o as fe,q as Le,t as He,u as Mt,v as we,w as Ze,x as Et,y as _e,z as Be,A as ye,B as me,S as Ae,C as bt}from"./gQGuvN5u.js";var At=class{base_center_x;base_center_y;base_radius;initial_angle;right_nleft;constructor(s,e,S,o,i){this.base_center_x=s,this.base_center_y=e,this.base_radius=S,this.initial_angle=o,this.right_nleft=i}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 e=this.lFromU(s),S=this.w2FromU(s),o=this.base_center_x+Math.cos(S)*e,i=this.base_center_y+Math.sin(S)*e;return[o,i]}ptcta(s){return this.initial_angle+this.angleSign()*s}uFromL(s){return Math.sqrt(s**2/this.base_radius**2-1)}uFromWslow(s){let S=Math.PI/3,o=S/2,i=this.wFromU(S),d=0;for(;Math.abs(i-s)>1e-4;)i<s?S+=o:S-=o,i=this.wFromU(S),o=o/2,d+=1;return console.log(`dbg072: uFromWslow itcnt ${d}`),S}laptc(s,e,S,o){if(Math.sign(e)*this.angleSign()<0)throw`err904: Invole.laptc angle-of-pressure ${e} not compatible with right_nleft ${this.right_nleft}`;const i=s+e,d=this.base_center_x+Math.cos(i)*this.base_radius,c=this.base_center_y+Math.sin(i)*this.base_radius,n=i-this.angleSign()*Math.PI/2,l=S*this.base_radius,h=d+Math.cos(n)*l,a=c+Math.sin(n)*l,g=this.lFromU(S)*o,r=S,u=Math.cos(r)*g,f=Math.sin(r)*g;return[h,a,u,f]}};function Me(s,e,S,o,i){return new At(s,e,S,o,i)}var kt=class{mod=1;TN=23;as=1;cx=0;cy=0;brr=50;blr=50;ar=54;pr=53;dr=52;br=51;bRound=1;adt=.5;initAngle=0;axisAngle=0;involArcPairs=1;skinThickness=0;involuteR=Me(0,0,50,0,!0);involuteL=Me(0,0,50,0,!1);rud=0;rup=0;rua=0;rwd=0;rwp=0;rwa=0;lud=0;lup=0;lua=0;lwd=0;lwp=0;lwa=0;msg;initStep=0;constructor(){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,e){if(this.initStep<s)throw`err835: checkInitStep for ${e} initStep ${this.initStep} is too small compare to targetMin ${s}`}set1ModuleToothNumber(s,e){this.incInitStep(1),this.mod=s,this.TN=e,this.pr=this.mod*this.TN/2,this.as=2*Math.PI/this.TN}set2CenterPosition(s,e){this.incInitStep(2),this.cx=s,this.cy=e}set3CircleRadius(s,e,S,o){this.incInitStep(3),this.ar=this.pr+this.mod*s,this.dr=this.pr-this.mod*e,this.br=this.dr-this.mod*S,this.bRound=o}set4BaseCircles(s,e){this.incInitStep(4),this.brr=s,this.blr=e}set5AddendumThickness(s){this.incInitStep(5),this.adt=s/100}set6Angles(s,e){this.incInitStep(6),this.initAngle=s,this.axisAngle=e}set7InvoluteDetails(s,e){this.incInitStep(7),this.involArcPairs=s,this.skinThickness=e}getRefCircles(){return this.checkInitStep(4,"getRefCircles"),[P(this.cx,this.cy,this.ar,"Azure"),P(this.cx,this.cy,this.pr,"Azure"),P(this.cx,this.cy,this.dr,"Azure"),P(this.cx,this.cy,this.br,"Azure"),P(this.cx,this.cy,this.brr,"CornFlowerBlue"),P(this.cx,this.cy,this.blr,"Crimson")]}calcInvoluteAngles(){this.checkInitStep(4,"calcInvoluteAngles"),this.involuteR=Me(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=Me(this.cx,this.cy,this.blr,0,!1),this.dr>this.blr?this.lud=this.involuteL.uFromL(this.dr):this.lud=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,e=this.rwa-this.rwp,S=Math.abs(this.lwa-this.lwp),o=s-e-S;if(o<0)throw`err554: No remaining Addendum reserve ${L(o)}
|
|
2
2
|
`;const i=this.as*(1-this.adt),d=this.rwp-this.rwd,c=Math.abs(this.lwp-this.lwd),n=i-d-c;if(n<2*Math.atan2(this.bRound,this.br))throw`err555: No remaining Dedendum reserve ${L(n)} compare to bRound ${L(this.bRound)}
|
|
3
|
-
`}getToothRef(){const s=6*this.involArcPairs,e=0;this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles();const
|
|
4
|
-
`),
|
|
5
|
-
`),
|
|
6
|
-
`)}check2(){this.gw1.checkInitStep(5,"ActionLine.check2-1"),this.gw2.checkInitStep(5,"ActionLine.check2-2"),
|
|
7
|
-
`);const s=this.gw1.ar-this.gw1.pr,e=this.gw1.pr-this.gw1.dr,
|
|
8
|
-
`),
|
|
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),e=this.interAxis*this.gw1.blr/(this.gw1.blr+this.gw2.blr),
|
|
3
|
+
`}getToothRef(){const s=6*this.involArcPairs,e=0;this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles();const S=(this.rua-this.rud)/s,o=(this.lua-this.lud)/s,i=this.initAngle+e*this.as,d=Me(this.cx,this.cy,this.brr,i-this.rwp,!0),[c,n]=d.ptc(this.rud+0*S),l=J(c,n,"Gold");for(let _=0;_<s;_++){const[g,r]=d.ptc(this.rud+(_+1)*S);l.addSegStrokeA(g,r)}const h=i+this.as*this.adt,a=Me(this.cx,this.cy,this.blr,h-this.lwp,!1);for(let _=0;_<s+1;_++){const[g,r]=a.ptc(this.lud+(s-_)*o);l.addSegStrokeA(g,r)}return l.closeSegStroke(),l}getProfile(){this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles(),this.checkProfileConditions();const s=this.rwd-this.rwp,e=this.lwd-this.lwp,S=this.dr>this.brr?this.dr:this.brr,o=this.dr>this.blr?this.dr:this.blr;if(this.bRound>S-this.br)throw`err409: getProfile bRound ${L(this.bRound)} too large for erdr ${L(S)} and br ${L(this.br)}`;if(this.bRound>o-this.br)throw`err408: getProfile bRound ${L(this.bRound)} too large for eldr ${L(o)} and br ${L(this.br)}`;const i=(this.rua-this.rud)/this.involArcPairs,d=(this.lua-this.lud)/this.involArcPairs,c=de(this.cx,this.cy),n=c.translatePolar(this.initAngle+s,this.br),l=J(n.cx,n.cy);for(let h=0;h<this.TN;h++){const a=this.initAngle+h*this.as,_=c.translatePolar(a+s,this.br);l.addSegStrokeA(_.cx,_.cy).addCornerRounded(this.bRound);const g=Me(this.cx,this.cy,this.brr,a-this.rwp,!0),[r,u]=g.ptc(this.rud),f=g.ptcta(this.rud),H=de(r,u).translatePolar(f-Math.PI/2,this.skinThickness);l.addSegStrokeA(H.cx,H.cy);for(let x=0;x<this.involArcPairs;x++){const O=this.rud+x*i,[C,$]=g.ptc(O+i),m=g.ptcta(O),U=g.ptcta(O+i)+Math.PI,F=de(C,$).translatePolar(m-Math.PI/2,this.skinThickness);l.addPointA(F.cx,F.cy).addSeg2Arcs(m,U)}const k=a+this.as*this.adt,M=Me(this.cx,this.cy,this.blr,k-this.lwp,!1),D=this.lud+this.involArcPairs*d,[b,N]=M.ptc(D),R=M.ptcta(D)+Math.PI,v=de(b,N).translatePolar(R-Math.PI/2,this.skinThickness);l.addSegStrokeA(v.cx,v.cy);for(let x=0;x<this.involArcPairs;x++){const O=this.lud+(this.involArcPairs-x)*d,[C,$]=M.ptc(O-d),m=M.ptcta(O)+Math.PI,U=M.ptcta(O-d),F=de(C,$).translatePolar(m-Math.PI/2,this.skinThickness);l.addPointA(F.cx,F.cy).addSeg2Arcs(m,U)}const E=c.translatePolar(k+e,this.br);l.addSegStrokeA(E.cx,E.cy).addCornerRounded(this.bRound)}return l.closeSegStroke(),l}getMsg(){return this.msg}};function Ke(){return new kt}function Rt(s,e,S,o){s.checkInitStep(1,"helper.gw2center-1"),e.checkInitStep(1,"helper.gw2center-2");const i=s.pr+e.pr+o,d=s.cx+i*Math.cos(S),c=s.cy+i*Math.sin(S);return[d,c,i]}function Nt(s,e,S,o,i,d,c,n,l,h,a){s.checkInitStep(3,"helper.baseCircles-1"),e.checkInitStep(3,"helper.baseCircles-2");let _=S,g=i,r=o,u=d;const f=s.pr+e.pr,H=h,k=a;switch(H){case 0:e.TN>s.TN?(_=s.dr,g=_*e.TN/s.TN):(g=e.dr,_=g*s.TN/e.TN);break;case 1:g=_*e.TN/s.TN;break;case 2:_=g*s.TN/e.TN;break;case 3:_=f*s.TN/(s.TN+e.TN)*Math.cos(Pe(c)),g=_*e.TN/s.TN;break;case 4:break;default:console.log(`err337: involROpt2 case ${H} is not implemented!`)}switch(k){case 0:e.TN>s.TN?(r=s.dr,u=r*e.TN/s.TN):(u=e.dr,r=u*s.TN/e.TN);break;case 1:u=r*e.TN/s.TN;break;case 2:r=u*s.TN/e.TN;break;case 3:r=f*s.TN/(s.TN+e.TN)*Math.cos(Pe(n)),u=r*e.TN/s.TN;break;case 4:break;default:console.log(`err358: involLOpt2 case ${k} is not implemented!`)}return l===1&&(r=_,u=g),[_,r,g,u]}var Ct=class{gw1;gw2;initAngle1;angleCenterCenter;interAxis;rightLeftCenter2;msg;apr;apl;lBDr=0;lBDl=0;laStartRr1=0;laStartRr2=0;laStartRl1=0;laStartRl2=0;aFODr1=0;aFODr2=0;aFODl1=0;aFODl2=0;lasr1=0;lasr2=0;lasl1=0;lasl2=0;firstToothUr1=0;firstToothUl1=0;ftdr1=0;ftdl1=0;constructor(s,e,S,o,i,d){this.gw1=s,this.gw2=e,this.initAngle1=S,this.angleCenterCenter=o,this.interAxis=i,this.rightLeftCenter2=d,this.msg="",this.apr=0,this.apl=0}check1(){this.gw1.checkInitStep(4,"ActionLine.check1-1"),this.gw2.checkInitStep(4,"ActionLine.check1-2"),this.interAxis>this.gw1.ar+this.gw2.ar&&(this.msg+=`warn333: initAngle2 interAxis ${L(this.interAxis)} is too large compare to gw1.ar ${L(this.gw1.ar)} and gw2.ar ${L(this.gw2.ar)}
|
|
4
|
+
`),_e(this.gw1.brr*this.gw2.TN-this.gw2.brr*this.gw1.TN)!==0&&(this.msg+=`warn407: right ratios differ N1/N2 = ${this.gw1.TN} / ${this.gw2.TN} = ${L(this.gw1.TN/this.gw2.TN)} and brr1/brr2 = ${L(this.gw1.brr)}/${L(this.gw2.brr)} = ${L(this.gw1.brr/this.gw2.brr)}
|
|
5
|
+
`),_e(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} = ${L(this.gw1.TN/this.gw2.TN)} and blr1/blr2 = ${L(this.gw1.blr)}/${L(this.gw2.blr)} = ${L(this.gw1.blr/this.gw2.blr)}
|
|
6
|
+
`)}check2(){this.gw1.checkInitStep(5,"ActionLine.check2-1"),this.gw2.checkInitStep(5,"ActionLine.check2-2"),_e(this.gw1.adt+this.gw2.adt-1)>0&&(this.msg+=`warn281: addendum thickness too large: adt1 ${L(this.gw1.adt)} adt2 ${L(this.gw2.adt)}
|
|
7
|
+
`);const s=this.gw1.ar-this.gw1.pr,e=this.gw1.pr-this.gw1.dr,S=this.gw2.ar-this.gw2.pr,o=this.gw2.pr-this.gw2.dr;_e(o-s)<0&&(this.msg+=`warn282: addendum-1 ${L(s)} larger than dedendum-2 ${L(o)}
|
|
8
|
+
`),_e(e-S)<0&&(this.msg+=`warn283: addendum-2 ${L(S)} larger than dedendum-1 ${L(e)}
|
|
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),e=this.interAxis*this.gw1.blr/(this.gw1.blr+this.gw2.blr),S=this.interAxis-s,o=this.interAxis-e;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: ${L(he(this.apr))} left: ${L(he(this.apl))} degree
|
|
10
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: ${L(this.lBDr)} left: ${L(this.lBDl)} mm
|
|
11
|
-
`;const i=Math.PI/2+this.apr,d=
|
|
12
|
-
`,this.msg+=`Line of Action Effective rotation angle: right-1: ${L(
|
|
11
|
+
`;const i=Math.PI/2+this.apr,d=Be(this.gw1.ar,s,i);this.aFODr1=Math.PI-i-d;const c=this.gw1.rua-this.apr-this.gw1.rwa;if(_e(this.aFODr1-c)!==0)throw`dbg378: aFODr1 ${this.aFODr1} and aFODr1Alt ${c} differ`;const n=ye(s,this.gw1.ar,this.aFODr1),l=i,h=Be(this.gw2.ar,S,l);this.aFODr2=Math.PI-l-h;const a=this.gw2.rua-this.apr-this.gw2.rwa;if(_e(this.aFODr2-a)!==0)throw`dbg379: aFODr2 ${this.aFODr2} and aFODr2Alt ${a} differ`;const _=ye(S,this.gw2.ar,this.aFODr2),g=n+_,r=g/this.gw1.brr,u=g/this.gw2.brr,f=this.gw1.rua-r,H=this.gw2.rua-u;this.laStartRr1=this.gw1.involuteR.lFromU(f),this.laStartRr2=this.gw2.involuteR.lFromU(H);const k=Math.PI/2+this.apl,M=Be(this.gw1.ar,e,k);this.aFODl1=Math.PI-k-M;const D=this.gw1.lua-this.apl+this.gw1.lwa;if(_e(this.aFODl1-D)!==0)throw`dbg388: aFODl1 ${this.aFODl1} and aFODl1Alt ${D} differ`;const b=ye(e,this.gw1.ar,this.aFODl1),N=k,R=Be(this.gw2.ar,o,N);this.aFODl2=Math.PI-N-R;const v=this.gw2.lua-this.apl+this.gw2.lwa;if(_e(this.aFODl2-v)!==0)throw`dbg389: aFODl2 ${this.aFODl2} and aFODl2Alt ${v} differ`;const E=ye(o,this.gw2.ar,this.aFODl2),x=b+E,O=x/this.gw1.blr,C=x/this.gw2.blr,$=this.gw1.lua-O,m=this.gw2.lua-C;this.laStartRl1=this.gw1.involuteL.lFromU($),this.laStartRl2=this.gw2.involuteL.lFromU(m),this.msg+=`Line of Action Effective length: right: ${L(g)} left: ${L(x)} mm
|
|
12
|
+
`,this.msg+=`Line of Action Effective rotation angle: right-1: ${L(he(r))} right-2: ${L(he(u))} left-1: ${L(he(O))} left-2: ${L(he(C))} degree
|
|
13
13
|
`,this.msg+=`Line of Action Effective height: right-1: ${L(this.gw1.ar-this.laStartRr1)} right-2: ${L(this.gw2.ar-this.laStartRr2)} left-1: ${L(this.gw1.ar-this.laStartRl1)} left-2: ${L(this.gw2.ar-this.laStartRl2)} mm
|
|
14
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: ${L(this.lasr1)} 2: ${L(this.lasr2)} mm
|
|
15
15
|
`,this.msg+=`Line of Action right: nb of contact point: 1: ${L(g/this.lasr1)} 2: ${L(g/this.lasr2)}
|
|
16
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: ${L(this.lasl1)} 2: ${L(this.lasl2)} mm
|
|
17
17
|
`,this.msg+=`Line of Action left: nb of contact point: 1: ${L(x/this.lasl1)} 2: ${L(x/this.lasl2)}
|
|
18
|
-
`}calcContactPoint1(){for(this.gw1.checkInitStep(5,"ActionLine.calcContactPoint1"),this.firstToothUr1=
|
|
19
|
-
`;const M=
|
|
20
|
-
`,this.msg+=`slack on action line: right-2: ${L(a)} left-2: ${L(
|
|
21
|
-
`;let g=0;if(this.rightLeftCenter2===0)g=i;else if(this.rightLeftCenter2===1)g=c;else if(this.rightLeftCenter2===2)g=i+l/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return
|
|
22
|
-
`;try{const c=[],n=
|
|
23
|
-
`,n.set4BaseCircles(r,u),l.set4BaseCircles(f,H),n.set5AddendumThickness(e.at1),l.set5AddendumThickness(e.at2);const k=
|
|
24
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var
|
|
25
|
-
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:
|
|
26
|
-
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var
|
|
27
|
-
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:
|
|
28
|
-
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var
|
|
29
|
-
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:
|
|
30
|
-
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var
|
|
31
|
-
`),e+=`petal angle: ${L(
|
|
32
|
-
`,e+=`hollow angle: ${L(
|
|
33
|
-
`;const r=
|
|
34
|
-
`;const h=J(0,0);for(let a=0;a<s.SN1;a++)h.addSegStrokeR(0,-s.SL1).addPointR(2*n,0).addSegArc(Math.abs(n),!1,c),a<s.SN1-1?h.addSegStrokeR(0,s.SL1).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!c):s.Send===1?h.addSegStrokeR(0,s.SL2):h.addSegStrokeR(0,s.SL2-i).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!c);s.Send===1?h.addSegStrokeR(-s.SE1,0):h.addSegStrokeR(s.SE1,0);for(let a=0;a<s.SN1;a++)a>0?h.addPointR(-2*n,0).addSegArc(Math.abs(n),!1,c).addSegStrokeR(0,-s.SL1):s.Send===1?h.addSegStrokeR(0,-s.SL2):h.addPointR(-2*n,0).addSegArc(Math.abs(n),!1,c).addSegStrokeR(0,-s.SL2+i),h.addPointR(-2*l,0).addSegArc(Math.abs(l),!1,!c).addSegStrokeR(0,s.SL1);return[
|
|
35
|
-
`;try{const h=
|
|
18
|
+
`}calcContactPoint1(){for(this.gw1.checkInitStep(5,"ActionLine.calcContactPoint1"),this.firstToothUr1=me(this.apr-(this.initAngle1-this.angleCenterCenter)+this.gw1.rwp);_e(this.firstToothUr1-this.gw1.as)>=0;)this.firstToothUr1=_e(this.firstToothUr1-this.gw1.as);for(this.firstToothUl1=me(this.apl+(this.initAngle1-this.angleCenterCenter)+this.gw1.as*this.gw1.adt-this.gw1.lwp);_e(this.firstToothUl1-this.gw1.as)>=0;)this.firstToothUl1=_e(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,e,S,o,i,d,c,n,l,h){const _=Math.floor(e/(2*S)),g=(o+_*S)/i,r=s?1:-1,[u,f,H,k]=d.laptc(c,r*n,g,.4);this.msg+=`speed ${l}: vx ${L(H)} vy: ${L(k)} m/s
|
|
19
|
+
`;const M=de(u,f),D=c+r*n,b=J(u,f,h),N=M.translatePolar(D,-k);b.addSegStrokeA(N.cx,N.cy);const R=N.translatePolar(D-r*Math.PI/2,H);return b.addSegStrokeA(R.cx,R.cy),b.closeSegStroke(),b}getContactSpeed(){const s=this.oneContactSpeed(!0,this.lBDr,this.lasr1,this.ftdr1,this.gw1.brr,this.gw1.involuteR,this.angleCenterCenter,this.apr,"R1","Black"),e=this.oneContactSpeed(!1,this.lBDl,this.lasl1,this.ftdl1,this.gw1.blr,this.gw1.involuteL,this.angleCenterCenter,this.apl,"L1","Black"),S=[];return S.push(s),S.push(e),S}getContours(){const s=[];s.push(P(this.gw1.cx,this.gw1.cy,this.laStartRr1,"SkyBlue")),s.push(P(this.gw1.cx,this.gw1.cy,this.laStartRl1,"SlateBlue")),s.push(P(this.gw2.cx,this.gw2.cy,this.laStartRr2,"SkyBlue")),s.push(P(this.gw2.cx,this.gw2.cy,this.laStartRl2,"SlateBlue"));const e=de(this.gw1.cx,this.gw1.cy),S=de(this.gw2.cx,this.gw2.cy),o=e.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),i=S.translatePolar(this.angleCenterCenter+Math.PI+this.apr,this.gw2.brr),d=J(o.cx,o.cy,"YellowGreen");d.addSegStrokeA(i.cx,i.cy),d.closeSegStroke(),s.push(d);const c=e.translatePolar(this.angleCenterCenter-this.aFODr1,this.gw1.ar),n=S.translatePolar(this.angleCenterCenter+Math.PI-this.aFODr2,this.gw2.ar),l=J(c.cx,c.cy,"Yellow");l.addSegStrokeA(n.cx,n.cy),l.closeSegStroke(),s.push(l);const h=e.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr),a=S.translatePolar(this.angleCenterCenter+Math.PI-this.apl,this.gw2.blr),_=J(h.cx,h.cy,"YellowGreen");_.addSegStrokeA(a.cx,a.cy),_.closeSegStroke(),s.push(_);const g=e.translatePolar(this.angleCenterCenter+this.aFODl1,this.gw1.ar),r=S.translatePolar(this.angleCenterCenter+Math.PI+this.aFODl2,this.gw2.ar),u=J(g.cx,g.cy,"Yellow");return u.addSegStrokeA(r.cx,r.cy),u.closeSegStroke(),s.push(u),s.push(...this.getContactSpeed()),s}getContactPoint(){const s=[],e=de(this.gw1.cx,this.gw1.cy),S=e.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),o=e.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr);s.push(de(S.cx,S.cy,Ae.eBigSquare)),s.push(de(o.cx,o.cy,Ae.eBigSquare));const i=this.angleCenterCenter+this.apr-Math.PI/2,d=this.angleCenterCenter-this.apl+Math.PI/2,c=S.translatePolar(i,this.ftdr1),n=o.translatePolar(d,this.ftdl1);s.push(de(c.cx,c.cy,Ae.eBigSquare)),s.push(de(n.cx,n.cy,Ae.eBigSquare));let l=this.ftdr1;for(;l+this.lasr1<this.lBDr;){l+=this.lasr1;const a=S.translatePolar(i,l);s.push(de(a.cx,a.cy,Ae.eBigSquare))}let h=this.ftdl1;for(;h+this.lasl1<this.lBDl;){h+=this.lasl1;const a=o.translatePolar(d,h);s.push(de(a.cx,a.cy,Ae.eBigSquare))}return s}getMsg(){return this.msg}getInitAngle2(){let s=this.lBDr-this.ftdr1;for(;_e(s-this.lasr2)>=0;)s=_e(s-this.lasr2);let e=this.lBDl-this.ftdl1;for(;_e(e-this.lasl2)>=0;)e=_e(e-this.lasl2);const S=s/this.gw2.brr,o=e/this.gw2.blr,i=this.angleCenterCenter+Math.PI+this.apr-S+this.gw2.rwp,c=this.angleCenterCenter+Math.PI-this.apl+o+this.gw2.lwp-this.gw2.as*this.gw2.adt;let n=2*Math.PI+me(c);for(;_e(n-this.gw2.as-i)>=0;)n=_e(n-this.gw2.as);const l=n-i,h=l*this.gw2.brr/this.gw1.brr,a=l*this.gw2.brr,_=l*this.gw2.blr;this.msg+=`slack angle: 1: ${L(he(h))} 2: ${L(he(l))} degree
|
|
20
|
+
`,this.msg+=`slack on action line: right-2: ${L(a)} left-2: ${L(_)} mm
|
|
21
|
+
`;let g=0;if(this.rightLeftCenter2===0)g=i;else if(this.rightLeftCenter2===1)g=c;else if(this.rightLeftCenter2===2)g=i+l/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return bt(g)}};function It(s,e,S,o,i,d){return new Ct(s,e,S,o,i,d)}function Vt(s,e,S,o,i,d,c,n,l){let h=P(s,e,S);if(o>0){if(i>2*S)throw`err383: axisTorque ribWidth ${L(i)} larger than 2x axisRadius ${L(S)}`;const a=Math.asin(i/(2*S)),_=2*Math.PI/o;if(_-2.5*a<0)throw`err384: axisTorque ribWidth ${L(i)} or ribNb ${o} are too large`;if(c>i/2)throw`err385: axisTorque ribRound1 ${L(c)} too large compare to ribWidth ${L(i)}`;if(c+n>d)throw`err386: axisTorque ribRound12 ${L(c)} ${L(n)} too large compare to ribHeight ${L(i)}`;const g=_-2*a>Math.PI,r=de(s,e),f=r.translatePolar(l,S+d).translatePolar(l+Math.PI/2,i/2);h=J(f.cx,f.cy);for(let H=0;H<o;H++){const k=l+H*_,M=k+_,D=r.translatePolar(k+a,S),b=r.translatePolar(M-a,S),R=r.translatePolar(k,S+d).translatePolar(k+Math.PI/2,i/2),E=r.translatePolar(M,S+d).translatePolar(M-Math.PI/2,i/2);h.addSegStrokeA(R.cx,R.cy).addCornerRounded(c),h.addSegStrokeA(D.cx,D.cy).addCornerRounded(n),h.addPointA(b.cx,b.cy).addSegArc(S,g,!0).addCornerRounded(n),h.addSegStrokeA(E.cx,E.cy).addCornerRounded(c)}h.closeSegStroke()}return h}function Bt(s,e,S,o,i,d,c,n){const l=2*Math.PI/i,h=Math.asin(d/(2*o)),a=Math.asin(d/(2*S));if(d>2*o)throw`err905: hollowStraight spokeWidth ${L(d)} too large for hollowInt ${L(o)}`;if(S-o<2.1*c)throw`err906: hollowStraight hollowExt ${L(S)}, hollowInt ${L(o)} and spokeRound ${L(c)} do not fit`;if(l-2*a<2.5*Math.asin(c/S))throw`err907: hollowStraight spokeNb ${i}, spokeWidth ${L(d)} or spokeRound ${L(c)} are too large`;const _=d/(2*Math.sin(l/2)),g=l-2*h<2.1*Math.asin(c/o),r=l-2*a>Math.PI,u=de(s,e),f=[];for(let H=0;H<i;H++){const k=n+H*l,M=k+l,D=k+l/2,b=u.translatePolar(k+a,S),N=u.translatePolar(M-a,S),R=u.translatePolar(M-h,o),v=u.translatePolar(k+h,o),E=u.translatePolar(D,_),x=J(b.cx,b.cy);x.addCornerRounded(c),x.addPointA(N.cx,N.cy).addSegArc(S,r,!0).addCornerRounded(c),g?x.addSegStrokeA(E.cx,E.cy).addCornerRounded(c):(x.addSegStrokeA(R.cx,R.cy).addCornerRounded(c),x.addPointA(v.cx,v.cy).addSegArc(o,r,!1).addCornerRounded(c)),x.closeSegStroke(),f.push(x)}return f}function Qe(s,e,S,o,i,d,c,n,l,h){const a=h?1:-1,_=s/2,g=_+e,r=g+S,u=J(0,-r);return u.addSegStrokeA(a*o,-r).addCornerRounded(c).addSegStrokeA(a*o,-g).addCornerRounded(n).addSegStrokeA(a*i,-g).addSegStrokeA(a*d,-_).addCornerRounded(l).addSegStrokeA(a*d,_).addCornerRounded(l).addSegStrokeA(a*i,g).addSegStrokeA(a*o,g).addCornerRounded(n).addSegStrokeA(a*o,r).addCornerRounded(c).addSegStrokeA(0,r).closeSegStroke(),u}var et={partName:"gear_wheel",params:[t("module","mm",10,.1,100,.1),t("N1","scalar",23,3,1e3,1),t("N2","scalar",19,3,1e3,1),t("angleCenterCenter","degree",0,-180,180,1),t("addInterAxis","mm",0,0,100,.05),t("c1x","mm",0,-200,200,1),t("c1y","mm",0,-200,200,1),z("Tooth addendum dedendum"),t("ah1","scalar",1,.1,2,.05),t("dh1","scalar",1,.1,2,.05),t("bh1","scalar",.25,.1,2,.05),t("bRound1","mm",2,0,50,.1),t("ah2","scalar",1,.1,2,.05),t("dh2","scalar",1,.1,2,.05),t("bh2","scalar",.25,.1,2,.05),t("bRound2","mm",2,0,50,.1),t("at1","%",50,10,90,.5),t("at2","%",50,10,90,.5),z("Tooth involute of circle"),ve("involSym",!0),xe("involROpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),xe("involLOpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),t("brr1","mm",102.9,10,2e3,.05),t("blr1","mm",102.9,10,2e3,.05),t("brr2","mm",85,10,2e3,.05),t("blr2","mm",85,10,2e3,.05),t("rightPressureAngle","degree",26,1,45,.5),t("leftPressureAngle","degree",26,1,45,.5),t("involArcPairs1","scalar",2,1,40,1),t("involArcPairs2","scalar",2,1,40,1),t("skinThickness1","mm",0,-3,3,.01),t("skinThickness2","mm",0,-3,3,.01),t("initAngle1","degree",0,-180,180,1),xe("gw2Position",["right","left","center"]),z("Inner"),ve("centralAxis",!0),t("axisRadius","mm",10,.1,200,.1),t("ribNb","scalar",5,0,32,1),t("ribWidth","mm",8,1,100,.1),t("ribHeight","mm",8,1,100,.1),t("ribRound1","mm",2,0,20,.1),t("ribRound2","mm",2,0,20,.1),ve("hollow",!0),t("materialHeightExt","mm",20,1,200,.5),t("materialHeightInt","mm",15,1,200,.5),t("spokeNb","scalar",5,1,18,1),t("spokeWidth","mm",15,1,200,.1),t("spokeRound","mm",10,0,20,.1),z("Axis"),ve("wheelAxis",!0),t("wheelHeight","mm",40,.1,400,.1),t("wheelMidExtra","mm",6,0,10,.1),t("wheelAxisLength","mm",40,0,400,.1),t("wheelAxisRadius","mm",20,0,200,.1),t("wheelMidRadius","mm",60,0,200,.1),t("wheelRadiusExtra","mm",1,0,20,.1),t("wheelAxisExtRound","mm",4,0,20,.1),t("wheelAxisIntRound","mm",0,0,20,.1),t("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"gearwheel_params_main.svg",N1:"gearwheel_params_main.svg",N2:"gearwheel_params_main.svg",angleCenterCenter:"gearwheel_params_interaxis.svg",addInterAxis:"gearwheel_params_interaxis.svg",c1x:"gearwheel_params_main.svg",c1y:"gearwheel_params_main.svg",ah1:"gearwheel_params_teeth_height.svg",dh1:"gearwheel_params_teeth_height.svg",bh1:"gearwheel_params_teeth_height.svg",bRound1:"gearwheel_params_teeth_height.svg",ah2:"gearwheel_params_teeth_height.svg",dh2:"gearwheel_params_teeth_height.svg",bh2:"gearwheel_params_teeth_height.svg",bRound2:"gearwheel_params_teeth_height.svg",at1:"gearwheel_params_addendum_portion.svg",at2:"gearwheel_params_addendum_portion.svg",involSym:"gearwheel_params_involSym.svg",involROpt:"gearwheel_params_main.svg",involLOpt:"gearwheel_params_main.svg",brr1:"gearwheel_params_baseCircles.svg",brr2:"gearwheel_params_baseCircles.svg",blr1:"gearwheel_params_baseCircles.svg",blr2:"gearwheel_params_baseCircles.svg",rightPressureAngle:"gearwheel_params_baseCircles.svg",leftPressureAngle:"gearwheel_params_baseCircles.svg",involArcPairs1:"gearwheel_params_skin.svg",skinThickness1:"gearwheel_params_skin.svg",involArcPairs2:"gearwheel_params_skin.svg",skinThickness2:"gearwheel_params_skin.svg",initAngle1:"gearwheel_params_initAngle.svg",gw2Position:"gearwheel_params_initAngle.svg",centralAxis:"gearwheel_params_hollow_axis.svg",axisRadius:"gearwheel_params_hollow_axis.svg",ribNb:"gearwheel_params_hollow_axis.svg",ribWidth:"gearwheel_params_hollow_axis.svg",ribHeight:"gearwheel_params_hollow_axis.svg",ribRound1:"gearwheel_params_hollow_axis.svg",ribRound2:"gearwheel_params_hollow_axis.svg",hollow:"gearwheel_params_hollow_axis.svg",materialHeightExt:"gearwheel_params_hollow_axis.svg",materialHeightInt:"gearwheel_params_hollow_axis.svg",spokeNb:"gearwheel_params_hollow_axis.svg",spokeWidth:"gearwheel_params_hollow_axis.svg",spokeRound:"gearwheel_params_hollow_axis.svg",wheelAxis:"gearwheel_params_side.svg",wheelHeight:"gearwheel_params_side.svg",wheelMidExtra:"gearwheel_params_side.svg",wheelAxisLength:"gearwheel_params_side.svg",wheelAxisRadius:"gearwheel_params_side.svg",wheelMidRadius:"gearwheel_params_side.svg",wheelRadiusExtra:"gearwheel_params_side.svg",wheelAxisExtRound:"gearwheel_params_side.svg",wheelAxisIntRound:"gearwheel_params_side.svg",wheelExtraRound:"gearwheel_params_side.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function yt(s,e,S=""){const o=ue(et.partName+S),i=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
22
|
+
`;try{const c=[],n=Ke(),l=Ke();n.set1ModuleToothNumber(e.module,e.N1),l.set1ModuleToothNumber(e.module,e.N2),n.set2CenterPosition(e.c1x,e.c1y);const h=Pe(e.angleCenterCenter),[a,_,g]=Rt(n,l,h,e.addInterAxis);l.set2CenterPosition(a,_),n.set3CircleRadius(e.ah1,e.dh1,e.bh1,e.bRound1),l.set3CircleRadius(e.ah2,e.dh2,e.bh2,e.bRound2);const[r,u,f,H]=Nt(n,l,e.brr1,e.blr1,e.brr2,e.blr2,e.rightPressureAngle,e.leftPressureAngle,e.involSym,e.involROpt,e.involLOpt);o.logstr+=`base-circles: brr1: ${r.toFixed(2)} blr1: ${u.toFixed(2)} brr2: ${f.toFixed(2)} blr2: ${H.toFixed(2)}
|
|
23
|
+
`,n.set4BaseCircles(r,u),l.set4BaseCircles(f,H),n.set5AddendumThickness(e.at1),l.set5AddendumThickness(e.at2);const k=Pe(e.initAngle1)+s*3*n.as/100;n.set6Angles(k,h);const M=It(n,l,k,h,g,e.gw2Position);M.prepare();for(const x of M.getContours())i.addDynamics(x);i.addPoints(M.getContactPoint()),l.set6Angles(M.getInitAngle2(),h+Math.PI),o.logstr+=M.getMsg(),n.set7InvoluteDetails(e.involArcPairs1,e.skinThickness1),l.set7InvoluteDetails(e.involArcPairs2,e.skinThickness2);for(const x of n.getRefCircles())i.addDynamics(x);for(const x of l.getRefCircles())i.addDynamics(x);i.addDynamics(n.getToothRef()),i.addDynamics(l.getToothRef());const D=n.getProfile();if(o.logstr+=n.getMsg(),o.logstr+=D.check(),c.push(D),e.centralAxis===1){const x=Vt(n.cx,n.cy,e.axisRadius,e.ribNb,e.ribWidth,e.ribHeight,e.ribRound1,e.ribRound2,k);o.logstr+=x.check(),c.push(x)}if(e.hollow===1){const x=n.br,O=e.axisRadius+e.ribHeight,C=x-e.materialHeightExt,$=O+e.materialHeightInt;if($>C)throw`err902: hollowMaterialInt ${L($)} bigger than hollowMaterialExt ${L(C)}`;const m=Bt(n.cx,n.cy,C,$,e.spokeNb,e.spokeWidth,e.spokeRound,k);for(const U of m)o.logstr+=U.check(),c.push(U)}i.addMainOI(c);const b=l.getProfile();o.logstr+=b.check(),i.addSecond(b);const N=[],R=n.ar+e.wheelRadiusExtra;if(e.wheelAxis===1){const x=Qe(e.wheelHeight,e.wheelMidExtra,e.wheelAxisLength,e.wheelAxisRadius,e.wheelMidRadius,R,e.wheelAxisExtRound,e.wheelAxisIntRound,e.wheelExtraRound,!0),O=Qe(e.wheelHeight,e.wheelMidExtra,e.wheelAxisLength,e.wheelAxisRadius,e.wheelMidRadius,R,e.wheelAxisExtRound,e.wheelAxisIntRound,e.wheelExtraRound,!1);N.push(x),d.addSecond(O)}else{const x=J(0,-e.wheelHeight/2).addSegStrokeR(0,e.wheelHeight).addSegStrokeR(R,0).addSegStrokeR(0,-e.wheelHeight).closeSegStroke(),O=J(0,-e.wheelHeight/2).addSegStrokeR(0,e.wheelHeight).addSegStrokeR(-R,0).addSegStrokeR(0,-e.wheelHeight).closeSegStroke();N.push(x),d.addSecond(O)}d.addMainOI(N),o.fig={teethProfile:i,axisProfile:d};const v=o.partName,E=e.wheelHeight/2+e.wheelMidExtra+e.wheelAxisLength+10;o.vol={extrudes:[{outName:`subpax_${v}_teethProfile`,face:`${v}_teethProfile`,extrudeMethod:G.eLinearOrtho,length:2*E,rotate:[0,0,0],translate:[0,0,-E]},{outName:`subpax_${v}_axisProfile`,face:`${v}_axisProfile`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:ce.eIntersection,inList:[`subpax_${v}_teethProfile`,`subpax_${v}_axisProfile`]}]},o.logstr+=`gear_wheel drawn successfully!
|
|
24
|
+
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var Ot={pTitle:"Gearwheel",pDescription:"Gear-system with two wheels",pDef:et,pGeom:yt},tt={partName:"gear_bar",params:[t("H1","mm",40,1,4e3,1),t("H2","mm",50,1,4e3,1),t("radius","mm",10,1,4e3,1),z("corners"),t("Rc","mm",10,0,400,1)],paramSvg:{H1:"voila_face.svg",H2:"voila_face.svg",radius:"voila_face.svg",Rc:"voila_face.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Tt(s,e,S=""){const o=ue(tt.partName+S),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
25
|
+
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:G.eLinearOrtho,length:10,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${n}`,boolMethod:ce.eIdentity,inList:[`subpax_${n}_top`]}]},o.sub={},o.logstr+=`gear_bar drawn successfully!
|
|
26
|
+
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var Ft={pTitle:"Gearbar",pDescription:"Gear-system with a bar and a wheel",pDef:tt,pGeom:Tt},ot={partName:"gear_ring",params:[t("H1","mm",40,1,4e3,1),t("H2","mm",50,1,4e3,1),t("radius","mm",10,1,4e3,1),z("corners"),t("Rc","mm",10,0,400,1)],paramSvg:{H1:"voila_face.svg",H2:"voila_face.svg",radius:"voila_face.svg",Rc:"voila_face.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function pt(s,e,S=""){const o=ue(ot.partName+S),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
27
|
+
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:G.eLinearOrtho,length:10,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${n}`,boolMethod:ce.eIdentity,inList:[`subpax_${n}_top`]}]},o.sub={},o.logstr+=`gear_ring drawn successfully!
|
|
28
|
+
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var Jt={pTitle:"Gearring",pDescription:"Gear-system with a ring and a wheel",pDef:ot,pGeom:pt},st={partName:"gear_epicycloid",params:[t("H1","mm",40,1,4e3,1),t("H2","mm",50,1,4e3,1),t("radius","mm",10,1,4e3,1),z("corners"),t("Rc","mm",10,0,400,1)],paramSvg:{H1:"voila_face.svg",H2:"voila_face.svg",radius:"voila_face.svg",Rc:"voila_face.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function mt(s,e,S=""){const o=ue(st.partName+S),i=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
29
|
+
`;try{const d=[],c=J(-e.H1/2,-e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(e.H1/2,-e.H2/2).addSegStrokeA(e.H1/2,e.H2/2).addCornerRounded(e.Rc).addSegStrokeA(-e.H1/2,e.H2/2).closeSegStroke();d.push(c),d.push(P(0,0,e.radius)),i.addMainOI(d),o.fig={faceVoila:i};const n=o.partName;o.vol={extrudes:[{outName:`subpax_${n}_top`,face:`${n}_faceVoila`,extrudeMethod:G.eLinearOrtho,length:10,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${n}`,boolMethod:ce.eIdentity,inList:[`subpax_${n}_top`]}]},o.sub={},o.logstr+=`gear_epicycloid drawn successfully!
|
|
30
|
+
`,o.calcErr=!1}catch(d){o.logstr+=d,console.log(d)}return o}var zt={pTitle:"Gear-epicycloid",pDescription:"The epicycloid gear system",pDef:st,pGeom:mt};function Gt(s){let e="";const S=s.PHD1/2,o=s.PHD5/2,i=2*Math.asin(s.PHR4/S),d=2*Math.asin(s.PHL2/(2*o)),c=2*Math.PI/s.PHN1-d,n=s.PHL2/2,l=Math.sqrt(o**2-n**2)-S,h=Math.sqrt(n**2+l**2),a=Math.acos(l/h),_=Math.acos(s.PHR4/h),g=Math.PI-a-_;if(o<S+s.PHR4)throw`err211: PHD5 ${s.PHD5} too small compare to PHD1 ${s.PHD1} or PHR4 ${s.PHR4}`;if(c<d)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-i&&(e+=`warn345: PHL2 is quiet small ${L(s.PHL2)} mm
|
|
31
|
+
`),e+=`petal angle: ${L(he(d))} degree
|
|
32
|
+
`,e+=`hollow angle: ${L(he(c))} degree
|
|
33
|
+
`;const r=de(0,0),f=de(o,0).rotate(r,-d/2),H=de(S,0),k=de(S-s.PHR4,0),M=k.rotate(H,g),D=k.rotate(H,-g),b=J(f.cx,f.cy).addCornerRounded(s.PHR6).addSegStrokeA(M.cx,M.cy).addPointA(S-s.PHR4,0).addPointA(D.cx,D.cy).addSegArc2().addSegStrokeAP(d/2,o).addCornerRounded(s.PHR6).addPointAP(d/2+c/2,o).addPointAP(d/2+c,o).addSegArc2(),N=J(f.cx,f.cy),R=[...Array(s.PHN1).keys()].map(v=>v*(d+c));for(const v of R)N.addPartial(b.rotate(0,0,v));return[e,N,R]}function it(s){const e="",S=s.D1/2,o=s.D2/2,i=s.D4/2,d=2*Math.PI/s.N1,c=s.L1/2,n=Math.sqrt(o**2-c**2),l=Math.asin(c/o),h=S-n,a=Math.atan2(c,h),_=Math.sqrt(c**2+h**2),g=Math.acos(i/_),r=a+g,u=(d-2*l)/2;if(u<0)throw`err464: N1 ${s.N1} is too large compare to D2 ${s.D2}, L1 ${s.L1}`;if(S<o)throw`err465: D2 ${s.D2} is too large compare to D1 ${s.D1}`;const f=J(n,-c),H=de(0,0),k=de(o,0),M=de(S,0),b=de(S-i,0).rotate(M,r),N=k.rotate(H,l+u),R=k.rotate(H,d-l),v=J(n,-c).addCornerRounded(s.R5).addSegStrokeA(b.cx,b.cy).addPointA(S+i,0).addPointA(b.cx,-b.cy).addSegArc2().addSegStrokeA(n,c).addCornerRounded(s.R5).addPointA(N.cx,N.cy).addPointA(R.cx,R.cy).addSegArc2();for(let E=0;E<s.N1;E++)f.addPartial(v.rotate(0,0,E*d));return[e,f,d]}function Oe(s,e){let S="";const o=s.SD2/2,i=o+s.SE1,d=2*i;let c=!1,n=-o,l=-i;if(e&&(c=!0,n=i,l=o),s.SL2<i)throw`err421: SL2 ${s.SL2} is too small compare to SD2 ${s.SD2} and SE1 ${s.SE1}`;S+=`info309: spring height: ${L(s.SL1+d)} length: ${L(s.SN1*2*(s.SD2+s.SE1))}
|
|
34
|
+
`;const h=J(0,0);for(let a=0;a<s.SN1;a++)h.addSegStrokeR(0,-s.SL1).addPointR(2*n,0).addSegArc(Math.abs(n),!1,c),a<s.SN1-1?h.addSegStrokeR(0,s.SL1).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!c):s.Send===1?h.addSegStrokeR(0,s.SL2):h.addSegStrokeR(0,s.SL2-i).addPointR(2*l,0).addSegArc(Math.abs(l),!1,!c);s.Send===1?h.addSegStrokeR(-s.SE1,0):h.addSegStrokeR(s.SE1,0);for(let a=0;a<s.SN1;a++)a>0?h.addPointR(-2*n,0).addSegArc(Math.abs(n),!1,c).addSegStrokeR(0,-s.SL1):s.Send===1?h.addSegStrokeR(0,-s.SL2):h.addPointR(-2*n,0).addSegArc(Math.abs(n),!1,c).addSegStrokeR(0,-s.SL2+i),h.addPointR(-2*l,0).addSegArc(Math.abs(l),!1,!c).addSegStrokeR(0,s.SL1);return[S,h]}function Ut(s){let e="";const S=s.D6/2,o=2*Math.PI/s.N2,i=s.E2/2,d=2*Math.asin(i/S),c=(o-d)/2,l=(s.N2<3?0:Math.PI/s.N2)+Pe(s.SA1),h=Math.PI/2-l,a=-Math.PI/2+l,_=s.SD1/2;if(c<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,r]=Oe(s,!1),[,u]=Oe(s,!0);e+=g;const f=de(0,-S),H=de(0,0),k=f.rotate(H,d),M=f.translate(0,s.L2),D=M.translate(-_,0),b=D.translate(0,_),N=D.translate(0,_+s.SE1),R=N.rotate(D,h),v=M.translate(0,_+s.SE1).translate(s.SE1,0),E=f.rotate(H,-d),x=M.translate(_,0),O=x.translate(0,_),C=O.rotate(x,a),$=x.translate(0,_+s.SE1),m=M.translate(0,_+s.SE1).translate(-s.SE1,0),U=J(k.cx,k.cy).addSegStrokeA(v.cx,v.cy).addSegStrokeA(N.cx,N.cy),F=J(N.cx,N.cy).addPointA(R.cx,R.cy).addSegArc(_+s.SE1,!1,!0);F.addPartial(r.rotate(0,0,-l).translate(R.cx,R.cy)),F.addPointA(b.cx,b.cy).addPointA(M.cx,M.cy).addSegArc2().addSegStrokeA(f.cx,f.cy),U.addPartial(F);const T=J(f.cx,f.cy).addSegStrokeA(M.cx,M.cy).addPointA(O.cx,O.cy).addPointA(C.cx,C.cy).addSegArc2();T.addPartial(u.rotate(0,0,l).translate(C.cx,C.cy)),T.addPointA($.cx,$.cy).addSegArc(_+s.SE1,!1,!0);const p=J($.cx,$.cy).addSegStrokeA(m.cx,m.cy).addSegStrokeA(E.cx,E.cy),W=J(f.cx,f.cy).addPartial(T).addPartial(p),I=J(S,0);if(s.orientation===2)for(let Z=0;Z<s.N2/2;Z++){I.addPointAP(-2*Z*o-2*c,S).addPointAP(-2*Z*o-4*c,S).addSegArc2(),I.addCornerRounded(s.R7);const se=Math.PI/2-(2*Z+2)*o,V=se+2*d;I.addPartial(T.rotate(0,0,V));const ee=F.rotate(0,0,se),w=ee.getFirstPoint();I.addCornerRounded(s.R7),I.addSegStrokeA(w.cx,w.cy),I.addCornerRounded(s.R7),I.addPartial(ee),I.addCornerRounded(s.R7)}else for(let Z=0;Z<s.N2;Z++)I.addPointAP(-Z*o-c,S).addPointAP(-Z*o-2*c,S).addSegArc2().addCornerRounded(s.R7),s.orientation===0?I.addPartial(W.rotate(0,0,Math.PI/2-(Z+1)*o+d)):s.orientation===1&&I.addPartial(U.rotate(0,0,Math.PI/2-(Z+1)*o)),I.addCornerRounded(s.R7);return[e,I]}var nt={partName:"vaxis_holder",params:[t("PHD1","mm",700,1,2e3,1),t("PHD2","mm",900,1,4e3,1),t("PHD5","mm",800,1,4e3,1),t("PHN1","holes",6,1,24,1),z("screw holes"),t("PHD3","mm",40,1,100,1),t("PHR4","mm",40,1,100,1),t("PHL2","mm",120,1,400,1),t("PHR6","mm",20,0,400,1),z("section"),t("PHE1","mm",10,1,80,1),t("PHH1","mm",50,1,200,1),t("PHA","degree",5,-45,45,.1),t("PHL1","mm",300,1,500,1),t("PHE2","mm",10,1,80,1),t("PHE3","mm",10,1,80,1),z("for reuse"),ve("withOuterCone",!0)],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",withOuterCone:"vaxis_holder_section.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function qt(s,e,S=""){const o=ue(nt.partName+S),i=B(),d=B(),c=B(),n=B(),l=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
35
|
+
`;try{const h=Pe(e.PHA),a=e.PHD1/2,_=e.PHD2/2,g=e.PHD3/2,r=e.PHD5/2,u=_+e.PHL1/2*Math.sin(h),f=_-e.PHL1/2*Math.sin(h),H=e.PHL1*Math.cos(h),k=_-e.PHE2/Math.cos(h)+e.PHE1/2*Math.tan(h),M=_-e.PHE2/Math.cos(h)-e.PHE1/2*Math.tan(h),D=Math.min(k,M),b=(e.PHL1-e.PHE1/Math.cos(h))/2,N=_-e.PHE2/Math.cos(h);if(D<r)throw`err210: PHD5 ${e.PHD5} too large compare to PHE2 ${e.PHE2} or PHA ${e.PHA}`;o.logstr+=`vaxis_holder's height: ${L(H)} mm
|
|
36
36
|
`,o.logstr+=`vaxis_holder outerD1: ${L(2*u)} mm
|
|
37
37
|
`,o.logstr+=`vaxis_holder outerD2: ${L(2*f)} mm
|
|
38
38
|
`,o.logstr+=`vaxis_holder innerD: ${L(e.PHD1-2*e.PHR4)} mm
|
|
39
39
|
`,o.logstr+=`vaxis_holder D2-next: ${L(2*N)} mm
|
|
40
|
-
`;const R=function(V){const
|
|
41
|
-
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var
|
|
40
|
+
`;const R=function(V){const ee=r+(k-r)/2;return J(V*ee,-e.PHE1/2).addSegStrokeR(V*(k-ee),0).addSegStrokeRP(-Math.PI/2+V*h,b).addSegStrokeRP(-Math.PI/2+V*(Math.PI/2+h),e.PHE2).addSegStrokeRP(Math.PI/2+V*h,e.PHL1).addSegStrokeRP(Math.PI/2+V*(Math.PI/2+h),e.PHE2).addSegStrokeRP(-Math.PI/2+V*h,b).addSegStrokeA(V*ee,e.PHE1/2).closeSegStroke()},v=function(V){return J(V*D,-e.PHE1/2).addSegStrokeA(V*D,e.PHE1/2).addSegStrokeA(V*(a-e.PHR4),e.PHE1/2).addSegStrokeA(V*(a-e.PHR4),-e.PHE1/2).closeSegStroke()},E=function(V){return J(V*(a+g),-e.PHE1/2).addSegStrokeA(V*(a+g),e.PHE1/2).addSegStrokeA(V*(a-g),e.PHE1/2).addSegStrokeA(V*(a-g),-e.PHE1/2).closeSegStroke()};i.addMainO(R(1)),i.addSecond(R(-1)),i.addSecond(v(1)),i.addSecond(E(1)),i.addSecond(v(-1)),i.addSecond(E(-1));const x=function(V){return J(V*(a+e.PHR4),-e.PHE1/2).addSegStrokeA(V*k,-e.PHE1/2).addSegStrokeRP(-Math.PI/2+V*h,b).closeSegStroke()},O=function(V){return J(V*(a+e.PHR4),e.PHE1/2).addSegStrokeA(V*M,e.PHE1/2).addSegStrokeRP(Math.PI/2+V*h,b).addSegStrokeA(V*(a+e.PHR4),e.PHE1/2+e.PHH1).closeSegStroke()},C=function(V){const ee=de(V*M,e.PHE1/2).translatePolar(Math.PI/2+V*h,b),w=de(V*k,-e.PHE1/2).translatePolar(-Math.PI/2+V*h,b),q=_-e.PHE2/2;return J(V*q,0).addSegStrokeA(ee.cx,ee.cy).addSegStrokeA(V*(a+e.PHR4),e.PHE1/2+e.PHH1).addSegStrokeA(V*(a+e.PHR4),e.PHE1/2).addSegStrokeA(V*(a+e.PHR4),-e.PHE1/2).addSegStrokeA(w.cx,w.cy).closeSegStroke()};i.addSecond(x(-1)),i.addSecond(O(-1)),c.mergeFigure(i,!0),n.mergeFigure(i,!0),l.mergeFigure(i,!0),i.addSecond(x(1)),i.addSecond(O(1)),c.addMainO(x(1)),c.addSecond(O(1)),n.addSecond(x(1)),n.addMainO(O(1)),l.addMainO(C(1));const $=[];$.push(P(0,0,D)),d.addSecond(P(0,0,_)),d.addSecond(P(0,0,Math.max(u,f)));const[m,U,F]=Gt(e);o.logstr+=m,$.push(U);for(const V of F){const ee=de(0,0).translatePolar(V,a);$.push(P(ee.cx,ee.cy,e.PHD3/2))}const T=J(a+e.PHR4,-e.PHE3).addSegStrokeA(D,-e.PHE3).addSegStrokeA(D,e.PHE3).addSegStrokeA(a+e.PHR4,e.PHE3).closeSegStroke();for(const V of F)d.addSecond(T.rotate(0,0,V));d.addMainOI($),o.fig={facePetal:d,faceOuter:i,faceButtress1:c,faceButtress2:n,faceButtress12:l};const p=o.partName,W=Ze();W.addRotation(Math.PI/2,0,0),W.addTranslation(0,e.PHE3/2,0);const I=F.map((V,ee)=>{const w=Ze(W.getMatrix());return w.addRotation(0,0,V),{outName:`subpax_${p}_b2_${ee}`,face:`${p}_faceButtress12`,extrudeMethod:G.eLinearOrtho,length:e.PHE3,rotate:w.getRotation(),translate:w.getTranslation()}}),Z=F.map((V,ee)=>`subpax_${p}_b2_${ee}`),se=e.withOuterCone?[`subpax_${p}_outer`]:[];o.vol={extrudes:[{outName:`subpax_${p}_outer`,face:`${p}_faceOuter`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${p}_petal`,face:`${p}_facePetal`,extrudeMethod:G.eLinearOrtho,length:e.PHE1,rotate:[0,0,0],translate:[0,0,-e.PHE1/2]},...I],volumes:[{outName:`pax_${p}`,boolMethod:ce.eUnion,inList:[`subpax_${p}_petal`,...se,...Z]}]},o.sub={},o.logstr+=`vaxis_holder drawn successfully!
|
|
41
|
+
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var Ee={pTitle:"Heliostat vaxis_holder",pDescription:"The holders of the guidance mechanism for azimuth motion",pDef:nt,pGeom:qt},ct={partName:"pole_static",params:[t("D1","mm",1e3,20,4e3,1),t("D2","mm",700,10,4e3,1),t("D3","mm",800,10,4e3,1),t("H1","mm",3e3,10,4e4,10),t("H2","mm",7e3,50,4e4,10),z("thickness"),t("E1","mm",30,1,80,1),t("E2","mm",5,1,80,1),z("base holes"),t("N1","",32,3,100,1),t("D5","mm",40,1,100,1),t("L1","mm",45,1,300,1),z("door"),t("D4","mm",600,1,1200,1),t("H3","mm",300,5,1200,1),t("H4","mm",1800,10,2500,1),t("L2","mm",30,1,100,1),t("E3","mm",40,1,100,1),z("holders"),ve("holders",!0),t("PHL1A","mm",400,1,1e3,1),t("PHL1B","mm",400,1,1e3,1),t("PHB","mm",5e3,1,2e4,1),t("PHD1A","mm",600,1,4e3,1),t("PHD1B","mm",380,1,4e3,1),t("PHN1AB","petal",6,1,24,1),z("holder-B"),t("PHD5B2","mm",600,1,4e3,1),t("PHD5B1","mm",600,1,4e3,1),t("PHR4B","mm",30,1,400,1),t("PHD3B","mm",40,1,400,1),t("PHL2B","mm",140,1,400,1),t("PHE3B","mm",10,1,50,1),t("PHR6B","mm",20,0,400,1),t("PHE1B","mm",10,1,50,1),t("PHH1B","mm",10,1,50,1),z("holder-A"),t("PHD5A","mm",900,1,4e3,1),t("PHR4A","mm",30,1,400,1),t("PHD3A","mm",40,1,400,1),t("PHL2A","mm",200,1,400,1),t("PHE3A","mm",10,1,50,1),t("PHR6A","mm",20,0,400,1),t("PHE1A","mm",10,1,50,1),t("PHH1A","mm",10,1,50,1)],paramSvg:{D1:"pole_stator_cut.svg",D2:"pole_stator_cut.svg",D3:"pole_stator_cut.svg",H1:"pole_stator_cut.svg",H2:"pole_stator_cut.svg",E1:"pole_stator_cut.svg",E2:"pole_stator_E2.svg",N1:"pole_stator_bottom.svg",D5:"pole_stator_bottom.svg",L1:"pole_stator_bottom.svg",D4:"pole_stator_face.svg",H3:"pole_stator_face.svg",H4:"pole_stator_face.svg",L2:"pole_stator_face.svg",E3:"pole_stator_right.svg",holders:"pole_stator_holders.svg",PHL1A:"pole_stator_holders.svg",PHL1B:"pole_stator_holders.svg",PHB:"pole_stator_holders.svg",PHD1A:"pole_stator_holders.svg",PHD1B:"pole_stator_holders.svg",PHN1AB:"pole_stator_holderB_top.svg",PHD5A:"pole_stator_holderB_top.svg",PHR4A:"pole_stator_holderB_top.svg",PHD3A:"pole_stator_holderB_top.svg",PHL2A:"pole_stator_holderB_top.svg",PHE3A:"pole_stator_holderB_top.svg",PHR6A:"pole_stator_holderB_top.svg",PHE1A:"pole_stator_holderB_section.svg",PHH1A:"pole_stator_holderB_section.svg",PHD5B1:"pole_stator_holderB_top.svg",PHD5B2:"pole_stator_holderB_top.svg",PHR4B:"pole_stator_holderB_top.svg",PHD3B:"pole_stator_holderB_top.svg",PHL2B:"pole_stator_holderB_top.svg",PHE3B:"pole_stator_holderB_top.svg",PHR6B:"pole_stator_holderB_top.svg",PHE1B:"pole_stator_holderB_section.svg",PHH1B:"pole_stator_holderB_section.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Wt(s,e,S=""){const o=ue(ct.partName+S),i=B(),d=B(),c=B(),n=B(),l=B(),h=B(),a=B(),_=B(),g=B(),r=B(),u=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
42
42
|
`;try{const f=e.D1/2,H=e.D2/2,k=e.D3/2,M=e.H1+e.H2,D=Math.atan2(f-H,e.H2),b=e.E2*Math.tan(D/2),N=e.H1-b,R=e.PHL1B/Math.cos(D),v=H+e.PHL1B/2*Math.tan(D),E=e.H1+e.H2-e.PHL1B/2,x=H+(e.PHL1B/2+e.PHB)*Math.tan(D),O=e.H1+e.H2-e.PHL1B/2-e.PHB,C=e.PHL1A/Math.cos(D),$=f-e.PHL1A/2*Math.tan(D),m=e.H1+e.PHL1A/2;if(H>f)throw`err091: D2 ${e.D2} is larger than D1 ${e.D1}`;if(k+e.E2>f)throw`err095: D3 ${e.D3} and E2 ${e.E2} are too large compare to D1 ${e.D1}`;if(e.holders){if(e.PHB<e.PHL1B)throw`err131: PHB ${e.PHB} is too small compare to PHL1B ${e.PHL1B}`;if(e.PHB>e.H2-e.PHL1B-e.PHL1A)throw`err132: PHB ${e.PHB} is too large compare to H2 ${e.H2}, PHL1B ${e.PHL1B} and PHL1A ${e.PHL1A}`}o.logstr+=`pole-height: ${L(M)} mm
|
|
43
|
-
`,o.logstr+=`cone-half-angle: ${L(
|
|
43
|
+
`,o.logstr+=`cone-half-angle: ${L(he(D))} degree
|
|
44
44
|
`,o.logstr+=`holder position: A: ${L(m)} B1: ${L(O)} B2: ${L(E)} mm
|
|
45
|
-
`;const
|
|
46
|
-
`,o.calcErr=!1}catch(f){o.logstr+=f,console.log(f)}return o}var
|
|
47
|
-
`;try{const u=Math.PI/2,f=-Math.PI/2,H=e.D1/2,k=e.D2/2,M=e.D3/2,D=e.D4/2,b=e.D5/2,N=e.D6/2,R=e.D7/2,v=e.D8/2,E=e.D4-2*e.E4,x=e.H1+e.H2,O=x-e.H4+e.H5,C=4*e.L4+e.L5+2*e.L6,$=e.H1+e.H2-e.H4,m=D*Math.cos(Math.PI/6),
|
|
45
|
+
`;const U=function(A){let j=H-e.E2*Math.cos(D);return j+=(M-e.E2*Math.sin(D)-A)*Math.tan(D),j},F=function(A,j){const X=J(A*f,0).addSegStrokeA(A*f,e.H1).addSegStrokeA(A*H,M).addSegStrokeR(-A*e.E2*Math.cos(D),-e.E2*Math.sin(D));if(j&&e.holders){const ge=e.H1+e.PHL1A/2-e.PHE1A/2,ne=ge+e.PHE1A,ae=M-e.PHL1B/2+e.PHE1B/2,te=ae-e.PHE1B,K=ae-e.PHB,Se=K-e.PHE1B;X.addSegStrokeA(A*U(ae),ae).addSegStrokeA(A*(e.PHD1B/2-e.PHR4B),ae).addSegStrokeA(A*(e.PHD1B/2-e.PHR4B),te).addSegStrokeA(A*U(te),te).addSegStrokeA(A*U(K),K).addSegStrokeA(A*(e.PHD1B/2-e.PHR4B),K).addSegStrokeA(A*(e.PHD1B/2-e.PHR4B),Se).addSegStrokeA(A*U(Se),Se).addSegStrokeA(A*U(ne),ne).addSegStrokeA(A*(e.PHD1A/2-e.PHR4A),ne).addSegStrokeA(A*(e.PHD1A/2-e.PHR4A),ge).addSegStrokeA(A*U(ge),ge)}return X.addSegStrokeA(A*(f-e.E2),N),j?X.addSegStrokeA(A*(f-e.E2),e.E1).addSegStrokeA(A*k,e.E1).addSegStrokeA(A*k,0):X.addSegStrokeA(A*(f-e.E2),0),X.closeSegStroke(),X};i.addMainO(F(1,!1)),i.addSecond(F(1,!0)),i.addSecond(F(-1,!0));const T=e.D4/2,p=e.H4-2*T;if(p<0)throw`err121: H4 ${e.H4} is too small compare to D4 ${e.D4}`;if(T-e.L2<0)throw`err121: D4 ${e.D4} is too small compare to L2 ${e.L2}`;const W=function(A){const j=T-A;return Et(0,e.H3+T-j,2*j,p+2*j,Math.PI/2)};d.addMainOI([W(0),W(e.L2)]);const I=J(f,0).addSegStrokeA(f,e.H1).addSegStrokeA(H,M).addSegStrokeA(-H,M).addSegStrokeA(-f,e.H1).addSegStrokeA(-f,0).closeSegStroke();d.addSecond(I);const Z=J(-f,e.H3).addSegStrokeR(0,e.H4).addSegStrokeR(-e.E3,0).addSegStrokeR(0,-e.H4).closeSegStroke();d.addSecond(Z);const se=[];se.push(P(0,0,f)),se.push(P(0,0,k));const V=k+e.L1,ee=2*Math.PI/e.N1;for(let A=0;A<e.N1;A++){const j=V*Math.cos(A*ee),X=V*Math.sin(A*ee);se.push(P(j,X,e.D5/2))}c.addSecond(P(0,0,H)),c.addSecond(P(0,0,f-e.E2)),c.addMainOI(se),n.addMainOI([P(0,0,f+e.E3),P(0,0,f-e.E2)]),l.addMainO(W(e.L2));const w=o.partName,q=[],ie=[];let y={};if(e.holders){const j=fe(Ee.pDef,"B2");j.setVal("PHD1",e.PHD1B),j.setVal("PHD2",2*v),j.setVal("PHD5",e.PHD5B2),j.setVal("PHN1",e.PHN1AB),j.setVal("PHD3",e.PHD3B),j.setVal("PHR4",e.PHR4B),j.setVal("PHL2",e.PHL2B),j.setVal("PHR6",e.PHR6B),j.setVal("PHE1",e.PHE1B),j.setVal("PHH1",e.PHH1B),j.setVal("PHA",he(D)),j.setVal("PHL1",R),j.setVal("PHE2",e.E2),j.setVal("PHE3",e.PHE3B),j.setVal("withOuterCone",1);const X=Ee.pGeom(0,j.getParamVal(),j.getSuffix());Le(X),o.logstr+=He(X.logstr,j.getPartNameSuffix()),h.mergeFigure(X.fig.faceOuter),a.mergeFigure(X.fig.facePetal);const ge={outName:`inpax_${w}_hB2`,subdesign:"pax_vaxis_holderB2",subgeom:X,rotate:[0,0,0],translate:[0,0,E]};q.push(ge),ie.push(`inpax_${w}_hB2`);const ne=fe(Ee.pDef,"B1");ne.setVal("PHD1",e.PHD1B),ne.setVal("PHD2",2*x),ne.setVal("PHD5",e.PHD5B1),ne.setVal("PHN1",e.PHN1AB),ne.setVal("PHD3",e.PHD3B),ne.setVal("PHR4",e.PHR4B),ne.setVal("PHL2",e.PHL2B),ne.setVal("PHR6",e.PHR6B),ne.setVal("PHE1",e.PHE1B),ne.setVal("PHH1",e.PHH1B),ne.setVal("PHA",he(D)),ne.setVal("PHL1",R),ne.setVal("PHE2",e.E2),ne.setVal("PHE3",e.PHE3B),ne.setVal("withOuterCone",1);const ae=Ee.pGeom(0,ne.getParamVal(),ne.getSuffix());Le(ae),o.logstr+=He(ae.logstr,ne.getPartNameSuffix()),_.mergeFigure(ae.fig.faceOuter),g.mergeFigure(ae.fig.facePetal);const te={outName:`inpax_${w}_hB1`,subdesign:"pax_vaxis_holderB1",subgeom:ae,rotate:[0,0,0],translate:[0,0,O]};q.push(te),ie.push(`inpax_${w}_hB1`);const K=fe(Ee.pDef,"A");K.setVal("PHD1",e.PHD1A),K.setVal("PHD2",2*$),K.setVal("PHD5",e.PHD5A),K.setVal("PHN1",e.PHN1AB),K.setVal("PHD3",e.PHD3A),K.setVal("PHR4",e.PHR4A),K.setVal("PHL2",e.PHL2A),K.setVal("PHR6",e.PHR6A),K.setVal("PHE1",e.PHE1A),K.setVal("PHH1",e.PHH1A),K.setVal("PHA",he(D)),K.setVal("PHL1",C),K.setVal("PHE2",e.E2),K.setVal("PHE3",e.PHE3A),K.setVal("withOuterCone",1);const Se=Ee.pGeom(0,K.getParamVal(),K.getSuffix());Le(Se),o.logstr+=He(Se.logstr,K.getPartNameSuffix()),r.mergeFigure(Se.fig.faceOuter),u.mergeFigure(Se.fig.facePetal);const De={outName:`inpax_${w}_hA`,subdesign:"pax_vaxis_holderA",subgeom:Se,rotate:[0,0,0],translate:[0,0,m]};q.push(De),ie.push(`inpax_${w}_hA`),y={vaxis_holder_B2:{partName:j.getPartName(),dparam:j.getDesignParamList(),orientation:[0,0,0],position:[0,0,E]},vaxis_holder_B1:{partName:ne.getPartName(),dparam:ne.getDesignParamList(),orientation:[0,0,0],position:[0,0,O]},vaxis_holder_A:{partName:K.getPartName(),dparam:K.getDesignParamList(),orientation:[0,0,0],position:[0,0,m]}}}o.fig={poleCut:i,poleFace:d,poleBottom:c,emptyPole:n,emptyDoor:l,holderB2Section:h,holderB2Top:a,holderB1Section:_,holderB1Top:g,holderASection:r,holderATop:u},o.vol={inherits:q,extrudes:[{outName:`subpax_${w}_pole`,face:`${w}_poleCut`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${w}_bottom`,face:`${w}_poleBottom`,extrudeMethod:G.eLinearOrtho,length:e.E1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${w}_door`,face:`${w}_poleFace`,extrudeMethod:G.eLinearOrtho,length:f+e.E3,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${w}_emptyPole`,face:`${w}_emptyPole`,extrudeMethod:G.eLinearOrtho,length:e.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${w}_emptyDoor`,face:`${w}_emptyDoor`,extrudeMethod:G.eLinearOrtho,length:f+e.E3+10,rotate:[Math.PI/2,0,0],translate:[0,0,0]}],volumes:[{outName:`ipax_${w}_door`,boolMethod:ce.eIntersection,inList:[`subpax_${w}_door`,`subpax_${w}_emptyPole`]},{outName:`ipax_${w}_pole`,boolMethod:ce.eSubstraction,inList:[`subpax_${w}_pole`,`subpax_${w}_emptyDoor`]},{outName:`pax_${w}`,boolMethod:ce.eUnion,inList:[`ipax_${w}_pole`,`subpax_${w}_bottom`,`ipax_${w}_door`,...ie]}]},o.sub=y,o.logstr+=`pole_static drawn successfully!
|
|
46
|
+
`,o.calcErr=!1}catch(f){o.logstr+=f,console.log(f)}return o}var Re={pTitle:"Heliostat pole static",pDescription:"The vertical pole of an heliostat",pDef:ct,pGeom:Wt},rt={partName:"rake",params:[t("D1","mm",600,10,4e3,1),t("D2","mm",400,10,4e3,1),t("D3","mm",400,10,4e3,1),t("H1","mm",800,1,4e3,1),t("H2","mm",3e3,20,6e3,1),t("H3","mm",400,0,4e3,1),t("E1","mm",20,1,80,1),t("E3","mm",30,1,80,1),z("transversal"),t("H4","mm",400,10,1e3,1),t("D4","mm",300,10,1e3,1),t("E4","mm",20,1,80,1),t("H5","mm",1e3,10,2e3,1),t("D5","mm",200,1,1e3,1),t("L4","mm",300,1,1e3,1),t("L5","mm",2e3,10,4e3,1),t("L6","mm",2e3,1,4e3,1),t("D8","mm",400,1,1e3,1),z("diagonal"),t("D6","mm",100,1,600,1),t("E6","mm",10,1,80,1),t("L7","mm",100,1,1e3,1),t("L8","mm",200,1,1e3,1),z("base"),t("N1","",24,3,100,1),t("D7","mm",40,1,100,1),t("L1","mm",30,1,300,1),z("door"),t("H6","mm",100,1,1e3,1),t("H7","mm",600,10,2e3,1),t("L9","mm",300,1,1e3,1),t("R9","mm",50,0,300,1),t("doorOrientation","degree",0,-180,180,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Yt(s,e,S=""){const o=ue(rt.partName+S),i=B(),d=B(),c=B(),n=B(),l=B(),h=B(),a=B(),_=B(),g=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
47
|
+
`;try{const u=Math.PI/2,f=-Math.PI/2,H=e.D1/2,k=e.D2/2,M=e.D3/2,D=e.D4/2,b=e.D5/2,N=e.D6/2,R=e.D7/2,v=e.D8/2,E=e.D4-2*e.E4,x=e.H1+e.H2,O=x-e.H4+e.H5,C=4*e.L4+e.L5+2*e.L6,$=e.H1+e.H2-e.H4,m=D*Math.cos(Math.PI/6),U=D*Math.sin(Math.PI/6),F=b*Math.cos(Math.PI/6),T=b*Math.sin(Math.PI/6),p=v*Math.cos(Math.PI/6),W=v*Math.sin(Math.PI/6),I=[-C/2,-e.L5/2-e.L4,e.L5/2,C/2-e.L4],Z=e.H2-e.L8-e.H4-D,se=Math.atan2(H-k,e.H2),V=C/2-e.L7-H+e.L8*Math.tan(se),ee=Math.sqrt(V**2+Z**2),w=Math.atan2(V,Z),q=e.E1/Math.sin(w+se),ie=ee+e.E4/Math.cos(w)+q,y=H-e.L8*Math.tan(se)-q*Math.sin(w),A=e.H1+e.L8-q*Math.cos(w),j=y-N*Math.cos(w),X=A+N*Math.sin(w),ge=N-e.E6,ne=y-e.E6*Math.cos(w),ae=A+e.E6*Math.sin(w),te=Math.PI/2-w,K=e.L9/2,Se=K-e.H7*Math.tan(se);if(e.D2>e.D1)throw`err110: D2 ${e.D2} is larger than D1 ${e.D1}`;if(e.D3+e.E1>e.D1)throw`err113: D3 ${e.D3} is too large compare to D1 ${e.D1} and E1 ${e.E1}`;if(e.H3+e.E3>e.H1)throw`err116: H3 ${e.H3} is too large compare to H1 ${e.H1} and E3 ${e.E3}`;if(e.H4+D>e.H2)throw`err119: H4 ${e.H4} is too large compare to H2 ${e.H2} and D4 ${e.D4}`;if(e.E4>D)throw`err122: E4 ${e.E4} is too large compare to D4 ${e.D4}`;if(e.D8<=e.D5)throw`err146: D8 ${e.D8} is too small compare to D5 ${e.D5}`;if(Z<0)throw`err140: H2 ${e.H2} too small compare to L8 ${e.L8}, H4 ${e.H4} and D4 ${e.D4}`;if(Se<e.R9)throw`err177: R9 ${e.R9} too large compare to doorHighX ${Se} and L9 ${e.L9}`;if(e.L9>e.D1)throw`err180: L9 ${e.L9} too large compare to D1 ${e.D1}`;if(e.E6>e.D6/2)throw`err197: E6 ${e.E6} is too large compare to D6 ${e.D6}`;o.logstr+=`rake-L4: ${L(e.L4)} mm (compare with swing)
|
|
48
48
|
`,o.logstr+=`rake-L5: ${L(e.L5)} mm (compare with swing)
|
|
49
49
|
`,o.logstr+=`rake-L6: ${L(e.L6)} mm (compare with swing)
|
|
50
50
|
`,o.logstr+=`rake-beamL (4*L4+L5+2*L6): ${L(C)} mm (compare with swing)
|
|
51
51
|
`,o.logstr+=`cone-height: ${L(x)} mm
|
|
52
52
|
`,o.logstr+=`cone-height total: ${L(O)} mm
|
|
53
|
-
`,o.logstr+=`cone-angle: ${L(
|
|
54
|
-
`,o.logstr+=`wing-angle: ${L(
|
|
55
|
-
`;const
|
|
56
|
-
`,o.calcErr=!1}catch(r){o.logstr+=r,console.log(r)}return o}var
|
|
57
|
-
`;try{const h=e.D1/2;if(e.D1<e.E2)throw`err476: D1 ${e.D1} smaller then E2 ${e.E2}`;const a=e.E2/2,
|
|
58
|
-
`,o.logstr+=`spide position angle: ${L(
|
|
59
|
-
`;const C=[],$=J(a,-
|
|
60
|
-
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var
|
|
61
|
-
`;try{const h=e.D1/2,a=h+e.S2,
|
|
53
|
+
`,o.logstr+=`cone-angle: ${L(he(se))} degree
|
|
54
|
+
`,o.logstr+=`wing-angle: ${L(he(w))} degree
|
|
55
|
+
`;const De=e.E1*Math.cos(se),$e=e.E1*Math.sin(se),Q=e.E1*Math.tan(se/2),Pt=function(re){return J(re*H,0).addSegStrokeA(re*H,e.H1).addSegStrokeA(re*k,x).addSegStrokeA(re*(k-De),x-$e).addSegStrokeA(re*(H-e.E1),e.H1-Q).addSegStrokeA(re*(H-e.E1),0).closeSegStroke()},be=function(re){return J(re*H,0).addSegStrokeA(re*H,e.H1).addSegStrokeA(re*k,x).addSegStrokeA(re*(k-De),x-$e).addSegStrokeA(re*(H-e.E1),e.H1-Q).addSegStrokeA(re*(H-e.E1),e.H1-e.H3).addSegStrokeA(re*M,e.H1-e.H3).addSegStrokeA(re*M,e.H1-e.H3-e.E3).addSegStrokeA(re*(H-e.E1),e.H1-e.H3-e.E3).addSegStrokeA(re*(H-e.E1),0).closeSegStroke()},vt=$-D-(e.H1-Q),xt=H-e.E1-Math.tan(se)*vt,$t=J(0,$-D).addSegStrokeA(xt,$-D).addSegStrokeA(H-e.E1,e.H1-Q).addSegStrokeA(H-e.E1,e.H1-e.H3).addSegStrokeA(0,e.H1-e.H3).closeSegStroke(),Te=Mt(-K,e.H1+e.H6,e.L9,2*Se,e.H7,e.R9);i.addMainO(Pt(1)),i.addSecond(be(1)),i.addSecond(be(-1)),i.addSecond(Y(-C/2,$,C,e.D4,0)),i.addSecond(Y(-C/2,$,C,E,0));for(const re of I)i.addSecond(le(re,$+U,e.L4,e.H5-U-T));i.addSecond(we(y,A,ie,2*N,te)),i.addSecond(we(ne,ae,ie,2*ge,te)),i.addSecond(we(-y,A,2*N,ie,w)),i.addSecond(we(-ne,ae,2*ge,ie,w)),i.addSecond(Te),d.mergeFigure(i,!0),d.addMainO($t);const Fe=[],pe=J(m,$+U).addSegStrokeA(p,$+e.H5-W).addSegStrokeA(F,$+e.H5-T).addPointA(-F,$+e.H5-T).addSegArc(b,!1,!1).addSegStrokeA(-p,$+e.H5-W).addSegStrokeA(-m,$+U).closeSegArc(D,!1,!1);Fe.push(P(0,$,D)),Fe.push(P(0,$,D-e.E4)),c.addSecond(be(1)),c.addSecond(be(-1)),c.addSecond(pe),c.addSecond(P(0,$+e.H5,b)),c.addSecond(Y(0,e.H1+e.L8,Z,2*N,u)),c.addSecond(Y(0,e.H1+e.L8,Z,2*ge,u)),c.addSecond(Te),c.addMainOI(Fe),n.addMainO(P(0,$,D-e.E4)),n.addSecond(P(0,$,D)),n.addSecond(pe);const Ie=[];Ie.push(P(0,0,H)),Ie.push(P(0,0,M));const Ye=M+e.L1,Xe=2*Math.PI/e.N1;for(let re=0;re<e.N1;re++){const ke=Ye*Math.cos(re*Xe),je=Ye*Math.sin(re*Xe);Ie.push(P(ke,je,R))}l.addSecond(P(0,0,H-e.E1)),l.addSecond(P(0,0,k)),l.addSecond(Y(0,-C/2,C,e.D4,u)),l.addSecond(Y(0,-C/2,C,E,u));for(const re of I)l.addSecond(Y(0,re,e.L4,2*m,u)),l.addSecond(Y(0,re,e.L4,2*F,u)),l.addSecond(Y(0,re,e.L4,2*p,u));const Ve=H-e.L8*Math.tan(se);l.addSecond(Y(0,Ve,V,2*N,u)),l.addSecond(Y(0,Ve,V,2*ge,u)),l.addSecond(Y(0,-Ve,V,2*N,f)),l.addSecond(Y(0,-Ve,V,2*ge,f)),l.addMainOI(Ie),h.addMainO(pe),h.addSecond(P(0,$,D)),h.addSecond(P(0,$,D-e.E4)),h.addSecond(P(0,$+e.H5,b));const Je=[];Je.push(P(0,0,N)),Je.push(P(0,0,ge)),a.addMainOI(Je),_.addSecond(P(0,0,N)),_.addMainO(P(0,0,ge)),g.addMainO(Te),g.addSecond(be(1)),g.addSecond(be(-1)),g.addSecond(Y(-C/2,$,C,e.D4,0)),g.addSecond(Y(-C/2,$,C,E,0));for(const re of I)g.addSecond(le(re,$+U,e.L4,e.H5-U-T));g.addSecond(we(y,A,ie,2*N,te)),g.addSecond(we(ne,ae,ie,2*ge,te)),g.addSecond(we(-y,A,2*N,ie,w)),g.addSecond(we(-ne,ae,2*ge,ie,w)),o.fig={faceCone:i,faceConeHollow:d,faceBeam:c,faceBeamHollow:n,faceDisc:l,faceHand:h,faceWing:a,faceWingHollow:_,faceDoor:g};const oe=o.partName,wt=I.map((re,ke)=>({outName:`subpax_${oe}_hand_${ke}`,face:`${oe}_faceHand`,extrudeMethod:G.eLinearOrtho,length:e.L4,rotate:[Math.PI/2,0,0],translate:[0,-re,0]}));o.vol={extrudes:[{outName:`subpax_${oe}_cone`,face:`${oe}_faceCone`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${oe}_coneHollow`,face:`${oe}_faceConeHollow`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${oe}_beam`,face:`${oe}_faceBeam`,extrudeMethod:G.eLinearOrtho,length:C,rotate:[Math.PI/2,0,0],translate:[0,C/2,0]},{outName:`subpax_${oe}_beamHollow`,face:`${oe}_faceBeamHollow`,extrudeMethod:G.eLinearOrtho,length:C,rotate:[Math.PI/2,0,0],translate:[0,C/2,0]},{outName:`subpax_${oe}_disc`,face:`${oe}_faceDisc`,extrudeMethod:G.eLinearOrtho,length:e.E3,rotate:[0,0,0],translate:[0,0,e.H1-e.H3-e.E3]},{outName:`subpax_${oe}_wing_right`,face:`${oe}_faceWing`,extrudeMethod:G.eLinearOrtho,length:ie,rotate:[-w,0,0],translate:[0,j,X]},{outName:`subpax_${oe}_wing_left`,face:`${oe}_faceWing`,extrudeMethod:G.eLinearOrtho,length:ie,rotate:[w,0,0],translate:[0,-j,X]},{outName:`subpax_${oe}_wing_hollow_right`,face:`${oe}_faceWingHollow`,extrudeMethod:G.eLinearOrtho,length:ie,rotate:[-w,0,0],translate:[0,j,X]},{outName:`subpax_${oe}_wing_hollow_left`,face:`${oe}_faceWingHollow`,extrudeMethod:G.eLinearOrtho,length:ie,rotate:[w,0,0],translate:[0,-j,X]},{outName:`subpax_${oe}_door`,face:`${oe}_faceDoor`,extrudeMethod:G.eLinearOrtho,length:e.D1,rotate:[Math.PI/2,0,-Math.PI/2+Pe(e.doorOrientation)],translate:[0,0,0]},...wt],volumes:[{outName:`ipax_${oe}_plus`,boolMethod:ce.eUnion,inList:[`subpax_${oe}_cone`,`subpax_${oe}_beam`,`subpax_${oe}_disc`,`subpax_${oe}_hand_0`,`subpax_${oe}_hand_1`,`subpax_${oe}_hand_2`,`subpax_${oe}_hand_3`,`subpax_${oe}_wing_right`,`subpax_${oe}_wing_left`]},{outName:`ipax_${oe}_hollow`,boolMethod:ce.eUnion,inList:[`subpax_${oe}_coneHollow`,`subpax_${oe}_beamHollow`,`subpax_${oe}_wing_hollow_right`,`subpax_${oe}_wing_hollow_left`,`subpax_${oe}_door`]},{outName:`pax_${oe}`,boolMethod:ce.eSubstraction,inList:[`ipax_${oe}_plus`,`ipax_${oe}_hollow`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
|
|
56
|
+
`,o.calcErr=!1}catch(r){o.logstr+=r,console.log(r)}return o}var Ne={pTitle:"Heliostat rake",pDescription:"The rake on top of the V-Axis of the heliostat",pDef:rt,pGeom:Yt},ze={partName:"spider",params:[t("D1","mm",100,1,400,1),t("L1","mm",400,1,1e3,1),t("L2","mm",400,1,1e3,1),t("L3","mm",100,1,400,1),t("L4","mm",3e3,10,8e3,10),z("longitude"),t("L5","mm",2e3,1,8e3,1),t("N1","",6,1,20,1),t("L6","mm",30,1,100,1),z("thickness"),t("E1","mm",3,1,80,1),t("E2","mm",50,1,200,1),t("E3","mm",3,1,80,1),t("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 Xt(s,e,S=""){const o=ue(ze.partName+S);let i,d;const c=B(),n=B(),l=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
57
|
+
`;try{const h=e.D1/2;if(e.D1<e.E2)throw`err476: D1 ${e.D1} smaller then E2 ${e.E2}`;const a=e.E2/2,_=Math.sqrt(h**2-a**2),g=e.L1+e.L2*Math.sqrt(2),r=e.L2+e.L1*Math.sqrt(2),u=e.L4-r;if(u<e.R2)throw`err984: L4 ${e.L4} too small compare to R2 ${e.R2}`;const f=u*Math.cos(Math.PI/4),H=u*Math.sin(Math.PI/4),k=e.E2*Math.cos(Math.PI/4),M=e.E2*Math.sin(Math.PI/4),D=e.E2*Math.tan(Math.PI/8);if(h<e.E1)throw`err092: D1 ${e.D1} too small compare to E1 ${e.E1}`;if(e.L3<e.E2)throw`err994: L3 ${e.L3} smaller than E2 ${e.E2}`;if(e.L3<2*e.E3)throw`err997: L3 ${e.L3} too small compare to E3 ${e.E3}`;const b=(e.L3-e.E2)/2*Math.cos(Math.PI/4),N=g+f+b,R=-e.L1-H+b,v=R-e.E3*Math.sqrt(2);if(e.L5<e.N1*e.L6)throw`err110: L5 ${e.L5} too small compare to N1 ${e.N1} and L6 ${e.L6}`;let E=1;e.N1>1&&(E=(e.L5-e.L6)/(e.N1-1));const x=[...Array(e.N1).keys()].map(T=>T*E);i=function(T,p,W){return J(T,p).addSegStrokeA(T+W*Math.cos(Math.PI/4),p-W*Math.sin(Math.PI/4)).addSegStrokeA(T,p-2*W*Math.sin(Math.PI/4)).addSegStrokeA(T-W*Math.cos(Math.PI/4),p-W*Math.sin(Math.PI/4)).closeSegStroke()},d=function(T,p,W,I){return J(W,I).addSegStrokeA(W+T,I).addSegStrokeA(W+T,I+p).addSegStrokeA(W,I+p).closeSegStroke()};const O=Math.sin(2*Math.PI*s/ze.sim.tMax)*Math.PI/2;o.logstr+=`spide leg number: ${e.N1}
|
|
58
|
+
`,o.logstr+=`spide position angle: ${L(he(O))} degree
|
|
59
|
+
`;const C=[],$=J(a,-_).addCornerRounded(e.R2).addSegStrokeA(a,-e.L1).addCornerRounded(e.R2).addSegStrokeA(g,-e.L1).addCornerRounded(e.R2+e.E2).addSegStrokeA(g+f,-e.L1-H).addSegStrokeA(g+f-k,-e.L1-H-M).addSegStrokeA(g-D,-e.L1-e.E2).addCornerRounded(e.R2).addSegStrokeA(-g+D,-e.L1-e.E2).addCornerRounded(e.R2).addSegStrokeA(-g-f+k,-e.L1-H-M).addSegStrokeA(-g-f,-e.L1-H).addSegStrokeA(-g,-e.L1).addCornerRounded(e.R2+e.E2).addSegStrokeA(-a,-e.L1).addCornerRounded(e.R2).addSegStrokeA(-a,-_).addCornerRounded(e.R2).closeSegArc(h,!0,!1);C.push($),C.push(P(0,0,h-e.E1)),c.addSecond(i(N,R,e.L3)),c.addSecond(i(N,v,e.L3-2*e.E3)),c.addSecond(i(-N,R,e.L3)),c.addSecond(i(-N,v,e.L3-2*e.E3)),c.addMainOI(C),n.addMainOI([P(0,0,h),P(0,0,h-e.E1)]),n.addMainOI([i(N,R,e.L3),i(N,v,e.L3-2*e.E3)]),n.addMainOI([i(-N,R,e.L3),i(-N,v,e.L3-2*e.E3)]),n.addSecond($),l.addSecond(d(e.L5,e.D1,0,-e.D1/2)),l.addSecond(d(e.L5,e.L3,0,-e.L4-e.L3));for(const T of x)l.addSecond(d(e.L6,e.L4,T,-e.L4));o.fig={faceLegs:c.rotate(0,0,O),faceTube:n.rotate(0,0,O),faceBody:l};const m=o.partName,U=x.map((T,p)=>({outName:`subpax_${m}_leg_${p}`,face:`${m}_faceLegs`,extrudeMethod:G.eLinearOrtho,length:e.L6,rotate:[0,0,0],translate:[0,0,T]})),F=x.map((T,p)=>`subpax_${m}_leg_${p}`);o.vol={extrudes:[{outName:`subpax_${m}_tube`,face:`${m}_faceTube`,extrudeMethod:G.eLinearOrtho,length:e.L5,rotate:[0,0,0],translate:[0,0,0]},...U],volumes:[{outName:`pax_${m}`,boolMethod:ce.eUnion,inList:[`subpax_${m}_tube`,...F]}]},o.sub={},o.logstr+=`heliostat-spider drawn successfully!
|
|
60
|
+
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var Ge={pTitle:"Heliostat spider",pDescription:"The spider part for the control of the inclination of the heliostat",pDef:ze,pGeom:Xt},dt={partName:"swing",params:[t("L1","mm",12500,100,4e4,1),t("L2","mm",6e3,100,4e4,1),z("radial"),t("D1","mm",400,1,1e3,1),t("E1","mm",5,1,80,1),t("H2","mm",100,1,400,1),t("H4","mm",100,1,400,1),t("E2","mm",3,1,80,1),t("L3","mm",500,1,4e3,1),z("longitudinal"),t("L4","mm",600,1,4e3,1),t("L5","mm",2e3,1,1e4,1),t("L6","mm",2e3,1,1e4,1),t("H1","mm",100,1,400,1),t("H3","mm",100,1,400,1),t("E3","mm",3,1,80,1),z("buttress"),t("S1","mm",300,0,3e3,1),t("S2","mm",10,0,2e3,1),t("R2","mm",100,0,1e3,1),z("rod overlay"),t("rod1","",10,1,40,1),t("rod2","mm",1300,10,4e3,1),t("rod3","mm",400,10,1e3,1),t("rod4","mm",100,1,400,1)],paramSvg:{L1:"swing_top.svg",L2:"swing_top.svg",L3:"swing_top.svg",L4:"swing_top.svg",L5:"swing_top.svg",L6:"swing_top.svg",D1:"swing_top.svg",H1:"swing_top.svg",H2:"swing_top.svg",H3:"swing_side.svg",H4:"swing_side.svg",E1:"swing_side.svg",E2:"swing_side.svg",E3:"swing_face.svg",S1:"swing_buttress.svg",S2:"swing_buttress.svg",R2:"swing_buttress.svg",rod1:"swing_with_rod.svg",rod2:"swing_with_rod.svg",rod3:"swing_with_rod.svg",rod4:"swing_with_rod.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function jt(s,e,S=""){const o=ue(dt.partName+S),i=B(),d=B(),c=B(),n=B(),l=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
61
|
+
`;try{const h=e.D1/2,a=h+e.S2,_=4*e.L4+e.L5+2*e.L6-2*e.H1,g=e.L4-2*e.H1,r=e.L5+2*e.H1,u=e.L6+2*e.H1;o.logstr+=`swing size: L1 ${L(e.L1)} x L2 ${L(e.L2)} mm
|
|
62
62
|
`,o.logstr+=`rake-L4: ${L(g)} mm (compare with rake)
|
|
63
63
|
`,o.logstr+=`rake-L5: ${L(r)} mm (compare with rake)
|
|
64
64
|
`,o.logstr+=`rake-L6: ${L(u)} mm (compare with rake)
|
|
65
|
-
`,o.logstr+=`rake-beamL: (4*L4+L5+2*L6-2*H1) ${L(
|
|
66
|
-
`,i.addMainOI([P(0,0,h),P(0,0,h-e.E1)]);const f=[-e.L2/2,-e.L3-e.H2,e.L3,e.L2/2-e.H2];for(const F of f)i.addMainOI([
|
|
67
|
-
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var
|
|
65
|
+
`,o.logstr+=`rake-beamL: (4*L4+L5+2*L6-2*H1) ${L(_)} mm (compare with rake)
|
|
66
|
+
`,i.addMainOI([P(0,0,h),P(0,0,h-e.E1)]);const f=[-e.L2/2,-e.L3-e.H2,e.L3,e.L2/2-e.H2];for(const F of f)i.addMainOI([le(F,a-e.H4,e.H2,e.H4),le(F+e.E2,a-e.H4+e.E2,e.H2-2*e.E2,e.H4-2*e.E2)]);i.addSecond(le(-e.L2/2,a,e.L2,e.H3));const H=[];H.push(-e.L1/2),H.push(e.L1/2-e.H1);for(const F of[-e.L5/2-2*e.L4-e.L6,-e.L5/2-e.L4,e.L5/2,e.L5/2+e.L4+e.L6])for(const T of[0,e.L4-e.H1])H.push(F+T);for(const F of H)d.addMainOI([le(F,a,e.H1,e.H3),le(F+e.E3,a+e.E3,e.H1-2*e.E3,e.H3-2*e.E3)]);d.addSecond(le(-e.L1/2,-h,e.L1,e.D1)),d.addSecond(le(-e.L1/2,a-e.H4,e.L1,e.H4));for(const F of H)c.addSecond(le(F,-e.L2/2,e.H1,e.L2));for(const F of f)c.addSecond(le(-e.L1/2,F,e.L1,e.H2));c.addSecond(le(-e.L1/2,-h,e.L1,e.D1));const k=Math.sqrt(a**2+e.S1**2),M=Math.acos(h/k),D=Math.atan2(e.S1,a),b=de(0,0),R=b.translatePolar(Math.PI/2+D,h).rotate(b,M),v=J(-e.L3,a).addSegStrokeA(-e.S1,a).addCornerRounded(e.R2).addSegStrokeA(R.cx,R.cy).addPointA(0,-h).addPointA(-R.cx,R.cy).addSegArc2().addSegStrokeA(e.S1,a).addCornerRounded(e.R2).addSegStrokeA(e.L3,a).addSegStrokeA(e.L3,a+e.E3).addSegStrokeA(-e.L3,a+e.E3).closeSegStroke();n.addMainOI([v,P(0,0,h-e.E1)]),i.addSecond(v);for(const F of H)l.addMainO(le(F,-e.L2/2,e.H1,e.L2));for(const F of f)l.addMainO(le(-e.L1/2,F,e.L1,e.H2));l.addMainO(le(-e.L1/2,-h,e.L1,e.D1));const E=-((e.rod1-1)*e.rod2+e.rod3)/2,x=(e.rod3-e.rod4)/2,O=e.rod3/2,C=1.2*e.L2,$=(C-O)/3,m=-C/2;for(let F=0;F<e.rod1;F++){const T=E+F*e.rod2;l.addSecond(le(T+x,m,e.rod4,C));for(let p=0;p<4;p++)l.addSecond(le(T,m+p*$,e.rod3,O,O/4))}o.fig={faceSide:i,faceFace:d,faceTop:c,faceButtress:n,faceTopWithRods:l};const U=o.partName;o.vol={extrudes:[{outName:`subpax_${U}_side`,face:`${U}_faceSide`,extrudeMethod:G.eLinearOrtho,length:e.L1,rotate:[0,0,0],translate:[0,0,-e.L1/2]},{outName:`subpax_${U}_face`,face:`${U}_faceFace`,extrudeMethod:G.eLinearOrtho,length:e.L2,rotate:[0,Math.PI/2,0],translate:[-e.L2/2,0,0]},...H.map((F,T)=>({outName:`subpax_${U}_buttress_${T}`,face:`${U}_faceButtress`,extrudeMethod:G.eLinearOrtho,length:e.H1,rotate:[0,0,0],translate:[0,0,F]}))],volumes:[{outName:`pax_${U}`,boolMethod:ce.eUnion,inList:[`subpax_${U}_side`,`subpax_${U}_face`,...H.map((F,T)=>`subpax_${U}_buttress_${T}`)]}]},o.sub={},o.logstr+=`heliostat-swing drawn successfully!
|
|
67
|
+
`,o.calcErr=!1}catch(h){o.logstr+=h,console.log(h)}return o}var Ce={pTitle:"Heliostat swing",pDescription:"The swing for the heliostat inclination",pDef:dt,pGeom:jt},Ue={partName:"heliostat",params:[t("H1","mm",3e3,10,4e4,1),t("H2","mm",2500,50,4e4,1),t("D1","mm",1e3,20,4e3,1),t("D2","mm",700,20,4e3,1),t("E1","mm",30,1,80,1),z("rake"),t("H3","mm",200,1,500,1),t("H4","mm",800,1,4e3,1),t("H5","mm",3e3,50,6e3,1),t("H6","mm",200,1,4e3,1),t("H7","mm",800,1,4e3,1),t("H8","mm",200,1,4e3,1),t("D3","mm",900,20,4e3,1),t("D4","mm",400,20,4e3,1),t("D5","mm",300,20,1e3,1),t("D6","mm",200,10,1e3,1),t("D7","mm",400,10,1e3,1),z("rake diagonal"),t("D9","mm",100,1,1e3,1),t("L7","mm",100,1,1e3,1),t("L8","mm",200,1,1e3,1),z("spider"),t("D8","mm",100,1,1e3,1),t("S1","mm",250,1,800,1),t("S2","mm",200,1,800,1),t("E2","mm",50,1,80,1),z("swing"),t("L1","mm",12500,100,4e4,1),t("L2","mm",6e3,100,4e4,1),t("L3","mm",100,1,500,1),t("L4","mm",600,1,4e3,1),t("L5","mm",2e3,10,6e3,1),t("L6","mm",2e3,1,6e3,1),t("H9","mm",100,1,400,1),z("motion amplitude"),t("al","degree",80,0,95,1),t("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 Zt(s,e,S=""){const o=ue(Ue.partName+S),i=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
68
68
|
`;try{const c=e.H1+e.H2-e.H3+e.H4+e.H5-e.H6+e.H7;o.logstr+=`heliostat-height: ${L(c)}, diameter ${L(e.D1)} m
|
|
69
69
|
`,o.logstr+=`heliostat-swing-length: ${L(e.L1)}, width ${L(e.L2)} m
|
|
70
|
-
`;const l=(e.al-e.ar)/2-Math.sin(2*Math.PI*s/
|
|
71
|
-
`;const a=e.H1+e.H2-e.H3,
|
|
72
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var
|
|
73
|
-
`;try{const E=Math.PI,x=Math.PI/2,O=-Math.PI/2,C=e.D1/2,$=e.H1+e.H2,m=$-e.H4+e.H5,
|
|
70
|
+
`;const l=(e.al-e.ar)/2-Math.sin(2*Math.PI*s/Ue.sim.tMax)*(e.al+e.ar)/2,h=Pe(l);o.logstr+=`swing position angle: ${L(he(h))} degree
|
|
71
|
+
`;const a=e.H1+e.H2-e.H3,_=a+e.H4+e.H5-e.H6+e.H7,g=_+e.H8,r=fe(Re.pDef),u=fe(Ne.pDef),f=fe(Ge.pDef),H=fe(Ce.pDef);r.setVal("H1",e.H1),r.setVal("H2",e.H2),r.setVal("D1",e.D1),r.setVal("D2",e.D2),r.setVal("D3",e.D1-6*e.E1),r.setVal("E1",e.E1),r.setVal("E2",e.E1);const k=32,M=(e.D1-6*e.E1)/(k*4);r.setVal("N1",k),r.setVal("D5",M),r.setVal("L1",e.E1+M/2),r.setVal("H3",e.H1/4),r.setVal("H4",e.H1/2),r.setVal("D4",e.H1/4),r.setVal("L2",e.H1/80),r.setVal("E3",e.H1/80),r.setVal("holders",0),u.setVal("H1",e.H4),u.setVal("H2",e.H5),u.setVal("H3",e.H4-2*e.E1),u.setVal("D1",e.D3),u.setVal("D2",e.D4),u.setVal("L9",e.D3/2),u.setVal("H7",e.D3/2*1.6),u.setVal("H6",e.D3/20),u.setVal("R9",e.D3/20),u.setVal("E1",e.E1),u.setVal("E3",e.E1),u.setVal("E4",e.E1),u.setVal("E6",e.E1);const D=e.D2*.6,b=24,N=D/(b*4);if(u.setVal("D3",D),e.D2>e.D3-2*e.E1)throw`err153: D2 ${e.D2} too large compare to D3 ${e.D3} and E1 ${e.E1}`;if(u.setVal("N1",b),u.setVal("D7",N),u.setVal("L1",N),u.setVal("H4",e.H6),u.setVal("D4",e.D5),u.setVal("L7",e.L7),u.setVal("L8",e.L8),u.setVal("D6",e.D9),u.setVal("H5",e.H7+e.H8),u.setVal("D5",e.D6),u.setVal("D8",e.D7),e.D6>=e.D7)throw`err164: D6 ${e.D6} too large compare to D7 ${e.D7}`;const R=e.L4-2*e.L3;if(u.setVal("L4",R),R<=0)throw`err169: L3 ${e.L3} too large compare to L4 ${e.L4}`;u.setVal("L5",e.L5+2*e.L3),u.setVal("L6",e.L6+2*e.L3);const v=e.L5*.96,E=6;if(f.setVal("L5",v),f.setVal("D1",e.D8),f.setVal("L1",e.S1),f.setVal("L2",e.S2),f.setVal("L3",e.E2*2),f.setVal("E1",e.E1),f.setVal("E2",e.E2),f.setVal("E3",e.E1),f.setVal("L4",e.L2/2-e.H8),f.setVal("R2",0),f.setVal("N1",E),f.setVal("L6",v/(E*10)),H.setVal("L2",e.L2),H.setVal("D1",e.D6),H.setVal("H3",e.H9),H.setVal("H4",e.H9),H.setVal("L1",e.L1),e.L1<4*e.L4+2*e.L6+e.L5+2*e.L3)throw`err185: L1 ${e.L1} too small compare to L4 ${e.L4}, L5 ${e.L5}, L6 ${e.L6}`;H.setVal("H1",e.L3),H.setVal("H2",e.L3),H.setVal("L4",e.L4),H.setVal("L5",e.L5),H.setVal("L6",e.L6),H.setVal("L3",e.D7),H.setVal("S1",e.D6/2),H.setVal("R2",0);const x=Re.pGeom(0,r.getParamVal(),r.getSuffix());Le(x),o.logstr+=He(x.logstr,r.getPartNameSuffix());const O=Ne.pGeom(0,u.getParamVal(),u.getSuffix());Le(O),o.logstr+=He(O.logstr,u.getPartNameSuffix());const C=Ge.pGeom(0,f.getParamVal(),f.getSuffix());Le(C),o.logstr+=He(C.logstr,f.getPartNameSuffix());const $=Ce.pGeom(0,H.getParamVal(),H.getSuffix());Le($),o.logstr+=He($.logstr,H.getPartNameSuffix()),i.mergeFigure(x.fig.poleCut),i.mergeFigure(O.fig.faceBeam.translate(0,a)),i.mergeFigure(C.fig.faceLegs.translate(0,_).rotate(0,_,h/2)),i.mergeFigure($.fig.faceSide.translate(0,g).rotate(0,g,h)),d.mergeFigure(x.fig.poleCut),d.mergeFigure(O.fig.faceCone.translate(0,a)),d.mergeFigure(C.fig.faceBody.translate(-v/2,_)),d.mergeFigure($.fig.faceFace.translate(0,g)),o.fig={faceSide:i,faceFace:d};const m=o.partName;o.vol={inherits:[{outName:`inpax_${m}_poleStatic`,subdesign:"pax_pole_static",subgeom:x,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${m}_rake`,subdesign:"pax_rake",subgeom:O,rotate:[0,0,0],translate:[0,0,a]},{outName:`inpax_${m}_swing`,subdesign:"pax_swing",subgeom:$,rotate:[Math.PI/2,0,0],translate:[0,0,g]},{outName:`inpax_${m}_spider`,subdesign:"pax_spider",subgeom:C,rotate:[Math.PI/2,0,0],translate:[0,v/2,_]}],extrudes:[],volumes:[{outName:`pax_${m}`,boolMethod:ce.eUnion,inList:[`inpax_${m}_poleStatic`,`inpax_${m}_rake`,`inpax_${m}_swing`,`inpax_${m}_spider`]}]};const U={partName:r.getPartName(),dparam:r.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]},F={partName:u.getPartName(),dparam:u.getDesignParamList(),orientation:[0,0,0],position:[0,0,a]},T={partName:f.getPartName(),dparam:f.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,v/2,_]},p={partName:H.getPartName(),dparam:H.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,0,g]};o.sub={pole_static_1:U,rake_1:F,spider_1:T,swing_1:p},o.logstr+=`heliostat-overview drawn successfully!
|
|
72
|
+
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var Kt={pTitle:"Heliostat overview",pDescription:"The heliostat inclination mechanism",pDef:Ue,pGeom:Zt},lt={partName:"rake_stopper",params:[t("D1","mm",600,10,4e3,1),t("D2","mm",400,10,4e3,1),t("D3","mm",400,1,4e3,1),t("H1","mm",800,1,4e3,1),t("H2","mm",3e3,20,6e3,1),t("H3","mm",400,0,4e3,1),t("E1","mm",20,1,80,1),t("E3","mm",30,1,80,1),z("transversal"),t("H4","mm",200,1,1e3,1),t("D4","mm",300,1,1e3,1),t("E4","mm",20,1,80,1),t("H5","mm",400,1,2e3,1),t("D5","mm",200,1,1e3,1),t("L4","mm",300,1,1e3,1),t("L5","mm",2e3,1,4e3,1),t("L6","mm",2e3,1,4e3,1),t("D8","mm",400,1,1e3,1),z("diagonal"),t("D6","mm",100,1,600,1),t("E6","mm",10,1,80,1),t("L7","mm",100,1,1e3,1),t("L8","mm",200,1,1e3,1),z("base"),t("N1","",24,3,100,1),t("D7","mm",40,1,100,1),t("L1","mm",30,1,300,1),z("door"),t("H6","mm",100,1,1e3,1),t("H7","mm",600,1,2e3,1),t("L9","mm",300,1,1e3,1),t("R9","mm",50,0,300,1),t("doorOrientation","degree",0,-180,180,1),z("stoppers"),t("S1","mm",100,1,300,1),t("S2","mm",2e3,1,8e3,1),t("S3","mm",100,0,8e3,1),t("E7","mm",5,1,80,1),z("low stopper"),t("JD1","mm",200,1,500,1),t("JE1","mm",5,1,80,1),t("JL1","mm",260,1,2e3,1),t("JH1","mm",20,-500,500,1),t("JS1","mm",100,1,500,1),t("JS2","mm",200,1,500,1),z("high stopper"),t("JD3","mm",200,1,500,1),t("JE3","mm",5,1,80,1),t("JS3","mm",120,1,500,1),t("JD4","mm",200,1,500,1),t("JE4","mm",5,1,80,1),t("JS4","mm",120,1,500,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_side.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",doorOrientation:"rake_door.svg",S1:"rake_side_stopper.svg",S2:"rake_top_stopper.svg",S3:"rake_side_stopper.svg",E7:"rake_side_stopper.svg",JD1:"rake_low_stopper_holder.svg",JE1:"rake_low_stopper_holder.svg",JL1:"rake_low_stopper_holder.svg",JH1:"rake_low_stopper_holder.svg",JS1:"rake_side_stopper.svg",JS2:"rake_top_stopper.svg",JD3:"rake_side_stopper.svg",JE3:"rake_side_stopper.svg",JS3:"rake_top_stopper.svg",JD4:"rake_top_stopper.svg",JE4:"rake_top_stopper.svg",JS4:"rake_side_stopper.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Qt(s,e,S=""){const o=ue(lt.partName+S),i=B(),d=B(),c=B(),n=B(),l=B(),h=B(),a=B(),_=B(),g=B(),r=B(),u=B(),f=B(),H=B(),k=B(),M=B(),D=B(),b=B(),N=B(),R=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
73
|
+
`;try{const E=Math.PI,x=Math.PI/2,O=-Math.PI/2,C=e.D1/2,$=e.H1+e.H2,m=$-e.H4+e.H5,U=m-e.S2,F=e.H1+e.H2-e.H4,T=F+e.D4/2,p=e.H1+e.S3,W=e.L5/2,I=e.S1/2,Z=e.S1-2*e.E7,se=Z/2,V=e.S2-I,ee=U-e.JH1,w=e.JD1/2,q=w-e.JE1,ie=C+e.JS2,y=W-I,A=C+e.JS3,j=e.JD3-2*e.JE3,X=e.D4/2+e.JS4,ge=e.JD4-2*e.JE4;if(2*e.E7>=e.S1)throw`err135: E7 ${e.E7} too large compare to S1 ${e.S1}`;if(e.L5<e.D2)throw`err138: L5 ${e.L5} too small compare to D2 ${e.D2}`;if(U-e.JH1-e.JD1/2<0)throw`err143: S2 ${e.S2} too large compare to H1H5 ${L(m)}`;if(e.JS1<e.S1/2)throw`err144: JS1 ${e.JS1} too small compare to S1 ${e.S1}`;if(e.JE1>e.JD1/2)throw`err145: JE1 ${e.JE1} too large compare to JD1 ${e.JD1}`;if(e.JL1>e.D1)throw`err146: JL1 ${e.JL1} too large compare to D1 ${e.D1}`;if(e.JL1<e.JD1)throw`err147: JL1 ${e.JL1} too small compare to JD1 ${e.JD1}`;if(Math.abs(e.JH1)>e.JD1/2+I)throw`err148: JH1 ${e.JH1} too large compare to JD1 ${e.JD1} and S1 ${e.S1}`;if(e.JS2<e.JS1-I)throw`err149: JS2 ${e.JS2} too small compare to JS1 ${e.JS1} and S1 ${e.S1}`;if(e.S3>e.H2-e.H4)throw`err150: S3 ${e.S3} too large compare to H2 ${e.H2} and H4 ${e.H4}`;if(e.JE3>e.JD3/2)throw`err151: JE3 ${e.JE3} too large compare to JD3 ${e.JD3}`;if(e.JE4>e.JD4/2)throw`err152: JE4 ${e.JE4} too large compare to JD4 ${e.JD4}`;o.logstr+=`cone-height: ${L($)} mm
|
|
74
74
|
`,o.logstr+=`cone-height total: ${L(m)} mm
|
|
75
|
-
`;const
|
|
76
|
-
`,r.addSecond(
|
|
77
|
-
`,o.calcErr=!1}catch(v){o.logstr+=v,console.log(v)}return o}var
|
|
75
|
+
`;const ne=[],ae=[];D.addSecond(Y(-W,U,e.L5,e.S1,0)),D.addSecond(Y(-W,U,e.L5,Z,0)),ne.push(P(-e.JL1/2,ee,w)),ne.push(P(-e.JL1/2,ee,q)),ae.push(P(e.JL1/2,ee,w)),ae.push(P(e.JL1/2,ee,q)),D.addMainOI(ne),D.addMainOI(ae);const te=fe(Ne.pDef);te.setVal("D1",e.D1),te.setVal("D2",e.D2),te.setVal("D3",e.D3),te.setVal("H1",e.H1),te.setVal("H2",e.H2),te.setVal("H3",e.H3),te.setVal("E1",e.E1),te.setVal("E3",e.E3),te.setVal("H4",e.H4),te.setVal("D4",e.D4),te.setVal("E4",e.E4),te.setVal("H5",e.H5),te.setVal("D5",e.D5),te.setVal("L4",e.L4),te.setVal("L5",e.L5),te.setVal("L6",e.L6),te.setVal("D6",e.D6),te.setVal("E6",e.E6),te.setVal("L7",e.L7),te.setVal("L8",e.L8),te.setVal("N1",e.N1),te.setVal("D7",e.D7),te.setVal("L1",e.L1),te.setVal("D8",e.D8),te.setVal("H6",e.H6),te.setVal("H7",e.H7),te.setVal("L9",e.L9),te.setVal("R9",e.R9),te.setVal("doorOrientation",e.doorOrientation);const K=Ne.pGeom(0,te.getParamVal(),te.getSuffix());Le(K),o.logstr+=He(K.logstr,te.getPartNameSuffix()),i.mergeFigure(K.fig.faceCone),i.mergeFigure(D,!0),d.mergeFigure(K.fig.faceBeam),c.mergeFigure(K.fig.faceBeamHollow),n.mergeFigure(K.fig.faceDisc),l.mergeFigure(K.fig.faceHand),h.mergeFigure(K.fig.faceWing),a.mergeFigure(K.fig.faceWingHollow),_.mergeFigure(K.fig.faceDoor),_.mergeFigure(D,!0),g.mergeFigure(K.fig.faceDisc,!0),g.addMainOI([Y(-C-e.JS1,-W,e.L5,e.S1,x),Y(-C-e.JS1,-W,e.L5,Z,x)]),g.addMainOI([Y(V,-W,e.L5,e.S1,x),Y(V,-W,e.L5,Z,x)]),g.addMainOI([Y(0,-W+I,V,e.S1,0),Y(0,-W+I,V,Z,0)]),g.addMainOI([Y(0,W-I,V,e.S1,0),Y(0,W-I,V,Z,0)]),g.addMainOI([Y(0,-C-I,V,e.S1,0),Y(0,-C-I,V,Z,0)]),g.addMainOI([Y(0,C+I,V,e.S1,0),Y(0,C+I,V,Z,0)]),g.addSecond(Y(0,-e.JL1/2,ie,2*w,E)),g.addSecond(Y(0,-e.JL1/2,ie,2*q,E)),g.addSecond(Y(0,e.JL1/2,ie,2*w,E)),g.addSecond(Y(0,e.JL1/2,ie,2*q,E)),g.addSecond(Y(0,0,A,e.JD3,O)),g.addSecond(Y(0,0,A,j,O)),g.addSecond(Y(0,0,A,e.JD3,x)),g.addSecond(Y(0,0,A,j,x)),r.mergeFigure(K.fig.faceBeam,!0),r.addMainOI([P(-C-e.JS1,U,I),P(-C-e.JS1,U,se)]),r.addMainOI([P(V,T+I,I),P(V,T+I,se)]),r.addSecond(Y(0,T+I,V,e.S1,0)),r.addSecond(Y(0,T+I,V,Z,0));const Se=T+I-p,De=Math.sqrt(V**2+Se**2),$e=Math.atan2(Se,V);o.logstr+=`stopper-rod: L ${L(De)} mm, A ${L(he($e))} degree
|
|
76
|
+
`,r.addSecond(Y(0,p,De,e.S1,$e)),r.addSecond(Y(0,p,De,Z,$e)),r.addSecond(Y(0,ee,ie,2*w,E)),r.addSecond(Y(0,ee,ie,2*q,E)),r.addSecond(P(0,p,e.JD3/2)),r.addSecond(P(0,p,e.JD3/2-e.JE3)),r.addSecond(Y(0,F,X,e.JD4,x)),r.addSecond(Y(0,F,X,ge,x)),u.mergeFigure(r,!0),u.addMainO(P(-C-e.JS1,U,se)),u.addMainO(P(e.S2-I,T+I,se)),f.mergeFigure(K.fig.faceCone,!0),f.mergeFigure(D,!0),f.addMainOI([P(-e.L5/2+I,T+I,I),P(-e.L5/2+I,T+I,se)]),f.addMainOI([P(e.L5/2-I,T+I,I),P(e.L5/2-I,T+I,se)]),H.mergeFigure(K.fig.faceCone,!0),H.mergeFigure(D,!0),H.addSecond(P(-e.L5/2+I,T+I,I)),H.addMainO(P(-e.L5/2+I,T+I,se)),H.addSecond(P(e.L5/2-I,T+I,I)),H.addMainO(P(e.L5/2-I,T+I,se)),k.mergeFigure(K.fig.faceCone,!0),k.mergeFigure(D,!0),k.addMainOI([P(-C-I,0,I),P(-C-I,0,se)]),k.addMainOI([P(C+I,0,I),P(C+I,0,se)]),M.mergeFigure(K.fig.faceCone,!0),M.mergeFigure(D,!0),M.addSecond(P(-C-I,0,I)),M.addMainO(P(-C-I,0,se)),M.addSecond(P(C+I,0,I)),M.addMainO(P(C+I,0,se)),b.mergeFigure(K.fig.faceCone,!0),b.mergeFigure(D),b.addSecond(Y(-y,F,X,e.JD4,x)),b.addSecond(Y(-y,F,X,ge,x)),b.addSecond(Y(y,F,X,e.JD4,x)),b.addSecond(Y(y,F,X,ge,x)),b.addSecond(Y(0,p,A,e.JD3,E)),b.addSecond(Y(0,p,A,j,E)),b.addSecond(Y(0,p,A,e.JD3,0)),b.addSecond(Y(0,p,A,j,0)),N.mergeFigure(r,!0),N.addMainOI([P(0,p,e.JD3/2),P(0,p,e.JD3/2-e.JE3)]),R.mergeFigure(g,!0),R.addMainOI([P(0,-y,e.JD4/2),P(0,-y,e.JD4/2-e.JE4)]),R.addMainOI([P(0,y,e.JD4/2),P(0,y,e.JD4/2-e.JE4)]),o.fig={faceCone:i,faceBeam:d,faceBeamHollow:c,faceDisc:n,faceHand:l,faceWing:h,faceWingHollow:a,faceDoor:_,faceStopperTop:g,faceStopperSide:r,faceStopperSideH:u,faceStopperFaceT:f,faceStopperFaceTH:H,faceStopperFaceB:k,faceStopperFaceBH:M,faceLowStopperHolder:b,faceHi1StopperHolder:N,faceHi2StopperHolder:R};const Q=o.partName;o.vol={inherits:[{outName:`inpax_${Q}_rake`,subdesign:"pax_rake",subgeom:K,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${Q}_coneHollow`,subdesign:"subpax_rake_coneHollow",subgeom:K,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${Q}_beamHollow`,subdesign:"subpax_rake_beamHollow",subgeom:K,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[{outName:`subpax_${Q}_stpSide`,face:`${Q}_faceStopperSide`,extrudeMethod:G.eLinearOrtho,length:e.L5,rotate:[Math.PI/2,0,0],translate:[0,e.L5/2,0]},{outName:`subpax_${Q}_stpSideH`,face:`${Q}_faceStopperSideH`,extrudeMethod:G.eLinearOrtho,length:e.L5,rotate:[Math.PI/2,0,0],translate:[0,e.L5/2,0]},{outName:`subpax_${Q}_stpFaceT`,face:`${Q}_faceStopperFaceT`,extrudeMethod:G.eLinearOrtho,length:V,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${Q}_stpFaceTH`,face:`${Q}_faceStopperFaceTH`,extrudeMethod:G.eLinearOrtho,length:V,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${Q}_stpFaceB`,face:`${Q}_faceStopperFaceB`,extrudeMethod:G.eLinearOrtho,length:De,rotate:[Math.PI/2-$e,0,Math.PI/2],translate:[0,0,p]},{outName:`subpax_${Q}_stpFaceBH`,face:`${Q}_faceStopperFaceBH`,extrudeMethod:G.eLinearOrtho,length:De,rotate:[Math.PI/2-$e,0,Math.PI/2],translate:[0,0,p]},{outName:`subpax_${Q}_lowSH`,face:`${Q}_faceLowStopperHolder`,extrudeMethod:G.eLinearOrtho,length:ie,rotate:[Math.PI/2,0,-Math.PI/2],translate:[0,0,0]},{outName:`subpax_${Q}_Hi1SH1`,face:`${Q}_faceHi1StopperHolder`,extrudeMethod:G.eLinearOrtho,length:A,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${Q}_Hi1SH2`,face:`${Q}_faceHi1StopperHolder`,extrudeMethod:G.eLinearOrtho,length:A,rotate:[Math.PI/2,0,Math.PI],translate:[0,0,0]},{outName:`subpax_${Q}_Hi2SH`,face:`${Q}_faceHi2StopperHolder`,extrudeMethod:G.eLinearOrtho,length:X,rotate:[0,0,0],translate:[0,0,F]}],volumes:[{outName:`ipax_${Q}_plus`,boolMethod:ce.eUnion,inList:[`subpax_${Q}_stpSide`,`subpax_${Q}_stpFaceT`,`subpax_${Q}_stpFaceB`,`subpax_${Q}_lowSH`,`subpax_${Q}_Hi1SH1`,`subpax_${Q}_Hi1SH2`,`subpax_${Q}_Hi2SH`]},{outName:`ipax_${Q}_hollow`,boolMethod:ce.eUnion,inList:[`inpax_${Q}_coneHollow`,`inpax_${Q}_beamHollow`,`subpax_${Q}_stpSideH`,`subpax_${Q}_stpFaceTH`,`subpax_${Q}_stpFaceBH`]},{outName:`ipax_${Q}_stopper`,boolMethod:ce.eSubstraction,inList:[`ipax_${Q}_plus`,`ipax_${Q}_hollow`]},{outName:`pax_${Q}`,boolMethod:ce.eUnion,inList:[`inpax_${Q}_rake`,`ipax_${Q}_stopper`]}]},o.sub={},o.logstr+=`heliostat-rake drawn successfully!
|
|
77
|
+
`,o.calcErr=!1}catch(v){o.logstr+=v,console.log(v)}return o}var qe={pTitle:"Heliostat rake with stopper",pDescription:"The rake-stopper on top of the V-Axis of the heliostat",pDef:lt,pGeom:Qt},We={partName:"heliostat_2",params:[t("H1","mm",3e3,10,4e4,1),t("H2","mm",2500,50,4e4,1),t("D1","mm",1e3,20,4e3,1),t("D2","mm",700,20,4e3,1),t("E1","mm",30,1,80,1),z("rake"),t("H3","mm",200,1,500,1),t("H4","mm",800,1,4e3,1),t("H5","mm",3e3,50,6e3,1),t("H6","mm",200,1,4e3,1),t("H7","mm",400,1,4e3,1),t("D3","mm",900,20,4e3,1),t("D4","mm",400,20,4e3,1),t("D5","mm",300,20,1e3,1),t("D6","mm",200,10,1e3,1),t("D7","mm",400,10,1e3,1),z("rake diagonal"),t("D9","mm",100,1,1e3,1),t("L7","mm",100,1,1e3,1),t("L8","mm",200,1,1e3,1),z("rake stopper"),t("S1","mm",100,1,800,1),z("swing"),t("L1","mm",12500,100,4e4,1),t("L2","mm",6e3,100,4e4,1),t("L3","mm",100,1,500,1),t("L4","mm",600,1,4e3,1),t("L5","mm",2e3,10,6e3,1),t("L6","mm",2e3,1,6e3,1),t("H9","mm",100,1,400,1),t("S2","mm",10,0,2e3,1),z("motion amplitude"),t("al","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat2_side_sizing.svg",H4:"heliostat2_side_sizing.svg",H5:"heliostat2_side_sizing.svg",H6:"heliostat2_side_sizing.svg",H7:"heliostat2_side_sizing.svg",H9:"heliostat2_side_sizing.svg",D1:"heliostat2_side_sizing.svg",D2:"heliostat2_side_sizing.svg",D3:"heliostat2_side_sizing.svg",D4:"heliostat2_side_sizing.svg",D5:"heliostat2_side_sizing.svg",D6:"heliostat2_side_sizing.svg",D7:"heliostat2_side_sizing.svg",D9:"heliostat2_face_sizing.svg",E1:"heliostat2_side_sizing.svg",L1:"heliostat2_face_sizing.svg",L2:"heliostat2_side_sizing.svg",L3:"heliostat2_face_sizing.svg",L4:"heliostat2_face_sizing.svg",L5:"heliostat2_face_sizing.svg",L6:"heliostat2_face_sizing.svg",L7:"heliostat2_face_sizing.svg",L8:"heliostat2_face_sizing.svg",S1:"heliostat2_side_sizing.svg",S2:"heliostat2_side_sizing.svg",al:"heliostat2_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function eo(s,e,S=""){const o=ue(We.partName+S),i=B(),d=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
78
78
|
`;try{const n=e.H1+e.H2-e.H3+e.H4+e.H5-e.H6+e.H7;o.logstr+=`heliostat-height: ${L(n)}, diameter ${L(e.D1)} m
|
|
79
79
|
`,o.logstr+=`heliostat-swing-length: ${L(e.L1)}, width ${L(e.L2)} m
|
|
80
|
-
`;const l=e.al*s/
|
|
81
|
-
`;const a=e.H1+e.H2-e.H3,
|
|
82
|
-
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var
|
|
83
|
-
`;try{const a=e.D1/2,
|
|
80
|
+
`;const l=e.al*s/We.sim.tMax,h=Pe(l);o.logstr+=`swing position angle: ${L(he(h))} degree
|
|
81
|
+
`;const a=e.H1+e.H2-e.H3,_=a+e.H4+e.H5-e.H6+e.H7,g=fe(Re.pDef),r=fe(qe.pDef),u=fe(Ce.pDef);g.setVal("H1",e.H1),g.setVal("H2",e.H2),g.setVal("D1",e.D1),g.setVal("D2",e.D2),g.setVal("D3",e.D1-6*e.E1),g.setVal("E1",e.E1),g.setVal("E2",e.E1);const f=32,H=(e.D1-6*e.E1)/(f*4);g.setVal("N1",f),g.setVal("D5",H),g.setVal("L1",e.E1+H/2),g.setVal("H3",e.H1/4),g.setVal("H4",e.H1/2),g.setVal("D4",e.H1/4),g.setVal("L2",e.H1/80),g.setVal("E3",e.H1/80),g.setVal("holders",0),r.setVal("H1",e.H4),r.setVal("H2",e.H5),r.setVal("H3",e.H4-2*e.E1),r.setVal("D1",e.D3),r.setVal("D2",e.D4),r.setVal("L9",e.D3/2),r.setVal("H7",e.D3/2*1.6),r.setVal("H6",e.D3/20),r.setVal("R9",e.D3/20),r.setVal("E1",e.E1),r.setVal("E3",e.E1),r.setVal("E4",e.E1),r.setVal("E6",e.E1),r.setVal("E7",e.E1);const k=e.D2*.6,M=24,D=k/(M*4);if(r.setVal("D3",k),e.D2>e.D3-2*e.E1)throw`err153: D2 ${e.D2} too large compare to D3 ${e.D3} and E1 ${e.E1}`;if(r.setVal("N1",M),r.setVal("D7",D),r.setVal("L1",D),r.setVal("H4",e.H6),r.setVal("D4",e.D5),r.setVal("L7",e.L7),r.setVal("L8",e.L8),r.setVal("D6",e.D9),r.setVal("H5",e.H7),r.setVal("D5",e.D6),r.setVal("D8",e.D7),e.D6>=e.D7)throw`err164: D6 ${e.D6} too large compare to D7 ${e.D7}`;const b=e.L4-2*e.L3;if(r.setVal("L4",b),b<=0)throw`err169: L3 ${e.L3} too large compare to L4 ${e.L4}`;if(r.setVal("L5",e.L5+2*e.L3),r.setVal("L6",e.L6+2*e.L3),r.setVal("S1",e.S1),r.setVal("S2",e.L2/2),r.setVal("S3",0),r.setVal("S3",0),r.setVal("JD1",e.D3/4),r.setVal("JE1",e.E1),r.setVal("JL1",e.D3/3),r.setVal("JH1",0),r.setVal("JS1",e.S1/2),r.setVal("JS2",e.S1/2),r.setVal("JD3",e.D4/4),r.setVal("JE3",e.E1),r.setVal("JS3",e.D4/4),r.setVal("JD4",e.D4/4),r.setVal("JE4",e.E1),r.setVal("JS4",e.D4/4),u.setVal("L2",e.L2),u.setVal("D1",e.D6),u.setVal("H3",e.H9),u.setVal("H4",e.H9),u.setVal("L1",e.L1),e.L1<4*e.L4+2*e.L6+e.L5+2*e.L3)throw`err185: L1 ${e.L1} too small compare to L4 ${e.L4}, L5 ${e.L5}, L6 ${e.L6}`;u.setVal("H1",e.L3),u.setVal("H2",e.L3),u.setVal("L4",e.L4),u.setVal("L5",e.L5),u.setVal("L6",e.L6),u.setVal("L3",e.D7),u.setVal("S1",e.D6/2),u.setVal("S2",e.S2),u.setVal("R2",0);const N=Re.pGeom(0,g.getParamVal(),g.getSuffix());Le(N),o.logstr+=He(N.logstr,g.getPartNameSuffix());const R=qe.pGeom(0,r.getParamVal(),r.getSuffix());Le(R),o.logstr+=He(R.logstr,r.getPartNameSuffix());const v=Ce.pGeom(0,u.getParamVal(),u.getSuffix());Le(v),o.logstr+=He(v.logstr,u.getPartNameSuffix()),i.mergeFigure(N.fig.poleCut),i.mergeFigure(R.fig.faceStopperSide.translate(0,a)),i.mergeFigure(v.fig.faceSide.translate(0,_).rotate(0,_,h)),d.mergeFigure(N.fig.poleCut),d.mergeFigure(R.fig.faceStopperFaceT.translate(0,a)),d.mergeFigure(v.fig.faceFace.translate(0,_)),c.mergeFigure(N.fig.poleBottom.translate(0,0)),c.mergeFigure(R.fig.faceStopperTop.translate(0,0)),c.mergeFigure(v.fig.faceTop.rotate(0,0,Math.PI/2)),o.fig={faceSide:i,faceFace:d,faceTop:c};const E=o.partName;o.vol={inherits:[{outName:`inpax_${E}_poleStatic`,subdesign:"pax_pole_static",subgeom:N,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${E}_rake`,subdesign:"pax_rake_stopper",subgeom:R,rotate:[0,0,0],translate:[0,0,a]},{outName:`inpax_${E}_swing`,subdesign:"pax_swing",subgeom:v,rotate:[Math.PI/2,0,0],translate:[0,0,_]}],extrudes:[],volumes:[{outName:`pax_${E}`,boolMethod:ce.eUnion,inList:[`inpax_${E}_poleStatic`,`inpax_${E}_rake`,`inpax_${E}_swing`]}]};const x=g.getDesignParamList(),O={partName:g.getPartName(),dparam:x,orientation:[0,0,0],position:[0,0,0]},C={partName:r.getPartName(),dparam:r.getDesignParamList(),orientation:[0,0,0],position:[0,0,a]},$={partName:u.getPartName(),dparam:u.getDesignParamList(),orientation:[0,0,0],position:[0,0,_]};o.sub={pole_static_1:O,rake_1:C,swing_1:$},o.logstr+=`heliostat-2-overview drawn successfully!
|
|
82
|
+
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var to={pTitle:"Heliostat-2 overview",pDescription:"The heliostat-2 inclination mechanism",pDef:We,pGeom:eo},gt={partName:"base",params:[t("D1","mm",600,10,4e3,10),t("D2","mm",700,10,4e3,10),t("D3","mm",400,10,4e3,10),t("D4","mm",500,10,4e3,10),t("E1","mm",30,1,80,1),t("E2","mm",30,1,80,1),t("E3","mm",30,1,80,1),t("H1","mm",800,10,4e3,10),t("H2","mm",50,1,4e3,1),z("side holes"),t("H3","mm",400,10,4e3,10),t("N2","",12,1,100,1),t("L2","mm",100,1,400,1),z("base holes"),t("N1","",24,3,100,1),t("D5","mm",40,1,100,1),t("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 oo(s,e,S=""){const o=ue(gt.partName+S);let i,d,c;const n=B(),l=B(),h=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
83
|
+
`;try{const a=e.D1/2,_=e.D2/2,g=e.D3/2,r=e.D4/2,u=e.D5/2,f=e.L2/2;if(_<a)throw`err089: D2 ${e.D2} too small compare to D1 ${e.D1}`;if(r>a-e.E2)throw`err189: D4 ${e.D4} too large compare to D1 ${e.D1} and E2 ${e.E2}`;o.logstr+=`base-height: ${L(e.H1)} mm
|
|
84
84
|
`,o.logstr+=`base-external-diameter: ${L(e.D2)} mm
|
|
85
85
|
`;const H=e.D1*Math.PI/e.N2-e.L2;if(o.logstr+=`inter-hollow: ${L(H)} mm
|
|
86
|
-
`,i=function($){return J($*
|
|
87
|
-
`,o.calcErr=!1}catch(a){o.logstr+=a,console.log(a)}return o}var
|
|
86
|
+
`,i=function($){return J($*_,0).addSegStrokeA($*_,e.E3).addSegStrokeA($*a,e.E3).addSegStrokeA($*a,e.H1).addSegStrokeA($*(a-e.E2),e.H1).addSegStrokeA($*(a-e.E2),e.E3).addSegStrokeA($*r,e.E3).addSegStrokeA($*r,0).closeSegStroke()},d=function($){return J($*_,0).addSegStrokeA($*_,e.E3).addSegStrokeA($*a,e.E3).addSegStrokeA($*a,e.H1).addSegStrokeA($*g,e.H1).addSegStrokeA($*g,e.H1-e.E1).addSegStrokeA($*(a-e.E2),e.H1-e.E1).addSegStrokeA($*(a-e.E2),e.E3).addSegStrokeA($*r,e.E3).addSegStrokeA($*r,0).closeSegStroke()},e.H1<e.E3+e.H2+e.H3+e.E1)throw`err125: H1 ${e.H1} too small compare to E3 ${e.H3}, H2 ${e.H2}, H3 ${e.H3}, E1 ${e.E1}`;if(e.D5>e.H3)throw`err128: D5 ${e.D5} too large compare to H3 ${e.H3}`;const k=2*Math.asin(f/(a-e.E2));if(e.N2*k>2*Math.PI)throw`err132: N2 ${e.N2} too large compare to L2 ${e.L2}, D1 ${e.D1}, E2 ${e.E2}`;const M=e.E3+e.H2+f;c=function($){return J($*f,M).addSegStrokeA($*f,M+e.H3-e.L2).addPointA(-$*f,M+e.H3-e.L2).addSegArc(f,!1,!0).addSegStrokeA(-$*f,M).closeSegArc(f,!1,!0)},n.addMainO(i(1)),n.addSecond(d(1)),n.addSecond(d(-1)),n.addSecond(c(1));const D=[];if(g+e.L1+u>a-e.E2)throw`err127: D3 ${e.D3} too large compare to D1 ${e.D1}, E2 ${e.E2}, L1 ${e.L1}, R5 ${e.D5}`;if(u>e.L1)throw`err130: D5 ${e.D5} too large compare to L1 ${e.L1}`;const b=2*Math.asin(u/(_+e.L1));if(e.N1*b>2*Math.PI)throw`err134: N1 ${e.N1} too large compare to D5 ${e.D5}, L1 ${e.L1}, D2 ${e.D2}`;D.push(P(0,0,a)),D.push(P(0,0,g));const N=g+e.L1,R=2*Math.PI/e.N1;for(let $=0;$<e.N1;$++){const m=N*Math.cos($*R),U=N*Math.sin($*R);D.push(P(m,U,u))}l.addMainOI(D),l.addSecond(P(0,0,a-e.E1)),l.addSecond(P(0,0,_)),l.addSecond(P(0,0,r)),h.addMainO(c(1)),h.addSecond(d(1)),h.addSecond(d(-1)),o.fig={faceCut:n,faceTop:l,faceHollow:h};const v=o.partName,E=2*Math.PI/e.N2,x=[...Array(e.N2).keys()],O=x.map($=>({outName:`subpax_${v}_hollow_${$}`,face:`${v}_faceHollow`,extrudeMethod:G.eLinearOrtho,length:_+e.E2,rotate:[Math.PI/2,0,$*E],translate:[0,0,0]})),C=x.map($=>`subpax_${v}_hollow_${$}`);o.vol={extrudes:[{outName:`subpax_${v}_cut`,face:`${v}_faceCut`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[Math.PI/2,0,0]},{outName:`subpax_${v}_top`,face:`${v}_faceTop`,extrudeMethod:G.eLinearOrtho,length:e.E1,rotate:[0,0,0],translate:[0,0,e.H1-e.E1]},...O],volumes:[{outName:`ipax_${v}_hollows`,boolMethod:ce.eUnion,inList:[...C]},{outName:`ipax_${v}_cylinder`,boolMethod:ce.eSubstraction,inList:[`subpax_${v}_cut`,`ipax_${v}_hollows`]},{outName:`pax_${v}`,boolMethod:ce.eUnion,inList:[`ipax_${v}_cylinder`,`subpax_${v}_top`]}]},o.sub={},o.logstr+=`heliostat-base drawn successfully!
|
|
87
|
+
`,o.calcErr=!1}catch(a){o.logstr+=a,console.log(a)}return o}var so={pTitle:"Heliostat base",pDescription:"The base for the static-pole of the heliostat",pDef:gt,pGeom:oo},ht={partName:"vaxis",params:[t("D1","mm",600,1,4e3,1),t("D2","mm",400,1,4e3,1),t("H1","mm",8e3,10,4e4,10),t("E1","mm",5,1,80,1),t("E2","mm",30,1,80,1),z("base holes"),t("N1","",24,3,100,1),t("D3","mm",40,1,100,1),t("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 io(s,e,S=""){const o=ue(ht.partName+S);let i;const d=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
88
88
|
`;try{const n=e.D1/2,l=e.D2/2,h=e.D3/2;o.logstr+=`vaxis-height: ${L(e.H1)} mm
|
|
89
|
-
`;const a=J(n,0).addSegStrokeA(n,e.H1).addSegStrokeA(n-e.E1,e.H1).addSegStrokeA(n-e.E1,0).closeSegStroke();d.addMainO(a),i=function(f){return J(f*n,0).addSegStrokeA(f*n,e.H1).addSegStrokeA(f*l,e.H1).addSegStrokeA(f*l,e.H1-e.E2).addSegStrokeA(f*(n-e.E1),e.H1-e.E2).addSegStrokeA(f*(n-e.E1),e.E2).addSegStrokeA(f*l,e.E2).addSegStrokeA(f*l,0).closeSegStroke()},d.addSecond(i(1)),d.addSecond(i(-1));const
|
|
90
|
-
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var
|
|
89
|
+
`;const a=J(n,0).addSegStrokeA(n,e.H1).addSegStrokeA(n-e.E1,e.H1).addSegStrokeA(n-e.E1,0).closeSegStroke();d.addMainO(a),i=function(f){return J(f*n,0).addSegStrokeA(f*n,e.H1).addSegStrokeA(f*l,e.H1).addSegStrokeA(f*l,e.H1-e.E2).addSegStrokeA(f*(n-e.E1),e.H1-e.E2).addSegStrokeA(f*(n-e.E1),e.E2).addSegStrokeA(f*l,e.E2).addSegStrokeA(f*l,0).closeSegStroke()},d.addSecond(i(1)),d.addSecond(i(-1));const _=[];_.push(P(0,0,n)),_.push(P(0,0,l));const g=l+e.L1,r=2*Math.PI/e.N1;for(let f=0;f<e.N1;f++){const H=g*Math.cos(f*r),k=g*Math.sin(f*r);_.push(P(H,k,h))}c.addSecond(P(0,0,n-e.E1)),c.addMainOI(_),o.fig={faceCut:d,faceBottom:c};const u=o.partName;o.vol={extrudes:[{outName:`subpax_${u}_pole`,face:`${u}_faceCut`,extrudeMethod:G.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${u}_bottom`,face:`${u}_faceBottom`,extrudeMethod:G.eLinearOrtho,length:e.E2,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${u}_top`,face:`${u}_faceBottom`,extrudeMethod:G.eLinearOrtho,length:e.E2,rotate:[0,0,0],translate:[0,0,e.H1-e.E2]}],volumes:[{outName:`pax_${u}`,boolMethod:ce.eUnion,inList:[`subpax_${u}_pole`,`subpax_${u}_bottom`,`subpax_${u}_top`]}]},o.sub={},o.logstr+=`V-Axis drawn successfully!
|
|
90
|
+
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var no={pTitle:"Heliostat V-Axis",pDescription:"The vertical axis inside the pole of an heliostat",pDef:ht,pGeom:io},at={partName:"ring",params:[t("D1","mm",400,1,2e3,1),t("D3","mm",800,1,4e3,1),t("H1","mm",20,1,100,1),t("H2","mm",100,1,600,1),z("ring holes"),t("N2","",24,3,100,1),t("D2","mm",40,1,100,1),t("L1","mm",45,1,300,1),z("ring fake teeth"),t("N1","",100,3,1e4,1),t("L2","mm",30,1,200,1),t("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 co(s,e,S=""){const o=ue(at.partName+S),i=B(),d=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
91
91
|
`;try{const n=e.D1/2,l=e.D2/2,h=e.D3/2,a=e.H1+e.H2;if(e.L1<l)throw`err203: L1 ${e.L1} too small compare to D2 ${e.D2}`;if(n+e.L1+l>h-e.L2-e.L3)throw`err204: D3 ${e.D3} too small compare to D1 ${e.D1}, L1 ${e.L1}, L2 ${e.L2}, L3 ${e.L3}`;if(2*Math.atan2(l,n+e.L1)>2*Math.PI/e.N2)throw`err205: D2 ${e.D2} too large compare to N2 ${e.N2}`;o.logstr+=`ring-height: ${L(a)} mm
|
|
92
|
-
`;const
|
|
93
|
-
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var
|
|
94
|
-
`;try{const c=e.D1/2,n=e.D3/2,l=e.D4/2,h=e.D6/2,a=e.D7/2,
|
|
95
|
-
`;const g=[],[r,u,f]=
|
|
96
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var
|
|
92
|
+
`;const _=h-e.L3,g=_-e.L2,r=2*Math.PI/(2*e.N1),u=J(_,0);for(let E=0;E<e.N1;E++){const x=2*E+1,O=2*E+2,C=g*Math.cos(x*r),$=g*Math.sin(x*r),m=_*Math.cos(O*r),U=_*Math.sin(O*r);u.addSegStrokeA(C,$).addSegStrokeA(m,U)}const f=[];f.push(P(0,0,h)),f.push(P(0,0,n));const H=n+e.L1,k=2*Math.PI/e.N2;for(let E=0;E<e.N2;E++){const x=H*Math.cos(E*k),O=H*Math.sin(E*k);f.push(P(x,O,l)),d.addSecond(P(x,O,l))}i.addSecond(u),i.addMainOI(f);const M=[];M.push(P(0,0,h)),M.push(u),d.addSecond(P(0,0,n)),d.addMainOI(M);const D=J(n,0).addSegStrokeA(-n,0).addSegStrokeA(-n,-e.H1).addSegStrokeA(n,-e.H1).closeSegStroke(),b=function(E){return J(E*(n+e.L1)+l,0).addSegStrokeR(-2*l,0).addSegStrokeR(0,-e.H1).addSegStrokeR(2*l,0).closeSegStroke()},N=function(E){return J(E*(h-e.L3),-e.H1).addSegStrokeR(-E*e.L2,0).addSegStrokeR(0,-e.H2).addSegStrokeR(E*e.L2,0).closeSegStroke()},R=function(E){return J(E*h,0).addSegStrokeR(-E*(h-n),0).addSegStrokeR(0,-e.H1).addSegStrokeR(E*(h-e.L2-e.L3-n),0).addSegStrokeR(0,-e.H2).addSegStrokeR(E*(e.L2+e.L3),0).closeSegStroke()};c.addSecond(D),c.addSecond(b(1)),c.addSecond(b(-1)),c.addSecond(N(1)),c.addSecond(N(-1)),c.addMainO(R(1)),c.addSecond(R(-1)),o.fig={faceRingBase:i,faceRingTeeth:d,faceSection:c};const v=o.partName;o.vol={extrudes:[{outName:`subpax_${v}_base`,face:`${v}_faceRingBase`,extrudeMethod:G.eLinearOrtho,length:e.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_teeth`,face:`${v}_faceRingTeeth`,extrudeMethod:G.eLinearOrtho,length:a,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${v}`,boolMethod:ce.eUnion,inList:[`subpax_${v}_base`,`subpax_${v}_teeth`]}]},o.sub={},o.logstr+=`ring drawn successfully!
|
|
93
|
+
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var ro={pTitle:"Heliostat ring",pDescription:"The gear ring for adjusting the azimuth of the heliostat",pDef:at,pGeom:co},ut={partName:"ring_guidance",params:[t("D1","mm",700,5,2500,1),t("N1","legs",6,1,24,1),t("D2","mm",600,5,2e3,1),z("leg details"),t("D3","mm",30,1,200,1),t("D4","mm",50,1,200,1),t("L1","mm",90,1,900,1),t("R5","mm",20,0,500,1),z("inner"),t("D6","mm",300,1,1e3,1),t("N2","motors",8,1,200,1),t("L2","mm",50,1,200,1),t("D7","mm",80,1,200,1),z("thickness"),t("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 lo(s,e,S=""){const o=ue(ut.partName+S),i=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
94
|
+
`;try{const c=e.D1/2,n=e.D3/2,l=e.D4/2,h=e.D6/2,a=e.D7/2,_=2*Math.PI/e.N2;if(a>e.L2)throw`err461: D7 ${e.D7} is too large compare to L2 ${e.L2}`;if(e.N2*e.D7>(e.D6+2*e.L2)*Math.PI)throw`err462: N2 ${e.N2} is too large compare to D6 ${e.D6}, D7 ${e.D7} and L2 ${e.L2}`;if(e.D2<e.D6+2*e.L2+2*a)throw`err463: D2 ${e.D2} is too small compare to D6 ${e.D6}, L2 ${e.L2} and D7 ${e.D7}`;o.logstr+=`ring_guidance: Dmax ${L(e.D1+2*l)} mm
|
|
95
|
+
`;const g=[],[r,u,f]=it(e);o.logstr+=r,g.push(u),g.push(P(0,0,h));for(let b=0;b<e.N2;b++)g.push(P(h+e.L2,0,a).rotate(0,0,b*_));for(let b=0;b<e.N1;b++)g.push(P(c,0,n).rotate(0,0,b*f));i.addMainOI(g);const H=function(b,N,R,v){return J(b,N).addSegStrokeR(R,0).addSegStrokeR(0,v).addSegStrokeR(-R,0).closeSegStroke()},k=c-h+l;d.addMainO(H(h,0,k,e.T1)),d.addMainO(H(-h-k,0,k,e.T1)),d.addSecond(H(c-n,0,2*n,e.T1)),d.addSecond(H(-c-n,0,2*n,e.T1));const M=h+e.L2;d.addSecond(H(M-a,0,2*a,e.T1)),d.addSecond(H(-M-a,0,2*a,e.T1)),o.fig={faceTop:i,faceSection:d};const D=o.partName;o.vol={extrudes:[{outName:`subpax_${D}_top`,face:`${D}_faceTop`,extrudeMethod:G.eLinearOrtho,length:e.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${D}`,boolMethod:ce.eIdentity,inList:[`subpax_${D}_top`]}]},o.sub={},o.logstr+=`ring_guidance drawn successfully!
|
|
96
|
+
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var go={pTitle:"Ring-guidance",pDescription:"The guidance of the gear-ring for the heliostat azimuth",pDef:ut,pGeom:lo},_t={partName:"vaxis_guidance",params:[t("D1","mm",700,5,2500,1),t("N1","legs",6,1,24,1),t("D2","mm",600,5,2e3,1),z("leg details"),t("D3","mm",30,1,200,1),t("D4","mm",50,1,200,1),t("L1","mm",90,1,900,1),t("R5","mm",20,0,500,1),z("inner"),t("D6","mm",540,1,1e3,1),t("N2","springs",6,1,24,1),xe("orientation",["ccw","cw","alt"]),t("R7","mm",10,0,100,1),t("L2","mm",100,1,900,1),t("E2","mm",20,1,200,1),z("spring"),t("SA1","degree",0,-45,45,1),t("SE1","mm",10,.1,200,.1),t("SD1","mm",20,1,200,1),t("SD2","mm",10,1,200,1),t("SN1","loops",2,0,8,1),t("SL1","mm",40,1,900,1),t("SL2","mm",70,0,900,1),xe("Send",["round","pike"]),z("thickness"),t("T1","mm",10,1,200,1),t("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 ho(s,e,S=""){const o=ue(_t.partName+S),i=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
97
97
|
`;try{const c=e.D1/2,n=e.D2/2,l=e.D3/2,h=e.D4/2,a=e.D6/2;if(n<a)throw`err466: D6 ${e.D6} is too large compare to D2 ${e.D2}`;o.logstr+=`vaxis_guidance: Dmax ${L(e.D1+2*h)} mm
|
|
98
|
-
`;const
|
|
99
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var
|
|
100
|
-
`;try{const c=e.D5/2,n=e.D8/2,l=e.SD1/2,h=c+e.E5,a=n-e.E8,
|
|
101
|
-
`,i.addSecond(P(0,0,c)),i.addSecond(P(0,0,n));const[H,k]=
|
|
102
|
-
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var
|
|
98
|
+
`;const _=[],[g,r,u]=it(e);o.logstr+=g,_.push(r);for(let D=0;D<e.N1;D++)_.push(P(c,0,l).rotate(0,0,D*u));const[f,H]=Ut(e);o.logstr+=f,_.push(H),i.addSecond(P(0,0,e.Dvaxis/2)),i.addMainOI(_);const k=c-a+h;d.addMainO(le(a,0,k,e.T1)),d.addMainO(le(-a-k,0,k,e.T1)),d.addSecond(le(c-l,0,2*l,e.T1)),d.addSecond(le(-c-l,0,2*l,e.T1)),o.fig={faceTop:i,faceSection:d};const M=o.partName;o.vol={extrudes:[{outName:`subpax_${M}_top`,face:`${M}_faceTop`,extrudeMethod:G.eLinearOrtho,length:e.T1,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${M}`,boolMethod:ce.eIdentity,inList:[`subpax_${M}_top`]}]},o.sub={},o.logstr+=`vaxis_guidance drawn successfully!
|
|
99
|
+
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var ao={pTitle:"Vaxis-guidance",pDescription:"The guidance of the V-Axis for the heliostat azimuth",pDef:_t,pGeom:ho},St={partName:"haxis_guidance",params:[t("D5","mm",600,1,2e3,1),t("D8","mm",1e3,1,2e3,1),z("outer details"),t("E5","mm",1,0,200,1),t("E8","mm",20,1,200,1),t("L5","mm",20,1,200,1),t("R9","mm",20,0,500,1),z("inner spring"),t("SA1","degree",0,-45,45,1),t("SE1","mm",2,.1,100,.1),t("SD1","mm",20,1,200,1),t("SD2","mm",10,1,200,1),t("SN1","springs",7,1,24,1),t("SL1","mm",60,0,500,1),t("SL2","mm",100,0,500,1),xe("Send",["round","pike"]),z("thickness"),t("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 uo(s,e,S=""){const o=ue(St.partName+S),i=B(),d=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
100
|
+
`;try{const c=e.D5/2,n=e.D8/2,l=e.SD1/2,h=c+e.E5,a=n-e.E8,_=2*Math.asin(e.L5/(2*h)),g=Math.PI/12+Pe(e.SA1),r=Math.PI/2+_-g,u=Math.PI-g,f=Math.PI/2-Math.PI/6+g;if(h+l+e.SE1>a)throw`err411: D8 ${e.D8} is too small compare to D5 ${e.D5}, E5 ${e.E5}, E8 ${e.E8}`;if(2*Math.PI/3-2*_<e.R9/a)throw`err412: L5 ${e.L5} is too large compare to R9 ${e.R9}`;o.logstr+=`haxis_guidance: Dinner ${L(2*h)} mm
|
|
101
|
+
`,i.addSecond(P(0,0,c)),i.addSecond(P(0,0,n));const[H,k]=Oe(e,!1),[,M]=Oe(e,!0);o.logstr+=H;const D=Math.PI/2-_,b=-Math.PI/6+_,N=de(0,0),R=N.translatePolar(D,h+e.SE1+l),v=R.translatePolar(D-Math.PI/2,l),E=v.translatePolar(D+Math.PI,l+e.SE1),x=v.translatePolar(D+Math.PI,l),O=E.rotate(v,r),C=N.translatePolar(b,h+e.SE1+l),$=C.translatePolar(b+Math.PI/2,l),m=$.translatePolar(b+Math.PI,l+e.SE1),U=$.translatePolar(b+Math.PI,l),F=U.rotate($,-r),T=J(0,h).addSegStrokeA(E.cx,E.cy).addPointA(O.cx,O.cy).addSegArc(l+e.SE1,!1,!0);T.addPartial(k.rotate(0,0,u).translate(O.cx,O.cy)),T.addPointA(x.cx,x.cy).addPointA(R.cx,R.cy).addSegArc2().addSegStrokeAP(D,a).addCornerRounded(e.R9).addPointAP(b,a).addSegArc(a,!1,!1).addCornerRounded(e.R9).addSegStrokeA(C.cx,C.cy).addPointA(U.cx,U.cy).addPointA(F.cx,F.cy).addSegArc2(),T.addPartial(M.rotate(0,0,f).translate(F.cx,F.cy)),T.addPointA(m.cx,m.cy).addSegArc(l+e.SE1,!1,!0).addSegStrokeAP(-Math.PI/6,h).addSegStrokeAP(-Math.PI/6,n).addPointAP(Math.PI/2,n).addSegArc(n,!1,!0).closeSegStroke(),i.addMainO(T);const p=n*Math.sin(Math.PI/6);d.addMainO(le(0,-p,e.L4,n+p)),d.addSecond(le(0,-n,e.L4,2*n)),d.addSecond(le(0,-c,e.L4,2*c)),o.fig={faceProfile:i,faceSide:d};const W=o.partName;o.vol={extrudes:[{outName:`subpax_${W}_profile`,face:`${W}_faceProfile`,extrudeMethod:G.eLinearOrtho,length:e.L4,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${W}`,boolMethod:ce.eIdentity,inList:[`subpax_${W}_profile`]}]},o.sub={},o.logstr+=`haxis_guidance drawn successfully!
|
|
102
|
+
`,o.calcErr=!1}catch(c){o.logstr+=c,console.log(c)}return o}var _o={pTitle:"Haxis-guidance",pDescription:"The guidance of the H-Axis for the heliostat inclination",pDef:St,pGeom:uo},ft={partName:"rod",params:[t("L1","mm",1e4,100,4e4,10),t("L2","mm",100,2,400,1),t("L3","mm",400,10,1e3,1),t("L4","mm",600,10,1e3,1),t("N1","",10,2,50,1),z("section"),t("H1","mm",200,5,4e3,1),t("E1","mm",2,1,80,1),t("E2","mm",10,1,80,1),z("pad"),t("N3","",2,1,20,1),t("N4","",4,1,20,1),t("R3","mm",100,1,500,1),t("D2","mm",10,1,100,1),t("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,e,S=""){const o=ue(ft.partName+S),i=B(),d=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
103
103
|
`;try{const n=e.D2/2,l=e.L3/(e.N3+1),h=e.L4/(e.N4+1);o.logstr+=`rod-length: ${L(e.L1)} mm
|
|
104
104
|
`;const a=(e.L1-e.L3)/(e.N1-1);o.logstr+=`space-length: ${L(a)} mm
|
|
105
|
-
`;const
|
|
106
|
-
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var
|
|
107
|
-
`;try{if(e.L3>e.L1-e.L5)throw`err595: L3 ${e.L3} too large compare to L1 ${e.L1} and L5 ${e.L5}`;if(e.L4>e.L2-e.L5)throw`err596: L4 ${e.L4} too large compare to L2 ${e.L2} and L5 ${e.L5}`;if(e.H1-e.H2-e.H3<4*e.D3)throw`err597: H1 ${e.H1} too small compare to H2 ${e.H2}, H3 ${e.H3} and D3 ${e.D3}`;const
|
|
108
|
-
`,o.logstr+=`rod-xy-angle: ${L(
|
|
105
|
+
`;const _=function(v){const E=[],x=J(e.L4/2,v).addCornerRounded(e.R3).addSegStrokeA(e.L4/2,v+e.L3).addCornerRounded(e.R3).addSegStrokeA(-e.L4/2,v+e.L3).addCornerRounded(e.R3).addSegStrokeA(-e.L4/2,v).addCornerRounded(e.R3).closeSegStroke();E.push(x);for(let O=1;O<e.N3+1;O++)E.push(P(e.L4/2-e.L7,v+O*l,n)),E.push(P(-e.L4/2+e.L7,v+O*l,n));for(let O=1;O<e.N4+1;O++)E.push(P(-e.L4/2+O*h,v+e.L7,n)),E.push(P(-e.L4/2+O*h,v+e.L3-e.L7,n));return E},g=function(v,E){return J(e.L2/2,v).addSegStrokeA(e.L2/2,v+E).addSegStrokeA(-e.L2/2,v+E).addSegStrokeA(-e.L2/2,v).closeSegStroke()},r=[],u=e.L2/2,f=e.L4/2,H=(e.L2-2*e.E1)/2,k=e.H1-e.E1,M=J(u,0).addSegStrokeA(u,e.H1).addSegStrokeA(-u,e.H1).addSegStrokeA(-u,0).closeSegStroke(),D=J(H,e.E1).addSegStrokeA(H,k).addSegStrokeA(-H,k).addSegStrokeA(-H,e.E1).closeSegStroke(),b=J(f,e.H1).addSegStrokeA(f,e.H1+e.E2).addSegStrokeA(-f,e.H1+e.E2).addSegStrokeA(-f,e.H1).closeSegStroke();r.push(M),r.push(D),i.addSecond(b),i.addMainOI(r),d.addMainOI(_(0)),d.addSecond(g(-e.L3/2,2*e.L3));const N=(e.L1-e.L3)/(e.N1-1);for(let v=0;v<e.N1;v++)c.addMainOI(_(v*N));c.addSecond(g(0,e.L1)),o.fig={faceCut:i,facePlate:d,faceTop:c};const R=o.partName;o.vol={extrudes:[{outName:`subpax_${R}_rod`,face:`${R}_faceCut`,extrudeMethod:G.eLinearOrtho,length:e.L1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${R}_plates`,face:`${R}_faceTop`,extrudeMethod:G.eLinearOrtho,length:e.E2,rotate:[Math.PI/2,0,0],translate:[0,e.E2+e.H1,0]}],volumes:[{outName:`pax_${R}`,boolMethod:ce.eUnion,inList:[`subpax_${R}_rod`,`subpax_${R}_plates`]}]},o.sub={},o.logstr+=`heliostat-rod drawn successfully!
|
|
106
|
+
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var fo={pTitle:"Heliostat rod",pDescription:"The rod of an heliostat-surface",pDef:ft,pGeom:So},Lt={partName:"trapeze",params:[t("L1","mm",1600,10,4e3,1),t("L2","mm",1e3,10,4e3,1),t("L3","mm",400,5,800,1),t("L4","mm",300,5,800,1),z("outer frame"),t("N1","",7,1,20,1),t("N2","",4,1,20,1),t("D1","mm",10,1,40,1),t("L5","mm",100,1,400,1),t("L6","mm",20,1,400,1),t("R1","mm",60,1,400,1),t("R2","mm",20,1,400,1),z("inner pad"),t("N3","",2,1,20,1),t("N4","",2,1,20,1),t("D2","mm",10,1,40,1),t("L7","mm",20,1,400,1),t("R3","mm",20,1,400,1),z("diagonal shaft"),t("D3","mm",30,1,100,1),t("D4","mm",26,1,100,1),t("H1","mm",300,.5,800,.5),t("H2","mm",2,.5,800,.5),t("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 Lo(s,e,S=""){const o=ue(Lt.partName+S);let i,d;const c=B(),n=B(),l=B(),h=B(),a=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
107
|
+
`;try{if(e.L3>e.L1-e.L5)throw`err595: L3 ${e.L3} too large compare to L1 ${e.L1} and L5 ${e.L5}`;if(e.L4>e.L2-e.L5)throw`err596: L4 ${e.L4} too large compare to L2 ${e.L2} and L5 ${e.L5}`;if(e.H1-e.H2-e.H3<4*e.D3)throw`err597: H1 ${e.H1} too small compare to H2 ${e.H2}, H3 ${e.H3} and D3 ${e.D3}`;const _=e.R1*(1-1/Math.sqrt(2)),g=e.R3*(1-1/Math.sqrt(2)),r=e.L2/2-_-(e.L4/2-g),u=e.L1/2-_-(e.L3/2-g),f=Math.sqrt(r**2+u**2),H=e.H1-e.H2-e.H3,k=Math.sqrt(f**2+H**2),M=Math.atan2(H,f),D=Math.atan2(u,r);o.logstr+=`rod-slope: length: ${L(k)} mm, angle: ${L(he(M))} degree
|
|
108
|
+
`,o.logstr+=`rod-xy-angle: ${L(he(D))} degree
|
|
109
109
|
`;const b=e.D3/Math.cos(Math.PI/2-M);o.logstr+=`rod-footprint-length: ${L(b)} mm
|
|
110
|
-
`;const N=Math.sqrt((b/2)**2+(e.D3/2)**2),R=Math.atan2(e.D3,b);i=function(A,
|
|
111
|
-
`,o.calcErr=!1}catch(
|
|
110
|
+
`;const N=Math.sqrt((b/2)**2+(e.D3/2)**2),R=Math.atan2(e.D3,b);i=function(A,j,X){return J(A,j).addPointRP(X+Math.PI-R,N).addSeg2Arcs(X+Math.PI/2,X).addPointRP(X+Math.PI+R,N).addSeg2Arcs(X+Math.PI,X+Math.PI/2).addPointRP(X-R,N).addSeg2Arcs(X+3*Math.PI/2,X+Math.PI).addPointRP(X+R,N).addSeg2Arcs(X,X-Math.PI/2)},d=function(A,j,X){const ge=A+N*Math.cos(X+Math.PI-R),ne=j+N*Math.sin(X+Math.PI-R);return J(ge,ne).addSegStrokeRP(X+Math.PI,f).addSegStrokeRP(X-Math.PI/2,e.D3).addSegStrokeRP(X,f).closeSegStroke()};const v=[];if(e.R1>e.L1/4||e.R1>e.L2/4)throw`err614: R1 ${e.R1} too large compare to L1 ${e.L1} or L2 ${e.L2}`;const E=J(e.L2/2,e.L1/2).addSegStrokeA(-e.L2/2,e.L1/2).addCornerRounded(e.R1).addSegStrokeA(-e.L2/2,-e.L1/2).addCornerRounded(e.R1).addSegStrokeA(e.L2/2,-e.L1/2).addCornerRounded(e.R1).closeSegStroke().addCornerRounded(e.R1);if(e.R2>(e.L1-2*e.L5)/4||e.R2>(e.L2-2*e.L5)/4)throw`err627: R2 ${e.R2} too large compare to L1 ${e.L1}, L2 ${e.L2} and L5 ${e.L5}`;const x=J(e.L2/2-e.L5,e.L1/2-e.L5).addSegStrokeA(-e.L2/2+e.L5,e.L1/2-e.L5).addCornerRounded(e.R2).addSegStrokeA(-e.L2/2+e.L5,-e.L1/2+e.L5).addCornerRounded(e.R2).addSegStrokeA(e.L2/2-e.L5,-e.L1/2+e.L5).addCornerRounded(e.R2).closeSegStroke().addCornerRounded(e.R2);if(e.R3>e.L3/4||e.R3>e.L4/4)throw`err639: R3 ${e.R3} too large compare to L3 ${e.L3} or L4 ${e.L4}`;const O=J(e.L4/2,e.L3/2).addSegStrokeA(-e.L4/2,e.L3/2).addCornerRounded(e.R3).addSegStrokeA(-e.L4/2,-e.L3/2).addCornerRounded(e.R3).addSegStrokeA(e.L4/2,-e.L3/2).addCornerRounded(e.R3).closeSegStroke().addCornerRounded(e.R3);v.push(E),v.push(x),c.addSecond(O);const C=e.L1/(e.N1+1),$=e.L2/(e.N2+1),m=e.L3/(e.N3+1),U=e.L4/(e.N4+1);if(e.L5<e.D1/2+e.L6)throw`err658: L5 ${e.L5} too small compare to D1 ${e.D1} or L6 ${e.L6}`;if(m<e.D2/2+e.L7)throw`err661: D2 ${e.D2} or L7 ${e.L7} too large compare to L3 ${e.l3}`;if(U<e.D2/2+e.L7)throw`err664: D2 ${e.D2} or L7 ${e.L7} too large compare to L4 ${e.l4}`;const F=[];for(let A=1;A<e.N1+1;A++)F.push(P(e.L2/2-e.L6,-e.L1/2+A*C,e.D1/2)),F.push(P(-e.L2/2+e.L6,-e.L1/2+A*C,e.D1/2));for(let A=1;A<e.N2+1;A++)F.push(P(-e.L2/2+A*$,e.L1/2-e.L6,e.D1/2)),F.push(P(-e.L2/2+A*$,-e.L1/2+e.L6,e.D1/2));const T=[];for(let A=1;A<e.N3+1;A++)T.push(P(e.L4/2-e.L7,-e.L3/2+A*m,e.D2/2)),T.push(P(-e.L4/2+e.L7,-e.L3/2+A*m,e.D2/2));for(let A=1;A<e.N4+1;A++)T.push(P(-e.L4/2+A*U,e.L3/2-e.L7,e.D2/2)),T.push(P(-e.L4/2+A*U,-e.L3/2+e.L7,e.D2/2));F.forEach(A=>{v.push(A)}),T.forEach(A=>{c.addSecond(A)}),c.addMainOI(v);const p=[];p.push(i(e.L2/2-_,e.L1/2-_,D)),p.push(i(e.L4/2-g,e.L3/2-g,D)),p.push(i(-e.L2/2+_,e.L1/2-_,Math.PI-D)),p.push(i(-e.L4/2+g,e.L3/2-g,Math.PI-D)),p.push(i(-e.L2/2+_,-e.L1/2+_,Math.PI+D)),p.push(i(-e.L4/2+g,-e.L3/2+g,Math.PI+D)),p.push(i(e.L2/2-_,-e.L1/2+_,-D)),p.push(i(e.L4/2-g,-e.L3/2+g,-D));const W=[];W.push(d(e.L2/2-_,e.L1/2-_,D)),W.push(d(-e.L2/2+_,e.L1/2-_,Math.PI-D)),W.push(d(-e.L2/2+_,-e.L1/2+_,Math.PI+D)),W.push(d(e.L2/2-_,-e.L1/2+_,-D)),p.forEach(A=>{c.addSecond(A)}),W.forEach(A=>{c.addSecond(A)});const I=[];if(I.push(O),T.forEach(A=>{I.push(A)}),n.addSecond(E),n.addSecond(x),F.forEach(A=>{n.addSecond(A)}),p.forEach(A=>{n.addSecond(A)}),W.forEach(A=>{n.addSecond(A)}),n.addMainOI(I),e.D4>=e.D3)throw`err218: D4 ${e.D4} larger than D3 ${e.D3}`;l.addMainO(P(0,0,e.D3/2)),l.addSecond(P(0,0,e.D4/2)),h.addMainO(P(0,0,e.D4/2)),h.addSecond(P(0,0,e.D3/2));const Z=e.D3*Math.cos(M),se=Z/Math.tan(M),V=g+(b/2+se)*Math.cos(D),ee=g+(b/2+se)*Math.sin(D),w=k+2*(b+se+Z),q=w+e.L3+e.L4+Z,ie=J(q,q).addSegStrokeA(-q,q).addSegStrokeA(-q,-q).addSegStrokeA(q,-q).closeSegStroke();a.addMainO(ie),o.fig={faceFrame:c,facePlate:n,faceRod:l,faceRodHollow:h,faceCutRod:a};const y=o.partName;o.vol={extrudes:[{outName:`subpax_${y}_frame`,face:`${y}_faceFrame`,extrudeMethod:G.eLinearOrtho,length:e.H2,rotate:[0,0,0],translate:[0,0,e.H1-e.H2]},{outName:`subpax_${y}_plate`,face:`${y}_facePlate`,extrudeMethod:G.eLinearOrtho,length:e.H3,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${y}_rod1`,face:`${y}_faceRod`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,D],translate:[e.L4/2-V,e.L3/2-ee,e.H3-Z]},{outName:`subpax_${y}_rod2`,face:`${y}_faceRod`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,Math.PI-D],translate:[-e.L4/2+V,e.L3/2-ee,e.H3-Z]},{outName:`subpax_${y}_rod3`,face:`${y}_faceRod`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,Math.PI+D],translate:[-e.L4/2+V,-e.L3/2+ee,e.H3-Z]},{outName:`subpax_${y}_rod4`,face:`${y}_faceRod`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,-D],translate:[e.L4/2-V,-e.L3/2+ee,e.H3-Z]},{outName:`subpax_${y}_rodH1`,face:`${y}_faceRodHollow`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,D],translate:[e.L4/2-V,e.L3/2-ee,e.H3-Z]},{outName:`subpax_${y}_rodH2`,face:`${y}_faceRodHollow`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,Math.PI-D],translate:[-e.L4/2+V,e.L3/2-ee,e.H3-Z]},{outName:`subpax_${y}_rodH3`,face:`${y}_faceRodHollow`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,Math.PI+D],translate:[-e.L4/2+V,-e.L3/2+ee,e.H3-Z]},{outName:`subpax_${y}_rodH4`,face:`${y}_faceRodHollow`,extrudeMethod:G.eLinearOrtho,length:w,rotate:[0,Math.PI/2-M,-D],translate:[e.L4/2-V,-e.L3/2+ee,e.H3-Z]},{outName:`subpax_${y}_cut1`,face:`${y}_faceCutRod`,extrudeMethod:G.eLinearOrtho,length:q,rotate:[0,0,0],translate:[0,0,-q]},{outName:`subpax_${y}_cut2`,face:`${y}_faceCutRod`,extrudeMethod:G.eLinearOrtho,length:q,rotate:[0,0,0],translate:[0,0,e.H1]}],volumes:[{outName:`ipax_${y}_rawRod`,boolMethod:ce.eUnion,inList:[`subpax_${y}_rod1`,`subpax_${y}_rod2`,`subpax_${y}_rod3`,`subpax_${y}_rod4`]},{outName:`ipax_${y}_rodHollow`,boolMethod:ce.eUnion,inList:[`subpax_${y}_rodH1`,`subpax_${y}_rodH2`,`subpax_${y}_rodH3`,`subpax_${y}_rodH4`]},{outName:`ipax_${y}_halfRods`,boolMethod:ce.eSubstraction,inList:[`ipax_${y}_rawRod`,`subpax_${y}_cut1`]},{outName:`ipax_${y}_rods`,boolMethod:ce.eSubstraction,inList:[`ipax_${y}_halfRods`,`subpax_${y}_cut2`]},{outName:`ipax_${y}_plus`,boolMethod:ce.eUnion,inList:[`subpax_${y}_frame`,`subpax_${y}_plate`,`ipax_${y}_rods`]},{outName:`pax_${y}`,boolMethod:ce.eSubstraction,inList:[`ipax_${y}_plus`,`ipax_${y}_rodHollow`]}]},o.sub={},o.logstr+=`trapeze drawn successfully!
|
|
111
|
+
`,o.calcErr=!1}catch(_){o.logstr+=_,console.log(_)}return o}var Ho={pTitle:"Heliostat trapeze",pDescription:"The support of one solar panel. Made out of aluminium for lightness and cooling",pDef:Lt,pGeom:Lo},Ht={partName:"surface",params:[t("LH","mm",1600,10,4e3,1),t("LV","mm",1e3,10,4e3,1),t("LZ","mm",40,0,100,1),t("nx","",9,1,40,1),t("ny","",9,1,40,1),z("main fantasia"),xe("main_direction",["horizontal","vertical"]),ve("crenel",!1),t("first_row","",9,1,40,1),t("second_row","",9,1,40,1),z("horizontal spacing"),t("EH","mm",10,0,1e3,1),ve("EH_gradient",!1),t("EH_sup","mm",500,0,1e3,1),t("EH_cycle","",1,0,3,.05),t("EH_start","",0,0,1,.05),xe("EH_shape",["sinusoid","triangle","sawUp","sawDown"]),z("vertical spacing"),t("EV","mm",10,0,1e3,1),ve("EV_gradient",!1),t("EV_sup","mm",500,0,1e3,1),t("EV_cycle","",1,0,3,.05),t("EV_start","",0,0,1,.05),xe("EV_shape",["sinusoid","triangle","sawUp","sawDown"]),z("solar power"),t("power_efficiency","%",16,0,100,.1),t("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 Do(s,e,S=""){const o=ue(Ht.partName+S);let i;const d=B(),c=B();o.logstr+=`${o.partName} simTime: ${s}
|
|
112
112
|
`;try{const n=e.LH*e.LV/1e6,l=e.solar_power*n*e.power_efficiency/100;o.logstr+=`panel surface: ${L(n)} m2
|
|
113
113
|
`,o.logstr+=`panel power: ${L(l)} W
|
|
114
114
|
`;const h=e.nx*e.ny;o.logstr+=`max panel number: ${h}
|
|
115
115
|
`,o.logstr+=`max panel surface: ${L(h*n)} m2
|
|
116
116
|
`,o.logstr+=`max panel power: ${L(h*l)} W
|
|
117
|
-
`;const a=e.main_direction===1?e.ny:e.nx,
|
|
117
|
+
`;const a=e.main_direction===1?e.ny:e.nx,_=e.main_direction===1?e.nx:e.ny,g=e.main_direction===1?e.EV:e.EH,r=e.main_direction===1?e.EV_gradient:e.EH_gradient,u=e.main_direction===1?e.EV_sup:e.EH_sup,f=e.main_direction===1?e.EV_cycle:e.EH_cycle,H=e.main_direction===1?e.EV_start:e.EH_start,k=e.main_direction===1?e.EV_shape:e.EH_shape,M=e.main_direction===0?e.EV:e.EH,D=e.main_direction===0?e.EV_gradient:e.EH_gradient,b=e.main_direction===0?e.EV_sup:e.EH_sup,N=e.main_direction===0?e.EV_cycle:e.EH_cycle,R=e.main_direction===0?e.EV_start:e.EH_start,v=e.main_direction===0?e.EV_shape:e.EH_shape,E=Math.max(_,e.first_row,e.second_row),x=[];for(let w=0;w<a;w++){const q=(w+1)%2,ie=e.crenel?_-q:_;x.push(ie)}x[0]=e.first_row,x[x.length-1]=e.first_row,a>2&&(x[1]=e.second_row,x[x.length-2]=e.second_row);let O=0;x.forEach(w=>{O+=w}),o.logstr+=`actual panel number: ${O} (${L(100*O/h)} %)
|
|
118
118
|
`,o.logstr+=`actual panel surface: ${L(O*n)} m2
|
|
119
119
|
`,o.logstr+=`actual panel power: ${L(O*l)} W
|
|
120
|
-
`;const C=[];for(let w=0;w<a-1;w++){let
|
|
121
|
-
`,o.logstr+=`global vertical height: ${L(
|
|
120
|
+
`;const C=[];for(let w=0;w<a-1;w++){let q=g;if(r===1){const ie=a>2?a-2:1,y=(H+w*f/ie)%1;switch(k){case 0:q+=u*(1-Math.cos(y*2*Math.PI))/2;break;case 1:q+=u*(1-2*Math.abs(y-.5));break;case 2:q+=u*y;break;case 3:q+=u*(1-y);break;default:q+=u}}C.push(q)}let $=0;const m=[];m.push(0),C.forEach(w=>{$+=w,m.push($)});const U=[];for(let w=0;w<E-1;w++){let q=M;if(D===1){const ie=E>2?E-2:1,y=(R+w*N/ie)%1;switch(v){case 0:q+=b*(1-Math.cos(y*2*Math.PI))/2;break;case 1:q+=b*(1-2*Math.abs(y-.5));break;case 2:q+=b*y;break;case 3:q+=b*(1-y);break;default:q+=b}}U.push(q)}let F=0;const T=[];T.push(0),U.forEach(w=>{F+=w,T.push(F)});let p=0,W=0;e.main_direction===0?(p=a*e.LH+$,W=E*e.LV+F):(p=E*e.LH+F,W=a*e.LV+$);const I=p*W/10**6;o.logstr+=`global horizontal width: ${L(p/1e3)} m
|
|
121
|
+
`,o.logstr+=`global vertical height: ${L(W/1e3)} m
|
|
122
122
|
`,o.logstr+=`global area: ${L(I)} m2
|
|
123
123
|
`,o.logstr+=`area efficiency: ${L(100*O*n/I)} %
|
|
124
|
-
`;const
|
|
125
|
-
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var
|
|
124
|
+
`;const Z=-p/2,se=-W/2;i=function(w,q){return J(w,q).addSegStrokeA(w+e.LH,q).addSegStrokeA(w+e.LH,q+e.LV).addSegStrokeA(w,q+e.LV).closeSegStroke()};const V=[];x.forEach((w,q)=>{const ie=(E-w)%2,y=Math.floor((E-w)/2);for(let A=0;A<w;A++){let j=0,X=0;e.main_direction===0?(j=Z+q*e.LH+m[q],X=se+(y+A)*e.LV+T[y+A],ie===1&&(X+=(e.LV+T[y+A+1]-T[y+A])/2)):(X=se+q*e.LV+m[q],j=Z+(y+A)*e.LH+T[y+A],ie===1&&(j+=(e.LH+T[y+A+1]-T[y+A])/2)),V.push([j,X])}});for(const w of V)d.addMainO(i(w[0],w[1]));c.addMainO(i(0,0)),o.fig={faceSurface:d,faceOnePanel:c};const ee=o.partName;o.vol={extrudes:V.map((w,q)=>({outName:`subpax_${ee}_panel_${q}`,face:`${ee}_faceOnePanel`,extrudeMethod:G.eLinearOrtho,length:e.LZ,rotate:[0,0,0],translate:[w[0],w[1],0]})),volumes:[{outName:`pax_${ee}`,boolMethod:ce.eUnion,inList:V.map((w,q)=>`subpax_${ee}_panel_${q}`)}]},o.sub={},o.logstr+=`panel-surface drawn successfully!
|
|
125
|
+
`,o.calcErr=!1}catch(n){o.logstr+=n,console.log(n)}return o}var Po={pTitle:"Heliostat panel-surface",pDescription:"The surface collecting the solar power",pDef:Ht,pGeom:Do};const Dt={"gear/gear_wheel":Ot,"gear/gear_bar":Ft,"gear/gear_ring":Jt,"gear/gear_epicycloid":zt,"heliostat/heliostat":Kt,"heliostat/heliostat_2":to,"heliostat/base":so,"heliostat/pole_static":Re,"heliostat/vaxis":no,"heliostat/ring":ro,"heliostat/vaxis_holder":Ee,"heliostat/ring_guidance":go,"heliostat/vaxis_guidance":ao,"heliostat/rake":Ne,"heliostat/rake_stopper":qe,"heliostat/haxis_guidance":_o,"heliostat/spider":Ge,"heliostat/swing":Ce,"heliostat/rod":fo,"heliostat/trapeze":Ho,"heliostat/surface":Po};function vo(s){const e=/^.*\//g;return s.replace(e,"")}function xo(s){const e={};for(const S of Object.keys(s)){const o=vo(S);e[o]=`/${S}`}return e}function $o(s){const e=[];for(const S of Object.keys(s))e.push(S);return e}const Mo=xo(Dt),Eo=$o(Dt);export{Dt as a,Mo as b,Eo as d};
|