designix-uis 0.5.3 → 0.5.5
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 -0
- package/dist/designix-uis.js +1 -3
- package/dist/public/_app/immutable/chunks/{entry.EqOSi-Pf.js → entry.BnBscX9s.js} +1 -1
- package/dist/public/_app/immutable/chunks/{index.sDAnq9IB.js → index.IHydPqp2.js} +2 -2
- package/dist/public/_app/immutable/chunks/makeList.BsKrjN6b.js +88 -0
- package/dist/public/_app/immutable/chunks/paths.CBfpPc2G.js +1 -0
- package/dist/public/_app/immutable/chunks/{stores.DIH184JS.js → stores.BKlAuQ9I.js} +1 -1
- package/dist/public/_app/immutable/entry/{app.yRlRJ6sx.js → app.LQWaJM6O.js} +2 -2
- package/dist/public/_app/immutable/entry/start.DK5hR2C-.js +1 -0
- package/dist/public/_app/immutable/nodes/{0.Bp0gFt3a.js → 0.BybmEEOs.js} +1 -1
- package/dist/public/_app/immutable/nodes/{1.ByHqhgYV.js → 1.BL84drKm.js} +1 -1
- package/dist/public/_app/immutable/nodes/{2.DIn8QRS-.js → 2.ChgTZ3YE.js} +1 -1
- package/dist/public/_app/immutable/nodes/{3.DP7zL9Bg.js → 3.C9z3viO7.js} +1 -1
- package/dist/public/_app/version.json +1 -1
- package/dist/public/gear/gear_wheel_wheel.html +13 -13
- package/dist/public/gear/simplified_gear_wheel.html +28 -28
- package/dist/public/heliostat/base.html +13 -13
- package/dist/public/heliostat/heliostat.html +13 -13
- package/dist/public/heliostat/heliostat_2.html +13 -13
- package/dist/public/heliostat/pole_rotor.html +13 -13
- package/dist/public/heliostat/pole_static.html +13 -13
- package/dist/public/heliostat/rake.html +13 -13
- package/dist/public/heliostat/rake_stopper.html +13 -13
- package/dist/public/heliostat/rod.html +13 -13
- package/dist/public/heliostat/spider.html +13 -13
- package/dist/public/heliostat/surface.html +13 -13
- package/dist/public/heliostat/swing.html +13 -13
- package/dist/public/heliostat/trapeze.html +13 -13
- package/dist/public/index.html +11 -11
- package/package.json +1 -1
- package/dist/public/_app/immutable/chunks/makeList.DSNiOEjA.js +0 -88
- package/dist/public/_app/immutable/chunks/paths.rg0K1zCL.js +0 -1
- package/dist/public/_app/immutable/entry/start.Ddsjp3el.js +0 -1
package/README.md
CHANGED
package/dist/designix-uis.js
CHANGED
|
@@ -12,7 +12,7 @@ import getport from "get-port";
|
|
|
12
12
|
// package.json
|
|
13
13
|
var package_default = {
|
|
14
14
|
name: "designix-uis",
|
|
15
|
-
version: "0.5.
|
|
15
|
+
version: "0.5.5",
|
|
16
16
|
description: "mini-server for static content of designix-ui",
|
|
17
17
|
type: "module",
|
|
18
18
|
private: false,
|
|
@@ -168,7 +168,5 @@ async function mini_cli(argv) {
|
|
|
168
168
|
}).strict().parseAsync();
|
|
169
169
|
await mini_server(args.directory, args.browser, args.port);
|
|
170
170
|
}
|
|
171
|
-
console.log("designix-uis says Hello!");
|
|
172
171
|
await mini_cli(process.argv);
|
|
173
|
-
console.log("designix-uis says Bye!");
|
|
174
172
|
//# sourceMappingURL=designix-uis.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as it,s as re,x as oe}from"./scheduler.pWaib8rK.js";import{a as se,b as I}from"./paths.rg0K1zCL.js";new URL("sveltekit-internal://");function ie(t,n){return t==="/"||n==="ignore"?t:n==="never"?t.endsWith("/")?t.slice(0,-1):t:n==="always"&&!t.endsWith("/")?t+"/":t}function ce(t){return t.split("%25").map(decodeURI).join("%25")}function le(t){for(const n in t)t[n]=decodeURIComponent(t[n]);return t}function ct({href:t}){return t.split("#")[0]}const fe=["href","pathname","search","toString","toJSON"];function ue(t,n,e){const r=new URL(t);Object.defineProperty(r,"searchParams",{value:new Proxy(r.searchParams,{get(a,o){if(o==="get"||o==="getAll"||o==="has")return s=>(e(s),a[o](s));n();const i=Reflect.get(a,o);return typeof i=="function"?i.bind(a):i}}),enumerable:!0,configurable:!0});for(const a of fe)Object.defineProperty(r,a,{get(){return n(),t[a]},enumerable:!0,configurable:!0});return r}const de="/__data.json",he=".html__data.json";function pe(t){return t.endsWith(".html")?t.replace(/\.html$/,he):t.replace(/\/$/,"")+de}function ge(...t){let n=5381;for(const e of t)if(typeof e=="string"){let r=e.length;for(;r;)n=n*33^e.charCodeAt(--r)}else if(ArrayBuffer.isView(e)){const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);let a=r.length;for(;a;)n=n*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(n>>>0).toString(36)}function me(t){const n=atob(t),e=new Uint8Array(n.length);for(let r=0;r<n.length;r++)e[r]=n.charCodeAt(r);return e.buffer}const Ot=window.fetch;window.fetch=(t,n)=>((t instanceof Request?t.method:(n==null?void 0:n.method)||"GET")!=="GET"&&F.delete(pt(t)),Ot(t,n));const F=new Map;function _e(t,n){const e=pt(t,n),r=document.querySelector(e);if(r!=null&&r.textContent){let{body:a,...o}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&F.set(e,{body:a,init:o,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=me(a)),Promise.resolve(new Response(a,o))}return window.fetch(t,n)}function ye(t,n,e){if(F.size>0){const r=pt(t,e),a=F.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(e==null?void 0:e.cache))return new Response(a.body,a.init);F.delete(r)}}return window.fetch(n,e)}function pt(t,n){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(t instanceof Request?t.url:t)}]`;if(n!=null&&n.headers||n!=null&&n.body){const a=[];n.headers&&a.push([...new Headers(n.headers)].join(",")),n.body&&(typeof n.body=="string"||ArrayBuffer.isView(n.body))&&a.push(n.body),r+=`[data-hash="${ge(...a)}"]`}return r}const we=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function ve(t){const n=[];return{pattern:t==="/"?/^\/$/:new RegExp(`^${Ee(t).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return n.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const o=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(o)return n.push({name:o[1],matcher:o[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return lt(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return lt(String.fromCharCode(...c.slice(2).split("-").map(f=>parseInt(f,16))));const u=we.exec(c),[,h,g,d,m]=u;return n.push({name:d,matcher:m,optional:!!h,rest:!!g,chained:g?l===1&&i[0]==="":!1}),g?"(.*?)":h?"([^/]*)?":"([^/]+?)"}return lt(c)}).join("")}).join("")}/?$`),params:n}}function be(t){return!/^\([^)]+\)$/.test(t)}function Ee(t){return t.slice(1).split("/").filter(be)}function ke(t,n,e){const r={},a=t.slice(1),o=a.filter(s=>s!==void 0);let i=0;for(let s=0;s<n.length;s+=1){const c=n[s];let l=a[s-i];if(c.chained&&c.rest&&i&&(l=a.slice(s-i,s+1).filter(u=>u).join("/"),i=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||e[c.matcher](l)){r[c.name]=l;const u=n[s+1],h=a[s+1];u&&!u.rest&&u.optional&&h&&c.chained&&(i=0),!u&&!h&&Object.keys(r).length===o.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function lt(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Se({nodes:t,server_loads:n,dictionary:e,matchers:r}){const a=new Set(n);return Object.entries(e).map(([s,[c,l,u]])=>{const{pattern:h,params:g}=ve(s),d={id:s,exec:m=>{const f=h.exec(m);if(f)return ke(f,g,r)},errors:[1,...u||[]].map(m=>t[m]),layouts:[0,...l||[]].map(i),leaf:o(c)};return d.errors.length=d.layouts.length=Math.max(d.errors.length,d.layouts.length),d});function o(s){const c=s<0;return c&&(s=~s),[c,t[s]]}function i(s){return s===void 0?s:[a.has(s),t[s]]}}function jt(t,n=JSON.parse){try{return n(sessionStorage[t])}catch{}}function It(t,n,e=JSON.stringify){const r=e(n);try{sessionStorage[t]=r}catch{}}const N=[];function gt(t,n=it){let e;const r=new Set;function a(s){if(re(t,s)&&(t=s,e)){const c=!N.length;for(const l of r)l[1](),N.push(l,t);if(c){for(let l=0;l<N.length;l+=2)N[l][0](N[l+1]);N.length=0}}}function o(s){a(s(t))}function i(s,c=it){const l=[s,c];return r.add(l),r.size===1&&(e=n(a,o)||it),s(t),()=>{r.delete(l),r.size===0&&e&&(e(),e=null)}}return{set:a,update:o,subscribe:i}}const Ae="1708636410657",$t="sveltekit:snapshot",Dt="sveltekit:scroll",Ct="sveltekit:states",Re="sveltekit:pageurl",$="sveltekit:history",q="sveltekit:navigation",z={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},B=location.origin;function Vt(t){if(t instanceof URL)return t;let n=document.baseURI;if(!n){const e=document.getElementsByTagName("base");n=e.length?e[0].href:document.URL}return new URL(t,n)}function mt(){return{x:pageXOffset,y:pageYOffset}}function O(t,n){return t.getAttribute(`data-sveltekit-${n}`)}const Lt={...z,"":z.hover};function Ft(t){let n=t.assignedSlot??t.parentNode;return(n==null?void 0:n.nodeType)===11&&(n=n.host),n}function qt(t,n){for(;t&&t!==n;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=Ft(t)}}function ut(t,n){let e;try{e=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI)}catch{}const r=t instanceof SVGAElement?t.target.baseVal:t.target,a=!e||!!r||et(e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(e==null?void 0:e.origin)===B&&t.hasAttribute("download");return{url:e,external:a,target:r,download:o}}function Y(t){let n=null,e=null,r=null,a=null,o=null,i=null,s=t;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,"preload-code")),a===null&&(a=O(s,"preload-data")),n===null&&(n=O(s,"keepfocus")),e===null&&(e=O(s,"noscroll")),o===null&&(o=O(s,"reload")),i===null&&(i=O(s,"replacestate")),s=Ft(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Lt[r??"off"],preload_data:Lt[a??"off"],keepfocus:c(n),noscroll:c(e),reload:c(o),replace_state:c(i)}}function Pt(t){const n=gt(t);let e=!0;function r(){e=!0,n.update(i=>i)}function a(i){e=!1,n.set(i)}function o(i){let s;return n.subscribe(c=>{(s===void 0||e&&c!==s)&&i(s=c)})}return{notify:r,set:a,subscribe:o}}function Ie(){const{set:t,subscribe:n}=gt(!1);let e;async function r(){clearTimeout(e);try{const a=await fetch(`${se}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==Ae;return i&&(t(!0),clearTimeout(e)),i}catch{return!1}}return{subscribe:n,check:r}}function et(t,n){return t.origin!==B||!t.pathname.startsWith(n)}const Le=-1,Pe=-2,xe=-3,Ue=-4,Te=-5,Ne=-6;function Oe(t,n){if(typeof t=="number")return a(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const e=t,r=Array(e.length);function a(o,i=!1){if(o===Le)return;if(o===xe)return NaN;if(o===Ue)return 1/0;if(o===Te)return-1/0;if(o===Ne)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const s=e[o];if(!s||typeof s!="object")r[o]=s;else if(Array.isArray(s))if(typeof s[0]=="string"){const c=s[0],l=n==null?void 0:n[c];if(l)return r[o]=l(a(s[1]));switch(c){case"Date":r[o]=new Date(s[1]);break;case"Set":const u=new Set;r[o]=u;for(let d=1;d<s.length;d+=1)u.add(a(s[d]));break;case"Map":const h=new Map;r[o]=h;for(let d=1;d<s.length;d+=2)h.set(a(s[d]),a(s[d+1]));break;case"RegExp":r[o]=new RegExp(s[1],s[2]);break;case"Object":r[o]=Object(s[1]);break;case"BigInt":r[o]=BigInt(s[1]);break;case"null":const g=Object.create(null);r[o]=g;for(let d=1;d<s.length;d+=2)g[s[d]]=a(s[d+1]);break;default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(s.length);r[o]=c;for(let l=0;l<s.length;l+=1){const u=s[l];u!==Pe&&(c[l]=a(u))}}else{const c={};r[o]=c;for(const l in s){const u=s[l];c[l]=a(u)}}return r[o]}return a(0)}const Gt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Gt];const je=new Set([...Gt]);[...je];function $e(t){return t.filter(n=>n!=null)}class nt{constructor(n,e){this.status=n,typeof e=="string"?this.body={message:e}:e?this.body=e:this.body={message:`Error: ${n}`}}toString(){return JSON.stringify(this.body)}}class Ht{constructor(n,e){this.status=n,this.location=e}}class _t extends Error{constructor(n,e,r){super(r),this.status=n,this.text=e}}const De="x-sveltekit-invalidated",Ce="x-sveltekit-trailing-slash";function J(t){return t instanceof nt||t instanceof _t?t.status:500}function Ve(t){return t instanceof _t?t.text:"Internal Error"}const T=jt(Dt)??{},G=jt($t)??{},x={url:Pt({}),page:Pt({}),navigating:gt(null),updated:Ie()};function yt(t){T[t]=mt()}function Fe(t,n){let e=t+1;for(;T[e];)delete T[e],e+=1;for(e=n+1;G[e];)delete G[e],e+=1}function D(t){return location.href=t.href,new Promise(()=>{})}function xt(){}let at,dt,W,L,ht,C;const Mt=[],X=[];let P=null;const Bt=[],qe=[];let j=[],w={branch:[],error:null,url:null},wt=!1,Z=!1,Ut=!0,H=!1,V=!1,Kt=!1,vt=!1,bt,k,A,R,Q;async function Qe(t,n,e){var a,o;document.URL!==location.href&&(location.href=location.href),C=t,at=Se(t),L=document.documentElement,ht=n,dt=t.nodes[0],W=t.nodes[1],dt(),W(),k=(a=history.state)==null?void 0:a[$],A=(o=history.state)==null?void 0:o[q],k||(k=A=Date.now(),history.replaceState({...history.state,[$]:k,[q]:A},""));const r=T[k];r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y)),e?await Je(ht,e):ze(location.href,{replaceState:!0}),Ye()}function Ge(){Mt.length=0,vt=!1}function zt(t){X.some(n=>n==null?void 0:n.snapshot)&&(G[t]=X.map(n=>{var e;return(e=n==null?void 0:n.snapshot)==null?void 0:e.capture()}))}function Yt(t){var n;(n=G[t])==null||n.forEach((e,r)=>{var a,o;(o=(a=X[r])==null?void 0:a.snapshot)==null||o.restore(e)})}function Tt(){yt(k),It(Dt,T),zt(A),It($t,G)}async function Jt(t,n,e,r){return K({type:"goto",url:Vt(t),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:e,nav_token:r,accept:()=>{n.invalidateAll&&(vt=!0)}})}async function He(t){return P={id:t.id,promise:Xt(t).then(n=>(n.type==="loaded"&&n.state.error&&(P=null),n))},P.promise}async function ft(t){const n=at.find(e=>e.exec(Zt(t)));n&&await Promise.all([...n.layouts,n.leaf].map(e=>e==null?void 0:e[1]()))}function Wt(t,n){var a;w=t.state;const e=document.querySelector("style[data-sveltekit]");e&&e.remove(),R=t.props.page,bt=new C.root({target:n,props:{...t.props,stores:x,components:X},hydrate:!0}),Yt(A);const r={from:null,to:{params:w.params,route:{id:((a=w.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};j.forEach(o=>o(r)),Z=!0}async function tt({url:t,params:n,branch:e,status:r,error:a,route:o,form:i}){let s="never";if(I&&(t.pathname===I||t.pathname===I+"/"))s="always";else for(const d of e)(d==null?void 0:d.slash)!==void 0&&(s=d.slash);t.pathname=ie(t.pathname,s),t.search=t.search;const c={type:"loaded",state:{url:t,params:n,branch:e,error:a,route:o},props:{constructors:$e(e).map(d=>d.node.component),page:R}};i!==void 0&&(c.props.form=i);let l={},u=!R,h=0;for(let d=0;d<Math.max(e.length,w.branch.length);d+=1){const m=e[d],f=w.branch[d];(m==null?void 0:m.data)!==(f==null?void 0:f.data)&&(u=!0),m&&(l={...l,...m.data},u&&(c.props[`data_${h}`]=l),h+=1)}return(!w.url||t.href!==w.url.href||w.error!==a||i!==void 0&&i!==R.form||u)&&(c.props.page={error:a,params:n,route:{id:(o==null?void 0:o.id)??null},state:{},status:r,url:new URL(t),form:i??null,data:u?l:R.data}),c}async function Et({loader:t,parent:n,url:e,params:r,route:a,server_data_node:o}){var u,h,g;let i=null,s=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await t();if((u=l.universal)!=null&&u.load){let d=function(...f){for(const _ of f){const{href:v}=new URL(_,e);c.dependencies.add(v)}};const m={route:new Proxy(a,{get:(f,_)=>(s&&(c.route=!0),f[_])}),params:new Proxy(r,{get:(f,_)=>(s&&c.params.add(_),f[_])}),data:(o==null?void 0:o.data)??null,url:ue(e,()=>{s&&(c.url=!0)},f=>{s&&c.search_params.add(f)}),async fetch(f,_){let v;f instanceof Request?(v=f.url,_={body:f.method==="GET"||f.method==="HEAD"?void 0:await f.blob(),cache:f.cache,credentials:f.credentials,headers:f.headers,integrity:f.integrity,keepalive:f.keepalive,method:f.method,mode:f.mode,redirect:f.redirect,referrer:f.referrer,referrerPolicy:f.referrerPolicy,signal:f.signal,..._}):v=f;const S=new URL(v,e);return s&&d(S.href),S.origin===e.origin&&(v=S.href.slice(e.origin.length)),Z?ye(v,S.href,_):_e(v,_)},setHeaders:()=>{},depends:d,parent(){return s&&(c.parent=!0),n()},untrack(f){s=!1;try{return f()}finally{s=!0}}};i=await l.universal.load.call(null,m)??null}return{node:l,loader:t,server:o,universal:(h=l.universal)!=null&&h.load?{type:"data",data:i,uses:c}:null,data:i??(o==null?void 0:o.data)??null,slash:((g=l.universal)==null?void 0:g.trailingSlash)??(o==null?void 0:o.slash)}}function Nt(t,n,e,r,a,o){if(vt)return!0;if(!a)return!1;if(a.parent&&t||a.route&&n||a.url&&e)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(o[i]!==w.params[i])return!0;for(const i of a.dependencies)if(Mt.some(s=>s(new URL(i))))return!0;return!1}function kt(t,n){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?n??null:null}function Me(t,n){if(!t)return new Set(n.searchParams.keys());const e=new Set([...t.searchParams.keys(),...n.searchParams.keys()]);for(const r of e){const a=t.searchParams.getAll(r),o=n.searchParams.getAll(r);a.every(i=>o.includes(i))&&o.every(i=>a.includes(i))&&e.delete(r)}return e}async function Xt({id:t,invalidating:n,url:e,params:r,route:a}){if((P==null?void 0:P.id)===t)return P.promise;const{errors:o,layouts:i,leaf:s}=a,c=[...i,s];o.forEach(p=>p==null?void 0:p().catch(()=>{})),c.forEach(p=>p==null?void 0:p[1]().catch(()=>{}));let l=null;const u=w.url?t!==w.url.pathname+w.url.search:!1,h=w.route?a.id!==w.route.id:!1,g=Me(w.url,e);let d=!1;const m=c.map((p,y)=>{var U;const b=w.branch[y],E=!!(p!=null&&p[0])&&((b==null?void 0:b.loader)!==p[1]||Nt(d,h,u,g,(U=b.server)==null?void 0:U.uses,r));return E&&(d=!0),E});if(m.some(Boolean)){try{l=await ee(e,m)}catch(p){return rt({status:J(p),error:await M(p,{url:e,params:r,route:{id:a.id}}),url:e,route:a})}if(l.type==="redirect")return l}const f=l==null?void 0:l.nodes;let _=!1;const v=c.map(async(p,y)=>{var ot;if(!p)return;const b=w.branch[y],E=f==null?void 0:f[y];if((!E||E.type==="skip")&&p[1]===(b==null?void 0:b.loader)&&!Nt(_,h,u,g,(ot=b.universal)==null?void 0:ot.uses,r))return b;if(_=!0,(E==null?void 0:E.type)==="error")throw E;return Et({loader:p[1],url:e,params:r,route:a,parent:async()=>{var Rt;const At={};for(let st=0;st<y;st+=1)Object.assign(At,(Rt=await v[st])==null?void 0:Rt.data);return At},server_data_node:kt(E===void 0&&p[0]?{type:"skip"}:E??null,p[0]?b==null?void 0:b.server:void 0)})});for(const p of v)p.catch(()=>{});const S=[];for(let p=0;p<c.length;p+=1)if(c[p])try{S.push(await v[p])}catch(y){if(y instanceof Ht)return{type:"redirect",location:y.location};let b=J(y),E;if(f!=null&&f.includes(y))b=y.status??b,E=y.error;else if(y instanceof nt)E=y.body;else{if(await x.updated.check())return await D(e);E=await M(y,{params:r,url:e,route:{id:a.id}})}const U=await Be(p,S,o);return U?await tt({url:e,params:r,branch:S.slice(0,U.idx).concat(U.node),status:b,error:E,route:a}):await te(e,{id:a.id},E,b)}else S.push(void 0);return await tt({url:e,params:r,branch:S,status:200,error:null,route:a,form:n?void 0:null})}async function Be(t,n,e){for(;t--;)if(e[t]){let r=t;for(;!n[r];)r-=1;try{return{idx:r+1,node:{node:await e[t](),loader:e[t],data:{},server:null,universal:null}}}catch{continue}}}async function rt({status:t,error:n,url:e,route:r}){const a={};let o=null;if(C.server_loads[0]===0)try{const l=await ee(e,[!0]);if(l.type!=="data"||l.nodes[0]&&l.nodes[0].type!=="data")throw 0;o=l.nodes[0]??null}catch{(e.origin!==B||e.pathname!==location.pathname||wt)&&await D(e)}const s=await Et({loader:dt,url:e,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:kt(o)}),c={node:await W(),loader:W,universal:null,server:null,data:null};return await tt({url:e,params:a,branch:[s,c],status:t,error:n,route:null})}function St(t,n){if(!t||et(t,I))return;let e;try{e=C.hooks.reroute({url:new URL(t)})??t.pathname}catch{return}const r=Zt(e);for(const a of at){const o=a.exec(r);if(o)return{id:t.pathname+t.search,invalidating:n,route:a,params:le(o),url:t}}}function Zt(t){return ce(t.slice(I.length)||"/")}function Qt({url:t,type:n,intent:e,delta:r}){let a=!1;const o=ae(w,e,t,n);r!==void 0&&(o.navigation.delta=r);const i={...o.navigation,cancel:()=>{a=!0,o.reject(new Error("navigation cancelled"))}};return H||Bt.forEach(s=>s(i)),a?null:o}async function K({type:t,url:n,popped:e,keepfocus:r,noscroll:a,replace_state:o,state:i={},redirect_count:s=0,nav_token:c={},accept:l=xt,block:u=xt}){const h=St(n,!1),g=Qt({url:n,type:t,delta:e==null?void 0:e.delta,intent:h});if(!g){u();return}const d=k,m=A;l(),H=!0,Z&&x.navigating.set(g.navigation),Q=c;let f=h&&await Xt(h);if(!f){if(et(n,I))return await D(n);f=await te(n,{id:null},await M(new _t(404,"Not Found",`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404)}if(n=(h==null?void 0:h.url)||n,Q!==c)return g.reject(new Error("navigation aborted")),!1;if(f.type==="redirect")if(s>=20)f=await rt({status:500,error:await M(new Error("Redirect loop"),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}});else return Jt(new URL(f.location,n).href,{},s+1,c),!1;else f.props.page.status>=400&&await x.updated.check()&&await D(n);if(Ge(),yt(d),zt(m),f.props.page.url.pathname!==n.pathname&&(n.pathname=f.props.page.url.pathname),i=e?e.state:i,!e){const p=o?0:1,y={[$]:k+=p,[q]:A+=p,[Ct]:i};(o?history.replaceState:history.pushState).call(history,y,"",n),o||Fe(k,A)}if(P=null,f.props.page.state=i,Z){w=f.state,f.props.page&&(f.props.page.url=n);const p=(await Promise.all(qe.map(y=>y(g.navigation)))).filter(y=>typeof y=="function");if(p.length>0){let y=function(){j=j.filter(b=>!p.includes(b))};p.push(y),j.push(...p)}bt.$set(f.props),Kt=!0}else Wt(f,ht);const{activeElement:_}=document;await oe();const v=e?e.scroll:a?mt():null;if(Ut){const p=n.hash&&document.getElementById(decodeURIComponent(n.hash.slice(1)));v?scrollTo(v.x,v.y):p?p.scrollIntoView():scrollTo(0,0)}const S=document.activeElement!==_&&document.activeElement!==document.body;!r&&!S&&We(),Ut=!0,f.props.page&&(R=f.props.page),H=!1,t==="popstate"&&Yt(A),g.fulfil(void 0),j.forEach(p=>p(g.navigation)),x.navigating.set(null)}async function te(t,n,e,r){return t.origin===B&&t.pathname===location.pathname&&!wt?await rt({status:r,error:e,url:t,route:n}):await D(t)}function Ke(){let t;L.addEventListener("mousemove",o=>{const i=o.target;clearTimeout(t),t=setTimeout(()=>{r(i,2)},20)});function n(o){r(o.composedPath()[0],1)}L.addEventListener("mousedown",n),L.addEventListener("touchstart",n,{passive:!0});const e=new IntersectionObserver(o=>{for(const i of o)i.isIntersecting&&(ft(i.target.href),e.unobserve(i.target))},{threshold:0});function r(o,i){const s=qt(o,L);if(!s)return;const{url:c,external:l,download:u}=ut(s,I);if(l||u)return;const h=Y(s);if(!h.reload)if(i<=h.preload_data){const g=St(c,!1);g&&He(g)}else i<=h.preload_code&&ft(c.pathname)}function a(){e.disconnect();for(const o of L.querySelectorAll("a")){const{url:i,external:s,download:c}=ut(o,I);if(s||c)continue;const l=Y(o);l.reload||(l.preload_code===z.viewport&&e.observe(o),l.preload_code===z.eager&&ft(i.pathname))}}j.push(a),a()}function M(t,n){if(t instanceof nt)return t.body;const e=J(t),r=Ve(t);return C.hooks.handleError({error:t,event:n,status:e,message:r})??{message:r}}function ze(t,n={}){return t=Vt(t),t.origin!==B?Promise.reject(new Error("goto: invalid URL")):Jt(t,n,0)}function Ye(){var n;history.scrollRestoration="manual",addEventListener("beforeunload",e=>{let r=!1;if(Tt(),!H){const a=ae(w,void 0,null,"leave"),o={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};Bt.forEach(i=>i(o))}r?(e.preventDefault(),e.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Tt()}),(n=navigator.connection)!=null&&n.saveData||Ke(),L.addEventListener("click",e=>{var g;if(e.button||e.which!==1||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.defaultPrevented)return;const r=qt(e.composedPath()[0],L);if(!r)return;const{url:a,external:o,target:i,download:s}=ut(r,I);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const c=Y(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||s)return;if(o||c.reload){Qt({url:a,type:"link"})?H=!0:e.preventDefault();return}const[u,h]=a.href.split("#");if(h!==void 0&&u===ct(location)){const[,d]=w.url.href.split("#");if(d===h){e.preventDefault(),h===""||h==="top"&&r.ownerDocument.getElementById("top")===null?window.scrollTo({top:0}):(g=r.ownerDocument.getElementById(h))==null||g.scrollIntoView();return}if(V=!0,yt(k),t(a),!c.replace_state)return;V=!1}e.preventDefault(),K({type:"link",url:a,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??a.href===location.href})}),L.addEventListener("submit",e=>{if(e.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(e.target),a=e.submitter;if(((a==null?void 0:a.formMethod)||r.method)!=="get")return;const i=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(et(i,I))return;const s=e.target,c=Y(s);if(c.reload)return;e.preventDefault(),e.stopPropagation();const l=new FormData(s),u=a==null?void 0:a.getAttribute("name");u&&l.append(u,(a==null?void 0:a.getAttribute("value"))??""),i.search=new URLSearchParams(l).toString(),K({type:"form",url:i,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??i.href===location.href})}),addEventListener("popstate",async e=>{var r;if((r=e.state)!=null&&r[$]){const a=e.state[$];if(Q={},a===k)return;const o=T[a],i=e.state[Ct]??{},s=new URL(e.state[Re]??location.href),c=e.state[q],l=ct(location)===ct(w.url);if(c===A&&(Kt||l)){t(s),T[k]=mt(),o&&scrollTo(o.x,o.y),i!==R.state&&(R={...R,state:i},bt.$set({page:R})),k=a;return}const h=a-k;await K({type:"popstate",url:s,popped:{state:i,scroll:o,delta:h},accept:()=>{k=a,A=c},block:()=>{history.go(-h)},nav_token:Q})}else if(!V){const a=new URL(location.href);t(a)}}),addEventListener("hashchange",()=>{V&&(V=!1,history.replaceState({...history.state,[$]:++k,[q]:A},"",location.href))});for(const e of document.querySelectorAll("link"))e.rel==="icon"&&(e.href=e.href);addEventListener("pageshow",e=>{e.persisted&&x.navigating.set(null)});function t(e){w.url=e,x.page.set({...R,url:e}),x.page.notify()}}async function Je(t,{status:n=200,error:e,node_ids:r,params:a,route:o,data:i,form:s}){wt=!0;const c=new URL(location.href);({params:a={},route:o={id:null}}=St(c,!1)||{});let l;try{const u=r.map(async(d,m)=>{const f=i[m];return f!=null&&f.uses&&(f.uses=ne(f.uses)),Et({loader:C.nodes[d],url:c,params:a,route:o,parent:async()=>{const _={};for(let v=0;v<m;v+=1)Object.assign(_,(await u[v]).data);return _},server_data_node:kt(f)})}),h=await Promise.all(u),g=at.find(({id:d})=>d===o.id);if(g){const d=g.layouts;for(let m=0;m<d.length;m++)d[m]||h.splice(m,0,void 0)}l=await tt({url:c,params:a,branch:h,status:n,error:e,form:s,route:g??null})}catch(u){if(u instanceof Ht){await D(new URL(u.location,location.href));return}l=await rt({status:J(u),error:await M(u,{url:c,params:a,route:o}),url:c,route:o})}l.props.page&&(l.props.page.state={}),Wt(l,t)}async function ee(t,n){var a;const e=new URL(t);e.pathname=pe(t.pathname),t.pathname.endsWith("/")&&e.searchParams.append(Ce,"1"),e.searchParams.append(De,n.map(o=>o?"1":"0").join(""));const r=await Ot(e.href);if(!r.ok){let o;throw(a=r.headers.get("content-type"))!=null&&a.includes("application/json")?o=await r.json():r.status===404?o="Not Found":r.status===500&&(o="Internal Error"),new nt(r.status,o)}return new Promise(async o=>{var h;const i=new Map,s=r.body.getReader(),c=new TextDecoder;function l(g){return Oe(g,{Promise:d=>new Promise((m,f)=>{i.set(d,{fulfil:m,reject:f})})})}let u="";for(;;){const{done:g,value:d}=await s.read();if(g&&!u)break;for(u+=!d&&u?`
|
|
1
|
+
import{n as it,s as re,x as oe}from"./scheduler.pWaib8rK.js";import{a as se,b as I}from"./paths.CBfpPc2G.js";new URL("sveltekit-internal://");function ie(t,n){return t==="/"||n==="ignore"?t:n==="never"?t.endsWith("/")?t.slice(0,-1):t:n==="always"&&!t.endsWith("/")?t+"/":t}function ce(t){return t.split("%25").map(decodeURI).join("%25")}function le(t){for(const n in t)t[n]=decodeURIComponent(t[n]);return t}function ct({href:t}){return t.split("#")[0]}const fe=["href","pathname","search","toString","toJSON"];function ue(t,n,e){const r=new URL(t);Object.defineProperty(r,"searchParams",{value:new Proxy(r.searchParams,{get(a,o){if(o==="get"||o==="getAll"||o==="has")return s=>(e(s),a[o](s));n();const i=Reflect.get(a,o);return typeof i=="function"?i.bind(a):i}}),enumerable:!0,configurable:!0});for(const a of fe)Object.defineProperty(r,a,{get(){return n(),t[a]},enumerable:!0,configurable:!0});return r}const de="/__data.json",he=".html__data.json";function pe(t){return t.endsWith(".html")?t.replace(/\.html$/,he):t.replace(/\/$/,"")+de}function ge(...t){let n=5381;for(const e of t)if(typeof e=="string"){let r=e.length;for(;r;)n=n*33^e.charCodeAt(--r)}else if(ArrayBuffer.isView(e)){const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);let a=r.length;for(;a;)n=n*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(n>>>0).toString(36)}function me(t){const n=atob(t),e=new Uint8Array(n.length);for(let r=0;r<n.length;r++)e[r]=n.charCodeAt(r);return e.buffer}const Ot=window.fetch;window.fetch=(t,n)=>((t instanceof Request?t.method:(n==null?void 0:n.method)||"GET")!=="GET"&&F.delete(pt(t)),Ot(t,n));const F=new Map;function _e(t,n){const e=pt(t,n),r=document.querySelector(e);if(r!=null&&r.textContent){let{body:a,...o}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&F.set(e,{body:a,init:o,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=me(a)),Promise.resolve(new Response(a,o))}return window.fetch(t,n)}function ye(t,n,e){if(F.size>0){const r=pt(t,e),a=F.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(e==null?void 0:e.cache))return new Response(a.body,a.init);F.delete(r)}}return window.fetch(n,e)}function pt(t,n){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(t instanceof Request?t.url:t)}]`;if(n!=null&&n.headers||n!=null&&n.body){const a=[];n.headers&&a.push([...new Headers(n.headers)].join(",")),n.body&&(typeof n.body=="string"||ArrayBuffer.isView(n.body))&&a.push(n.body),r+=`[data-hash="${ge(...a)}"]`}return r}const we=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function ve(t){const n=[];return{pattern:t==="/"?/^\/$/:new RegExp(`^${Ee(t).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return n.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const o=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(o)return n.push({name:o[1],matcher:o[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return lt(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return lt(String.fromCharCode(...c.slice(2).split("-").map(f=>parseInt(f,16))));const u=we.exec(c),[,h,g,d,m]=u;return n.push({name:d,matcher:m,optional:!!h,rest:!!g,chained:g?l===1&&i[0]==="":!1}),g?"(.*?)":h?"([^/]*)?":"([^/]+?)"}return lt(c)}).join("")}).join("")}/?$`),params:n}}function be(t){return!/^\([^)]+\)$/.test(t)}function Ee(t){return t.slice(1).split("/").filter(be)}function ke(t,n,e){const r={},a=t.slice(1),o=a.filter(s=>s!==void 0);let i=0;for(let s=0;s<n.length;s+=1){const c=n[s];let l=a[s-i];if(c.chained&&c.rest&&i&&(l=a.slice(s-i,s+1).filter(u=>u).join("/"),i=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||e[c.matcher](l)){r[c.name]=l;const u=n[s+1],h=a[s+1];u&&!u.rest&&u.optional&&h&&c.chained&&(i=0),!u&&!h&&Object.keys(r).length===o.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function lt(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Se({nodes:t,server_loads:n,dictionary:e,matchers:r}){const a=new Set(n);return Object.entries(e).map(([s,[c,l,u]])=>{const{pattern:h,params:g}=ve(s),d={id:s,exec:m=>{const f=h.exec(m);if(f)return ke(f,g,r)},errors:[1,...u||[]].map(m=>t[m]),layouts:[0,...l||[]].map(i),leaf:o(c)};return d.errors.length=d.layouts.length=Math.max(d.errors.length,d.layouts.length),d});function o(s){const c=s<0;return c&&(s=~s),[c,t[s]]}function i(s){return s===void 0?s:[a.has(s),t[s]]}}function jt(t,n=JSON.parse){try{return n(sessionStorage[t])}catch{}}function It(t,n,e=JSON.stringify){const r=e(n);try{sessionStorage[t]=r}catch{}}const N=[];function gt(t,n=it){let e;const r=new Set;function a(s){if(re(t,s)&&(t=s,e)){const c=!N.length;for(const l of r)l[1](),N.push(l,t);if(c){for(let l=0;l<N.length;l+=2)N[l][0](N[l+1]);N.length=0}}}function o(s){a(s(t))}function i(s,c=it){const l=[s,c];return r.add(l),r.size===1&&(e=n(a,o)||it),s(t),()=>{r.delete(l),r.size===0&&e&&(e(),e=null)}}return{set:a,update:o,subscribe:i}}const Ae="1708729388596",$t="sveltekit:snapshot",Dt="sveltekit:scroll",Ct="sveltekit:states",Re="sveltekit:pageurl",$="sveltekit:history",q="sveltekit:navigation",z={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},B=location.origin;function Vt(t){if(t instanceof URL)return t;let n=document.baseURI;if(!n){const e=document.getElementsByTagName("base");n=e.length?e[0].href:document.URL}return new URL(t,n)}function mt(){return{x:pageXOffset,y:pageYOffset}}function O(t,n){return t.getAttribute(`data-sveltekit-${n}`)}const Lt={...z,"":z.hover};function Ft(t){let n=t.assignedSlot??t.parentNode;return(n==null?void 0:n.nodeType)===11&&(n=n.host),n}function qt(t,n){for(;t&&t!==n;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=Ft(t)}}function ut(t,n){let e;try{e=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI)}catch{}const r=t instanceof SVGAElement?t.target.baseVal:t.target,a=!e||!!r||et(e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(e==null?void 0:e.origin)===B&&t.hasAttribute("download");return{url:e,external:a,target:r,download:o}}function Y(t){let n=null,e=null,r=null,a=null,o=null,i=null,s=t;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,"preload-code")),a===null&&(a=O(s,"preload-data")),n===null&&(n=O(s,"keepfocus")),e===null&&(e=O(s,"noscroll")),o===null&&(o=O(s,"reload")),i===null&&(i=O(s,"replacestate")),s=Ft(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Lt[r??"off"],preload_data:Lt[a??"off"],keepfocus:c(n),noscroll:c(e),reload:c(o),replace_state:c(i)}}function Pt(t){const n=gt(t);let e=!0;function r(){e=!0,n.update(i=>i)}function a(i){e=!1,n.set(i)}function o(i){let s;return n.subscribe(c=>{(s===void 0||e&&c!==s)&&i(s=c)})}return{notify:r,set:a,subscribe:o}}function Ie(){const{set:t,subscribe:n}=gt(!1);let e;async function r(){clearTimeout(e);try{const a=await fetch(`${se}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==Ae;return i&&(t(!0),clearTimeout(e)),i}catch{return!1}}return{subscribe:n,check:r}}function et(t,n){return t.origin!==B||!t.pathname.startsWith(n)}const Le=-1,Pe=-2,xe=-3,Ue=-4,Te=-5,Ne=-6;function Oe(t,n){if(typeof t=="number")return a(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const e=t,r=Array(e.length);function a(o,i=!1){if(o===Le)return;if(o===xe)return NaN;if(o===Ue)return 1/0;if(o===Te)return-1/0;if(o===Ne)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const s=e[o];if(!s||typeof s!="object")r[o]=s;else if(Array.isArray(s))if(typeof s[0]=="string"){const c=s[0],l=n==null?void 0:n[c];if(l)return r[o]=l(a(s[1]));switch(c){case"Date":r[o]=new Date(s[1]);break;case"Set":const u=new Set;r[o]=u;for(let d=1;d<s.length;d+=1)u.add(a(s[d]));break;case"Map":const h=new Map;r[o]=h;for(let d=1;d<s.length;d+=2)h.set(a(s[d]),a(s[d+1]));break;case"RegExp":r[o]=new RegExp(s[1],s[2]);break;case"Object":r[o]=Object(s[1]);break;case"BigInt":r[o]=BigInt(s[1]);break;case"null":const g=Object.create(null);r[o]=g;for(let d=1;d<s.length;d+=2)g[s[d]]=a(s[d+1]);break;default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(s.length);r[o]=c;for(let l=0;l<s.length;l+=1){const u=s[l];u!==Pe&&(c[l]=a(u))}}else{const c={};r[o]=c;for(const l in s){const u=s[l];c[l]=a(u)}}return r[o]}return a(0)}const Gt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Gt];const je=new Set([...Gt]);[...je];function $e(t){return t.filter(n=>n!=null)}class nt{constructor(n,e){this.status=n,typeof e=="string"?this.body={message:e}:e?this.body=e:this.body={message:`Error: ${n}`}}toString(){return JSON.stringify(this.body)}}class Ht{constructor(n,e){this.status=n,this.location=e}}class _t extends Error{constructor(n,e,r){super(r),this.status=n,this.text=e}}const De="x-sveltekit-invalidated",Ce="x-sveltekit-trailing-slash";function J(t){return t instanceof nt||t instanceof _t?t.status:500}function Ve(t){return t instanceof _t?t.text:"Internal Error"}const T=jt(Dt)??{},G=jt($t)??{},x={url:Pt({}),page:Pt({}),navigating:gt(null),updated:Ie()};function yt(t){T[t]=mt()}function Fe(t,n){let e=t+1;for(;T[e];)delete T[e],e+=1;for(e=n+1;G[e];)delete G[e],e+=1}function D(t){return location.href=t.href,new Promise(()=>{})}function xt(){}let at,dt,W,L,ht,C;const Mt=[],X=[];let P=null;const Bt=[],qe=[];let j=[],w={branch:[],error:null,url:null},wt=!1,Z=!1,Ut=!0,H=!1,V=!1,Kt=!1,vt=!1,bt,k,A,R,Q;async function Qe(t,n,e){var a,o;document.URL!==location.href&&(location.href=location.href),C=t,at=Se(t),L=document.documentElement,ht=n,dt=t.nodes[0],W=t.nodes[1],dt(),W(),k=(a=history.state)==null?void 0:a[$],A=(o=history.state)==null?void 0:o[q],k||(k=A=Date.now(),history.replaceState({...history.state,[$]:k,[q]:A},""));const r=T[k];r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y)),e?await Je(ht,e):ze(location.href,{replaceState:!0}),Ye()}function Ge(){Mt.length=0,vt=!1}function zt(t){X.some(n=>n==null?void 0:n.snapshot)&&(G[t]=X.map(n=>{var e;return(e=n==null?void 0:n.snapshot)==null?void 0:e.capture()}))}function Yt(t){var n;(n=G[t])==null||n.forEach((e,r)=>{var a,o;(o=(a=X[r])==null?void 0:a.snapshot)==null||o.restore(e)})}function Tt(){yt(k),It(Dt,T),zt(A),It($t,G)}async function Jt(t,n,e,r){return K({type:"goto",url:Vt(t),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:e,nav_token:r,accept:()=>{n.invalidateAll&&(vt=!0)}})}async function He(t){return P={id:t.id,promise:Xt(t).then(n=>(n.type==="loaded"&&n.state.error&&(P=null),n))},P.promise}async function ft(t){const n=at.find(e=>e.exec(Zt(t)));n&&await Promise.all([...n.layouts,n.leaf].map(e=>e==null?void 0:e[1]()))}function Wt(t,n){var a;w=t.state;const e=document.querySelector("style[data-sveltekit]");e&&e.remove(),R=t.props.page,bt=new C.root({target:n,props:{...t.props,stores:x,components:X},hydrate:!0}),Yt(A);const r={from:null,to:{params:w.params,route:{id:((a=w.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};j.forEach(o=>o(r)),Z=!0}async function tt({url:t,params:n,branch:e,status:r,error:a,route:o,form:i}){let s="never";if(I&&(t.pathname===I||t.pathname===I+"/"))s="always";else for(const d of e)(d==null?void 0:d.slash)!==void 0&&(s=d.slash);t.pathname=ie(t.pathname,s),t.search=t.search;const c={type:"loaded",state:{url:t,params:n,branch:e,error:a,route:o},props:{constructors:$e(e).map(d=>d.node.component),page:R}};i!==void 0&&(c.props.form=i);let l={},u=!R,h=0;for(let d=0;d<Math.max(e.length,w.branch.length);d+=1){const m=e[d],f=w.branch[d];(m==null?void 0:m.data)!==(f==null?void 0:f.data)&&(u=!0),m&&(l={...l,...m.data},u&&(c.props[`data_${h}`]=l),h+=1)}return(!w.url||t.href!==w.url.href||w.error!==a||i!==void 0&&i!==R.form||u)&&(c.props.page={error:a,params:n,route:{id:(o==null?void 0:o.id)??null},state:{},status:r,url:new URL(t),form:i??null,data:u?l:R.data}),c}async function Et({loader:t,parent:n,url:e,params:r,route:a,server_data_node:o}){var u,h,g;let i=null,s=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await t();if((u=l.universal)!=null&&u.load){let d=function(...f){for(const _ of f){const{href:v}=new URL(_,e);c.dependencies.add(v)}};const m={route:new Proxy(a,{get:(f,_)=>(s&&(c.route=!0),f[_])}),params:new Proxy(r,{get:(f,_)=>(s&&c.params.add(_),f[_])}),data:(o==null?void 0:o.data)??null,url:ue(e,()=>{s&&(c.url=!0)},f=>{s&&c.search_params.add(f)}),async fetch(f,_){let v;f instanceof Request?(v=f.url,_={body:f.method==="GET"||f.method==="HEAD"?void 0:await f.blob(),cache:f.cache,credentials:f.credentials,headers:f.headers,integrity:f.integrity,keepalive:f.keepalive,method:f.method,mode:f.mode,redirect:f.redirect,referrer:f.referrer,referrerPolicy:f.referrerPolicy,signal:f.signal,..._}):v=f;const S=new URL(v,e);return s&&d(S.href),S.origin===e.origin&&(v=S.href.slice(e.origin.length)),Z?ye(v,S.href,_):_e(v,_)},setHeaders:()=>{},depends:d,parent(){return s&&(c.parent=!0),n()},untrack(f){s=!1;try{return f()}finally{s=!0}}};i=await l.universal.load.call(null,m)??null}return{node:l,loader:t,server:o,universal:(h=l.universal)!=null&&h.load?{type:"data",data:i,uses:c}:null,data:i??(o==null?void 0:o.data)??null,slash:((g=l.universal)==null?void 0:g.trailingSlash)??(o==null?void 0:o.slash)}}function Nt(t,n,e,r,a,o){if(vt)return!0;if(!a)return!1;if(a.parent&&t||a.route&&n||a.url&&e)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(o[i]!==w.params[i])return!0;for(const i of a.dependencies)if(Mt.some(s=>s(new URL(i))))return!0;return!1}function kt(t,n){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?n??null:null}function Me(t,n){if(!t)return new Set(n.searchParams.keys());const e=new Set([...t.searchParams.keys(),...n.searchParams.keys()]);for(const r of e){const a=t.searchParams.getAll(r),o=n.searchParams.getAll(r);a.every(i=>o.includes(i))&&o.every(i=>a.includes(i))&&e.delete(r)}return e}async function Xt({id:t,invalidating:n,url:e,params:r,route:a}){if((P==null?void 0:P.id)===t)return P.promise;const{errors:o,layouts:i,leaf:s}=a,c=[...i,s];o.forEach(p=>p==null?void 0:p().catch(()=>{})),c.forEach(p=>p==null?void 0:p[1]().catch(()=>{}));let l=null;const u=w.url?t!==w.url.pathname+w.url.search:!1,h=w.route?a.id!==w.route.id:!1,g=Me(w.url,e);let d=!1;const m=c.map((p,y)=>{var U;const b=w.branch[y],E=!!(p!=null&&p[0])&&((b==null?void 0:b.loader)!==p[1]||Nt(d,h,u,g,(U=b.server)==null?void 0:U.uses,r));return E&&(d=!0),E});if(m.some(Boolean)){try{l=await ee(e,m)}catch(p){return rt({status:J(p),error:await M(p,{url:e,params:r,route:{id:a.id}}),url:e,route:a})}if(l.type==="redirect")return l}const f=l==null?void 0:l.nodes;let _=!1;const v=c.map(async(p,y)=>{var ot;if(!p)return;const b=w.branch[y],E=f==null?void 0:f[y];if((!E||E.type==="skip")&&p[1]===(b==null?void 0:b.loader)&&!Nt(_,h,u,g,(ot=b.universal)==null?void 0:ot.uses,r))return b;if(_=!0,(E==null?void 0:E.type)==="error")throw E;return Et({loader:p[1],url:e,params:r,route:a,parent:async()=>{var Rt;const At={};for(let st=0;st<y;st+=1)Object.assign(At,(Rt=await v[st])==null?void 0:Rt.data);return At},server_data_node:kt(E===void 0&&p[0]?{type:"skip"}:E??null,p[0]?b==null?void 0:b.server:void 0)})});for(const p of v)p.catch(()=>{});const S=[];for(let p=0;p<c.length;p+=1)if(c[p])try{S.push(await v[p])}catch(y){if(y instanceof Ht)return{type:"redirect",location:y.location};let b=J(y),E;if(f!=null&&f.includes(y))b=y.status??b,E=y.error;else if(y instanceof nt)E=y.body;else{if(await x.updated.check())return await D(e);E=await M(y,{params:r,url:e,route:{id:a.id}})}const U=await Be(p,S,o);return U?await tt({url:e,params:r,branch:S.slice(0,U.idx).concat(U.node),status:b,error:E,route:a}):await te(e,{id:a.id},E,b)}else S.push(void 0);return await tt({url:e,params:r,branch:S,status:200,error:null,route:a,form:n?void 0:null})}async function Be(t,n,e){for(;t--;)if(e[t]){let r=t;for(;!n[r];)r-=1;try{return{idx:r+1,node:{node:await e[t](),loader:e[t],data:{},server:null,universal:null}}}catch{continue}}}async function rt({status:t,error:n,url:e,route:r}){const a={};let o=null;if(C.server_loads[0]===0)try{const l=await ee(e,[!0]);if(l.type!=="data"||l.nodes[0]&&l.nodes[0].type!=="data")throw 0;o=l.nodes[0]??null}catch{(e.origin!==B||e.pathname!==location.pathname||wt)&&await D(e)}const s=await Et({loader:dt,url:e,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:kt(o)}),c={node:await W(),loader:W,universal:null,server:null,data:null};return await tt({url:e,params:a,branch:[s,c],status:t,error:n,route:null})}function St(t,n){if(!t||et(t,I))return;let e;try{e=C.hooks.reroute({url:new URL(t)})??t.pathname}catch{return}const r=Zt(e);for(const a of at){const o=a.exec(r);if(o)return{id:t.pathname+t.search,invalidating:n,route:a,params:le(o),url:t}}}function Zt(t){return ce(t.slice(I.length)||"/")}function Qt({url:t,type:n,intent:e,delta:r}){let a=!1;const o=ae(w,e,t,n);r!==void 0&&(o.navigation.delta=r);const i={...o.navigation,cancel:()=>{a=!0,o.reject(new Error("navigation cancelled"))}};return H||Bt.forEach(s=>s(i)),a?null:o}async function K({type:t,url:n,popped:e,keepfocus:r,noscroll:a,replace_state:o,state:i={},redirect_count:s=0,nav_token:c={},accept:l=xt,block:u=xt}){const h=St(n,!1),g=Qt({url:n,type:t,delta:e==null?void 0:e.delta,intent:h});if(!g){u();return}const d=k,m=A;l(),H=!0,Z&&x.navigating.set(g.navigation),Q=c;let f=h&&await Xt(h);if(!f){if(et(n,I))return await D(n);f=await te(n,{id:null},await M(new _t(404,"Not Found",`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404)}if(n=(h==null?void 0:h.url)||n,Q!==c)return g.reject(new Error("navigation aborted")),!1;if(f.type==="redirect")if(s>=20)f=await rt({status:500,error:await M(new Error("Redirect loop"),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}});else return Jt(new URL(f.location,n).href,{},s+1,c),!1;else f.props.page.status>=400&&await x.updated.check()&&await D(n);if(Ge(),yt(d),zt(m),f.props.page.url.pathname!==n.pathname&&(n.pathname=f.props.page.url.pathname),i=e?e.state:i,!e){const p=o?0:1,y={[$]:k+=p,[q]:A+=p,[Ct]:i};(o?history.replaceState:history.pushState).call(history,y,"",n),o||Fe(k,A)}if(P=null,f.props.page.state=i,Z){w=f.state,f.props.page&&(f.props.page.url=n);const p=(await Promise.all(qe.map(y=>y(g.navigation)))).filter(y=>typeof y=="function");if(p.length>0){let y=function(){j=j.filter(b=>!p.includes(b))};p.push(y),j.push(...p)}bt.$set(f.props),Kt=!0}else Wt(f,ht);const{activeElement:_}=document;await oe();const v=e?e.scroll:a?mt():null;if(Ut){const p=n.hash&&document.getElementById(decodeURIComponent(n.hash.slice(1)));v?scrollTo(v.x,v.y):p?p.scrollIntoView():scrollTo(0,0)}const S=document.activeElement!==_&&document.activeElement!==document.body;!r&&!S&&We(),Ut=!0,f.props.page&&(R=f.props.page),H=!1,t==="popstate"&&Yt(A),g.fulfil(void 0),j.forEach(p=>p(g.navigation)),x.navigating.set(null)}async function te(t,n,e,r){return t.origin===B&&t.pathname===location.pathname&&!wt?await rt({status:r,error:e,url:t,route:n}):await D(t)}function Ke(){let t;L.addEventListener("mousemove",o=>{const i=o.target;clearTimeout(t),t=setTimeout(()=>{r(i,2)},20)});function n(o){r(o.composedPath()[0],1)}L.addEventListener("mousedown",n),L.addEventListener("touchstart",n,{passive:!0});const e=new IntersectionObserver(o=>{for(const i of o)i.isIntersecting&&(ft(i.target.href),e.unobserve(i.target))},{threshold:0});function r(o,i){const s=qt(o,L);if(!s)return;const{url:c,external:l,download:u}=ut(s,I);if(l||u)return;const h=Y(s);if(!h.reload)if(i<=h.preload_data){const g=St(c,!1);g&&He(g)}else i<=h.preload_code&&ft(c.pathname)}function a(){e.disconnect();for(const o of L.querySelectorAll("a")){const{url:i,external:s,download:c}=ut(o,I);if(s||c)continue;const l=Y(o);l.reload||(l.preload_code===z.viewport&&e.observe(o),l.preload_code===z.eager&&ft(i.pathname))}}j.push(a),a()}function M(t,n){if(t instanceof nt)return t.body;const e=J(t),r=Ve(t);return C.hooks.handleError({error:t,event:n,status:e,message:r})??{message:r}}function ze(t,n={}){return t=Vt(t),t.origin!==B?Promise.reject(new Error("goto: invalid URL")):Jt(t,n,0)}function Ye(){var n;history.scrollRestoration="manual",addEventListener("beforeunload",e=>{let r=!1;if(Tt(),!H){const a=ae(w,void 0,null,"leave"),o={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};Bt.forEach(i=>i(o))}r?(e.preventDefault(),e.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Tt()}),(n=navigator.connection)!=null&&n.saveData||Ke(),L.addEventListener("click",e=>{var g;if(e.button||e.which!==1||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.defaultPrevented)return;const r=qt(e.composedPath()[0],L);if(!r)return;const{url:a,external:o,target:i,download:s}=ut(r,I);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const c=Y(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||s)return;if(o||c.reload){Qt({url:a,type:"link"})?H=!0:e.preventDefault();return}const[u,h]=a.href.split("#");if(h!==void 0&&u===ct(location)){const[,d]=w.url.href.split("#");if(d===h){e.preventDefault(),h===""||h==="top"&&r.ownerDocument.getElementById("top")===null?window.scrollTo({top:0}):(g=r.ownerDocument.getElementById(h))==null||g.scrollIntoView();return}if(V=!0,yt(k),t(a),!c.replace_state)return;V=!1}e.preventDefault(),K({type:"link",url:a,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??a.href===location.href})}),L.addEventListener("submit",e=>{if(e.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(e.target),a=e.submitter;if(((a==null?void 0:a.formMethod)||r.method)!=="get")return;const i=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(et(i,I))return;const s=e.target,c=Y(s);if(c.reload)return;e.preventDefault(),e.stopPropagation();const l=new FormData(s),u=a==null?void 0:a.getAttribute("name");u&&l.append(u,(a==null?void 0:a.getAttribute("value"))??""),i.search=new URLSearchParams(l).toString(),K({type:"form",url:i,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??i.href===location.href})}),addEventListener("popstate",async e=>{var r;if((r=e.state)!=null&&r[$]){const a=e.state[$];if(Q={},a===k)return;const o=T[a],i=e.state[Ct]??{},s=new URL(e.state[Re]??location.href),c=e.state[q],l=ct(location)===ct(w.url);if(c===A&&(Kt||l)){t(s),T[k]=mt(),o&&scrollTo(o.x,o.y),i!==R.state&&(R={...R,state:i},bt.$set({page:R})),k=a;return}const h=a-k;await K({type:"popstate",url:s,popped:{state:i,scroll:o,delta:h},accept:()=>{k=a,A=c},block:()=>{history.go(-h)},nav_token:Q})}else if(!V){const a=new URL(location.href);t(a)}}),addEventListener("hashchange",()=>{V&&(V=!1,history.replaceState({...history.state,[$]:++k,[q]:A},"",location.href))});for(const e of document.querySelectorAll("link"))e.rel==="icon"&&(e.href=e.href);addEventListener("pageshow",e=>{e.persisted&&x.navigating.set(null)});function t(e){w.url=e,x.page.set({...R,url:e}),x.page.notify()}}async function Je(t,{status:n=200,error:e,node_ids:r,params:a,route:o,data:i,form:s}){wt=!0;const c=new URL(location.href);({params:a={},route:o={id:null}}=St(c,!1)||{});let l;try{const u=r.map(async(d,m)=>{const f=i[m];return f!=null&&f.uses&&(f.uses=ne(f.uses)),Et({loader:C.nodes[d],url:c,params:a,route:o,parent:async()=>{const _={};for(let v=0;v<m;v+=1)Object.assign(_,(await u[v]).data);return _},server_data_node:kt(f)})}),h=await Promise.all(u),g=at.find(({id:d})=>d===o.id);if(g){const d=g.layouts;for(let m=0;m<d.length;m++)d[m]||h.splice(m,0,void 0)}l=await tt({url:c,params:a,branch:h,status:n,error:e,form:s,route:g??null})}catch(u){if(u instanceof Ht){await D(new URL(u.location,location.href));return}l=await rt({status:J(u),error:await M(u,{url:c,params:a,route:o}),url:c,route:o})}l.props.page&&(l.props.page.state={}),Wt(l,t)}async function ee(t,n){var a;const e=new URL(t);e.pathname=pe(t.pathname),t.pathname.endsWith("/")&&e.searchParams.append(Ce,"1"),e.searchParams.append(De,n.map(o=>o?"1":"0").join(""));const r=await Ot(e.href);if(!r.ok){let o;throw(a=r.headers.get("content-type"))!=null&&a.includes("application/json")?o=await r.json():r.status===404?o="Not Found":r.status===500&&(o="Internal Error"),new nt(r.status,o)}return new Promise(async o=>{var h;const i=new Map,s=r.body.getReader(),c=new TextDecoder;function l(g){return Oe(g,{Promise:d=>new Promise((m,f)=>{i.set(d,{fulfil:m,reject:f})})})}let u="";for(;;){const{done:g,value:d}=await s.read();if(g&&!u)break;for(u+=!d&&u?`
|
|
2
2
|
`:c.decode(d,{stream:!0});;){const m=u.indexOf(`
|
|
3
3
|
`);if(m===-1)break;const f=JSON.parse(u.slice(0,m));if(u=u.slice(m+1),f.type==="redirect")return o(f);if(f.type==="data")(h=f.nodes)==null||h.forEach(_=>{(_==null?void 0:_.type)==="data"&&(_.uses=ne(_.uses),_.data=l(_.data))}),o(f);else if(f.type==="chunk"){const{id:_,data:v,error:S}=f,p=i.get(_);i.delete(_),S?p.reject(l(S)):p.fulfil(l(v))}}}})}function ne(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url),search_params:new Set((t==null?void 0:t.search_params)??[])}}function We(){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const n=document.body,e=n.getAttribute("tabindex");n.tabIndex=-1,n.focus({preventScroll:!0,focusVisible:!1}),e!==null?n.setAttribute("tabindex",e):n.removeAttribute("tabindex");const r=getSelection();if(r&&r.type!=="None"){const a=[];for(let o=0;o<r.rangeCount;o+=1)a.push(r.getRangeAt(o));setTimeout(()=>{if(r.rangeCount===a.length){for(let o=0;o<r.rangeCount;o+=1){const i=a[o],s=r.getRangeAt(o);if(i.commonAncestorContainer!==s.commonAncestorContainer||i.startContainer!==s.startContainer||i.endContainer!==s.endContainer||i.startOffset!==s.startOffset||i.endOffset!==s.endOffset)return}r.removeAllRanges()}})}}}function ae(t,n,e,r){var c,l;let a,o;const i=new Promise((u,h)=>{a=u,o=h});return i.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url},to:e&&{params:(n==null?void 0:n.params)??null,route:{id:((l=n==null?void 0:n.route)==null?void 0:l.id)??null},url:e},willUnload:!n,type:r,complete:i},fulfil:a,reject:o}}export{nt as H,Qe as a,ze as g,x as s,gt as w};
|
|
@@ -45,8 +45,8 @@ ${Le(r)}
|
|
|
45
45
|
ENDSEC
|
|
46
46
|
0
|
|
47
47
|
EOF
|
|
48
|
-
`}stringify(){return this.close(),this.dxfStr}};function $c(){return new Dc}function Oc(e,n,t){return{circle:!0,cx:e,cy:n,radius:t}}var Rc=class{constructor(){I(this,"seg");this.seg=[]}addStart(e,n){this.seg=[];const t={typ:0,px:e,py:n};this.seg.push(t)}addStroke(e,n){const t={typ:1,px:e,py:n};this.seg.push(t)}addArc(e,n,t,s,r){const i={typ:2,px:e,py:n,radius:t,large:s,ccw:r};this.seg.push(i)}toJson(){return{circle:!1,seg:this.seg}}};function Nc(){return new Rc}var wi=class{},Fc=class ht extends wi{constructor(t,s,r=""){super();I(this,"circle",!1);I(this,"segments");I(this,"points");I(this,"debugPoints");I(this,"debugLines");I(this,"lastPoint");I(this,"imposedColor");this.segments=[new Be(6,t,s,0)],this.points=[],this.debugPoints=[],this.debugLines=[],this.lastPoint=V(t,s),this.imposedColor=r}setLastPoint(t,s){this.lastPoint=V(t,s)}getLastPoint(){return this.lastPoint}addPointA(t,s){if(this.points.length>2)throw`err311: contour add too much point ${t} ${s}`;return this.points.push(V(t,s)),this}addPointAP(t,s){const r=V(0,0).translatePolar(t,s);return this.addPointA(r.cx,r.cy),this}addPointR(t,s){const i=this.getLastPoint().translate(t,s);return this.addPointA(i.cx,i.cy),this}addPointRP(t,s){const i=this.getLastPoint().translatePolar(t,s);return this.addPointA(i.cx,i.cy),this}addSeg(t){return this.segments.push(t),this}addSegStroke(){if(this.points.length!==1)throw`err554: contour addSegStroke with unexpected points.length ${this.points.length}`;const t=this.points.pop();if(t!==void 0){const s=new Be(0,t.cx,t.cy,0);t.isEqual(this.getLastPoint())||(this.addSeg(s),this.setLastPoint(t.cx,t.cy))}else throw"err284: contour p1 is undefined";return this}addSegStrokeA(t,s){return this.addPointA(t,s).addSegStroke(),this}addSegStrokeAP(t,s){return this.addPointAP(t,s).addSegStroke(),this}addSegStrokeR(t,s){return this.addPointR(t,s).addSegStroke(),this}addSegStrokeRP(t,s){return this.addPointRP(t,s).addSegStroke(),this}addSegArc(t,s,r){if(this.points.length!==1)throw`err954: contour addSegArc with unexpected points.length ${this.points.length}`;const i=this.points.pop();if(i!==void 0){const o=new Be(1,i.cx,i.cy,t,s,r);i.isEqual(this.getLastPoint())?console.log(`warn144: addSegArc last and new point identical ${Ge(i.cx)} ${Ge(i.cy)}`):(this.addSeg(o),this.setLastPoint(i.cx,i.cy))}else throw"err482: contour p1 is undefined";return this}addSegArc2(){if(this.points.length!==2)throw`err958: contour addSegArc2 with unexpected points.length ${this.points.length}`;const t=this.points.pop(),s=this.points.pop();if(s!==void 0&&t!==void 0){const r=this.getLastPoint(),i=xc(r,s,t),o=i.distanceToPoint(r),c=r.middlePoint(t),a=c.angleToPoint(r),f=c.angleToPoint(s),l=c.angleToPoint(i),p=ne(f-a),m=ne(l-a);let x=!1,_=!1;Math.sign(m)*Math.sign(p)>0&&(x=!0),Math.sign(p)>0&&(_=!0),this.addPointA(t.cx,t.cy).addSegArc(o,x,_),this.debugPoints.push(s)}else throw"err488: contour p1 or p2 or seg is undefined";return this}addSegArc3(t,s){if(this.points.length!==1)throw`err914: contour addSegArc3 with unexpected points.length ${this.points.length}`;const r=this.points.pop();if(r!==void 0){const i=this.getLastPoint(),o=ns(i,r);let c=r;s&&(c=i);const a=vn(c.cx,c.cy,t+Math.PI/2),f=o.intersection(a),l=f.distanceToPoint(i),p=i.middlePoint(r),m=c.angleToPoint(p),x=ne(t-m);let _=!1;Math.abs(x)>Math.PI/2&&(_=!0);let d=!1;x<0&&(d=!0),s||(d=!d),this.addPointA(r.cx,r.cy).addSegArc(l,_,d),this.debugPoints.push(p),this.debugPoints.push(f)}else throw"err282: contour p1 is undefined";return this}addSeg2Arcs(t,s){if(this.points.length!==1)throw`err214: contour addSeg2Arcs with unexpected points.length ${this.points.length}`;const r=this.points.pop();if(r!==void 0){const i=this.getLastPoint(),o=i.distanceToPoint(r),c=i.angleToPoint(r),a=r.angleToPoint(i),f=ne(t-c),l=-1*ne(s-a);if(Math.abs(f)>=Math.PI/2)throw`err545: addSeg2Arcs with too large au ${f}`;if(Math.abs(l)>=Math.PI/2)throw`err546: addSeg2Arcs with too large av ${l}`;if(J(f)===0)throw`err765: addSeg2Arcs with almost zero au ${f}`;if(J(l)===0)throw`err766: addSeg2Arcs with almost zero av ${l}`;if(Math.sign(f)*Math.sign(l)<1)throw`err767: addSeg2Arcs with au/av bad orientation ${f} ${l}`;const p=Math.tan(f/2),m=Math.tan(l/2),x=o*m/(m+p),_=Math.abs(x/Math.sin(f)),d=x/Math.cos(f/2),u=o*p/(m+p),h=Math.abs(u/Math.sin(l)),g=i.translatePolar(c+f/2,d);let w=!1;Math.sign(f)<0&&(w=!0),this.addPointA(g.cx,g.cy).addSegArc(_,!1,w),this.addPointA(r.cx,r.cy).addSegArc(h,!1,w),this.debugPoints.push(i.translatePolar(c,x)),this.debugPoints.push(i.translatePolar(c+f-Math.sign(f)*Math.PI/2,_)),this.debugPoints.push(r.translatePolar(a-l+Math.sign(f)*Math.PI/2,h))}else throw"err182: contour p1 is undefined";return this}addCornerPointed(){const t=new Be(2,0,0,0);return this.addSeg(t),this}addCornerRounded(t){const s=new Be(3,0,0,t);return this.addSeg(s),this}addCornerWidened(t){const s=new Be(4,0,0,t);return this.addSeg(s),this}addCornerWideAcc(t){const s=new Be(5,0,0,t);return this.addSeg(s),this}closeSegStroke(){const t=this.segments[0].px,s=this.segments[0].py;return this.addSegStrokeA(t,s),this}closeSegArc(t,s,r){const i=this.segments[0].px,o=this.segments[0].py;return this.addPointA(i,o).addSegArc(t,s,r),this}clone(){const t=new ht(this.segments[0].px,this.segments[0].py);for(const s of this.segments){const r=s.clone();r.sType!==6&&(t.addSeg(r),Fe(r.sType)&&t.setLastPoint(r.px,r.py))}return t}translate(t,s){const r=this.segments[0].px+t,i=this.segments[0].py+s,o=new ht(r,i);for(const c of this.segments){const a=c.clone();Fe(c.sType)&&(a.px+=t,a.py+=s),a.sType!==6&&(o.addSeg(a),Fe(a.sType)&&o.setLastPoint(a.px,a.py))}return o}translatePolar(t,s){return this.translate(s*Math.cos(t),s*Math.sin(t))}rotate(t,s,r){const i=V(t,s),c=V(this.segments[0].px,this.segments[0].py).rotate(i,r),a=new ht(c.cx,c.cy);for(const f of this.segments){const l=f.clone();if(Fe(f.sType)){const m=V(l.px,l.py).rotate(i,r);l.px=m.cx,l.py=m.cy}l.sType!==6&&(a.addSeg(l),Fe(l.sType)&&a.setLastPoint(l.px,l.py))}return a}scale(t,s,r,i=!1){const o=V(t,s),a=V(this.segments[0].px,this.segments[0].py).scale(o,r),f=new ht(a.cx,a.cy);for(const l of this.segments){const p=l.clone();if(Fe(l.sType)){const x=V(p.px,p.py).scale(o,r);p.px=x.cx,p.py=x.cy}l.sType===1&&(p.radius*=r),fn(l.sType)&&i&&(p.radius*=r),p.sType!==6&&(f.addSeg(p),Fe(p.sType)&&f.setLastPoint(p.px,p.py))}return f}addPartial(t){if(this.points.length>0)throw`err911: addPartial, points should be used ${this.points.length}`;let s=t;if(t.segments.length>0){const r=t.segments[0],i=this.getLastPoint(),o=r.px-i.cx,c=r.py-i.cy;r.sType===6&&(s=t.translate(-o,-c))}for(const r of s.segments)r.sType!==6&&(this.addSeg(r),Fe(r.sType)&&this.setLastPoint(r.px,r.py));return this}draw(t,s,r=ie.contour){const i=this.imposedColor===""?r:this.imposedColor;let o=0,c=0;for(const a of this.segments){if(a.sType===0){const[f,l]=gt(o,c,s),[p,m]=gt(a.px,a.py,s);t.beginPath(),t.moveTo(f,l),t.lineTo(p,m),t.strokeStyle=i,t.stroke()}if(a.sType===1)try{const f=xt(o,c,a),[l,p]=gt(f.pc.cx,f.pc.cy,s),m=hi(a.radius,s);t.beginPath(),t.arc(l,p,m,-f.a1,-f.a2,a.arcCcw),t.strokeStyle=i,t.stroke()}catch(f){console.log("err413: "+f)}Rt(a.sType)&&(o=a.px,c=a.py)}}extractSkeleton(){const t=this.segments[0],s=new ht(t.px,t.py);for(const r of this.segments)Fe(r.sType)&&s.addSeg(r);return s}generateContour(){lt.clearPoints(),lt.clearLines();const t=[],s=[];let r=0,i=0,o=0;for(const l of this.segments){if(l.sType===0){const x=V(i,o),_=V(l.px,l.py),d=V(0,0);t.push(new $e(l.sType,x,_,d,0,0,0,!1)),r=1}if(l.sType===1){const x=xt(i,o,l);t.push(x),r=1}const p=t.at(-1),m=t.at(-2);if(p!==void 0&&m!==void 0&&Fe(p.sType)&&Bn(m.sType)){const x=t.pop(),_=t.pop(),d=t.pop();if(d!==void 0&&_!==void 0&&x!==void 0){const u=gr(d,_,x);t.push(...u)}else throw"err603: contour generateContour internal error"}if(Bn(l.sType)){if(r===2)throw`err419: generateContour with two consecutive corners ${l.sType}`;if(r===0&&fn(l.sType)&&l.radius>0){const x=V(0,0);s.push(new $e(l.sType,x,x,x,l.radius,0,0,!1))}if(r===1&&fn(l.sType)&&l.radius>0){const x=V(0,0);t.push(new $e(l.sType,x,x,x,l.radius,0,0,!1))}r=2}Rt(l.sType)&&(i=l.px,o=l.py)}if(s.length>0)if(r===1)t.push(...s);else throw"err397: contour generateContour Corners defined at end and begining";const c=t.at(-1);if(c!==void 0&&Bn(c.sType)){const l=t[0],p=t.pop(),m=t.pop();if(m!==void 0&&p!==void 0&&l!==void 0){const x=gr(m,p,l);t.push(...x.slice(0,-1));const _=x.at(-1);if(_!==void 0)t[0]=_;else throw"err606: contour generateContour internal error"}else throw"err602: contour generateContour internal error"}const a=t[0],f=new ht(a.p1.cx,a.p1.cy,this.imposedColor);f.debugPoints.push(...lt.getPoints()),f.debugLines.push(...lt.getLines());for(const l of t)if(l.sType===0)f.addSegStrokeA(l.p2.cx,l.p2.cy);else if(l.sType===1){const p=wc(l);f.addPointA(l.p2.cx,l.p2.cy).addSegArc(p.radius,p.arcLarge,p.arcCcw)}else throw`err986: contour generateContour unexpected in seg2 Enum ${l.sType}`;return f}generatePoints(){const t=[];t.push(...this.debugPoints);const s=this.segments[0];t.push(V(s.px,s.py));let r=0,i=0;for(const o of this.segments){if(o.sType===1)try{const c=xt(r,i,o),a=V(c.pc.cx,c.pc.cy),f=ne((c.a2-c.a1)/2);let l=c.a1+f;(Math.sign(f)>0&&!o.arcCcw||Math.sign(f)<0&&o.arcCcw)&&(l+=Math.PI);const p=a.translatePolar(l,o.radius);t.push(p)}catch(c){console.log("err453: "+c)}Rt(o.sType)&&(r=o.px,i=o.py,t.push(V(r,i)))}return t}generateLines(){const t=[];return t.push(...this.debugLines),t}checkContour(t){if(t.segments[0].sType!==6)throw`err412: contour check first seg is not eStart ${t.segments[0].sType}`;let s=0,r=0;for(const c of t.segments){if(c.sType===1)try{xt(s,r,c)}catch(a){throw`err778: ${a}`}Rt(c.sType)&&(s=c.px,r=c.py)}const i=t.segments[0].px,o=t.segments[0].py;if(J(s-i)!==0||J(r-o)!==0)throw`err414: contour check, contour is not closed px ${i} ${s} py ${i} ${o}`}check(){lt.clearMsg(),this.checkContour(this);const t=this.generateContour();return this.checkContour(t),lt.getMsg()}toSvg(t,s=""){const r=Pc();for(const o of this.segments)o.sType===6?r.addStart(o.px,t-o.py):o.sType===0?r.addStroke(o.px,t-o.py):o.sType===1?r.addArc(o.px,t-o.py,o.radius,o.arcLarge,!o.arcCcw):console.log(`err631: contour.toSvg has unknown segment type ${o.sType}`);return r.stringify(s)}toDxfSeg(){const t=[];let s=0,r=0;for(const i of this.segments){if(i.sType===0)t.push(Mc(s,r,i.px,i.py));else if(i.sType===1)try{const o=xt(s,r,i);t.push(Lc(o.pc.cx,o.pc.cy,i.radius,o.a1,o.a2,o.arcCcw))}catch(o){console.log("err413: "+o)}Rt(i.sType)&&(s=i.px,r=i.py)}return t}toPax(){const t=Nc();for(const r of this.segments)r.sType===6?t.addStart(r.px,r.py):r.sType===0?t.addStroke(r.px,r.py):r.sType===1?t.addArc(r.px,r.py,r.radius,r.arcLarge,r.arcCcw):console.log(`err709: contour.toPax has unknown segment type ${r.sType}`);return t.toJson()}},Uc=class Tt extends wi{constructor(t,s,r,i=""){super();I(this,"circle",!0);I(this,"px");I(this,"py");I(this,"radius");I(this,"imposedColor");this.px=t,this.py=s,this.radius=r,this.imposedColor=i}clone(){return new Tt(this.px,this.py,this.radius,this.imposedColor)}translate(t,s){return new Tt(this.px+t,this.py+s,this.radius,this.imposedColor)}translatePolar(t,s){return this.translate(s*Math.cos(t),s*Math.sin(t))}rotate(t,s,r){const i=V(t,s),o=V(this.px,this.py).rotate(i,r);return new Tt(o.cx,o.cy,this.radius,this.imposedColor)}draw(t,s,r=ie.contour){const[i,o]=gt(this.px,this.py,s),c=hi(this.radius,s),a=this.imposedColor===""?r:this.imposedColor;t.beginPath(),t.arc(i,o,c,0,2*Math.PI,!0),t.strokeStyle=a,t.stroke()}extractSkeleton(){return new Tt(this.px,this.py,this.radius)}generateContour(){return new Tt(this.px,this.py,this.radius,this.imposedColor)}generatePoints(){const t=[],s=V(this.px,this.py);t.push(s);for(let r=0;r<4;r++){const i=s.translatePolar(r*Math.PI/2,this.radius);t.push(i)}return t}generateLines(){return[]}check(){return""}toSvg(t,s=""){return Tc(this.px,t-this.py,this.radius,s)}toDxfSeg(){const t=[];return t.push(Ic(this.px,this.py,this.radius)),t}toPax(){return Oc(this.px,this.py,this.radius)}};function vl(e,n,t=""){return new Fc(e,n,t)}function Sl(e,n,t,s=""){return new Uc(e,n,t,s)}var qc=class ss{constructor(){I(this,"pointList");I(this,"lineList");I(this,"vectorList");I(this,"mainList");I(this,"mainBList");I(this,"secondList");I(this,"secondBList");I(this,"dynamicsList");I(this,"xMin");I(this,"xMax");I(this,"yMin");I(this,"yMax");this.pointList=[],this.lineList=[],this.vectorList=[],this.mainList=[],this.mainBList=[],this.secondList=[],this.secondBList=[],this.dynamicsList=[],this.xMin=0,this.xMax=0,this.yMin=0,this.yMax=0}addPoint(n){this.pointList.push(n)}addPoints(n){this.pointList.push(...n)}addLine(n){this.lineList.push(n)}addLines(n){for(const t of n)this.lineList.push(t)}addVector(n){this.vectorList.push(n)}addMain(n){const t=n.generateContour();this.addPoints(t.generatePoints()),this.addLines(t.generateLines()),this.mainList.push(t),this.mainBList.push(n.extractSkeleton())}addSecond(n){const t=n.generateContour();this.addPoints(t.generatePoints()),this.addLines(t.generateLines()),this.secondList.push(t),this.secondBList.push(n.extractSkeleton())}addDynamics(n){this.addPoints(n.generatePoints()),this.addLines(n.generateLines()),this.dynamicsList.push(n)}translate(n,t){const s=new ss;for(const r of this.pointList)s.addPoint(r.translate(n,t));for(const r of this.lineList)s.addLine(r.translate(n,t));for(const r of this.vectorList)s.addVector(r.translate(n,t));for(const r of this.mainList)s.addMain(r.translate(n,t));for(const r of this.secondList)s.addSecond(r.translate(n,t));for(const r of this.dynamicsList)s.addDynamics(r.translate(n,t));return s}translatePolar(n,t){return this.translate(t*Math.cos(n),t*Math.sin(n))}rotate(n,t,s){const r=new ss,i=V(n,t);for(const o of this.pointList)r.addPoint(o.rotate(i,s));for(const o of this.lineList)r.addLine(o.rotate(i,s));for(const o of this.vectorList)r.addVector(o.rotate(i,s));for(const o of this.mainList)r.addMain(o.rotate(n,t,s));for(const o of this.secondList)r.addSecond(o.rotate(n,t,s));for(const o of this.dynamicsList)r.addDynamics(o.rotate(n,t,s));return r}mergeFigure(n,t=!1){for(const s of n.pointList)this.addPoint(s.clone());for(const s of n.lineList)this.addLine(s.clone());for(const s of n.vectorList)this.addVector(s.clone());for(const s of n.mainList)t?this.addSecond(s.clone()):this.addMain(s.clone());for(const s of n.secondList)this.addSecond(s.clone());for(const s of n.dynamicsList)this.addDynamics(s.clone())}clear(){this.pointList=[],this.lineList=[],this.vectorList=[],this.mainList=[],this.mainBList=[],this.secondList=[],this.secondBList=[],this.dynamicsList=[]}getMinMax(){[this.xMin,this.xMax,this.yMin,this.yMax]=mi(this.pointList)}getAdjustFull(n,t){let s=es();return this.pointList.length>0&&(this.getMinMax(),s=ts(this.xMin,this.xMax,this.yMin,this.yMax,n,t)),s}getAdjustZoom(n,t){let s=es();if(this.pointList.length>0){this.getMinMax();const r=(this.xMin+this.xMax)/2,i=(this.yMin+this.yMax)/2;s=ts(r,this.xMax,i,this.yMax,n,t)}return s}quantifyRuler(n,t){const r=n/10/t.scaleX;let i=1e-4;for(;i<r;)i*=10;i/5>r?i/=5:i/2>r&&(i/=2);const o=i*t.scaleX;return[i,o]}drawRuler(n,t,s){const[r,i]=this.quantifyRuler(n.canvas.width,t),o=n.canvas.width-10-i;n.font="15px Arial",n.fillStyle=s,n.fillText(`${r.toFixed(4)}`,o,20),n.beginPath(),n.moveTo(o,25),n.lineTo(o+i,25),n.lineTo(o+i,25+i),n.strokeStyle=s,n.stroke()}draw(n,t,s){if(s.points)for(const r of this.pointList)r.draw(n,t);if(s.lines)for(const r of this.lineList)r.draw(n,t);if(s.vectors)for(const r of this.vectorList)r.draw(n,t);if(s.main)for(const r of this.mainList)r.draw(n,t,ie.main);if(s.mainB)for(const r of this.mainBList)r.draw(n,t,ie.mainB);if(s.second)for(const r of this.secondList)r.draw(n,t,ie.second);if(s.secondB)for(const r of this.secondBList)r.draw(n,t,ie.secondB);if(s.dynamics)for(const r of this.dynamicsList)r.draw(n,t,ie.dynamics);if(s.ruler&&this.drawRuler(n,t,ie.ruler),s.refframe){for(const r of[10,100,200])V(r,0).draw(n,t,ie.reference,2),V(-r,0).draw(n,t,ie.reference,2),V(0,r).draw(n,t,ie.reference,2),V(0,-r).draw(n,t,ie.reference,2);V(0,0).draw(n,t,ie.origin,2)}}};function jc(){return new qc}function rs(e){const n=jc();for(const t in e){const s=e[t];for(const r of s.pointList)n.pointList.push(r);for(const r of s.lineList)n.lineList.push(r);for(const r of s.vectorList)n.vectorList.push(r);for(const r of s.mainList)n.mainList.push(r);for(const r of s.mainBList)n.mainBList.push(r);for(const r of s.secondList)n.secondList.push(r);for(const r of s.secondBList)n.secondBList.push(r);for(const r of s.dynamicsList)n.dynamicsList.push(r)}return n}function kl(){return{points:!1,lines:!1,vectors:!1,main:!0,mainB:!1,second:!0,secondB:!1,dynamics:!1,ruler:!0,refframe:!1}}function Tl(e){return{points:e.points,lines:e.lines,vectors:e.vectors,main:e.main,mainB:e.mainB,second:e.second,secondB:e.secondB,dynamics:e.dynamics,ruler:e.ruler,refframe:e.refframe}}var Wc=(e=>(e[e.eNumber=0]="eNumber",e[e.eCheckbox=1]="eCheckbox",e[e.eDropdown=2]="eDropdown",e))(Wc||{});function Bc(e,n,t){return{val:e,init:n,chg:t}}function Vc(e){const n={};for(const t of Object.keys(e))n[t]=e[t].val;return n}var Hc=class{constructor(e){I(this,"paramVal",{});I(this,"paramInit",{});I(this,"paramChanged",{});I(this,"partName");I(this,"paramNames");for(const n of e.params)this.paramVal[n.name]=n.init,this.paramInit[n.name]=n.init,this.paramChanged[n.name]=!1;this.partName=e.partName,this.paramNames=this.getParamName()}getParamName(){const e=[];for(const n of Object.keys(this.paramVal))e.push(n);return e}getPartName(){return this.partName}getParamVal(){return this.paramVal}getVal(e){if(this.paramNames.includes(e))return this.paramVal[e];throw`err140: parameter ${e} does not exist in design ${this.partName}`}getInit(e){if(this.paramNames.includes(e))return this.paramInit[e];throw`err149: parameter ${e} does not exist in design ${this.partName}`}getChanged(e){if(this.paramNames.includes(e))return this.paramChanged[e];throw`err156: parameter ${e} does not exist in design ${this.partName}`}setVal(e,n){if(this.paramNames.includes(e))this.paramVal[e]=n,this.paramChanged[e]=!0;else throw`err163: parameter ${e} does not exist in design ${this.partName}`}applyParamVal(e){let n="";for(const t of Object.keys(e))this.setVal(t,e[t]);return n+=`info104: apply ${Object.keys(e).length} parameters on ${this.partName}
|
|
49
|
-
`,n}applyParamList(e){return this.applyParamVal(Vc(e))}getDesignParamList(){const e={};for(const n of this.paramNames)e[n]=Bc(this.getVal(n),this.getInit(n),this.getChanged(n));return e}};function Al(e){return new Hc(e)}function Pl(e,n,t,s=0,r=100,i=1){return{name:e,unit:n,init:t,min:s,max:r,step:i,dropdown:[],pType:0}}function El(e,n){return{name:e,unit:"checkbox",init:n?1:0,min:0,max:1,step:1,dropdown:[],pType:1}}function Cl(e,n){return{name:e,unit:"dropdown",init:0,min:0,max:n.length-1,step:1,dropdown:n,pType:2}}var Zc=(e=>(e[e.eLinearOrtho=0]="eLinearOrtho",e[e.eRotate=1]="eRotate",e))(Zc||{}),Gc=(e=>(e[e.eIdentity=0]="eIdentity",e[e.eIntersection=1]="eIntersection",e[e.eUnion=2]="eUnion",e[e.eSubstraction=3]="eSubstraction",e))(Gc||{});function Ml(e){return{partName:e,calcErr:!0,logstr:"",fig:{},vol:{extrudes:[],volumes:[]},sub:{}}}function Ll(e){if(e.calcErr){let n=`err182: Error in sub-design ${e.partName}
|
|
48
|
+
`}stringify(){return this.close(),this.dxfStr}};function $c(){return new Dc}function Oc(e,n,t){return{circle:!0,cx:e,cy:n,radius:t}}var Rc=class{constructor(){I(this,"seg");this.seg=[]}addStart(e,n){this.seg=[];const t={typ:0,px:e,py:n};this.seg.push(t)}addStroke(e,n){const t={typ:1,px:e,py:n};this.seg.push(t)}addArc(e,n,t,s,r){const i={typ:2,px:e,py:n,radius:t,large:s,ccw:r};this.seg.push(i)}toJson(){return{circle:!1,seg:this.seg}}};function Nc(){return new Rc}var wi=class{},Fc=class ht extends wi{constructor(t,s,r=""){super();I(this,"circle",!1);I(this,"segments");I(this,"points");I(this,"debugPoints");I(this,"debugLines");I(this,"lastPoint");I(this,"imposedColor");this.segments=[new Be(6,t,s,0)],this.points=[],this.debugPoints=[],this.debugLines=[],this.lastPoint=V(t,s),this.imposedColor=r}setLastPoint(t,s){this.lastPoint=V(t,s)}getLastPoint(){return this.lastPoint}addPointA(t,s){if(this.points.length>2)throw`err311: contour add too much point ${t} ${s}`;return this.points.push(V(t,s)),this}addPointAP(t,s){const r=V(0,0).translatePolar(t,s);return this.addPointA(r.cx,r.cy),this}addPointR(t,s){const i=this.getLastPoint().translate(t,s);return this.addPointA(i.cx,i.cy),this}addPointRP(t,s){const i=this.getLastPoint().translatePolar(t,s);return this.addPointA(i.cx,i.cy),this}addSeg(t){return this.segments.push(t),this}addSegStroke(){if(this.points.length!==1)throw`err554: contour addSegStroke with unexpected points.length ${this.points.length}`;const t=this.points.pop();if(t!==void 0){const s=new Be(0,t.cx,t.cy,0);t.isEqual(this.getLastPoint())||(this.addSeg(s),this.setLastPoint(t.cx,t.cy))}else throw"err284: contour p1 is undefined";return this}addSegStrokeA(t,s){return this.addPointA(t,s).addSegStroke(),this}addSegStrokeAP(t,s){return this.addPointAP(t,s).addSegStroke(),this}addSegStrokeR(t,s){return this.addPointR(t,s).addSegStroke(),this}addSegStrokeRP(t,s){return this.addPointRP(t,s).addSegStroke(),this}addSegArc(t,s,r){if(this.points.length!==1)throw`err954: contour addSegArc with unexpected points.length ${this.points.length}`;const i=this.points.pop();if(i!==void 0){const o=new Be(1,i.cx,i.cy,t,s,r);i.isEqual(this.getLastPoint())?console.log(`warn144: addSegArc last and new point identical ${Ge(i.cx)} ${Ge(i.cy)}`):(this.addSeg(o),this.setLastPoint(i.cx,i.cy))}else throw"err482: contour p1 is undefined";return this}addSegArc2(){if(this.points.length!==2)throw`err958: contour addSegArc2 with unexpected points.length ${this.points.length}`;const t=this.points.pop(),s=this.points.pop();if(s!==void 0&&t!==void 0){const r=this.getLastPoint(),i=xc(r,s,t),o=i.distanceToPoint(r),c=r.middlePoint(t),a=c.angleToPoint(r),f=c.angleToPoint(s),l=c.angleToPoint(i),p=ne(f-a),m=ne(l-a);let x=!1,_=!1;Math.sign(m)*Math.sign(p)>0&&(x=!0),Math.sign(p)>0&&(_=!0),this.addPointA(t.cx,t.cy).addSegArc(o,x,_),this.debugPoints.push(s)}else throw"err488: contour p1 or p2 or seg is undefined";return this}addSegArc3(t,s){if(this.points.length!==1)throw`err914: contour addSegArc3 with unexpected points.length ${this.points.length}`;const r=this.points.pop();if(r!==void 0){const i=this.getLastPoint(),o=ns(i,r);let c=r;s&&(c=i);const a=vn(c.cx,c.cy,t+Math.PI/2),f=o.intersection(a),l=f.distanceToPoint(i),p=i.middlePoint(r),m=c.angleToPoint(p),x=ne(t-m);let _=!1;Math.abs(x)>Math.PI/2&&(_=!0);let d=!1;x<0&&(d=!0),s||(d=!d),this.addPointA(r.cx,r.cy).addSegArc(l,_,d),this.debugPoints.push(p),this.debugPoints.push(f)}else throw"err282: contour p1 is undefined";return this}addSeg2Arcs(t,s){if(this.points.length!==1)throw`err214: contour addSeg2Arcs with unexpected points.length ${this.points.length}`;const r=this.points.pop();if(r!==void 0){const i=this.getLastPoint(),o=i.distanceToPoint(r),c=i.angleToPoint(r),a=r.angleToPoint(i),f=ne(t-c),l=-1*ne(s-a);if(Math.abs(f)>=Math.PI/2)throw`err545: addSeg2Arcs with too large au ${f}`;if(Math.abs(l)>=Math.PI/2)throw`err546: addSeg2Arcs with too large av ${l}`;if(J(f)===0)throw`err765: addSeg2Arcs with almost zero au ${f}`;if(J(l)===0)throw`err766: addSeg2Arcs with almost zero av ${l}`;if(Math.sign(f)*Math.sign(l)<1)throw`err767: addSeg2Arcs with au/av bad orientation ${f} ${l}`;const p=Math.tan(f/2),m=Math.tan(l/2),x=o*m/(m+p),_=Math.abs(x/Math.sin(f)),d=x/Math.cos(f/2),u=o*p/(m+p),h=Math.abs(u/Math.sin(l)),g=i.translatePolar(c+f/2,d);let w=!1;Math.sign(f)<0&&(w=!0),this.addPointA(g.cx,g.cy).addSegArc(_,!1,w),this.addPointA(r.cx,r.cy).addSegArc(h,!1,w),this.debugPoints.push(i.translatePolar(c,x)),this.debugPoints.push(i.translatePolar(c+f-Math.sign(f)*Math.PI/2,_)),this.debugPoints.push(r.translatePolar(a-l+Math.sign(f)*Math.PI/2,h))}else throw"err182: contour p1 is undefined";return this}addCornerPointed(){const t=new Be(2,0,0,0);return this.addSeg(t),this}addCornerRounded(t){const s=new Be(3,0,0,t);return this.addSeg(s),this}addCornerWidened(t){const s=new Be(4,0,0,t);return this.addSeg(s),this}addCornerWideAcc(t){const s=new Be(5,0,0,t);return this.addSeg(s),this}closeSegStroke(){const t=this.segments[0].px,s=this.segments[0].py;return this.addSegStrokeA(t,s),this}closeSegArc(t,s,r){const i=this.segments[0].px,o=this.segments[0].py;return this.addPointA(i,o).addSegArc(t,s,r),this}clone(){const t=new ht(this.segments[0].px,this.segments[0].py);for(const s of this.segments){const r=s.clone();r.sType!==6&&(t.addSeg(r),Fe(r.sType)&&t.setLastPoint(r.px,r.py))}return t}translate(t,s){const r=this.segments[0].px+t,i=this.segments[0].py+s,o=new ht(r,i);for(const c of this.segments){const a=c.clone();Fe(c.sType)&&(a.px+=t,a.py+=s),a.sType!==6&&(o.addSeg(a),Fe(a.sType)&&o.setLastPoint(a.px,a.py))}return o}translatePolar(t,s){return this.translate(s*Math.cos(t),s*Math.sin(t))}rotate(t,s,r){const i=V(t,s),c=V(this.segments[0].px,this.segments[0].py).rotate(i,r),a=new ht(c.cx,c.cy);for(const f of this.segments){const l=f.clone();if(Fe(f.sType)){const m=V(l.px,l.py).rotate(i,r);l.px=m.cx,l.py=m.cy}l.sType!==6&&(a.addSeg(l),Fe(l.sType)&&a.setLastPoint(l.px,l.py))}return a}scale(t,s,r,i=!1){const o=V(t,s),a=V(this.segments[0].px,this.segments[0].py).scale(o,r),f=new ht(a.cx,a.cy);for(const l of this.segments){const p=l.clone();if(Fe(l.sType)){const x=V(p.px,p.py).scale(o,r);p.px=x.cx,p.py=x.cy}l.sType===1&&(p.radius*=r),fn(l.sType)&&i&&(p.radius*=r),p.sType!==6&&(f.addSeg(p),Fe(p.sType)&&f.setLastPoint(p.px,p.py))}return f}addPartial(t){if(this.points.length>0)throw`err911: addPartial, points should be used ${this.points.length}`;let s=t;if(t.segments.length>0){const r=t.segments[0],i=this.getLastPoint(),o=r.px-i.cx,c=r.py-i.cy;r.sType===6&&(s=t.translate(-o,-c))}for(const r of s.segments)r.sType!==6&&(this.addSeg(r),Fe(r.sType)&&this.setLastPoint(r.px,r.py));return this}draw(t,s,r=ie.contour){const i=this.imposedColor===""?r:this.imposedColor;let o=0,c=0;for(const a of this.segments){if(a.sType===0){const[f,l]=gt(o,c,s),[p,m]=gt(a.px,a.py,s);t.beginPath(),t.moveTo(f,l),t.lineTo(p,m),t.strokeStyle=i,t.stroke()}if(a.sType===1)try{const f=xt(o,c,a),[l,p]=gt(f.pc.cx,f.pc.cy,s),m=hi(a.radius,s);t.beginPath(),t.arc(l,p,m,-f.a1,-f.a2,a.arcCcw),t.strokeStyle=i,t.stroke()}catch(f){console.log("err413: "+f)}Rt(a.sType)&&(o=a.px,c=a.py)}}extractSkeleton(){const t=this.segments[0],s=new ht(t.px,t.py);for(const r of this.segments)Fe(r.sType)&&s.addSeg(r);return s}generateContour(){lt.clearPoints(),lt.clearLines();const t=[],s=[];let r=0,i=0,o=0;for(const l of this.segments){if(l.sType===0){const x=V(i,o),_=V(l.px,l.py),d=V(0,0);t.push(new $e(l.sType,x,_,d,0,0,0,!1)),r=1}if(l.sType===1){const x=xt(i,o,l);t.push(x),r=1}const p=t.at(-1),m=t.at(-2);if(p!==void 0&&m!==void 0&&Fe(p.sType)&&Bn(m.sType)){const x=t.pop(),_=t.pop(),d=t.pop();if(d!==void 0&&_!==void 0&&x!==void 0){const u=gr(d,_,x);t.push(...u)}else throw"err603: contour generateContour internal error"}if(Bn(l.sType)){if(r===2)throw`err419: generateContour with two consecutive corners ${l.sType}`;if(r===0&&fn(l.sType)&&l.radius>0){const x=V(0,0);s.push(new $e(l.sType,x,x,x,l.radius,0,0,!1))}if(r===1&&fn(l.sType)&&l.radius>0){const x=V(0,0);t.push(new $e(l.sType,x,x,x,l.radius,0,0,!1))}r=2}Rt(l.sType)&&(i=l.px,o=l.py)}if(s.length>0)if(r===1)t.push(...s);else throw"err397: contour generateContour Corners defined at end and begining";const c=t.at(-1);if(c!==void 0&&Bn(c.sType)){const l=t[0],p=t.pop(),m=t.pop();if(m!==void 0&&p!==void 0&&l!==void 0){const x=gr(m,p,l);t.push(...x.slice(0,-1));const _=x.at(-1);if(_!==void 0)t[0]=_;else throw"err606: contour generateContour internal error"}else throw"err602: contour generateContour internal error"}const a=t[0],f=new ht(a.p1.cx,a.p1.cy,this.imposedColor);f.debugPoints.push(...lt.getPoints()),f.debugLines.push(...lt.getLines());for(const l of t)if(l.sType===0)f.addSegStrokeA(l.p2.cx,l.p2.cy);else if(l.sType===1){const p=wc(l);f.addPointA(l.p2.cx,l.p2.cy).addSegArc(p.radius,p.arcLarge,p.arcCcw)}else throw`err986: contour generateContour unexpected in seg2 Enum ${l.sType}`;return f}generatePoints(){const t=[];t.push(...this.debugPoints);const s=this.segments[0];t.push(V(s.px,s.py));let r=0,i=0;for(const o of this.segments){if(o.sType===1)try{const c=xt(r,i,o),a=V(c.pc.cx,c.pc.cy),f=ne((c.a2-c.a1)/2);let l=c.a1+f;(Math.sign(f)>0&&!o.arcCcw||Math.sign(f)<0&&o.arcCcw)&&(l+=Math.PI);const p=a.translatePolar(l,o.radius);t.push(p)}catch(c){console.log("err453: "+c)}Rt(o.sType)&&(r=o.px,i=o.py,t.push(V(r,i)))}return t}generateLines(){const t=[];return t.push(...this.debugLines),t}checkContour(t){if(t.segments[0].sType!==6)throw`err412: contour check first seg is not eStart ${t.segments[0].sType}`;let s=0,r=0;for(const c of t.segments){if(c.sType===1)try{xt(s,r,c)}catch(a){throw`err778: ${a}`}Rt(c.sType)&&(s=c.px,r=c.py)}const i=t.segments[0].px,o=t.segments[0].py;if(J(s-i)!==0||J(r-o)!==0)throw`err414: contour check, contour is not closed px ${i} ${s} py ${i} ${o}`}check(){lt.clearMsg(),this.checkContour(this);const t=this.generateContour();return this.checkContour(t),lt.getMsg()}toSvg(t,s=""){const r=Pc();for(const o of this.segments)o.sType===6?r.addStart(o.px,t-o.py):o.sType===0?r.addStroke(o.px,t-o.py):o.sType===1?r.addArc(o.px,t-o.py,o.radius,o.arcLarge,!o.arcCcw):console.log(`err631: contour.toSvg has unknown segment type ${o.sType}`);return r.stringify(s)}toDxfSeg(){const t=[];let s=0,r=0;for(const i of this.segments){if(i.sType===0)t.push(Mc(s,r,i.px,i.py));else if(i.sType===1)try{const o=xt(s,r,i);t.push(Lc(o.pc.cx,o.pc.cy,i.radius,o.a1,o.a2,o.arcCcw))}catch(o){console.log("err413: "+o)}Rt(i.sType)&&(s=i.px,r=i.py)}return t}toPax(){const t=Nc();for(const r of this.segments)r.sType===6?t.addStart(r.px,r.py):r.sType===0?t.addStroke(r.px,r.py):r.sType===1?t.addArc(r.px,r.py,r.radius,r.arcLarge,r.arcCcw):console.log(`err709: contour.toPax has unknown segment type ${r.sType}`);return t.toJson()}},Uc=class Tt extends wi{constructor(t,s,r,i=""){super();I(this,"circle",!0);I(this,"px");I(this,"py");I(this,"radius");I(this,"imposedColor");this.px=t,this.py=s,this.radius=r,this.imposedColor=i}clone(){return new Tt(this.px,this.py,this.radius,this.imposedColor)}translate(t,s){return new Tt(this.px+t,this.py+s,this.radius,this.imposedColor)}translatePolar(t,s){return this.translate(s*Math.cos(t),s*Math.sin(t))}rotate(t,s,r){const i=V(t,s),o=V(this.px,this.py).rotate(i,r);return new Tt(o.cx,o.cy,this.radius,this.imposedColor)}draw(t,s,r=ie.contour){const[i,o]=gt(this.px,this.py,s),c=hi(this.radius,s),a=this.imposedColor===""?r:this.imposedColor;t.beginPath(),t.arc(i,o,c,0,2*Math.PI,!0),t.strokeStyle=a,t.stroke()}extractSkeleton(){return new Tt(this.px,this.py,this.radius)}generateContour(){return new Tt(this.px,this.py,this.radius,this.imposedColor)}generatePoints(){const t=[],s=V(this.px,this.py);t.push(s);for(let r=0;r<4;r++){const i=s.translatePolar(r*Math.PI/2,this.radius);t.push(i)}return t}generateLines(){return[]}check(){return""}toSvg(t,s=""){return Tc(this.px,t-this.py,this.radius,s)}toDxfSeg(){const t=[];return t.push(Ic(this.px,this.py,this.radius)),t}toPax(){return Oc(this.px,this.py,this.radius)}};function vl(e,n,t=""){return new Fc(e,n,t)}function Sl(e,n,t,s=""){return new Uc(e,n,t,s)}var qc=class ss{constructor(){I(this,"pointList");I(this,"lineList");I(this,"vectorList");I(this,"mainList");I(this,"mainBList");I(this,"secondList");I(this,"secondBList");I(this,"dynamicsList");I(this,"xMin");I(this,"xMax");I(this,"yMin");I(this,"yMax");this.pointList=[],this.lineList=[],this.vectorList=[],this.mainList=[],this.mainBList=[],this.secondList=[],this.secondBList=[],this.dynamicsList=[],this.xMin=0,this.xMax=0,this.yMin=0,this.yMax=0}addPoint(n){this.pointList.push(n)}addPoints(n){this.pointList.push(...n)}addLine(n){this.lineList.push(n)}addLines(n){for(const t of n)this.lineList.push(t)}addVector(n){this.vectorList.push(n)}addMain(n){const t=n.generateContour();this.addPoints(t.generatePoints()),this.addLines(t.generateLines()),this.mainList.push(t),this.mainBList.push(n.extractSkeleton())}addSecond(n){const t=n.generateContour();this.addPoints(t.generatePoints()),this.addLines(t.generateLines()),this.secondList.push(t),this.secondBList.push(n.extractSkeleton())}addDynamics(n){this.addPoints(n.generatePoints()),this.addLines(n.generateLines()),this.dynamicsList.push(n)}translate(n,t){const s=new ss;for(const r of this.pointList)s.addPoint(r.translate(n,t));for(const r of this.lineList)s.addLine(r.translate(n,t));for(const r of this.vectorList)s.addVector(r.translate(n,t));for(const r of this.mainList)s.addMain(r.translate(n,t));for(const r of this.secondList)s.addSecond(r.translate(n,t));for(const r of this.dynamicsList)s.addDynamics(r.translate(n,t));return s}translatePolar(n,t){return this.translate(t*Math.cos(n),t*Math.sin(n))}rotate(n,t,s){const r=new ss,i=V(n,t);for(const o of this.pointList)r.addPoint(o.rotate(i,s));for(const o of this.lineList)r.addLine(o.rotate(i,s));for(const o of this.vectorList)r.addVector(o.rotate(i,s));for(const o of this.mainList)r.addMain(o.rotate(n,t,s));for(const o of this.secondList)r.addSecond(o.rotate(n,t,s));for(const o of this.dynamicsList)r.addDynamics(o.rotate(n,t,s));return r}mergeFigure(n,t=!1){for(const s of n.pointList)this.addPoint(s.clone());for(const s of n.lineList)this.addLine(s.clone());for(const s of n.vectorList)this.addVector(s.clone());for(const s of n.mainList)t?this.addSecond(s.clone()):this.addMain(s.clone());for(const s of n.secondList)this.addSecond(s.clone());for(const s of n.dynamicsList)this.addDynamics(s.clone())}clear(){this.pointList=[],this.lineList=[],this.vectorList=[],this.mainList=[],this.mainBList=[],this.secondList=[],this.secondBList=[],this.dynamicsList=[]}getMinMax(){[this.xMin,this.xMax,this.yMin,this.yMax]=mi(this.pointList)}getAdjustFull(n,t){let s=es();return this.pointList.length>0&&(this.getMinMax(),s=ts(this.xMin,this.xMax,this.yMin,this.yMax,n,t)),s}getAdjustZoom(n,t){let s=es();if(this.pointList.length>0){this.getMinMax();const r=(this.xMin+this.xMax)/2,i=(this.yMin+this.yMax)/2;s=ts(r,this.xMax,i,this.yMax,n,t)}return s}quantifyRuler(n,t){const r=n/10/t.scaleX;let i=1e-4;for(;i<r;)i*=10;i/5>r?i/=5:i/2>r&&(i/=2);const o=i*t.scaleX;return[i,o]}drawRuler(n,t,s){const[r,i]=this.quantifyRuler(n.canvas.width,t),o=n.canvas.width-10-i;n.font="15px Arial",n.fillStyle=s,n.fillText(`${r.toFixed(4)}`,o,20),n.beginPath(),n.moveTo(o,25),n.lineTo(o+i,25),n.lineTo(o+i,25+i),n.strokeStyle=s,n.stroke()}draw(n,t,s){if(s.points)for(const r of this.pointList)r.draw(n,t);if(s.lines)for(const r of this.lineList)r.draw(n,t);if(s.vectors)for(const r of this.vectorList)r.draw(n,t);if(s.main)for(const r of this.mainList)r.draw(n,t,ie.main);if(s.mainB)for(const r of this.mainBList)r.draw(n,t,ie.mainB);if(s.second)for(const r of this.secondList)r.draw(n,t,ie.second);if(s.secondB)for(const r of this.secondBList)r.draw(n,t,ie.secondB);if(s.dynamics)for(const r of this.dynamicsList)r.draw(n,t,ie.dynamics);if(s.ruler&&this.drawRuler(n,t,ie.ruler),s.refframe){for(const r of[10,100,200])V(r,0).draw(n,t,ie.reference,2),V(-r,0).draw(n,t,ie.reference,2),V(0,r).draw(n,t,ie.reference,2),V(0,-r).draw(n,t,ie.reference,2);V(0,0).draw(n,t,ie.origin,2)}}};function jc(){return new qc}function rs(e){const n=jc();for(const t in e){const s=e[t];for(const r of s.pointList)n.pointList.push(r);for(const r of s.lineList)n.lineList.push(r);for(const r of s.vectorList)n.vectorList.push(r);for(const r of s.mainList)n.mainList.push(r);for(const r of s.mainBList)n.mainBList.push(r);for(const r of s.secondList)n.secondList.push(r);for(const r of s.secondBList)n.secondBList.push(r);for(const r of s.dynamicsList)n.dynamicsList.push(r)}return n}function kl(){return{points:!1,lines:!1,vectors:!1,main:!0,mainB:!1,second:!0,secondB:!1,dynamics:!1,ruler:!0,refframe:!1}}function Tl(e){return{points:e.points,lines:e.lines,vectors:e.vectors,main:e.main,mainB:e.mainB,second:e.second,secondB:e.secondB,dynamics:e.dynamics,ruler:e.ruler,refframe:e.refframe}}var Wc=(e=>(e[e.eNumber=0]="eNumber",e[e.eCheckbox=1]="eCheckbox",e[e.eDropdown=2]="eDropdown",e))(Wc||{});function Bc(e,n,t){return{val:e,init:n,chg:t}}function Vc(e){const n={};for(const t of Object.keys(e))n[t]=e[t].val;return n}var Hc=class{constructor(e,n=""){I(this,"paramVal",{});I(this,"paramInit",{});I(this,"paramChanged",{});I(this,"partName");I(this,"suffix");I(this,"paramNames");for(const t of e.params)this.paramVal[t.name]=t.init,this.paramInit[t.name]=t.init,this.paramChanged[t.name]=!1;this.suffix=n,this.partName=e.partName,this.paramNames=this.getParamName()}getParamName(){const e=[];for(const n of Object.keys(this.paramVal))e.push(n);return e}getPartName(){return this.partName}getPartNameSuffix(){return this.partName+this.suffix}getSuffix(){return this.suffix}getParamVal(){return this.paramVal}getVal(e){if(this.paramNames.includes(e))return this.paramVal[e];throw`err140: parameter ${e} does not exist in design ${this.partName}`}getInit(e){if(this.paramNames.includes(e))return this.paramInit[e];throw`err149: parameter ${e} does not exist in design ${this.partName}`}getChanged(e){if(this.paramNames.includes(e))return this.paramChanged[e];throw`err156: parameter ${e} does not exist in design ${this.partName}`}setVal(e,n){if(this.paramNames.includes(e))this.paramVal[e]=n,this.paramChanged[e]=!0;else throw`err163: parameter ${e} does not exist in design ${this.partName}`}applyParamVal(e){let n="";for(const t of Object.keys(e))this.setVal(t,e[t]);return n+=`info104: apply ${Object.keys(e).length} parameters on ${this.partName}
|
|
49
|
+
`,n}applyParamList(e){return this.applyParamVal(Vc(e))}getDesignParamList(){const e={};for(const n of this.paramNames)e[n]=Bc(this.getVal(n),this.getInit(n),this.getChanged(n));return e}};function Al(e,n=""){return new Hc(e,n)}function Pl(e,n,t,s=0,r=100,i=1){return{name:e,unit:n,init:t,min:s,max:r,step:i,dropdown:[],pType:0}}function El(e,n){return{name:e,unit:"checkbox",init:n?1:0,min:0,max:1,step:1,dropdown:[],pType:1}}function Cl(e,n){return{name:e,unit:"dropdown",init:0,min:0,max:n.length-1,step:1,dropdown:n,pType:2}}var Zc=(e=>(e[e.eLinearOrtho=0]="eLinearOrtho",e[e.eRotate=1]="eRotate",e))(Zc||{}),Gc=(e=>(e[e.eIdentity=0]="eIdentity",e[e.eIntersection=1]="eIntersection",e[e.eUnion=2]="eUnion",e[e.eSubstraction=3]="eSubstraction",e))(Gc||{});function Ml(e){return{partName:e,calcErr:!0,logstr:"",fig:{},vol:{extrudes:[],volumes:[]},sub:{}}}function Ll(e){if(e.calcErr){let n=`err182: Error in sub-design ${e.partName}
|
|
50
50
|
`;throw n+=Yc(e.logstr,e.partName),n}}function Yc(e,n){let t="";for(const s of e.split(`
|
|
51
51
|
`))s!==""&&(t+=`[${n}]: ${s}
|
|
52
52
|
`);return t}var Xc=class{figureToPaxF(e){const n=[];for(const t of e)n.push(t.toPax());return n}getFigures(e){const n={};for(const t in e){const s=this.figureToPaxF(e[t].mainList);n[t]=s}return n}getPaxJson(e,n){return{partName:n.partName,params:e,faces:this.getFigures(n.fig),volume:n.vol,subs:n.sub,log:n.logstr}}getPaxStr(e,n){const t=this.getPaxJson(e,n);return JSON.stringify(t,null,2)}};function Zt(){return new Xc}function yi(e){let n=6;return e===1?n=0:e===2&&(n=1),n}function bi(e,n,t,s){let r=Math.PI/2;n<2*t&&(r=2*Math.asin(n/(2*t)));const i=Math.min(e,r),o=Math.ceil(s/i),c=s/o;return[o,c]}function _i(e,n,t,s=Math.PI/6,r=2){const[i,o]=bi(s,r,t,2*Math.PI),c=[];for(let l=0;l<i;l++){const p=e+t*Math.cos(l*o),m=n+t*Math.sin(l*o);c.push([p,m])}const a=c[0][0],f=c[0][1];return c.push([a,f]),c}function vi(e,n,t,s,r,i,o=Math.PI/6,c=2){const a=Qn(s,r,i),[f,l]=bi(o,c,t,Math.abs(a)),p=i?l:-l,m=f+1,x=[];for(let _=1;_<m;_++){const d=s+_*p,u=e+t*Math.cos(d),h=n+t*Math.sin(d);x.push([u,h])}return x}var Si=Math.PI/8,ki=20;function wr(e,n){return[[e,n]]}function Kc(e,n,t,s,r,i){return vi(e,n,t,s,r,i,Si,ki)}function Jc(e,n,t){return _i(e,n,t,Si,ki)}function zc(e){const n=[];let t=0,s=0;for(const r of e){if(r.typ===0)n.push(...wr(r.px,r.py));else if(r.typ===1)n.push(...wr(r.px,r.py));else if(r.typ===2)try{const i=r,o=new Be(yi(i.typ),i.px,i.py,i.radius,i.large,i.ccw),c=xt(t,s,o);n.push(...Kc(c.pc.cx,c.pc.cy,o.radius,c.a1,c.a2,c.arcCcw))}catch(i){console.log("err730: "+i)}t=r.px,s=r.py}return n}function yr(e){return e.toFixed(4)}var Qc=class{constructor(){I(this,"pts");I(this,"ptIdx");I(this,"idx");this.pts=[],this.ptIdx=[],this.idx=0}addContour(e){const n=[],t=[];for(const i of e){const[o,c]=i;n.push(`[ ${yr(o)}, ${yr(c)} ]`),t.push(` ${this.idx}`),this.idx+=1}const s=`[ ${n.join(",")} ]`,r=`[ ${t.join(",")} ]`;this.pts.push(s),this.ptIdx.push(r)}getFigure(e){let n="";const t=[],s=[];for(const o of this.pts.keys()){const c=`ca_${e}_${o}`,a=`cb_${e}_${o}`;n+=`${c} = ${this.pts[o]};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var re=Object.defineProperty;var de=(n,t,a)=>t in n?re(n,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):n[t]=a;var C=(n,t,a)=>(de(n,typeof t!="symbol"?t+"":t,a),a);import{p as e,a as dt,b as Ht,i as lt,d as Pt,f as L,c as B,E as z,g as J,h as ct,j as ht,k as gt,r as ot,l as M,m as I,n as st,o as et,q as kt,s as Et,w as Vt,S as wt,t as ce}from"./index.IHydPqp2.js";var he=class{constructor(n,t,a,s,i){C(this,"base_center_x");C(this,"base_center_y");C(this,"base_radius");C(this,"initial_angle");C(this,"right_nleft");this.base_center_x=n,this.base_center_y=t,this.base_radius=a,this.initial_angle=s,this.right_nleft=i}angleSign(){return this.right_nleft?1:-1}lFromU(n){return this.base_radius*Math.sqrt(1+n**2)}wFromU(n){if(n<0)throw`err729: involute parameter au ${n} is negative`;if(Math.abs(n)>Math.PI/2)throw`err730: involute parameter au ${n} is larger than PI/2`;return this.angleSign()*(n-Math.atan(n))}w2FromU(n){return this.initial_angle+this.wFromU(n)}ptc(n){const t=this.lFromU(n),a=this.w2FromU(n),s=this.base_center_x+Math.cos(a)*t,i=this.base_center_y+Math.sin(a)*t;return[s,i]}ptcta(n){return this.initial_angle+this.angleSign()*n}uFromL(n){return Math.sqrt(n**2/this.base_radius**2-1)}uFromWslow(n){let a=Math.PI/3,s=a/2,i=this.wFromU(a),_=0;for(;Math.abs(i-n)>1e-4;)i<n?a+=s:a-=s,i=this.wFromU(a),s=s/2,_+=1;return console.log(`dbg072: uFromWslow itcnt ${_}`),a}laptc(n,t,a,s){if(Math.sign(t)*this.angleSign()<0)throw`err904: Invole.laptc angle-of-pressure ${t} not compatible with right_nleft ${this.right_nleft}`;const i=n+t,_=this.base_center_x+Math.cos(i)*this.base_radius,o=this.base_center_y+Math.sin(i)*this.base_radius,d=i-this.angleSign()*Math.PI/2,u=a*this.base_radius,D=_+Math.cos(d)*u,c=o+Math.sin(d)*u,g=this.lFromU(a)*s,l=a,r=Math.cos(l)*g,w=Math.sin(l)*g;return[D,c,r,w]}};function ut(n,t,a,s,i){return new he(n,t,a,s,i)}var ge=class{constructor(){C(this,"mod",1);C(this,"TN",23);C(this,"as",1);C(this,"cx",0);C(this,"cy",0);C(this,"brr",50);C(this,"blr",50);C(this,"ar",54);C(this,"pr",53);C(this,"dr",52);C(this,"br",51);C(this,"bRound",1);C(this,"adt",.5);C(this,"initAngle",0);C(this,"axisAngle",0);C(this,"involArcPairs",1);C(this,"skinThickness",0);C(this,"involuteR",ut(0,0,50,0,!0));C(this,"involuteL",ut(0,0,50,0,!1));C(this,"rud",0);C(this,"rup",0);C(this,"rua",0);C(this,"rwd",0);C(this,"rwp",0);C(this,"rwa",0);C(this,"lud",0);C(this,"lup",0);C(this,"lua",0);C(this,"lwd",0);C(this,"lwp",0);C(this,"lwa",0);C(this,"msg");C(this,"initStep",0);this.mod=1,this.msg="",this.initStep=0}incInitStep(n){if(this.initStep+1!==n)throw`err834: incInitStep initStep ${this.initStep} and target ${n} are not compatible`;this.initStep=n}checkInitStep(n,t){if(this.initStep<n)throw`err835: checkInitStep for ${t} initStep ${this.initStep} is too small compare to targetMin ${n}`}set1ModuleToothNumber(n,t){this.incInitStep(1),this.mod=n,this.TN=t,this.pr=this.mod*this.TN/2,this.as=2*Math.PI/this.TN}set2CenterPosition(n,t){this.incInitStep(2),this.cx=n,this.cy=t}set3CircleRadius(n,t,a,s){this.incInitStep(3),this.ar=this.pr+this.mod*n,this.dr=this.pr-this.mod*t,this.br=this.dr-this.mod*a,this.bRound=s}set4BaseCircles(n,t){this.incInitStep(4),this.brr=n,this.blr=t}set5AddendumThickness(n){this.incInitStep(5),this.adt=n/100}set6Angles(n,t){this.incInitStep(6),this.initAngle=n,this.axisAngle=t}set7InvoluteDetails(n,t){this.incInitStep(7),this.involArcPairs=n,this.skinThickness=t}getRefCircles(){return this.checkInitStep(4,"getRefCircles"),[M(this.cx,this.cy,this.ar,"Azure"),M(this.cx,this.cy,this.pr,"Azure"),M(this.cx,this.cy,this.dr,"Azure"),M(this.cx,this.cy,this.br,"Azure"),M(this.cx,this.cy,this.brr,"CornFlowerBlue"),M(this.cx,this.cy,this.blr,"Crimson")]}calcInvoluteAngles(){this.checkInitStep(4,"calcInvoluteAngles"),this.involuteR=ut(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=ut(this.cx,this.cy,this.blr,0,!1),this.dr>this.blr?this.lud=this.involuteL.uFromL(this.dr):this.rud=0,this.lup=this.involuteL.uFromL(this.pr),this.lua=this.involuteL.uFromL(this.ar),this.lwd=this.involuteL.wFromU(this.lud),this.lwp=this.involuteL.wFromU(this.lup),this.lwa=this.involuteL.wFromU(this.lua)}checkProfileConditions(){const n=this.as*this.adt,t=this.rwa-this.rwp,a=Math.abs(this.lwa-this.lwp),s=n-t-a;if(s<0)throw`err554: No remaining Addendum reserve ${L(s)}
|
|
2
|
+
`;const i=this.as*(1-this.adt),_=this.rwp-this.rwd,o=Math.abs(this.lwp-this.lwd),d=i-_-o;if(d<2*Math.atan2(this.bRound,this.br))throw`err555: No remaining Dedendum reserve ${L(d)} compare to bRound ${L(this.bRound)}
|
|
3
|
+
`}getToothRef(){const n=6*this.involArcPairs,t=0;this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles();const a=(this.rua-this.rud)/n,s=(this.lua-this.lud)/n,i=this.initAngle+t*this.as,_=ut(this.cx,this.cy,this.brr,i-this.rwp,!0),[o,d]=_.ptc(this.rud+0*a),u=B(o,d,"Gold");for(let h=0;h<n;h++){const[g,l]=_.ptc(this.rud+(h+1)*a);u.addSegStrokeA(g,l)}const D=i+this.as*this.adt,c=ut(this.cx,this.cy,this.blr,D-this.lwp,!1);for(let h=0;h<n+1;h++){const[g,l]=c.ptc(this.lud+(n-h)*s);u.addSegStrokeA(g,l)}return u.closeSegStroke(),u}getProfile(){this.checkInitStep(7,"getProfile"),this.calcInvoluteAngles(),this.checkProfileConditions();const n=this.rwd-this.rwp,t=this.lwd-this.lwp,a=this.dr>this.brr?this.dr:this.brr,s=this.dr>this.blr?this.dr:this.blr;if(this.bRound>a-this.br)throw`err409: getProfile bRound ${L(this.bRound)} too large for erdr ${L(a)} and br ${L(this.br)}`;if(this.bRound>s-this.br)throw`err408: getProfile bRound ${L(this.bRound)} too large for eldr ${L(s)} and br ${L(this.br)}`;const i=(this.rua-this.rud)/this.involArcPairs,_=(this.lua-this.lud)/this.involArcPairs,o=st(this.cx,this.cy),d=o.translatePolar(this.initAngle+n,this.br),u=B(d.cx,d.cy);for(let D=0;D<this.TN;D++){const c=this.initAngle+D*this.as,h=o.translatePolar(c+n,this.br);u.addSegStrokeA(h.cx,h.cy).addCornerRounded(this.bRound);const g=ut(this.cx,this.cy,this.brr,c-this.rwp,!0),[l,r]=g.ptc(this.rud),w=g.ptcta(this.rud),V=st(l,r).translatePolar(w-Math.PI/2,this.skinThickness);u.addSegStrokeA(V.cx,V.cy);for(let H=0;H<this.involArcPairs;H++){const S=this.rud+H*i,[$,y]=g.ptc(S+i),x=g.ptcta(S),X=g.ptcta(S+i)+Math.PI,T=st($,y).translatePolar(x-Math.PI/2,this.skinThickness);u.addPointA(T.cx,T.cy).addSeg2Arcs(x,X)}const F=c+this.as*this.adt,P=ut(this.cx,this.cy,this.blr,F-this.lwp,!1),N=this.lud+this.involArcPairs*_,[f,R]=P.ptc(N),b=P.ptcta(N)+Math.PI,A=st(f,R).translatePolar(b-Math.PI/2,this.skinThickness);u.addSegStrokeA(A.cx,A.cy);for(let H=0;H<this.involArcPairs;H++){const S=this.lud+(this.involArcPairs-H)*_,[$,y]=P.ptc(S-_),x=P.ptcta(S)+Math.PI,X=P.ptcta(S-_),T=st($,y).translatePolar(x-Math.PI/2,this.skinThickness);u.addPointA(T.cx,T.cy).addSeg2Arcs(x,X)}const v=o.translatePolar(F+t,this.br);u.addSegStrokeA(v.cx,v.cy).addCornerRounded(this.bRound)}return u.closeSegStroke(),u}getMsg(){return this.msg}};function qt(){return new ge}function ae(n,t,a,s){n.checkInitStep(1,"helper.gw2center-1"),t.checkInitStep(1,"helper.gw2center-2");const i=n.pr+t.pr+s,_=n.cx+i*Math.cos(a),o=n.cy+i*Math.sin(a);return[_,o,i]}function ue(n,t,a,s,i,_,o,d,u){n.checkInitStep(3,"helper.baseCircles-1"),t.checkInitStep(3,"helper.baseCircles-2");let D=a,c=i,h=s,g=_;const l=d,r=u;return l===0&&(t.TN>n.TN?(D=n.dr,c=D*t.TN/n.TN):(c=t.dr,D=c*n.TN/t.TN)),r===0&&(t.TN>n.TN?(h=n.dr,g=h*t.TN/n.TN):(g=t.dr,h=g*n.TN/t.TN)),o===1&&(h=D,g=c),[D,h,c,g]}var _e=class{constructor(n,t,a,s,i,_){C(this,"gw1");C(this,"gw2");C(this,"initAngle1");C(this,"angleCenterCenter");C(this,"interAxis");C(this,"rightLeftCenter2");C(this,"msg");C(this,"apr");C(this,"apl");C(this,"lBDr",0);C(this,"lBDl",0);C(this,"laStartRr1",0);C(this,"laStartRr2",0);C(this,"laStartRl1",0);C(this,"laStartRl2",0);C(this,"aFODr1",0);C(this,"aFODr2",0);C(this,"aFODl1",0);C(this,"aFODl2",0);C(this,"lasr1",0);C(this,"lasr2",0);C(this,"lasl1",0);C(this,"lasl2",0);C(this,"firstToothUr1",0);C(this,"firstToothUl1",0);C(this,"ftdr1",0);C(this,"ftdl1",0);this.gw1=n,this.gw2=t,this.initAngle1=a,this.angleCenterCenter=s,this.interAxis=i,this.rightLeftCenter2=_,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
|
+
`),et(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
|
+
`),et(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"),et(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 n=this.gw1.ar-this.gw1.pr,t=this.gw1.pr-this.gw1.dr,a=this.gw2.ar-this.gw2.pr,s=this.gw2.pr-this.gw2.dr;et(s-n)<0&&(this.msg+=`warn282: addendum-1 ${L(n)} larger than dedendum-2 ${L(s)}
|
|
8
|
+
`),et(t-a)<0&&(this.msg+=`warn283: addendum-2 ${L(a)} larger than dedendum-1 ${L(t)}
|
|
9
|
+
`)}calcActionLine(){this.gw1.checkInitStep(4,"ActionLine.calcActionLine-1"),this.gw2.checkInitStep(4,"ActionLine.calcActionLine-2"),this.gw1.calcInvoluteAngles(),this.gw2.calcInvoluteAngles();const n=this.interAxis*this.gw1.brr/(this.gw1.brr+this.gw2.brr),t=this.interAxis*this.gw1.blr/(this.gw1.blr+this.gw2.blr),a=this.interAxis-n,s=this.interAxis-t;this.apr=Math.acos((this.gw1.brr+this.gw2.brr)/this.interAxis),this.apl=Math.acos((this.gw1.blr+this.gw2.blr)/this.interAxis),this.msg+=`Pressure angular: right: ${L(ot(this.apr))} left: ${L(ot(this.apl))} degree
|
|
10
|
+
`,this.lBDr=this.interAxis*Math.sin(this.apr),this.lBDl=this.interAxis*Math.sin(this.apl),this.msg+=`Line of Action Maximum length: right: ${L(this.lBDr)} left: ${L(this.lBDl)} mm
|
|
11
|
+
`;const i=Math.PI/2+this.apr,_=kt(this.gw1.ar,n,i);this.aFODr1=Math.PI-i-_;const o=this.gw1.rua-this.apr-this.gw1.rwa;if(et(this.aFODr1-o)!==0)throw`dbg378: aFODr1 ${this.aFODr1} and aFODr1Alt ${o} differ`;const d=Et(n,this.gw1.ar,this.aFODr1),u=i,D=kt(this.gw2.ar,a,u);this.aFODr2=Math.PI-u-D;const c=this.gw2.rua-this.apr-this.gw2.rwa;if(et(this.aFODr2-c)!==0)throw`dbg379: aFODr2 ${this.aFODr2} and aFODr2Alt ${c} differ`;const h=Et(a,this.gw2.ar,this.aFODr2),g=d+h,l=g/this.gw1.brr,r=g/this.gw2.brr,w=this.gw1.rua-l,V=this.gw2.rua-r;this.laStartRr1=this.gw1.involuteR.lFromU(w),this.laStartRr2=this.gw2.involuteR.lFromU(V);const F=Math.PI/2+this.apl,P=kt(this.gw1.ar,t,F);this.aFODl1=Math.PI-F-P;const N=this.gw1.lua-this.apl+this.gw1.lwa;if(et(this.aFODl1-N)!==0)throw`dbg388: aFODl1 ${this.aFODl1} and aFODl1Alt ${N} differ`;const f=Et(t,this.gw1.ar,this.aFODl1),R=i,b=kt(this.gw2.ar,s,R);this.aFODl2=Math.PI-R-b;const A=this.gw2.lua-this.apl+this.gw2.lwa;if(et(this.aFODl2-A)!==0)throw`dbg389: aFODl2 ${this.aFODl2} and aFODl2Alt ${A} differ`;const v=Et(s,this.gw2.ar,this.aFODl2),H=f+v,S=H/this.gw1.blr,$=H/this.gw2.blr,y=this.gw1.lua-S,x=this.gw2.lua-$;this.laStartRl1=this.gw1.involuteL.lFromU(y),this.laStartRl2=this.gw2.involuteL.lFromU(x),this.msg+=`Line of Action Effective length: right: ${L(g)} left: ${L(H)} mm
|
|
12
|
+
`,this.msg+=`Line of Action Effective rotation angle: right-1: ${L(ot(l))} right-2: ${L(ot(r))} left-1: ${L(ot(S))} left-2: ${L(ot($))} degree
|
|
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
|
+
`,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
|
+
`,this.msg+=`Line of Action right: nb of contact point: 1: ${L(g/this.lasr1)} 2: ${L(g/this.lasr2)}
|
|
16
|
+
`,this.lasl1=2*Math.PI/this.gw1.TN*this.gw1.blr,this.lasl2=2*Math.PI/this.gw2.TN*this.gw2.blr,this.msg+=`Line of Action left: step length: 1: ${L(this.lasl1)} 2: ${L(this.lasl2)} mm
|
|
17
|
+
`,this.msg+=`Line of Action left: nb of contact point: 1: ${L(H/this.lasl1)} 2: ${L(H/this.lasl2)}
|
|
18
|
+
`}calcContactPoint1(){for(this.gw1.checkInitStep(5,"ActionLine.calcContactPoint1"),this.firstToothUr1=Vt(this.apr-(this.initAngle1-this.angleCenterCenter)+this.gw1.rwp);et(this.firstToothUr1-this.gw1.as)>=0;)this.firstToothUr1=et(this.firstToothUr1-this.gw1.as);for(this.firstToothUl1=Vt(this.apl+(this.initAngle1-this.angleCenterCenter)+this.gw1.as*this.gw1.adt-this.gw1.lwp);et(this.firstToothUl1-this.gw1.as)>=0;)this.firstToothUl1=et(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(n,t,a,s,i,_,o,d,u,D){const h=Math.floor(t/(2*a)),g=(s+h*a)/i,l=n?1:-1,[r,w,V,F]=_.laptc(o,l*d,g,.4);this.msg+=`speed ${u}: vx ${L(V)} vy: ${L(F)} m/s
|
|
19
|
+
`;const P=st(r,w),N=o+l*d,f=B(r,w,D),R=P.translatePolar(N,-F);f.addSegStrokeA(R.cx,R.cy);const b=R.translatePolar(N-l*Math.PI/2,V);return f.addSegStrokeA(b.cx,b.cy),f.closeSegStroke(),f}getContactSpeed(){const n=this.oneContactSpeed(!0,this.lBDr,this.lasr1,this.ftdr1,this.gw1.brr,this.gw1.involuteR,this.angleCenterCenter,this.apr,"R1","Black"),t=this.oneContactSpeed(!1,this.lBDl,this.lasl1,this.ftdl1,this.gw1.blr,this.gw1.involuteL,this.angleCenterCenter,this.apl,"L1","Black"),a=[];return a.push(n),a.push(t),a}getContours(){const n=[];n.push(M(this.gw1.cx,this.gw1.cy,this.laStartRr1,"SkyBlue")),n.push(M(this.gw1.cx,this.gw1.cy,this.laStartRl1,"SlateBlue")),n.push(M(this.gw2.cx,this.gw2.cy,this.laStartRr2,"SkyBlue")),n.push(M(this.gw2.cx,this.gw2.cy,this.laStartRl2,"SlateBlue"));const t=st(this.gw1.cx,this.gw1.cy),a=st(this.gw2.cx,this.gw2.cy),s=t.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),i=a.translatePolar(this.angleCenterCenter+Math.PI+this.apr,this.gw2.brr),_=B(s.cx,s.cy,"YellowGreen");_.addSegStrokeA(i.cx,i.cy),_.closeSegStroke(),n.push(_);const o=t.translatePolar(this.angleCenterCenter-this.aFODr1,this.gw1.ar),d=a.translatePolar(this.angleCenterCenter+Math.PI-this.aFODr2,this.gw2.ar),u=B(o.cx,o.cy,"Yellow");u.addSegStrokeA(d.cx,d.cy),u.closeSegStroke(),n.push(u);const D=t.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr),c=a.translatePolar(this.angleCenterCenter+Math.PI-this.apl,this.gw2.blr),h=B(D.cx,D.cy,"YellowGreen");h.addSegStrokeA(c.cx,c.cy),h.closeSegStroke(),n.push(h);const g=t.translatePolar(this.angleCenterCenter+this.aFODl1,this.gw1.ar),l=a.translatePolar(this.angleCenterCenter+Math.PI+this.aFODl2,this.gw2.ar),r=B(g.cx,g.cy,"Yellow");return r.addSegStrokeA(l.cx,l.cy),r.closeSegStroke(),n.push(r),n.push(...this.getContactSpeed()),n}getContactPoint(){const n=[],t=st(this.gw1.cx,this.gw1.cy),a=t.translatePolar(this.angleCenterCenter+this.apr,this.gw1.brr),s=t.translatePolar(this.angleCenterCenter-this.apl,this.gw1.blr);n.push(st(a.cx,a.cy,wt.eBigSquare)),n.push(st(s.cx,s.cy,wt.eBigSquare));const i=this.angleCenterCenter+this.apr-Math.PI/2,_=this.angleCenterCenter-this.apl+Math.PI/2,o=a.translatePolar(i,this.ftdr1),d=s.translatePolar(_,this.ftdl1);n.push(st(o.cx,o.cy,wt.eBigSquare)),n.push(st(d.cx,d.cy,wt.eBigSquare));let u=this.ftdr1;for(;u+this.lasr1<this.lBDr;){u+=this.lasr1;const c=a.translatePolar(i,u);n.push(st(c.cx,c.cy,wt.eBigSquare))}let D=this.ftdl1;for(;D+this.lasl1<this.lBDl;){D+=this.lasl1;const c=s.translatePolar(_,D);n.push(st(c.cx,c.cy,wt.eBigSquare))}return n}getMsg(){return this.msg}getInitAngle2(){let n=this.lBDr-this.ftdr1;for(;et(n-this.lasr2)>=0;)n=et(n-this.lasr2);let t=this.lBDl-this.ftdl1;for(;et(t-this.lasl2)>=0;)t=et(t-this.lasl2);const a=n/this.gw2.brr,s=t/this.gw2.blr,i=this.angleCenterCenter+Math.PI+this.apr-a+this.gw2.rwp,o=this.angleCenterCenter+Math.PI-this.apl+s+this.gw2.lwp-this.gw2.as*this.gw2.adt;let d=2*Math.PI+Vt(o);for(;et(d-this.gw2.as-i)>=0;)d=et(d-this.gw2.as);const u=d-i,D=u*this.gw2.brr/this.gw1.brr,c=u*this.gw2.brr,h=u*this.gw2.blr;this.msg+=`slack angle: 1: ${L(ot(D))} 2: ${L(ot(u))} degree
|
|
20
|
+
`,this.msg+=`slack on action line: right-2: ${L(c)} left-2: ${L(h)} mm
|
|
21
|
+
`;let g=0;if(this.rightLeftCenter2===0)g=i;else if(this.rightLeftCenter2===1)g=o;else if(this.rightLeftCenter2===2)g=i+u/2;else throw`err221: initAngle2 rightLeftCenter2 ${this.rightLeftCenter2} has an unkown value`;return ce(g)}};function fe(n,t,a,s,i,_){return new _e(n,t,a,s,i,_)}function Le(n,t,a,s,i,_,o,d,u){let D=M(n,t,a);if(s>0){if(i>2*a)throw`err383: axisTorque ribWidth ${L(i)} larger than 2x axisRadius ${L(a)}`;const c=Math.asin(i/(2*a)),h=2*Math.PI/s;if(h-2.5*c<0)throw`err384: axisTorque ribWidth ${L(i)} or ribNb ${s} are too large`;if(o>i/2)throw`err385: axisTorque ribRound1 ${L(o)} too large compare to ribWidth ${L(i)}`;if(o+d>_)throw`err386: axisTorque ribRound12 ${L(o)} ${L(d)} too large compare to ribHeight ${L(i)}`;const g=h-2*c>Math.PI,l=st(n,t),w=l.translatePolar(u,a+_).translatePolar(u+Math.PI/2,i/2);D=B(w.cx,w.cy);for(let V=0;V<s;V++){const F=u+V*h,P=F+h,N=l.translatePolar(F+c,a),f=l.translatePolar(P-c,a),b=l.translatePolar(F,a+_).translatePolar(F+Math.PI/2,i/2),v=l.translatePolar(P,a+_).translatePolar(P-Math.PI/2,i/2);D.addSegStrokeA(b.cx,b.cy).addCornerRounded(o),D.addSegStrokeA(N.cx,N.cy).addCornerRounded(d),D.addPointA(f.cx,f.cy).addSegArc(a,g,!0).addCornerRounded(d),D.addSegStrokeA(v.cx,v.cy).addCornerRounded(o)}D.closeSegStroke()}return D}function Se(n,t,a,s,i,_,o,d){const u=2*Math.PI/i,D=Math.asin(_/(2*s)),c=Math.asin(_/(2*a));if(_>2*s)throw`err905: hollowStraight spokeWidth ${L(_)} too large for hollowInt ${L(s)}`;if(a-s<2.1*o)throw`err906: hollowStraight hollowExt ${L(a)}, hollowInt ${L(s)} and spokeRound ${L(o)} do not fit`;if(u-2*c<2.5*Math.asin(o/a))throw`err907: hollowStraight spokeNb ${i}, spokeWidth ${L(_)} or spokeRound ${L(o)} are too large`;const h=_/(2*Math.sin(u/2)),g=u-2*D<2.1*Math.asin(o/s),l=u-2*c>Math.PI,r=st(n,t),w=[];for(let V=0;V<i;V++){const F=d+V*u,P=F+u,N=F+u/2,f=r.translatePolar(F+c,a),R=r.translatePolar(P-c,a),b=r.translatePolar(P-D,s),A=r.translatePolar(F+D,s),v=r.translatePolar(N,h),H=B(f.cx,f.cy);H.addCornerRounded(o),H.addPointA(R.cx,R.cy).addSegArc(a,l,!0).addCornerRounded(o),g?H.addSegStrokeA(v.cx,v.cy).addCornerRounded(o):(H.addSegStrokeA(b.cx,b.cy).addCornerRounded(o),H.addPointA(A.cx,A.cy).addSegArc(s,l,!1).addCornerRounded(o)),H.closeSegStroke(),w.push(H)}return w}function Yt(n,t,a,s,i,_,o,d,u,D){const c=D?1:-1,h=n/2,g=h+t,l=g+a,r=B(0,-l);return r.addSegStrokeA(c*s,-l).addCornerRounded(o).addSegStrokeA(c*s,-g).addCornerRounded(d).addSegStrokeA(c*i,-g).addSegStrokeA(c*_,-h).addCornerRounded(u).addSegStrokeA(c*_,h).addCornerRounded(u).addSegStrokeA(c*i,g).addSegStrokeA(c*s,g).addCornerRounded(d).addSegStrokeA(c*s,l).addCornerRounded(o).addSegStrokeA(0,l).closeSegStroke(),r}var Xt={partName:"gear_wheel_wheel",params:[e("module","mm",10,.1,100,.1),e("N1","scalar",23,3,1e3,1),e("N2","scalar",19,3,1e3,1),e("angleCenterCenter","degree",0,-180,180,1),e("addInterAxis","mm",0,0,100,.05),e("c1x","mm",0,-200,200,1),e("c1y","mm",0,-200,200,1),e("ah1","scalar",1,.1,2,.05),e("dh1","scalar",1,.1,2,.05),e("bh1","scalar",.25,.1,2,.05),e("bRound1","mm",2,0,50,.1),e("ah2","scalar",1,.1,2,.05),e("dh2","scalar",1,.1,2,.05),e("bh2","scalar",.25,.1,2,.05),e("bRound2","mm",2,0,50,.1),e("at1","%",50,10,90,.5),e("at2","%",50,10,90,.5),dt("involSym",!0),Ht("involROpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),Ht("involLOpt",["Optimum","Base-1","Base-2","PressureAngle","FreeBase-12"]),e("brr1","mm",50,10,2e3,.05),e("brr2","mm",50,10,2e3,.05),e("blr1","mm",50,10,2e3,.05),e("blr2","mm",50,10,2e3,.05),e("involArcPairs1","scalar",2,1,40,1),e("involArcPairs2","scalar",2,1,40,1),e("skinThickness1","mm",0,-3,3,.01),e("skinThickness2","mm",0,-3,3,.01),e("initAngle1","degree",0,-180,180,1),Ht("gw2Position",["right","left","center"]),dt("centralAxis",!0),e("axisRadius","mm",10,.1,200,.1),e("ribNb","scalar",5,0,32,1),e("ribWidth","mm",8,1,100,.1),e("ribHeight","mm",8,1,100,.1),e("ribRound1","mm",2,0,20,.1),e("ribRound2","mm",2,0,20,.1),dt("hollow",!0),e("materialHeightExt","mm",20,1,200,.5),e("materialHeightInt","mm",15,1,200,.5),e("spokeNb","scalar",5,1,18,1),e("spokeWidth","mm",15,1,200,.1),e("spokeRound","mm",10,0,20,.1),dt("wheelAxis",!0),e("wheelHeight","mm",40,.1,400,.1),e("wheelMidExtra","mm",6,0,10,.1),e("wheelAxisLength","mm",40,0,400,.1),e("wheelAxisRadius","mm",20,0,200,.1),e("wheelMidRadius","mm",60,0,200,.1),e("wheelRadiusExtra","mm",1,0,20,.1),e("wheelAxisExtRound","mm",4,0,20,.1),e("wheelAxisIntRound","mm",0,0,20,.1),e("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"default_param_blank.svg",N1:"default_param_blank.svg",N2:"default_param_blank.svg",angleCenterCenter:"default_param_blank.svg",addInterAxis:"default_param_blank.svg",c1x:"default_param_blank.svg",c1y:"default_param_blank.svg",ah1:"default_param_blank.svg",dh1:"default_param_blank.svg",bh1:"default_param_blank.svg",bRound1:"default_param_blank.svg",ah2:"default_param_blank.svg",dh2:"default_param_blank.svg",bh2:"default_param_blank.svg",bRound2:"default_param_blank.svg",at1:"default_param_blank.svg",at2:"default_param_blank.svg",involSym:"default_param_blank.svg",involROpt:"default_param_blank.svg",involLOpt:"default_param_blank.svg",brr1:"default_param_blank.svg",brr2:"default_param_blank.svg",blr1:"default_param_blank.svg",blr2:"default_param_blank.svg",involArcPairs1:"default_param_blank.svg",skinThickness1:"default_param_blank.svg",involArcPairs2:"default_param_blank.svg",skinThickness2:"default_param_blank.svg",initAngle1:"default_param_blank.svg",gw2Position:"default_param_blank.svg",centralAxis:"default_param_blank.svg",axisRadius:"default_param_blank.svg",ribNb:"default_param_blank.svg",ribWidth:"default_param_blank.svg",ribHeight:"default_param_blank.svg",ribRound1:"default_param_blank.svg",ribRound2:"default_param_blank.svg",hollow:"default_param_blank.svg",materialHeightExt:"default_param_blank.svg",materialHeightInt:"default_param_blank.svg",spokeNb:"default_param_blank.svg",spokeWidth:"default_param_blank.svg",spokeRound:"default_param_blank.svg",wheelAxis:"default_param_blank.svg",wheelHeight:"default_param_blank.svg",wheelMidExtra:"default_param_blank.svg",wheelAxisLength:"default_param_blank.svg",wheelAxisRadius:"default_param_blank.svg",wheelMidRadius:"default_param_blank.svg",wheelRadiusExtra:"default_param_blank.svg",wheelAxisExtRound:"default_param_blank.svg",wheelAxisIntRound:"default_param_blank.svg",wheelExtraRound:"default_param_blank.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function we(n,t,a=""){const s=lt(Xt.partName+a),i=I(),_=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
22
|
+
`;try{const o=qt(),d=qt();o.set1ModuleToothNumber(t.module,t.N1),d.set1ModuleToothNumber(t.module,t.N2),o.set2CenterPosition(t.c1x,t.c1y);const u=Pt(t.angleCenterCenter),[D,c,h]=ae(o,d,u,t.addInterAxis);d.set2CenterPosition(D,c),o.set3CircleRadius(t.ah1,t.dh1,t.bh1,t.bRound1),d.set3CircleRadius(t.ah2,t.dh2,t.bh2,t.bRound2);const[g,l,r,w]=ue(o,d,t.brr1,t.blr1,t.brr2,t.blr2,t.involSym,t.involROpt,t.involROpt);o.set4BaseCircles(g,l),d.set4BaseCircles(r,w),o.set5AddendumThickness(t.at1),d.set5AddendumThickness(t.at2);const V=Pt(t.initAngle1)+n*3*o.as/100;o.set6Angles(V,u);const F=fe(o,d,V,u,h,t.gw2Position);F.prepare();for(const A of F.getContours())i.addDynamics(A);i.addPoints(F.getContactPoint()),d.set6Angles(F.getInitAngle2(),u+Math.PI),s.logstr+=F.getMsg(),o.set7InvoluteDetails(t.involArcPairs1,t.skinThickness1),d.set7InvoluteDetails(t.involArcPairs2,t.skinThickness2);for(const A of o.getRefCircles())i.addDynamics(A);for(const A of d.getRefCircles())i.addDynamics(A);i.addDynamics(o.getToothRef()),i.addDynamics(d.getToothRef());const P=o.getProfile();if(s.logstr+=o.getMsg(),s.logstr+=P.check(),i.addMain(P),t.centralAxis===1){const A=Le(o.cx,o.cy,t.axisRadius,t.ribNb,t.ribWidth,t.ribHeight,t.ribRound1,t.ribRound2,V);s.logstr+=A.check(),i.addMain(A)}if(t.hollow===1){const A=o.br,v=t.axisRadius+t.ribHeight,H=A-t.materialHeightExt,S=v+t.materialHeightInt;if(S>H)throw`err902: hollowMaterialInt ${L(S)} bigger than hollowMaterialExt ${L(H)}`;const $=Se(o.cx,o.cy,H,S,t.spokeNb,t.spokeWidth,t.spokeRound,V);for(const y of $)s.logstr+=y.check(),i.addMain(y)}const N=d.getProfile();s.logstr+=N.check(),i.addSecond(N);const f=o.ar+t.wheelRadiusExtra;if(t.wheelAxis===1){const A=Yt(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,f,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!0),v=Yt(t.wheelHeight,t.wheelMidExtra,t.wheelAxisLength,t.wheelAxisRadius,t.wheelMidRadius,f,t.wheelAxisExtRound,t.wheelAxisIntRound,t.wheelExtraRound,!1);_.addMain(A),_.addSecond(v)}else{const A=B(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(f,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke(),v=B(0,-t.wheelHeight/2).addSegStrokeR(0,t.wheelHeight).addSegStrokeR(-f,0).addSegStrokeR(0,-t.wheelHeight).closeSegStroke();_.addMain(A),_.addSecond(v)}s.fig={teethProfile:i,axisProfile:_};const R=s.partName,b=t.wheelHeight/2+t.wheelMidExtra+t.wheelAxisLength+10;s.vol={extrudes:[{outName:`subpax_${R}_teethProfile`,face:`${R}_teethProfile`,extrudeMethod:z.eLinearOrtho,length:2*b,rotate:[0,0,0],translate:[0,0,-b]},{outName:`subpax_${R}_axisProfile`,face:`${R}_axisProfile`,extrudeMethod:z.eRotate,rotate:[0,0,0],translate:[0,0,0]}],volumes:[{outName:`pax_${R}`,boolMethod:J.eIntersection,inList:[`subpax_${R}_teethProfile`,`subpax_${R}_axisProfile`]}]},s.logstr+=`gear_wheel_wheel drawn successfully!
|
|
23
|
+
`,s.calcErr=!1}catch(o){s.logstr+=o,console.log(o)}return s}var Ct={pTitle:"Gearwheel-gearwheel",pDescription:"Gear-system with two wheels",pDef:Xt,pGeom:we},jt={partName:"simplified_gear_wheel",params:[e("module","mm",10,.1,100,.1),e("N1","scalar",23,3,1e3,1),e("c1x","mm",0,-200,200,1),e("c1y","mm",0,-200,200,1),dt("centralAxis",!0),e("axisRadius","mm",10,.1,200,.1),e("ribNb","scalar",5,0,32,1),e("ribWidth","mm",8,1,100,.1),e("ribHeight","mm",8,1,100,.1),e("ribRound1","mm",2,0,20,.1),e("ribRound2","mm",2,0,20,.1),dt("hollow",!0),e("materialHeightExt","mm",20,1,200,.5),e("materialHeightInt","mm",15,1,200,.5),e("spokeNb","scalar",5,1,18,1),e("spokeWidth","mm",15,1,200,.1),e("spokeRound","mm",10,0,20,.1),dt("wheelAxis",!0),e("wheelHeight","mm",40,.1,400,.1),e("wheelMidExtra","mm",6,0,10,.1),e("wheelAxisLength","mm",40,0,400,.1),e("wheelAxisRadius","mm",20,0,200,.1),e("wheelMidRadius","mm",60,0,200,.1),e("wheelRadiusExtra","mm",1,0,20,.1),e("wheelAxisExtRound","mm",4,0,20,.1),e("wheelAxisIntRound","mm",0,0,20,.1),e("wheelExtraRound","mm",4,0,20,.1)],paramSvg:{module:"default_param_blank.svg",N1:"default_param_blank.svg",c1x:"default_param_blank.svg",c1y:"default_param_blank.svg",centralAxis:"default_param_blank.svg",axisRadius:"default_param_blank.svg",ribNb:"default_param_blank.svg",ribWidth:"default_param_blank.svg",ribHeight:"default_param_blank.svg",ribRound1:"default_param_blank.svg",ribRound2:"default_param_blank.svg",hollow:"default_param_blank.svg",materialHeightExt:"default_param_blank.svg",materialHeightInt:"default_param_blank.svg",spokeNb:"default_param_blank.svg",spokeWidth:"default_param_blank.svg",spokeRound:"default_param_blank.svg",wheelAxis:"default_param_blank.svg",wheelHeight:"default_param_blank.svg",wheelMidExtra:"default_param_blank.svg",wheelAxisLength:"default_param_blank.svg",wheelAxisRadius:"default_param_blank.svg",wheelMidRadius:"default_param_blank.svg",wheelRadiusExtra:"default_param_blank.svg",wheelAxisExtRound:"default_param_blank.svg",wheelAxisIntRound:"default_param_blank.svg",wheelExtraRound:"default_param_blank.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function He(n,t,a=""){const s=lt(jt.partName+a),i=I(),_=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
24
|
+
`;try{const o=ct(Ct.pDef,"ref1");o.setVal("module",t.module),o.setVal("N1",t.N1),o.setVal("c1x",t.c1x),o.setVal("c1y",t.c1y),o.setVal("centralAxis",t.centralAxis),o.setVal("axisRadius",t.axisRadius),o.setVal("ribNb",t.ribNb),o.setVal("ribWidth",t.ribWidth),o.setVal("ribHeight",t.ribHeight),o.setVal("ribRound1",t.ribRound1),o.setVal("ribRound2",t.ribRound2),o.setVal("hollow",t.hollow),o.setVal("materialHeightExt",t.materialHeightExt),o.setVal("materialHeightInt",t.materialHeightInt),o.setVal("spokeNb",t.spokeNb),o.setVal("spokeWidth",t.spokeWidth),o.setVal("spokeRound",t.spokeRound),o.setVal("wheelAxis",t.wheelAxis),o.setVal("wheelHeight",t.wheelHeight),o.setVal("wheelMidExtra",t.wheelMidExtra),o.setVal("wheelAxisLength",t.wheelAxisLength),o.setVal("wheelAxisRadius",t.wheelAxisRadius),o.setVal("wheelMidRadius",t.wheelMidRadius),o.setVal("wheelRadiusExtra",t.wheelRadiusExtra),o.setVal("wheelAxisExtRound",t.wheelAxisExtRound),o.setVal("wheelAxisIntRound",t.wheelAxisIntRound),o.setVal("wheelExtraRound",t.wheelExtraRound);const d=Ct.pGeom(n,o.getParamVal(),o.getSuffix());ht(d),s.logstr+=gt(d.logstr,o.getPartNameSuffix()),i.mergeFigure(d.fig.teethProfile),_.mergeFigure(d.fig.axisProfile),s.fig={teethProfile:i,axisProfile:_};const u=s.partName;s.vol={inherits:[{outName:`inpax_${u}_gearWW`,subdesign:"pax_gear_wheel_wheel",subgeom:d,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[],volumes:[{outName:`pax_${u}`,boolMethod:J.eIdentity,inList:[`inpax_${u}_gearWW`]}]};const D={partName:o.getPartName(),dparam:o.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]};s.sub={gear_wheel_wheel_1:D},s.logstr+=`simplified_gear_wheel drawn successfully!
|
|
25
|
+
`,s.calcErr=!1}catch(o){s.logstr+=o,console.log(o)}return s}var De={pTitle:"Simplified gearwheel",pDescription:"One simplified gearwheel without details on teeth-profile",pDef:jt,pGeom:He},Zt={partName:"pole_static",params:[e("D1","mm",1e3,20,4e3,1),e("D2","mm",700,10,4e3,1),e("D3","mm",800,10,4e3,1),e("H1","mm",3e3,10,4e4,10),e("H2","mm",7e3,50,4e4,10),e("E1","mm",30,1,80,1),e("E2","mm",5,1,80,1),e("N1","",32,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",45,1,300,1),e("D4","mm",600,1,1200,1),e("H3","mm",300,5,1200,1),e("H4","mm",1800,10,2500,1),e("L2","mm",30,1,100,1),e("E3","mm",40,1,100,1)],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"},sim:{tMax:180,tStep:.5,tUpdate:500}};function be(n,t,a=""){const s=lt(Zt.partName+a);let i,_;const o=I(),d=I(),u=I(),D=I(),c=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
26
|
+
`;try{const h=t.D1/2,g=t.D2/2,l=t.D3/2;if(g>h)throw`err091: D2 ${t.D2} is larger than D1 ${t.D1}`;if(l+t.E2>h)throw`err095: D3 ${t.D3} and E2 ${t.E2} are too large compare to D1 ${t.D1}`;const r=t.H1+t.H2;s.logstr+=`pole-height: ${L(r)} mm
|
|
27
|
+
`;const w=Math.atan2(h-g,t.H2);s.logstr+=`cone-half-angle: ${L(ot(w))} degree
|
|
28
|
+
`;const V=t.E2*Math.tan(w/2),F=t.H1-V;i=function(H,S){const $=B(H*h,0).addSegStrokeA(H*h,t.H1).addSegStrokeA(H*g,r).addSegStrokeR(-H*t.E2*Math.cos(w),-t.E2*Math.sin(w)).addSegStrokeA(H*(h-t.E2),F);return S?$.addSegStrokeA(H*(h-t.E2),t.E1).addSegStrokeA(H*l,t.E1).addSegStrokeA(H*l,0):$.addSegStrokeA(H*(h-t.E2),0),$.closeSegStroke(),$},o.addMain(i(1,!1)),o.addSecond(i(1,!0)),o.addSecond(i(-1,!0));const P=t.D4/2,N=t.H4-2*P;if(N<0)throw`err121: H4 ${t.H4} is too small compare to D4 ${t.D4}`;if(P-t.L2<0)throw`err121: D4 ${t.D4} is too small compare to L2 ${t.L2}`;_=function(H){const S=P-H,$=t.H3+P;return B(S,$+N).addPointR(-S,S).addSegArc(S,!1,!0).addPointR(-S,-S).addSegArc(S,!1,!0).addSegStrokeR(0,-N).addPointR(S,-S).addSegArc(S,!1,!0).addPointR(S,S).addSegArc(S,!1,!0).closeSegStroke()},d.addMain(_(0)),d.addMain(_(t.L2));const f=B(h,0).addSegStrokeA(h,t.H1).addSegStrokeA(g,r).addSegStrokeA(-g,r).addSegStrokeA(-h,t.H1).addSegStrokeA(-h,0).closeSegStroke();d.addSecond(f);const R=B(-h,t.H3).addSegStrokeR(0,t.H4).addSegStrokeR(-t.E3,0).addSegStrokeR(0,-t.H4).closeSegStroke();d.addSecond(R),u.addMain(M(0,0,h)),u.addMain(M(0,0,l));const b=l+t.L1,A=2*Math.PI/t.N1;for(let H=0;H<t.N1;H++){const S=b*Math.cos(H*A),$=b*Math.sin(H*A);u.addMain(M(S,$,t.D5/2))}u.addSecond(M(0,0,g)),u.addSecond(M(0,0,h-t.E2)),D.addMain(M(0,0,h+t.E3)),D.addMain(M(0,0,h-t.E2)),c.addMain(_(t.L2)),s.fig={poleCut:o,poleFace:d,poleBottom:u,emptyPole:D,emptyDoor:c};const v=s.partName;s.vol={extrudes:[{outName:`subpax_${v}_pole`,face:`${v}_poleCut`,extrudeMethod:z.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_bottom`,face:`${v}_poleBottom`,extrudeMethod:z.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_door`,face:`${v}_poleFace`,extrudeMethod:z.eLinearOrtho,length:h+t.E3,rotate:[Math.PI/2,0,0],translate:[0,0,0]},{outName:`subpax_${v}_emptyPole`,face:`${v}_emptyPole`,extrudeMethod:z.eLinearOrtho,length:t.H1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${v}_emptyDoor`,face:`${v}_emptyDoor`,extrudeMethod:z.eLinearOrtho,length:h+t.E3+10,rotate:[Math.PI/2,0,0],translate:[0,0,0]}],volumes:[{outName:`ipax_${v}_door`,boolMethod:J.eIntersection,inList:[`subpax_${v}_door`,`subpax_${v}_emptyPole`]},{outName:`ipax_${v}_pole`,boolMethod:J.eSubstraction,inList:[`subpax_${v}_pole`,`subpax_${v}_emptyDoor`]},{outName:`pax_${v}`,boolMethod:J.eUnion,inList:[`ipax_${v}_pole`,`subpax_${v}_bottom`,`ipax_${v}_door`]}]},s.sub={},s.logstr+=`pole_static drawn successfully!
|
|
29
|
+
`,s.calcErr=!1}catch(h){s.logstr+=h,console.log(h)}return s}var bt={pTitle:"Heliostat pole static",pDescription:"The vertical pole of an heliostat",pDef:Zt,pGeom:be},Jt={partName:"rake",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",400,10,4e3,10),e("D3","mm",400,10,4e3,10),e("H1","mm",800,1,4e3,10),e("H2","mm",3e3,20,6e3,10),e("H3","mm",400,0,4e3,10),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),e("H4","mm",400,10,1e3,10),e("D4","mm",300,10,1e3,10),e("E4","mm",20,1,80,1),e("H5","mm",1e3,10,2e3,10),e("D5","mm",200,1,1e3,10),e("L4","mm",300,1,1e3,10),e("L5","mm",2e3,10,4e3,10),e("L6","mm",2e3,1,4e3,10),e("D6","mm",100,1,600,10),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),e("D8","mm",400,1,1e3,10),e("H6","mm",100,1,1e3,10),e("H7","mm",600,10,2e3,10),e("L9","mm",300,1,1e3,10),e("R9","mm",50,0,300,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_face.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function $e(n,t,a=""){const s=lt(Jt.partName+a);let i,_,o;const d=I(),u=I(),D=I(),c=I(),h=I(),g=I(),l=I(),r=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
30
|
+
`;try{const w=t.D1/2,V=t.D2/2,F=t.D3/2,P=t.D4/2,N=t.D5/2,f=t.D6/2,R=t.D7/2,b=t.D8/2,A=t.H1+t.H2,v=A-t.H4+t.H5;if(s.logstr+=`cone-height: ${L(A)} mm
|
|
31
|
+
`,s.logstr+=`cone-height total: ${L(v)} mm
|
|
32
|
+
`,t.D2>t.D1)throw`err110: D2 ${t.D2} is larger than D1 ${t.D1}`;if(t.D3+t.E1>t.D1)throw`err113: D3 ${t.D3} is too large compare to D1 ${t.D1} and E1 ${t.E1}`;if(t.H3+t.E3>t.H1)throw`err116: H3 ${t.H3} is too large compare to H1 ${t.H1} and E3 ${t.E3}`;if(t.H4+P>t.H2)throw`err119: H4 ${t.H4} is too large compare to H2 ${t.H2} and D4 ${t.D4}`;if(t.E4>P)throw`err122: E4 ${t.E4} is too large compare to D4 ${t.D4}`;if(t.D8<=t.D5)throw`err146: D8 ${t.D8} is too small compare to D5 ${t.D5}`;const H=4*t.L4+t.L5+2*t.L6,S=t.H1+t.H2-t.H4,$=P*Math.cos(Math.PI/6),y=P*Math.sin(Math.PI/6),x=N*Math.cos(Math.PI/6),X=N*Math.sin(Math.PI/6),T=b*Math.cos(Math.PI/6),m=b*Math.sin(Math.PI/6),p=[-H/2,-t.L5/2-t.L4,t.L5/2,H/2-t.L4],W=t.H2-t.L8-t.H4-P;if(W<0)throw`err140: H2 ${t.H2} too small compare to L8 ${t.L8}, H4 ${t.H4} and D4 ${t.D4}`;const j=Math.atan2(w-V,t.H2);s.logstr+=`cone-angle: ${L(ot(j))} degree
|
|
33
|
+
`;const Q=H/2-t.L7-w+t.L8*Math.tan(j),nt=Math.sqrt(Q**2+W**2),q=Math.atan2(Q,W);s.logstr+=`wing-angle: ${L(ot(q))} degree
|
|
34
|
+
`;const tt=t.E1/Math.sin(q+j),O=nt+t.E4/Math.cos(q)+tt,k=w-t.L8*Math.tan(j)-tt*Math.sin(q),E=t.H1+t.L8-tt*Math.cos(q),Z=k-f*Math.cos(q),G=E+f*Math.sin(q),K=f-t.E6,it=k-t.E6*Math.cos(q),rt=E+t.E6*Math.sin(q),_t=Math.PI/2-q,St=t.L9/2,ft=St-t.H7*Math.tan(j);if(ft<t.R9)throw`err177: R9 ${t.R9} too large compare to doorHighX ${ft} and L9 ${t.L9}`;if(t.L9>t.D1)throw`err180: L9 ${t.L9} too large compare to D1 ${t.D1}`;const Dt=t.E1*Math.cos(j),At=t.E1*Math.sin(j),Ot=t.E1*Math.tan(j/2);i=function(Y){return B(Y*w,0).addSegStrokeA(Y*w,t.H1).addSegStrokeA(Y*V,A).addSegStrokeA(Y*(V-Dt),A-At).addSegStrokeA(Y*(w-t.E1),t.H1-Ot).addSegStrokeA(Y*(w-t.E1),0).closeSegStroke()},_=function(Y){return B(Y*w,0).addSegStrokeA(Y*w,t.H1).addSegStrokeA(Y*V,A).addSegStrokeA(Y*(V-Dt),A-At).addSegStrokeA(Y*(w-t.E1),t.H1-Ot).addSegStrokeA(Y*(w-t.E1),t.H1-t.H3).addSegStrokeA(Y*F,t.H1-t.H3).addSegStrokeA(Y*F,t.H1-t.H3-t.E3).addSegStrokeA(Y*(w-t.E1),t.H1-t.H3-t.E3).addSegStrokeA(Y*(w-t.E1),0).closeSegStroke()},o=function(Y,at,Lt,xt,Mt){const Ut=Y*Math.cos(Mt),Gt=Y*Math.sin(Mt),pt=-at*Math.sin(Mt),Wt=at*Math.cos(Mt);return B(Lt,xt).addSegStrokeA(Lt+Ut,xt+Gt).addSegStrokeA(Lt+Ut+pt,xt+Gt+Wt).addSegStrokeA(Lt+pt,xt+Wt).closeSegStroke()};const Rt=B(St,t.H1+t.H6).addCornerRounded(t.R9).addSegStrokeA(ft,t.H1+t.H6+t.H7).addCornerRounded(t.R9).addSegStrokeA(-ft,t.H1+t.H6+t.H7).addCornerRounded(t.R9).addSegStrokeA(-St,t.H1+t.H6).addCornerRounded(t.R9).closeSegStroke();d.addMain(i(1)),d.addSecond(_(1)),d.addSecond(_(-1)),d.addSecond(o(H,t.D4,-H/2,S-P,0)),d.addSecond(o(H,t.D4-2*t.E4,-H/2,S-P+t.E4,0));for(const Y of p)d.addSecond(o(t.L4,t.H5-y-X,Y,S+y,0));d.addSecond(o(O,2*f,k,E,_t)),d.addSecond(o(O,2*K,it,rt,_t)),d.addSecond(o(2*f,O,-k,E,q)),d.addSecond(o(2*K,O,-it,rt,q)),d.addSecond(Rt);const Nt=B($,S+y).addSegStrokeA(T,S+t.H5-m).addSegStrokeA(x,S+t.H5-X).addPointA(-x,S+t.H5-X).addSegArc(N,!1,!1).addSegStrokeA(-T,S+t.H5-m).addSegStrokeA(-$,S+y).closeSegArc(P,!1,!1);u.addMain(M(0,S,P)),u.addMain(M(0,S,P-t.E4)),u.addSecond(_(1)),u.addSecond(_(-1)),u.addSecond(Nt),u.addSecond(M(0,S+t.H5,N)),u.addSecond(o(2*f,W,-f,t.H1+t.L8,0)),u.addSecond(o(2*K,W,-K,t.H1+t.L8,0)),u.addSecond(Rt),D.addMain(M(0,S,P-t.E4)),D.addSecond(M(0,S,P)),D.addSecond(Nt),c.addMain(M(0,0,w)),c.addMain(M(0,0,F));const zt=F+t.L1,Bt=2*Math.PI/t.N1;for(let Y=0;Y<t.N1;Y++){const at=zt*Math.cos(Y*Bt),Lt=zt*Math.sin(Y*Bt);c.addMain(M(at,Lt,R))}c.addSecond(M(0,0,w-t.E1)),c.addSecond(M(0,0,V)),c.addSecond(o(t.D4,H,-P,-H/2,0)),c.addSecond(o(t.D4-2*t.E4,H,-P+t.E4,-H/2,0));for(const Y of p)c.addSecond(o(2*$,t.L4,-$,Y,0)),c.addSecond(o(2*x,t.L4,-x,Y,0)),c.addSecond(o(2*T,t.L4,-T,Y,0));c.addSecond(o(2*f,Q,-f,w-t.L8*Math.tan(j),0)),c.addSecond(o(2*K,Q,-K,w-t.L8*Math.tan(j),0)),c.addSecond(o(2*f,Q,-f,-w+t.L8*Math.tan(j)-Q,0)),c.addSecond(o(2*K,Q,-K,-w+t.L8*Math.tan(j)-Q,0)),h.addMain(Nt),h.addSecond(M(0,S,P)),h.addSecond(M(0,S,P-t.E4)),h.addSecond(M(0,S+t.H5,N)),g.addMain(M(0,0,f)),g.addMain(M(0,0,K)),l.addSecond(M(0,0,f)),l.addMain(M(0,0,K)),r.addMain(Rt),r.addSecond(_(1)),r.addSecond(_(-1)),r.addSecond(o(H,t.D4,-H/2,S-P,0)),r.addSecond(o(H,t.D4-2*t.E4,-H/2,S-P+t.E4,0));for(const Y of p)r.addSecond(o(t.L4,t.H5-y-X,Y,S+y,0));r.addSecond(o(O,2*f,k,E,_t)),r.addSecond(o(O,2*K,it,rt,_t)),r.addSecond(o(2*f,O,-k,E,q)),r.addSecond(o(2*K,O,-it,rt,q)),s.fig={faceCone:d,faceBeam:u,faceBeamHollow:D,faceDisc:c,faceHand:h,faceWing:g,faceWingHollow:l,faceDoor:r};const U=s.partName,le=p.map((Y,at)=>({outName:`subpax_${U}_hand_${at}`,face:`${U}_faceHand`,extrudeMethod:z.eLinearOrtho,length:t.L4,rotate:[Math.PI/2,0,0],translate:[0,-Y,0]}));s.vol={extrudes:[{outName:`subpax_${U}_cone`,face:`${U}_faceCone`,extrudeMethod:z.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${U}_beam`,face:`${U}_faceBeam`,extrudeMethod:z.eLinearOrtho,length:H,rotate:[Math.PI/2,0,0],translate:[0,H/2,0]},{outName:`subpax_${U}_beamHollow`,face:`${U}_faceBeamHollow`,extrudeMethod:z.eLinearOrtho,length:H,rotate:[Math.PI/2,0,0],translate:[0,H/2,0]},{outName:`subpax_${U}_disc`,face:`${U}_faceDisc`,extrudeMethod:z.eLinearOrtho,length:t.E3,rotate:[0,0,0],translate:[0,0,t.H1-t.H3-t.E3]},{outName:`subpax_${U}_wing_right`,face:`${U}_faceWing`,extrudeMethod:z.eLinearOrtho,length:O,rotate:[-q,0,0],translate:[0,Z,G]},{outName:`subpax_${U}_wing_left`,face:`${U}_faceWing`,extrudeMethod:z.eLinearOrtho,length:O,rotate:[q,0,0],translate:[0,-Z,G]},{outName:`subpax_${U}_wing_hollow_right`,face:`${U}_faceWingHollow`,extrudeMethod:z.eLinearOrtho,length:O,rotate:[-q,0,0],translate:[0,Z,G]},{outName:`subpax_${U}_wing_hollow_left`,face:`${U}_faceWingHollow`,extrudeMethod:z.eLinearOrtho,length:O,rotate:[q,0,0],translate:[0,-Z,G]},{outName:`subpax_${U}_door`,face:`${U}_faceDoor`,extrudeMethod:z.eLinearOrtho,length:t.D1,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},...le],volumes:[{outName:`ipax_${U}_plus`,boolMethod:J.eUnion,inList:[`subpax_${U}_cone`,`subpax_${U}_beam`,`subpax_${U}_disc`,`subpax_${U}_hand_0`,`subpax_${U}_hand_1`,`subpax_${U}_hand_2`,`subpax_${U}_hand_3`,`subpax_${U}_wing_right`,`subpax_${U}_wing_left`]},{outName:`ipax_${U}_hollow`,boolMethod:J.eUnion,inList:[`subpax_${U}_beamHollow`,`subpax_${U}_wing_hollow_right`,`subpax_${U}_wing_hollow_left`,`subpax_${U}_door`]},{outName:`pax_${U}`,boolMethod:J.eSubstraction,inList:[`ipax_${U}_plus`,`ipax_${U}_hollow`]}]},s.sub={},s.logstr+=`heliostat-rake drawn successfully!
|
|
35
|
+
`,s.calcErr=!1}catch(w){s.logstr+=w,console.log(w)}return s}var $t={pTitle:"Heliostat rake",pDescription:"The rake on top of the pole-rotor of the heliostat",pDef:Jt,pGeom:$e},It={partName:"spider",params:[e("D1","mm",100,1,400,1),e("L1","mm",400,1,1e3,1),e("L2","mm",400,1,1e3,1),e("L3","mm",100,1,400,1),e("L4","mm",3e3,10,8e3,10),e("L5","mm",2e3,1,8e3,1),e("L6","mm",30,1,100,1),e("E1","mm",3,1,80,1),e("E2","mm",50,1,200,1),e("E3","mm",3,1,80,1),e("R2","mm",100,0,400,10),e("N1","",6,1,20,1)],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 ve(n,t,a=""){const s=lt(It.partName+a);let i,_;const o=I(),d=I(),u=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
36
|
+
`;try{const D=t.D1/2;if(t.D1<t.E2)throw`err476: D1 ${t.D1} smaller then E2 ${t.E2}`;const c=t.E2/2,h=Math.sqrt(D**2-c**2),g=t.L1+t.L2*Math.sqrt(2),l=t.L2+t.L1*Math.sqrt(2),r=t.L4-l;if(r<t.R2)throw`err984: L4 ${t.L4} too small compare to R2 ${t.R2}`;const w=r*Math.cos(Math.PI/4),V=r*Math.sin(Math.PI/4),F=t.E2*Math.cos(Math.PI/4),P=t.E2*Math.sin(Math.PI/4),N=t.E2*Math.tan(Math.PI/8);if(D<t.E1)throw`err092: D1 ${t.D1} too small compare to E1 ${t.E1}`;if(t.L3<t.E2)throw`err994: L3 ${t.L3} smaller than E2 ${t.E2}`;if(t.L3<2*t.E3)throw`err997: L3 ${t.L3} too small compare to E3 ${t.E3}`;const f=(t.L3-t.E2)/2*Math.cos(Math.PI/4),R=g+w+f,b=-t.L1-V+f,A=b-t.E3*Math.sqrt(2);if(t.L5<t.N1*t.L6)throw`err110: L5 ${t.L5} too small compare to N1 ${t.N1} and L6 ${t.L6}`;let v=1;t.N1>1&&(v=(t.L5-t.L6)/(t.N1-1));const H=[...Array(t.N1).keys()].map(T=>T*v);i=function(T,m,p){return B(T,m).addSegStrokeA(T+p*Math.cos(Math.PI/4),m-p*Math.sin(Math.PI/4)).addSegStrokeA(T,m-2*p*Math.sin(Math.PI/4)).addSegStrokeA(T-p*Math.cos(Math.PI/4),m-p*Math.sin(Math.PI/4)).closeSegStroke()},_=function(T,m,p,W){return B(p,W).addSegStrokeA(p+T,W).addSegStrokeA(p+T,W+m).addSegStrokeA(p,W+m).closeSegStroke()};const S=Math.sin(2*Math.PI*n/It.sim.tMax)*Math.PI/2;s.logstr+=`spide leg number: ${t.N1}
|
|
37
|
+
`,s.logstr+=`spide position angle: ${L(ot(S))} degree
|
|
38
|
+
`;const $=B(c,-h).addCornerRounded(t.R2).addSegStrokeA(c,-t.L1).addCornerRounded(t.R2).addSegStrokeA(g,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(g+w,-t.L1-V).addSegStrokeA(g+w-F,-t.L1-V-P).addSegStrokeA(g-N,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-g+N,-t.L1-t.E2).addCornerRounded(t.R2).addSegStrokeA(-g-w+F,-t.L1-V-P).addSegStrokeA(-g-w,-t.L1-V).addSegStrokeA(-g,-t.L1).addCornerRounded(t.R2+t.E2).addSegStrokeA(-c,-t.L1).addCornerRounded(t.R2).addSegStrokeA(-c,-h).addCornerRounded(t.R2).closeSegArc(D,!0,!1);o.addMain($),o.addMain(M(0,0,D-t.E1)),o.addSecond(i(R,b,t.L3)),o.addSecond(i(R,A,t.L3-2*t.E3)),o.addSecond(i(-R,b,t.L3)),o.addSecond(i(-R,A,t.L3-2*t.E3)),d.addMain(M(0,0,D)),d.addMain(M(0,0,D-t.E1)),d.addMain(i(R,b,t.L3)),d.addMain(i(R,A,t.L3-2*t.E3)),d.addMain(i(-R,b,t.L3)),d.addMain(i(-R,A,t.L3-2*t.E3)),d.addSecond($),u.addSecond(_(t.L5,t.D1,0,-t.D1/2)),u.addSecond(_(t.L5,t.L3,0,-t.L4-t.L3));for(const T of H)u.addSecond(_(t.L6,t.L4,T,-t.L4));s.fig={faceLegs:o.rotate(0,0,S),faceTube:d.rotate(0,0,S),faceBody:u};const y=s.partName,x=H.map((T,m)=>({outName:`subpax_${y}_leg_${m}`,face:`${y}_faceLegs`,extrudeMethod:z.eLinearOrtho,length:t.L6,rotate:[0,0,0],translate:[0,0,T]})),X=H.map((T,m)=>`subpax_${y}_leg_${m}`);s.vol={extrudes:[{outName:`subpax_${y}_tube`,face:`${y}_faceTube`,extrudeMethod:z.eLinearOrtho,length:t.L5,rotate:[0,0,0],translate:[0,0,0]},...x],volumes:[{outName:`pax_${y}`,boolMethod:J.eUnion,inList:[`subpax_${y}_tube`,...X]}]},s.sub={},s.logstr+=`heliostat-spider drawn successfully!
|
|
39
|
+
`,s.calcErr=!1}catch(D){s.logstr+=D,console.log(D)}return s}var Ft={pTitle:"Heliostat spider",pDescription:"The spider part for the control of the inclination of the heliostat",pDef:It,pGeom:ve},Kt={partName:"swing",params:[e("L1","mm",12500,100,4e4,10),e("L2","mm",6e3,100,4e4,10),e("L3","mm",500,1,4e3,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,1,1e4,1),e("L6","mm",2e3,1,1e4,1),e("D1","mm",400,1,1e3,1),e("H1","mm",100,1,400,1),e("H2","mm",100,1,400,1),e("H3","mm",100,1,400,1),e("H4","mm",100,1,400,1),e("E1","mm",5,1,80,1),e("E2","mm",3,1,80,1),e("E3","mm",3,1,80,1),e("rod1","",10,1,40,1),e("rod2","mm",1300,10,4e3,10),e("rod3","mm",400,10,1e3,10),e("rod4","mm",100,1,400,1)],paramSvg:{L1:"swing_top.svg",L2:"swing_top.svg",L3:"swing_top.svg",L4:"swing_top.svg",L5:"swing_top.svg",L6:"swing_top.svg",D1:"swing_top.svg",H1:"swing_top.svg",H2:"swing_top.svg",H3:"swing_side.svg",H4:"swing_side.svg",E1:"swing_side.svg",E2:"swing_side.svg",E3:"swing_face.svg",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 xe(n,t,a=""){const s=lt(Kt.partName+a);let i,_;const o=I(),d=I(),u=I(),D=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
40
|
+
`;try{const c=t.D1/2;s.logstr+=`swing size: L1 ${L(t.L1)} x L2 ${L(t.L2)} mm
|
|
41
|
+
`,i=function(f,R,b,A){return B(f,R).addSegStrokeA(f+b,R).addSegStrokeA(f+b,R+A).addSegStrokeA(f,R+A).closeSegStroke()},_=function(f,R,b,A,v){return B(f,R).addCornerRounded(v).addSegStrokeA(f+b,R).addCornerRounded(v).addSegStrokeA(f+b,R+A).addCornerRounded(v).addSegStrokeA(f,R+A).addCornerRounded(v).closeSegStroke()},o.addMain(M(0,0,c)),o.addMain(M(0,0,c-t.E1));const h=[-t.L2/2,-t.L3-t.H2,t.L3,t.L2/2-t.H2];for(const f of h)o.addMain(i(f,c-t.H4,t.H2,t.H4)),o.addMain(i(f+t.E2,c-t.H4+t.E2,t.H2-2*t.E2,t.H4-2*t.E2));o.addSecond(i(-t.L2/2,c,t.L2,t.H3));const g=[];g.push(-t.L1/2),g.push(t.L1/2-t.H1);for(const f of[-t.L5/2-2*t.L4-t.L6,-t.L5/2-t.L4,t.L5/2,t.L5/2+t.L4+t.L6])for(const R of[0,t.L4-t.H1])g.push(f+R);for(const f of g)d.addMain(i(f,c,t.H1,t.H3)),d.addMain(i(f+t.E3,c+t.E3,t.H1-2*t.E3,t.H3-2*t.E3));d.addSecond(i(-t.L1/2,-c,t.L1,t.D1)),d.addSecond(i(-t.L1/2,c-t.H4,t.L1,t.H4));for(const f of g)u.addSecond(i(f,-t.L2/2,t.H1,t.L2));for(const f of h)u.addSecond(i(-t.L1/2,f,t.L1,t.H2));u.addSecond(i(-t.L1/2,-c,t.L1,t.D1));for(const f of g)D.addMain(i(f,-t.L2/2,t.H1,t.L2));for(const f of h)D.addMain(i(-t.L1/2,f,t.L1,t.H2));D.addMain(i(-t.L1/2,-c,t.L1,t.D1));const l=-((t.rod1-1)*t.rod2+t.rod3)/2,r=(t.rod3-t.rod4)/2,w=t.rod3/2,V=1.2*t.L2,F=(V-w)/3,P=-V/2;for(let f=0;f<t.rod1;f++){const R=l+f*t.rod2;D.addSecond(i(R+r,P,t.rod4,V));for(let b=0;b<4;b++)D.addSecond(_(R,P+b*F,t.rod3,w,w/4))}s.fig={faceSide:o,faceFace:d,faceTop:u,faceTopWithRods:D};const N=s.partName;s.vol={extrudes:[{outName:`subpax_${N}_side`,face:`${N}_faceSide`,extrudeMethod:z.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,-t.L1/2]},{outName:`subpax_${N}_face`,face:`${N}_faceFace`,extrudeMethod:z.eLinearOrtho,length:t.L2,rotate:[0,Math.PI/2,0],translate:[-t.L2/2,0,0]}],volumes:[{outName:`pax_${N}`,boolMethod:J.eUnion,inList:[`subpax_${N}_side`,`subpax_${N}_face`]}]},s.sub={},s.logstr+=`heliostat-swing drawn successfully!
|
|
42
|
+
`,s.calcErr=!1}catch(c){s.logstr+=c,console.log(c)}return s}var vt={pTitle:"Heliostat swing",pDescription:"The swing for the heliostat inclination",pDef:Kt,pGeom:xe},yt={partName:"heliostat",params:[e("H1","mm",3e3,10,4e4,10),e("H2","mm",2500,50,4e4,10),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,10),e("H6","mm",200,1,4e3,1),e("H7","mm",800,1,4e3,1),e("H8","mm",200,1,4e3,1),e("H9","mm",100,1,400,1),e("D1","mm",1e3,20,4e3,10),e("D2","mm",700,20,4e3,10),e("D3","mm",900,20,4e3,10),e("D4","mm",400,20,4e3,10),e("D5","mm",300,20,1e3,10),e("D6","mm",200,10,1e3,10),e("D7","mm",400,10,1e3,10),e("D8","mm",100,1,1e3,1),e("D9","mm",100,1,1e3,1),e("S1","mm",250,1,800,1),e("S2","mm",200,1,800,1),e("E1","mm",30,1,80,1),e("E2","mm",50,1,80,1),e("L1","mm",12500,100,4e4,10),e("L2","mm",6e3,100,4e4,10),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,1),e("L6","mm",2e3,1,6e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),e("al","degree",80,0,95,1),e("ar","degree",80,0,95,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat_side_sizing.svg",H4:"heliostat_side_sizing.svg",H5:"heliostat_side_sizing.svg",H6:"heliostat_side_sizing.svg",H7:"heliostat_side_sizing.svg",H8:"heliostat_side_sizing.svg",H9:"heliostat_side_sizing.svg",D1:"heliostat_side_sizing.svg",D2:"heliostat_side_sizing.svg",D3:"heliostat_side_sizing.svg",D4:"heliostat_side_sizing.svg",D5:"heliostat_side_sizing.svg",D6:"heliostat_side_sizing.svg",D7:"heliostat_side_sizing.svg",D8:"heliostat_side_sizing.svg",D9:"heliostat_face_sizing.svg",S1:"heliostat_side_sizing.svg",S2:"heliostat_side_sizing.svg",E1:"heliostat_side_sizing.svg",E2:"heliostat_side_sizing.svg",L1:"heliostat_face_sizing.svg",L2:"heliostat_side_sizing.svg",L3:"heliostat_face_sizing.svg",L4:"heliostat_face_sizing.svg",L5:"heliostat_face_sizing.svg",L6:"heliostat_face_sizing.svg",L7:"heliostat_face_sizing.svg",L8:"heliostat_face_sizing.svg",al:"heliostat_side_sizing.svg",ar:"heliostat_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Me(n,t,a=""){const s=lt(yt.partName+a),i=I(),_=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
43
|
+
`;try{const o=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;s.logstr+=`heliostat-height: ${L(o)}, diameter ${L(t.D1)} m
|
|
44
|
+
`,s.logstr+=`heliostat-swing-length: ${L(t.L1)}, width ${L(t.L2)} m
|
|
45
|
+
`;const u=(t.al-t.ar)/2-Math.sin(2*Math.PI*n/yt.sim.tMax)*(t.al+t.ar)/2,D=Pt(u);s.logstr+=`swing position angle: ${L(ot(D))} degree
|
|
46
|
+
`;const c=t.H1+t.H2-t.H3,h=c+t.H4+t.H5-t.H6+t.H7,g=h+t.H8,l=ct(bt.pDef),r=ct($t.pDef),w=ct(Ft.pDef),V=ct(vt.pDef);l.setVal("H1",t.H1),l.setVal("H2",t.H2),l.setVal("D1",t.D1),l.setVal("D2",t.D2),l.setVal("D3",t.D1-6*t.E1),l.setVal("E1",t.E1),l.setVal("E2",t.E1);const F=32,P=(t.D1-6*t.E1)/(F*4);l.setVal("N1",F),l.setVal("D5",P),l.setVal("L1",t.E1+P/2),l.setVal("H3",t.H1/4),l.setVal("H4",t.H1/2),l.setVal("D4",t.H1/4),l.setVal("L2",t.H1/80),l.setVal("E3",t.H1/80),r.setVal("H1",t.H4),r.setVal("H2",t.H5),r.setVal("H3",t.H4-2*t.E1),r.setVal("D1",t.D3),r.setVal("D2",t.D4),r.setVal("L9",t.D3/2),r.setVal("H7",t.D3/2*1.6),r.setVal("H6",t.D3/20),r.setVal("R9",t.D3/20),r.setVal("E1",t.E1),r.setVal("E3",t.E1),r.setVal("E4",t.E1);const N=t.D2*.6,f=24,R=N/(f*4);if(r.setVal("D3",N),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(r.setVal("N1",f),r.setVal("D7",R),r.setVal("L1",R),r.setVal("H4",t.H6),r.setVal("D4",t.D5),r.setVal("L7",t.L7),r.setVal("L8",t.L8),r.setVal("D6",t.D9),r.setVal("H5",t.H7+t.H8),r.setVal("D5",t.D6),r.setVal("D8",t.D7),t.D6>=t.D7)throw`err164: D6 ${t.D6} too large compare to D7 ${t.D7}`;const b=t.L4-2*t.L3;if(r.setVal("L4",b),b<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;r.setVal("L5",t.L5+2*t.L3),r.setVal("L6",t.L6+2*t.L3);const A=t.L5*.96,v=6;if(w.setVal("L5",A),w.setVal("D1",t.D8),w.setVal("L1",t.S1),w.setVal("L2",t.S2),w.setVal("L3",t.E2*2),w.setVal("E1",t.E1),w.setVal("E2",t.E2),w.setVal("E3",t.E1),w.setVal("L4",t.L2/2-t.H8),w.setVal("R2",0),w.setVal("N1",v),w.setVal("L6",A/(v*10)),V.setVal("L2",t.L2),V.setVal("D1",t.D6),V.setVal("H3",t.H9),V.setVal("H4",t.H9),V.setVal("L1",t.L1),t.L1<4*t.L4+2*t.L6+t.L5+2*t.L3)throw`err185: L1 ${t.L1} too small compare to L4 ${t.L4}, L5 ${t.L5}, L6 ${t.L6}`;V.setVal("H1",t.L3),V.setVal("H2",t.L3),V.setVal("L4",t.L4),V.setVal("L5",t.L5),V.setVal("L6",t.L6),V.setVal("L3",t.D7);const H=bt.pGeom(0,l.getParamVal(),l.getSuffix());ht(H),s.logstr+=gt(H.logstr,l.getPartNameSuffix());const S=$t.pGeom(0,r.getParamVal(),r.getSuffix());ht(S),s.logstr+=gt(S.logstr,r.getPartNameSuffix());const $=Ft.pGeom(0,w.getParamVal(),w.getSuffix());ht($),s.logstr+=gt($.logstr,w.getPartNameSuffix());const y=vt.pGeom(0,V.getParamVal(),V.getSuffix());ht(y),s.logstr+=gt(y.logstr,V.getPartNameSuffix()),i.mergeFigure(H.fig.poleCut),i.mergeFigure(S.fig.faceBeam.translate(0,c)),i.mergeFigure($.fig.faceLegs.translate(0,h).rotate(0,h,D/2)),i.mergeFigure(y.fig.faceSide.translate(0,g).rotate(0,g,D)),_.mergeFigure(H.fig.poleCut),_.mergeFigure(S.fig.faceCone.translate(0,c)),_.mergeFigure($.fig.faceBody.translate(-A/2,h)),_.mergeFigure(y.fig.faceFace.translate(0,g)),s.fig={faceSide:i,faceFace:_};const x=s.partName;s.vol={inherits:[{outName:`inpax_${x}_poleStatic`,subdesign:"pax_pole_static",subgeom:H,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${x}_rake`,subdesign:"pax_rake",subgeom:S,rotate:[0,0,0],translate:[0,0,c]},{outName:`inpax_${x}_swing`,subdesign:"pax_swing",subgeom:y,rotate:[Math.PI/2,0,0],translate:[0,0,g]},{outName:`inpax_${x}_spider`,subdesign:"pax_spider",subgeom:$,rotate:[Math.PI/2,0,0],translate:[0,A/2,h]}],extrudes:[],volumes:[{outName:`pax_${x}`,boolMethod:J.eUnion,inList:[`inpax_${x}_poleStatic`,`inpax_${x}_rake`,`inpax_${x}_swing`,`inpax_${x}_spider`]}]};const X={partName:l.getPartName(),dparam:l.getDesignParamList(),orientation:[0,0,0],position:[0,0,0]},T={partName:r.getPartName(),dparam:r.getDesignParamList(),orientation:[0,0,0],position:[0,0,c]},m={partName:w.getPartName(),dparam:w.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,A/2,h]},p={partName:V.getPartName(),dparam:V.getDesignParamList(),orientation:[Math.PI/2,0,0],position:[0,0,g]};s.sub={pole_static_1:X,rake_1:T,spider_1:m,swing_1:p},s.logstr+=`heliostat-overview drawn successfully!
|
|
47
|
+
`,s.calcErr=!1}catch(o){s.logstr+=o,console.log(o)}return s}var ke={pTitle:"Heliostat overview",pDescription:"The heliostat inclination mechanism",pDef:yt,pGeom:Me},Qt={partName:"rake_stopper",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",400,10,4e3,10),e("D3","mm",400,1,4e3,1),e("H1","mm",800,1,4e3,1),e("H2","mm",3e3,20,6e3,10),e("H3","mm",400,0,4e3,1),e("E1","mm",20,1,80,1),e("E3","mm",30,1,80,1),e("H4","mm",200,1,1e3,1),e("D4","mm",300,1,1e3,1),e("E4","mm",20,1,80,1),e("H5","mm",400,1,2e3,1),e("D5","mm",200,1,1e3,1),e("L4","mm",300,1,1e3,1),e("L5","mm",2e3,1,4e3,1),e("L6","mm",2e3,1,4e3,1),e("D6","mm",100,1,600,1),e("E6","mm",10,1,80,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),e("N1","",24,3,100,1),e("D7","mm",40,1,100,1),e("L1","mm",30,1,300,1),e("D8","mm",400,1,1e3,1),e("H6","mm",100,1,1e3,1),e("H7","mm",600,1,2e3,1),e("L9","mm",300,1,1e3,1),e("R9","mm",50,0,300,1),e("S1","mm",100,1,300,1),e("S2","mm",2e3,1,8e3,1),e("E7","mm",5,1,80,1)],paramSvg:{D1:"rake_face.svg",D2:"rake_face.svg",D3:"rake_face.svg",H1:"rake_face.svg",H2:"rake_face.svg",H3:"rake_face.svg",E1:"rake_face.svg",E3:"rake_face.svg",H4:"rake_side.svg",D4:"rake_side.svg",E4:"rake_side.svg",H5:"rake_side.svg",D5:"rake_side.svg",L4:"rake_face.svg",L5:"rake_face.svg",L6:"rake_face.svg",D6:"rake_face.svg",E6:"rake_face.svg",L7:"rake_face.svg",L8:"rake_face.svg",N1:"rake_top.svg",D7:"rake_top.svg",L1:"rake_top.svg",D8:"rake_side.svg",H6:"rake_door.svg",H7:"rake_door.svg",L9:"rake_door.svg",R9:"rake_door.svg",S1:"rake_side_stopper.svg",S2:"rake_top_stopper.svg",E7:"rake_side_stopper.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ee(n,t,a=""){const s=lt(Qt.partName+a);let i;const _=I(),o=I(),d=I(),u=I(),D=I(),c=I(),h=I(),g=I(),l=I(),r=I(),w=I(),V=I(),F=I(),P=I(),N=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
48
|
+
`;try{const f=t.D1/2,R=t.H1+t.H2,b=R-t.H4+t.H5;if(s.logstr+=`cone-height: ${L(R)} mm
|
|
49
|
+
`,s.logstr+=`cone-height total: ${L(b)} mm
|
|
50
|
+
`,2*t.E7>=t.S1)throw`err135: E7 ${t.E7} too large compare to S1 ${t.S1}`;if(t.L5<t.D2)throw`err138: L5 ${t.L5} too small compare to D2 ${t.D2}`;const A=b-t.S2;if(A<0)throw`err143: S2 ${t.S2} too large compare to H1H5 ${L(b)}`;const v=t.H1+t.H2-t.H4+t.D4/2,H=t.H1+t.L8-t.S1;i=function(Z,G,K,it,rt){const _t=Z*Math.cos(rt),St=Z*Math.sin(rt),ft=-G*Math.sin(rt),Dt=G*Math.cos(rt);return B(K,it).addSegStrokeA(K+_t,it+St).addSegStrokeA(K+_t+ft,it+St+Dt).addSegStrokeA(K+ft,it+Dt).closeSegStroke()};const S=ct($t.pDef);S.setVal("D1",t.D1),S.setVal("D2",t.D2),S.setVal("D3",t.D3),S.setVal("H1",t.H1),S.setVal("H2",t.H2),S.setVal("H3",t.H3),S.setVal("E1",t.E1),S.setVal("E3",t.E3),S.setVal("H4",t.H4),S.setVal("D4",t.D4),S.setVal("E4",t.E4),S.setVal("H5",t.H5),S.setVal("D5",t.D5),S.setVal("L4",t.L4),S.setVal("L5",t.L5),S.setVal("L6",t.L6),S.setVal("D6",t.D6),S.setVal("E6",t.E6),S.setVal("L7",t.L7),S.setVal("L8",t.L8),S.setVal("N1",t.N1),S.setVal("D7",t.D7),S.setVal("L1",t.L1),S.setVal("D8",t.D8),S.setVal("H6",t.H6),S.setVal("H7",t.H7),S.setVal("L9",t.L9),S.setVal("R9",t.R9);const $=$t.pGeom(0,S.getParamVal(),S.getSuffix());ht($),s.logstr+=gt($.logstr,S.getPartNameSuffix()),_.mergeFigure($.fig.faceCone),o.mergeFigure($.fig.faceBeam),d.mergeFigure($.fig.faceBeamHollow),u.mergeFigure($.fig.faceDisc),D.mergeFigure($.fig.faceHand),c.mergeFigure($.fig.faceWing),h.mergeFigure($.fig.faceWingHollow),g.mergeFigure($.fig.faceDoor),l.mergeFigure($.fig.faceDisc,!0);const y=t.L5/2,x=t.S1/2,X=t.S1-2*t.E7,T=X/2;l.addMain(i(t.S1,t.L5,-f-t.S1,-y,0)),l.addMain(i(X,t.L5,-f-t.E7-X,-y,0)),l.addMain(i(t.S1,t.L5,t.S2-t.S1,-y,0)),l.addMain(i(X,t.L5,t.S2-t.E7-X,-y,0));const m=t.S2-t.S1/2;l.addMain(i(m,t.S1,0,-y,0)),l.addMain(i(m,X,0,-y+t.E7,0)),l.addMain(i(m,t.S1,0,y-t.S1,0)),l.addMain(i(m,X,0,y-t.S1+t.E7,0)),l.addMain(i(m,t.S1,0,-f-t.S1,0)),l.addMain(i(m,X,0,-f-t.S1+t.E7,0)),l.addMain(i(m,t.S1,0,f,0)),l.addMain(i(m,X,0,f+t.E7,0)),r.mergeFigure($.fig.faceBeam,!0),r.addMain(M(-f-x,A+x,x)),r.addMain(M(-f-x,A+x,T)),r.addMain(M(t.S2-x,v+x,x)),r.addMain(M(t.S2-x,v+x,T)),r.addSecond(i(m,t.S1,0,v,0)),r.addSecond(i(m,X,0,v+t.E7,0));const p=v+t.S1/2-H,W=Math.sqrt(m**2+p**2),j=Math.atan2(p,m);s.logstr+=`stopper-rod: L ${L(W)} mm, A ${L(ot(j))} degree
|
|
51
|
+
`;const Q=x*Math.sin(j),nt=x*Math.cos(j),q=H-nt;r.addSecond(i(W,t.S1,Q,q,j));const tt=T*Math.sin(j),O=T*Math.cos(j),k=H-O;r.addSecond(i(W,X,tt,k,j)),w.mergeFigure($.fig.faceBeam,!0),w.addSecond(M(-f-x,A+x,x)),w.addMain(M(-f-x,A+x,T)),w.addSecond(M(t.S2-x,v+x,x)),w.addMain(M(t.S2-x,v+x,T)),V.mergeFigure($.fig.faceCone,!0),V.addMain(M(-t.L5/2+x,v+x,x)),V.addMain(M(-t.L5/2+x,v+x,T)),V.addMain(M(t.L5/2-x,v+x,x)),V.addMain(M(t.L5/2-x,v+x,T)),F.mergeFigure($.fig.faceCone,!0),F.addSecond(M(-t.L5/2+x,v+x,x)),F.addMain(M(-t.L5/2+x,v+x,T)),F.addSecond(M(t.L5/2-x,v+x,x)),F.addMain(M(t.L5/2-x,v+x,T)),P.mergeFigure($.fig.faceCone,!0),P.addMain(M(-f-x,0,x)),P.addMain(M(-f-x,0,T)),P.addMain(M(f+x,0,x)),P.addMain(M(f+x,0,T)),N.mergeFigure($.fig.faceCone,!0),N.addSecond(M(-f-x,0,x)),N.addMain(M(-f-x,0,T)),N.addSecond(M(f+x,0,x)),N.addMain(M(f+x,0,T)),s.fig={faceCone:_,faceBeam:o,faceBeamHollow:d,faceDisc:u,faceHand:D,faceWing:c,faceWingHollow:h,faceDoor:g,faceStopperTop:l,faceStopperSide:r,faceStopperSideH:w,faceStopperFaceT:V,faceStopperFaceTH:F,faceStopperFaceB:P,faceStopperFaceBH:N};const E=s.partName;s.vol={inherits:[{outName:`inpax_${E}_rake`,subdesign:"pax_rake",subgeom:$,rotate:[0,0,0],translate:[0,0,0]}],extrudes:[{outName:`subpax_${E}_stpSide`,face:`${E}_faceStopperSide`,extrudeMethod:z.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${E}_stpSideH`,face:`${E}_faceStopperSideH`,extrudeMethod:z.eLinearOrtho,length:t.L5,rotate:[Math.PI/2,0,0],translate:[0,t.L5/2,0]},{outName:`subpax_${E}_stpFaceT`,face:`${E}_faceStopperFaceT`,extrudeMethod:z.eLinearOrtho,length:m,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${E}_stpFaceTH`,face:`${E}_faceStopperFaceTH`,extrudeMethod:z.eLinearOrtho,length:m,rotate:[Math.PI/2,0,Math.PI/2],translate:[0,0,0]},{outName:`subpax_${E}_stpFaceB`,face:`${E}_faceStopperFaceB`,extrudeMethod:z.eLinearOrtho,length:W,rotate:[Math.PI/2-j,0,Math.PI/2],translate:[0,0,H]},{outName:`subpax_${E}_stpFaceBH`,face:`${E}_faceStopperFaceBH`,extrudeMethod:z.eLinearOrtho,length:W,rotate:[Math.PI/2-j,0,Math.PI/2],translate:[0,0,H]}],volumes:[{outName:`ipax_${E}_plus`,boolMethod:J.eUnion,inList:[`subpax_${E}_stpSide`,`subpax_${E}_stpFaceT`,`subpax_${E}_stpFaceB`]},{outName:`ipax_${E}_hollow`,boolMethod:J.eUnion,inList:[`subpax_${E}_stpSideH`,`subpax_${E}_stpFaceTH`,`subpax_${E}_stpFaceBH`]},{outName:`ipax_${E}_stopper`,boolMethod:J.eSubstraction,inList:[`ipax_${E}_plus`,`ipax_${E}_hollow`]},{outName:`pax_${E}`,boolMethod:J.eUnion,inList:[`inpax_${E}_rake`,`ipax_${E}_stopper`]}]},s.sub={},s.logstr+=`heliostat-rake drawn successfully!
|
|
52
|
+
`,s.calcErr=!1}catch(f){s.logstr+=f,console.log(f)}return s}var Tt={pTitle:"Heliostat rake with stopper",pDescription:"The rake-stopper on top of the pole-rotor of the heliostat",pDef:Qt,pGeom:Ee},mt={partName:"heliostat_2",params:[e("H1","mm",3e3,10,4e4,10),e("H2","mm",2500,50,4e4,10),e("H3","mm",200,1,500,1),e("H4","mm",800,1,4e3,1),e("H5","mm",3e3,50,6e3,10),e("H6","mm",200,1,4e3,1),e("H7","mm",400,1,4e3,1),e("H9","mm",100,1,400,1),e("D1","mm",1e3,20,4e3,10),e("D2","mm",700,20,4e3,10),e("D3","mm",900,20,4e3,10),e("D4","mm",400,20,4e3,10),e("D5","mm",300,20,1e3,10),e("D6","mm",200,10,1e3,10),e("D7","mm",400,10,1e3,10),e("D9","mm",100,1,1e3,1),e("E1","mm",30,1,80,1),e("L1","mm",12500,100,4e4,10),e("L2","mm",6e3,100,4e4,10),e("L3","mm",100,1,500,1),e("L4","mm",600,1,4e3,1),e("L5","mm",2e3,10,6e3,10),e("L6","mm",2e3,1,6e3,1),e("L7","mm",100,1,1e3,1),e("L8","mm",200,1,1e3,1),e("al","degree",80,0,95,1),e("S1","mm",100,1,800,1)],paramSvg:{H1:"heliostat_overview.svg",H2:"heliostat_side.svg",H3:"heliostat2_side_sizing.svg",H4:"heliostat2_side_sizing.svg",H5:"heliostat2_side_sizing.svg",H6:"heliostat2_side_sizing.svg",H7:"heliostat2_side_sizing.svg",H9:"heliostat2_side_sizing.svg",D1:"heliostat2_side_sizing.svg",D2:"heliostat2_side_sizing.svg",D3:"heliostat2_side_sizing.svg",D4:"heliostat2_side_sizing.svg",D5:"heliostat2_side_sizing.svg",D6:"heliostat2_side_sizing.svg",D7:"heliostat2_side_sizing.svg",D9:"heliostat2_face_sizing.svg",E1:"heliostat2_side_sizing.svg",L1:"heliostat2_face_sizing.svg",L2:"heliostat2_side_sizing.svg",L3:"heliostat2_face_sizing.svg",L4:"heliostat2_face_sizing.svg",L5:"heliostat2_face_sizing.svg",L6:"heliostat2_face_sizing.svg",L7:"heliostat2_face_sizing.svg",L8:"heliostat2_face_sizing.svg",al:"heliostat2_side_sizing.svg",S1:"heliostat2_side_sizing.svg"},sim:{tMax:100,tStep:.5,tUpdate:500}};function Pe(n,t,a=""){const s=lt(mt.partName+a),i=I(),_=I(),o=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
53
|
+
`;try{const d=t.H1+t.H2-t.H3+t.H4+t.H5-t.H6+t.H7;s.logstr+=`heliostat-height: ${L(d)}, diameter ${L(t.D1)} m
|
|
54
|
+
`,s.logstr+=`heliostat-swing-length: ${L(t.L1)}, width ${L(t.L2)} m
|
|
55
|
+
`;const u=t.al*n/mt.sim.tMax,D=Pt(u);s.logstr+=`swing position angle: ${L(ot(D))} degree
|
|
56
|
+
`;const c=t.H1+t.H2-t.H3,h=c+t.H4+t.H5-t.H6+t.H7,g=ct(bt.pDef),l=ct(Tt.pDef),r=ct(vt.pDef);g.setVal("H1",t.H1),g.setVal("H2",t.H2),g.setVal("D1",t.D1),g.setVal("D2",t.D2),g.setVal("D3",t.D1-6*t.E1),g.setVal("E1",t.E1),g.setVal("E2",t.E1);const w=32,V=(t.D1-6*t.E1)/(w*4);g.setVal("N1",w),g.setVal("D5",V),g.setVal("L1",t.E1+V/2),g.setVal("H3",t.H1/4),g.setVal("H4",t.H1/2),g.setVal("D4",t.H1/4),g.setVal("L2",t.H1/80),g.setVal("E3",t.H1/80),l.setVal("H1",t.H4),l.setVal("H2",t.H5),l.setVal("H3",t.H4-2*t.E1),l.setVal("D1",t.D3),l.setVal("D2",t.D4),l.setVal("L9",t.D3/2),l.setVal("H7",t.D3/2*1.6),l.setVal("H6",t.D3/20),l.setVal("R9",t.D3/20),l.setVal("E1",t.E1),l.setVal("E3",t.E1),l.setVal("E4",t.E1),l.setVal("E6",t.E1),l.setVal("E7",t.E1);const F=t.D2*.6,P=24,N=F/(P*4);if(l.setVal("D3",F),t.D2>t.D3-2*t.E1)throw`err153: D2 ${t.D2} too large compare to D3 ${t.D3} and E1 ${t.E1}`;if(l.setVal("N1",P),l.setVal("D7",N),l.setVal("L1",N),l.setVal("H4",t.H6),l.setVal("D4",t.D5),l.setVal("L7",t.L7),l.setVal("L8",t.L8),l.setVal("D6",t.D9),l.setVal("H5",t.H7),l.setVal("D5",t.D6),l.setVal("D8",t.D7),t.D6>=t.D7)throw`err164: D6 ${t.D6} too large compare to D7 ${t.D7}`;const f=t.L4-2*t.L3;if(l.setVal("L4",f),f<=0)throw`err169: L3 ${t.L3} too large compare to L4 ${t.L4}`;if(l.setVal("L5",t.L5+2*t.L3),l.setVal("L6",t.L6+2*t.L3),l.setVal("S1",t.S1),l.setVal("S2",t.L2/2),r.setVal("L2",t.L2),r.setVal("D1",t.D6),r.setVal("H3",t.H9),r.setVal("H4",t.H9),r.setVal("L1",t.L1),t.L1<4*t.L4+2*t.L6+t.L5+2*t.L3)throw`err185: L1 ${t.L1} too small compare to L4 ${t.L4}, L5 ${t.L5}, L6 ${t.L6}`;r.setVal("H1",t.L3),r.setVal("H2",t.L3),r.setVal("L4",t.L4),r.setVal("L5",t.L5),r.setVal("L6",t.L6),r.setVal("L3",t.D7);const R=bt.pGeom(0,g.getParamVal(),g.getSuffix());ht(R),s.logstr+=gt(R.logstr,g.getPartNameSuffix());const b=Tt.pGeom(0,l.getParamVal(),l.getSuffix());ht(b),s.logstr+=gt(b.logstr,l.getPartNameSuffix());const A=vt.pGeom(0,r.getParamVal(),r.getSuffix());ht(A),s.logstr+=gt(A.logstr,r.getPartNameSuffix()),i.mergeFigure(R.fig.poleCut),i.mergeFigure(b.fig.faceStopperSide.translate(0,c)),i.mergeFigure(A.fig.faceSide.translate(0,h).rotate(0,h,D)),_.mergeFigure(R.fig.poleCut),_.mergeFigure(b.fig.faceStopperFaceT.translate(0,c)),_.mergeFigure(A.fig.faceFace.translate(0,h)),o.mergeFigure(R.fig.poleBottom.translate(0,0)),o.mergeFigure(b.fig.faceStopperTop.translate(0,0)),o.mergeFigure(A.fig.faceTop.rotate(0,0,Math.PI/2)),s.fig={faceSide:i,faceFace:_,faceTop:o};const v=s.partName;s.vol={inherits:[{outName:`inpax_${v}_poleStatic`,subdesign:"pax_pole_static",subgeom:R,rotate:[0,0,0],translate:[0,0,0]},{outName:`inpax_${v}_rake`,subdesign:"pax_rake_stopper",subgeom:b,rotate:[0,0,0],translate:[0,0,c]},{outName:`inpax_${v}_swing`,subdesign:"pax_swing",subgeom:A,rotate:[Math.PI/2,0,0],translate:[0,0,h]}],extrudes:[],volumes:[{outName:`pax_${v}`,boolMethod:J.eUnion,inList:[`inpax_${v}_poleStatic`,`inpax_${v}_rake`,`inpax_${v}_swing`]}]};const H=g.getDesignParamList(),S={partName:g.getPartName(),dparam:H,orientation:[0,0,0],position:[0,0,0]},$={partName:l.getPartName(),dparam:l.getDesignParamList(),orientation:[0,0,0],position:[0,0,c]},y={partName:r.getPartName(),dparam:r.getDesignParamList(),orientation:[0,0,0],position:[0,0,h]};s.sub={pole_static_1:S,rake_1:$,swing_1:y},s.logstr+=`heliostat-2-overview drawn successfully!
|
|
57
|
+
`,s.calcErr=!1}catch(d){s.logstr+=d,console.log(d)}return s}var Ae={pTitle:"Heliostat-2 overview",pDescription:"The heliostat-2 inclination mechanism",pDef:mt,pGeom:Pe},te={partName:"base",params:[e("D1","mm",600,10,4e3,10),e("D2","mm",700,10,4e3,10),e("D3","mm",400,10,4e3,10),e("D4","mm",500,10,4e3,10),e("E1","mm",30,1,80,1),e("E2","mm",30,1,80,1),e("E3","mm",30,1,80,1),e("H1","mm",800,10,4e3,10),e("H2","mm",50,1,4e3,1),e("H3","mm",400,10,4e3,10),e("N2","",12,1,100,1),e("L2","mm",100,1,400,1),e("N1","",24,3,100,1),e("D5","mm",40,1,100,1),e("L1","mm",34,1,300,1)],paramSvg:{D1:"base_cut.svg",D2:"base_cut.svg",D3:"base_cut.svg",D4:"base_cut.svg",E1:"base_cut.svg",E2:"base_cut.svg",E3:"base_cut.svg",H1:"base_cut.svg",H2:"base_hollow.svg",H3:"base_hollow.svg",N2:"base_hollow.svg",L2:"base_hollow.svg",N1:"base_top.svg",D5:"base_top.svg",L1:"base_top.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Re(n,t,a=""){const s=lt(te.partName+a);let i,_,o;const d=I(),u=I(),D=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
58
|
+
`;try{const c=t.D1/2,h=t.D2/2,g=t.D3/2,l=t.D4/2,r=t.D5/2,w=t.L2/2;if(h<c)throw`err089: D2 ${t.D2} too small compare to D1 ${t.D1}`;if(l>c-t.E2)throw`err189: D4 ${t.D4} too large compare to D1 ${t.D1} and E2 ${t.E2}`;s.logstr+=`base-height: ${L(t.H1)} mm
|
|
59
|
+
`,s.logstr+=`base-external-diameter: ${L(t.D2)} mm
|
|
60
|
+
`;const V=t.D1*Math.PI/t.N2-t.L2;if(s.logstr+=`inter-hollow: ${L(V)} mm
|
|
61
|
+
`,i=function($){return B($*h,0).addSegStrokeA($*h,t.E3).addSegStrokeA($*c,t.E3).addSegStrokeA($*c,t.H1).addSegStrokeA($*(c-t.E2),t.H1).addSegStrokeA($*(c-t.E2),t.E3).addSegStrokeA($*l,t.E3).addSegStrokeA($*l,0).closeSegStroke()},_=function($){return B($*h,0).addSegStrokeA($*h,t.E3).addSegStrokeA($*c,t.E3).addSegStrokeA($*c,t.H1).addSegStrokeA($*g,t.H1).addSegStrokeA($*g,t.H1-t.E1).addSegStrokeA($*(c-t.E2),t.H1-t.E1).addSegStrokeA($*(c-t.E2),t.E3).addSegStrokeA($*l,t.E3).addSegStrokeA($*l,0).closeSegStroke()},t.H1<t.E3+t.H2+t.H3+t.E1)throw`err125: H1 ${t.H1} too small compare to E3 ${t.H3}, H2 ${t.H2}, H3 ${t.H3}, E1 ${t.E1}`;if(t.D5>t.H3)throw`err128: D5 ${t.D5} too large compare to H3 ${t.H3}`;const F=2*Math.asin(w/(c-t.E2));if(t.N2*F>2*Math.PI)throw`err132: N2 ${t.N2} too large compare to L2 ${t.L2}, D1 ${t.D1}, E2 ${t.E2}`;const P=t.E3+t.H2+w;if(o=function($){return B($*w,P).addSegStrokeA($*w,P+t.H3-t.L2).addPointA(-$*w,P+t.H3-t.L2).addSegArc(w,!1,!0).addSegStrokeA(-$*w,P).closeSegArc(w,!1,!0)},d.addMain(i(1)),d.addSecond(_(1)),d.addSecond(_(-1)),d.addSecond(o(1)),g+t.L1+r>c-t.E2)throw`err127: D3 ${t.D3} too large compare to D1 ${t.D1}, E2 ${t.E2}, L1 ${t.L1}, R5 ${t.D5}`;if(r>t.L1)throw`err130: D5 ${t.D5} too large compare to L1 ${t.L1}`;const N=2*Math.asin(r/(h+t.L1));if(t.N1*N>2*Math.PI)throw`err134: N1 ${t.N1} too large compare to D5 ${t.D5}, L1 ${t.L1}, D2 ${t.D2}`;u.addMain(M(0,0,c)),u.addMain(M(0,0,g));const f=g+t.L1,R=2*Math.PI/t.N1;for(let $=0;$<t.N1;$++){const y=f*Math.cos($*R),x=f*Math.sin($*R);u.addMain(M(y,x,r))}u.addSecond(M(0,0,c-t.E1)),u.addSecond(M(0,0,h)),u.addSecond(M(0,0,l)),D.addMain(o(1)),D.addSecond(_(1)),D.addSecond(_(-1)),s.fig={faceCut:d,faceTop:u,faceHollow:D};const b=s.partName,A=2*Math.PI/t.N2,v=[...Array(t.N2).keys()],H=v.map($=>({outName:`subpax_${b}_hollow_${$}`,face:`${b}_faceHollow`,extrudeMethod:z.eLinearOrtho,length:h+t.E2,rotate:[Math.PI/2,0,$*A],translate:[0,0,0]})),S=v.map($=>`subpax_${b}_hollow_${$}`);s.vol={extrudes:[{outName:`subpax_${b}_cut`,face:`${b}_faceCut`,extrudeMethod:z.eRotate,rotate:[0,0,0],translate:[Math.PI/2,0,0]},{outName:`subpax_${b}_top`,face:`${b}_faceTop`,extrudeMethod:z.eLinearOrtho,length:t.E1,rotate:[0,0,0],translate:[0,0,t.H1-t.E1]},...H],volumes:[{outName:`ipax_${b}_hollows`,boolMethod:J.eUnion,inList:[...S]},{outName:`ipax_${b}_cylinder`,boolMethod:J.eSubstraction,inList:[`subpax_${b}_cut`,`ipax_${b}_hollows`]},{outName:`pax_${b}`,boolMethod:J.eUnion,inList:[`ipax_${b}_cylinder`,`subpax_${b}_top`]}]},s.sub={},s.logstr+=`heliostat-base drawn successfully!
|
|
62
|
+
`,s.calcErr=!1}catch(c){s.logstr+=c,console.log(c)}return s}var Ne={pTitle:"Heliostat base",pDescription:"The base for the static-pole of the heliostat",pDef:te,pGeom:Re},ee={partName:"pole_rotor",params:[e("D1","mm",600,1,4e3,1),e("D2","mm",400,1,4e3,1),e("H1","mm",8e3,10,4e4,10),e("E1","mm",5,1,80,1),e("E2","mm",30,1,80,1),e("N1","",24,3,100,1),e("D3","mm",40,1,100,1),e("L1","mm",45,1,300,1)],paramSvg:{D1:"pole_rotor_cut.svg",D2:"pole_rotor_cut.svg",H1:"pole_rotor_cut.svg",E1:"pole_rotor_cut.svg",E2:"pole_rotor_cut.svg",N1:"pole_rotor_ends.svg",D3:"pole_rotor_ends.svg",L1:"pole_rotor_ends.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ve(n,t,a=""){const s=lt(ee.partName+a);let i;const _=I(),o=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
63
|
+
`;try{const d=t.D1/2,u=t.D2/2,D=t.D3/2;s.logstr+=`pole-height: ${L(t.H1)} mm
|
|
64
|
+
`;const c=B(d,0).addSegStrokeA(d,t.H1).addSegStrokeA(d-t.E1,t.H1).addSegStrokeA(d-t.E1,0).closeSegStroke();_.addMain(c),i=function(r){return B(r*d,0).addSegStrokeA(r*d,t.H1).addSegStrokeA(r*u,t.H1).addSegStrokeA(r*u,t.H1-t.E2).addSegStrokeA(r*(d-t.E1),t.H1-t.E2).addSegStrokeA(r*(d-t.E1),t.E2).addSegStrokeA(r*u,t.E2).addSegStrokeA(r*u,0).closeSegStroke()},_.addSecond(i(1)),_.addSecond(i(-1)),o.addMain(M(0,0,d)),o.addMain(M(0,0,u));const h=u+t.L1,g=2*Math.PI/t.N1;for(let r=0;r<t.N1;r++){const w=h*Math.cos(r*g),V=h*Math.sin(r*g);o.addMain(M(w,V,D))}o.addSecond(M(0,0,d-t.E1)),s.fig={faceCut:_,faceBottom:o};const l=s.partName;s.vol={extrudes:[{outName:`subpax_${l}_pole`,face:`${l}_faceCut`,extrudeMethod:z.eRotate,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${l}_bottom`,face:`${l}_faceBottom`,extrudeMethod:z.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${l}_top`,face:`${l}_faceBottom`,extrudeMethod:z.eLinearOrtho,length:t.E2,rotate:[0,0,0],translate:[0,0,t.H1-t.E2]}],volumes:[{outName:`pax_${l}`,boolMethod:J.eUnion,inList:[`subpax_${l}_pole`,`subpax_${l}_bottom`,`subpax_${l}_top`]}]},s.sub={},s.logstr+=`pole_rotor drawn successfully!
|
|
65
|
+
`,s.calcErr=!1}catch(d){s.logstr+=d,console.log(d)}return s}var Ce={pTitle:"Heliostat pole rotor",pDescription:"The vertical axis inside the pole of an heliostat",pDef:ee,pGeom:Ve},se={partName:"rod",params:[e("L1","mm",1e4,100,4e4,10),e("L2","mm",100,2,400,1),e("L3","mm",400,10,1e3,1),e("L4","mm",600,10,1e3,1),e("H1","mm",200,5,4e3,1),e("E1","mm",2,1,80,1),e("E2","mm",10,1,80,1),e("N1","",10,2,50,1),e("N3","",2,1,20,1),e("N4","",4,1,20,1),e("R3","mm",100,1,500,1),e("D2","mm",10,1,100,1),e("L7","mm",10,1,300,1)],paramSvg:{L1:"rod_top.svg",L2:"rod_top.svg",L3:"rod_top.svg",L4:"rod_top.svg",H1:"rod_cut.svg",E1:"rod_cut.svg",E2:"rod_cut.svg",N1:"rod_top.svg",N3:"rod_top.svg",N4:"rod_top.svg",R3:"rod_top.svg",D2:"rod_plate.svg",L7:"rod_plate.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function Ie(n,t,a=""){const s=lt(se.partName+a);let i,_;const o=I(),d=I(),u=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
66
|
+
`;try{const D=t.D2/2,c=t.L3/(t.N3+1),h=t.L4/(t.N4+1);s.logstr+=`rod-length: ${L(t.L1)} mm
|
|
67
|
+
`;const g=(t.L1-t.L3)/(t.N1-1);s.logstr+=`space-length: ${L(g)} mm
|
|
68
|
+
`,i=function(b){const A=[],v=B(t.L4/2,b).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,b+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,b+t.L3).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,b).addCornerRounded(t.R3).closeSegStroke();A.push(v);for(let H=1;H<t.N3+1;H++)A.push(M(t.L4/2-t.L7,b+H*c,D)),A.push(M(-t.L4/2+t.L7,b+H*c,D));for(let H=1;H<t.N4+1;H++)A.push(M(-t.L4/2+H*h,b+t.L7,D)),A.push(M(-t.L4/2+H*h,b+t.L3-t.L7,D));return A},_=function(b,A){return B(t.L2/2,b).addSegStrokeA(t.L2/2,b+A).addSegStrokeA(-t.L2/2,b+A).addSegStrokeA(-t.L2/2,b).closeSegStroke()};const l=t.L2/2,r=t.L4/2,w=(t.L2-2*t.E1)/2,V=t.H1-t.E1,F=B(l,0).addSegStrokeA(l,t.H1).addSegStrokeA(-l,t.H1).addSegStrokeA(-l,0).closeSegStroke(),P=B(w,t.E1).addSegStrokeA(w,V).addSegStrokeA(-w,V).addSegStrokeA(-w,t.E1).closeSegStroke(),N=B(r,t.H1).addSegStrokeA(r,t.H1+t.E2).addSegStrokeA(-r,t.H1+t.E2).addSegStrokeA(-r,t.H1).closeSegStroke();o.addMain(F),o.addMain(P),o.addSecond(N),i(0).forEach(b=>d.addMain(b)),d.addSecond(_(-t.L3/2,2*t.L3));const f=(t.L1-t.L3)/(t.N1-1);for(let b=0;b<t.N1;b++)i(b*f).forEach(A=>u.addMain(A));u.addSecond(_(0,t.L1)),s.fig={faceCut:o,facePlate:d,faceTop:u};const R=s.partName;s.vol={extrudes:[{outName:`subpax_${R}_rod`,face:`${R}_faceCut`,extrudeMethod:z.eLinearOrtho,length:t.L1,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${R}_plates`,face:`${R}_faceTop`,extrudeMethod:z.eLinearOrtho,length:t.E2,rotate:[Math.PI/2,0,0],translate:[0,t.E2+t.H1,0]}],volumes:[{outName:`pax_${R}`,boolMethod:J.eUnion,inList:[`subpax_${R}_rod`,`subpax_${R}_plates`]}]},s.sub={},s.logstr+=`heliostat-rod drawn successfully!
|
|
69
|
+
`,s.calcErr=!1}catch(D){s.logstr+=D,console.log(D)}return s}var Fe={pTitle:"Heliostat rod",pDescription:"The rod of an heliostat-surface",pDef:se,pGeom:Ie},oe={partName:"trapeze",params:[e("L1","mm",1600,10,4e3,1),e("L2","mm",1e3,10,4e3,1),e("L3","mm",400,5,800,1),e("L4","mm",300,5,800,1),e("N1","",7,1,20,1),e("N2","",4,1,20,1),e("N3","",2,1,20,1),e("N4","",2,1,20,1),e("L5","mm",100,1,400,1),e("L6","mm",20,1,400,1),e("L7","mm",20,1,400,1),e("D1","mm",10,1,40,1),e("D2","mm",10,1,40,1),e("D3","mm",30,1,100,1),e("D4","mm",26,1,100,1),e("R1","mm",60,1,400,1),e("R2","mm",20,1,400,1),e("R3","mm",20,1,400,1),e("H1","mm",300,.5,800,.5),e("H2","mm",2,.5,800,.5),e("H3","mm",5,.5,800,.5)],paramSvg:{L1:"trapeze_top.svg",L2:"trapeze_top.svg",L3:"trapeze_top.svg",L4:"trapeze_top.svg",N1:"trapeze_top.svg",N2:"trapeze_top.svg",N3:"trapeze_top.svg",N4:"trapeze_top.svg",L5:"trapeze_top.svg",L6:"trapeze_top.svg",L7:"trapeze_top.svg",D1:"trapeze_top.svg",D2:"trapeze_top.svg",D3:"trapeze_rod.svg",D4:"trapeze_rod.svg",R1:"trapeze_top.svg",R2:"trapeze_top.svg",R3:"trapeze_top.svg",H1:"trapeze_side.svg",H2:"trapeze_side.svg",H3:"trapeze_side.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function ye(n,t,a=""){const s=lt(oe.partName+a);let i,_;const o=I(),d=I(),u=I(),D=I(),c=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
70
|
+
`;try{if(t.L3>t.L1-t.L5)throw`err595: L3 ${t.L3} too large compare to L1 ${t.L1} and L5 ${t.L5}`;if(t.L4>t.L2-t.L5)throw`err596: L4 ${t.L4} too large compare to L2 ${t.L2} and L5 ${t.L5}`;if(t.H1-t.H2-t.H3<4*t.D3)throw`err597: H1 ${t.H1} too small compare to H2 ${t.H2}, H3 ${t.H3} and D3 ${t.D3}`;const h=t.R1*(1-1/Math.sqrt(2)),g=t.R3*(1-1/Math.sqrt(2)),l=t.L2/2-h-(t.L4/2-g),r=t.L1/2-h-(t.L3/2-g),w=Math.sqrt(l**2+r**2),V=t.H1-t.H2-t.H3,F=Math.sqrt(w**2+V**2),P=Math.atan2(V,w),N=Math.atan2(r,l);s.logstr+=`rod-slope: length: ${L(F)} mm, angle: ${L(ot(P))} degree
|
|
71
|
+
`,s.logstr+=`rod-xy-angle: ${L(ot(N))} degree
|
|
72
|
+
`;const f=t.D3/Math.cos(Math.PI/2-P);s.logstr+=`rod-footprint-length: ${L(f)} mm
|
|
73
|
+
`;const R=Math.sqrt((f/2)**2+(t.D3/2)**2),b=Math.atan2(t.D3,f);if(i=function(E,Z,G){return B(E,Z).addPointRP(G+Math.PI-b,R).addSeg2Arcs(G+Math.PI/2,G).addPointRP(G+Math.PI+b,R).addSeg2Arcs(G+Math.PI,G+Math.PI/2).addPointRP(G-b,R).addSeg2Arcs(G+3*Math.PI/2,G+Math.PI).addPointRP(G+b,R).addSeg2Arcs(G,G-Math.PI/2)},_=function(E,Z,G){const K=E+R*Math.cos(G+Math.PI-b),it=Z+R*Math.sin(G+Math.PI-b);return B(K,it).addSegStrokeRP(G+Math.PI,w).addSegStrokeRP(G-Math.PI/2,t.D3).addSegStrokeRP(G,w).closeSegStroke()},t.R1>t.L1/4||t.R1>t.L2/4)throw`err614: R1 ${t.R1} too large compare to L1 ${t.L1} or L2 ${t.L2}`;const A=B(t.L2/2,t.L1/2).addSegStrokeA(-t.L2/2,t.L1/2).addCornerRounded(t.R1).addSegStrokeA(-t.L2/2,-t.L1/2).addCornerRounded(t.R1).addSegStrokeA(t.L2/2,-t.L1/2).addCornerRounded(t.R1).closeSegStroke().addCornerRounded(t.R1);if(t.R2>(t.L1-2*t.L5)/4||t.R2>(t.L2-2*t.L5)/4)throw`err627: R2 ${t.R2} too large compare to L1 ${t.L1}, L2 ${t.L2} and L5 ${t.L5}`;const v=B(t.L2/2-t.L5,t.L1/2-t.L5).addSegStrokeA(-t.L2/2+t.L5,t.L1/2-t.L5).addCornerRounded(t.R2).addSegStrokeA(-t.L2/2+t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).addSegStrokeA(t.L2/2-t.L5,-t.L1/2+t.L5).addCornerRounded(t.R2).closeSegStroke().addCornerRounded(t.R2);if(t.R3>t.L3/4||t.R3>t.L4/4)throw`err639: R3 ${t.R3} too large compare to L3 ${t.L3} or L4 ${t.L4}`;const H=B(t.L4/2,t.L3/2).addSegStrokeA(-t.L4/2,t.L3/2).addCornerRounded(t.R3).addSegStrokeA(-t.L4/2,-t.L3/2).addCornerRounded(t.R3).addSegStrokeA(t.L4/2,-t.L3/2).addCornerRounded(t.R3).closeSegStroke().addCornerRounded(t.R3);o.addMain(A),o.addMain(v),o.addSecond(H);const S=t.L1/(t.N1+1),$=t.L2/(t.N2+1),y=t.L3/(t.N3+1),x=t.L4/(t.N4+1);if(t.L5<t.D1/2+t.L6)throw`err658: L5 ${t.L5} too small compare to D1 ${t.D1} or L6 ${t.L6}`;if(y<t.D2/2+t.L7)throw`err661: D2 ${t.D2} or L7 ${t.L7} too large compare to L3 ${t.l3}`;if(x<t.D2/2+t.L7)throw`err664: D2 ${t.D2} or L7 ${t.L7} too large compare to L4 ${t.l4}`;const X=[];for(let E=1;E<t.N1+1;E++)X.push(M(t.L2/2-t.L6,-t.L1/2+E*S,t.D1/2)),X.push(M(-t.L2/2+t.L6,-t.L1/2+E*S,t.D1/2));for(let E=1;E<t.N2+1;E++)X.push(M(-t.L2/2+E*$,t.L1/2-t.L6,t.D1/2)),X.push(M(-t.L2/2+E*$,-t.L1/2+t.L6,t.D1/2));const T=[];for(let E=1;E<t.N3+1;E++)T.push(M(t.L4/2-t.L7,-t.L3/2+E*y,t.D2/2)),T.push(M(-t.L4/2+t.L7,-t.L3/2+E*y,t.D2/2));for(let E=1;E<t.N4+1;E++)T.push(M(-t.L4/2+E*x,t.L3/2-t.L7,t.D2/2)),T.push(M(-t.L4/2+E*x,-t.L3/2+t.L7,t.D2/2));X.forEach(E=>{o.addMain(E)}),T.forEach(E=>{o.addSecond(E)});const m=[];m.push(i(t.L2/2-h,t.L1/2-h,N)),m.push(i(t.L4/2-g,t.L3/2-g,N)),m.push(i(-t.L2/2+h,t.L1/2-h,Math.PI-N)),m.push(i(-t.L4/2+g,t.L3/2-g,Math.PI-N)),m.push(i(-t.L2/2+h,-t.L1/2+h,Math.PI+N)),m.push(i(-t.L4/2+g,-t.L3/2+g,Math.PI+N)),m.push(i(t.L2/2-h,-t.L1/2+h,-N)),m.push(i(t.L4/2-g,-t.L3/2+g,-N));const p=[];if(p.push(_(t.L2/2-h,t.L1/2-h,N)),p.push(_(-t.L2/2+h,t.L1/2-h,Math.PI-N)),p.push(_(-t.L2/2+h,-t.L1/2+h,Math.PI+N)),p.push(_(t.L2/2-h,-t.L1/2+h,-N)),m.forEach(E=>{o.addSecond(E)}),p.forEach(E=>{o.addSecond(E)}),d.addMain(H),T.forEach(E=>{d.addMain(E)}),d.addSecond(A),d.addSecond(v),X.forEach(E=>{d.addSecond(E)}),m.forEach(E=>{d.addSecond(E)}),p.forEach(E=>{d.addSecond(E)}),t.D4>=t.D3)throw`err218: D4 ${t.D4} larger than D3 ${t.D3}`;u.addMain(M(0,0,t.D3/2)),u.addSecond(M(0,0,t.D4/2)),D.addMain(M(0,0,t.D4/2)),D.addSecond(M(0,0,t.D3/2));const W=t.D3*Math.cos(P),j=W/Math.tan(P),Q=g+(f/2+j)*Math.cos(N),nt=g+(f/2+j)*Math.sin(N),q=F+2*(f+j+W),tt=q+t.L3+t.L4+W,O=B(tt,tt).addSegStrokeA(-tt,tt).addSegStrokeA(-tt,-tt).addSegStrokeA(tt,-tt).closeSegStroke();c.addMain(O),s.fig={faceFrame:o,facePlate:d,faceRod:u,faceRodHollow:D,faceCutRod:c};const k=s.partName;s.vol={extrudes:[{outName:`subpax_${k}_frame`,face:`${k}_faceFrame`,extrudeMethod:z.eLinearOrtho,length:t.H2,rotate:[0,0,0],translate:[0,0,t.H1-t.H2]},{outName:`subpax_${k}_plate`,face:`${k}_facePlate`,extrudeMethod:z.eLinearOrtho,length:t.H3,rotate:[0,0,0],translate:[0,0,0]},{outName:`subpax_${k}_rod1`,face:`${k}_faceRod`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,N],translate:[t.L4/2-Q,t.L3/2-nt,t.H3-W]},{outName:`subpax_${k}_rod2`,face:`${k}_faceRod`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,Math.PI-N],translate:[-t.L4/2+Q,t.L3/2-nt,t.H3-W]},{outName:`subpax_${k}_rod3`,face:`${k}_faceRod`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,Math.PI+N],translate:[-t.L4/2+Q,-t.L3/2+nt,t.H3-W]},{outName:`subpax_${k}_rod4`,face:`${k}_faceRod`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,-N],translate:[t.L4/2-Q,-t.L3/2+nt,t.H3-W]},{outName:`subpax_${k}_rodH1`,face:`${k}_faceRodHollow`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,N],translate:[t.L4/2-Q,t.L3/2-nt,t.H3-W]},{outName:`subpax_${k}_rodH2`,face:`${k}_faceRodHollow`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,Math.PI-N],translate:[-t.L4/2+Q,t.L3/2-nt,t.H3-W]},{outName:`subpax_${k}_rodH3`,face:`${k}_faceRodHollow`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,Math.PI+N],translate:[-t.L4/2+Q,-t.L3/2+nt,t.H3-W]},{outName:`subpax_${k}_rodH4`,face:`${k}_faceRodHollow`,extrudeMethod:z.eLinearOrtho,length:q,rotate:[0,Math.PI/2-P,-N],translate:[t.L4/2-Q,-t.L3/2+nt,t.H3-W]},{outName:`subpax_${k}_cut1`,face:`${k}_faceCutRod`,extrudeMethod:z.eLinearOrtho,length:tt,rotate:[0,0,0],translate:[0,0,-tt]},{outName:`subpax_${k}_cut2`,face:`${k}_faceCutRod`,extrudeMethod:z.eLinearOrtho,length:tt,rotate:[0,0,0],translate:[0,0,t.H1]}],volumes:[{outName:`ipax_${k}_rawRod`,boolMethod:J.eUnion,inList:[`subpax_${k}_rod1`,`subpax_${k}_rod2`,`subpax_${k}_rod3`,`subpax_${k}_rod4`]},{outName:`ipax_${k}_rodHollow`,boolMethod:J.eUnion,inList:[`subpax_${k}_rodH1`,`subpax_${k}_rodH2`,`subpax_${k}_rodH3`,`subpax_${k}_rodH4`]},{outName:`ipax_${k}_halfRods`,boolMethod:J.eSubstraction,inList:[`ipax_${k}_rawRod`,`subpax_${k}_cut1`]},{outName:`ipax_${k}_rods`,boolMethod:J.eSubstraction,inList:[`ipax_${k}_halfRods`,`subpax_${k}_cut2`]},{outName:`ipax_${k}_plus`,boolMethod:J.eUnion,inList:[`subpax_${k}_frame`,`subpax_${k}_plate`,`ipax_${k}_rods`]},{outName:`pax_${k}`,boolMethod:J.eSubstraction,inList:[`ipax_${k}_plus`,`ipax_${k}_rodHollow`]}]},s.sub={},s.logstr+=`trapeze drawn successfully!
|
|
74
|
+
`,s.calcErr=!1}catch(h){s.logstr+=h,console.log(h)}return s}var Te={pTitle:"Heliostat trapeze",pDescription:"The support of one solar panel. Made out of aluminium for lightness and cooling",pDef:oe,pGeom:ye},ie={partName:"surface",params:[e("LH","mm",1600,10,4e3,1),e("LV","mm",1e3,10,4e3,1),e("LZ","mm",40,0,100,1),e("nx","",9,1,40,1),e("ny","",9,1,40,1),Ht("main_direction",["horizontal","vertical"]),dt("crenel",!1),e("first_row","",9,1,40,1),e("second_row","",9,1,40,1),e("EH","mm",10,0,1e3,1),dt("EH_gradient",!1),e("EH_sup","mm",500,0,1e3,1),e("EH_cycle","",1,0,3,.05),e("EH_start","",0,0,1,.05),Ht("EH_shape",["sinusoid","triangle","sawUp","sawDown"]),e("EV","mm",10,0,1e3,1),dt("EV_gradient",!1),e("EV_sup","mm",500,0,1e3,1),e("EV_cycle","",1,0,3,.05),e("EV_start","",0,0,1,.05),Ht("EV_shape",["sinusoid","triangle","sawUp","sawDown"]),e("power_efficiency","%",16,0,100,.1),e("solar_power","W/m2",816,100,2e3,1)],paramSvg:{LH:"surface_main.svg",LV:"surface_main.svg",LZ:"surface_lz.svg",nx:"surface_main.svg",ny:"surface_main.svg",main_direction:"surface_crenel.svg",crenel:"surface_crenel.svg",first_row:"surface_extremities.svg",second_row:"surface_extremities.svg",EH:"surface_main.svg",EH_gradient:"surface_space_evolution.svg",EH_sup:"surface_space_evolution.svg",EH_cycle:"surface_space_evolution.svg",EH_start:"surface_space_evolution.svg",EH_shape:"surface_space_shape.svg",EV:"surface_main.svg",EV_gradient:"surface_space_evolution.svg",EV_sup:"surface_space_evolution.svg",EV_cycle:"surface_space_evolution.svg",EV_start:"surface_space_evolution.svg",EV_shape:"surface_space_shape.svg",power_efficiency:"surface_power.svg",solar_power:"surface_power.svg"},sim:{tMax:180,tStep:.5,tUpdate:500}};function me(n,t,a=""){const s=lt(ie.partName+a);let i;const _=I(),o=I();s.logstr+=`${s.partName} simTime: ${n}
|
|
75
|
+
`;try{const d=t.LH*t.LV/1e6,u=t.solar_power*d*t.power_efficiency/100;s.logstr+=`panel surface: ${L(d)} m2
|
|
76
|
+
`,s.logstr+=`panel power: ${L(u)} W
|
|
77
|
+
`;const D=t.nx*t.ny;s.logstr+=`max panel number: ${D}
|
|
78
|
+
`,s.logstr+=`max panel surface: ${L(D*d)} m2
|
|
79
|
+
`,s.logstr+=`max panel power: ${L(D*u)} W
|
|
80
|
+
`;const c=t.main_direction===1?t.ny:t.nx,h=t.main_direction===1?t.nx:t.ny,g=t.main_direction===1?t.EV:t.EH,l=t.main_direction===1?t.EV_gradient:t.EH_gradient,r=t.main_direction===1?t.EV_sup:t.EH_sup,w=t.main_direction===1?t.EV_cycle:t.EH_cycle,V=t.main_direction===1?t.EV_start:t.EH_start,F=t.main_direction===1?t.EV_shape:t.EH_shape,P=t.main_direction===0?t.EV:t.EH,N=t.main_direction===0?t.EV_gradient:t.EH_gradient,f=t.main_direction===0?t.EV_sup:t.EH_sup,R=t.main_direction===0?t.EV_cycle:t.EH_cycle,b=t.main_direction===0?t.EV_start:t.EH_start,A=t.main_direction===0?t.EV_shape:t.EH_shape,v=Math.max(h,t.first_row,t.second_row),H=[];for(let O=0;O<c;O++){const k=(O+1)%2,E=t.crenel?h-k:h;H.push(E)}H[0]=t.first_row,H[H.length-1]=t.first_row,c>2&&(H[1]=t.second_row,H[H.length-2]=t.second_row);let S=0;H.forEach(O=>{S+=O}),s.logstr+=`actual panel number: ${S} (${L(100*S/D)} %)
|
|
81
|
+
`,s.logstr+=`actual panel surface: ${L(S*d)} m2
|
|
82
|
+
`,s.logstr+=`actual panel power: ${L(S*u)} W
|
|
83
|
+
`;const $=[];for(let O=0;O<c-1;O++){let k=g;if(l===1){const E=c>2?c-2:1,Z=(V+O*w/E)%1;switch(F){case 0:k+=r*(1-Math.cos(Z*2*Math.PI))/2;break;case 1:k+=r*(1-2*Math.abs(Z-.5));break;case 2:k+=r*Z;break;case 3:k+=r*(1-Z);break;default:k+=r}}$.push(k)}let y=0;const x=[];x.push(0),$.forEach(O=>{y+=O,x.push(y)});const X=[];for(let O=0;O<v-1;O++){let k=P;if(N===1){const E=v>2?v-2:1,Z=(b+O*R/E)%1;switch(A){case 0:k+=f*(1-Math.cos(Z*2*Math.PI))/2;break;case 1:k+=f*(1-2*Math.abs(Z-.5));break;case 2:k+=f*Z;break;case 3:k+=f*(1-Z);break;default:k+=f}}X.push(k)}let T=0;const m=[];m.push(0),X.forEach(O=>{T+=O,m.push(T)});let p=0,W=0;t.main_direction===0?(p=c*t.LH+y,W=v*t.LV+T):(p=v*t.LH+T,W=c*t.LV+y);const j=p*W/10**6;s.logstr+=`global horizontal width: ${L(p/1e3)} m
|
|
84
|
+
`,s.logstr+=`global vertical height: ${L(W/1e3)} m
|
|
85
|
+
`,s.logstr+=`global area: ${L(j)} m2
|
|
86
|
+
`,s.logstr+=`area efficiency: ${L(100*S*d/j)} %
|
|
87
|
+
`;const Q=-p/2,nt=-W/2;i=function(O,k){return B(O,k).addSegStrokeA(O+t.LH,k).addSegStrokeA(O+t.LH,k+t.LV).addSegStrokeA(O,k+t.LV).closeSegStroke()};const q=[];H.forEach((O,k)=>{const E=(v-O)%2,Z=Math.floor((v-O)/2);for(let G=0;G<O;G++){let K=0,it=0;t.main_direction===0?(K=Q+k*t.LH+x[k],it=nt+(Z+G)*t.LV+m[Z+G],E===1&&(it+=(t.LV+m[Z+G+1]-m[Z+G])/2)):(it=nt+k*t.LV+x[k],K=Q+(Z+G)*t.LH+m[Z+G],E===1&&(K+=(t.LH+m[Z+G+1]-m[Z+G])/2)),q.push([K,it])}});for(const O of q)_.addMain(i(O[0],O[1]));o.addMain(i(0,0)),s.fig={faceSurface:_,faceOnePanel:o};const tt=s.partName;s.vol={extrudes:q.map((O,k)=>({outName:`subpax_${tt}_panel_${k}`,face:`${tt}_faceOnePanel`,extrudeMethod:z.eLinearOrtho,length:t.LZ,rotate:[0,0,0],translate:[O[0],O[1],0]})),volumes:[{outName:`pax_${tt}`,boolMethod:J.eUnion,inList:q.map((O,k)=>`subpax_${tt}_panel_${k}`)}]},s.sub={},s.logstr+=`panel-surface drawn successfully!
|
|
88
|
+
`,s.calcErr=!1}catch(d){s.logstr+=d,console.log(d)}return s}var Oe={pTitle:"Heliostat panel-surface",pDescription:"The surface collecting the solar power",pDef:ie,pGeom:me};const ne={"gear/gear_wheel_wheel":Ct,"gear/simplified_gear_wheel":De,"heliostat/heliostat":ke,"heliostat/heliostat_2":Ae,"heliostat/base":Ne,"heliostat/pole_static":bt,"heliostat/pole_rotor":Ce,"heliostat/rake":$t,"heliostat/rake_stopper":Tt,"heliostat/spider":Ft,"heliostat/swing":vt,"heliostat/rod":Fe,"heliostat/trapeze":Te,"heliostat/surface":Oe};function ze(n){const t=/^.*\//g;return n.replace(t,"")}function Be(n){const t={};for(const a of Object.keys(n)){const s=ze(a);t[s]=`/${a}`}return t}function Ue(n){const t=[];for(const a of Object.keys(n))t.push(a);return t}const qe=Be(ne),Ye=Ue(ne);export{ne as a,qe as b,Ye as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s;const e=((s=globalThis.__sveltekit_1qfz8xq)==null?void 0:s.base)??"";var a;const t=((a=globalThis.__sveltekit_1qfz8xq)==null?void 0:a.assets)??e;export{t as a,e as b};
|