ss-component-new 1.2.90 → 1.2.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/{animationData-ChnEQcWN.cjs → animationData-BtND2VWy.cjs} +1 -1
  2. package/dist/{animationData-R5RUbyuY.js → animationData-DZ0i7k1j.js} +1 -1
  3. package/dist/{index-CmPnaCqr.js → index-1gXFTnuu.js} +12 -12
  4. package/dist/{index-DvSKjwnE.cjs → index-BGvxk4QX.cjs} +1 -1
  5. package/dist/{index-BRVn_EF1.js → index-BKaTMDZC.js} +2 -2
  6. package/dist/{index-bFdNa8aj.cjs → index-BUYZ6Pzj.cjs} +1 -1
  7. package/dist/{index-DNWalfgy.cjs → index-BYoEVm0h.cjs} +1 -1
  8. package/dist/{index-ClxM8xCG.cjs → index-B_KvjL9P.cjs} +1 -1
  9. package/dist/{index-B67-PgYw.js → index-BjFqn1jw.js} +1 -1
  10. package/dist/{index-wZjCbQV_.cjs → index-BooqzjWY.cjs} +1 -1
  11. package/dist/{index-D5VkPezA.cjs → index-BprBzYZ5.cjs} +1 -1
  12. package/dist/{index-DsLShQZL.js → index-BtKhX2oM.js} +2 -2
  13. package/dist/{index-s_rVCHvs.js → index-BvxyAOvM.js} +1 -1
  14. package/dist/{index-DP_i5ftZ.js → index-C07slqLJ.js} +1 -1
  15. package/dist/{index-945YmMLJ.js → index-C1aAW06_.js} +1 -1
  16. package/dist/{index-CIL8wLzQ.js → index-C7HjGMoA.js} +2 -2
  17. package/dist/{index-B3hVexQF.js → index-CQ7UrLDv.js} +3 -3
  18. package/dist/{index-DLShoBAD.cjs → index-CRe-_A5B.cjs} +1 -1
  19. package/dist/{index-PsB2VFdd.js → index-CZsCZbCY.js} +2 -2
  20. package/dist/{index-DBndBAmi.cjs → index-C_DIwBxS.cjs} +1 -1
  21. package/dist/{index-pziqfdAa.js → index-CfHIgB5C.js} +1 -1
  22. package/dist/{index-CKzD8tit.js → index-CiNYm1fC.js} +1 -1
  23. package/dist/{index-CSASPaZP.cjs → index-CpYf3edW.cjs} +1 -1
  24. package/dist/{index-DRxhdO38.cjs → index-CtOo2IDL.cjs} +1 -1
  25. package/dist/{index-BW7_3RoD.cjs → index-CuchbMC7.cjs} +1 -1
  26. package/dist/{index-H5zWVryT.cjs → index-CylLhQJV.cjs} +1 -1
  27. package/dist/{index-CxuGIbhq.js → index-DJ14vVkb.js} +1 -1
  28. package/dist/{index-CNKc5GU4.js → index-DQTbLJJt.js} +1 -1
  29. package/dist/{index-CRBj0IE1.cjs → index-DSmsp4fK.cjs} +1 -1
  30. package/dist/{index-CGhvoFIh.cjs → index-DVMvlM3X.cjs} +1 -1
  31. package/dist/{index-CpGj9jjq.cjs → index-DW_lU8F7.cjs} +1 -1
  32. package/dist/{index-BhhFLASG.js → index-DwsI_FxR.js} +5 -5
  33. package/dist/{index-XW9cdt8O.cjs → index-NMPHjxEr.cjs} +1 -1
  34. package/dist/{index-_PqtVmB5.js → index-Q33CutvH.js} +3 -3
  35. package/dist/{index-43r-KEgN.js → index-YxS-TBi2.js} +1 -1
  36. package/dist/{index-Cj-t-GUv.cjs → index-Z2dyIgOs.cjs} +1 -1
  37. package/dist/{index-Dm2K00uW.js → index-a_TWt7Sj.js} +419 -416
  38. package/dist/{index-DfghibBM.cjs → index-bz_QKqhV.cjs} +1 -1
  39. package/dist/{index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-1NUhtQk0.cjs → index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-CjVqxeCk.cjs} +1 -1
  40. package/dist/{index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-0MW1VRgy.js → index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-qrHH3IDA.js} +4 -4
  41. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-C72Rr1SH.cjs → index.vue_vue_type_style_index_0_scoped_92477073_lang-9r-1e4S8.cjs} +1 -1
  42. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-BMKC5TVn.js → index.vue_vue_type_style_index_0_scoped_92477073_lang-IuoTm-WE.js} +2 -2
  43. package/dist/{index.vue_vue_type_style_index_1_lang-C-2EhQeU.js → index.vue_vue_type_style_index_1_lang-CDl_PU-6.js} +1 -1
  44. package/dist/{index.vue_vue_type_style_index_1_lang-Xo4JSq-J.cjs → index.vue_vue_type_style_index_1_lang-DR71_XjN.cjs} +1 -1
  45. package/dist/{main-BE-iA6hW.cjs → main-BxTLrfxf.cjs} +1 -1
  46. package/dist/{main-Bv7oX7Xn.js → main-D_3GSDl9.js} +2 -2
  47. package/dist/ss-component.cjs +1 -1
  48. package/dist/ss-component.css +1 -1
  49. package/dist/ss-component.js +6 -6
  50. package/dist/ss-component2.cjs +1 -1
  51. package/dist/ss-component2.js +10 -10
  52. package/dist/{threeModel-BmkWoPdy.js → threeModel-BKLggDE-.js} +2 -2
  53. package/dist/{threeModel-cN3XeS9l.cjs → threeModel-D4-2rEpM.cjs} +1 -1
  54. package/dist/{threePreview-B9kbeN1y.cjs → threePreview-QIurmOdU.cjs} +1 -1
  55. package/dist/{threePreview-Dmaba2U-.js → threePreview-oszvdj-G.js} +577 -578
  56. package/dist/threeSceneView-BR1l9yTW.js +1341 -0
  57. package/dist/threeSceneView-CaHI2V82.cjs +5 -0
  58. package/dist/threeSceneViewForCPMPIP-DbvRq5YC.cjs +5 -0
  59. package/dist/{threeSceneViewForCPMPIP-CR5y7Hzt.js → threeSceneViewForCPMPIP-wZTvUhLm.js} +230 -236
  60. package/dist/{threeTrackPathView-CKhnsfKP.js → threeTrackPathView-CAK5om32.js} +256 -303
  61. package/dist/{threeTrackPathView-WLhJTcJd.cjs → threeTrackPathView-CF9ierHN.cjs} +2 -2
  62. package/dist/{threeViewerHost-5yvNo1Ub.js → threeViewerHost-CeTJmyoE.js} +1 -1
  63. package/dist/{threeViewerHost-Ym_dg2DG.cjs → threeViewerHost-iajMfGA9.cjs} +1 -1
  64. package/dist/{workpieceTreePanel-D3a0Vvh1.js → workpieceTreePanel-DC0GHh3g.js} +2 -2
  65. package/dist/{workpieceTreePanel-CTOK6c6d.cjs → workpieceTreePanel-YfDCHyA3.cjs} +1 -1
  66. package/package.json +1 -1
  67. package/dist/threeSceneView-EIPGJRbv.cjs +0 -5
  68. package/dist/threeSceneView-afr3Fv7q.js +0 -1369
  69. package/dist/threeSceneViewForCPMPIP-BxakXYgn.cjs +0 -5
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),O=require("./iconfont-0T5xTLj8.cjs"),c=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-QzgaFA5S.cjs"),Be=require("./threeViewerHost-Ym_dg2DG.cjs"),G=require("./index-C8qRkCgn.cjs"),oe=require("./urdfTree-CWwnorES.cjs"),ue=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),w=require("./svgIcon-CUM54R6L.cjs"),Le=require("./isString--eJE54G5.cjs");function ke(r=.5,e=4){const i=new c.Mesh(new c.ConeGeometry(r,e,32),new c.MeshStandardMaterial({color:"#919191ff",metalness:.3,roughness:.6})),o=i.geometry.parameters.height;return i.geometry.translate(0,-o/2,0),i.rotation.set(-90,0,0,"XYZ"),i}function Pe(r,e){r.position.copy(e)}function Ie(r,e,i=new c.Color(16711680)){const o=new c.Vector3;e.getWorldPosition(o);const n=r.geometry.attributes.position,s=r.geometry.attributes.color,l=new c.Color(55551);let a=1/0,p=-1;for(let f=0;f<n.count;f++){const m=new c.Vector3().fromBufferAttribute(n,f).distanceTo(o);m<a&&(a=m,p=f)}for(let f=0;f<s.count;f++)l.toArray(s.array,f*3);if(p!==-1){const f=i.toArray(),h=p*3+2;for(let m=0;m<h;m=m+3)s.array[m]=f[0],s.array[m+1]=f[1],s.array[m+2]=f[2]}s.needsUpdate=!0}function de(r,e,i,o=new c.Color(16711680)){Pe(r,e),Ie(i,r,o)}const De={class:"panel-content"},Fe={class:"animation-controls"},Oe={class:"control-row"},je={class:"control-row"},Re={class:"frame-info"},We={class:"control-row"},Ge=t.defineComponent({__name:"trackAnimationPanel",props:{cloud:{},knife:{},vectors:{}},emits:["getThreeData"],setup(r,{expose:e,emit:i}){const o=r,n=t.computed(()=>o.vectors),s=t.ref(!1),l=t.ref(0),a=t.ref(50);let p=!1;const f=g=>`第 ${g+1} 帧`,h=g=>{if(g<0||g>=n.value.length){console.error(`帧索引 ${g} 超出范围`);return}const x=n.value[g];l.value=g,de(o.knife,x,o.cloud)},m=async()=>{if(n.value.length===0){G.ElMessage.error("无法播放动画:无数据");return}if(!s.value){s.value=!0,p=!1,n.value.length-1===l.value&&(l.value=0);try{for(let g=l.value+1;g<n.value.length&&!p;g++)await new Promise(x=>setTimeout(x,a.value)),h(g);p||G.ElMessage.success("动画播放完成")}catch(g){console.error("动画播放出错:",g),G.ElMessage.error("动画播放出错")}finally{s.value=!1}}},v=()=>{p=!0,s.value=!1,G.ElMessage.info("动画已停止")},C=g=>{s.value&&v(),h(g)};return e({playAnimation:m,stopAnimation:v,forwardFrame:()=>{s.value&&v(),!(l.value+1>=n.value.length)&&h(l.value+1)},backwardFrame:()=>{s.value&&v(),l.value!==0&&h(l.value-1)}}),(g,x)=>{const E=t.resolveComponent("el-input-number"),V=t.resolveComponent("el-form-item"),N=t.resolveComponent("el-form"),Z=t.resolveComponent("el-slider");return t.openBlock(),t.createElementBlock("div",De,[t.createElementVNode("div",Fe,[t.createElementVNode("div",Oe,[t.createVNode(N,{"label-width":"auto",style:{width:"100%"}},{default:t.withCtx(()=>[t.createVNode(V,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:t.withCtx(()=>[t.createVNode(E,{modelValue:a.value,"onUpdate:modelValue":x[0]||(x[0]=F=>a.value=F),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),t.createElementVNode("div",je,[x[2]||(x[2]=t.createElementVNode("label",null,"当前帧:",-1)),t.createElementVNode("span",Re,t.toDisplayString(l.value+1)+" / "+t.toDisplayString(n.value.length),1)]),t.createElementVNode("div",We,[x[3]||(x[3]=t.createElementVNode("label",null,"动画进度:",-1)),t.createVNode(Z,{modelValue:l.value,"onUpdate:modelValue":x[1]||(x[1]=F=>l.value=F),min:0,max:n.value.length>0?n.value.length-1:0,step:1,"format-tooltip":f,onInput:C,disabled:n.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),He=ue._export_sfc(Ge,[["__scopeId","data-v-93cde733"]]),re=new c.Box3,q=new c.Vector3;class fe extends c.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],i=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],o=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(o),this.setAttribute("position",new c.Float32BufferAttribute(e,3)),this.setAttribute("uv",new c.Float32BufferAttribute(i,2))}applyMatrix4(e){const i=this.attributes.instanceStart,o=this.attributes.instanceEnd;return i!==void 0&&(i.applyMatrix4(e),o.applyMatrix4(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let i;e instanceof Float32Array?i=e:Array.isArray(e)&&(i=new Float32Array(e));const o=new c.InstancedInterleavedBuffer(i,6,1);return this.setAttribute("instanceStart",new c.InterleavedBufferAttribute(o,3,0)),this.setAttribute("instanceEnd",new c.InterleavedBufferAttribute(o,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let i;e instanceof Float32Array?i=e:Array.isArray(e)&&(i=new Float32Array(e));const o=new c.InstancedInterleavedBuffer(i,6,1);return this.setAttribute("instanceColorStart",new c.InterleavedBufferAttribute(o,3,0)),this.setAttribute("instanceColorEnd",new c.InterleavedBufferAttribute(o,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new c.WireframeGeometry(e.geometry)),this}fromLineSegments(e){const i=e.geometry;return this.setPositions(i.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;e!==void 0&&i!==void 0&&(this.boundingBox.setFromBufferAttribute(e),re.setFromBufferAttribute(i),this.boundingBox.union(re))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;if(e!==void 0&&i!==void 0){const o=this.boundingSphere.center;this.boundingBox.getCenter(o);let n=0;for(let s=0,l=e.count;s<l;s++)q.fromBufferAttribute(e,s),n=Math.max(n,o.distanceToSquared(q)),q.fromBufferAttribute(i,s),n=Math.max(n,o.distanceToSquared(q));this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}}c.UniformsLib.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}};c.ShaderLib.line={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,c.UniformsLib.line]),vertexShader:`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),O=require("./iconfont-0T5xTLj8.cjs"),c=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-QzgaFA5S.cjs"),Be=require("./threeViewerHost-iajMfGA9.cjs"),W=require("./index-C8qRkCgn.cjs"),oe=require("./urdfTree-CWwnorES.cjs"),ue=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),V=require("./svgIcon-CUM54R6L.cjs"),Le=require("./isString--eJE54G5.cjs");function ke(r=.5,e=4){const i=new c.Mesh(new c.ConeGeometry(r,e,32),new c.MeshStandardMaterial({color:"#919191ff",metalness:.3,roughness:.6})),o=i.geometry.parameters.height;return i.geometry.translate(0,-o/2,0),i.rotation.set(-90,0,0,"XYZ"),i}function Pe(r,e){r.position.copy(e)}function De(r,e,i=new c.Color(16711680)){const o=new c.Vector3;e.getWorldPosition(o);const n=r.geometry.attributes.position,s=r.geometry.attributes.color,l=new c.Color(55551);let a=1/0,p=-1;for(let f=0;f<n.count;f++){const m=new c.Vector3().fromBufferAttribute(n,f).distanceTo(o);m<a&&(a=m,p=f)}for(let f=0;f<s.count;f++)l.toArray(s.array,f*3);if(p!==-1){const f=i.toArray(),h=p*3+2;for(let m=0;m<h;m=m+3)s.array[m]=f[0],s.array[m+1]=f[1],s.array[m+2]=f[2]}s.needsUpdate=!0}function de(r,e,i,o=new c.Color(16711680)){Pe(r,e),De(i,r,o)}const Ie={class:"panel-content"},Fe={class:"animation-controls"},Oe={class:"control-row"},je={class:"control-row"},Re={class:"frame-info"},We={class:"control-row"},Ge=t.defineComponent({__name:"trackAnimationPanel",props:{cloud:{},knife:{},vectors:{}},emits:["getThreeData"],setup(r,{expose:e,emit:i}){const o=r,n=t.computed(()=>o.vectors),s=t.ref(!1),l=t.ref(0),a=t.ref(50);let p=!1;const f=g=>`第 ${g+1} 帧`,h=g=>{if(g<0||g>=n.value.length){console.error(`帧索引 ${g} 超出范围`);return}const w=n.value[g];l.value=g,de(o.knife,w,o.cloud)},m=async()=>{if(n.value.length===0){W.ElMessage.error("无法播放动画:无数据");return}if(!s.value){s.value=!0,p=!1,n.value.length-1===l.value&&(l.value=0);try{for(let g=l.value+1;g<n.value.length&&!p;g++)await new Promise(w=>setTimeout(w,a.value)),h(g);p||W.ElMessage.success("动画播放完成")}catch(g){console.error("动画播放出错:",g),W.ElMessage.error("动画播放出错")}finally{s.value=!1}}},v=()=>{p=!0,s.value=!1,W.ElMessage.info("动画已停止")},E=g=>{s.value&&v(),h(g)};return e({playAnimation:m,stopAnimation:v,forwardFrame:()=>{s.value&&v(),!(l.value+1>=n.value.length)&&h(l.value+1)},backwardFrame:()=>{s.value&&v(),l.value!==0&&h(l.value-1)}}),(g,w)=>{const _=t.resolveComponent("el-input-number"),C=t.resolveComponent("el-form-item"),A=t.resolveComponent("el-form"),X=t.resolveComponent("el-slider");return t.openBlock(),t.createElementBlock("div",Ie,[t.createElementVNode("div",Fe,[t.createElementVNode("div",Oe,[t.createVNode(A,{"label-width":"auto",style:{width:"100%"}},{default:t.withCtx(()=>[t.createVNode(C,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:t.withCtx(()=>[t.createVNode(_,{modelValue:a.value,"onUpdate:modelValue":w[0]||(w[0]=F=>a.value=F),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),t.createElementVNode("div",je,[w[2]||(w[2]=t.createElementVNode("label",null,"当前帧:",-1)),t.createElementVNode("span",Re,t.toDisplayString(l.value+1)+" / "+t.toDisplayString(n.value.length),1)]),t.createElementVNode("div",We,[w[3]||(w[3]=t.createElementVNode("label",null,"动画进度:",-1)),t.createVNode(X,{modelValue:l.value,"onUpdate:modelValue":w[1]||(w[1]=F=>l.value=F),min:0,max:n.value.length>0?n.value.length-1:0,step:1,"format-tooltip":f,onInput:E,disabled:n.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),He=ue._export_sfc(Ge,[["__scopeId","data-v-93cde733"]]),re=new c.Box3,G=new c.Vector3;class fe extends c.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry";const e=[-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],i=[-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],o=[0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5];this.setIndex(o),this.setAttribute("position",new c.Float32BufferAttribute(e,3)),this.setAttribute("uv",new c.Float32BufferAttribute(i,2))}applyMatrix4(e){const i=this.attributes.instanceStart,o=this.attributes.instanceEnd;return i!==void 0&&(i.applyMatrix4(e),o.applyMatrix4(e),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}setPositions(e){let i;e instanceof Float32Array?i=e:Array.isArray(e)&&(i=new Float32Array(e));const o=new c.InstancedInterleavedBuffer(i,6,1);return this.setAttribute("instanceStart",new c.InterleavedBufferAttribute(o,3,0)),this.setAttribute("instanceEnd",new c.InterleavedBufferAttribute(o,3,3)),this.instanceCount=this.attributes.instanceStart.count,this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e){let i;e instanceof Float32Array?i=e:Array.isArray(e)&&(i=new Float32Array(e));const o=new c.InstancedInterleavedBuffer(i,6,1);return this.setAttribute("instanceColorStart",new c.InterleavedBufferAttribute(o,3,0)),this.setAttribute("instanceColorEnd",new c.InterleavedBufferAttribute(o,3,3)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new c.WireframeGeometry(e.geometry)),this}fromLineSegments(e){const i=e.geometry;return this.setPositions(i.attributes.position.array),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new c.Box3);const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;e!==void 0&&i!==void 0&&(this.boundingBox.setFromBufferAttribute(e),re.setFromBufferAttribute(i),this.boundingBox.union(re))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new c.Sphere),this.boundingBox===null&&this.computeBoundingBox();const e=this.attributes.instanceStart,i=this.attributes.instanceEnd;if(e!==void 0&&i!==void 0){const o=this.boundingSphere.center;this.boundingBox.getCenter(o);let n=0;for(let s=0,l=e.count;s<l;s++)G.fromBufferAttribute(e,s),n=Math.max(n,o.distanceToSquared(G)),G.fromBufferAttribute(i,s),n=Math.max(n,o.distanceToSquared(G));this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}toJSON(){}}c.UniformsLib.line={worldUnits:{value:1},linewidth:{value:1},resolution:{value:new c.Vector2(1,1)},dashOffset:{value:0},dashScale:{value:1},dashSize:{value:1},gapSize:{value:1}};c.ShaderLib.line={uniforms:c.UniformsUtils.merge([c.UniformsLib.common,c.UniformsLib.fog,c.UniformsLib.line]),vertexShader:`
2
2
  #include <common>
3
3
  #include <color_pars_vertex>
4
4
  #include <fog_pars_vertex>
@@ -367,4 +367,4 @@
367
367
  #include <premultiplied_alpha_fragment>
368
368
 
369
369
  }
370
- `};class te extends c.ShaderMaterial{constructor(e){super({type:"LineMaterial",uniforms:c.UniformsUtils.clone(c.ShaderLib.line.uniforms),vertexShader:c.ShaderLib.line.vertexShader,fragmentShader:c.ShaderLib.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const J=new c.Vector4,se=new c.Vector3,ae=new c.Vector3,b=new c.Vector4,S=new c.Vector4,T=new c.Vector4,Q=new c.Vector3,ee=new c.Matrix4,_=new c.Line3,le=new c.Vector3,$=new c.Box3,X=new c.Sphere,U=new c.Vector4;let M,D;function ce(r,e,i){return U.set(0,0,-e,1).applyMatrix4(r.projectionMatrix),U.multiplyScalar(1/U.w),U.x=D/i.width,U.y=D/i.height,U.applyMatrix4(r.projectionMatrixInverse),U.multiplyScalar(1/U.w),Math.abs(Math.max(U.x,U.y))}function qe(r,e){const i=r.matrixWorld,o=r.geometry,n=o.attributes.instanceStart,s=o.attributes.instanceEnd,l=Math.min(o.instanceCount,n.count);for(let a=0,p=l;a<p;a++){_.start.fromBufferAttribute(n,a),_.end.fromBufferAttribute(s,a),_.applyMatrix4(i);const f=new c.Vector3,h=new c.Vector3;M.distanceSqToSegment(_.start,_.end,h,f),h.distanceTo(f)<D*.5&&e.push({point:h,pointOnLine:f,distance:M.origin.distanceTo(h),object:r,face:null,faceIndex:a,uv:null,uv1:null})}}function $e(r,e,i){const o=e.projectionMatrix,s=r.material.resolution,l=r.matrixWorld,a=r.geometry,p=a.attributes.instanceStart,f=a.attributes.instanceEnd,h=Math.min(a.instanceCount,p.count),m=-e.near;M.at(1,T),T.w=1,T.applyMatrix4(e.matrixWorldInverse),T.applyMatrix4(o),T.multiplyScalar(1/T.w),T.x*=s.x/2,T.y*=s.y/2,T.z=0,Q.copy(T),ee.multiplyMatrices(e.matrixWorldInverse,l);for(let v=0,C=h;v<C;v++){if(b.fromBufferAttribute(p,v),S.fromBufferAttribute(f,v),b.w=1,S.w=1,b.applyMatrix4(ee),S.applyMatrix4(ee),b.z>m&&S.z>m)continue;if(b.z>m){const V=b.z-S.z,N=(b.z-m)/V;b.lerp(S,N)}else if(S.z>m){const V=S.z-b.z,N=(S.z-m)/V;S.lerp(b,N)}b.applyMatrix4(o),S.applyMatrix4(o),b.multiplyScalar(1/b.w),S.multiplyScalar(1/S.w),b.x*=s.x/2,b.y*=s.y/2,S.x*=s.x/2,S.y*=s.y/2,_.start.copy(b),_.start.z=0,_.end.copy(S),_.end.z=0;const A=_.closestPointToPointParameter(Q,!0);_.at(A,le);const g=c.MathUtils.lerp(b.z,S.z,A),x=g>=-1&&g<=1,E=Q.distanceTo(le)<D*.5;if(x&&E){_.start.fromBufferAttribute(p,v),_.end.fromBufferAttribute(f,v),_.start.applyMatrix4(l),_.end.applyMatrix4(l);const V=new c.Vector3,N=new c.Vector3;M.distanceSqToSegment(_.start,_.end,N,V),i.push({point:N,pointOnLine:V,distance:M.origin.distanceTo(N),object:r,face:null,faceIndex:v,uv:null,uv1:null})}}}class Xe extends c.Mesh{constructor(e=new fe,i=new te({color:Math.random()*16777215})){super(e,i),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,i=e.attributes.instanceStart,o=e.attributes.instanceEnd,n=new Float32Array(2*i.count);for(let l=0,a=0,p=i.count;l<p;l++,a+=2)se.fromBufferAttribute(i,l),ae.fromBufferAttribute(o,l),n[a]=a===0?0:n[a-1],n[a+1]=n[a]+se.distanceTo(ae);const s=new c.InstancedInterleavedBuffer(n,2,1);return e.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(s,1,0)),e.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(s,1,1)),this}raycast(e,i){const o=this.material.worldUnits,n=e.camera;n===null&&!o&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const s=e.params.Line2!==void 0&&e.params.Line2.threshold||0;M=e.ray;const l=this.matrixWorld,a=this.geometry,p=this.material;D=p.linewidth+s,a.boundingSphere===null&&a.computeBoundingSphere(),X.copy(a.boundingSphere).applyMatrix4(l);let f;if(o)f=D*.5;else{const m=Math.max(n.near,X.distanceToPoint(M.origin));f=ce(n,m,p.resolution)}if(X.radius+=f,M.intersectsSphere(X)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),$.copy(a.boundingBox).applyMatrix4(l);let h;if(o)h=D*.5;else{const m=Math.max(n.near,$.distanceToPoint(M.origin));h=ce(n,m,p.resolution)}$.expandByScalar(h),M.intersectsBox($)!==!1&&(o?qe(this,i):$e(this,n,i))}onBeforeRender(e){const i=this.material.uniforms;i&&i.resolution&&(e.getViewport(J),this.material.uniforms.resolution.value.set(J.z,J.w))}}class me extends fe{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const i=e.length-3,o=new Float32Array(2*i);for(let n=0;n<i;n+=3)o[2*n]=e[n],o[2*n+1]=e[n+1],o[2*n+2]=e[n+2],o[2*n+3]=e[n+3],o[2*n+4]=e[n+4],o[2*n+5]=e[n+5];return super.setPositions(o),this}setColors(e){const i=e.length-3,o=new Float32Array(2*i);for(let n=0;n<i;n+=3)o[2*n]=e[n],o[2*n+1]=e[n+1],o[2*n+2]=e[n+2],o[2*n+3]=e[n+3],o[2*n+4]=e[n+4],o[2*n+5]=e[n+5];return super.setColors(o),this}setFromPoints(e){const i=e.length-1,o=new Float32Array(6*i);for(let n=0;n<i;n++)o[6*n]=e[n].x,o[6*n+1]=e[n].y,o[6*n+2]=e[n].z||0,o[6*n+3]=e[n+1].x,o[6*n+4]=e[n+1].y,o[6*n+5]=e[n+1].z||0;return super.setPositions(o),this}fromLine(e){const i=e.geometry;return this.setPositions(i.attributes.position.array),this}}class Ye extends Xe{constructor(e=new me,i=new te({color:Math.random()*16777215})){super(e,i),this.isLine2=!0,this.type="Line2"}}function Ze(r){const e=[];return r.forEach(i=>{const[o,n,s]=i.trim().split(/\s+/);e.push(+o,+n,+s)}),e}function Y(r,e,i){switch(r){case"X":e.x=+i||0;break;case"Y":e.y=+i||0;break;case"Z":e.z=+i||0;break}}function Ke(r){const e=[],i=["X","Y","Z"];return r.forEach(o=>{const n={x:0,y:0,z:0},s=o.trim();if(!s)return;let l=null,a="";for(let p=0;p<(s==null?void 0:s.length);p++){const f=s[p],h=i.find(m=>m===f);if(h){l&&Y(l,n,a),a="",l=h;continue}a=a+f}Y(l,n,a),e.push(n.x,n.y,n.z)}),e}const Je=r=>r==null?void 0:r.filter(i=>i.includes("=")),Qe=r=>r.replace(/,/g,""),et=r=>r==null?void 0:r.map(i=>Qe(i)),tt=r=>{const e=Je(r);return et(e)};function nt(r){const e=tt(r),i=[];return e.forEach(o=>{var m,v,C,B,A,g;let[n,s,l,a]=o.trim().split(/\s+/);s=(m=s==null?void 0:s.trim)==null?void 0:m.call(s),l=(v=l==null?void 0:l.trim)==null?void 0:v.call(l),a=(C=a==null?void 0:a.trim)==null?void 0:C.call(a);const[,p]=(B=s==null?void 0:s.split)==null?void 0:B.call(s,"="),[,f]=(A=l==null?void 0:l.split)==null?void 0:A.call(l,"="),[,h]=(g=a==null?void 0:a.split)==null?void 0:g.call(a,"=");i.push(+p,+f,+h)}),i}function it(r){const e=[],i=["X","Y","Z"];return r.forEach(o=>{const n={x:0,y:0,z:0},s=o.trim();if(!s)return;let l=null,a="";for(let p=0;p<(s==null?void 0:s.length);p++){const f=s[p],h=i.find(m=>m===f);if(h){l&&Y(l,n,a),a="",l=h;continue}a=a+f}Y(l,n,a),e.push(n.x,n.y,n.z)}),e}function ot(r){return r==null?void 0:r.includes("=")}async function rt(r){var n,s;const e=(n=r==null?void 0:r.trim())==null?void 0:n.split(/\r?\n/);if(ot(r))return nt(e);const i=e==null?void 0:e[0],o=(s=i==null?void 0:i.trim())==null?void 0:s.split(/\s+/);if((o==null?void 0:o.length)>=3)return Ze(e);if((o==null?void 0:o.length)===1)return Ke(e)}async function st(r){const e=r.trim().split(/\r?\n/),i=[];return e.forEach(o=>{const n=o.trim().split(/\s+/);if(n.length!=3)return;const[s,l,a]=n;i.push(+s,+l,+a)}),i}async function at(r){const e=r.trim().split(/\r?\n/),i=[];return e.forEach(o=>{const n=o.trim().split(/\s+/);if(n.length!=3)return;const[s,l,a]=n;i.push(+s,+l,+a)}),i}async function lt(r){let e=r.trim().split(/\r?\n/);return e=e.filter(o=>o.startsWith("X")),e=e.map(o=>{const s=o.indexOf("A");return o.slice(0,s)}),it(e)}async function ct(r,e){const{isCyd:i,isUv:o,isCpt:n,isNc:s}=e;return o?rt(r):i?at(r):n?st(r):s?lt(r):[]}function ut(r){const e=[];for(let i=0;i<r.length;i+=3)e.push(new c.Vector3(r[i],r[i+1],r[i+2]));return e}function dt(r,e){if(!e||e.length<3)return;const{scene:i,camera:o,renderer:n,controls:s}=r();if(!i||!o||!n||!s)return;const l=[];for(let v=0;v<e.length;v+=3)l.push(new c.Vector3(e[v],e[v+1],e[v+2]));const p=new c.CatmullRomCurve3(l,!1,"catmullrom",.5).getPoints(150).flatMap(v=>[v.x,v.y,v.z]),f=new me;f.setPositions(p);const h=new te({color:55551,linewidth:3,resolution:new c.Vector2(window.innerWidth,window.innerHeight)}),m=new Ye(f,h);return m.name="轨迹路径",i.add(m),m}function ft(r,e,i,o=4,n=50){let s=1/0,l=-1/0,a=1/0,p=-1/0,f=1/0,h=-1/0;for(let g=0;g<r.length;g+=3){const x=r[g],E=r[g+1],V=r[g+2];s=Math.min(s,x),l=Math.max(l,x),a=Math.min(a,E),p=Math.max(p,E),f=Math.min(f,V),h=Math.max(h,V)}const v=Math.sqrt((l-s)**2+(p-a)**2+(h-f)**2)*.05,C=c.MathUtils.degToRad(e.fov),B=2*Math.tan(C/2)*n,A=v/B*i.domElement.height*(o/4);return Math.max(1,A)}function mt(r){if(r.length%3!==0)return console.error("points array length is not a multiple of 3:",r),null;const e=new c.BufferGeometry;e.setAttribute("position",new c.Float32BufferAttribute(r,3));const i=new Float32Array(r.length);for(let s=0;s<r.length;s+=3)i[s]=0,i[s+1]=.847,i[s+2]=1;e.setAttribute("color",new c.BufferAttribute(i,3));const o=new c.PointsMaterial({vertexColors:!0,size:1,sizeAttenuation:!1}),n=new c.Points(e,o);return o.needsUpdate=!0,n}function pt(r,e){if(!e)return;const{scene:i,camera:o,renderer:n,controls:s}=r();if(!i||!o||!n||!s)return;const l=mt(e);if(!l)return;l.name="轨迹路径",i.add(l);const a=ft(e,o,n,.4,50);return l.material.size=a,l}const ht={class:"obj-viewer-container"},vt={class:"buttonGroup-top"},gt={class:"buttonGroup-topLeft"},yt={class:"buttonGroup-left"},wt={class:"buttonGroup-right"},xt={class:"buttonGroup-bottom"},bt={class:"left-panel"},St={class:"panel-header"},_t={class:"panel-body"},Et={key:1,class:"clipping-content"},Ct={class:"radio-group"},Vt={class:"radio-label"},zt={class:"radio-label"},Nt={class:"radio-label"},At={class:"radio-label"},Tt={class:"right-panel"},Ut={class:"panel-header"},Mt={class:"panel-body"},Bt={key:0,class:"loading-overlay"},Lt=t.defineComponent({__name:"threeTrackPathView",props:{fileBlobs:{},threeData:{default:()=>""},trackFileType:{}},emits:["getAnimationData","getThreeData"],setup(r,{emit:e}){const i=e,o=r,n=t.ref(null),s=t.ref(!1),l=t.ref(""),a=t.ref(),p=t.ref(!1),f=t.ref(""),h=t.ref(!1),m=t.ref(""),v=t.shallowRef(null),C=t.shallowRef(null),{currentModels:B,resetView:A,initThreeJS:g,handleResize:x,getThreeJSObjects:E,cleanup:V,axesHelperVisible:N,toggleAxesVisibility:Z}=O.useThreeJS(n),{isAnimating:F,toggleAnimation:pe,stopAnimation:he}=O.useAnimation(E,B),{isClipping:ve,activeClippingAxis:z,toggleClipping:ge,updateClippingPlanes:L}=O.useClipping(E,B),ye=()=>{Z()},j=d=>{p.value=!0,f.value=d,d==="剖面视图"&&!ve.value&&ge()},H=d=>{h.value=!0,m.value=d,d==="动画仿真"&&i("getAnimationData")},K=t.ref([]),R=t.ref([]),we=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isUv}),xe=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isCyd}),be=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isCpt}),P=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isNc}),Se=t.computed(()=>{const d=o.fileBlobs||[];return d==null?void 0:d[0]});let k=t.shallowRef(),I=t.shallowRef();const _e=()=>{const{scene:d}=E();k.value&&d&&(O.disposeObj(k.value,d),k.value=null)},Ee=()=>{const{scene:d}=E();I.value&&d&&(O.disposeObj(I.value,d),I.value=null)},ne=()=>{_e(),Ee()},Ce=async d=>{const u=URL.createObjectURL(d),W=await Be.readFileText(u);if(URL.revokeObjectURL(u),Le.isString(W)){const y=await ct(W,o.trackFileType)||[];K.value=y;const ie=K.value;we.value&&(k.value=dt(E,ie)),(xe.value||be.value||P.value)&&(k.value=pt(E,ie)),O.frameCameraToMesh(E,k.value)}},Ve=()=>{var d,u;I.value=ke(),R.value=ut(K.value),R.value&&R.value.length&&(de(I.value,R.value[0],k.value,new c.Color(16711680)),(u=(d=C.value)==null?void 0:d.add)==null||u.call(d,I.value))};t.watch(()=>Se.value,async d=>{d&&(ne(),await Ce(d),P.value&&Ve())},{immediate:!0,deep:!0});const ze=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.playAnimation())},Ne=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.stopAnimation())},Ae=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.forwardFrame())},Te=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.backwardFrame())},Ue=()=>{g(),window.addEventListener("resize",x);const d=E();C.value=d.scene,C.value&&(C.value.name="CPMPIP")},Me=()=>{window.removeEventListener("resize",x),F.value&&he(),ne(),V()};return t.onMounted(async()=>{try{Ue()}catch(d){console.error("Three.js 初始化失败:",d),G.ElMessage.error("渲染引擎初始化失败!")}}),t.onBeforeUnmount(()=>{Me()}),(d,u)=>{const W=t.resolveComponent("el-scrollbar");return t.openBlock(),t.createElementBlock("div",ht,[t.createElementVNode("div",{ref_key:"threejsContainer",ref:n,class:"threejs-container"},null,512),t.createElementVNode("div",vt,[t.createVNode(w.ThreeSvgIcon,{name:"guanjianjiexi",size:"34"}),t.createVNode(w.ThreeSvgIcon,{name:"guanjiekongzhi",size:"34"}),t.createVNode(w.ThreeSvgIcon,{name:"gongyishengcheng",size:"34"}),t.createVNode(w.ThreeSvgIcon,{name:"buchangshezhi",size:"34"}),t.createVNode(w.ThreeSvgIcon,{name:"shuchujiagongchengxu",size:"34"})]),t.createElementVNode("div",gt,[t.createVNode(w.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:t.unref(A),title:"重置"},null,8,["onClick"]),t.createVNode(w.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大"}),t.createVNode(w.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小"}),t.createVNode(w.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:t.unref(pe),title:t.unref(F)?"停止动画":"动画视图"},null,8,["onClick","title"]),t.createVNode(w.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:t.unref(N),onClick:ye,title:"显隐坐标轴"},null,8,["active"])]),t.createElementVNode("div",yt,[t.renderSlot(d.$slots,"button-left",{switchRightPanel:j},void 0,!0),t.createVNode(w.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:u[0]||(u[0]=y=>j("场景树")),active:p.value&&f.value==="场景树",title:"场景树"},null,8,["active"]),t.createVNode(w.ThreeSvgIcon,{name:"clipping",size:"24",onClick:u[1]||(u[1]=y=>j("剖面视图")),active:p.value&&f.value==="剖面视图",title:"剖面视图"},null,8,["active"]),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",onClick:u[2]||(u[2]=y=>j("场景树3"))}),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",onClick:u[3]||(u[3]=y=>j("场景4"))})]),t.createElementVNode("div",wt,[t.renderSlot(d.$slots,"button-right",{switchRightPanel:H},void 0,!0),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24"}),t.createVNode(w.ThreeSvgIcon,{name:"guanjiekongzhi",size:"24",onClick:u[4]||(u[4]=y=>H("关节控制")),active:h.value&&m.value==="关节控制",title:"关节控制"},null,8,["active"]),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:u[5]||(u[5]=y=>H("动画仿真")),active:h.value&&m.value==="动画仿真"},null,8,["active"]),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"urdf动画",onClick:u[6]||(u[6]=y=>H("urdf动画")),active:h.value&&m.value==="urdf动画"},null,8,["active"]),t.createVNode(w.ThreeSvgIcon,{name:"donghuafangzhen",size:"24"})]),t.createElementVNode("div",xt,[t.createVNode(w.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:Te}),t.createVNode(w.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:ze}),t.createVNode(w.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:Ae}),t.createVNode(w.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:Ne})]),t.withDirectives(t.createElementVNode("div",bt,[t.createElementVNode("div",St,[t.createElementVNode("span",null,t.toDisplayString(f.value),1),t.createElementVNode("span",{class:"close",onClick:u[7]||(u[7]=y=>p.value=!1)}," X ")]),t.createElementVNode("div",_t,[t.createVNode(W,{height:"100%"},{default:t.withCtx(()=>[f.value==="场景树"?(t.openBlock(),t.createBlock(oe.UrdfTree,{key:0,model:v.value},null,8,["model"])):t.createCommentVNode("",!0),f.value==="剖面视图"?(t.openBlock(),t.createElementBlock("div",Et,[t.createElementVNode("div",Ct,[t.createElementVNode("label",Vt,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":u[8]||(u[8]=y=>t.isRef(z)?z.value=y:null),onChange:u[9]||(u[9]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[17]||(u[17]=t.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),t.createElementVNode("label",zt,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":u[10]||(u[10]=y=>t.isRef(z)?z.value=y:null),onChange:u[11]||(u[11]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[18]||(u[18]=t.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),t.createElementVNode("label",Nt,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":u[12]||(u[12]=y=>t.isRef(z)?z.value=y:null),onChange:u[13]||(u[13]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[19]||(u[19]=t.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),t.createElementVNode("label",At,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":u[14]||(u[14]=y=>t.isRef(z)?z.value=y:null),onChange:u[15]||(u[15]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[20]||(u[20]=t.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):t.createCommentVNode("",!0)]),_:1})])],512),[[t.vShow,p.value]]),t.withDirectives(t.createElementVNode("div",Tt,[t.createElementVNode("div",Ut,[t.createElementVNode("span",null,t.toDisplayString(m.value),1),t.createElementVNode("span",{class:"close",onClick:u[16]||(u[16]=y=>h.value=!1)}," X ")]),t.createElementVNode("div",Mt,[t.createVNode(W,{height:"100%"},{default:t.withCtx(()=>[t.withDirectives(t.createVNode(oe.JointPanel,{model:v.value},null,8,["model"]),[[t.vShow,m.value==="关节控制"]]),t.withDirectives(t.createVNode(He,{ref_key:"animationPanelRef",ref:a,cloud:t.unref(k),knife:t.unref(I),vectors:R.value},null,8,["cloud","knife","vectors"]),[[t.vShow,m.value==="动画仿真"&&P.value]])]),_:1})])],512),[[t.vShow,h.value]]),s.value?(t.openBlock(),t.createElementBlock("div",Bt,[u[21]||(u[21]=t.createElementVNode("div",{class:"loading-spinner"},null,-1)),t.createElementVNode("p",null,t.toDisplayString(l.value),1)])):t.createCommentVNode("",!0)])}}}),kt=ue._export_sfc(Lt,[["__scopeId","data-v-e8652636"]]);exports.default=kt;
370
+ `};class te extends c.ShaderMaterial{constructor(e){super({type:"LineMaterial",uniforms:c.UniformsUtils.clone(c.ShaderLib.line.uniforms),vertexShader:c.ShaderLib.line.vertexShader,fragmentShader:c.ShaderLib.line.fragmentShader,clipping:!0}),this.isLineMaterial=!0,this.setValues(e)}get color(){return this.uniforms.diffuse.value}set color(e){this.uniforms.diffuse.value=e}get worldUnits(){return"WORLD_UNITS"in this.defines}set worldUnits(e){e===!0?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}get linewidth(){return this.uniforms.linewidth.value}set linewidth(e){this.uniforms.linewidth&&(this.uniforms.linewidth.value=e)}get dashed(){return"USE_DASH"in this.defines}set dashed(e){e===!0!==this.dashed&&(this.needsUpdate=!0),e===!0?this.defines.USE_DASH="":delete this.defines.USE_DASH}get dashScale(){return this.uniforms.dashScale.value}set dashScale(e){this.uniforms.dashScale.value=e}get dashSize(){return this.uniforms.dashSize.value}set dashSize(e){this.uniforms.dashSize.value=e}get dashOffset(){return this.uniforms.dashOffset.value}set dashOffset(e){this.uniforms.dashOffset.value=e}get gapSize(){return this.uniforms.gapSize.value}set gapSize(e){this.uniforms.gapSize.value=e}get opacity(){return this.uniforms.opacity.value}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get resolution(){return this.uniforms.resolution.value}set resolution(e){this.uniforms.resolution.value.copy(e)}get alphaToCoverage(){return"USE_ALPHA_TO_COVERAGE"in this.defines}set alphaToCoverage(e){this.defines&&(e===!0!==this.alphaToCoverage&&(this.needsUpdate=!0),e===!0?this.defines.USE_ALPHA_TO_COVERAGE="":delete this.defines.USE_ALPHA_TO_COVERAGE)}}const J=new c.Vector4,se=new c.Vector3,ae=new c.Vector3,x=new c.Vector4,b=new c.Vector4,N=new c.Vector4,Q=new c.Vector3,ee=new c.Matrix4,S=new c.Line3,le=new c.Vector3,H=new c.Box3,q=new c.Sphere,M=new c.Vector4;let T,I;function ce(r,e,i){return M.set(0,0,-e,1).applyMatrix4(r.projectionMatrix),M.multiplyScalar(1/M.w),M.x=I/i.width,M.y=I/i.height,M.applyMatrix4(r.projectionMatrixInverse),M.multiplyScalar(1/M.w),Math.abs(Math.max(M.x,M.y))}function qe(r,e){const i=r.matrixWorld,o=r.geometry,n=o.attributes.instanceStart,s=o.attributes.instanceEnd,l=Math.min(o.instanceCount,n.count);for(let a=0,p=l;a<p;a++){S.start.fromBufferAttribute(n,a),S.end.fromBufferAttribute(s,a),S.applyMatrix4(i);const f=new c.Vector3,h=new c.Vector3;T.distanceSqToSegment(S.start,S.end,h,f),h.distanceTo(f)<I*.5&&e.push({point:h,pointOnLine:f,distance:T.origin.distanceTo(h),object:r,face:null,faceIndex:a,uv:null,uv1:null})}}function $e(r,e,i){const o=e.projectionMatrix,s=r.material.resolution,l=r.matrixWorld,a=r.geometry,p=a.attributes.instanceStart,f=a.attributes.instanceEnd,h=Math.min(a.instanceCount,p.count),m=-e.near;T.at(1,N),N.w=1,N.applyMatrix4(e.matrixWorldInverse),N.applyMatrix4(o),N.multiplyScalar(1/N.w),N.x*=s.x/2,N.y*=s.y/2,N.z=0,Q.copy(N),ee.multiplyMatrices(e.matrixWorldInverse,l);for(let v=0,E=h;v<E;v++){if(x.fromBufferAttribute(p,v),b.fromBufferAttribute(f,v),x.w=1,b.w=1,x.applyMatrix4(ee),b.applyMatrix4(ee),x.z>m&&b.z>m)continue;if(x.z>m){const C=x.z-b.z,A=(x.z-m)/C;x.lerp(b,A)}else if(b.z>m){const C=b.z-x.z,A=(b.z-m)/C;b.lerp(x,A)}x.applyMatrix4(o),b.applyMatrix4(o),x.multiplyScalar(1/x.w),b.multiplyScalar(1/b.w),x.x*=s.x/2,x.y*=s.y/2,b.x*=s.x/2,b.y*=s.y/2,S.start.copy(x),S.start.z=0,S.end.copy(b),S.end.z=0;const U=S.closestPointToPointParameter(Q,!0);S.at(U,le);const g=c.MathUtils.lerp(x.z,b.z,U),w=g>=-1&&g<=1,_=Q.distanceTo(le)<I*.5;if(w&&_){S.start.fromBufferAttribute(p,v),S.end.fromBufferAttribute(f,v),S.start.applyMatrix4(l),S.end.applyMatrix4(l);const C=new c.Vector3,A=new c.Vector3;T.distanceSqToSegment(S.start,S.end,A,C),i.push({point:A,pointOnLine:C,distance:T.origin.distanceTo(A),object:r,face:null,faceIndex:v,uv:null,uv1:null})}}}class Xe extends c.Mesh{constructor(e=new fe,i=new te({color:Math.random()*16777215})){super(e,i),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,i=e.attributes.instanceStart,o=e.attributes.instanceEnd,n=new Float32Array(2*i.count);for(let l=0,a=0,p=i.count;l<p;l++,a+=2)se.fromBufferAttribute(i,l),ae.fromBufferAttribute(o,l),n[a]=a===0?0:n[a-1],n[a+1]=n[a]+se.distanceTo(ae);const s=new c.InstancedInterleavedBuffer(n,2,1);return e.setAttribute("instanceDistanceStart",new c.InterleavedBufferAttribute(s,1,0)),e.setAttribute("instanceDistanceEnd",new c.InterleavedBufferAttribute(s,1,1)),this}raycast(e,i){const o=this.material.worldUnits,n=e.camera;n===null&&!o&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const s=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const l=this.matrixWorld,a=this.geometry,p=this.material;I=p.linewidth+s,a.boundingSphere===null&&a.computeBoundingSphere(),q.copy(a.boundingSphere).applyMatrix4(l);let f;if(o)f=I*.5;else{const m=Math.max(n.near,q.distanceToPoint(T.origin));f=ce(n,m,p.resolution)}if(q.radius+=f,T.intersectsSphere(q)===!1)return;a.boundingBox===null&&a.computeBoundingBox(),H.copy(a.boundingBox).applyMatrix4(l);let h;if(o)h=I*.5;else{const m=Math.max(n.near,H.distanceToPoint(T.origin));h=ce(n,m,p.resolution)}H.expandByScalar(h),T.intersectsBox(H)!==!1&&(o?qe(this,i):$e(this,n,i))}onBeforeRender(e){const i=this.material.uniforms;i&&i.resolution&&(e.getViewport(J),this.material.uniforms.resolution.value.set(J.z,J.w))}}class pe extends fe{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){const i=e.length-3,o=new Float32Array(2*i);for(let n=0;n<i;n+=3)o[2*n]=e[n],o[2*n+1]=e[n+1],o[2*n+2]=e[n+2],o[2*n+3]=e[n+3],o[2*n+4]=e[n+4],o[2*n+5]=e[n+5];return super.setPositions(o),this}setColors(e){const i=e.length-3,o=new Float32Array(2*i);for(let n=0;n<i;n+=3)o[2*n]=e[n],o[2*n+1]=e[n+1],o[2*n+2]=e[n+2],o[2*n+3]=e[n+3],o[2*n+4]=e[n+4],o[2*n+5]=e[n+5];return super.setColors(o),this}setFromPoints(e){const i=e.length-1,o=new Float32Array(6*i);for(let n=0;n<i;n++)o[6*n]=e[n].x,o[6*n+1]=e[n].y,o[6*n+2]=e[n].z||0,o[6*n+3]=e[n+1].x,o[6*n+4]=e[n+1].y,o[6*n+5]=e[n+1].z||0;return super.setPositions(o),this}fromLine(e){const i=e.geometry;return this.setPositions(i.attributes.position.array),this}}class Ye extends Xe{constructor(e=new pe,i=new te({color:Math.random()*16777215})){super(e,i),this.isLine2=!0,this.type="Line2"}}function Ze(r){const e=[];return r.forEach(i=>{const[o,n,s]=i.trim().split(/\s+/);e.push(+o,+n,+s)}),e}function $(r,e,i){switch(r){case"X":e.x=+i||0;break;case"Y":e.y=+i||0;break;case"Z":e.z=+i||0;break}}function Ke(r){const e=[],i=["X","Y","Z"];return r.forEach(o=>{const n={x:0,y:0,z:0},s=o.trim();if(!s)return;let l=null,a="";for(let p=0;p<(s==null?void 0:s.length);p++){const f=s[p],h=i.find(m=>m===f);if(h){l&&$(l,n,a),a="",l=h;continue}a=a+f}$(l,n,a),e.push(n.x,n.y,n.z)}),e}const Je=r=>r==null?void 0:r.filter(i=>i.includes("=")),Qe=r=>r.replace(/,/g,""),et=r=>r==null?void 0:r.map(i=>Qe(i)),tt=r=>{const e=Je(r);return et(e)};function nt(r){const e=tt(r),i=[];return e.forEach(o=>{var m,v,E,B,U,g;let[n,s,l,a]=o.trim().split(/\s+/);s=(m=s==null?void 0:s.trim)==null?void 0:m.call(s),l=(v=l==null?void 0:l.trim)==null?void 0:v.call(l),a=(E=a==null?void 0:a.trim)==null?void 0:E.call(a);const[,p]=(B=s==null?void 0:s.split)==null?void 0:B.call(s,"="),[,f]=(U=l==null?void 0:l.split)==null?void 0:U.call(l,"="),[,h]=(g=a==null?void 0:a.split)==null?void 0:g.call(a,"=");i.push(+p,+f,+h)}),i}function it(r){const e=[],i=["X","Y","Z"];return r.forEach(o=>{const n={x:0,y:0,z:0},s=o.trim();if(!s)return;let l=null,a="";for(let p=0;p<(s==null?void 0:s.length);p++){const f=s[p],h=i.find(m=>m===f);if(h){l&&$(l,n,a),a="",l=h;continue}a=a+f}$(l,n,a),e.push(n.x,n.y,n.z)}),e}function ot(r){return r==null?void 0:r.includes("=")}async function rt(r){var n,s;const e=(n=r==null?void 0:r.trim())==null?void 0:n.split(/\r?\n/);if(ot(r))return nt(e);const i=e==null?void 0:e[0],o=(s=i==null?void 0:i.trim())==null?void 0:s.split(/\s+/);if((o==null?void 0:o.length)>=3)return Ze(e);if((o==null?void 0:o.length)===1)return Ke(e)}async function st(r){const e=r.trim().split(/\r?\n/),i=[];return e.forEach(o=>{const n=o.trim().split(/\s+/);if(n.length!=3)return;const[s,l,a]=n;i.push(+s,+l,+a)}),i}async function at(r){const e=r.trim().split(/\r?\n/),i=[];return e.forEach(o=>{const n=o.trim().split(/\s+/);if(n.length!=3)return;const[s,l,a]=n;i.push(+s,+l,+a)}),i}async function lt(r){let e=r.trim().split(/\r?\n/);return e=e.filter(o=>o.startsWith("X")),e=e.map(o=>{const s=o.indexOf("A");return o.slice(0,s)}),it(e)}async function ct(r,e){const{isCyd:i,isUv:o,isCpt:n,isNc:s}=e;return o?rt(r):i?at(r):n?st(r):s?lt(r):[]}function ut(r){const e=[];for(let i=0;i<r.length;i+=3)e.push(new c.Vector3(r[i],r[i+1],r[i+2]));return e}function dt(r,e){if(!e||e.length<3)return;const{scene:i,camera:o,renderer:n,controls:s}=r();if(!i||!o||!n||!s)return;const l=[];for(let v=0;v<e.length;v+=3)l.push(new c.Vector3(e[v],e[v+1],e[v+2]));const p=new c.CatmullRomCurve3(l,!1,"catmullrom",.5).getPoints(150).flatMap(v=>[v.x,v.y,v.z]),f=new pe;f.setPositions(p);const h=new te({color:55551,linewidth:3,resolution:new c.Vector2(window.innerWidth,window.innerHeight)}),m=new Ye(f,h);return m.name="轨迹路径",i.add(m),m}function ft(r,e,i,o=4,n=50){let s=1/0,l=-1/0,a=1/0,p=-1/0,f=1/0,h=-1/0;for(let g=0;g<r.length;g+=3){const w=r[g],_=r[g+1],C=r[g+2];s=Math.min(s,w),l=Math.max(l,w),a=Math.min(a,_),p=Math.max(p,_),f=Math.min(f,C),h=Math.max(h,C)}const v=Math.sqrt((l-s)**2+(p-a)**2+(h-f)**2)*.05,E=c.MathUtils.degToRad(e.fov),B=2*Math.tan(E/2)*n,U=v/B*i.domElement.height*(o/4);return Math.max(1,U)}function pt(r){if(r.length%3!==0)return console.error("points array length is not a multiple of 3:",r),null;const e=new c.BufferGeometry;e.setAttribute("position",new c.Float32BufferAttribute(r,3));const i=new Float32Array(r.length);for(let s=0;s<r.length;s+=3)i[s]=0,i[s+1]=.847,i[s+2]=1;e.setAttribute("color",new c.BufferAttribute(i,3));const o=new c.PointsMaterial({vertexColors:!0,size:1,sizeAttenuation:!1}),n=new c.Points(e,o);return o.needsUpdate=!0,n}function mt(r,e){if(!e)return;const{scene:i,camera:o,renderer:n,controls:s}=r();if(!i||!o||!n||!s)return;const l=pt(e);if(!l)return;l.name="轨迹路径",i.add(l);const a=ft(e,o,n,.4,50);return l.material.size=a,l}const ht={class:"obj-viewer-container"},vt={class:"buttonGroup-topLeft"},gt={class:"buttonGroup-left"},yt={class:"buttonGroup-right"},wt={class:"buttonGroup-bottom"},xt={class:"left-panel"},bt={class:"panel-header"},St={class:"panel-body"},_t={key:1,class:"clipping-content"},Et={class:"radio-group"},Ct={class:"radio-label"},Vt={class:"radio-label"},zt={class:"radio-label"},At={class:"radio-label"},Ut={class:"right-panel"},Nt={class:"panel-header"},Mt={class:"panel-body"},Tt={key:0,class:"loading-overlay"},Bt=t.defineComponent({__name:"threeTrackPathView",props:{fileBlobs:{},threeData:{default:()=>""},trackFileType:{}},emits:["getAnimationData","getThreeData"],setup(r,{emit:e}){const i=e,o=r,n=t.ref(null),s=t.ref(!1),l=t.ref(""),a=t.ref(),p=t.ref(!1),f=t.ref(""),h=t.ref(!1),m=t.ref(""),v=t.shallowRef(null),E=t.shallowRef(null),{currentModels:B,resetView:U,initThreeJS:g,handleResize:w,getThreeJSObjects:_,cleanup:C,axesHelperVisible:A,toggleAxesVisibility:X}=O.useThreeJS(n),{isAnimating:F,toggleAnimation:me,stopAnimation:he}=O.useAnimation(_,B),{isClipping:ve,activeClippingAxis:z,toggleClipping:ge,updateClippingPlanes:L}=O.useClipping(_,B),ye=()=>{X()},Y=d=>{p.value=!0,f.value=d,d==="剖面视图"&&!ve.value&&ge()},Z=d=>{h.value=!0,m.value=d,d==="动画仿真"&&i("getAnimationData")},K=t.ref([]),j=t.ref([]),we=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isUv}),xe=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isCyd}),be=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isCpt}),P=t.computed(()=>{var u;return(u=o.trackFileType)==null?void 0:u.isNc}),Se=t.computed(()=>{const d=o.fileBlobs||[];return d==null?void 0:d[0]});let k=t.shallowRef(),D=t.shallowRef();const _e=()=>{const{scene:d}=_();k.value&&d&&(O.disposeObj(k.value,d),k.value=null)},Ee=()=>{const{scene:d}=_();D.value&&d&&(O.disposeObj(D.value,d),D.value=null)},ne=()=>{_e(),Ee()},Ce=async d=>{const u=URL.createObjectURL(d),R=await Be.readFileText(u);if(URL.revokeObjectURL(u),Le.isString(R)){const y=await ct(R,o.trackFileType)||[];K.value=y;const ie=K.value;we.value&&(k.value=dt(_,ie)),(xe.value||be.value||P.value)&&(k.value=mt(_,ie)),O.frameCameraToMesh(_,k.value)}},Ve=()=>{var d,u;D.value=ke(),j.value=ut(K.value),j.value&&j.value.length&&(de(D.value,j.value[0],k.value,new c.Color(16711680)),(u=(d=E.value)==null?void 0:d.add)==null||u.call(d,D.value))};t.watch(()=>Se.value,async d=>{d&&(ne(),await Ce(d),P.value&&Ve())},{immediate:!0,deep:!0});const ze=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.playAnimation())},Ae=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.stopAnimation())},Ue=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.forwardFrame())},Ne=()=>{var d;P.value&&((d=a==null?void 0:a.value)==null||d.backwardFrame())},Me=()=>{g(),window.addEventListener("resize",w);const d=_();E.value=d.scene,E.value&&(E.value.name="CPMPIP")},Te=()=>{window.removeEventListener("resize",w),F.value&&he(),ne(),C()};return t.onMounted(async()=>{try{Me()}catch(d){console.error("Three.js 初始化失败:",d),W.ElMessage.error("渲染引擎初始化失败!")}}),t.onBeforeUnmount(()=>{Te()}),(d,u)=>{const R=t.resolveComponent("el-scrollbar");return t.openBlock(),t.createElementBlock("div",ht,[t.createElementVNode("div",{ref_key:"threejsContainer",ref:n,class:"threejs-container"},null,512),t.createElementVNode("div",vt,[t.createVNode(V.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:t.unref(U),title:"重置"},null,8,["onClick"]),t.createVNode(V.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大"}),t.createVNode(V.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小"}),t.createVNode(V.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:t.unref(me),title:t.unref(F)?"停止动画":"动画视图"},null,8,["onClick","title"]),t.createVNode(V.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:t.unref(A),onClick:ye,title:"显隐坐标轴"},null,8,["active"])]),t.createElementVNode("div",gt,[t.renderSlot(d.$slots,"button-left",{switchRightPanel:Y},void 0,!0),t.createVNode(V.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:u[0]||(u[0]=y=>Y("场景树")),active:p.value&&f.value==="场景树",title:"场景树"},null,8,["active"]),t.createVNode(V.ThreeSvgIcon,{name:"clipping",size:"24",onClick:u[1]||(u[1]=y=>Y("剖面视图")),active:p.value&&f.value==="剖面视图",title:"剖面视图"},null,8,["active"])]),t.createElementVNode("div",yt,[t.renderSlot(d.$slots,"button-right",{switchRightPanel:Z},void 0,!0),t.createVNode(V.ThreeSvgIcon,{name:"guanjiekongzhi",size:"24",onClick:u[2]||(u[2]=y=>Z("关节控制")),active:h.value&&m.value==="关节控制",title:"关节控制"},null,8,["active"]),t.createVNode(V.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:u[3]||(u[3]=y=>Z("动画仿真")),active:h.value&&m.value==="动画仿真"},null,8,["active"])]),t.createElementVNode("div",wt,[t.createVNode(V.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:Ne}),t.createVNode(V.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:ze}),t.createVNode(V.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:Ue}),t.createVNode(V.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:Ae})]),t.withDirectives(t.createElementVNode("div",xt,[t.createElementVNode("div",bt,[t.createElementVNode("span",null,t.toDisplayString(f.value),1),t.createElementVNode("span",{class:"close",onClick:u[4]||(u[4]=y=>p.value=!1)}," X ")]),t.createElementVNode("div",St,[t.createVNode(R,{height:"100%"},{default:t.withCtx(()=>[f.value==="场景树"?(t.openBlock(),t.createBlock(oe.UrdfTree,{key:0,model:v.value},null,8,["model"])):t.createCommentVNode("",!0),f.value==="剖面视图"?(t.openBlock(),t.createElementBlock("div",_t,[t.createElementVNode("div",Et,[t.createElementVNode("label",Ct,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":u[5]||(u[5]=y=>t.isRef(z)?z.value=y:null),onChange:u[6]||(u[6]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[14]||(u[14]=t.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),t.createElementVNode("label",Vt,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":u[7]||(u[7]=y=>t.isRef(z)?z.value=y:null),onChange:u[8]||(u[8]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[15]||(u[15]=t.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),t.createElementVNode("label",zt,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":u[9]||(u[9]=y=>t.isRef(z)?z.value=y:null),onChange:u[10]||(u[10]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[16]||(u[16]=t.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),t.createElementVNode("label",At,[t.withDirectives(t.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":u[11]||(u[11]=y=>t.isRef(z)?z.value=y:null),onChange:u[12]||(u[12]=(...y)=>t.unref(L)&&t.unref(L)(...y))},null,544),[[t.vModelRadio,t.unref(z)]]),u[17]||(u[17]=t.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):t.createCommentVNode("",!0)]),_:1})])],512),[[t.vShow,p.value]]),t.withDirectives(t.createElementVNode("div",Ut,[t.createElementVNode("div",Nt,[t.createElementVNode("span",null,t.toDisplayString(m.value),1),t.createElementVNode("span",{class:"close",onClick:u[13]||(u[13]=y=>h.value=!1)}," X ")]),t.createElementVNode("div",Mt,[t.createVNode(R,{height:"100%"},{default:t.withCtx(()=>[t.withDirectives(t.createVNode(oe.JointPanel,{model:v.value},null,8,["model"]),[[t.vShow,m.value==="关节控制"]]),t.withDirectives(t.createVNode(He,{ref_key:"animationPanelRef",ref:a,cloud:t.unref(k),knife:t.unref(D),vectors:j.value},null,8,["cloud","knife","vectors"]),[[t.vShow,m.value==="动画仿真"&&P.value]])]),_:1})])],512),[[t.vShow,h.value]]),s.value?(t.openBlock(),t.createElementBlock("div",Tt,[u[18]||(u[18]=t.createElementVNode("div",{class:"loading-spinner"},null,-1)),t.createElementVNode("p",null,t.toDisplayString(l.value),1)])):t.createCommentVNode("",!0)])}}}),Lt=ue._export_sfc(Bt,[["__scopeId","data-v-48ba356f"]]);exports.default=Lt;
@@ -24803,7 +24803,7 @@ const n_ = { class: "top-menu" }, i_ = {
24803
24803
  },
24804
24804
  emits: ["getThreeData"],
24805
24805
  setup(e, { emit: t }) {
24806
- const r = Ja(() => import("./threeSceneView-afr3Fv7q.js")), a = Ja(() => import("./threePreview-Dmaba2U-.js")), n = Ja(() => import("./threeTrackPathView-CKhnsfKP.js")), i = Ja(() => import("./threeSceneViewForCPMPIP-CR5y7Hzt.js")), s = {
24806
+ const r = Ja(() => import("./threeSceneView-BR1l9yTW.js")), a = Ja(() => import("./threePreview-oszvdj-G.js")), n = Ja(() => import("./threeTrackPathView-CAK5om32.js")), i = Ja(() => import("./threeSceneViewForCPMPIP-wZTvUhLm.js")), s = {
24807
24807
  ROBOT_SCENE: "robot",
24808
24808
  // 机器人场景
24809
24809
  LATHE_SCENE: "latheScene",
@@ -101,4 +101,4 @@
101
101
  `),c.push(` </office:body>
102
102
  `),f.bookType=="fods"?c.push("</office:document>"):c.push("</office:document-content>"),c.join("")}}();function cc(e,t){if(t.bookType=="fods")return es(e,t);var r=un(),a="",n=[],i=[];return a="mimetype",Ee(r,a,"application/vnd.oasis.opendocument.spreadsheet"),a="content.xml",Ee(r,a,es(e,t)),n.push([a,"text/xml"]),i.push([a,"ContentFile"]),a="styles.xml",Ee(r,a,Ym(e,t)),n.push([a,"text/xml"]),i.push([a,"StylesFile"]),a="meta.xml",Ee(r,a,Qe+Ys()),n.push([a,"text/xml"]),i.push([a,"MetadataFile"]),a="manifest.rdf",Ee(r,a,Sl(i)),n.push([a,"application/rdf+xml"]),a="META-INF/manifest.xml",Ee(r,a,El(n)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Ht(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function tn(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Le(Ft(e))}function Jm(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Ir(rt(e))}function qm(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var a=0;a<t.length;++a)if(e[r+a]!=t[a])continue e;return!0}return!1}function St(e){var t=e.reduce(function(n,i){return n+i.length},0),r=new Uint8Array(t),a=0;return e.forEach(function(n){r.set(n,a),a+=n.length}),r}function rs(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>>24}function Zm(e,t){for(var r=(e[t+15]&127)<<7|e[t+14]>>1,a=e[t+14]&1,n=t+13;n>=t;--n)a=a*256+e[n];return(e[t+15]&128?-a:a)*Math.pow(10,r-6176)}function Qm(e,t,r){var a=Math.floor(r==0?0:Math.LOG10E*Math.log(Math.abs(r)))+6176-20,n=r/Math.pow(10,a-6176);e[t+15]|=a>>7,e[t+14]|=(a&127)<<1;for(var i=0;n>=1;++i,n/=256)e[t+i]=n&255;e[t+15]|=r>=0?0:128}function Ma(e,t){var r=t?t[0]:0,a=e[r]&127;e:if(e[r++]>=128&&(a|=(e[r]&127)<<7,e[r++]<128||(a|=(e[r]&127)<<14,e[r++]<128)||(a|=(e[r]&127)<<21,e[r++]<128)||(a+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(a+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(a+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),a}function Re(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function Ke(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function Ie(e){for(var t=[],r=[0];r[0]<e.length;){var a=r[0],n=Ma(e,r),i=n&7;n=Math.floor(n/8);var s=0,f;if(n==0)break;switch(i){case 0:{for(var c=r[0];e[r[0]++]>=128;);f=e.slice(c,r[0])}break;case 5:s=4,f=e.slice(r[0],r[0]+s),r[0]+=s;break;case 1:s=8,f=e.slice(r[0],r[0]+s),r[0]+=s;break;case 2:s=Ma(e,r),f=e.slice(r[0],r[0]+s),r[0]+=s;break;case 3:case 4:default:throw new Error("PB Type ".concat(i," for Field ").concat(n," at offset ").concat(a))}var o={data:f,type:i};t[n]==null?t[n]=[o]:t[n].push(o)}return t}function or(e){var t=[];return e.forEach(function(r,a){r.forEach(function(n){n.data&&(t.push(Re(a*8+n.type)),n.type==2&&t.push(Re(n.data.length)),t.push(n.data))})}),St(t)}function Mn(e,t){return(e==null?void 0:e.map(function(r){return t(r.data)}))||[]}function Mr(e){for(var t,r=[],a=[0];a[0]<e.length;){var n=Ma(e,a),i=Ie(e.slice(a[0],a[0]+n));a[0]+=n;var s={id:Ke(i[1][0].data),messages:[]};i[2].forEach(function(f){var c=Ie(f.data),o=Ke(c[3][0].data);s.messages.push({meta:c,data:e.slice(a[0],a[0]+o)}),a[0]+=o}),(t=i[3])!=null&&t[0]&&(s.merge=Ke(i[3][0].data)>>>0>0),r.push(s)}return r}function Yt(e){var t=[];return e.forEach(function(r){var a=[];a[1]=[{data:Re(r.id),type:0}],a[2]=[],r.merge!=null&&(a[3]=[{data:Re(+!!r.merge),type:0}]);var n=[];r.messages.forEach(function(s){n.push(s.data),s.meta[3]=[{type:0,data:Re(s.data.length)}],a[2].push({data:or(s.meta),type:2})});var i=or(a);t.push(Re(i.length)),t.push(i),n.forEach(function(s){return t.push(s)})}),St(t)}function eg(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],a=Ma(t,r),n=[];r[0]<t.length;){var i=t[r[0]]&3;if(i==0){var s=t[r[0]++]>>2;if(s<60)++s;else{var f=s-59;s=t[r[0]],f>1&&(s|=t[r[0]+1]<<8),f>2&&(s|=t[r[0]+2]<<16),f>3&&(s|=t[r[0]+3]<<24),s>>>=0,s++,r[0]+=f}n.push(t.slice(r[0],r[0]+s)),r[0]+=s;continue}else{var c=0,o=0;if(i==1?(o=(t[r[0]]>>2&7)+4,c=(t[r[0]++]&224)<<3,c|=t[r[0]++]):(o=(t[r[0]++]>>2)+1,i==2?(c=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(c=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),n=[St(n)],c==0)throw new Error("Invalid offset 0");if(c>n[0].length)throw new Error("Invalid offset beyond length");if(o>=c)for(n.push(n[0].slice(-c)),o-=c;o>=n[n.length-1].length;)n.push(n[n.length-1]),o-=n[n.length-1].length;n.push(n[0].slice(-c,-c+o))}}var l=St(n);if(l.length!=a)throw new Error("Unexpected length: ".concat(l.length," != ").concat(a));return l}function Ur(e){for(var t=[],r=0;r<e.length;){var a=e[r++],n=e[r]|e[r+1]<<8|e[r+2]<<16;r+=3,t.push(eg(a,e.slice(r,r+n))),r+=n}if(r!==e.length)throw new Error("data is not a valid framed stream!");return St(t)}function Jt(e){for(var t=[],r=0;r<e.length;){var a=Math.min(e.length-r,268435455),n=new Uint8Array(4);t.push(n);var i=Re(a),s=i.length;t.push(i),a<=60?(s++,t.push(new Uint8Array([a-1<<2]))):a<=256?(s+=2,t.push(new Uint8Array([240,a-1&255]))):a<=65536?(s+=3,t.push(new Uint8Array([244,a-1&255,a-1>>8&255]))):a<=16777216?(s+=4,t.push(new Uint8Array([248,a-1&255,a-1>>8&255,a-1>>16&255]))):a<=4294967296&&(s+=5,t.push(new Uint8Array([252,a-1&255,a-1>>8&255,a-1>>16&255,a-1>>>24&255]))),t.push(e.slice(r,r+a)),s+=a,n[0]=0,n[1]=s&255,n[2]=s>>8&255,n[3]=s>>16&255,r+=a}return St(t)}function rg(e,t,r,a){var n=Ht(e),i=n.getUint32(4,!0),s=(a>1?12:8)+rs(i&(a>1?3470:398))*4,f=-1,c=-1,o=NaN,l=new Date(2001,0,1);i&512&&(f=n.getUint32(s,!0),s+=4),s+=rs(i&(a>1?12288:4096))*4,i&16&&(c=n.getUint32(s,!0),s+=4),i&32&&(o=n.getFloat64(s,!0),s+=8),i&64&&(l.setTime(l.getTime()+n.getFloat64(s,!0)*1e3),s+=8);var u;switch(e[2]){case 0:break;case 2:u={t:"n",v:o};break;case 3:u={t:"s",v:t[c]};break;case 5:u={t:"d",v:l};break;case 6:u={t:"b",v:o>0};break;case 7:u={t:"n",v:o/86400};break;case 8:u={t:"e",v:0};break;case 9:if(f>-1)u={t:"s",v:r[f]};else if(c>-1)u={t:"s",v:t[c]};else if(!isNaN(o))u={t:"n",v:o};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}return u}function tg(e,t,r){var a=Ht(e),n=a.getUint32(8,!0),i=12,s=-1,f=-1,c=NaN,o=NaN,l=new Date(2001,0,1);n&1&&(c=Zm(e,i),i+=16),n&2&&(o=a.getFloat64(i,!0),i+=8),n&4&&(l.setTime(l.getTime()+a.getFloat64(i,!0)*1e3),i+=8),n&8&&(f=a.getUint32(i,!0),i+=4),n&16&&(s=a.getUint32(i,!0),i+=4);var u;switch(e[1]){case 0:break;case 2:u={t:"n",v:c};break;case 3:u={t:"s",v:t[f]};break;case 5:u={t:"d",v:l};break;case 6:u={t:"b",v:o>0};break;case 7:u={t:"n",v:o/86400};break;case 8:u={t:"e",v:0};break;case 9:if(s>-1)u={t:"s",v:r[s]};else throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(n&31," : ").concat(e.slice(0,4)));break;case 10:u={t:"n",v:c};break;default:throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(n&31," : ").concat(e.slice(0,4)))}return u}function H0(e,t){var r=new Uint8Array(32),a=Ht(r),n=12,i=0;switch(r[0]=5,e.t){case"n":r[1]=2,Qm(r,n,e.v),i|=1,n+=16;break;case"b":r[1]=6,a.setFloat64(n,e.v?1:0,!0),i|=2,n+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,a.setUint32(n,t.indexOf(e.v),!0),i|=8,n+=4;break;default:throw"unsupported cell type "+e.t}return a.setUint32(8,i,!0),r.slice(0,n)}function V0(e,t){var r=new Uint8Array(32),a=Ht(r),n=12,i=0;switch(r[0]=3,e.t){case"n":r[2]=2,a.setFloat64(n,e.v,!0),i|=32,n+=8;break;case"b":r[2]=6,a.setFloat64(n,e.v?1:0,!0),i|=32,n+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,a.setUint32(n,t.indexOf(e.v),!0),i|=16,n+=4;break;default:throw"unsupported cell type "+e.t}return a.setUint32(4,i,!0),r.slice(0,n)}function ag(e,t,r){switch(e[0]){case 0:case 1:case 2:case 3:return rg(e,t,r,e[0]);case 5:return tg(e,t,r);default:throw new Error("Unsupported payload version ".concat(e[0]))}}function dr(e){var t=Ie(e);return Ma(t[1][0].data)}function ts(e,t){var r=Ie(t.data),a=Ke(r[1][0].data),n=r[3],i=[];return(n||[]).forEach(function(s){var f=Ie(s.data),c=Ke(f[1][0].data)>>>0;switch(a){case 1:i[c]=tn(f[3][0].data);break;case 8:{var o=e[dr(f[9][0].data)][0],l=Ie(o.data),u=e[dr(l[1][0].data)][0],x=Ke(u.meta[1][0].data);if(x!=2001)throw new Error("2000 unexpected reference to ".concat(x));var d=Ie(u.data);i[c]=d[3].map(function(v){return tn(v.data)}).join("")}break}}),i}function ng(e,t){var r,a,n,i,s,f,c,o,l,u,x,d,v,h,p=Ie(e),k=Ke(p[1][0].data)>>>0,E=Ke(p[2][0].data)>>>0,g=((a=(r=p[8])==null?void 0:r[0])==null?void 0:a.data)&&Ke(p[8][0].data)>0||!1,O,b;if((i=(n=p[7])==null?void 0:n[0])!=null&&i.data&&t!=0)O=(f=(s=p[7])==null?void 0:s[0])==null?void 0:f.data,b=(o=(c=p[6])==null?void 0:c[0])==null?void 0:o.data;else if((u=(l=p[4])==null?void 0:l[0])!=null&&u.data&&t!=1)O=(d=(x=p[4])==null?void 0:x[0])==null?void 0:d.data,b=(h=(v=p[3])==null?void 0:v[0])==null?void 0:h.data;else throw"NUMBERS Tile missing ".concat(t," cell storage");for(var D=g?4:1,S=Ht(O),B=[],R=0;R<O.length/2;++R){var z=S.getUint16(R*2,!0);z<65535&&B.push([R,z])}if(B.length!=E)throw"Expected ".concat(E," cells, found ").concat(B.length);var G=[];for(R=0;R<B.length-1;++R)G[B[R][0]]=b.subarray(B[R][1]*D,B[R+1][1]*D);return B.length>=1&&(G[B[B.length-1][0]]=b.subarray(B[B.length-1][1]*D)),{R:k,cells:G}}function ig(e,t){var r,a=Ie(t.data),n=(r=a==null?void 0:a[7])!=null&&r[0]?Ke(a[7][0].data)>>>0>0?1:0:-1,i=Mn(a[5],function(s){return ng(s,n)});return{nrows:Ke(a[4][0].data)>>>0,data:i.reduce(function(s,f){return s[f.R]||(s[f.R]=[]),f.cells.forEach(function(c,o){if(s[f.R][o])throw new Error("Duplicate cell r=".concat(f.R," c=").concat(o));s[f.R][o]=c}),s},[])}}function sg(e,t,r){var a,n=Ie(t.data),i={s:{r:0,c:0},e:{r:0,c:0}};if(i.e.r=(Ke(n[6][0].data)>>>0)-1,i.e.r<0)throw new Error("Invalid row varint ".concat(n[6][0].data));if(i.e.c=(Ke(n[7][0].data)>>>0)-1,i.e.c<0)throw new Error("Invalid col varint ".concat(n[7][0].data));r["!ref"]=ke(i);var s=Ie(n[4][0].data),f=ts(e,e[dr(s[4][0].data)][0]),c=(a=s[17])!=null&&a[0]?ts(e,e[dr(s[17][0].data)][0]):[],o=Ie(s[3][0].data),l=0;o[1].forEach(function(u){var x=Ie(u.data),d=e[dr(x[2][0].data)][0],v=Ke(d.meta[1][0].data);if(v!=6002)throw new Error("6001 unexpected reference to ".concat(v));var h=ig(e,d);h.data.forEach(function(p,k){p.forEach(function(E,g){var O=me({r:l+k,c:g}),b=ag(E,f,c);b&&(r[O]=b)})}),l+=h.nrows})}function fg(e,t){var r=Ie(t.data),a={"!ref":"A1"},n=e[dr(r[2][0].data)],i=Ke(n[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));return sg(e,n[0],a),a}function cg(e,t){var r,a=Ie(t.data),n={name:(r=a[1])!=null&&r[0]?tn(a[1][0].data):"",sheets:[]},i=Mn(a[2],dr);return i.forEach(function(s){e[s].forEach(function(f){var c=Ke(f.meta[1][0].data);c==6e3&&n.sheets.push(fg(e,f))})}),n}function og(e,t){var r=Gn(),a=Ie(t.data),n=Mn(a[1],dr);if(n.forEach(function(i){e[i].forEach(function(s){var f=Ke(s.meta[1][0].data);if(f==2){var c=cg(e,s);c.sheets.forEach(function(o,l){Xn(r,o,l==0?c.name:c.name+"_"+l,!0)})}})}),r.SheetNames.length==0)throw new Error("Empty NUMBERS file");return r}function G0(e){var t,r,a,n,i={},s=[];if(e.FullPaths.forEach(function(c){if(c.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),e.FileIndex.forEach(function(c){if(c.name.match(/\.iwa$/)){var o;try{o=Ur(c.content)}catch(u){return console.log("?? "+c.content.length+" "+(u.message||u))}var l;try{l=Mr(o)}catch(u){return console.log("## "+(u.message||u))}l.forEach(function(u){i[u.id]=u.messages,s.push(u.id)})}}),!s.length)throw new Error("File has no messages");var f=((n=(a=(r=(t=i==null?void 0:i[1])==null?void 0:t[0])==null?void 0:r.meta)==null?void 0:a[1])==null?void 0:n[0].data)&&Ke(i[1][0].meta[1][0].data)==1&&i[1][0];if(f||s.forEach(function(c){i[c].forEach(function(o){var l=Ke(o.meta[1][0].data)>>>0;if(l==1)if(!f)f=o;else throw new Error("Document has multiple roots")})}),!f)throw new Error("Cannot find Document root");return og(i,f)}function lg(e,t,r){var a,n,i,s;if(!((a=e[6])!=null&&a[0])||!((n=e[7])!=null&&n[0]))throw"Mutation only works on post-BNC storages!";var f=((s=(i=e[8])==null?void 0:i[0])==null?void 0:s.data)&&Ke(e[8][0].data)>0||!1;if(f)throw"Math only works with normal offsets";for(var c=0,o=Ht(e[7][0].data),l=0,u=[],x=Ht(e[4][0].data),d=0,v=[],h=0;h<t.length;++h){if(t[h]==null){o.setUint16(h*2,65535,!0),x.setUint16(h*2,65535);continue}o.setUint16(h*2,l,!0),x.setUint16(h*2,d,!0);var p,k;switch(typeof t[h]){case"string":p=H0({t:"s",v:t[h]},r),k=V0({t:"s",v:t[h]},r);break;case"number":p=H0({t:"n",v:t[h]},r),k=V0({t:"n",v:t[h]},r);break;case"boolean":p=H0({t:"b",v:t[h]},r),k=V0({t:"b",v:t[h]},r);break;default:throw new Error("Unsupported value "+t[h])}u.push(p),l+=p.length,v.push(k),d+=k.length,++c}for(e[2][0].data=Re(c);h<e[7][0].data.length/2;++h)o.setUint16(h*2,65535,!0),x.setUint16(h*2,65535,!0);return e[6][0].data=St(u),e[3][0].data=St(v),c}function ug(e,t){if(!t||!t.numbers)throw new Error("Must pass a `numbers` option -- check the README");var r=e.Sheets[e.SheetNames[0]];e.SheetNames.length>1&&console.error("The Numbers writer currently writes only the first table");var a=Ar(r["!ref"]);a.s.r=a.s.c=0;var n=!1;a.e.c>9&&(n=!0,a.e.c=9),a.e.r>49&&(n=!0,a.e.r=49),n&&console.error("The Numbers writer is currently limited to ".concat(ke(a)));var i=_0(r,{range:a,header:1}),s=["~Sh33tJ5~"];i.forEach(function(P){return P.forEach(function(I){typeof I=="string"&&s.push(I)})});var f={},c=[],o=xe.read(t.numbers,{type:"base64"});o.FileIndex.map(function(P,I){return[P,o.FullPaths[I]]}).forEach(function(P){var I=P[0],N=P[1];if(I.type==2&&I.name.match(/\.iwa/)){var j=I.content,re=Ur(j),te=Mr(re);te.forEach(function(Q){c.push(Q.id),f[Q.id]={deps:[],location:N,type:Ke(Q.messages[0].meta[1][0].data)}})}}),c.sort(function(P,I){return P-I});var l=c.filter(function(P){return P>1}).map(function(P){return[P,Re(P)]});o.FileIndex.map(function(P,I){return[P,o.FullPaths[I]]}).forEach(function(P){var I=P[0];if(P[1],!!I.name.match(/\.iwa/)){var N=Mr(Ur(I.content));N.forEach(function(j){j.messages.forEach(function(re){l.forEach(function(te){j.messages.some(function(Q){return Ke(Q.meta[1][0].data)!=11006&&qm(Q.data,te[1])})&&f[te[0]].deps.push(j.id)})})})}});for(var u=xe.find(o,f[1].location),x=Mr(Ur(u.content)),d,v=0;v<x.length;++v){var h=x[v];h.id==1&&(d=h)}var p=dr(Ie(d.messages[0].data)[1][0].data);for(u=xe.find(o,f[p].location),x=Mr(Ur(u.content)),v=0;v<x.length;++v)h=x[v],h.id==p&&(d=h);for(p=dr(Ie(d.messages[0].data)[2][0].data),u=xe.find(o,f[p].location),x=Mr(Ur(u.content)),v=0;v<x.length;++v)h=x[v],h.id==p&&(d=h);for(p=dr(Ie(d.messages[0].data)[2][0].data),u=xe.find(o,f[p].location),x=Mr(Ur(u.content)),v=0;v<x.length;++v)h=x[v],h.id==p&&(d=h);var k=Ie(d.messages[0].data);{k[6][0].data=Re(a.e.r+1),k[7][0].data=Re(a.e.c+1);var E=dr(k[46][0].data),g=xe.find(o,f[E].location),O=Mr(Ur(g.content));{for(var b=0;b<O.length&&O[b].id!=E;++b);if(O[b].id!=E)throw"Bad ColumnRowUIDMapArchive";var D=Ie(O[b].messages[0].data);D[1]=[],D[2]=[],D[3]=[];for(var S=0;S<=a.e.c;++S){var B=[];B[1]=B[2]=[{type:0,data:Re(S+420690)}],D[1].push({type:2,data:or(B)}),D[2].push({type:0,data:Re(S)}),D[3].push({type:0,data:Re(S)})}D[4]=[],D[5]=[],D[6]=[];for(var R=0;R<=a.e.r;++R)B=[],B[1]=B[2]=[{type:0,data:Re(R+726270)}],D[4].push({type:2,data:or(B)}),D[5].push({type:0,data:Re(R)}),D[6].push({type:0,data:Re(R)});O[b].messages[0].data=or(D)}g.content=Jt(Yt(O)),g.size=g.content.length,delete k[46];var z=Ie(k[4][0].data);{z[7][0].data=Re(a.e.r+1);var G=Ie(z[1][0].data),L=dr(G[2][0].data);g=xe.find(o,f[L].location),O=Mr(Ur(g.content));{if(O[0].id!=L)throw"Bad HeaderStorageBucket";var J=Ie(O[0].messages[0].data);for(R=0;R<i.length;++R){var le=Ie(J[2][0].data);le[1][0].data=Re(R),le[4][0].data=Re(i[R].length),J[2][R]={type:J[2][0].type,data:or(le)}}O[0].messages[0].data=or(J)}g.content=Jt(Yt(O)),g.size=g.content.length;var ie=dr(z[2][0].data);g=xe.find(o,f[ie].location),O=Mr(Ur(g.content));{if(O[0].id!=ie)throw"Bad HeaderStorageBucket";for(J=Ie(O[0].messages[0].data),S=0;S<=a.e.c;++S)le=Ie(J[2][0].data),le[1][0].data=Re(S),le[4][0].data=Re(a.e.r+1),J[2][S]={type:J[2][0].type,data:or(le)};O[0].messages[0].data=or(J)}g.content=Jt(Yt(O)),g.size=g.content.length;var he=dr(z[4][0].data);(function(){for(var P=xe.find(o,f[he].location),I=Mr(Ur(P.content)),N,j=0;j<I.length;++j){var re=I[j];re.id==he&&(N=re)}var te=Ie(N.messages[0].data);{te[3]=[];var Q=[];s.forEach(function(A,Me){Q[1]=[{type:0,data:Re(Me)}],Q[2]=[{type:0,data:Re(1)}],Q[3]=[{type:2,data:Jm(A)}],te[3].push({type:2,data:or(Q)})})}N.messages[0].data=or(te);var q=Yt(I),Te=Jt(q);P.content=Te,P.size=P.content.length})();var ce=Ie(z[3][0].data);{var Pe=ce[1][0];delete ce[2];var V=Ie(Pe.data);{var de=dr(V[2][0].data);(function(){for(var P=xe.find(o,f[de].location),I=Mr(Ur(P.content)),N,j=0;j<I.length;++j){var re=I[j];re.id==de&&(N=re)}var te=Ie(N.messages[0].data);{delete te[6],delete ce[7];var Q=new Uint8Array(te[5][0].data);te[5]=[];for(var q=0,Te=0;Te<=a.e.r;++Te){var A=Ie(Q);q+=lg(A,i[Te],s),A[1][0].data=Re(Te),te[5].push({data:or(A),type:2})}te[1]=[{type:0,data:Re(a.e.c+1)}],te[2]=[{type:0,data:Re(a.e.r+1)}],te[3]=[{type:0,data:Re(q)}],te[4]=[{type:0,data:Re(a.e.r+1)}]}N.messages[0].data=or(te);var Me=Yt(I),Ce=Jt(Me);P.content=Ce,P.size=P.content.length})()}Pe.data=or(V)}z[3][0].data=or(ce)}k[4][0].data=or(z)}d.messages[0].data=or(k);var _e=Yt(x),C=Jt(_e);return u.content=C,u.size=u.content.length,o}function oc(e){return function(r){for(var a=0;a!=e.length;++a){var n=e[a];r[n[0]]===void 0&&(r[n[0]]=n[1]),n[2]==="n"&&(r[n[0]]=Number(r[n[0]]))}}}function Un(e){oc([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]])(e)}function Wn(e){oc([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]])(e)}function hg(e){return ye.WS.indexOf(e)>-1?"sheet":e==ye.CS?"chart":e==ye.DS?"dialog":e==ye.MS?"macro":e&&e.length?e:"sheet"}function xg(e,t){if(!e)return 0;try{e=t.map(function(a){return a.id||(a.id=a.strRelID),[a.name,e["!id"][a.id].Target,hg(e["!id"][a.id].Type)]})}catch{return null}return!e||e.length===0?null:e}function dg(e,t,r,a,n,i,s,f,c,o,l,u){try{i[a]=Ea(Rr(e,r,!0),t);var x=rr(e,t),d;switch(f){case"sheet":d=L2(x,t,n,c,i[a],o,l,u);break;case"chart":if(d=B2(x,t,n,c,i[a],o,l,u),!d||!d["!drawel"])break;var v=ga(d["!drawel"].Target,t),h=Ra(v),p=Tx(Rr(e,v,!0),Ea(Rr(e,h,!0),v)),k=ga(p,v),E=Ra(k);d=l2(Rr(e,k,!0),k,c,Ea(Rr(e,E,!0),k),o,d);break;case"macro":d=M2(x,t,n,c,i[a],o,l,u);break;case"dialog":d=U2(x,t,n,c,i[a],o,l,u);break;default:throw new Error("Unrecognized sheet type "+f)}s[a]=d;var g=[];i&&i[a]&&je(i[a]).forEach(function(O){var b="";if(i[a][O].Type==ye.CMNT){b=ga(i[a][O].Target,t);var D=G2(rr(e,b,!0),b,c);if(!D||!D.length)return;Hi(d,D,!1)}i[a][O].Type==ye.TCMNT&&(b=ga(i[a][O].Target,t),g=g.concat(Fx(rr(e,b,!0),c)))}),g&&g.length&&Hi(d,g,!0,c.people||[])}catch(O){if(c.WTF)throw O}}function Lr(e){return e.charAt(0)=="/"?e.slice(1):e}function vg(e,t){if(fa(),t=t||{},Un(t),Wr(e,"META-INF/manifest.xml")||Wr(e,"objectdata.xml"))return Zi(e,t);if(Wr(e,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof G0<"u"){if(e.FileIndex)return G0(e);var r=xe.utils.cfb_new();return ci(e).forEach(function(le){Ee(r,le,yo(e,le))}),G0(r)}throw new Error("Unsupported NUMBERS file")}if(!Wr(e,"[Content_Types].xml"))throw Wr(e,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):Wr(e,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var a=ci(e),n=_l(Rr(e,"[Content_Types].xml")),i=!1,s,f;if(n.workbooks.length===0&&(f="xl/workbook.xml",rr(e,f,!0)&&n.workbooks.push(f)),n.workbooks.length===0){if(f="xl/workbook.bin",!rr(e,f,!0))throw new Error("Could not find workbook");n.workbooks.push(f),i=!0}n.workbooks[0].slice(-3)=="bin"&&(i=!0);var c={},o={};if(!t.bookSheets&&!t.bookProps){if(Ta=[],n.sst)try{Ta=V2(rr(e,Lr(n.sst)),n.sst,t)}catch(le){if(t.WTF)throw le}t.cellStyles&&n.themes.length&&(c=H2(Rr(e,n.themes[0].replace(/^\//,""),!0)||"",n.themes[0],t)),n.style&&(o=W2(rr(e,Lr(n.style)),n.style,c,t))}n.links.map(function(le){try{var ie=Ea(Rr(e,Ra(Lr(le))),le);return z2(rr(e,Lr(le)),ie,le,t)}catch{}});var l=P2(rr(e,Lr(n.workbooks[0])),n.workbooks[0],t),u={},x="";n.coreprops.length&&(x=rr(e,Lr(n.coreprops[0]),!0),x&&(u=Js(x)),n.extprops.length!==0&&(x=rr(e,Lr(n.extprops[0]),!0),x&&yl(x,u,t)));var d={};(!t.bookSheets||t.bookProps)&&n.custprops.length!==0&&(x=Rr(e,Lr(n.custprops[0]),!0),x&&(d=Cl(x,t)));var v={};if((t.bookSheets||t.bookProps)&&(l.Sheets?s=l.Sheets.map(function(ie){return ie.name}):u.Worksheets&&u.SheetNames.length>0&&(s=u.SheetNames),t.bookProps&&(v.Props=u,v.Custprops=d),t.bookSheets&&typeof s<"u"&&(v.SheetNames=s),t.bookSheets?v.SheetNames:t.bookProps))return v;s={};var h={};t.bookDeps&&n.calcchain&&(h=X2(rr(e,Lr(n.calcchain)),n.calcchain));var p=0,k={},E,g;{var O=l.Sheets;u.Worksheets=O.length,u.SheetNames=[];for(var b=0;b!=O.length;++b)u.SheetNames[b]=O[b].name}var D=i?"bin":"xml",S=n.workbooks[0].lastIndexOf("/"),B=(n.workbooks[0].slice(0,S+1)+"_rels/"+n.workbooks[0].slice(S+1)+".rels").replace(/^\//,"");Wr(e,B)||(B="xl/_rels/workbook."+D+".rels");var R=Ea(Rr(e,B,!0),B.replace(/_rels.*/,"s5s"));(n.metadata||[]).length>=1&&(t.xlmeta=$2(rr(e,Lr(n.metadata[0])),n.metadata[0],t)),(n.people||[]).length>=1&&(t.people=Ax(rr(e,Lr(n.people[0])),t)),R&&(R=xg(R,l.Sheets));var z=rr(e,"xl/worksheets/sheet.xml",!0)?1:0;e:for(p=0;p!=u.Worksheets;++p){var G="sheet";if(R&&R[p]?(E="xl/"+R[p][1].replace(/[\/]?xl\//,""),Wr(e,E)||(E=R[p][1]),Wr(e,E)||(E=B.replace(/_rels\/.*$/,"")+R[p][1]),G=R[p][2]):(E="xl/worksheets/sheet"+(p+1-z)+"."+D,E=E.replace(/sheet0\./,"sheet.")),g=E.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),t&&t.sheets!=null)switch(typeof t.sheets){case"number":if(p!=t.sheets)continue e;break;case"string":if(u.SheetNames[p].toLowerCase()!=t.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(t.sheets)){for(var L=!1,J=0;J!=t.sheets.length;++J)typeof t.sheets[J]=="number"&&t.sheets[J]==p&&(L=1),typeof t.sheets[J]=="string"&&t.sheets[J].toLowerCase()==u.SheetNames[p].toLowerCase()&&(L=1);if(!L)continue e}}dg(e,E,g,u.SheetNames[p],p,k,s,G,t,l,c,o)}return v={Directory:n,Workbook:l,Props:u,Custprops:d,Deps:h,Sheets:s,SheetNames:u.SheetNames,Strings:Ta,Styles:o,Themes:c,SSF:He(ve)},t&&t.bookFiles&&(e.files?(v.keys=a,v.files=e.files):(v.keys=[],v.files={},e.FullPaths.forEach(function(le,ie){le=le.replace(/^Root Entry[\/]/,""),v.keys.push(le),v.files[le]=e.FileIndex[ie]}))),t&&t.bookVBA&&(n.vba.length>0?v.vbaraw=rr(e,Lr(n.vba[0]),!0):n.defaults&&n.defaults.bin===Px&&(v.vbaraw=rr(e,"xl/vbaProject.bin",!0))),v}function pg(e,t){var r=t||{},a="Workbook",n=xe.find(e,a);try{if(a="/!DataSpaces/Version",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if($h(n.content),a="/!DataSpaces/DataSpaceMap",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var i=jh(n.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+a);if(a="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var s=Yh(n.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+a);if(a="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);qh(n.content)}catch{}if(a="/EncryptionInfo",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);var f=Zh(n.content);if(a="/EncryptedPackage",n=xe.find(e,a),!n||!n.content)throw new Error("ECMA-376 Encrypted file missing "+a);if(f[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(f[1],n.content,r.password||"",r);if(f[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(f[1],n.content,r.password||"",r);throw new Error("File is password-protected")}function mg(e,t){return t.bookType=="ods"?cc(e,t):t.bookType=="numbers"?ug(e,t):t.bookType=="xlsb"?gg(e,t):_g(e,t)}function gg(e,t){Zt=1024,e&&!e.SSF&&(e.SSF=He(ve)),e&&e.SSF&&(fa(),k0(e.SSF),t.revssf=T0(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,Sa?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r=t.bookType=="xlsb"?"bin":"xml",a=Lf.indexOf(t.bookType)>-1,n=Fn();Wn(t=t||{});var i=un(),s="",f=0;if(t.cellXfs=[],At(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",Ee(i,s,qs(e.Props,t)),n.coreprops.push(s),Ne(t.rels,2,s,ye.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],o=0;o<e.SheetNames.length;++o)(e.Workbook.Sheets[o]||{}).Hidden!=2&&c.push(e.SheetNames[o]);e.Props.SheetNames=c}for(e.Props.Worksheets=e.Props.SheetNames.length,Ee(i,s,ef(e.Props)),n.extprops.push(s),Ne(t.rels,3,s,ye.EXT_PROPS),e.Custprops!==e.Props&&je(e.Custprops||{}).length>0&&(s="docProps/custom.xml",Ee(i,s,rf(e.Custprops)),n.custprops.push(s),Ne(t.rels,4,s,ye.CUST_PROPS)),f=1;f<=e.SheetNames.length;++f){var l={"!id":{}},u=e.Sheets[e.SheetNames[f-1]],x=(u||{})["!type"]||"sheet";switch(x){case"chart":default:s="xl/worksheets/sheet"+f+"."+r,Ee(i,s,j2(f-1,s,t,e,l)),n.sheets.push(s),Ne(t.wbrels,-1,"worksheets/sheet"+f+"."+r,ye.WS[0])}if(u){var d=u["!comments"],v=!1,h="";d&&d.length>0&&(h="xl/comments"+f+"."+r,Ee(i,h,q2(d,h)),n.comments.push(h),Ne(l,-1,"../comments"+f+"."+r,ye.CMNT),v=!0),u["!legacy"]&&v&&Ee(i,"xl/drawings/vmlDrawing"+f+".vml",bf(f,u["!comments"])),delete u["!comments"],delete u["!legacy"]}l["!id"].rId1&&Ee(i,Ra(s),ea(l))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,Ee(i,s,J2(t.Strings,s,t)),n.strs.push(s),Ne(t.wbrels,-1,"sharedStrings."+r,ye.SST)),s="xl/workbook."+r,Ee(i,s,K2(e,s)),n.workbooks.push(s),Ne(t.rels,1,s,ye.WB),s="xl/theme/theme1.xml",Ee(i,s,In(e.Themes,t)),n.themes.push(s),Ne(t.wbrels,-1,"theme/theme1.xml",ye.THEME),s="xl/styles."+r,Ee(i,s,Y2(e,s,t)),n.styles.push(s),Ne(t.wbrels,-1,"styles."+r,ye.STY),e.vbaraw&&a&&(s="xl/vbaProject.bin",Ee(i,s,e.vbaraw),n.vba.push(s),Ne(t.wbrels,-1,"vbaProject.bin",ye.VBA)),s="xl/metadata."+r,Ee(i,s,Z2(s)),n.metadata.push(s),Ne(t.wbrels,-1,"metadata."+r,ye.XLMETA),Ee(i,"[Content_Types].xml",js(n,t)),Ee(i,"_rels/.rels",ea(t.rels)),Ee(i,"xl/_rels/workbook."+r+".rels",ea(t.wbrels)),delete t.revssf,delete t.ssf,i}function _g(e,t){Zt=1024,e&&!e.SSF&&(e.SSF=He(ve)),e&&e.SSF&&(fa(),k0(e.SSF),t.revssf=T0(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,Sa?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",a=Lf.indexOf(t.bookType)>-1,n=Fn();Wn(t=t||{});var i=un(),s="",f=0;if(t.cellXfs=[],At(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",Ee(i,s,qs(e.Props,t)),n.coreprops.push(s),Ne(t.rels,2,s,ye.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],o=0;o<e.SheetNames.length;++o)(e.Workbook.Sheets[o]||{}).Hidden!=2&&c.push(e.SheetNames[o]);e.Props.SheetNames=c}e.Props.Worksheets=e.Props.SheetNames.length,Ee(i,s,ef(e.Props)),n.extprops.push(s),Ne(t.rels,3,s,ye.EXT_PROPS),e.Custprops!==e.Props&&je(e.Custprops||{}).length>0&&(s="docProps/custom.xml",Ee(i,s,rf(e.Custprops)),n.custprops.push(s),Ne(t.rels,4,s,ye.CUST_PROPS));var l=["SheetJ5"];for(t.tcid=0,f=1;f<=e.SheetNames.length;++f){var u={"!id":{}},x=e.Sheets[e.SheetNames[f-1]],d=(x||{})["!type"]||"sheet";switch(d){case"chart":default:s="xl/worksheets/sheet"+f+"."+r,Ee(i,s,Kf(f-1,t,e,u)),n.sheets.push(s),Ne(t.wbrels,-1,"worksheets/sheet"+f+"."+r,ye.WS[0])}if(x){var v=x["!comments"],h=!1,p="";if(v&&v.length>0){var k=!1;v.forEach(function(E){E[1].forEach(function(g){g.T==!0&&(k=!0)})}),k&&(p="xl/threadedComments/threadedComment"+f+"."+r,Ee(i,p,yx(v,l,t)),n.threadedcomments.push(p),Ne(u,-1,"../threadedComments/threadedComment"+f+"."+r,ye.TCMNT)),p="xl/comments"+f+"."+r,Ee(i,p,Pf(v)),n.comments.push(p),Ne(u,-1,"../comments"+f+"."+r,ye.CMNT),h=!0}x["!legacy"]&&h&&Ee(i,"xl/drawings/vmlDrawing"+f+".vml",bf(f,x["!comments"])),delete x["!comments"],delete x["!legacy"]}u["!id"].rId1&&Ee(i,Ra(s),ea(u))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,Ee(i,s,Ef(t.Strings,t)),n.strs.push(s),Ne(t.wbrels,-1,"sharedStrings."+r,ye.SST)),s="xl/workbook."+r,Ee(i,s,Zf(e)),n.workbooks.push(s),Ne(t.rels,1,s,ye.WB),s="xl/theme/theme1.xml",Ee(i,s,In(e.Themes,t)),n.themes.push(s),Ne(t.wbrels,-1,"theme/theme1.xml",ye.THEME),s="xl/styles."+r,Ee(i,s,Of(e,t)),n.styles.push(s),Ne(t.wbrels,-1,"styles."+r,ye.STY),e.vbaraw&&a&&(s="xl/vbaProject.bin",Ee(i,s,e.vbaraw),n.vba.push(s),Ne(t.wbrels,-1,"vbaProject.bin",ye.VBA)),s="xl/metadata."+r,Ee(i,s,Nf()),n.metadata.push(s),Ne(t.wbrels,-1,"metadata."+r,ye.XLMETA),l.length>1&&(s="xl/persons/person.xml",Ee(i,s,Cx(l)),n.people.push(s),Ne(t.wbrels,-1,"persons/person.xml",ye.PEOPLE)),Ee(i,"[Content_Types].xml",js(n,t)),Ee(i,"_rels/.rels",ea(t.rels)),Ee(i,"xl/_rels/workbook."+r+".rels",ea(t.wbrels)),delete t.revssf,delete t.ssf,i}function Hn(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=Nr(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function wg(e,t){return xe.find(e,"EncryptedPackage")?pg(e,t):tc(e,t)}function kg(e,t){var r,a=e,n=t||{};return n.type||(n.type=Se&&Buffer.isBuffer(e)?"buffer":"base64"),r=Ts(a,n),vg(r,n)}function lc(e,t){var r=0;e:for(;r<e.length;)switch(e.charCodeAt(r)){case 10:case 13:case 32:++r;break;case 60:return en(e.slice(r),t);default:break e}return na.to_workbook(e,t)}function Eg(e,t){var r="",a=Hn(e,t);switch(t.type){case"base64":r=Nr(e);break;case"binary":r=e;break;case"buffer":r=e.toString("binary");break;case"array":r=Bt(e);break;default:throw new Error("Unrecognized type "+t.type)}return a[0]==239&&a[1]==187&&a[2]==191&&(r=Le(r)),t.type="binary",lc(r,t)}function Tg(e,t){var r=e;return t.type=="base64"&&(r=Nr(r)),r=z0.utils.decode(1200,r.slice(2),"str"),t.type="binary",lc(r,t)}function Sg(e){return e.match(/[^\x00-\x7F]/)?rt(e):e}function X0(e,t,r,a){return a?(r.type="string",na.to_workbook(e,r)):na.to_workbook(t,r)}function g0(e,t){sn();var r=t||{};if(typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer)return g0(new Uint8Array(e),(r=He(r),r.type="array",r));typeof Uint8Array<"u"&&e instanceof Uint8Array&&!r.type&&(r.type=typeof Deno<"u"?"buffer":"array");var a=e,n=[0,0,0,0],i=!1;if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),ta={},r.dateNF&&(ta.dateNF=r.dateNF),r.type||(r.type=Se&&Buffer.isBuffer(e)?"buffer":"base64"),r.type=="file"&&(r.type=Se?"buffer":"binary",a=go(e),typeof Uint8Array<"u"&&!Se&&(r.type="array")),r.type=="string"&&(i=!0,r.type="binary",r.codepage=65001,a=Sg(e)),r.type=="array"&&typeof Uint8Array<"u"&&e instanceof Uint8Array&&typeof ArrayBuffer<"u"){var s=new ArrayBuffer(3),f=new Uint8Array(s);if(f.foo="bar",!f.foo)return r=He(r),r.type="array",g0(fn(a),r)}switch((n=Hn(a,r))[0]){case 208:if(n[1]===207&&n[2]===17&&n[3]===224&&n[4]===161&&n[5]===177&&n[6]===26&&n[7]===225)return wg(xe.read(a,r),r);break;case 9:if(n[1]<=8)return tc(a,r);break;case 60:return en(a,r);case 73:if(n[1]===73&&n[2]===42&&n[3]===0)throw new Error("TIFF Image File is not a spreadsheet");if(n[1]===68)return Dh(a,r);break;case 84:if(n[1]===65&&n[2]===66&&n[3]===76)return wf.to_workbook(a,r);break;case 80:return n[1]===75&&n[2]<9&&n[3]<9?kg(a,r):X0(e,a,r,i);case 239:return n[3]===60?en(a,r):X0(e,a,r,i);case 255:if(n[1]===254)return Tg(a,r);if(n[1]===0&&n[2]===2&&n[3]===0)return bt.to_workbook(a,r);break;case 0:if(n[1]===0&&(n[2]>=2&&n[3]===0||n[2]===0&&(n[3]===8||n[3]===9)))return bt.to_workbook(a,r);break;case 3:case 131:case 139:case 140:return Q0.to_workbook(a,r);case 123:if(n[1]===92&&n[2]===114&&n[3]===116)return Af.to_workbook(a,r);break;case 10:case 13:case 32:return Eg(a,r);case 137:if(n[1]===80&&n[2]===78&&n[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return Ch.indexOf(n[0])>-1&&n[2]<=12&&n[3]<=31?Q0.to_workbook(a,r):X0(e,a,r,i)}function uc(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return Wa(t.file,xe.write(e,{type:Se?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return xe.write(e,t)}function Fg(e,t){var r=He(t||{}),a=mg(e,r);return yg(a,r)}function yg(e,t){var r={},a=Se?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=a;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=a;break;default:throw new Error("Unrecognized type "+t.type)}var n=e.FullPaths?xe.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof n=="string"){if(t.type=="binary"||t.type=="base64")return n;n=new Uint8Array(w0(n))}return t.password&&typeof encrypt_agile<"u"?uc(encrypt_agile(n,t.password),t):t.type==="file"?Wa(t.file,n):t.type=="string"?Le(n):n}function Ag(e,t){var r=t||{},a=Sm(e,r);return uc(a,r)}function et(e,t,r){r||(r="");var a=r+e;switch(t.type){case"base64":return Aa(rt(a));case"binary":return rt(a);case"string":return e;case"file":return Wa(t.file,a,"utf8");case"buffer":return Se?ht(a,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(a):et(a,{type:"binary"}).split("").map(function(n){return n.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function Cg(e,t){switch(t.type){case"base64":return Aa(e);case"binary":return e;case"string":return e;case"file":return Wa(t.file,e,"binary");case"buffer":return Se?ht(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function i0(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",a=0;a<e.length;++a)r+=String.fromCharCode(e[a]);return t.type=="base64"?Aa(r):t.type=="string"?Le(r):r;case"file":return Wa(t.file,e);case"buffer":return e;default:throw new Error("Unrecognized type "+t.type)}}function hc(e,t){sn(),w2(e);var r=He(t||{});if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),r.type=="array"){r.type="binary";var a=hc(e,r);return r.type="array",w0(a)}var n=0;if(r.sheet&&(typeof r.sheet=="number"?n=r.sheet:n=e.SheetNames.indexOf(r.sheet),!e.SheetNames[n]))throw new Error("Sheet not found: "+r.sheet+" : "+typeof r.sheet);switch(r.bookType||"xlsb"){case"xml":case"xlml":return et(mm(e,r),r);case"slk":case"sylk":return et(_f.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"htm":case"html":return et(nc(e.Sheets[e.SheetNames[n]],r),r);case"txt":return Cg(xc(e.Sheets[e.SheetNames[n]],r),r);case"csv":return et(Vn(e.Sheets[e.SheetNames[n]],r),r,"\uFEFF");case"dif":return et(wf.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"dbf":return i0(Q0.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"prn":return et(na.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"rtf":return et(Af.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"eth":return et(kf.from_sheet(e.Sheets[e.SheetNames[n]],r),r);case"fods":return et(cc(e,r),r);case"wk1":return i0(bt.sheet_to_wk1(e.Sheets[e.SheetNames[n]],r),r);case"wk3":return i0(bt.book_to_wk3(e,r),r);case"biff2":r.biff||(r.biff=2);case"biff3":r.biff||(r.biff=3);case"biff4":return r.biff||(r.biff=4),i0(ac(e,r),r);case"biff5":r.biff||(r.biff=5);case"biff8":case"xla":case"xls":return r.biff||(r.biff=8),Ag(e,r);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"numbers":case"ods":return Fg(e,r);default:throw new Error("Unrecognized bookType |"+r.bookType+"|")}}function Dg(e){if(!e.bookType){var t={xls:"biff8",htm:"html",slk:"sylk",socialcalc:"eth",Sh33tJS:"WTF"},r=e.file.slice(e.file.lastIndexOf(".")).toLowerCase();r.match(/^\.[a-z]+$/)&&(e.bookType=r.slice(1)),e.bookType=t[e.bookType]||e.bookType}}function Og(e,t,r){var a={};return a.type="file",a.file=t,Dg(a),hc(e,a)}function Ig(e,t,r,a,n,i,s,f){var c=Ze(r),o=f.defval,l=f.raw||!Object.prototype.hasOwnProperty.call(f,"raw"),u=!0,x=n===1?[]:{};if(n!==1)if(Object.defineProperty)try{Object.defineProperty(x,"__rowNum__",{value:r,enumerable:!1})}catch{x.__rowNum__=r}else x.__rowNum__=r;if(!s||e[r])for(var d=t.s.c;d<=t.e.c;++d){var v=s?e[r][d]:e[a[d]+c];if(v===void 0||v.t===void 0){if(o===void 0)continue;i[d]!=null&&(x[i[d]]=o);continue}var h=v.v;switch(v.t){case"z":if(h==null)break;continue;case"e":h=h==0?null:void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+v.t)}if(i[d]!=null){if(h==null)if(v.t=="e"&&h===null)x[i[d]]=null;else if(o!==void 0)x[i[d]]=o;else if(l&&h===null)x[i[d]]=null;else continue;else x[i[d]]=l&&(v.t!=="n"||v.t==="n"&&f.rawNumbers!==!1)?h:ut(v,h,f);h!=null&&(u=!1)}}return{row:x,isempty:u}}function _0(e,t){if(e==null||e["!ref"]==null)return[];var r={t:"n",v:0},a=0,n=1,i=[],s=0,f="",c={s:{r:0,c:0},e:{r:0,c:0}},o=t||{},l=o.range!=null?o.range:e["!ref"];switch(o.header===1?a=1:o.header==="A"?a=2:Array.isArray(o.header)?a=3:o.header==null&&(a=0),typeof l){case"string":c=Oe(l);break;case"number":c=Oe(e["!ref"]),c.s.r=l;break;default:c=l}a>0&&(n=0);var u=Ze(c.s.r),x=[],d=[],v=0,h=0,p=Array.isArray(e),k=c.s.r,E=0,g={};p&&!e[k]&&(e[k]=[]);var O=o.skipHidden&&e["!cols"]||[],b=o.skipHidden&&e["!rows"]||[];for(E=c.s.c;E<=c.e.c;++E)if(!(O[E]||{}).hidden)switch(x[E]=Xe(E),r=p?e[k][E]:e[x[E]+u],a){case 1:i[E]=E-c.s.c;break;case 2:i[E]=x[E];break;case 3:i[E]=o.header[E-c.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),f=s=ut(r,null,o),h=g[s]||0,!h)g[s]=1;else{do f=s+"_"+h++;while(g[f]);g[s]=h,g[f]=1}i[E]=f}for(k=c.s.r+n;k<=c.e.r;++k)if(!(b[k]||{}).hidden){var D=Ig(e,c,k,x,a,i,p,o);(D.isempty===!1||(a===1?o.blankrows!==!1:o.blankrows))&&(d[v++]=D.row)}return d.length=v,d}var as=/"/g;function Rg(e,t,r,a,n,i,s,f){for(var c=!0,o=[],l="",u=Ze(r),x=t.s.c;x<=t.e.c;++x)if(a[x]){var d=f.dense?(e[r]||[])[x]:e[a[x]+u];if(d==null)l="";else if(d.v!=null){c=!1,l=""+(f.rawNumbers&&d.t=="n"?d.v:ut(d,null,f));for(var v=0,h=0;v!==l.length;++v)if((h=l.charCodeAt(v))===n||h===i||h===34||f.forceQuotes){l='"'+l.replace(as,'""')+'"';break}l=="ID"&&(l='"ID"')}else d.f!=null&&!d.F?(c=!1,l="="+d.f,l.indexOf(",")>=0&&(l='"'+l.replace(as,'""')+'"')):l="";o.push(l)}return f.blankrows===!1&&c?null:o.join(s)}function Vn(e,t){var r=[],a=t??{};if(e==null||e["!ref"]==null)return"";var n=Oe(e["!ref"]),i=a.FS!==void 0?a.FS:",",s=i.charCodeAt(0),f=a.RS!==void 0?a.RS:`
103
103
  `,c=f.charCodeAt(0),o=new RegExp((i=="|"?"\\|":i)+"+$"),l="",u=[];a.dense=Array.isArray(e);for(var x=a.skipHidden&&e["!cols"]||[],d=a.skipHidden&&e["!rows"]||[],v=n.s.c;v<=n.e.c;++v)(x[v]||{}).hidden||(u[v]=Xe(v));for(var h=0,p=n.s.r;p<=n.e.r;++p)(d[p]||{}).hidden||(l=Rg(e,n,p,u,s,c,i,a),l!=null&&(a.strip&&(l=l.replace(o,"")),(l||a.blankrows!==!1)&&r.push((h++?f:"")+l)));return delete a.dense,r.join("")}function xc(e,t){t||(t={}),t.FS=" ",t.RS=`
104
- `;var r=Vn(e,t);return r}function Ng(e){var t="",r,a="";if(e==null||e["!ref"]==null)return[];var n=Oe(e["!ref"]),i="",s=[],f,c=[],o=Array.isArray(e);for(f=n.s.c;f<=n.e.c;++f)s[f]=Xe(f);for(var l=n.s.r;l<=n.e.r;++l)for(i=Ze(l),f=n.s.c;f<=n.e.c;++f)if(t=s[f]+i,r=o?(e[l]||[])[f]:e[t],a="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;a=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)a=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)a=""+r.v;else if(r.t=="b")a=r.v?"TRUE":"FALSE";else if(r.w!==void 0)a="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?a="'"+r.v:a=""+r.v}}c[c.length]=t+"="+a}return c}function dc(e,t,r){var a=r||{},n=+!a.skipHeader,i=e||{},s=0,f=0;if(i&&a.origin!=null)if(typeof a.origin=="number")s=a.origin;else{var c=typeof a.origin=="string"?ze(a.origin):a.origin;s=c.r,f=c.c}var o,l={s:{c:0,r:0},e:{c:f,r:s+t.length-1+n}};if(i["!ref"]){var u=Oe(i["!ref"]);l.e.c=Math.max(l.e.c,u.e.c),l.e.r=Math.max(l.e.r,u.e.r),s==-1&&(s=u.e.r+1,l.e.r=s+t.length-1+n)}else s==-1&&(s=0,l.e.r=t.length-1+n);var x=a.header||[],d=0;t.forEach(function(h,p){je(h).forEach(function(k){(d=x.indexOf(k))==-1&&(x[d=x.length]=k);var E=h[k],g="z",O="",b=me({c:f+d,r:s+p+n});o=Ua(i,b),E&&typeof E=="object"&&!(E instanceof Date)?i[b]=E:(typeof E=="number"?g="n":typeof E=="boolean"?g="b":typeof E=="string"?g="s":E instanceof Date?(g="d",a.cellDates||(g="n",E=ir(E)),O=a.dateNF||ve[14]):E===null&&a.nullError&&(g="e",E=0),o?(o.t=g,o.v=E,delete o.w,delete o.R,O&&(o.z=O)):i[b]=o={t:g,v:E},O&&(o.z=O))})}),l.e.c=Math.max(l.e.c,f+x.length-1);var v=Ze(s);if(n)for(d=0;d<x.length;++d)i[Xe(d+f)+v]={t:"s",v:x[d]};return i["!ref"]=ke(l),i}function bg(e,t){return dc(null,e,t)}function Ua(e,t,r){if(typeof t=="string"){if(Array.isArray(e)){var a=ze(t);return e[a.r]||(e[a.r]=[]),e[a.r][a.c]||(e[a.r][a.c]={t:"z"})}return e[t]||(e[t]={t:"z"})}return typeof t!="number"?Ua(e,me(t)):Ua(e,me({r:t,c:r||0}))}function Pg(e,t){if(typeof t=="number"){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function Gn(){return{SheetNames:[],Sheets:{}}}function Xn(e,t,r,a){var n=1;if(!r)for(;n<=65535&&e.SheetNames.indexOf(r="Sheet"+n)!=-1;++n,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(a&&e.SheetNames.indexOf(r)>=0){var i=r.match(/(^.*?)(\d+)$/);n=i&&+i[2]||0;var s=i&&i[1]||r;for(++n;n<=65535&&e.SheetNames.indexOf(r=s+n)!=-1;++n);}if(qf(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function Lg(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var a=Pg(e,t);switch(e.Workbook.Sheets[a]||(e.Workbook.Sheets[a]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[a].Hidden=r}function Bg(e,t){return e.z=t,e}function vc(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function Mg(e,t,r){return vc(e,"#"+t,r)}function Ug(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function Wg(e,t,r,a){for(var n=typeof t!="string"?t:Oe(t),i=typeof t=="string"?t:ke(t),s=n.s.r;s<=n.e.r;++s)for(var f=n.s.c;f<=n.e.c;++f){var c=Ua(e,s,f);c.t="n",c.F=i,delete c.v,s==n.s.r&&f==n.s.c&&(c.f=r,a&&(c.D=!0))}return e}var pc={encode_col:Xe,encode_row:Ze,encode_cell:me,encode_range:ke,decode_col:_n,decode_row:gn,split_cell:Jo,decode_cell:ze,decode_range:Ar,format_cell:ut,sheet_add_aoa:Hs,sheet_add_json:dc,sheet_add_dom:ic,aoa_to_sheet:ca,json_to_sheet:bg,table_to_sheet:sc,table_to_book:$m,sheet_to_csv:Vn,sheet_to_txt:xc,sheet_to_json:_0,sheet_to_html:nc,sheet_to_formulae:Ng,sheet_to_row_object_array:_0,sheet_get_cell:Ua,book_new:Gn,book_append_sheet:Xn,book_set_sheet_visibility:Lg,cell_set_number_format:Bg,cell_set_hyperlink:vc,cell_set_internal_link:Mg,cell_add_comment:Ug,sheet_set_array_formula:Wg,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function Hg(e){try{return new URL(e).protocol==="http:"}catch{return!1}}function Vg(e){try{return new URL(e).protocol==="https:"}catch{return!1}}function Gg(e){try{return new URL(e).protocol==="blob:"}catch{return!1}}function mc(e){try{const t=new URL(e).pathname,r=t.substring(t.lastIndexOf("/")+1);return decodeURIComponent(r)}catch(t){return console.error("无法解析URL以提取文件名:",e,t),"未知文件名"}}function Xg(e){if(!e)return;const t=e.match(/filename\*\s*=\s*([^;]+)/i);if(t){let a=t[1].trim();a=a.replace(/^"(.*)"$/,"$1");const n=a.split("''");if(n.length===2){const i=n[0].toUpperCase(),s=n[1];try{if(i==="UTF-8")return decodeURIComponent(s)}catch{}return s}try{return decodeURIComponent(a)}catch{return a}}const r=e.match(/filename\s*=\s*("?)([^";]+)\1/i);if(r)return r[2].trim()}const zg=e=>{const t=e==null?void 0:e.toLowerCase(),r=t==null?void 0:t.lastIndexOf(".");let a=t;return r>=0&&(a=a==null?void 0:a.slice(r+1)),a};async function gc(e){let t,r;if(Vg(e)||Hg(e)||Gg(e))try{const a=await fetch(e,{method:"GET",cache:"no-store"});if(!a.ok)throw new Error(`下载文件失败: ${a.statusText} (URL: ${e})`);t=await a.blob(),r=mc(e)}catch(a){throw console.error("使用 fetch 下载文件时出错:",a),a}else try{const a=await is({url:e});if(a.status!==200)throw new Error(`下载失败: ${a.status}`);const n=a.headers["content-disposition"];r=Xg(n)||"无文件名",t=a.data}catch(a){throw console.error("通过 API 下载文件时出错:",a),a}return new File([t],r,{type:t.type})}function $g(e){return new Promise((t,r)=>{const a=new FileReader;a.onload=n=>{var i;try{const s=(i=n.target)==null?void 0:i.result,f=g0(s,{type:"array"}),c=f.Sheets[f.SheetNames[0]],o=pc.sheet_to_json(c);t(o)}catch(s){r(s)}},a.readAsArrayBuffer(e)})}const Kg=e=>new Promise(async(t,r)=>{const i=await(await fetch(e)).blob(),s=new FileReader;s.onload=function(f){var c;t((c=f.target)==null?void 0:c.result)},s.onerror=f=>{const{error:c}=s;r(c==null?void 0:c.message)},s.readAsText(i)}),jg=e=>{if(e==null||!isFinite(e))return"";const t=e/(1024*1024);if(t>=1)return`${t.toFixed(1)} MB`;const r=e/1024;return r>=1?`${r.toFixed(1)} KB`:`${e} B`},_c=wt.defineStore("threeState",{state:()=>({data:{extension:"",url:[],data:{},isThreeScene:!0}}),actions:{setData(e){this.data=e},getData(){return this.data}}});function wc(){const e=ns.useMenuState(wt.pinia),{platform:t}=wt.storeToRefs(e),r=_c(wt.pinia),a=pe.computed(()=>{var E;return(E=r==null?void 0:r.data)==null?void 0:E.extension}),n=["uv","cpt","cyd","nc"],i=["urdf"],s=["obj","stl"],f=[...n,...i,...s],c=E=>{if(!l())throw new Error("不是三维系统");r.setData(E)},o=()=>r.getData(),l=()=>t.value==="three",u=E=>{const g=E==null?void 0:E.toLowerCase(),O=g==null?void 0:g.lastIndexOf(".");let b=g;return O>=0&&(b=b==null?void 0:b.slice(O+1)),b},x=E=>{if(!E)return!1;const g=u(E);return f==null?void 0:f.includes(g)};return{getData:o,setData:c,isThreeSystem:l,isUrdf:E=>{if(!E)return!1;const g=u(E);return i==null?void 0:i.includes(g)},isGeneralFile:E=>{if(!E)return!1;const g=u(E);return s==null?void 0:s.includes(g)},isTrackPathFile:E=>{if(!E)return!1;const g=u(E);return n==null?void 0:n.includes(g)},isThreeFile:x,isUseBackdrop:E=>l()&&x(E),initTrackFileType:E=>{if(!E)return{isCpt:!1,isCyd:!1,isUv:!1,isNc:!1};const g=u(E),O=n==null?void 0:n.find(D=>D===g);return{isCpt:O==="cpt",isCyd:O==="cyd",isUv:O==="uv",isNc:O==="nc"}},getFileExtension:u,extraExtension:a}}const Yg={class:"top-menu"},Jg={key:4,class:"loading"},qg=pe.defineComponent({__name:"threeViewerHost",props:{fileUrls:{default:()=>[]},host:{default:"inline"},extension:{},animationData:{default:()=>({})},width:{default:"100%"},height:{default:"100%"},threeData:{},componentType:{}},emits:["getThreeData"],setup(e,{emit:t}){const r=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeSceneView-EIPGJRbv.cjs"))),a=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threePreview-B9kbeN1y.cjs"))),n=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeTrackPathView-WLhJTcJd.cjs"))),i=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeSceneViewForCPMPIP-BxakXYgn.cjs"))),s={ROBOT_SCENE:"robot",LATHE_SCENE:"latheScene",CPMPIP_SCENE:"cpmpip",PREVIEW:"preview"},f=e,c=ns.useMenuState(wt.pinia),{platName:o}=wt.storeToRefs(c),{isGeneralFile:l,isUrdf:u,isTrackPathFile:x,extraExtension:d}=wc(),v=pe.computed(()=>(f==null?void 0:f.extension)||d.value),h=pe.computed(()=>{var D,S;return(S=(D=f==null?void 0:f.threeData)==null?void 0:D.data)==null?void 0:S.trackFileType}),p=pe.computed(()=>{var S;if(f.componentType)switch(f.componentType){case"robot":return s.ROBOT_SCENE;case"latheScene":return s.LATHE_SCENE;case"cpmpip":return s.CPMPIP_SCENE;case"preview":return s.PREVIEW}const D=(S=f==null?void 0:f.fileUrls)==null?void 0:S[0];return l(D)?s.PREVIEW:(o==null?void 0:o.value)==="CPMPIP"&&(u(D)||u(v.value))?s.CPMPIP_SCENE:(o==null?void 0:o.value)==="SFRTubeBend"&&(u(D)||u(v.value))?s.ROBOT_SCENE:x(v.value)&&h.value?s.LATHE_SCENE:s.PREVIEW}),k=t,E=pe.ref([]),g=pe.ref(!1);async function O(D){if(!D||!D.length){E.value=[];return}g.value=!0;try{const S=await Promise.all(D.map(B=>gc(B)));E.value=S}catch(S){console.error("文件下载时发生错误:",S),E.value=[]}finally{g.value=!1}}const b=()=>{k("getThreeData")};return pe.watch(()=>f.fileUrls,async D=>{await O(D??[])},{immediate:!0,deep:!0}),(D,S)=>(pe.openBlock(),pe.createElementBlock("div",{class:pe.normalizeClass([f.host==="electron"?"mv-electron":"mv-inline","three-platform"])},[pe.createElementVNode("div",Yg,[pe.renderSlot(D.$slots,"top-menu",{},void 0,!0)]),p.value===s.ROBOT_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(r),{key:0,fileBlobs:E.value,"animation-data":D.animationData,onGetThreeData:b,threeData:f.threeData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","animation-data","threeData"])):p.value===s.LATHE_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(n),{key:1,fileBlobs:E.value,threeData:f.threeData,trackFileType:h.value},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","threeData","trackFileType"])):p.value===s.CPMPIP_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(i),{key:2,fileBlobs:E.value,threeData:f.threeData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","threeData"])):p.value===s.PREVIEW?(pe.openBlock(),pe.createBlock(pe.unref(a),{key:3,fileBlobs:E.value,"animation-data":D.animationData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","animation-data"])):pe.createCommentVNode("",!0),g.value?(pe.openBlock(),pe.createElementBlock("div",Jg," 文件下载中,请稍候... ")):pe.createCommentVNode("",!0)],2))}}),kc=Bc._export_sfc(qg,[["__scopeId","data-v-c347e022"]]),Zg=Object.freeze(Object.defineProperty({__proto__:null,default:kc},Symbol.toStringTag,{value:"Module"}));exports.ThreeViewerHost=kc;exports.downloadAvatarApi=is;exports.downloadFile=gc;exports.formatBytes=jg;exports.getFileExtension=zg;exports.getFilenameFromUrl=mc;exports.readCsv=$g;exports.readFileText=Kg;exports.readSync=g0;exports.threeViewerHost=Zg;exports.uploadFile=Mc;exports.useThreeState=_c;exports.useThreeSystem=wc;exports.utils=pc;exports.writeFileSync=Og;
104
+ `;var r=Vn(e,t);return r}function Ng(e){var t="",r,a="";if(e==null||e["!ref"]==null)return[];var n=Oe(e["!ref"]),i="",s=[],f,c=[],o=Array.isArray(e);for(f=n.s.c;f<=n.e.c;++f)s[f]=Xe(f);for(var l=n.s.r;l<=n.e.r;++l)for(i=Ze(l),f=n.s.c;f<=n.e.c;++f)if(t=s[f]+i,r=o?(e[l]||[])[f]:e[t],a="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;a=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)a=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)a=""+r.v;else if(r.t=="b")a=r.v?"TRUE":"FALSE";else if(r.w!==void 0)a="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?a="'"+r.v:a=""+r.v}}c[c.length]=t+"="+a}return c}function dc(e,t,r){var a=r||{},n=+!a.skipHeader,i=e||{},s=0,f=0;if(i&&a.origin!=null)if(typeof a.origin=="number")s=a.origin;else{var c=typeof a.origin=="string"?ze(a.origin):a.origin;s=c.r,f=c.c}var o,l={s:{c:0,r:0},e:{c:f,r:s+t.length-1+n}};if(i["!ref"]){var u=Oe(i["!ref"]);l.e.c=Math.max(l.e.c,u.e.c),l.e.r=Math.max(l.e.r,u.e.r),s==-1&&(s=u.e.r+1,l.e.r=s+t.length-1+n)}else s==-1&&(s=0,l.e.r=t.length-1+n);var x=a.header||[],d=0;t.forEach(function(h,p){je(h).forEach(function(k){(d=x.indexOf(k))==-1&&(x[d=x.length]=k);var E=h[k],g="z",O="",b=me({c:f+d,r:s+p+n});o=Ua(i,b),E&&typeof E=="object"&&!(E instanceof Date)?i[b]=E:(typeof E=="number"?g="n":typeof E=="boolean"?g="b":typeof E=="string"?g="s":E instanceof Date?(g="d",a.cellDates||(g="n",E=ir(E)),O=a.dateNF||ve[14]):E===null&&a.nullError&&(g="e",E=0),o?(o.t=g,o.v=E,delete o.w,delete o.R,O&&(o.z=O)):i[b]=o={t:g,v:E},O&&(o.z=O))})}),l.e.c=Math.max(l.e.c,f+x.length-1);var v=Ze(s);if(n)for(d=0;d<x.length;++d)i[Xe(d+f)+v]={t:"s",v:x[d]};return i["!ref"]=ke(l),i}function bg(e,t){return dc(null,e,t)}function Ua(e,t,r){if(typeof t=="string"){if(Array.isArray(e)){var a=ze(t);return e[a.r]||(e[a.r]=[]),e[a.r][a.c]||(e[a.r][a.c]={t:"z"})}return e[t]||(e[t]={t:"z"})}return typeof t!="number"?Ua(e,me(t)):Ua(e,me({r:t,c:r||0}))}function Pg(e,t){if(typeof t=="number"){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function Gn(){return{SheetNames:[],Sheets:{}}}function Xn(e,t,r,a){var n=1;if(!r)for(;n<=65535&&e.SheetNames.indexOf(r="Sheet"+n)!=-1;++n,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(a&&e.SheetNames.indexOf(r)>=0){var i=r.match(/(^.*?)(\d+)$/);n=i&&+i[2]||0;var s=i&&i[1]||r;for(++n;n<=65535&&e.SheetNames.indexOf(r=s+n)!=-1;++n);}if(qf(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function Lg(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var a=Pg(e,t);switch(e.Workbook.Sheets[a]||(e.Workbook.Sheets[a]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[a].Hidden=r}function Bg(e,t){return e.z=t,e}function vc(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function Mg(e,t,r){return vc(e,"#"+t,r)}function Ug(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function Wg(e,t,r,a){for(var n=typeof t!="string"?t:Oe(t),i=typeof t=="string"?t:ke(t),s=n.s.r;s<=n.e.r;++s)for(var f=n.s.c;f<=n.e.c;++f){var c=Ua(e,s,f);c.t="n",c.F=i,delete c.v,s==n.s.r&&f==n.s.c&&(c.f=r,a&&(c.D=!0))}return e}var pc={encode_col:Xe,encode_row:Ze,encode_cell:me,encode_range:ke,decode_col:_n,decode_row:gn,split_cell:Jo,decode_cell:ze,decode_range:Ar,format_cell:ut,sheet_add_aoa:Hs,sheet_add_json:dc,sheet_add_dom:ic,aoa_to_sheet:ca,json_to_sheet:bg,table_to_sheet:sc,table_to_book:$m,sheet_to_csv:Vn,sheet_to_txt:xc,sheet_to_json:_0,sheet_to_html:nc,sheet_to_formulae:Ng,sheet_to_row_object_array:_0,sheet_get_cell:Ua,book_new:Gn,book_append_sheet:Xn,book_set_sheet_visibility:Lg,cell_set_number_format:Bg,cell_set_hyperlink:vc,cell_set_internal_link:Mg,cell_add_comment:Ug,sheet_set_array_formula:Wg,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function Hg(e){try{return new URL(e).protocol==="http:"}catch{return!1}}function Vg(e){try{return new URL(e).protocol==="https:"}catch{return!1}}function Gg(e){try{return new URL(e).protocol==="blob:"}catch{return!1}}function mc(e){try{const t=new URL(e).pathname,r=t.substring(t.lastIndexOf("/")+1);return decodeURIComponent(r)}catch(t){return console.error("无法解析URL以提取文件名:",e,t),"未知文件名"}}function Xg(e){if(!e)return;const t=e.match(/filename\*\s*=\s*([^;]+)/i);if(t){let a=t[1].trim();a=a.replace(/^"(.*)"$/,"$1");const n=a.split("''");if(n.length===2){const i=n[0].toUpperCase(),s=n[1];try{if(i==="UTF-8")return decodeURIComponent(s)}catch{}return s}try{return decodeURIComponent(a)}catch{return a}}const r=e.match(/filename\s*=\s*("?)([^";]+)\1/i);if(r)return r[2].trim()}const zg=e=>{const t=e==null?void 0:e.toLowerCase(),r=t==null?void 0:t.lastIndexOf(".");let a=t;return r>=0&&(a=a==null?void 0:a.slice(r+1)),a};async function gc(e){let t,r;if(Vg(e)||Hg(e)||Gg(e))try{const a=await fetch(e,{method:"GET",cache:"no-store"});if(!a.ok)throw new Error(`下载文件失败: ${a.statusText} (URL: ${e})`);t=await a.blob(),r=mc(e)}catch(a){throw console.error("使用 fetch 下载文件时出错:",a),a}else try{const a=await is({url:e});if(a.status!==200)throw new Error(`下载失败: ${a.status}`);const n=a.headers["content-disposition"];r=Xg(n)||"无文件名",t=a.data}catch(a){throw console.error("通过 API 下载文件时出错:",a),a}return new File([t],r,{type:t.type})}function $g(e){return new Promise((t,r)=>{const a=new FileReader;a.onload=n=>{var i;try{const s=(i=n.target)==null?void 0:i.result,f=g0(s,{type:"array"}),c=f.Sheets[f.SheetNames[0]],o=pc.sheet_to_json(c);t(o)}catch(s){r(s)}},a.readAsArrayBuffer(e)})}const Kg=e=>new Promise(async(t,r)=>{const i=await(await fetch(e)).blob(),s=new FileReader;s.onload=function(f){var c;t((c=f.target)==null?void 0:c.result)},s.onerror=f=>{const{error:c}=s;r(c==null?void 0:c.message)},s.readAsText(i)}),jg=e=>{if(e==null||!isFinite(e))return"";const t=e/(1024*1024);if(t>=1)return`${t.toFixed(1)} MB`;const r=e/1024;return r>=1?`${r.toFixed(1)} KB`:`${e} B`},_c=wt.defineStore("threeState",{state:()=>({data:{extension:"",url:[],data:{},isThreeScene:!0}}),actions:{setData(e){this.data=e},getData(){return this.data}}});function wc(){const e=ns.useMenuState(wt.pinia),{platform:t}=wt.storeToRefs(e),r=_c(wt.pinia),a=pe.computed(()=>{var E;return(E=r==null?void 0:r.data)==null?void 0:E.extension}),n=["uv","cpt","cyd","nc"],i=["urdf"],s=["obj","stl"],f=[...n,...i,...s],c=E=>{if(!l())throw new Error("不是三维系统");r.setData(E)},o=()=>r.getData(),l=()=>t.value==="three",u=E=>{const g=E==null?void 0:E.toLowerCase(),O=g==null?void 0:g.lastIndexOf(".");let b=g;return O>=0&&(b=b==null?void 0:b.slice(O+1)),b},x=E=>{if(!E)return!1;const g=u(E);return f==null?void 0:f.includes(g)};return{getData:o,setData:c,isThreeSystem:l,isUrdf:E=>{if(!E)return!1;const g=u(E);return i==null?void 0:i.includes(g)},isGeneralFile:E=>{if(!E)return!1;const g=u(E);return s==null?void 0:s.includes(g)},isTrackPathFile:E=>{if(!E)return!1;const g=u(E);return n==null?void 0:n.includes(g)},isThreeFile:x,isUseBackdrop:E=>l()&&x(E),initTrackFileType:E=>{if(!E)return{isCpt:!1,isCyd:!1,isUv:!1,isNc:!1};const g=u(E),O=n==null?void 0:n.find(D=>D===g);return{isCpt:O==="cpt",isCyd:O==="cyd",isUv:O==="uv",isNc:O==="nc"}},getFileExtension:u,extraExtension:a}}const Yg={class:"top-menu"},Jg={key:4,class:"loading"},qg=pe.defineComponent({__name:"threeViewerHost",props:{fileUrls:{default:()=>[]},host:{default:"inline"},extension:{},animationData:{default:()=>({})},width:{default:"100%"},height:{default:"100%"},threeData:{},componentType:{}},emits:["getThreeData"],setup(e,{emit:t}){const r=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeSceneView-CaHI2V82.cjs"))),a=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threePreview-QIurmOdU.cjs"))),n=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeTrackPathView-CF9ierHN.cjs"))),i=pe.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./threeSceneViewForCPMPIP-DbvRq5YC.cjs"))),s={ROBOT_SCENE:"robot",LATHE_SCENE:"latheScene",CPMPIP_SCENE:"cpmpip",PREVIEW:"preview"},f=e,c=ns.useMenuState(wt.pinia),{platName:o}=wt.storeToRefs(c),{isGeneralFile:l,isUrdf:u,isTrackPathFile:x,extraExtension:d}=wc(),v=pe.computed(()=>(f==null?void 0:f.extension)||d.value),h=pe.computed(()=>{var D,S;return(S=(D=f==null?void 0:f.threeData)==null?void 0:D.data)==null?void 0:S.trackFileType}),p=pe.computed(()=>{var S;if(f.componentType)switch(f.componentType){case"robot":return s.ROBOT_SCENE;case"latheScene":return s.LATHE_SCENE;case"cpmpip":return s.CPMPIP_SCENE;case"preview":return s.PREVIEW}const D=(S=f==null?void 0:f.fileUrls)==null?void 0:S[0];return l(D)?s.PREVIEW:(o==null?void 0:o.value)==="CPMPIP"&&(u(D)||u(v.value))?s.CPMPIP_SCENE:(o==null?void 0:o.value)==="SFRTubeBend"&&(u(D)||u(v.value))?s.ROBOT_SCENE:x(v.value)&&h.value?s.LATHE_SCENE:s.PREVIEW}),k=t,E=pe.ref([]),g=pe.ref(!1);async function O(D){if(!D||!D.length){E.value=[];return}g.value=!0;try{const S=await Promise.all(D.map(B=>gc(B)));E.value=S}catch(S){console.error("文件下载时发生错误:",S),E.value=[]}finally{g.value=!1}}const b=()=>{k("getThreeData")};return pe.watch(()=>f.fileUrls,async D=>{await O(D??[])},{immediate:!0,deep:!0}),(D,S)=>(pe.openBlock(),pe.createElementBlock("div",{class:pe.normalizeClass([f.host==="electron"?"mv-electron":"mv-inline","three-platform"])},[pe.createElementVNode("div",Yg,[pe.renderSlot(D.$slots,"top-menu",{},void 0,!0)]),p.value===s.ROBOT_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(r),{key:0,fileBlobs:E.value,"animation-data":D.animationData,onGetThreeData:b,threeData:f.threeData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","animation-data","threeData"])):p.value===s.LATHE_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(n),{key:1,fileBlobs:E.value,threeData:f.threeData,trackFileType:h.value},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","threeData","trackFileType"])):p.value===s.CPMPIP_SCENE?(pe.openBlock(),pe.createBlock(pe.unref(i),{key:2,fileBlobs:E.value,threeData:f.threeData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","threeData"])):p.value===s.PREVIEW?(pe.openBlock(),pe.createBlock(pe.unref(a),{key:3,fileBlobs:E.value,"animation-data":D.animationData},{"button-left":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-menu",{},void 0,!0)]),"button-right":pe.withCtx(()=>[pe.renderSlot(D.$slots,"management-page",{},void 0,!0)]),_:3},8,["fileBlobs","animation-data"])):pe.createCommentVNode("",!0),g.value?(pe.openBlock(),pe.createElementBlock("div",Jg," 文件下载中,请稍候... ")):pe.createCommentVNode("",!0)],2))}}),kc=Bc._export_sfc(qg,[["__scopeId","data-v-c347e022"]]),Zg=Object.freeze(Object.defineProperty({__proto__:null,default:kc},Symbol.toStringTag,{value:"Module"}));exports.ThreeViewerHost=kc;exports.downloadAvatarApi=is;exports.downloadFile=gc;exports.formatBytes=jg;exports.getFileExtension=zg;exports.getFilenameFromUrl=mc;exports.readCsv=$g;exports.readFileText=Kg;exports.readSync=g0;exports.threeViewerHost=Zg;exports.uploadFile=Mc;exports.useThreeState=_c;exports.useThreeSystem=wc;exports.utils=pc;exports.writeFileSync=Og;
@@ -1,9 +1,9 @@
1
1
  var ce = Object.defineProperty;
2
2
  var de = (b, l, o) => l in b ? ce(b, l, { enumerable: !0, configurable: !0, writable: !0, value: o }) : b[l] = o;
3
3
  var E = (b, l, o) => de(b, typeof l != "symbol" ? l + "" : l, o);
4
- import { U as me } from "./index.vue_vue_type_style_index_1_lang-C-2EhQeU.js";
4
+ import { U as me } from "./index.vue_vue_type_style_index_1_lang-CDl_PU-6.js";
5
5
  import { S as ve, M as pe, O as fe } from "./MTLLoader-B5xRp-vz.js";
6
- import { f as re, h as F } from "./threeViewerHost-5yvNo1Ub.js";
6
+ import { f as re, h as F } from "./threeViewerHost-CeTJmyoE.js";
7
7
  import { a_ as be, u as J, o as we, k as he, B as _e, a$ as ge, Y as ye, V as Le } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DEgtwZwW.js";
8
8
  import { ref as T, defineComponent as je, computed as M, watch as ue, resolveComponent as x, createElementBlock as k, openBlock as P, createVNode as S, createElementVNode as c, withCtx as O, createTextVNode as D, toDisplayString as $ } from "vue";
9
9
  import { c as Re, e as Se, g as Ue } from "./iconfont-DN8mra_i.js";
@@ -1 +1 @@
1
- "use strict";var te=Object.defineProperty;var oe=(b,n,o)=>n in b?te(b,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):b[n]=o;var j=(b,n,o)=>oe(b,typeof n!="symbol"?n+"":n,o);const se=require("./index.vue_vue_type_style_index_1_lang-Xo4JSq-J.cjs"),U=require("./MTLLoader-D80GV1WB.cjs"),C=require("./threeViewerHost-Ym_dg2DG.cjs"),R=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-QzgaFA5S.cjs"),e=require("vue"),D=require("./iconfont-0T5xTLj8.cjs"),le=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),re="http://222.92.178.198:60000/chfs/shared/Insofrobot/urdf";function ne(b){const{mtlUrl:n,manager:o,resourcePath:l,onLoad:m,onProgress:r,onError:w}=b,p=new U.MTLLoader(o);return l&&p.setResourcePath(l),p.load(n,m,r,w),p}function ie(b){const{objUrl:n,manager:o,materials:l,onLoad:m,onProgress:r,onError:w}=b,p=new U.OBJLoader(o);return l&&p.setMaterials(l),p.load(n,m,r,w),p}function ae(b){const{manager:n,baseFolderUrl:o,onFileProgress:l}=b,m=new se.URDFLoader(n);return m.packages=r=>`${o.endsWith("/")?o:o+"/"}${r}/`,m.loadMeshCb=(r,w,p)=>{const g=(()=>{const E=r.split("?")[0].split("#")[0],c=E.lastIndexOf(".");return c>=0?E.slice(c+1).toLowerCase():void 0})();switch(g){case"obj":{const E=(()=>{try{return new URL(".",r).toString()}catch{const a=r.lastIndexOf("/");return a>=0?r.slice(0,a+1):r}})(),c=(()=>{var d;return(((d=r.split("/").pop())==null?void 0:d.split("?")[0].split("#")[0])??"").replace(/\.[^/.?#]+$/,"")})(),f=`${E}${c}.mtl`,h=a=>{ie({objUrl:r,manager:w,materials:a,onLoad:d=>p(d),onProgress:d=>l==null?void 0:l(r,d==null?void 0:d.loaded,d==null?void 0:d.total),onError:d=>{console.error(`[URDF 资源加载失败,已跳过] 无法加载 OBJ 模型: ${r}`,d),p(new R.Group)}})};ne({mtlUrl:f,manager:w,resourcePath:E,onLoad:a=>{try{a.preload()}catch{}h(a)},onProgress:a=>l==null?void 0:l(f,a==null?void 0:a.loaded,a==null?void 0:a.total),onError:a=>{console.warn(`[URDF 资源警告] 未找到或加载材质失败: ${f}。将尝试无材质加载。`),h(void 0)}});break}case"stl":{new U.STLLoader(w).load(r,c=>{const f=new R.MeshPhongMaterial({color:12303291,shininess:30}),h=new R.Mesh(c,f);h.castShadow=!0,h.receiveShadow=!0,p(h)},c=>l==null?void 0:l(r,c==null?void 0:c.loaded,c==null?void 0:c.total),c=>{console.error(`[URDF 资源加载失败,已跳过] 无法加载 STL 模型: ${r}`,c),p(new R.Group)});break}default:console.error(`[URDF 资源加载失败,已跳过] 不支持的网格格式: .${g} (路径: ${r})`),p(new R.Group)}},m}function ce(b,n,o,l){return{loadSceneFromFile:r=>new Promise((w,p)=>{o.value=!0,l.value="正在初始化 URDF 加载器...";let g=0,E=0,c=null;const f=new R.LoadingManager;f.onStart=(a,d,V)=>{g=V||0,E=d||0,l.value=g>0?`开始下载资源: 0 / ${g}`:"开始下载资源...",o.value=!0},f.onProgress=(a,d,V)=>{E=d,g=V;const L=`正在加载 ${d} / ${V} 个文件: ${C.getFilenameFromUrl(a)}`;l.value=L,d===V&&(l.value="资源加载完成,正在处理模型...",setTimeout(()=>{if(c){c.updateMatrixWorld(!0);const v=new R.Box3().setFromObject(c);v.isEmpty()&&console.warn("模型加载完成,但所有可视化网格均加载失败,模型将不可见。"),c.userData.boundingBox=v,c.traverse(u=>{u.isMesh&&(u.castShadow=!0,u.receiveShadow=!0)}),w(c)}else p(new Error("URDF 文件本身加载失败。"));l.value="模型加载完成",setTimeout(()=>{l.value==="模型加载完成"&&(o.value=!1,l.value="")},500)},100))},f.onError=a=>{console.warn(`LoadingManager 报告一个资源加载失败: ${a}。加载流程将继续。`)};const h=(a,d,V)=>{const L=C.getFilenameFromUrl(a);let v;V&&V>0?v=`${L}(${C.formatBytes(d)} / ${C.formatBytes(V)})`:d&&d>0?v=`${L}(已下载 ${C.formatBytes(d)})`:v=`${L}`,l.value=`正在下载第 ${E+1} / ${g} 个文件: ${v}`};try{const a=URL.createObjectURL(r);ae({manager:f,baseFolderUrl:re,onFileProgress:h}).load(a,V=>{c=V},void 0,V=>{console.error(`加载 URDF 文件 (${r.name}) 时发生致命错误:`,V),l.value="URDF 文件解析失败",o.value=!1,p(new Error(`加载 URDF 文件失败: ${r.name}`))})}catch(a){console.error("初始化 URDF 加载时发生致命错误:",a),l.value="模型加载失败",o.value=!1,p(a)}})}}function de(b,n,o,l=["URDFVisual"]){let m=null;const r=e.ref(null),w=new R.Raycaster,p=new R.Vector2,g=new Map;function E(){o.value.forEach(v=>{v.traverse(u=>{l!=null&&l.includes(u.type)&&g.set(u.id,{obj:u,axis:u.axis||new R.Vector3(1,0,0),limits:u.limits})})})}function c(v){r.value&&r.value.obj.traverse(u=>{var t;u.material&&((t=u.material.emissive)==null||t.set(0))}),r.value=v,v.obj.traverse(u=>{var t;u.material&&((t=u.material.emissive)==null||t.set(65280))})}function f(v){const u=b.value.getBoundingClientRect();p.x=(v.clientX-u.left)/u.width*2-1,p.y=-((v.clientY-u.top)/u.height)*2+1,w.setFromCamera(p,m);const t=w.intersectObjects(o.value,!0);if(t.length===0)return;let s=t[0].object,_=null;for(;s;){if(g.has(s.id)){_=g.get(s.id);break}s=s.parent}_&&c(_)}function h(){b.value&&b.value.removeEventListener("click",f,!1)}function a(){const{scene:v,camera:u}=n();m=u,E(),b.value&&b.value.addEventListener("click",f,!1)}function d(v){r.value&&(r.value.obj.visible=v)}function V(v){var s;const{axis:u,value:t}=v;D.updateObjectPosition((s=r.value)==null?void 0:s.obj,u,t)}function L(v){var s;const{axis:u,value:t}=v;D.updateObjectRotation((s=r.value)==null?void 0:s.obj,u,t)}return{initRaycaster:a,dispose:h,selectedObject3D:r,setSelectedObjVisible:d,updatePosition:V,updateRotation:L}}const ue={SINGLE:"单机",DOUBLE:"双机"},me={ROBOT:1,PIPECOMPARSION:2};class pe{constructor(n){j(this,"robot");j(this,"movableJoints");this.robot=n,this.movableJoints=this.getMovableJoints()}getMovableJoints(){return Object.values(this.robot.joints).filter(n=>n.jointType!=="fixed")}getMovableJointNames(){return this.movableJoints.map(n=>n.name)}setJointAngle(n,o){const l=this.robot.joints[n];if(!l||l.jointType==="fixed")return console.warn(`关节 ${n} 不存在或不可动`),!1;if(l.limit){const m=Math.max(l.limit.lower,Math.min(l.limit.upper,o));m!==o&&console.warn(`关节 ${n} 角度被限制在 [${l.limit.lower}, ${l.limit.upper}]`),l.setJointValue(m)}else l.setJointValue(o);return!0}setJointAngles(n){Object.entries(n).forEach(([o,l])=>{typeof l=="number"&&!isNaN(l)&&this.setJointAngle(o,l)})}getCurrentJointStates(){const n={};return this.movableJoints.forEach(o=>{n[o.name]=o.angle||0}),n}resetToZero(){this.movableJoints.forEach(n=>{n.setJointValue(0)})}getJointLimits(n){const o=this.robot.joints[n];return!o||!o.limit?null:{lower:o.limit.lower,upper:o.limit.upper}}async animateToState(n,o=1e3,l){const m=this.getCurrentJointStates(),r=Date.now();return new Promise(w=>{const p=()=>{const g=Date.now()-r,E=Math.min(g/o,1),c=this.easeInOutCubic(E),f={};Object.keys(n).forEach(h=>{const a=m[h]||0,d=n[h];f[h]=a+(d-a)*c}),this.setJointAngles(f),l&&l(E),E<1?requestAnimationFrame(p):w()};p()})}easeInOutCubic(n){return n<.5?4*n*n*n:1-Math.pow(-2*n+2,3)/2}async playSequence(n,o=1e3,l){for(let m=0;m<n.length;m++)await this.animateToState(n[m],o,r=>{l&&l(m,r)})}}const ve={class:"panel-content"},fe={class:"obj"},be={key:0,class:"obj-base"},_e=["title"],we=["title"],Ee={key:1},he={class:"obj-position"},Ve={class:"coord-item"},ge={class:"coord-item"},ye={class:"coord-item"},Ne={class:"obj-rotation"},Le={class:"coord-item"},Re={class:"coord-item"},Se={class:"coord-item"},Ce={class:"world"},je={class:"coord-line"},De={class:"coord-text"},Ue={class:"world-position-item"},Me={class:"world-position-item"},Fe={class:"world-position-item"},$e={class:"coord-line"},Oe={class:"coord-text"},xe={class:"world-rotation-item"},Je={class:"world-rotation-item"},Te={class:"world-rotation-item"},ke=e.defineComponent({__name:"workpieceTreePanel",props:{model:{},maxExpandCount:{default:10},expandStrategy:{default:"breadth"}},emits:["nodeClick","visibleChange","updatePosition","updateRotation"],setup(b,{emit:n}){const o=b,l=n,m=e.ref([]),r=e.ref({}),w=(t,s=0)=>{const _=[];return Array.isArray(t)&&(t==null?void 0:t.length)>0&&t.forEach(i=>{if(!(i!=null&&i.isMesh)){const y={name:i==null?void 0:i.name,label:(i==null?void 0:i.name)||(i==null?void 0:i.type),show:!0,level:s+1,isPenultimate:!1,type:i==null?void 0:i.type,id:i==null?void 0:i.id,limit:(i==null?void 0:i.limit)??"",children:w(i==null?void 0:i.children,s+1),path:i==null?void 0:i.name};_.push(y)}}),_},p=t=>t?[{name:t==null?void 0:t.name,label:(t==null?void 0:t.name)||(t==null?void 0:t.type),show:!0,level:1,isPenultimate:!1,type:t==null?void 0:t.type,id:t==null?void 0:t.id,limit:(t==null?void 0:t.limit)??"",children:w(t==null?void 0:t.children,1),path:t==null?void 0:t.name}]:[],g=(t,s)=>{const _=[],i=[...t];for(;i.length>0&&_.length<s;){const y=i.shift();y.children&&y.children.length>0&&(_.push(y.id),i.push(...y.children))}return _},E=(t,s)=>{const _=[];return t.forEach(i=>{if(i.children&&i.children.length>0){_.push(i.id);const y=i.children.filter(S=>S.children&&S.children.length>0).slice(0,s).map(S=>S.id);_.push(...y)}}),_.slice(0,s+1)};e.computed(()=>!m.value||m.value.length===0?[]:o.expandStrategy==="firstLevel"?E(m.value,o.maxExpandCount):g(m.value,o.maxExpandCount));const c=t=>t?parseFloat(t.toFixed(3)):0,f=t=>t?parseFloat(t.toFixed(1)):0,h=(t,s)=>{l("updatePosition",{obj:o.model,axis:s,value:(t==null?void 0:t.toString())||"0"})},a=(t,s)=>{l("updateRotation",{obj:o.model,axis:s,value:(t==null?void 0:t.toString())||"0"})},d=t=>{l("visibleChange",t)},V=e.computed(()=>o!=null&&o.model?p(o.model):[]),L=e.computed(()=>{var t,s;return((t=o==null?void 0:o.model)==null?void 0:t.name)||((s=o==null?void 0:o.model)==null?void 0:s.type)}),v=e.computed(()=>{var t;return(t=o==null?void 0:o.model)==null?void 0:t.type}),u=e.computed(()=>{var t;return(t=o==null?void 0:o.model)==null?void 0:t.visible});return e.watch(()=>o.model,()=>{o.model&&(r.value=D.getObject3DData(o.model))},{deep:!0,immediate:!0}),e.watch(V,t=>{m.value=JSON.parse(JSON.stringify(t))},{immediate:!0}),(t,s)=>{var S,M,F,$,O,x,J,T,k,P,B,z,I,A,q,W,G,X,Y,Z,H,K,Q,ee;const _=e.resolveComponent("el-divider"),i=e.resolveComponent("el-switch"),y=e.resolveComponent("el-input-number");return e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(_,null,{default:e.withCtx(()=>s[6]||(s[6]=[e.createTextVNode("对象")])),_:1,__:[6]}),e.createElementVNode("div",fe,[o.model?(e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",{class:"obj-name",title:L.value},e.toDisplayString(L.value),9,_e),e.createElementVNode("div",{class:"obj-type",title:v.value},"["+e.toDisplayString(v.value)+"]",9,we)])):(e.openBlock(),e.createElementBlock("div",Ee,"空")),e.createVNode(i,{"model-value":u.value,onChange:d},null,8,["model-value"])]),e.createVNode(_,null,{default:e.withCtx(()=>s[7]||(s[7]=[e.createTextVNode("相对位置")])),_:1,__:[7]}),e.createElementVNode("div",he,[e.createElementVNode("div",Ve,[s[8]||(s[8]=e.createElementVNode("span",{class:"axis-label"},"X",-1)),e.createVNode(y,{"model-value":c((M=(S=r.value)==null?void 0:S.position)==null?void 0:M.x),onChange:s[0]||(s[0]=N=>h(N,"x")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",ge,[s[9]||(s[9]=e.createElementVNode("span",{class:"axis-label"},"Y",-1)),e.createVNode(y,{"model-value":c(($=(F=r.value)==null?void 0:F.position)==null?void 0:$.y),onChange:s[1]||(s[1]=N=>h(N,"y")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",ye,[s[10]||(s[10]=e.createElementVNode("span",{class:"axis-label"},"Z",-1)),e.createVNode(y,{"model-value":c((x=(O=r.value)==null?void 0:O.position)==null?void 0:x.z),onChange:s[2]||(s[2]=N=>h(N,"z")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])])]),e.createVNode(_,null,{default:e.withCtx(()=>s[11]||(s[11]=[e.createTextVNode("相对旋转")])),_:1,__:[11]}),e.createElementVNode("div",Ne,[e.createElementVNode("div",Le,[s[12]||(s[12]=e.createElementVNode("span",{class:"axis-label"},"X°",-1)),e.createVNode(y,{"model-value":f((T=(J=r.value)==null?void 0:J.rotation)==null?void 0:T.x),onChange:s[3]||(s[3]=N=>a(N,"x")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",Re,[s[13]||(s[13]=e.createElementVNode("span",{class:"axis-label"},"Y°",-1)),e.createVNode(y,{"model-value":f((P=(k=r.value)==null?void 0:k.rotation)==null?void 0:P.y),onChange:s[4]||(s[4]=N=>a(N,"y")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",Se,[s[14]||(s[14]=e.createElementVNode("span",{class:"axis-label"},"Z°",-1)),e.createVNode(y,{"model-value":f((z=(B=r.value)==null?void 0:B.rotation)==null?void 0:z.z),onChange:s[5]||(s[5]=N=>a(N,"z")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])])]),e.createVNode(_,null,{default:e.withCtx(()=>s[15]||(s[15]=[e.createTextVNode("世界信息")])),_:1,__:[15]}),e.createElementVNode("div",Ce,[e.createElementVNode("div",je,[s[16]||(s[16]=e.createElementVNode("span",{class:"coord-label"},"世界位置:",-1)),e.createElementVNode("span",De,[e.createElementVNode("div",Ue,e.toDisplayString(c((A=(I=r.value)==null?void 0:I.worldPosition)==null?void 0:A.x))+", ",1),e.createElementVNode("div",Me,e.toDisplayString(c((W=(q=r.value)==null?void 0:q.worldPosition)==null?void 0:W.y))+", ",1),e.createElementVNode("div",Fe,e.toDisplayString(c((X=(G=r.value)==null?void 0:G.worldPosition)==null?void 0:X.z)),1)])]),e.createElementVNode("div",$e,[s[17]||(s[17]=e.createElementVNode("span",{class:"coord-label"},"世界旋转:",-1)),e.createElementVNode("span",Oe,[e.createElementVNode("div",xe,e.toDisplayString(f((Z=(Y=r.value)==null?void 0:Y.worldRotation)==null?void 0:Z.x))+"°, ",1),e.createElementVNode("div",Je,e.toDisplayString(f((K=(H=r.value)==null?void 0:H.worldRotation)==null?void 0:K.y))+"°, ",1),e.createElementVNode("div",Te,e.toDisplayString(f((ee=(Q=r.value)==null?void 0:Q.worldRotation)==null?void 0:ee.z))+"° ",1)])])])])}}}),Pe=le._export_sfc(ke,[["__scopeId","data-v-00d48931"]]);exports.URDFRobotController=pe;exports.WorkpieceTreePanel=Pe;exports.robotMode=ue;exports.sceneType=me;exports.useRaycaster=de;exports.useUrdfLoader=ce;
1
+ "use strict";var te=Object.defineProperty;var oe=(b,n,o)=>n in b?te(b,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):b[n]=o;var j=(b,n,o)=>oe(b,typeof n!="symbol"?n+"":n,o);const se=require("./index.vue_vue_type_style_index_1_lang-DR71_XjN.cjs"),U=require("./MTLLoader-D80GV1WB.cjs"),C=require("./threeViewerHost-iajMfGA9.cjs"),R=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-QzgaFA5S.cjs"),e=require("vue"),D=require("./iconfont-0T5xTLj8.cjs"),le=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),re="http://222.92.178.198:60000/chfs/shared/Insofrobot/urdf";function ne(b){const{mtlUrl:n,manager:o,resourcePath:l,onLoad:m,onProgress:r,onError:w}=b,p=new U.MTLLoader(o);return l&&p.setResourcePath(l),p.load(n,m,r,w),p}function ie(b){const{objUrl:n,manager:o,materials:l,onLoad:m,onProgress:r,onError:w}=b,p=new U.OBJLoader(o);return l&&p.setMaterials(l),p.load(n,m,r,w),p}function ae(b){const{manager:n,baseFolderUrl:o,onFileProgress:l}=b,m=new se.URDFLoader(n);return m.packages=r=>`${o.endsWith("/")?o:o+"/"}${r}/`,m.loadMeshCb=(r,w,p)=>{const g=(()=>{const E=r.split("?")[0].split("#")[0],c=E.lastIndexOf(".");return c>=0?E.slice(c+1).toLowerCase():void 0})();switch(g){case"obj":{const E=(()=>{try{return new URL(".",r).toString()}catch{const a=r.lastIndexOf("/");return a>=0?r.slice(0,a+1):r}})(),c=(()=>{var d;return(((d=r.split("/").pop())==null?void 0:d.split("?")[0].split("#")[0])??"").replace(/\.[^/.?#]+$/,"")})(),f=`${E}${c}.mtl`,h=a=>{ie({objUrl:r,manager:w,materials:a,onLoad:d=>p(d),onProgress:d=>l==null?void 0:l(r,d==null?void 0:d.loaded,d==null?void 0:d.total),onError:d=>{console.error(`[URDF 资源加载失败,已跳过] 无法加载 OBJ 模型: ${r}`,d),p(new R.Group)}})};ne({mtlUrl:f,manager:w,resourcePath:E,onLoad:a=>{try{a.preload()}catch{}h(a)},onProgress:a=>l==null?void 0:l(f,a==null?void 0:a.loaded,a==null?void 0:a.total),onError:a=>{console.warn(`[URDF 资源警告] 未找到或加载材质失败: ${f}。将尝试无材质加载。`),h(void 0)}});break}case"stl":{new U.STLLoader(w).load(r,c=>{const f=new R.MeshPhongMaterial({color:12303291,shininess:30}),h=new R.Mesh(c,f);h.castShadow=!0,h.receiveShadow=!0,p(h)},c=>l==null?void 0:l(r,c==null?void 0:c.loaded,c==null?void 0:c.total),c=>{console.error(`[URDF 资源加载失败,已跳过] 无法加载 STL 模型: ${r}`,c),p(new R.Group)});break}default:console.error(`[URDF 资源加载失败,已跳过] 不支持的网格格式: .${g} (路径: ${r})`),p(new R.Group)}},m}function ce(b,n,o,l){return{loadSceneFromFile:r=>new Promise((w,p)=>{o.value=!0,l.value="正在初始化 URDF 加载器...";let g=0,E=0,c=null;const f=new R.LoadingManager;f.onStart=(a,d,V)=>{g=V||0,E=d||0,l.value=g>0?`开始下载资源: 0 / ${g}`:"开始下载资源...",o.value=!0},f.onProgress=(a,d,V)=>{E=d,g=V;const L=`正在加载 ${d} / ${V} 个文件: ${C.getFilenameFromUrl(a)}`;l.value=L,d===V&&(l.value="资源加载完成,正在处理模型...",setTimeout(()=>{if(c){c.updateMatrixWorld(!0);const v=new R.Box3().setFromObject(c);v.isEmpty()&&console.warn("模型加载完成,但所有可视化网格均加载失败,模型将不可见。"),c.userData.boundingBox=v,c.traverse(u=>{u.isMesh&&(u.castShadow=!0,u.receiveShadow=!0)}),w(c)}else p(new Error("URDF 文件本身加载失败。"));l.value="模型加载完成",setTimeout(()=>{l.value==="模型加载完成"&&(o.value=!1,l.value="")},500)},100))},f.onError=a=>{console.warn(`LoadingManager 报告一个资源加载失败: ${a}。加载流程将继续。`)};const h=(a,d,V)=>{const L=C.getFilenameFromUrl(a);let v;V&&V>0?v=`${L}(${C.formatBytes(d)} / ${C.formatBytes(V)})`:d&&d>0?v=`${L}(已下载 ${C.formatBytes(d)})`:v=`${L}`,l.value=`正在下载第 ${E+1} / ${g} 个文件: ${v}`};try{const a=URL.createObjectURL(r);ae({manager:f,baseFolderUrl:re,onFileProgress:h}).load(a,V=>{c=V},void 0,V=>{console.error(`加载 URDF 文件 (${r.name}) 时发生致命错误:`,V),l.value="URDF 文件解析失败",o.value=!1,p(new Error(`加载 URDF 文件失败: ${r.name}`))})}catch(a){console.error("初始化 URDF 加载时发生致命错误:",a),l.value="模型加载失败",o.value=!1,p(a)}})}}function de(b,n,o,l=["URDFVisual"]){let m=null;const r=e.ref(null),w=new R.Raycaster,p=new R.Vector2,g=new Map;function E(){o.value.forEach(v=>{v.traverse(u=>{l!=null&&l.includes(u.type)&&g.set(u.id,{obj:u,axis:u.axis||new R.Vector3(1,0,0),limits:u.limits})})})}function c(v){r.value&&r.value.obj.traverse(u=>{var t;u.material&&((t=u.material.emissive)==null||t.set(0))}),r.value=v,v.obj.traverse(u=>{var t;u.material&&((t=u.material.emissive)==null||t.set(65280))})}function f(v){const u=b.value.getBoundingClientRect();p.x=(v.clientX-u.left)/u.width*2-1,p.y=-((v.clientY-u.top)/u.height)*2+1,w.setFromCamera(p,m);const t=w.intersectObjects(o.value,!0);if(t.length===0)return;let s=t[0].object,_=null;for(;s;){if(g.has(s.id)){_=g.get(s.id);break}s=s.parent}_&&c(_)}function h(){b.value&&b.value.removeEventListener("click",f,!1)}function a(){const{scene:v,camera:u}=n();m=u,E(),b.value&&b.value.addEventListener("click",f,!1)}function d(v){r.value&&(r.value.obj.visible=v)}function V(v){var s;const{axis:u,value:t}=v;D.updateObjectPosition((s=r.value)==null?void 0:s.obj,u,t)}function L(v){var s;const{axis:u,value:t}=v;D.updateObjectRotation((s=r.value)==null?void 0:s.obj,u,t)}return{initRaycaster:a,dispose:h,selectedObject3D:r,setSelectedObjVisible:d,updatePosition:V,updateRotation:L}}const ue={SINGLE:"单机",DOUBLE:"双机"},me={ROBOT:1,PIPECOMPARSION:2};class pe{constructor(n){j(this,"robot");j(this,"movableJoints");this.robot=n,this.movableJoints=this.getMovableJoints()}getMovableJoints(){return Object.values(this.robot.joints).filter(n=>n.jointType!=="fixed")}getMovableJointNames(){return this.movableJoints.map(n=>n.name)}setJointAngle(n,o){const l=this.robot.joints[n];if(!l||l.jointType==="fixed")return console.warn(`关节 ${n} 不存在或不可动`),!1;if(l.limit){const m=Math.max(l.limit.lower,Math.min(l.limit.upper,o));m!==o&&console.warn(`关节 ${n} 角度被限制在 [${l.limit.lower}, ${l.limit.upper}]`),l.setJointValue(m)}else l.setJointValue(o);return!0}setJointAngles(n){Object.entries(n).forEach(([o,l])=>{typeof l=="number"&&!isNaN(l)&&this.setJointAngle(o,l)})}getCurrentJointStates(){const n={};return this.movableJoints.forEach(o=>{n[o.name]=o.angle||0}),n}resetToZero(){this.movableJoints.forEach(n=>{n.setJointValue(0)})}getJointLimits(n){const o=this.robot.joints[n];return!o||!o.limit?null:{lower:o.limit.lower,upper:o.limit.upper}}async animateToState(n,o=1e3,l){const m=this.getCurrentJointStates(),r=Date.now();return new Promise(w=>{const p=()=>{const g=Date.now()-r,E=Math.min(g/o,1),c=this.easeInOutCubic(E),f={};Object.keys(n).forEach(h=>{const a=m[h]||0,d=n[h];f[h]=a+(d-a)*c}),this.setJointAngles(f),l&&l(E),E<1?requestAnimationFrame(p):w()};p()})}easeInOutCubic(n){return n<.5?4*n*n*n:1-Math.pow(-2*n+2,3)/2}async playSequence(n,o=1e3,l){for(let m=0;m<n.length;m++)await this.animateToState(n[m],o,r=>{l&&l(m,r)})}}const ve={class:"panel-content"},fe={class:"obj"},be={key:0,class:"obj-base"},_e=["title"],we=["title"],Ee={key:1},he={class:"obj-position"},Ve={class:"coord-item"},ge={class:"coord-item"},ye={class:"coord-item"},Ne={class:"obj-rotation"},Le={class:"coord-item"},Re={class:"coord-item"},Se={class:"coord-item"},Ce={class:"world"},je={class:"coord-line"},De={class:"coord-text"},Ue={class:"world-position-item"},Me={class:"world-position-item"},Fe={class:"world-position-item"},$e={class:"coord-line"},Oe={class:"coord-text"},xe={class:"world-rotation-item"},Je={class:"world-rotation-item"},Te={class:"world-rotation-item"},ke=e.defineComponent({__name:"workpieceTreePanel",props:{model:{},maxExpandCount:{default:10},expandStrategy:{default:"breadth"}},emits:["nodeClick","visibleChange","updatePosition","updateRotation"],setup(b,{emit:n}){const o=b,l=n,m=e.ref([]),r=e.ref({}),w=(t,s=0)=>{const _=[];return Array.isArray(t)&&(t==null?void 0:t.length)>0&&t.forEach(i=>{if(!(i!=null&&i.isMesh)){const y={name:i==null?void 0:i.name,label:(i==null?void 0:i.name)||(i==null?void 0:i.type),show:!0,level:s+1,isPenultimate:!1,type:i==null?void 0:i.type,id:i==null?void 0:i.id,limit:(i==null?void 0:i.limit)??"",children:w(i==null?void 0:i.children,s+1),path:i==null?void 0:i.name};_.push(y)}}),_},p=t=>t?[{name:t==null?void 0:t.name,label:(t==null?void 0:t.name)||(t==null?void 0:t.type),show:!0,level:1,isPenultimate:!1,type:t==null?void 0:t.type,id:t==null?void 0:t.id,limit:(t==null?void 0:t.limit)??"",children:w(t==null?void 0:t.children,1),path:t==null?void 0:t.name}]:[],g=(t,s)=>{const _=[],i=[...t];for(;i.length>0&&_.length<s;){const y=i.shift();y.children&&y.children.length>0&&(_.push(y.id),i.push(...y.children))}return _},E=(t,s)=>{const _=[];return t.forEach(i=>{if(i.children&&i.children.length>0){_.push(i.id);const y=i.children.filter(S=>S.children&&S.children.length>0).slice(0,s).map(S=>S.id);_.push(...y)}}),_.slice(0,s+1)};e.computed(()=>!m.value||m.value.length===0?[]:o.expandStrategy==="firstLevel"?E(m.value,o.maxExpandCount):g(m.value,o.maxExpandCount));const c=t=>t?parseFloat(t.toFixed(3)):0,f=t=>t?parseFloat(t.toFixed(1)):0,h=(t,s)=>{l("updatePosition",{obj:o.model,axis:s,value:(t==null?void 0:t.toString())||"0"})},a=(t,s)=>{l("updateRotation",{obj:o.model,axis:s,value:(t==null?void 0:t.toString())||"0"})},d=t=>{l("visibleChange",t)},V=e.computed(()=>o!=null&&o.model?p(o.model):[]),L=e.computed(()=>{var t,s;return((t=o==null?void 0:o.model)==null?void 0:t.name)||((s=o==null?void 0:o.model)==null?void 0:s.type)}),v=e.computed(()=>{var t;return(t=o==null?void 0:o.model)==null?void 0:t.type}),u=e.computed(()=>{var t;return(t=o==null?void 0:o.model)==null?void 0:t.visible});return e.watch(()=>o.model,()=>{o.model&&(r.value=D.getObject3DData(o.model))},{deep:!0,immediate:!0}),e.watch(V,t=>{m.value=JSON.parse(JSON.stringify(t))},{immediate:!0}),(t,s)=>{var S,M,F,$,O,x,J,T,k,P,B,z,I,A,q,W,G,X,Y,Z,H,K,Q,ee;const _=e.resolveComponent("el-divider"),i=e.resolveComponent("el-switch"),y=e.resolveComponent("el-input-number");return e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(_,null,{default:e.withCtx(()=>s[6]||(s[6]=[e.createTextVNode("对象")])),_:1,__:[6]}),e.createElementVNode("div",fe,[o.model?(e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",{class:"obj-name",title:L.value},e.toDisplayString(L.value),9,_e),e.createElementVNode("div",{class:"obj-type",title:v.value},"["+e.toDisplayString(v.value)+"]",9,we)])):(e.openBlock(),e.createElementBlock("div",Ee,"空")),e.createVNode(i,{"model-value":u.value,onChange:d},null,8,["model-value"])]),e.createVNode(_,null,{default:e.withCtx(()=>s[7]||(s[7]=[e.createTextVNode("相对位置")])),_:1,__:[7]}),e.createElementVNode("div",he,[e.createElementVNode("div",Ve,[s[8]||(s[8]=e.createElementVNode("span",{class:"axis-label"},"X",-1)),e.createVNode(y,{"model-value":c((M=(S=r.value)==null?void 0:S.position)==null?void 0:M.x),onChange:s[0]||(s[0]=N=>h(N,"x")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",ge,[s[9]||(s[9]=e.createElementVNode("span",{class:"axis-label"},"Y",-1)),e.createVNode(y,{"model-value":c(($=(F=r.value)==null?void 0:F.position)==null?void 0:$.y),onChange:s[1]||(s[1]=N=>h(N,"y")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",ye,[s[10]||(s[10]=e.createElementVNode("span",{class:"axis-label"},"Z",-1)),e.createVNode(y,{"model-value":c((x=(O=r.value)==null?void 0:O.position)==null?void 0:x.z),onChange:s[2]||(s[2]=N=>h(N,"z")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])])]),e.createVNode(_,null,{default:e.withCtx(()=>s[11]||(s[11]=[e.createTextVNode("相对旋转")])),_:1,__:[11]}),e.createElementVNode("div",Ne,[e.createElementVNode("div",Le,[s[12]||(s[12]=e.createElementVNode("span",{class:"axis-label"},"X°",-1)),e.createVNode(y,{"model-value":f((T=(J=r.value)==null?void 0:J.rotation)==null?void 0:T.x),onChange:s[3]||(s[3]=N=>a(N,"x")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",Re,[s[13]||(s[13]=e.createElementVNode("span",{class:"axis-label"},"Y°",-1)),e.createVNode(y,{"model-value":f((P=(k=r.value)==null?void 0:k.rotation)==null?void 0:P.y),onChange:s[4]||(s[4]=N=>a(N,"y")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])]),e.createElementVNode("div",Se,[s[14]||(s[14]=e.createElementVNode("span",{class:"axis-label"},"Z°",-1)),e.createVNode(y,{"model-value":f((z=(B=r.value)==null?void 0:B.rotation)==null?void 0:z.z),onChange:s[5]||(s[5]=N=>a(N,"z")),size:"small",class:"coord-input-compact",precision:3,step:.1,controls:!0,"controls-position":"right"},null,8,["model-value"])])]),e.createVNode(_,null,{default:e.withCtx(()=>s[15]||(s[15]=[e.createTextVNode("世界信息")])),_:1,__:[15]}),e.createElementVNode("div",Ce,[e.createElementVNode("div",je,[s[16]||(s[16]=e.createElementVNode("span",{class:"coord-label"},"世界位置:",-1)),e.createElementVNode("span",De,[e.createElementVNode("div",Ue,e.toDisplayString(c((A=(I=r.value)==null?void 0:I.worldPosition)==null?void 0:A.x))+", ",1),e.createElementVNode("div",Me,e.toDisplayString(c((W=(q=r.value)==null?void 0:q.worldPosition)==null?void 0:W.y))+", ",1),e.createElementVNode("div",Fe,e.toDisplayString(c((X=(G=r.value)==null?void 0:G.worldPosition)==null?void 0:X.z)),1)])]),e.createElementVNode("div",$e,[s[17]||(s[17]=e.createElementVNode("span",{class:"coord-label"},"世界旋转:",-1)),e.createElementVNode("span",Oe,[e.createElementVNode("div",xe,e.toDisplayString(f((Z=(Y=r.value)==null?void 0:Y.worldRotation)==null?void 0:Z.x))+"°, ",1),e.createElementVNode("div",Je,e.toDisplayString(f((K=(H=r.value)==null?void 0:H.worldRotation)==null?void 0:K.y))+"°, ",1),e.createElementVNode("div",Te,e.toDisplayString(f((ee=(Q=r.value)==null?void 0:Q.worldRotation)==null?void 0:ee.z))+"° ",1)])])])])}}}),Pe=le._export_sfc(ke,[["__scopeId","data-v-00d48931"]]);exports.URDFRobotController=pe;exports.WorkpieceTreePanel=Pe;exports.robotMode=ue;exports.sceneType=me;exports.useRaycaster=de;exports.useUrdfLoader=ce;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ss-component-new",
3
3
  "private": false,
4
- "version": "1.2.90",
4
+ "version": "1.2.92",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -1,5 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),X=require("./workpieceTreePanel-CTOK6c6d.cjs"),pe=require("./iconfont-0T5xTLj8.cjs"),$=require("./index-C8qRkCgn.cjs"),s=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-QzgaFA5S.cjs");require("./index.vue_vue_type_style_index_1_lang-DnfCrXiN.cjs");require("./index-BpPyaNFa.cjs");const Q=require("./index-D_6peWlG.cjs");require("./index.vue_vue_type_style_index_1_lang-Xo4JSq-J.cjs");require("./index-D4EyLxA0.cjs");const Ce=require("./animationData-ChnEQcWN.cjs"),ne=require("./urdfTree-CWwnorES.cjs"),we=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),ee=require("./dataUtil-DrslFFRT.cjs"),M=require("./svgIcon-CUM54R6L.cjs"),Z=.001,H=s.MathUtils.degToRad,Ne=new s.MeshStandardMaterial({color:13421772,metalness:.3,roughness:.6,side:s.DoubleSide});function Me(V=.005,m=64){const f=new s.CatmullRomCurve3([new s.Vector3(0,0,0),new s.Vector3(0,0,0)]),n=new s.TubeGeometry(f,m,V,16,!1),g=Ne;return new s.Mesh(n,g)}const ke=V=>V.reduce((m,f)=>{let n=0;const g=f.Y??0,h=f.C??0,c=f.R??0;return g>0&&(n+=g),h>0&&c>0&&(n+=c*H(h)),m+n},0),Te=V=>{const m=[],f=V.Y??0,n=V.B??0,g=V.C??0,h=V.R??0,c={pos:new s.Vector3(0,0,0),localY:new s.Vector3(0,1,0),localX:new s.Vector3(1,0,0),localZ:new s.Vector3(0,0,1)};if(!f&&!g)return m;if(m.push(c.pos.clone()),n!==0){const C=new s.Matrix4().makeRotationAxis(c.localY,H(n));c.localX.applyMatrix4(C),c.localZ.applyMatrix4(C)}if(f>0&&(c.pos.add(c.localY.clone().multiplyScalar(f*Z)),m.push(c.pos.clone())),g>0&&h>0){const C=H(g),u=h*Z,_=c.pos.clone().add(c.localX.clone().multiplyScalar(-u)),r=Math.max(16,Math.ceil(g/5));for(let p=1;p<=r;p++){const a=C*p/r,d=new s.Matrix4().makeRotationAxis(c.localZ,a),b=c.localX.clone().multiplyScalar(u).applyMatrix4(d),E=_.clone().add(b);m.push(E)}}return m};function Se(V,m){const f=new s.Group;f.name="CompletePipe";const n={pos:new s.Vector3(0,0,0),localX:new s.Vector3(1,0,0),localY:new s.Vector3(0,1,0),localZ:new s.Vector3(0,0,1)};let g=0,h=1;for(let c=0;c<V.length;c++){const C=V[c],u=C.Y??0,_=C.B??0,r=C.C??0,p=C.R??0;if(_!==0){const a=new s.Matrix4().makeRotationAxis(n.localY,H(_));n.localX.applyMatrix4(a),n.localZ.applyMatrix4(a)}if(u>0){const a=n.pos.clone();n.pos.add(n.localY.clone().multiplyScalar(u*Z));const d=n.pos.clone(),i=Pe(a,d,m*Z);i.userData={segmentType:"straight",segmentIndex:g,frameIndex:c,length:u,frame:{Y:u,B:_,C:r,R:p}},i.name=`直段_${g}`,f.add(i);const b=a.clone();De(f,h,b,m*Z),g++}if(r>0&&p>0){const a=H(r),d=p*Z,i=[];i.push(n.pos.clone());const b=n.pos.clone().add(n.localX.clone().multiplyScalar(-d)),E=Math.max(16,Math.ceil(r/5));for(let P=1;P<=E;P++){const D=a*P/E,T=new s.Matrix4().makeRotationAxis(n.localZ,D),k=n.localX.clone().multiplyScalar(d).applyMatrix4(T),w=b.clone().add(k);i.push(w)}const v=Re(i,m*Z);v.userData={segmentType:"bend",segmentIndex:g,frameIndex:c,angle:r,radius:p,centerPoint:b.toArray(),frame:{Y:u,B:_,C:r,R:p}},v.name=`弯段_${g}`,f.add(v),Math.floor(i.length/2),i[0],n.pos=i[i.length-1].clone();const S=new s.Matrix4().makeRotationAxis(n.localZ,a);n.localY.applyMatrix4(S),n.localX.applyMatrix4(S),g++,h++}}return f}function De(V,m,f,n){const g=new s.Vector3(0,n*2,n*5),h=f.clone().add(g),c=[f,h],C=new s.BufferGeometry().setFromPoints(c),u=new s.LineDashedMaterial({color:16711680,dashSize:n*.5,gapSize:n*.3,linewidth:1}),_=new s.Line(C,u);_.computeLineDistances(),V.add(_);const r=document.createElement("canvas"),p=r.getContext("2d");r.width=128,r.height=128,p.clearRect(0,0,128,128),p.fillStyle="#FF0000",p.font="bold 80px Arial",p.textAlign="center",p.textBaseline="middle",p.fillText(m.toString(),64,64);const a=new s.CanvasTexture(r),d=new s.SpriteMaterial({map:a,transparent:!0,depthTest:!1,depthWrite:!1}),i=new s.Sprite(d),b=n*3;i.scale.set(b,b,1),i.position.copy(h),i.name=`Label_${m}`,i.userData={labelNumber:m},V.add(i)}function Pe(V,m,f){const n=new s.LineCurve3(V,m),g=new s.TubeGeometry(n,2,f,18,!1);return new s.Mesh(g,Ne)}function Re(V,m){const f=new s.CatmullRomCurve3(V,!1,"catmullrom",.01),n=new s.TubeGeometry(f,Math.max(16,V.length*2),m,18,!1);return new s.Mesh(n,Ne)}function _e(V,m,f,n,g,h=0){let c=m.slice(0,g+1);const C=m[g+1];if(C&&h>0){const i={...C,B:(C.B??0)*h,C:(C.C??0)*h};c.push(i)}const u=ke(c),_=Math.max(0,f-u),r=[];r.push(new s.Vector3(0,0,0));const p=new s.Vector3(0,_*Z,0);_>0&&r.push(p);let a={pos:p.clone(),localY:new s.Vector3(0,1,0),localX:new s.Vector3(1,0,0),localZ:new s.Vector3(0,0,1)};const d=[];for(let i=c.length-1;i>=0;i--){const b=c[i],E=Te(b);if(E.length>0){const v=E.map(T=>{const R=T.clone(),k=new s.Matrix4;return k.makeBasis(a.localX,a.localY,a.localZ),R.applyMatrix4(k),R.add(a.pos)});d.push(v);const S=v[v.length-1];a.pos=S.clone();const P=b.B??0,D=b.C??0;if(P!==0){const T=new s.Matrix4().makeRotationAxis(a.localY,H(P));a.localX.applyMatrix4(T),a.localZ.applyMatrix4(T)}if(D>0){const T=H(D),R=new s.Matrix4().makeRotationAxis(a.localZ,T);a.localY.applyMatrix4(R),a.localX.applyMatrix4(R)}}}for(const i of d)i.length>1&&r.push(...i.slice(1));r.length<2&&r.push(new s.Vector3(0,.001,0));try{const i=new s.CatmullRomCurve3(r,!1,"catmullrom",.01),b=new s.TubeGeometry(i,Math.max(2,r.length*4),n*Z,18,!1);V.geometry.dispose(),V.geometry=b}catch(i){console.error("管件更新失败",i)}}function xe(V,m,f,n=0){let g=V.slice(0,f+1);const h=V[f+1];if(h&&n>0){const a={...h,B:(h.B??0)*n,C:(h.C??0)*n};g.push(a)}const c=ke(g),C=Math.max(0,m-c),u=[];u.push(new s.Vector3(0,0,0));const _=new s.Vector3(0,C*Z,0);C>0&&u.push(_);let r={pos:_.clone(),localY:new s.Vector3(0,1,0),localX:new s.Vector3(1,0,0),localZ:new s.Vector3(0,0,1)};const p=[];for(let a=g.length-1;a>=0;a--){const d=g[a],i=Te(d);if(i.length>0){const b=i.map(P=>{const D=P.clone(),T=new s.Matrix4;return T.makeBasis(r.localX,r.localY,r.localZ),D.applyMatrix4(T),D.add(r.pos)});p.push(b);const E=b[b.length-1];r.pos=E.clone();const v=d.B??0,S=d.C??0;if(v!==0){const P=new s.Matrix4().makeRotationAxis(r.localY,H(v));r.localX.applyMatrix4(P),r.localZ.applyMatrix4(P)}if(S>0){const P=H(S),D=new s.Matrix4().makeRotationAxis(r.localZ,P);r.localY.applyMatrix4(D),r.localX.applyMatrix4(D)}}}for(const a of p)a.length>1&&u.push(...a.slice(1));return u.length<2&&u.push(new s.Vector3(0,.001,0)),u}function Ee(V,m,f,n,g,h,c,C=0,u=0){const _=g-u,r=xe(n,_,c,C);let a=xe(f,u,c,C);a.forEach(i=>i.y=-i.y),a.reverse();const d=[...a,...r];try{const i=new s.CatmullRomCurve3(d,!1,"catmullrom",.01),b=new s.TubeGeometry(i,Math.max(2,d.length*4),h*Z,18,!1);m.geometry.dispose(),V.geometry.dispose(),m.parent&&m.parent.remove(m),V.geometry=b}catch(i){console.error("管件更新失败",i)}}const Be={class:"panel-content"},ze={class:"action-bar"},Ae={class:"animation-controls"},$e={class:"control-row"},Fe={class:"control-row"},Ye={class:"frame-info"},Le={class:"control-row"},Ie={class:"progress-bar"},Ue={class:"dialog-footer"},je=e.defineComponent({__name:"animationPanel",props:{model:{},threeData:{}},emits:["getThreeData"],setup(V,{expose:m,emit:f}){const n=V,g=f,h=e.ref(),c=e.ref();e.watch(()=>n.threeData,l=>{const t=l==null?void 0:l.data;c.value=t==null?void 0:t.type},{immediate:!0});const C=async()=>{if(!sessionStorage.getItem("systemKey")){g("getThreeData");return}let t={};c.value===X.robotMode.SINGLE&&(t=await Ce.fetchSingleRobotAnimationData()),c.value===X.robotMode.DOUBLE&&(t=await Ce.fetchDoubleRobotAnimationData());const{initialPipeLength:o=0,pipeRadius:y=0,clampLength:N=0,animationData:x}=t;D.value=o,T.value=y,R.value=N,h.value=x;const O=$.cloneDeep(h.value),K=ce(F.value),q=(O==null?void 0:O["输出(动画数据)"])||[];u.value=q.length?q:[K]},u=e.ref([]),_=e.ref(!1),r=e.ref(""),p=e.ref(!1),a=e.ref(0),d=e.ref(0),i=e.ref(1e3);let b=!1;const E=e.ref(null),v=e.shallowRef(null),S=e.shallowRef(null),P=e.shallowRef(null),D=e.ref(0),T=e.ref(12.5),R=e.ref(30),k=e.ref([]),w=e.ref(null),I=e.computed(()=>n.model?ne.getNonFixedJoints(n.model).map(o=>o.name):[]),G=e.ref(["Y","B","C","R"]),F=e.computed(()=>[...I.value,...G.value]),Y=e.computed(()=>F.value.length>0?`请按以下格式粘贴数据 (第一行为表头,使用 Tab 分隔):
2
- ${F.value.join(" ")}
3
- 0 0 0 ...
4
- 1 2 3 ...`:"请先加载模型。"),J=()=>u.value.map(l=>({Y:parseFloat(l.Y)||0,B:parseFloat(l.B)||0,C:parseFloat(l.C)||0,R:parseFloat(l.R)||0})),U=()=>{const l=[],t=[];return u.value.forEach(o=>{const{Y1:y,B1:N,C1:x,R1:O,Y2:K,B2:q,C2:ie,R2:A}=o;l.push({Y:parseFloat(y)||0,B:parseFloat(N)||0,C:parseFloat(x)||0,R:parseFloat(O)||0}),t.push({Y:parseFloat(K)||0,B:parseFloat(q)||0,C:parseFloat(ie)||0,R:parseFloat(A)||0})}),{posPipeYbcr:l,negPipeYbcr:t}},L=(l=0,t=0)=>{if(v.value&&S.value){const o=U();Ee(v.value,S.value,o.posPipeYbcr,o.negPipeYbcr,D.value,T.value,l,t,R.value)}else if(v.value){const o=J();_e(v.value,o,D.value,T.value,l,t)}},W=l=>{if(l<0||l>=u.value.length){console.error(`帧索引 ${l} 超出范围`);return}const t=u.value[l];if(console.log(`应用第 ${l} 帧数据 ${t}`),a.value=l,E.value){const o={};I.value.forEach(y=>{const N=parseFloat(t[y]);isNaN(N)||(o[y]=N)}),E.value.setJointAngles(o)}L(l,0)},B=async()=>{if(u.value.length===0){$.ElMessage.error("无法播放动画:无数据");return}if(!p.value){p.value=!0,b=!1,u.value.length-1===a.value&&(a.value=0);try{for(let l=a.value+1;l<u.value.length&&!b;l++){a.value=l;const t=u.value[l],o={};E.value&&I.value.forEach(y=>{const N=parseFloat(t[y]);isNaN(N)||(o[y]=N)}),E.value?await E.value.animateToState(o,i.value,y=>{d.value=(l+y)/u.value.length*100,L(l-1,y)}):(await new Promise(y=>setTimeout(y,i.value)),d.value=(l+1)/u.value.length*100)}b||$.ElMessage.success("动画播放完成")}catch(l){console.error("动画播放出错:",l),$.ElMessage.error("动画播放出错")}finally{p.value=!1,d.value=0}}},z=()=>{b=!0,p.value=!1,d.value=0,$.ElMessage.info("动画已停止")},ae=()=>{a.value=0},j=()=>{if(v.value&&S.value){const l=U();Ee(v.value,S.value,l.posPipeYbcr,l.negPipeYbcr,D.value,T.value,-1,0,R.value)}else if(v.value){const l=J();_e(v.value,l,D.value,T.value,-1,0)}},oe=()=>{E.value&&E.value.resetToZero(),j(),ae(),$.ElMessage.success("机器人和管件已重置")},me=l=>`第 ${l+1} 帧`,ve=l=>{p.value&&z(),W(l)},fe=()=>{p.value&&z(),!(a.value+1>=u.value.length)&&W(a.value+1)},ge=()=>{p.value&&z(),a.value!==0&&W(a.value-1)},se=()=>{P.value&&(P.value.visible=!0),v.value&&v.value.parent&&v.value.parent.remove(v.value),P.value=null,v.value=null,S.value=null},ce=l=>l==null?void 0:l.reduce((t,o)=>(t[o]="0",t),{});e.watch(F,(l,t)=>{if(JSON.stringify(l)!==JSON.stringify(t))if(l.length>0){const o=ce(l);u.value=[o]}else u.value=[]},{immediate:!0});const re=e.ref(0),he=l=>{re.value=l},ue=(l,t)=>{if(!l||!t)return;const o=ne.getTargetJoint(l,t),y=Me();y.visible=!1,o==null||o.add(y)},te=l=>{E.value=new X.URDFRobotController(l),k.value=ne.getAllLinkName(l),w.value="Pipe_Joint"},le=()=>{E.value=null,k.value=[],w.value=null},Ve=l=>{te(l),ue(l,w.value),he(re.value+1),oe()};e.watch(()=>n.model,l=>{if(se(),l){Ve(l);return}le()},{immediate:!0});const de=l=>{var o,y;const t=new s.Mesh(l.geometry.clone(),l.material);return t.name="managed_pipe_clone",(y=(o=l==null?void 0:l.parent)==null?void 0:o.add)==null||y.call(o,t),t.position.copy(l.position),t.rotation.copy(l.rotation),t.scale.copy(l.scale),t};e.watch([w,R,D,re],([l,t])=>{if(se(),n.model&&l){const o=ne.getMeshFromJoint(n.model,l);if(console.log(o,"meshToReplace"),o&&o.parent){P.value=o,o.visible=!1;const y=de(o);if(c.value===X.robotMode.SINGLE&&(y.position.y-=t*.001),v.value=y,c.value===X.robotMode.DOUBLE){const N=de(o);S.value=N}L(0,0)}else l&&console.warn(`在 link '${l}' 中未找到可替换的网格或其没有父级。`)}});const be=async()=>{if(F.value.length===0){$.ElMessage.warning("没有可导出的表头");return}const l=F.value.join(" ");try{await navigator.clipboard.writeText(l),$.ElMessage.success("表头已成功复制到剪贴板!")}catch(t){console.error("复制失败:",t),$.ElMessage.error("复制失败,请检查浏览器权限或手动复制。")}},ye=()=>{if(!r.value.trim()){$.ElMessage.warning("导入内容不能为空");return}const l=r.value.trim().split(`
5
- `).filter(x=>x.trim()!=="");if(l.length<2){$.ElMessage.error("导入数据至少需要包含表头行和一行数据");return}const t=l[0].split(" ").map(x=>x.trim()),o={};if(t.forEach((x,O)=>{F.value.includes(x)&&(o[O]=x)}),Object.keys(o).length===0){$.ElMessage.error("没有找到匹配的表头,请检查表头名称是否正确");return}const N=l.slice(1).map(x=>{const O=x.split(" "),K={};return F.value.forEach(q=>{K[q]="0"}),Object.entries(o).forEach(([q,ie])=>{const A=O[parseInt(q)];A!==void 0&&A.trim()!==""&&(K[ie]=A.trim())}),K});N.length>0?(u.value=N,$.ElMessage.success(`成功导入 ${N.length} 行数据!`),_.value=!1,r.value=""):$.ElMessage.error("未能解析到有效数据,请检查格式。")};return e.onUnmounted(()=>{se(),b=!0}),m({playAnimation:B,stopAnimation:z,forwardFrame:fe,backwardFrame:ge}),(l,t)=>{const o=e.resolveComponent("el-icon"),y=e.resolveComponent("el-input-number"),N=e.resolveComponent("el-form-item"),x=e.resolveComponent("el-form"),O=e.resolveComponent("el-slider"),K=e.resolveComponent("el-progress"),q=e.resolveComponent("el-input"),ie=e.resolveComponent("el-dialog");return e.openBlock(),e.createElementBlock("div",Be,[e.createElementVNode("div",ze,[e.createVNode(Q._sfc_main,{onClick:C,modelValue:"获取数据"}),e.createVNode(Q._sfc_main,{onClick:be,disabled:F.value.length===0,modelValue:"导出表头"},null,8,["disabled"]),e.createVNode(Q._sfc_main,{modelValue:"播放",onClick:B,disabled:u.value.length===0||p.value,buttonType:"primary"},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(o,{key:0,class:"is-loading"},{default:e.withCtx(()=>[e.createVNode(e.unref($.loading_default))]),_:1})):e.createCommentVNode("",!0)]),_:1},8,["disabled"]),e.createVNode(Q._sfc_main,{onClick:z,modelValue:"停止",buttonType:"danger"}),e.createVNode(Q._sfc_main,{onClick:oe,modelValue:"重置",buttonType:"primary"})]),e.createElementVNode("div",Ae,[e.createElementVNode("div",$e,[e.createVNode(x,{"label-width":"auto",style:{width:"100%"}},{default:e.withCtx(()=>[e.createVNode(N,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:e.withCtx(()=>[e.createVNode(y,{modelValue:i.value,"onUpdate:modelValue":t[0]||(t[0]=A=>i.value=A),min:100,max:5e3,step:100,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),e.createVNode(N,{label:"管件总长 (mm):",prop:"initialPipeLength"},{default:e.withCtx(()=>[e.createVNode(y,{modelValue:D.value,"onUpdate:modelValue":t[1]||(t[1]=A=>D.value=A),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),e.createVNode(N,{label:"管件半径 (mm):",prop:"pipeRadius"},{default:e.withCtx(()=>[e.createVNode(y,{modelValue:T.value,"onUpdate:modelValue":t[2]||(t[2]=A=>T.value=A),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),e.createVNode(N,{label:"夹持长度 (mm):",prop:"clampLength"},{default:e.withCtx(()=>[e.createVNode(y,{modelValue:R.value,"onUpdate:modelValue":t[3]||(t[3]=A=>R.value=A),min:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),t[10]||(t[10]=e.createElementVNode("div",{class:"control-row"},[e.createElementVNode("label",null,"管件 Mesh:")],-1)),e.createElementVNode("div",Fe,[t[8]||(t[8]=e.createElementVNode("label",null,"当前帧:",-1)),e.createElementVNode("span",Ye,e.toDisplayString(a.value+1)+" / "+e.toDisplayString(u.value.length),1)]),e.createElementVNode("div",Le,[t[9]||(t[9]=e.createElementVNode("label",null,"动画进度:",-1)),e.createVNode(O,{modelValue:a.value,"onUpdate:modelValue":t[4]||(t[4]=A=>a.value=A),min:0,max:u.value.length>0?u.value.length-1:0,step:1,"format-tooltip":me,onInput:ve,disabled:u.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])]),e.createElementVNode("div",Ie,[e.createVNode(K,{percentage:d.value,"show-text":!1,"stroke-width":6},null,8,["percentage"])])]),e.createVNode(ie,{modelValue:_.value,"onUpdate:modelValue":t[7]||(t[7]=A=>_.value=A),title:"导入数据",width:"500px"},{footer:e.withCtx(()=>[e.createElementVNode("span",Ue,[e.createVNode(Q._sfc_main,{modelValue:"取消",onClick:t[6]||(t[6]=A=>_.value=!1)}),e.createVNode(Q._sfc_main,{modelValue:"确认导入",onClick:ye,type:"primary"})])]),default:e.withCtx(()=>[t[11]||(t[11]=e.createElementVNode("p",{class:"import-instructions"}," 请从Excel或csv中复制数据 (首行为表头, Tab分隔) ",-1)),e.createVNode(q,{modelValue:r.value,"onUpdate:modelValue":t[5]||(t[5]=A=>r.value=A),type:"textarea",rows:10,placeholder:Y.value},null,8,["modelValue","placeholder"])]),_:1,__:[11]},8,["modelValue"])])}}}),Ge=we._export_sfc(je,[["__scopeId","data-v-ca681456"]]),Oe=async()=>{const V=["工件库","弯管"],m=await ee.getMenuData(V),f=ee.getTargetGroup("工件列表",m),n=ee.getMainKeysFromGroup(f);return n==null?void 0:n.map(h=>({name:h,mainKey:h}))},Xe=async V=>{const m=["工件库","弯管"],f=await ee.getDetailData(m,V),n=ee.getTargetGroup("弯管基础参数",f),g=ee.getTargetGroup("弯管特征尺寸",f),h={outerDiameter:0,ybcrList:[]},c=ee.getFormData(n),C=ee.getTableData(g);return h.outerDiameter=(c==null?void 0:c.外径)||0,h.ybcrList=C||[],h},Ze={class:"pipe-analysis-dialog-header"},qe={class:"header-right"},Je={class:"pipe-analysis-dialog-body"},We={class:"panel-left"},Ke={class:"pipe-analysis-input"},He={class:"input-params"},Qe={class:"pipe-analysis-output"},et={class:"ouput-params"},tt=e.defineComponent({__name:"pipeAnalysisPanel",emits:["nodeClick","visibleChange","updatePosition","updateRotation"],setup(V,{expose:m,emit:f}){const n=e.ref(null),g=e.shallowRef(null),{initThreeJS:h,handleResize:c,cleanup:C,clearAllModels:u,addModelAndFit:_}=pe.useThreeJS(n);e.ref(null);const r=e.ref({file:null,pipe:""});e.ref(null),e.ref(!1);const p=e.ref([]),a=k=>{p.value=k};e.ref("ybcr");const d=e.ref({form:{},list:[],reverse:!1}),i=k=>{const{length:w,outerDiameter:I,innerDiameter:G,thickness:F,ybcrList:Y}=k||{};d.value.form={length:w,outerDiameter:I,innerDiameter:G,thickness:F},d.value.list=Y},b=()=>{const{form:k,list:w}=d.value,{outerDiameter:I}=k,G=I/2,F=w==null?void 0:w.map(J=>{const{y:U,b:L,c:W,r:B,Y:z,B:ae,C:j,R:oe}=J;return z?{Y:z,B:ae,C:j,R:oe}:{Y:U,B:L,C:W,R:B}});u();const Y=Se(F,G);_(Y)},E=e.ref(!1),v=()=>{const k=E.value;E.value=!k},S=e.ref(!1),P=()=>{S.value=!1},D=()=>{S.value=!0},T=async()=>{const k=await Oe();a(k)},R=async k=>{const w=await Xe(k);i(w)};return e.watch(()=>d,()=>{b()},{deep:!0}),e.watch(()=>n,()=>{try{if(g.value)return;h(),window.addEventListener("resize",c)}catch(k){console.error("Three.js 初始化失败:",k),$.ElMessage.error("渲染引擎初始化失败!")}},{deep:!0}),e.onMounted(async()=>{T()}),e.onBeforeUnmount(()=>{window.removeEventListener("resize",c),C()}),m({openDialog:D}),(k,w)=>{const I=e.resolveComponent("el-icon"),G=e.resolveComponent("el-option"),F=e.resolveComponent("el-select"),Y=e.resolveComponent("el-form-item"),J=e.resolveComponent("el-form"),U=e.resolveComponent("el-input"),L=e.resolveComponent("el-table-column"),W=e.resolveComponent("el-table");return e.openBlock(),e.createBlock(Q.ssDialog,{class:"pipe-analysis-dialog",visible:S.value,onBeforeDestroy:k.onDestroy,showClose:!1,fullScreen:E.value},{header:e.withCtx(()=>[e.createElementVNode("div",Ze,[w[6]||(w[6]=e.createElementVNode("div",{class:"header-left",title:"管件解析"}," 管件解析 ",-1)),e.createElementVNode("div",qe,[e.createVNode(I,null,{default:e.withCtx(()=>[e.createVNode(e.unref($.full_screen_default),{onClick:v})]),_:1}),e.createVNode(I,null,{default:e.withCtx(()=>[e.createVNode(e.unref($.close_default),{onClick:P})]),_:1})])])]),default:e.withCtx(()=>[e.createElementVNode("div",Je,[e.createElementVNode("div",We,[e.createElementVNode("div",Ke,[w[7]||(w[7]=e.createElementVNode("span",{class:"item-view-group"},[e.createElementVNode("span",{class:"group-name-wrap"},"输入")],-1)),e.createElementVNode("div",He,[e.createVNode(J,{model:r.value,"label-width":"auto","label-position":"top"},{default:e.withCtx(()=>[e.createVNode(Y,{label:"弯管"},{default:e.withCtx(()=>[e.createVNode(F,{modelValue:r.value.pipe,"onUpdate:modelValue":w[0]||(w[0]=B=>r.value.pipe=B),placeholder:"请选择弯管",onChange:R},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,B=>(e.openBlock(),e.createBlock(G,{label:B.name,value:B.mainKey},null,8,["label","value"]))),256))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),e.createElementVNode("div",Qe,[e.createVNode(Y,{label:"加工方向"},{default:e.withCtx(()=>[e.createVNode(F,{modelValue:d.value.reverse,"onUpdate:modelValue":w[1]||(w[1]=B=>d.value.reverse=B),placeholder:"请选择加工方向"},{default:e.withCtx(()=>[e.createVNode(G,{label:"正向",value:!1}),e.createVNode(G,{label:"反向",value:!0})]),_:1},8,["modelValue"])]),_:1}),w[8]||(w[8]=e.createElementVNode("span",{class:"item-view-group"},[e.createElementVNode("span",{class:"group-name-wrap"},"输出(弯管基础参数)")],-1)),e.createElementVNode("div",et,[e.createVNode(J,{model:d.value.form,"label-width":"auto","label-position":"top",inline:!0},{default:e.withCtx(()=>[e.createVNode(Y,{label:"管长"},{default:e.withCtx(()=>[e.createVNode(U,{modelValue:d.value.form.length,"onUpdate:modelValue":w[2]||(w[2]=B=>d.value.form.length=B)},null,8,["modelValue"])]),_:1}),e.createVNode(Y,{label:"外径"},{default:e.withCtx(()=>[e.createVNode(U,{modelValue:d.value.form.outerDiameter,"onUpdate:modelValue":w[3]||(w[3]=B=>d.value.form.outerDiameter=B)},null,8,["modelValue"])]),_:1}),e.createVNode(Y,{label:"内径"},{default:e.withCtx(()=>[e.createVNode(U,{modelValue:d.value.form.innerDiameter,"onUpdate:modelValue":w[4]||(w[4]=B=>d.value.form.innerDiameter=B)},null,8,["modelValue"])]),_:1}),e.createVNode(Y,{label:"壁厚"},{default:e.withCtx(()=>[e.createVNode(U,{modelValue:d.value.form.thickness,"onUpdate:modelValue":w[5]||(w[5]=B=>d.value.form.thickness=B)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"]),e.createVNode(W,{ref:"singleTableRef",data:d.value.list,"highlight-current-rowstyle":"width: 100%"},{default:e.withCtx(()=>[e.createVNode(L,{type:"index",width:"50"}),e.createVNode(L,{property:"y",label:"Y"}),e.createVNode(L,{property:"b",label:"B"}),e.createVNode(L,{property:"c",label:"C"}),e.createVNode(L,{property:"r",label:"R"})]),_:1},8,["data"])])])]),e.createElementVNode("div",{class:"panel-right",ref_key:"threejsContainer",ref:n},null,512)])]),_:1},8,["visible","onBeforeDestroy","fullScreen"])}}}),ot=we._export_sfc(tt,[["__scopeId","data-v-61e834a4"]]),lt={class:"obj-viewer-container"},nt={class:"pipe-comparison"},at={ref:"pipe1",class:"pipe-container"},st={ref:"pipe2",class:"pipe-container"},rt={class:"buttonGroup-top"},it={class:"buttonGroup-topLeft"},ct={class:"buttonGroup-left"},ut={class:"buttonGroup-right"},dt={class:"buttonGroup-bottom"},pt={class:"top-panel"},mt={class:"panel-header"},vt={class:"panel-body"},ft={class:"left-panel"},gt={class:"panel-header"},ht={class:"panel-body"},Vt={key:1,class:"clipping-content"},bt={class:"radio-group"},yt={class:"radio-label"},wt={class:"radio-label"},Nt={class:"radio-label"},Ct={class:"radio-label"},_t={class:"right-panel"},xt={class:"panel-header"},Et={class:"panel-body"},kt={key:0,class:"loading-overlay"},Tt=e.defineComponent({__name:"threeSceneView",props:{fileBlobs:{default:()=>[]},animationData:{default:()=>({})},threeData:{}},emits:["getAnimationData","getThreeData"],setup(V,{emit:m}){const f=m,n=V,g=e.ref(X.sceneType.ROBOT),h=e.ref(null),c=e.ref(),C=e.ref(!1),u=e.ref(""),_=e.ref(!1),r=e.ref(""),p=e.ref(!1),a=e.ref(""),d=e.ref(!1),i=e.ref(""),b=e.shallowRef(null),E=e.shallowRef(null),v=e.ref(),{currentModels:S,resetView:P,initThreeJS:D,handleResize:T,getThreeJSObjects:R,cleanup:k,setModels:w,axesHelperVisible:I,toggleAxesVisibility:G,zoomIn:F,zoomOut:Y}=pe.useThreeJS(h),{loadSceneFromFile:J}=X.useUrdfLoader(R,S,C,u),{isAnimating:U,toggleAnimation:L,stopAnimation:W}=pe.useAnimation(R,S),{isClipping:B,activeClippingAxis:z,toggleClipping:ae,updateClippingPlanes:j}=pe.useClipping(R,S),{initRaycaster:oe,selectedObject3D:me,setSelectedObjVisible:ve,updatePosition:fe,updateRotation:ge,dispose:se}=X.useRaycaster(h,R,S),ce=()=>{G()},re=e.computed(()=>g.value===X.sceneType.ROBOT),he=e.computed(()=>g.value===X.sceneType.PIPECOMPARSION),ue=t=>{var o;i.value=t,i.value==="弯管解析"?(o=c.value)==null||o.openDialog():d.value=!0},te=t=>{_.value=!0,r.value=t,t==="剖面视图"&&!B.value&&ae()},le=t=>{p.value=!0,a.value=t,t==="动画仿真"&&f("getAnimationData")},Ve=()=>{f("getThreeData")},de=()=>{var t;(t=v==null?void 0:v.value)==null||t.playAnimation()},be=()=>{var t;(t=v==null?void 0:v.value)==null||t.stopAnimation()},ye=()=>{var t;(t=v==null?void 0:v.value)==null||t.forwardFrame()},l=()=>{var t;(t=v==null?void 0:v.value)==null||t.backwardFrame()};return e.watch(()=>n.fileBlobs,t=>{if(t&&t.length>0){const o=t[0];if(!o.name.toLowerCase().endsWith(".urdf"))return;J(o).then(y=>{b.value=y}).catch(y=>{console.error("加载URDF文件时发生错误:",y),$.ElMessage.error("加载urdf模型失败"),b.value=null})}else b.value=null},{immediate:!0,deep:!0}),e.watch(b,t=>{w(t?[t]:[]),oe()}),e.onMounted(async()=>{await e.nextTick();try{D(),window.addEventListener("resize",T);const t=R();E.value=t.scene}catch(t){console.error("Three.js 初始化失败:",t),$.ElMessage.error("渲染引擎初始化失败!")}}),e.onBeforeUnmount(()=>{r.value="",a.value="",window.removeEventListener("resize",T),U.value&&W(),k(),se()}),(t,o)=>{const y=e.resolveComponent("el-scrollbar");return e.openBlock(),e.createElementBlock("div",lt,[e.withDirectives(e.createElementVNode("div",{ref_key:"threejsContainer",ref:h,class:"threejs-container"},null,512),[[e.vShow,re.value]]),e.withDirectives(e.createElementVNode("div",nt,[e.createElementVNode("div",at,null,512),e.createElementVNode("div",st,null,512)],512),[[e.vShow,he.value]]),e.createElementVNode("div",rt,[e.renderSlot(t.$slots,"button-top",{switchTopPanel:ue},void 0,!0),e.createVNode(M.ThreeSvgIcon,{name:"guanjianjiexi",size:"34",onClick:o[0]||(o[0]=N=>ue("弯管解析"))}),e.createVNode(M.ThreeSvgIcon,{name:"guanjiekongzhi",size:"34"}),e.createVNode(M.ThreeSvgIcon,{name:"gongyishengcheng",size:"34"}),e.createVNode(M.ThreeSvgIcon,{name:"buchangshezhi",size:"34"}),e.createVNode(M.ThreeSvgIcon,{name:"shuchujiagongchengxu",size:"34"}),e.renderSlot(t.$slots,"logout",{},void 0,!0)]),e.createElementVNode("div",it,[e.createVNode(M.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:e.unref(P),title:"重置"},null,8,["onClick"]),e.createVNode(M.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大",onClick:e.unref(F)},null,8,["onClick"]),e.createVNode(M.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小",onClick:e.unref(Y)},null,8,["onClick"]),e.createVNode(M.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:e.unref(L),title:e.unref(U)?"停止动画":"动画视图"},null,8,["onClick","title"]),e.createVNode(M.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:e.unref(I),onClick:ce,title:"显隐坐标轴"},null,8,["active"])]),e.createElementVNode("div",ct,[e.renderSlot(t.$slots,"button-left",{switchRightPanel:te},void 0,!0),e.createVNode(M.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:o[1]||(o[1]=N=>te("场景树")),active:_.value&&r.value==="场景树",title:"场景树"},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"clipping",size:"24",onClick:o[2]||(o[2]=N=>te("剖面视图")),active:_.value&&r.value==="剖面视图",title:"剖面视图"},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"zhaozi",size:"24",onClick:o[3]||(o[3]=N=>te("工件树")),active:_.value&&r.value==="工件树",title:"工件 "},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",onClick:o[4]||(o[4]=N=>te("场景4"))})]),e.createElementVNode("div",ut,[e.renderSlot(t.$slots,"button-right",{switchRightPanel:le},void 0,!0),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24"}),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24"}),e.createVNode(M.ThreeSvgIcon,{name:"guanjiekongzhi",size:"24",onClick:o[5]||(o[5]=N=>le("关节控制")),active:p.value&&a.value==="关节控制",title:"关节控制"},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:o[6]||(o[6]=N=>le("动画仿真")),active:p.value&&a.value==="动画仿真"},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"urdf动画",onClick:o[7]||(o[7]=N=>le("urdf动画")),active:p.value&&a.value==="urdf动画"},null,8,["active"]),e.createVNode(M.ThreeSvgIcon,{name:"donghuafangzhen",size:"24"})]),e.createElementVNode("div",dt,[e.createVNode(M.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:l}),e.createVNode(M.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:de}),e.createVNode(M.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:ye}),e.createVNode(M.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:be})]),e.withDirectives(e.createElementVNode("div",pt,[e.createElementVNode("div",mt,[e.createElementVNode("span",null,e.toDisplayString(i.value),1),e.createElementVNode("span",{class:"close",onClick:o[8]||(o[8]=N=>d.value=!1)}," X ")]),e.createElementVNode("div",vt,[e.createVNode(y,{height:"100%"},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"top-panel",{topPanelType:i.value},void 0,!0)]),_:3})])],512),[[e.vShow,d.value]]),e.withDirectives(e.createElementVNode("div",ft,[e.createElementVNode("div",gt,[e.createElementVNode("span",null,e.toDisplayString(r.value),1),e.createElementVNode("span",{class:"close",onClick:o[9]||(o[9]=N=>_.value=!1)}," X ")]),e.createElementVNode("div",ht,[e.createVNode(y,{height:"100%"},{default:e.withCtx(()=>{var N;return[r.value==="场景树"?(e.openBlock(),e.createBlock(ne.UrdfTree,{key:0,model:b.value},null,8,["model"])):e.createCommentVNode("",!0),r.value==="剖面视图"?(e.openBlock(),e.createElementBlock("div",Vt,[e.createElementVNode("div",bt,[e.createElementVNode("label",yt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":o[10]||(o[10]=x=>e.isRef(z)?z.value=x:null),onChange:o[11]||(o[11]=(...x)=>e.unref(j)&&e.unref(j)(...x))},null,544),[[e.vModelRadio,e.unref(z)]]),o[19]||(o[19]=e.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),e.createElementVNode("label",wt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":o[12]||(o[12]=x=>e.isRef(z)?z.value=x:null),onChange:o[13]||(o[13]=(...x)=>e.unref(j)&&e.unref(j)(...x))},null,544),[[e.vModelRadio,e.unref(z)]]),o[20]||(o[20]=e.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),e.createElementVNode("label",Nt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":o[14]||(o[14]=x=>e.isRef(z)?z.value=x:null),onChange:o[15]||(o[15]=(...x)=>e.unref(j)&&e.unref(j)(...x))},null,544),[[e.vModelRadio,e.unref(z)]]),o[21]||(o[21]=e.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),e.createElementVNode("label",Ct,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":o[16]||(o[16]=x=>e.isRef(z)?z.value=x:null),onChange:o[17]||(o[17]=(...x)=>e.unref(j)&&e.unref(j)(...x))},null,544),[[e.vModelRadio,e.unref(z)]]),o[22]||(o[22]=e.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):e.createCommentVNode("",!0),r.value==="工件树"?(e.openBlock(),e.createBlock(X.WorkpieceTreePanel,{key:2,model:(N=e.unref(me))==null?void 0:N.obj,onVisibleChange:e.unref(ve),onUpdatePosition:e.unref(fe),onUpdateRotation:e.unref(ge)},null,8,["model","onVisibleChange","onUpdatePosition","onUpdateRotation"])):e.createCommentVNode("",!0)]}),_:1})])],512),[[e.vShow,_.value]]),e.withDirectives(e.createElementVNode("div",_t,[e.createElementVNode("div",xt,[e.createElementVNode("span",null,e.toDisplayString(a.value),1),e.createElementVNode("span",{class:"close",onClick:o[18]||(o[18]=N=>p.value=!1)}," X ")]),e.createElementVNode("div",Et,[e.createVNode(y,{height:"100%"},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(ne.JointPanel,{model:b.value},null,8,["model"]),[[e.vShow,a.value==="关节控制"]]),e.withDirectives(e.createVNode(Ge,{ref_key:"animationPanelRef",ref:v,model:b.value,onGetThreeData:Ve,threeData:n.threeData},null,8,["model","threeData"]),[[e.vShow,a.value==="动画仿真"]]),e.renderSlot(t.$slots,"right-panel",{rightPanelType:a.value},void 0,!0)]),_:3})])],512),[[e.vShow,p.value]]),C.value?(e.openBlock(),e.createElementBlock("div",kt,[o[23]||(o[23]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(u.value),1)])):e.createCommentVNode("",!0),e.createVNode(ot,{ref_key:"pipeAnalysisPanelRef",ref:c},null,512)])}}}),Mt=we._export_sfc(Tt,[["__scopeId","data-v-0b5b1f0b"]]);exports.default=Mt;