ss-component-new 1.2.165 → 1.2.166

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 (111) hide show
  1. package/dist/{MTLLoader-DqSL2MhN.cjs → MTLLoader-DLHG9vWs.cjs} +1 -1
  2. package/dist/{MTLLoader-CZI-laNK.js → MTLLoader-DiZPxyri.js} +1 -1
  3. package/dist/{OrbitControls-suq0N_mu.cjs → OrbitControls-BQ2FPaVt.cjs} +1 -1
  4. package/dist/{OrbitControls-BGIh288-.js → OrbitControls-DTxAZ5uy.js} +1 -1
  5. package/dist/{animationData-bLISc5AB.cjs → animationData-By-roVYO.cjs} +1 -1
  6. package/dist/{animationData-DPk8z-Qc.js → animationData-G8UlGfAg.js} +2 -2
  7. package/dist/{array-DXu383Fa.cjs → array-DSI0zoeK.cjs} +1 -1
  8. package/dist/{array-B9gWNnej.js → array-hVSP5aMP.js} +1 -1
  9. package/dist/{dataUtil-Brpg9CSN.cjs → dataUtil-CqQ6nLIT.cjs} +1 -1
  10. package/dist/{dataUtil-DcGEuoWS.js → dataUtil-Db9ZcUfi.js} +1 -1
  11. package/dist/{iconfont-C-jLDDui.js → iconfont-DDhe-BUl.js} +2 -2
  12. package/dist/{iconfont-CpbN39ZP.cjs → iconfont-ZL_6BkHR.cjs} +1 -1
  13. package/dist/{index-Djli8zb_.cjs → index-0tBTYGKK.cjs} +1 -1
  14. package/dist/{index-X7rj3Bau.cjs → index-B08WJoPH.cjs} +1 -1
  15. package/dist/{index-D6ZtjYlX.cjs → index-B6VnMtMB.cjs} +1 -1
  16. package/dist/{index-BJ6RWIyr.cjs → index-BAHt3Bu3.cjs} +1 -1
  17. package/dist/{index-e3-jEBsv.js → index-BB2L3FNC.js} +2 -2
  18. package/dist/{index-BbxeIFLk.cjs → index-BGINM1ks.cjs} +1 -1
  19. package/dist/{index-Ojz4i3x-.js → index-BKuG3c9f.js} +5 -5
  20. package/dist/{index-CcAVElxY.js → index-BMonRqrI.js} +877 -877
  21. package/dist/{index-D2Wj4a2B.cjs → index-BR9EBw7N.cjs} +1 -1
  22. package/dist/{index-DHMUS6aq.cjs → index-BSUi85HP.cjs} +1 -1
  23. package/dist/{index-AUfoE1wx.cjs → index-BT26HF4q.cjs} +1 -1
  24. package/dist/{index-CiG2rXe1.cjs → index-BWrJa_TO.cjs} +1 -1
  25. package/dist/{index-B0iWiP90.cjs → index-BZ7X6w42.cjs} +1 -1
  26. package/dist/{index-OZj8RHsD.js → index-BaWTomAx.js} +2 -2
  27. package/dist/{index-DMB7b-Hz.js → index-BbdN9UIl.js} +1 -1
  28. package/dist/{index-C3iKpqMM.js → index-BdBdQUua.js} +3 -3
  29. package/dist/{index-BPdtmXp7.js → index-BkV1vzN4.js} +5 -5
  30. package/dist/{index-CGRTa_BX.js → index-Bp2u-xw_.js} +3 -3
  31. package/dist/{index-D9GdiI96.js → index-BpQQAZir.js} +5 -5
  32. package/dist/{index-Dv9gqpfs.js → index-CF7x5YCK.js} +5 -5
  33. package/dist/{index-BRkEjdIb.cjs → index-CHqr5wBd.cjs} +1 -1
  34. package/dist/{index-mDbSepFg.cjs → index-CKa59k9C.cjs} +1 -1
  35. package/dist/{index-CGm-MNi_.js → index-COGhA0Yf.js} +7 -7
  36. package/dist/{index-BRJMluce.cjs → index-CP9bLJ_L.cjs} +1 -1
  37. package/dist/{index-CQx1Np10.js → index-CT4RgoX4.js} +1 -1
  38. package/dist/{index-BPxDakwE.cjs → index-CThVsYAd.cjs} +1 -1
  39. package/dist/{index-BFMKEtGJ.js → index-CWpLpifR.js} +1 -1
  40. package/dist/{index-CqMsb2pW.cjs → index-CebVyoCl.cjs} +1 -1
  41. package/dist/{index-CR1PuEcf.js → index-CfWyd_l0.js} +1 -1
  42. package/dist/{index-Bfve7oz4.js → index-CfwKwZ3G.js} +2 -2
  43. package/dist/{index-173y0My_.js → index-Cm0SRhxt.js} +2 -2
  44. package/dist/{index-CSUfNuHC.cjs → index-Cnv7Inld.cjs} +1 -1
  45. package/dist/{index-BQQne5Jf.js → index-D4jdGfpn.js} +2 -2
  46. package/dist/{index-C_U3JqBH.cjs → index-D4mR-sHJ.cjs} +1 -1
  47. package/dist/{index-UxbTehx5.cjs → index-DAqoWq8u.cjs} +1 -1
  48. package/dist/{index-B3USisdg.js → index-DBkloVus.js} +19 -19
  49. package/dist/{index-DWozj8SO.cjs → index-DFa4xUcC.cjs} +1 -1
  50. package/dist/{index-Dr9Egq23.js → index-DOaO7KkQ.js} +1 -1
  51. package/dist/{index-DW4LUPva.cjs → index-DX7zT2RF.cjs} +1 -1
  52. package/dist/{index-t_moO5vN.cjs → index-DXjFAdeI.cjs} +1 -1
  53. package/dist/{index-B1zHaED0.js → index-D_JEtscY.js} +2 -2
  54. package/dist/{index-CnKMnhNZ.cjs → index-Dbih6a0y.cjs} +1 -1
  55. package/dist/{index-DzBBqrxe.js → index-Dc6Zn98q.js} +2 -2
  56. package/dist/{index-AYV5pgUp.cjs → index-DkMX2HkQ.cjs} +1 -1
  57. package/dist/{index-CzZ3NFp5.cjs → index-ED7a0ufp.cjs} +1 -1
  58. package/dist/{index-gcMT9ql0.js → index-EVRwHh-Y.js} +4 -4
  59. package/dist/{index-BxneVVKn.cjs → index-Fev7kp4Q.cjs} +1 -1
  60. package/dist/{index-EqgbW679.js → index-GR-D5xOi.js} +1 -1
  61. package/dist/{index-CIoVLl8r.js → index-RhBv3eG3.js} +1 -1
  62. package/dist/{index-u963fvJq.js → index-Y5EIVsCv.js} +1 -1
  63. package/dist/{index-ft2Sbu_F.cjs → index-c9mgIgXD.cjs} +1 -1
  64. package/dist/index-dbCK5n4i.cjs +1 -0
  65. package/dist/{index-BZvDnQdj.js → index-s3nl8JNm.js} +1 -1
  66. package/dist/{index-B2Fw6gYI.js → index-wBztarM7.js} +2 -2
  67. package/dist/{index-CwKRxn4d.cjs → index-wJjLPgsT.cjs} +1 -1
  68. package/dist/{index-B8ZpZmFH.js → index-zfbKyJsL.js} +11 -11
  69. package/dist/{index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-0w_WkXKi.js → index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-BAxvHILQ.js} +11 -11
  70. package/dist/{index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-Z4PcDNHn.cjs → index.vue_vue_type_style_index_0_scoped_0b6f1a18_lang-fAgP2ETK.cjs} +1 -1
  71. package/dist/{index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BrO2CG13.js → index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Cb5M-Cn4.js} +1648 -1643
  72. package/dist/{index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-v_tZRKeY.cjs → index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DaF8XJ8v.cjs} +59 -59
  73. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-BojpP-bI.js → index.vue_vue_type_style_index_0_scoped_92477073_lang-BiC2ra_Y.js} +5 -5
  74. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-D5yZqgZw.cjs → index.vue_vue_type_style_index_0_scoped_92477073_lang-DM1wMSXt.cjs} +1 -1
  75. package/dist/{index.vue_vue_type_style_index_1_lang-V6_Ex77u.cjs → index.vue_vue_type_style_index_1_lang-CIkXLXnr.cjs} +1 -1
  76. package/dist/{index.vue_vue_type_style_index_1_lang-_MRLV2pU.cjs → index.vue_vue_type_style_index_1_lang-CeCV2qWI.cjs} +1 -1
  77. package/dist/{index.vue_vue_type_style_index_1_lang-wEVof7j-.js → index.vue_vue_type_style_index_1_lang-CpFhVt0X.js} +4 -4
  78. package/dist/{index.vue_vue_type_style_index_1_lang-DCNwSjkL.js → index.vue_vue_type_style_index_1_lang-DojDVre8.js} +1 -1
  79. package/dist/{main-DoNgEyOK.cjs → main-BvPseoz-.cjs} +1 -1
  80. package/dist/{main-CcTySLlm.js → main-Bz9fB17S.js} +4 -4
  81. package/dist/obj/model.mtl +42 -0
  82. package/dist/obj/model.obj +26110 -0
  83. package/dist/{pointTrack-Dcp686Ea.cjs → pointTrack-CPO9-bf6.cjs} +1 -1
  84. package/dist/{pointTrack-CpqyoYjd.js → pointTrack-D9n7TSzE.js} +1 -1
  85. package/dist/{robotUtil-D79UKi8S.js → robotUtil-BFjMJVdz.js} +1 -1
  86. package/dist/{robotUtil-tvll1beF.cjs → robotUtil-NrP32vJA.cjs} +1 -1
  87. package/dist/ss-component.cjs +1 -1
  88. package/dist/ss-component.css +1 -1
  89. package/dist/ss-component.js +10 -10
  90. package/dist/ss-component2.cjs +1 -1
  91. package/dist/ss-component2.js +11 -11
  92. package/dist/{threeModel-DOPXXUCN.js → threeModel-B75qxvTb.js} +5 -5
  93. package/dist/{threeModel-CxCbnx-G.cjs → threeModel-CkP5M3fH.cjs} +1 -1
  94. package/dist/{threePreview-CvFFnufL.js → threePreview-BhigaS7l.js} +3 -3
  95. package/dist/{threePreview-Bu9WzFI1.cjs → threePreview-Ns7H_etR.cjs} +1 -1
  96. package/dist/{threeSceneView-pqmQCs1f.cjs → threeSceneView-CxVzPghK.cjs} +1 -1
  97. package/dist/{threeSceneView-BxY31hG2.js → threeSceneView-gGu_Tiet.js} +11 -11
  98. package/dist/{threeSceneViewForCPMPIP-zbXTglaB.js → threeSceneViewForCPMPIP-ByeK_Nsi.js} +10 -10
  99. package/dist/{threeSceneViewForCPMPIP-BdIt67iR.cjs → threeSceneViewForCPMPIP-CNvLUDoy.cjs} +1 -1
  100. package/dist/{threeTrackPathView-OwpZN5Yj.js → threeTrackPathView-BkvgX6iD.js} +5 -5
  101. package/dist/{threeTrackPathView-BTCabEa-.cjs → threeTrackPathView-eDXMz43B.cjs} +1 -1
  102. package/dist/{threeViewerHost-Dv-zRfI9.js → threeViewerHost-CNIsWoK3.js} +3 -3
  103. package/dist/{threeViewerHost-CQAQgsH3.cjs → threeViewerHost-MWedRVF2.cjs} +2 -2
  104. package/dist/{urdfTree-CUgm69Ah.js → urdfTree-CjCnTExe.js} +1 -1
  105. package/dist/{urdfTree-jtHwasZ-.cjs → urdfTree-NsMmy6lF.cjs} +1 -1
  106. package/dist/{workpieceTreePanel-CpYo8N4J.js → workpieceTreePanel-C7_41Iqz.js} +5 -5
  107. package/dist/{workpieceTreePanel-CGCTSCMV.cjs → workpieceTreePanel-MOJxvcHc.cjs} +1 -1
  108. package/package.json +1 -1
  109. package/public/obj/model.mtl +42 -0
  110. package/public/obj/model.obj +26110 -0
  111. package/dist/index-BdD3L97f.cjs +0 -1
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),O=require("./workpieceTreePanel-CGCTSCMV.cjs"),de=require("./iconfont-CpbN39ZP.cjs"),A=require("./index-C8qRkCgn.cjs"),s=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-v_tZRKeY.cjs");require("./index.vue_vue_type_style_index_1_lang-_MRLV2pU.cjs");require("./index-BpPyaNFa.cjs");const Q=require("./index-DWozj8SO.cjs");require("./index.vue_vue_type_style_index_1_lang-V6_Ex77u.cjs");const Y=require("./robotUtil-tvll1beF.cjs");require("./index-DHMUS6aq.cjs");const Ne=require("./animationData-bLISc5AB.cjs"),ye=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Ce=require("./urdfTree-jtHwasZ-.cjs"),ee=require("./dataUtil-Brpg9CSN.cjs"),F=require("./svgIcon-CUM54R6L.cjs"),K=s.MathUtils.degToRad,we=new s.MeshStandardMaterial({color:13421772,metalness:.3,roughness:.6,side:s.DoubleSide});function Te(V=.005,p=64){const f=new s.CatmullRomCurve3([new s.Vector3(0,0,0),new s.Vector3(0,0,0)]),n=new s.TubeGeometry(f,p,V,16,!1),g=we;return new s.Mesh(n,g)}const ke=V=>V.reduce((p,f)=>{let n=0;const g=f.Y??0,h=f.C??0,u=f.R??0;return g>0&&(n+=g),h>0&&u>0&&(n+=u*K(h)),p+n},0),Me=V=>{const p=[],f=V.Y??0,n=V.B??0,g=V.C??0,h=V.R??0,u={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 p;if(p.push(u.pos.clone()),n!==0){const _=new s.Matrix4().makeRotationAxis(u.localY,K(n));u.localX.applyMatrix4(_),u.localZ.applyMatrix4(_)}if(f>0&&(u.pos.add(u.localY.clone().multiplyScalar(f*Y.mm2m)),p.push(u.pos.clone())),g>0&&h>0){const _=K(g),c=h*Y.mm2m,x=u.pos.clone().add(u.localX.clone().multiplyScalar(-c)),r=Math.max(16,Math.ceil(g/5));for(let m=1;m<=r;m++){const a=_*m/r,d=new s.Matrix4().makeRotationAxis(u.localZ,a),b=u.localX.clone().multiplyScalar(c).applyMatrix4(d),k=x.clone().add(b);p.push(k)}}return p};function Se(V,p){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 u=0;u<V.length;u++){const _=V[u],c=_.Y??0,x=_.B??0,r=_.C??0,m=_.R??0;if(x!==0){const a=new s.Matrix4().makeRotationAxis(n.localY,K(x));n.localX.applyMatrix4(a),n.localZ.applyMatrix4(a)}if(c>0){const a=n.pos.clone();n.pos.add(n.localY.clone().multiplyScalar(c*Y.mm2m));const d=n.pos.clone(),i=Pe(a,d,p*Y.mm2m);i.userData={segmentType:"straight",segmentIndex:g,frameIndex:u,length:c,frame:{Y:c,B:x,C:r,R:m}},i.name=`直段_${g}`,f.add(i);const b=a.clone();De(f,h,b,p*Y.mm2m),g++}if(r>0&&m>0){const a=K(r),d=m*Y.mm2m,i=[];i.push(n.pos.clone());const b=n.pos.clone().add(n.localX.clone().multiplyScalar(-d)),k=Math.max(16,Math.ceil(r/5));for(let P=1;P<=k;P++){const S=a*P/k,D=new s.Matrix4().makeRotationAxis(n.localZ,S),L=n.localX.clone().multiplyScalar(d).applyMatrix4(D),M=b.clone().add(L);i.push(M)}const v=Re(i,p*Y.mm2m);v.userData={segmentType:"bend",segmentIndex:g,frameIndex:u,angle:r,radius:m,centerPoint:b.toArray(),frame:{Y:c,B:x,C:r,R:m}},v.name=`弯段_${g}`,f.add(v),Math.floor(i.length/2),i[0],n.pos=i[i.length-1].clone();const T=new s.Matrix4().makeRotationAxis(n.localZ,a);n.localY.applyMatrix4(T),n.localX.applyMatrix4(T),g++,h++}}return f}function De(V,p,f,n){const g=new s.Vector3(0,n*2,n*5),h=f.clone().add(g),u=[f,h],_=new s.BufferGeometry().setFromPoints(u),c=new s.LineDashedMaterial({color:16711680,dashSize:n*.5,gapSize:n*.3,linewidth:1}),x=new s.Line(_,c);x.computeLineDistances(),V.add(x);const r=document.createElement("canvas"),m=r.getContext("2d");r.width=128,r.height=128,m.clearRect(0,0,128,128),m.fillStyle="#FF0000",m.font="bold 80px Arial",m.textAlign="center",m.textBaseline="middle",m.fillText(p.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_${p}`,i.userData={labelNumber:p},V.add(i)}function Pe(V,p,f){const n=new s.LineCurve3(V,p),g=new s.TubeGeometry(n,2,f,18,!1);return new s.Mesh(g,we)}function Re(V,p){const f=new s.CatmullRomCurve3(V,!1,"catmullrom",.01),n=new s.TubeGeometry(f,Math.max(16,V.length*2),p,18,!1);return new s.Mesh(n,we)}function _e(V,p,f,n,g,h=0){let u=p.slice(0,g+1);const _=p[g+1];if(_&&h>0){const i={..._,B:(_.B??0)*h,C:(_.C??0)*h};u.push(i)}const c=ke(u),x=Math.max(0,f-c),r=[];r.push(new s.Vector3(0,0,0));const m=new s.Vector3(0,x*Y.mm2m,0);x>0&&r.push(m);let a={pos:m.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=u.length-1;i>=0;i--){const b=u[i],k=Me(b);if(k.length>0){const v=k.map(D=>{const R=D.clone(),L=new s.Matrix4;return L.makeBasis(a.localX,a.localY,a.localZ),R.applyMatrix4(L),R.add(a.pos)});d.push(v);const T=v[v.length-1];a.pos=T.clone();const P=b.B??0,S=b.C??0;if(P!==0){const D=new s.Matrix4().makeRotationAxis(a.localY,K(P));a.localX.applyMatrix4(D),a.localZ.applyMatrix4(D)}if(S>0){const D=K(S),R=new s.Matrix4().makeRotationAxis(a.localZ,D);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*Y.mm2m,18,!1);V.geometry.dispose(),V.geometry=b}catch(i){console.error("管件更新失败",i)}}function xe(V,p,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 u=ke(g),_=Math.max(0,p-u),c=[];c.push(new s.Vector3(0,0,0));const x=new s.Vector3(0,_*Y.mm2m,0);_>0&&c.push(x);let r={pos:x.clone(),localY:new s.Vector3(0,1,0),localX:new s.Vector3(1,0,0),localZ:new s.Vector3(0,0,1)};const m=[];for(let a=g.length-1;a>=0;a--){const d=g[a],i=Me(d);if(i.length>0){const b=i.map(P=>{const S=P.clone(),D=new s.Matrix4;return D.makeBasis(r.localX,r.localY,r.localZ),S.applyMatrix4(D),S.add(r.pos)});m.push(b);const k=b[b.length-1];r.pos=k.clone();const v=d.B??0,T=d.C??0;if(v!==0){const P=new s.Matrix4().makeRotationAxis(r.localY,K(v));r.localX.applyMatrix4(P),r.localZ.applyMatrix4(P)}if(T>0){const P=K(T),S=new s.Matrix4().makeRotationAxis(r.localZ,P);r.localY.applyMatrix4(S),r.localX.applyMatrix4(S)}}}for(const a of m)a.length>1&&c.push(...a.slice(1));return c.length<2&&c.push(new s.Vector3(0,.001,0)),c}function Ee(V,p,f,n,g,h,u,_=0,c=0){const x=g-c,r=xe(n,x,u,_);let a=xe(f,c,u,_);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*Y.mm2m,18,!1);p.geometry.dispose(),V.geometry.dispose(),p.parent&&p.parent.remove(p),V.geometry=b}catch(i){console.error("管件更新失败",i)}}const Be={class:"panel-content"},Ae={class:"action-bar"},$e={class:"animation-controls"},Fe={class:"control-row"},ze={class:"control-row"},Ye={class:"frame-info"},Le={class:"control-row"},Ue={class:"progress-bar"},Ie={class:"dialog-footer"},Ge=e.defineComponent({__name:"animationPanel",props:{model:{},threeData:{}},emits:["getThreeData"],setup(V,{expose:p,emit:f}){const n=V,g=f,h=e.ref(),u=e.ref();e.watch(()=>n.threeData,l=>{const t=l==null?void 0:l.data;u.value=t==null?void 0:t.type},{immediate:!0});const _=async()=>{if(!sessionStorage.getItem("systemKey")){g("getThreeData");return}let t={};u.value===O.robotMode.SINGLE&&(t=await Ne.fetchSingleRobotAnimationData()),u.value===O.robotMode.DOUBLE&&(t=await Ne.fetchDoubleRobotAnimationData());const{initialPipeLength:o=0,pipeRadius:y=0,clampLength:N=0,animationData:E}=t;S.value=o,D.value=y,R.value=N,h.value=E;const j=A.cloneDeep(h.value),W=ce($.value),J=(j==null?void 0:j["输出(动画数据)"])||[];c.value=J.length?J:[W]},c=e.ref([]),x=e.ref(!1),r=e.ref(""),m=e.ref(!1),a=e.ref(0),d=e.ref(0),i=e.ref(1e3);let b=!1;const k=e.ref(null),v=e.shallowRef(null),T=e.shallowRef(null),P=e.shallowRef(null),S=e.ref(0),D=e.ref(12.5),R=e.ref(30),L=e.ref([]),M=e.ref(null),C=e.computed(()=>n.model?Y.getNonFixedJoints(n.model).map(o=>o.name):[]),X=e.ref(["Y","B","C","R"]),$=e.computed(()=>[...C.value,...X.value]),Z=e.computed(()=>$.value.length>0?`请按以下格式粘贴数据 (第一行为表头,使用 Tab 分隔):
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),O=require("./workpieceTreePanel-MOJxvcHc.cjs"),de=require("./iconfont-ZL_6BkHR.cjs"),A=require("./index-C8qRkCgn.cjs"),s=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DaF8XJ8v.cjs");require("./index.vue_vue_type_style_index_1_lang-CeCV2qWI.cjs");require("./index-BpPyaNFa.cjs");const Q=require("./index-DFa4xUcC.cjs");require("./index.vue_vue_type_style_index_1_lang-CIkXLXnr.cjs");const Y=require("./robotUtil-NrP32vJA.cjs");require("./index-BSUi85HP.cjs");const Ne=require("./animationData-By-roVYO.cjs"),ye=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Ce=require("./urdfTree-NsMmy6lF.cjs"),ee=require("./dataUtil-CqQ6nLIT.cjs"),F=require("./svgIcon-CUM54R6L.cjs"),K=s.MathUtils.degToRad,we=new s.MeshStandardMaterial({color:13421772,metalness:.3,roughness:.6,side:s.DoubleSide});function Te(V=.005,p=64){const f=new s.CatmullRomCurve3([new s.Vector3(0,0,0),new s.Vector3(0,0,0)]),n=new s.TubeGeometry(f,p,V,16,!1),g=we;return new s.Mesh(n,g)}const ke=V=>V.reduce((p,f)=>{let n=0;const g=f.Y??0,h=f.C??0,u=f.R??0;return g>0&&(n+=g),h>0&&u>0&&(n+=u*K(h)),p+n},0),Me=V=>{const p=[],f=V.Y??0,n=V.B??0,g=V.C??0,h=V.R??0,u={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 p;if(p.push(u.pos.clone()),n!==0){const _=new s.Matrix4().makeRotationAxis(u.localY,K(n));u.localX.applyMatrix4(_),u.localZ.applyMatrix4(_)}if(f>0&&(u.pos.add(u.localY.clone().multiplyScalar(f*Y.mm2m)),p.push(u.pos.clone())),g>0&&h>0){const _=K(g),c=h*Y.mm2m,x=u.pos.clone().add(u.localX.clone().multiplyScalar(-c)),r=Math.max(16,Math.ceil(g/5));for(let m=1;m<=r;m++){const a=_*m/r,d=new s.Matrix4().makeRotationAxis(u.localZ,a),b=u.localX.clone().multiplyScalar(c).applyMatrix4(d),k=x.clone().add(b);p.push(k)}}return p};function Se(V,p){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 u=0;u<V.length;u++){const _=V[u],c=_.Y??0,x=_.B??0,r=_.C??0,m=_.R??0;if(x!==0){const a=new s.Matrix4().makeRotationAxis(n.localY,K(x));n.localX.applyMatrix4(a),n.localZ.applyMatrix4(a)}if(c>0){const a=n.pos.clone();n.pos.add(n.localY.clone().multiplyScalar(c*Y.mm2m));const d=n.pos.clone(),i=Pe(a,d,p*Y.mm2m);i.userData={segmentType:"straight",segmentIndex:g,frameIndex:u,length:c,frame:{Y:c,B:x,C:r,R:m}},i.name=`直段_${g}`,f.add(i);const b=a.clone();De(f,h,b,p*Y.mm2m),g++}if(r>0&&m>0){const a=K(r),d=m*Y.mm2m,i=[];i.push(n.pos.clone());const b=n.pos.clone().add(n.localX.clone().multiplyScalar(-d)),k=Math.max(16,Math.ceil(r/5));for(let P=1;P<=k;P++){const S=a*P/k,D=new s.Matrix4().makeRotationAxis(n.localZ,S),L=n.localX.clone().multiplyScalar(d).applyMatrix4(D),M=b.clone().add(L);i.push(M)}const v=Re(i,p*Y.mm2m);v.userData={segmentType:"bend",segmentIndex:g,frameIndex:u,angle:r,radius:m,centerPoint:b.toArray(),frame:{Y:c,B:x,C:r,R:m}},v.name=`弯段_${g}`,f.add(v),Math.floor(i.length/2),i[0],n.pos=i[i.length-1].clone();const T=new s.Matrix4().makeRotationAxis(n.localZ,a);n.localY.applyMatrix4(T),n.localX.applyMatrix4(T),g++,h++}}return f}function De(V,p,f,n){const g=new s.Vector3(0,n*2,n*5),h=f.clone().add(g),u=[f,h],_=new s.BufferGeometry().setFromPoints(u),c=new s.LineDashedMaterial({color:16711680,dashSize:n*.5,gapSize:n*.3,linewidth:1}),x=new s.Line(_,c);x.computeLineDistances(),V.add(x);const r=document.createElement("canvas"),m=r.getContext("2d");r.width=128,r.height=128,m.clearRect(0,0,128,128),m.fillStyle="#FF0000",m.font="bold 80px Arial",m.textAlign="center",m.textBaseline="middle",m.fillText(p.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_${p}`,i.userData={labelNumber:p},V.add(i)}function Pe(V,p,f){const n=new s.LineCurve3(V,p),g=new s.TubeGeometry(n,2,f,18,!1);return new s.Mesh(g,we)}function Re(V,p){const f=new s.CatmullRomCurve3(V,!1,"catmullrom",.01),n=new s.TubeGeometry(f,Math.max(16,V.length*2),p,18,!1);return new s.Mesh(n,we)}function _e(V,p,f,n,g,h=0){let u=p.slice(0,g+1);const _=p[g+1];if(_&&h>0){const i={..._,B:(_.B??0)*h,C:(_.C??0)*h};u.push(i)}const c=ke(u),x=Math.max(0,f-c),r=[];r.push(new s.Vector3(0,0,0));const m=new s.Vector3(0,x*Y.mm2m,0);x>0&&r.push(m);let a={pos:m.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=u.length-1;i>=0;i--){const b=u[i],k=Me(b);if(k.length>0){const v=k.map(D=>{const R=D.clone(),L=new s.Matrix4;return L.makeBasis(a.localX,a.localY,a.localZ),R.applyMatrix4(L),R.add(a.pos)});d.push(v);const T=v[v.length-1];a.pos=T.clone();const P=b.B??0,S=b.C??0;if(P!==0){const D=new s.Matrix4().makeRotationAxis(a.localY,K(P));a.localX.applyMatrix4(D),a.localZ.applyMatrix4(D)}if(S>0){const D=K(S),R=new s.Matrix4().makeRotationAxis(a.localZ,D);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*Y.mm2m,18,!1);V.geometry.dispose(),V.geometry=b}catch(i){console.error("管件更新失败",i)}}function xe(V,p,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 u=ke(g),_=Math.max(0,p-u),c=[];c.push(new s.Vector3(0,0,0));const x=new s.Vector3(0,_*Y.mm2m,0);_>0&&c.push(x);let r={pos:x.clone(),localY:new s.Vector3(0,1,0),localX:new s.Vector3(1,0,0),localZ:new s.Vector3(0,0,1)};const m=[];for(let a=g.length-1;a>=0;a--){const d=g[a],i=Me(d);if(i.length>0){const b=i.map(P=>{const S=P.clone(),D=new s.Matrix4;return D.makeBasis(r.localX,r.localY,r.localZ),S.applyMatrix4(D),S.add(r.pos)});m.push(b);const k=b[b.length-1];r.pos=k.clone();const v=d.B??0,T=d.C??0;if(v!==0){const P=new s.Matrix4().makeRotationAxis(r.localY,K(v));r.localX.applyMatrix4(P),r.localZ.applyMatrix4(P)}if(T>0){const P=K(T),S=new s.Matrix4().makeRotationAxis(r.localZ,P);r.localY.applyMatrix4(S),r.localX.applyMatrix4(S)}}}for(const a of m)a.length>1&&c.push(...a.slice(1));return c.length<2&&c.push(new s.Vector3(0,.001,0)),c}function Ee(V,p,f,n,g,h,u,_=0,c=0){const x=g-c,r=xe(n,x,u,_);let a=xe(f,c,u,_);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*Y.mm2m,18,!1);p.geometry.dispose(),V.geometry.dispose(),p.parent&&p.parent.remove(p),V.geometry=b}catch(i){console.error("管件更新失败",i)}}const Be={class:"panel-content"},Ae={class:"action-bar"},$e={class:"animation-controls"},Fe={class:"control-row"},ze={class:"control-row"},Ye={class:"frame-info"},Le={class:"control-row"},Ue={class:"progress-bar"},Ie={class:"dialog-footer"},Ge=e.defineComponent({__name:"animationPanel",props:{model:{},threeData:{}},emits:["getThreeData"],setup(V,{expose:p,emit:f}){const n=V,g=f,h=e.ref(),u=e.ref();e.watch(()=>n.threeData,l=>{const t=l==null?void 0:l.data;u.value=t==null?void 0:t.type},{immediate:!0});const _=async()=>{if(!sessionStorage.getItem("systemKey")){g("getThreeData");return}let t={};u.value===O.robotMode.SINGLE&&(t=await Ne.fetchSingleRobotAnimationData()),u.value===O.robotMode.DOUBLE&&(t=await Ne.fetchDoubleRobotAnimationData());const{initialPipeLength:o=0,pipeRadius:y=0,clampLength:N=0,animationData:E}=t;S.value=o,D.value=y,R.value=N,h.value=E;const j=A.cloneDeep(h.value),W=ce($.value),J=(j==null?void 0:j["输出(动画数据)"])||[];c.value=J.length?J:[W]},c=e.ref([]),x=e.ref(!1),r=e.ref(""),m=e.ref(!1),a=e.ref(0),d=e.ref(0),i=e.ref(1e3);let b=!1;const k=e.ref(null),v=e.shallowRef(null),T=e.shallowRef(null),P=e.shallowRef(null),S=e.ref(0),D=e.ref(12.5),R=e.ref(30),L=e.ref([]),M=e.ref(null),C=e.computed(()=>n.model?Y.getNonFixedJoints(n.model).map(o=>o.name):[]),X=e.ref(["Y","B","C","R"]),$=e.computed(()=>[...C.value,...X.value]),Z=e.computed(()=>$.value.length>0?`请按以下格式粘贴数据 (第一行为表头,使用 Tab 分隔):
2
2
  ${$.value.join(" ")}
3
3
  0 0 0 ...
4
4
  1 2 3 ...`:"请先加载模型。"),z=()=>c.value.map(l=>({Y:parseFloat(l.Y)||0,B:parseFloat(l.B)||0,C:parseFloat(l.C)||0,R:parseFloat(l.R)||0})),q=()=>{const l=[],t=[];return c.value.forEach(o=>{const{Y1:y,B1:N,C1:E,R1:j,Y2:W,B2:J,C2:ie,R2:B}=o;l.push({Y:parseFloat(y)||0,B:parseFloat(N)||0,C:parseFloat(E)||0,R:parseFloat(j)||0}),t.push({Y:parseFloat(W)||0,B:parseFloat(J)||0,C:parseFloat(ie)||0,R:parseFloat(B)||0})}),{posPipeYbcr:l,negPipeYbcr:t}},I=(l=0,t=0)=>{if(v.value&&T.value){const o=q();Ee(v.value,T.value,o.posPipeYbcr,o.negPipeYbcr,S.value,D.value,l,t,R.value)}else if(v.value){const o=z();_e(v.value,o,S.value,D.value,l,t)}},U=l=>{if(l<0||l>=c.value.length){console.error(`帧索引 ${l} 超出范围`);return}const t=c.value[l];if(console.log(`应用第 ${l} 帧数据 ${t}`),a.value=l,k.value){const o={};C.value.forEach(y=>{const N=parseFloat(t[y]);isNaN(N)||(o[y]=N)}),k.value.setJointAngles(o)}I(l,0)},H=async()=>{if(c.value.length===0){A.ElMessage.error("无法播放动画:无数据");return}if(!m.value){m.value=!0,b=!1,c.value.length-1===a.value&&(a.value=0);try{for(let l=a.value+1;l<c.value.length&&!b;l++){a.value=l;const t=c.value[l],o={};k.value&&C.value.forEach(y=>{const N=parseFloat(t[y]);isNaN(N)||(o[y]=N)}),k.value?await k.value.animateToState(o,i.value,y=>{d.value=(l+y)/c.value.length*100,I(l-1,y)}):(await new Promise(y=>setTimeout(y,i.value)),d.value=(l+1)/c.value.length*100)}b||A.ElMessage.success("动画播放完成")}catch(l){console.error("动画播放出错:",l),A.ElMessage.error("动画播放出错")}finally{m.value=!1,d.value=0}}},w=()=>{b=!0,m.value=!1,d.value=0,A.ElMessage.info("动画已停止")},oe=()=>{a.value=0},G=()=>{if(v.value&&T.value){const l=q();Ee(v.value,T.value,l.posPipeYbcr,l.negPipeYbcr,S.value,D.value,-1,0,R.value)}else if(v.value){const l=z();_e(v.value,l,S.value,D.value,-1,0)}},le=()=>{k.value&&k.value.resetToZero(),G(),oe(),A.ElMessage.success("机器人和管件已重置")},ae=l=>`第 ${l+1} 帧`,me=l=>{m.value&&w(),U(l)},pe=()=>{m.value&&w(),!(a.value+1>=c.value.length)&&U(a.value+1)},ve=()=>{m.value&&w(),a.value!==0&&U(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,T.value=null},ce=l=>l==null?void 0:l.reduce((t,o)=>(t[o]="0",t),{});e.watch($,(l,t)=>{if(JSON.stringify(l)!==JSON.stringify(t))if(l.length>0){const o=ce(l);c.value=[o]}else c.value=[]},{immediate:!0});const re=e.ref(0),fe=l=>{re.value=l},te=(l,t)=>{if(!l||!t)return;const o=Y.getTargetJoint(l,t),y=Te();y.visible=!1,o==null||o.add(y)},ne=l=>{k.value=new O.URDFRobotController(l),L.value=Y.getAllLinkName(l),M.value="Pipe_Joint"},ge=()=>{k.value=null,L.value=[],M.value=null},he=l=>{ne(l),te(l,M.value),fe(re.value+1),le()};e.watch(()=>n.model,l=>{if(se(),l){he(l);return}ge()},{immediate:!0});const ue=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([M,R,S,re],([l,t])=>{if(se(),n.model&&l){const o=Y.getMeshFromJoint(n.model,l);if(console.log(o,"meshToReplace"),o&&o.parent){P.value=o,o.visible=!1;const y=ue(o);if(u.value===O.robotMode.SINGLE&&(y.position.y-=t*.001),v.value=y,u.value===O.robotMode.DOUBLE){const N=ue(o);T.value=N}I(0,0)}else l&&console.warn(`在 link '${l}' 中未找到可替换的网格或其没有父级。`)}});const Ve=async()=>{if($.value.length===0){A.ElMessage.warning("没有可导出的表头");return}const l=$.value.join(" ");try{await navigator.clipboard.writeText(l),A.ElMessage.success("表头已成功复制到剪贴板!")}catch(t){console.error("复制失败:",t),A.ElMessage.error("复制失败,请检查浏览器权限或手动复制。")}},be=()=>{if(!r.value.trim()){A.ElMessage.warning("导入内容不能为空");return}const l=r.value.trim().split(`
@@ -1,18 +1,18 @@
1
1
  import { defineComponent as Ee, ref as b, watch as se, shallowRef as ve, computed as _e, onUnmounted as et, resolveComponent as O, createElementBlock as we, openBlock as le, createElementVNode as n, createVNode as o, withCtx as T, createBlock as Ce, createCommentVNode as ye, unref as S, toDisplayString as me, nextTick as We, onMounted as Ie, onBeforeUnmount as Ke, Fragment as tt, renderList as lt, withDirectives as I, vShow as re, renderSlot as De, isRef as Re, vModelRadio as Te } from "vue";
2
- import { r as Ve, U as ot, s as je, u as at, a as nt, W as st } from "./workpieceTreePanel-CpYo8N4J.js";
3
- import { u as qe, a as it, b as rt } from "./iconfont-C-jLDDui.js";
2
+ import { r as Ve, U as ot, s as je, u as at, a as nt, W as st } from "./workpieceTreePanel-C7_41Iqz.js";
3
+ import { u as qe, a as it, b as rt } from "./iconfont-DDhe-BUl.js";
4
4
  import { ag as ut, c as ct, E, aW as pt, aw as dt } from "./index-BUYYl2Pc.js";
5
- import { t as Me, T as ke, V as z, r as q, s as mt, u as vt, k as Se, v as ft, L as gt, w as ht, x as bt, y as yt, z as _t, F as wt, I as Ct, p as kt } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BrO2CG13.js";
6
- import "./index.vue_vue_type_style_index_1_lang-DCNwSjkL.js";
5
+ import { t as Me, T as ke, V as z, r as q, s as mt, u as vt, k as Se, v as ft, L as gt, w as ht, x as bt, y as yt, z as _t, F as wt, I as Ct, p as kt } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Cb5M-Cn4.js";
6
+ import "./index.vue_vue_type_style_index_1_lang-DojDVre8.js";
7
7
  import "./index-BHtNKL1L.js";
8
- import { _ as ue, s as Pt } from "./index-u963fvJq.js";
9
- import "./index.vue_vue_type_style_index_1_lang-wEVof7j-.js";
10
- import { m as K, g as xt, a as Dt, b as Rt, c as Tt } from "./robotUtil-D79UKi8S.js";
11
- import "./index-EqgbW679.js";
12
- import { f as Vt, a as Mt } from "./animationData-DPk8z-Qc.js";
8
+ import { _ as ue, s as Pt } from "./index-Y5EIVsCv.js";
9
+ import "./index.vue_vue_type_style_index_1_lang-CpFhVt0X.js";
10
+ import { m as K, g as xt, a as Dt, b as Rt, c as Tt } from "./robotUtil-BFjMJVdz.js";
11
+ import "./index-GR-D5xOi.js";
12
+ import { f as Vt, a as Mt } from "./animationData-G8UlGfAg.js";
13
13
  import { _ as Xe } from "./_plugin-vue_export-helper-CHgC5LLL.js";
14
- import { U as St, J as At } from "./urdfTree-CUgm69Ah.js";
15
- import { g as $t, a as Oe, d as Ft, c as zt, e as Yt, b as Bt } from "./dataUtil-DcGEuoWS.js";
14
+ import { U as St, J as At } from "./urdfTree-CjCnTExe.js";
15
+ import { g as $t, a as Oe, d as Ft, c as zt, e as Yt, b as Bt } from "./dataUtil-Db9ZcUfi.js";
16
16
  import { T as j } from "./svgIcon-D-_fXUBL.js";
17
17
  const ae = mt.degToRad, Ge = new ft({
18
18
  // 灰色
@@ -1,17 +1,17 @@
1
1
  import { defineComponent as xe, computed as C, ref as p, onBeforeUnmount as ke, resolveComponent as R, createElementBlock as Z, openBlock as $, createElementVNode as a, createVNode as d, withCtx as le, toDisplayString as D, watch as K, inject as ge, shallowRef as ae, onMounted as Qe, nextTick as ye, withDirectives as j, createCommentVNode as W, vShow as X, unref as v, renderSlot as ve, createBlock as he, isRef as ne, vModelRadio as oe } from "vue";
2
- import { aw as et } from "./index.vue_vue_type_style_index_1_lang-DCNwSjkL.js";
3
- import { s as _e, u as tt, a as at, U as nt, W as ot } from "./workpieceTreePanel-CpYo8N4J.js";
4
- import { d as lt, u as st, a as it, b as rt } from "./iconfont-C-jLDDui.js";
2
+ import { aw as et } from "./index.vue_vue_type_style_index_1_lang-DojDVre8.js";
3
+ import { s as _e, u as tt, a as at, U as nt, W as ot } from "./workpieceTreePanel-C7_41Iqz.js";
4
+ import { d as lt, u as st, a as it, b as rt } from "./iconfont-DDhe-BUl.js";
5
5
  import { E as se } from "./index-BUYYl2Pc.js";
6
- import { b as ut, c as ct } from "./threeViewerHost-Dv-zRfI9.js";
7
- import { b as dt } from "./pointTrack-CpqyoYjd.js";
8
- import { d as vt, e as mt } from "./robotUtil-D79UKi8S.js";
9
- import { V as pt, s as we } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BrO2CG13.js";
6
+ import { b as ut, c as ct } from "./threeViewerHost-CNIsWoK3.js";
7
+ import { b as dt } from "./pointTrack-D9n7TSzE.js";
8
+ import { d as vt, e as mt } from "./robotUtil-BFjMJVdz.js";
9
+ import { V as pt, s as we } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Cb5M-Cn4.js";
10
10
  import { _ as Ce } from "./_plugin-vue_export-helper-CHgC5LLL.js";
11
- import { U as ft, J as bt } from "./urdfTree-CUgm69Ah.js";
11
+ import { U as ft, J as bt } from "./urdfTree-CjCnTExe.js";
12
12
  import { T as y } from "./svgIcon-D-_fXUBL.js";
13
- import { O as gt } from "./MTLLoader-CZI-laNK.js";
14
- import { L as yt, j as ht } from "./index-CcAVElxY.js";
13
+ import { O as gt } from "./MTLLoader-DiZPxyri.js";
14
+ import { L as yt, j as ht } from "./index-BMonRqrI.js";
15
15
  const _t = async (f) => await new gt().loadAsync(f);
16
16
  function wt() {
17
17
  return { x: 0, y: 0, z: 0, b_axis: 0, c_axis: 0, x_axis: 0, y_axis: 0, z_axis: 0 };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ze=require("./index.vue_vue_type_style_index_1_lang-_MRLV2pU.cjs"),j=require("./workpieceTreePanel-CGCTSCMV.cjs"),J=require("./iconfont-CpbN39ZP.cjs"),G=require("./index-C8qRkCgn.cjs"),le=require("./threeViewerHost-CQAQgsH3.cjs"),Ue=require("./pointTrack-Dcp686Ea.cjs"),se=require("./robotUtil-tvll1beF.cjs"),Y=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-v_tZRKeY.cjs"),ie=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),oe=require("./urdfTree-jtHwasZ-.cjs"),f=require("./svgIcon-CUM54R6L.cjs"),Re=require("./MTLLoader-DqSL2MhN.cjs"),ae=require("./index-BdD3L97f.cjs"),$e=async v=>await new Re.OBJLoader().loadAsync(v);function Ie(){return{x:0,y:0,z:0,b_axis:0,c_axis:0,x_axis:0,y_axis:0,z_axis:0}}function Oe(v){const s=Ue.getPointGeometry(v);return s&&(s.material.sizeAttenuation=!1),s}async function Fe(v){return await le.downloadFile(v)}async function Le(v){return await le.readCsv(v)}async function qe(v){const s=await Fe(v);return(await Le(s)).map(i=>{const u=Ie();return u.x_axis=i.X_Axis,u.y_axis=i.Y_Axis,u.z_axis=i.Z_Axis,u.b_axis=i.B_Axis,u.c_axis=i.C_Axis,u.x=i.X,u.y=i.Y,u.z=i.Z,u})}const Je={class:"panel-content"},Ge={class:"animation-controls"},We={class:"control-row"},Xe={class:"control-row"},Ze={class:"frame-info"},He={class:"control-row"},Ke=e.defineComponent({__name:"bladeTrackPanel",props:{scene:{},robot:{},animationData:{}},emits:["getThreeData"],setup(v,{expose:s,emit:S}){const g=v,i=e.computed(()=>g.animationData),u=e.ref(!1),p=e.ref(0),A=e.ref(100);let y=!1;const D={bladeAxis:"叶片模型位置"},$=e.ref(null),W=o=>{if(o<0||o>=i.value.length)return null;const a=se.getObjectWorldMatrix(g.robot,D.bladeAxis);if(!a)return null;const r=i.value[o];return new Y.Vector3(r.x,r.y,r.z).applyMatrix4(a)},X=(o,a)=>{o&&o.setJointValues(a)},I=(o,a,r,c,_)=>{const z={B_Axis:Y.MathUtils.degToRad(c),C_Axis:Y.MathUtils.degToRad(_),X_Axis:o,Y_Axis:a,Z_Axis:r};X(g.robot,z)},k=()=>{const o=g.scene;if(!o)return;const a=[];o.traverse(r=>{r.name==="TrajectoryPoints"&&a.push(r)}),a.forEach(r=>{o.remove(r),J.disposeObj(r)})},B=o=>{const a=[];for(let r=0;r<=o;r++){const c=W(r);c&&a.push(c.x,c.y,c.z)}return a},Z=o=>{const a=Oe(o);if(a)return a.name="TrajectoryPoints",$.value=a,a},C=o=>{k();const a=B(o),r=Z(a);g.scene&&r&&g.scene.add(r)},O=o=>`第 ${o+1} 帧`,E=o=>{if(o<0||o>=i.value.length){console.error(`帧索引 ${o} 超出范围`);return}const a=i.value[o];p.value=o,I(a.x_axis,a.y_axis,a.z_axis,a.b_axis,a.c_axis);const r=g.scene;r&&r.updateMatrixWorld(!0),C(o)},w=async()=>{if(i.value.length===0){G.ElMessage.warning("无法播放动画:缺失动画数据");return}if(!u.value){u.value=!0,y=!1,i.value.length-1===p.value&&(p.value=0);try{for(let o=p.value+1;o<i.value.length&&!y;o++)await new Promise(a=>setTimeout(a,A.value)),E(o);y||G.ElMessage.success("动画播放完成")}catch(o){console.error("动画播放出错:",o)}finally{u.value=!1}}},m=async()=>{u.value&&(y=!0,await new Promise(o=>{const a=e.watch(()=>u.value,r=>{a(),o()})}))},P=async o=>{u.value&&await m(),E(o)},V=async()=>{u.value&&await m(),!(p.value+1>=i.value.length)&&E(p.value+1)},N=async()=>{u.value&&await m(),p.value!==0&&E(p.value-1)},T=()=>{p.value=0},M=async()=>{await m(),k(),T()};return e.onBeforeUnmount(()=>{M()}),s({playAnimation:w,stopAnimation:m,forwardFrame:V,backwardFrame:N,resetAnimationFrame:T,reset:M}),(o,a)=>{const r=e.resolveComponent("el-input-number"),c=e.resolveComponent("el-form-item"),_=e.resolveComponent("el-form"),z=e.resolveComponent("el-slider");return e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("div",Ge,[e.createElementVNode("div",We,[e.createVNode(_,{"label-width":"auto",style:{width:"100%"}},{default:e.withCtx(()=>[e.createVNode(c,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:e.withCtx(()=>[e.createVNode(r,{modelValue:A.value,"onUpdate:modelValue":a[0]||(a[0]=U=>A.value=U),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",Xe,[a[2]||(a[2]=e.createElementVNode("label",null,"当前帧:",-1)),e.createElementVNode("span",Ze,e.toDisplayString(p.value+1)+" / "+e.toDisplayString(i.value.length),1)]),e.createElementVNode("div",He,[a[3]||(a[3]=e.createElementVNode("label",null,"动画进度:",-1)),e.createVNode(z,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=U=>p.value=U),min:0,max:i.value.length>0?i.value.length-1:0,step:1,"format-tooltip":O,onInput:P,disabled:i.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),Ye=ie._export_sfc(Ke,[["__scopeId","data-v-25694293"]]),Qe=async v=>await $e(v),et={class:"obj-viewer-container"},tt={class:"buttonGroup-topLeft"},nt={class:"buttonGroup-left"},ot={class:"buttonGroup-right"},at={class:"buttonGroup-bottom"},lt={class:"left-panel"},st={class:"panel-header"},it={class:"panel-body"},rt={key:1,class:"clipping-content"},ct={class:"radio-group"},ut={class:"radio-label"},dt={class:"radio-label"},vt={class:"radio-label"},mt={class:"radio-label"},pt={class:"right-panel"},ft={class:"panel-header"},gt={class:"panel-body"},ht={key:0,class:"loading-overlay"},bt={key:1,class:"brand"},yt={class:"brand-item"},Vt={class:"item-value"},Nt={class:"brand-item"},_t={class:"item-value"},wt={class:"brand-item"},xt={class:"item-value"},kt=e.defineComponent({__name:"threeSceneViewForCPMPIP",props:{fileBlobs:{default:()=>[]},threeData:{}},setup(v){const s=v,S=e.inject("setManagementPageTitle"),g=e.inject("setManagementPageVisible"),i=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.machine}),u=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.产品型号}),p=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.编号}),A=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.厂家}),y=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.workpieceInfo}),D=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.knife}),$=e.ref([]),W=async n=>{!n||!n.isExtra||(await X(n),S==null||S(n==null?void 0:n.pageName),g==null||g(!0))},X=ae.debounce(async n=>{await ae.onPageBack();const{mainKey:t,baseMenuPath:l}=n||{};ze.copyAdd(l,t)},500);e.watch(()=>[u.value,y.value,D.value],()=>{var b,d,te,ne;const n=[],t={pageName:"机床",name:"机床",label:"机床",type:"机床",id:"机床",path:"机床",baseMenuPath:"设备库/机床",children:[],show:!0,isPenultimate:!1};u.value&&t.children.push({isExtra:!0,pageName:"机床",mainKey:u.value,label:u.value,baseMenuPath:"设备库/机床"});const l={pageName:"工件",name:"工件",label:"工件",type:"工件",id:"工件",path:"工件",baseMenuPath:"设备库/机床",children:[],show:!0,isPenultimate:!1};y.value&&l.children.push({isExtra:!0,type:(b=y.value)==null?void 0:b.type,pageName:"工件",mainKey:(d=y.value)==null?void 0:d.name,label:(te=y.value)==null?void 0:te.name,baseMenuPath:`工件库/${(ne=y.value)==null?void 0:ne.type}`});const q={pageName:"刀具",name:"刀具",label:"刀具",type:"刀具",id:"刀具",path:"刀具",children:[],show:!0,isPenultimate:!1};D.value&&q.children.push({isExtra:!0,pageName:"刀具",mainKey:D.value,label:D.value,baseMenuPath:"设备库/刀具"}),n.push(t,l,q),$.value=n},{immediate:!0});const I=e.ref([]),k=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.csvUrl});e.watch(()=>k.value,async()=>{if(console.log("three data",s==null?void 0:s.threeData),console.log("csvUrl",k.value),k.value){const n=await qe(k.value);I.value=n}},{immediate:!0});const B=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.bladeObjUrl}),Z=e.ref(j.sceneType.ROBOT),C=e.ref(null),O=e.ref(!1),E=e.ref(""),w=e.ref(!1),m=e.ref(""),P=e.ref(!1),V=e.ref(""),N=e.shallowRef(null),T=e.ref(null),M=e.ref("叶片模型"),o=e.shallowRef(null),a=e.shallowRef(null),r=e.shallowRef(null),c=e.ref(),{currentModels:_,resetView:z,initThreeJS:U,handleResize:re,getThreeJSObjects:R,cleanup:ce,setModels:Q,axesHelperVisible:ue,toggleAxesVisibility:de,zoomIn:ve,zoomOut:me}=J.useThreeJS(C),{loadSceneFromFile:pe}=j.useUrdfLoader(R,_,O,E),{isAnimating:ee,toggleAnimation:fe,stopAnimation:ge}=J.useAnimation(R,_),{isClipping:he,activeClippingAxis:h,toggleClipping:be,updateClippingPlanes:x}=J.useClipping(R,_),{initRaycaster:ye,selectedObject3D:Ve,setSelectedObjVisible:Ne,updatePosition:_e,updateRotation:we,dispose:xe}=j.useRaycaster(C,R,_),ke=()=>{de()},Ce=e.computed(()=>Z.value===j.sceneType.ROBOT),F=n=>{w.value=!0,m.value=n,n==="剖面视图"&&!he.value&&be()},H=n=>{P.value=!0,V.value=n},Ee=()=>{var n;(n=c==null?void 0:c.value)==null||n.playAnimation()},Pe=()=>{var n;(n=c==null?void 0:c.value)==null||n.stopAnimation()},Te=()=>{var n;(n=c==null?void 0:c.value)==null||n.forwardFrame()},Se=()=>{var n;(n=c==null?void 0:c.value)==null||n.backwardFrame()},K=()=>{var n;(n=c==null?void 0:c.value)==null||n.reset()},De=()=>{K(),z(),T.value&&T.value.resetToZero()},Me=(n,t)=>se.getMeshFromLink(n,t),je=async n=>{const t=Me(n,M.value);if(a.value=t,console.log("bladeObjUrl",B.value),t&&t.parent&&B.value){const l=await Qe(B.value);l.name="blade_clone",t.parent.add(l),l.position.copy(t.position),l.rotation.copy(t.rotation),l.scale.copy(t.scale),t.visible=!1,o.value=l}else M.value&&console.warn(`在 Blade '${M.value}' 中未找到可替换的网格或其没有父级。`)};e.watch(()=>s.fileBlobs,n=>{if(n&&n.length>0){const t=n[0];if(!t.name.toLowerCase().endsWith(".urdf"))return;pe(t).then(l=>{N.value=l,l&&je(l)}).catch(l=>{console.error("加载URDF文件时发生错误:",l),G.ElMessage.error("加载urdf模型失败"),N.value=null})}else N.value=null},{immediate:!0,deep:!0}),e.watch(N,n=>{K(),n?(Q([n]),T.value=new j.URDFRobotController(n)):(Q([]),T.value=null),ye()});let L=null;const Ae=()=>{U(),e.nextTick(()=>{C.value&&(L=new ResizeObserver(re),L.observe(C.value))});const n=R();r.value=n.scene},Be=()=>{m.value="",V.value="",L&&L.disconnect(),ee.value&&ge(),K(),ce(),xe()};return e.onMounted(async()=>{await e.nextTick();try{Ae()}catch(n){console.error("Three.js 初始化失败:",n),G.ElMessage.error("渲染引擎初始化失败!")}}),e.onBeforeUnmount(()=>{Be()}),(n,t)=>{const l=e.resolveComponent("el-scrollbar"),q=e.resolveComponent("PipeAnalysisPanel");return e.openBlock(),e.createElementBlock("div",et,[e.withDirectives(e.createElementVNode("div",{ref_key:"threejsContainer",ref:C,class:"threejs-container"},null,512),[[e.vShow,Ce.value]]),e.createElementVNode("div",tt,[e.createVNode(f.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:De,title:"重置"}),e.createVNode(f.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大",onClick:e.unref(ve)},null,8,["onClick"]),e.createVNode(f.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小",onClick:e.unref(me)},null,8,["onClick"]),e.createVNode(f.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:e.unref(fe),title:e.unref(ee)?"停止动画":"动画视图"},null,8,["onClick","title"]),e.createVNode(f.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:e.unref(ue),onClick:ke,title:"显隐坐标轴"},null,8,["active"])]),e.createElementVNode("div",nt,[e.renderSlot(n.$slots,"button-left",{switchRightPanel:F},void 0,!0),e.createVNode(f.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:t[0]||(t[0]=b=>F("场景树")),active:w.value&&m.value==="场景树",title:"场景树"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"clipping",size:"24",onClick:t[1]||(t[1]=b=>F("剖面视图")),active:w.value&&m.value==="剖面视图",title:"剖面视图"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",onClick:t[2]||(t[2]=b=>F("工件树")),active:w.value&&m.value==="工件树"},null,8,["active"])]),e.createElementVNode("div",ot,[e.renderSlot(n.$slots,"button-right",{switchRightPanel:H},void 0,!0),e.createVNode(f.ThreeSvgIcon,{name:"jichuangxuanze",size:"24",onClick:t[3]||(t[3]=b=>H("机床控制")),active:P.value&&V.value==="机床控制",title:"机床控制"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:t[4]||(t[4]=b=>H("轨迹路径")),active:P.value&&V.value==="轨迹路径"},null,8,["active"])]),e.createElementVNode("div",at,[e.createVNode(f.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:Se}),e.createVNode(f.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:Ee}),e.createVNode(f.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:Te}),e.createVNode(f.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:Pe})]),e.withDirectives(e.createElementVNode("div",lt,[e.createElementVNode("div",st,[e.createElementVNode("span",null,e.toDisplayString(m.value),1),e.createElementVNode("span",{class:"close",onClick:t[5]||(t[5]=b=>w.value=!1)}," X ")]),e.createElementVNode("div",it,[e.createVNode(l,{height:"100%"},{default:e.withCtx(()=>{var b;return[m.value==="场景树"?(e.openBlock(),e.createBlock(oe.UrdfTree,{key:0,model:N.value,extraNodes:$.value,onNodeClick:W},null,8,["model","extraNodes"])):e.createCommentVNode("",!0),m.value==="剖面视图"?(e.openBlock(),e.createElementBlock("div",rt,[e.createElementVNode("div",ct,[e.createElementVNode("label",ut,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":t[6]||(t[6]=d=>e.isRef(h)?h.value=d:null),onChange:t[7]||(t[7]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[15]||(t[15]=e.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),e.createElementVNode("label",dt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":t[8]||(t[8]=d=>e.isRef(h)?h.value=d:null),onChange:t[9]||(t[9]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[16]||(t[16]=e.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),e.createElementVNode("label",vt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":t[10]||(t[10]=d=>e.isRef(h)?h.value=d:null),onChange:t[11]||(t[11]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[17]||(t[17]=e.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),e.createElementVNode("label",mt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":t[12]||(t[12]=d=>e.isRef(h)?h.value=d:null),onChange:t[13]||(t[13]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[18]||(t[18]=e.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):e.createCommentVNode("",!0),m.value==="工件树"?(e.openBlock(),e.createBlock(j.WorkpieceTreePanel,{key:2,model:(b=e.unref(Ve))==null?void 0:b.obj,onVisibleChange:e.unref(Ne),onUpdatePosition:e.unref(_e),onUpdateRotation:e.unref(we)},null,8,["model","onVisibleChange","onUpdatePosition","onUpdateRotation"])):e.createCommentVNode("",!0)]}),_:1})])],512),[[e.vShow,w.value]]),e.withDirectives(e.createElementVNode("div",pt,[e.createElementVNode("div",ft,[e.createElementVNode("span",null,e.toDisplayString(V.value),1),e.createElementVNode("span",{class:"close",onClick:t[14]||(t[14]=b=>P.value=!1)}," X ")]),e.createElementVNode("div",gt,[e.createVNode(l,{height:"100%"},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(oe.JointPanel,{model:N.value},null,8,["model"]),[[e.vShow,V.value==="机床控制"]]),e.withDirectives(e.createVNode(Ye,{robot:N.value,scene:r.value,animationData:I.value,ref_key:"bladeTrackPanelRef",ref:c},null,8,["robot","scene","animationData"]),[[e.vShow,V.value==="轨迹路径"]]),e.renderSlot(n.$slots,"right-panel",{rightPanelType:V.value},void 0,!0)]),_:3})])],512),[[e.vShow,P.value]]),O.value?(e.openBlock(),e.createElementBlock("div",ht,[t[19]||(t[19]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(E.value),1)])):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",bt,[e.createElementVNode("div",yt,[t[20]||(t[20]=e.createElementVNode("div",{class:"item-label"},"厂家:",-1)),e.createElementVNode("div",Vt,e.toDisplayString(A.value),1)]),e.createElementVNode("div",Nt,[t[21]||(t[21]=e.createElementVNode("div",{class:"item-label"},"型号:",-1)),e.createElementVNode("div",_t,e.toDisplayString(u.value),1)]),e.createElementVNode("div",wt,[t[22]||(t[22]=e.createElementVNode("div",{class:"item-label"},"编号:",-1)),e.createElementVNode("div",xt,e.toDisplayString(p.value),1)])])):e.createCommentVNode("",!0),e.createVNode(q,{ref:"pipeAnalysisPanelRef"},null,512)])}}}),Ct=ie._export_sfc(kt,[["__scopeId","data-v-5ace1f6a"]]);exports.default=Ct;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ze=require("./index.vue_vue_type_style_index_1_lang-CeCV2qWI.cjs"),j=require("./workpieceTreePanel-MOJxvcHc.cjs"),J=require("./iconfont-ZL_6BkHR.cjs"),G=require("./index-C8qRkCgn.cjs"),le=require("./threeViewerHost-MWedRVF2.cjs"),Ue=require("./pointTrack-CPO9-bf6.cjs"),se=require("./robotUtil-NrP32vJA.cjs"),Y=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DaF8XJ8v.cjs"),ie=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),oe=require("./urdfTree-NsMmy6lF.cjs"),f=require("./svgIcon-CUM54R6L.cjs"),Re=require("./MTLLoader-DLHG9vWs.cjs"),ae=require("./index-dbCK5n4i.cjs"),$e=async v=>await new Re.OBJLoader().loadAsync(v);function Ie(){return{x:0,y:0,z:0,b_axis:0,c_axis:0,x_axis:0,y_axis:0,z_axis:0}}function Oe(v){const s=Ue.getPointGeometry(v);return s&&(s.material.sizeAttenuation=!1),s}async function Fe(v){return await le.downloadFile(v)}async function Le(v){return await le.readCsv(v)}async function qe(v){const s=await Fe(v);return(await Le(s)).map(i=>{const u=Ie();return u.x_axis=i.X_Axis,u.y_axis=i.Y_Axis,u.z_axis=i.Z_Axis,u.b_axis=i.B_Axis,u.c_axis=i.C_Axis,u.x=i.X,u.y=i.Y,u.z=i.Z,u})}const Je={class:"panel-content"},Ge={class:"animation-controls"},We={class:"control-row"},Xe={class:"control-row"},Ze={class:"frame-info"},He={class:"control-row"},Ke=e.defineComponent({__name:"bladeTrackPanel",props:{scene:{},robot:{},animationData:{}},emits:["getThreeData"],setup(v,{expose:s,emit:S}){const g=v,i=e.computed(()=>g.animationData),u=e.ref(!1),p=e.ref(0),A=e.ref(100);let y=!1;const D={bladeAxis:"叶片模型位置"},$=e.ref(null),W=o=>{if(o<0||o>=i.value.length)return null;const a=se.getObjectWorldMatrix(g.robot,D.bladeAxis);if(!a)return null;const r=i.value[o];return new Y.Vector3(r.x,r.y,r.z).applyMatrix4(a)},X=(o,a)=>{o&&o.setJointValues(a)},I=(o,a,r,c,_)=>{const z={B_Axis:Y.MathUtils.degToRad(c),C_Axis:Y.MathUtils.degToRad(_),X_Axis:o,Y_Axis:a,Z_Axis:r};X(g.robot,z)},k=()=>{const o=g.scene;if(!o)return;const a=[];o.traverse(r=>{r.name==="TrajectoryPoints"&&a.push(r)}),a.forEach(r=>{o.remove(r),J.disposeObj(r)})},B=o=>{const a=[];for(let r=0;r<=o;r++){const c=W(r);c&&a.push(c.x,c.y,c.z)}return a},Z=o=>{const a=Oe(o);if(a)return a.name="TrajectoryPoints",$.value=a,a},C=o=>{k();const a=B(o),r=Z(a);g.scene&&r&&g.scene.add(r)},O=o=>`第 ${o+1} 帧`,E=o=>{if(o<0||o>=i.value.length){console.error(`帧索引 ${o} 超出范围`);return}const a=i.value[o];p.value=o,I(a.x_axis,a.y_axis,a.z_axis,a.b_axis,a.c_axis);const r=g.scene;r&&r.updateMatrixWorld(!0),C(o)},w=async()=>{if(i.value.length===0){G.ElMessage.warning("无法播放动画:缺失动画数据");return}if(!u.value){u.value=!0,y=!1,i.value.length-1===p.value&&(p.value=0);try{for(let o=p.value+1;o<i.value.length&&!y;o++)await new Promise(a=>setTimeout(a,A.value)),E(o);y||G.ElMessage.success("动画播放完成")}catch(o){console.error("动画播放出错:",o)}finally{u.value=!1}}},m=async()=>{u.value&&(y=!0,await new Promise(o=>{const a=e.watch(()=>u.value,r=>{a(),o()})}))},P=async o=>{u.value&&await m(),E(o)},V=async()=>{u.value&&await m(),!(p.value+1>=i.value.length)&&E(p.value+1)},N=async()=>{u.value&&await m(),p.value!==0&&E(p.value-1)},T=()=>{p.value=0},M=async()=>{await m(),k(),T()};return e.onBeforeUnmount(()=>{M()}),s({playAnimation:w,stopAnimation:m,forwardFrame:V,backwardFrame:N,resetAnimationFrame:T,reset:M}),(o,a)=>{const r=e.resolveComponent("el-input-number"),c=e.resolveComponent("el-form-item"),_=e.resolveComponent("el-form"),z=e.resolveComponent("el-slider");return e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("div",Ge,[e.createElementVNode("div",We,[e.createVNode(_,{"label-width":"auto",style:{width:"100%"}},{default:e.withCtx(()=>[e.createVNode(c,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:e.withCtx(()=>[e.createVNode(r,{modelValue:A.value,"onUpdate:modelValue":a[0]||(a[0]=U=>A.value=U),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",Xe,[a[2]||(a[2]=e.createElementVNode("label",null,"当前帧:",-1)),e.createElementVNode("span",Ze,e.toDisplayString(p.value+1)+" / "+e.toDisplayString(i.value.length),1)]),e.createElementVNode("div",He,[a[3]||(a[3]=e.createElementVNode("label",null,"动画进度:",-1)),e.createVNode(z,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=U=>p.value=U),min:0,max:i.value.length>0?i.value.length-1:0,step:1,"format-tooltip":O,onInput:P,disabled:i.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),Ye=ie._export_sfc(Ke,[["__scopeId","data-v-25694293"]]),Qe=async v=>await $e(v),et={class:"obj-viewer-container"},tt={class:"buttonGroup-topLeft"},nt={class:"buttonGroup-left"},ot={class:"buttonGroup-right"},at={class:"buttonGroup-bottom"},lt={class:"left-panel"},st={class:"panel-header"},it={class:"panel-body"},rt={key:1,class:"clipping-content"},ct={class:"radio-group"},ut={class:"radio-label"},dt={class:"radio-label"},vt={class:"radio-label"},mt={class:"radio-label"},pt={class:"right-panel"},ft={class:"panel-header"},gt={class:"panel-body"},ht={key:0,class:"loading-overlay"},bt={key:1,class:"brand"},yt={class:"brand-item"},Vt={class:"item-value"},Nt={class:"brand-item"},_t={class:"item-value"},wt={class:"brand-item"},xt={class:"item-value"},kt=e.defineComponent({__name:"threeSceneViewForCPMPIP",props:{fileBlobs:{default:()=>[]},threeData:{}},setup(v){const s=v,S=e.inject("setManagementPageTitle"),g=e.inject("setManagementPageVisible"),i=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.machine}),u=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.产品型号}),p=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.编号}),A=e.computed(()=>{var t;return(t=i==null?void 0:i.value)==null?void 0:t.厂家}),y=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.workpieceInfo}),D=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.knife}),$=e.ref([]),W=async n=>{!n||!n.isExtra||(await X(n),S==null||S(n==null?void 0:n.pageName),g==null||g(!0))},X=ae.debounce(async n=>{await ae.onPageBack();const{mainKey:t,baseMenuPath:l}=n||{};ze.copyAdd(l,t)},500);e.watch(()=>[u.value,y.value,D.value],()=>{var b,d,te,ne;const n=[],t={pageName:"机床",name:"机床",label:"机床",type:"机床",id:"机床",path:"机床",baseMenuPath:"设备库/机床",children:[],show:!0,isPenultimate:!1};u.value&&t.children.push({isExtra:!0,pageName:"机床",mainKey:u.value,label:u.value,baseMenuPath:"设备库/机床"});const l={pageName:"工件",name:"工件",label:"工件",type:"工件",id:"工件",path:"工件",baseMenuPath:"设备库/机床",children:[],show:!0,isPenultimate:!1};y.value&&l.children.push({isExtra:!0,type:(b=y.value)==null?void 0:b.type,pageName:"工件",mainKey:(d=y.value)==null?void 0:d.name,label:(te=y.value)==null?void 0:te.name,baseMenuPath:`工件库/${(ne=y.value)==null?void 0:ne.type}`});const q={pageName:"刀具",name:"刀具",label:"刀具",type:"刀具",id:"刀具",path:"刀具",children:[],show:!0,isPenultimate:!1};D.value&&q.children.push({isExtra:!0,pageName:"刀具",mainKey:D.value,label:D.value,baseMenuPath:"设备库/刀具"}),n.push(t,l,q),$.value=n},{immediate:!0});const I=e.ref([]),k=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.csvUrl});e.watch(()=>k.value,async()=>{if(console.log("three data",s==null?void 0:s.threeData),console.log("csvUrl",k.value),k.value){const n=await qe(k.value);I.value=n}},{immediate:!0});const B=e.computed(()=>{var t,l;return(l=(t=s==null?void 0:s.threeData)==null?void 0:t.data)==null?void 0:l.bladeObjUrl}),Z=e.ref(j.sceneType.ROBOT),C=e.ref(null),O=e.ref(!1),E=e.ref(""),w=e.ref(!1),m=e.ref(""),P=e.ref(!1),V=e.ref(""),N=e.shallowRef(null),T=e.ref(null),M=e.ref("叶片模型"),o=e.shallowRef(null),a=e.shallowRef(null),r=e.shallowRef(null),c=e.ref(),{currentModels:_,resetView:z,initThreeJS:U,handleResize:re,getThreeJSObjects:R,cleanup:ce,setModels:Q,axesHelperVisible:ue,toggleAxesVisibility:de,zoomIn:ve,zoomOut:me}=J.useThreeJS(C),{loadSceneFromFile:pe}=j.useUrdfLoader(R,_,O,E),{isAnimating:ee,toggleAnimation:fe,stopAnimation:ge}=J.useAnimation(R,_),{isClipping:he,activeClippingAxis:h,toggleClipping:be,updateClippingPlanes:x}=J.useClipping(R,_),{initRaycaster:ye,selectedObject3D:Ve,setSelectedObjVisible:Ne,updatePosition:_e,updateRotation:we,dispose:xe}=j.useRaycaster(C,R,_),ke=()=>{de()},Ce=e.computed(()=>Z.value===j.sceneType.ROBOT),F=n=>{w.value=!0,m.value=n,n==="剖面视图"&&!he.value&&be()},H=n=>{P.value=!0,V.value=n},Ee=()=>{var n;(n=c==null?void 0:c.value)==null||n.playAnimation()},Pe=()=>{var n;(n=c==null?void 0:c.value)==null||n.stopAnimation()},Te=()=>{var n;(n=c==null?void 0:c.value)==null||n.forwardFrame()},Se=()=>{var n;(n=c==null?void 0:c.value)==null||n.backwardFrame()},K=()=>{var n;(n=c==null?void 0:c.value)==null||n.reset()},De=()=>{K(),z(),T.value&&T.value.resetToZero()},Me=(n,t)=>se.getMeshFromLink(n,t),je=async n=>{const t=Me(n,M.value);if(a.value=t,console.log("bladeObjUrl",B.value),t&&t.parent&&B.value){const l=await Qe(B.value);l.name="blade_clone",t.parent.add(l),l.position.copy(t.position),l.rotation.copy(t.rotation),l.scale.copy(t.scale),t.visible=!1,o.value=l}else M.value&&console.warn(`在 Blade '${M.value}' 中未找到可替换的网格或其没有父级。`)};e.watch(()=>s.fileBlobs,n=>{if(n&&n.length>0){const t=n[0];if(!t.name.toLowerCase().endsWith(".urdf"))return;pe(t).then(l=>{N.value=l,l&&je(l)}).catch(l=>{console.error("加载URDF文件时发生错误:",l),G.ElMessage.error("加载urdf模型失败"),N.value=null})}else N.value=null},{immediate:!0,deep:!0}),e.watch(N,n=>{K(),n?(Q([n]),T.value=new j.URDFRobotController(n)):(Q([]),T.value=null),ye()});let L=null;const Ae=()=>{U(),e.nextTick(()=>{C.value&&(L=new ResizeObserver(re),L.observe(C.value))});const n=R();r.value=n.scene},Be=()=>{m.value="",V.value="",L&&L.disconnect(),ee.value&&ge(),K(),ce(),xe()};return e.onMounted(async()=>{await e.nextTick();try{Ae()}catch(n){console.error("Three.js 初始化失败:",n),G.ElMessage.error("渲染引擎初始化失败!")}}),e.onBeforeUnmount(()=>{Be()}),(n,t)=>{const l=e.resolveComponent("el-scrollbar"),q=e.resolveComponent("PipeAnalysisPanel");return e.openBlock(),e.createElementBlock("div",et,[e.withDirectives(e.createElementVNode("div",{ref_key:"threejsContainer",ref:C,class:"threejs-container"},null,512),[[e.vShow,Ce.value]]),e.createElementVNode("div",tt,[e.createVNode(f.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:De,title:"重置"}),e.createVNode(f.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大",onClick:e.unref(ve)},null,8,["onClick"]),e.createVNode(f.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小",onClick:e.unref(me)},null,8,["onClick"]),e.createVNode(f.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:e.unref(fe),title:e.unref(ee)?"停止动画":"动画视图"},null,8,["onClick","title"]),e.createVNode(f.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:e.unref(ue),onClick:ke,title:"显隐坐标轴"},null,8,["active"])]),e.createElementVNode("div",nt,[e.renderSlot(n.$slots,"button-left",{switchRightPanel:F},void 0,!0),e.createVNode(f.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:t[0]||(t[0]=b=>F("场景树")),active:w.value&&m.value==="场景树",title:"场景树"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"clipping",size:"24",onClick:t[1]||(t[1]=b=>F("剖面视图")),active:w.value&&m.value==="剖面视图",title:"剖面视图"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",onClick:t[2]||(t[2]=b=>F("工件树")),active:w.value&&m.value==="工件树"},null,8,["active"])]),e.createElementVNode("div",ot,[e.renderSlot(n.$slots,"button-right",{switchRightPanel:H},void 0,!0),e.createVNode(f.ThreeSvgIcon,{name:"jichuangxuanze",size:"24",onClick:t[3]||(t[3]=b=>H("机床控制")),active:P.value&&V.value==="机床控制",title:"机床控制"},null,8,["active"]),e.createVNode(f.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:t[4]||(t[4]=b=>H("轨迹路径")),active:P.value&&V.value==="轨迹路径"},null,8,["active"])]),e.createElementVNode("div",at,[e.createVNode(f.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:Se}),e.createVNode(f.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:Ee}),e.createVNode(f.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:Te}),e.createVNode(f.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:Pe})]),e.withDirectives(e.createElementVNode("div",lt,[e.createElementVNode("div",st,[e.createElementVNode("span",null,e.toDisplayString(m.value),1),e.createElementVNode("span",{class:"close",onClick:t[5]||(t[5]=b=>w.value=!1)}," X ")]),e.createElementVNode("div",it,[e.createVNode(l,{height:"100%"},{default:e.withCtx(()=>{var b;return[m.value==="场景树"?(e.openBlock(),e.createBlock(oe.UrdfTree,{key:0,model:N.value,extraNodes:$.value,onNodeClick:W},null,8,["model","extraNodes"])):e.createCommentVNode("",!0),m.value==="剖面视图"?(e.openBlock(),e.createElementBlock("div",rt,[e.createElementVNode("div",ct,[e.createElementVNode("label",ut,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":t[6]||(t[6]=d=>e.isRef(h)?h.value=d:null),onChange:t[7]||(t[7]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[15]||(t[15]=e.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),e.createElementVNode("label",dt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":t[8]||(t[8]=d=>e.isRef(h)?h.value=d:null),onChange:t[9]||(t[9]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[16]||(t[16]=e.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),e.createElementVNode("label",vt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":t[10]||(t[10]=d=>e.isRef(h)?h.value=d:null),onChange:t[11]||(t[11]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[17]||(t[17]=e.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),e.createElementVNode("label",mt,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":t[12]||(t[12]=d=>e.isRef(h)?h.value=d:null),onChange:t[13]||(t[13]=(...d)=>e.unref(x)&&e.unref(x)(...d))},null,544),[[e.vModelRadio,e.unref(h)]]),t[18]||(t[18]=e.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):e.createCommentVNode("",!0),m.value==="工件树"?(e.openBlock(),e.createBlock(j.WorkpieceTreePanel,{key:2,model:(b=e.unref(Ve))==null?void 0:b.obj,onVisibleChange:e.unref(Ne),onUpdatePosition:e.unref(_e),onUpdateRotation:e.unref(we)},null,8,["model","onVisibleChange","onUpdatePosition","onUpdateRotation"])):e.createCommentVNode("",!0)]}),_:1})])],512),[[e.vShow,w.value]]),e.withDirectives(e.createElementVNode("div",pt,[e.createElementVNode("div",ft,[e.createElementVNode("span",null,e.toDisplayString(V.value),1),e.createElementVNode("span",{class:"close",onClick:t[14]||(t[14]=b=>P.value=!1)}," X ")]),e.createElementVNode("div",gt,[e.createVNode(l,{height:"100%"},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(oe.JointPanel,{model:N.value},null,8,["model"]),[[e.vShow,V.value==="机床控制"]]),e.withDirectives(e.createVNode(Ye,{robot:N.value,scene:r.value,animationData:I.value,ref_key:"bladeTrackPanelRef",ref:c},null,8,["robot","scene","animationData"]),[[e.vShow,V.value==="轨迹路径"]]),e.renderSlot(n.$slots,"right-panel",{rightPanelType:V.value},void 0,!0)]),_:3})])],512),[[e.vShow,P.value]]),O.value?(e.openBlock(),e.createElementBlock("div",ht,[t[19]||(t[19]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(E.value),1)])):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",bt,[e.createElementVNode("div",yt,[t[20]||(t[20]=e.createElementVNode("div",{class:"item-label"},"厂家:",-1)),e.createElementVNode("div",Vt,e.toDisplayString(A.value),1)]),e.createElementVNode("div",Nt,[t[21]||(t[21]=e.createElementVNode("div",{class:"item-label"},"型号:",-1)),e.createElementVNode("div",_t,e.toDisplayString(u.value),1)]),e.createElementVNode("div",wt,[t[22]||(t[22]=e.createElementVNode("div",{class:"item-label"},"编号:",-1)),e.createElementVNode("div",xt,e.toDisplayString(p.value),1)])])):e.createCommentVNode("",!0),e.createVNode(q,{ref:"pipeAnalysisPanelRef"},null,512)])}}}),Ct=ie._export_sfc(kt,[["__scopeId","data-v-5ace1f6a"]]);exports.default=Ct;
@@ -1,12 +1,12 @@
1
1
  import { defineComponent as ve, computed as F, ref as b, resolveComponent as S, createElementBlock as X, openBlock as L, createElementVNode as n, createVNode as s, withCtx as W, toDisplayString as M, watch as de, shallowRef as G, onMounted as je, onBeforeUnmount as De, withDirectives as z, createCommentVNode as le, unref as r, renderSlot as re, createBlock as Se, isRef as I, vModelRadio as J, vShow as R, nextTick as Le } from "vue";
2
- import { u as Me, a as Oe, b as Ke, f as Ne, d as ue } from "./iconfont-C-jLDDui.js";
3
- import { C as Y, k as Be, aE as Ee, v as Ge, V as ce } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BrO2CG13.js";
4
- import { r as Ie } from "./threeViewerHost-Dv-zRfI9.js";
2
+ import { u as Me, a as Oe, b as Ke, f as Ne, d as ue } from "./iconfont-DDhe-BUl.js";
3
+ import { C as Y, k as Be, aE as Ee, v as Ge, V as ce } from "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Cb5M-Cn4.js";
4
+ import { r as Ie } from "./threeViewerHost-CNIsWoK3.js";
5
5
  import { E as H } from "./index-BUYYl2Pc.js";
6
- import { U as Je, J as Re } from "./urdfTree-CUgm69Ah.js";
6
+ import { U as Je, J as Re } from "./urdfTree-CjCnTExe.js";
7
7
  import { _ as pe } from "./_plugin-vue_export-helper-CHgC5LLL.js";
8
8
  import { T as y } from "./svgIcon-D-_fXUBL.js";
9
- import { g as Xe, d as He, a as We, c as Ye } from "./pointTrack-CpqyoYjd.js";
9
+ import { g as Xe, d as He, a as We, c as Ye } from "./pointTrack-D9n7TSzE.js";
10
10
  import { i as Ze } from "./isString-BATKat46.js";
11
11
  function qe(g = 0.5, h = 4) {
12
12
  const C = new Be(
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),S=require("./iconfont-CpbN39ZP.cjs"),k=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-v_tZRKeY.cjs"),ge=require("./threeViewerHost-CQAQgsH3.cjs"),j=require("./index-C8qRkCgn.cjs"),X=require("./urdfTree-jtHwasZ-.cjs"),W=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),g=require("./svgIcon-CUM54R6L.cjs"),$=require("./pointTrack-Dcp686Ea.cjs"),he=require("./isString--eJE54G5.cjs");function Ve(m=.5,V=4){const w=new k.Mesh(new k.ConeGeometry(m,V,32),new k.MeshStandardMaterial({color:"#919191ff",metalness:.3,roughness:.6})),c=w.geometry.parameters.height;return w.geometry.translate(0,-c/2,0),w.rotation.set(-90,0,0,"XYZ"),w}function we(m,V){m.position.copy(V)}function ye(m,V,w=new k.Color(16711680)){const c=new k.Vector3;V.getWorldPosition(c);const i=m.geometry.attributes.position,u=m.geometry.attributes.color,d=new k.Color(55551);let n=1/0,f=-1;for(let a=0;a<i.count;a++){const s=new k.Vector3().fromBufferAttribute(i,a).distanceTo(c);s<n&&(n=s,f=a)}for(let a=0;a<u.count;a++)d.toArray(u.array,a*3);if(f!==-1){const a=w.toArray(),p=f*3+2;for(let s=0;s<p;s=s+3)u.array[s]=a[0],u.array[s+1]=a[1],u.array[s+2]=a[2]}u.needsUpdate=!0}function Y(m,V,w,c=new k.Color(16711680)){we(m,V),ye(w,m,c)}const ke={class:"panel-content"},Ne={class:"animation-controls"},Ce={class:"control-row"},be={class:"control-row"},_e={class:"frame-info"},Te={class:"control-row"},Ee=e.defineComponent({__name:"trackAnimationPanel",props:{cloud:{},knife:{},vectors:{}},emits:["getThreeData"],setup(m,{expose:V,emit:w}){const c=m,i=e.computed(()=>c.vectors),u=e.ref(!1),d=e.ref(0),n=e.ref(100);let f=!1;const a=r=>`第 ${r+1} 帧`,p=r=>{if(r<0||r>=i.value.length){console.error(`帧索引 ${r} 超出范围`);return}const v=i.value[r];d.value=r,Y(c.knife,v,c.cloud)},s=async()=>{if(i.value.length===0){j.ElMessage.error("无法播放动画:无数据");return}if(!u.value){u.value=!0,f=!1,i.value.length-1===d.value&&(d.value=0);try{for(let r=d.value+1;r<i.value.length&&!f;r++)await new Promise(v=>setTimeout(v,n.value)),p(r);f||j.ElMessage.success("动画播放完成")}catch(r){console.error("动画播放出错:",r)}finally{u.value=!1}}},N=async()=>{u.value&&(f=!0,await new Promise(r=>{const v=e.watch(()=>u.value,I=>{v(),r()})}),j.ElMessage.info("动画已停止"))},E=async r=>{u.value&&await N(),p(r)},z=async()=>{u.value&&await N(),!(d.value+1>=i.value.length)&&p(d.value+1)},M=async()=>{u.value&&await N(),d.value!==0&&p(d.value-1)},P=()=>{d.value=0};return V({playAnimation:s,stopAnimation:N,forwardFrame:z,backwardFrame:M,resetAnimationFrame:P,reset:async()=>{await N(),P()}}),(r,v)=>{const I=e.resolveComponent("el-input-number"),R=e.resolveComponent("el-form-item"),B=e.resolveComponent("el-form"),U=e.resolveComponent("el-slider");return e.openBlock(),e.createElementBlock("div",ke,[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ce,[e.createVNode(B,{"label-width":"auto",style:{width:"100%"}},{default:e.withCtx(()=>[e.createVNode(R,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:e.withCtx(()=>[e.createVNode(I,{modelValue:n.value,"onUpdate:modelValue":v[0]||(v[0]=x=>n.value=x),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",be,[v[2]||(v[2]=e.createElementVNode("label",null,"当前帧:",-1)),e.createElementVNode("span",_e,e.toDisplayString(d.value+1)+" / "+e.toDisplayString(i.value.length),1)]),e.createElementVNode("div",Te,[v[3]||(v[3]=e.createElementVNode("label",null,"动画进度:",-1)),e.createVNode(U,{modelValue:d.value,"onUpdate:modelValue":v[1]||(v[1]=x=>d.value=x),min:0,max:i.value.length>0?i.value.length-1:0,step:1,"format-tooltip":a,onInput:E,disabled:i.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),Se=W._export_sfc(Ee,[["__scopeId","data-v-b5665bfd"]]),xe={class:"obj-viewer-container"},De={class:"buttonGroup-topLeft"},Ae={class:"buttonGroup-left"},ze={class:"buttonGroup-right"},Pe={class:"buttonGroup-bottom"},Ie={class:"left-panel"},Ue={class:"panel-header"},Fe={class:"panel-body"},$e={key:1,class:"clipping-content"},je={class:"radio-group"},Me={class:"radio-label"},Re={class:"radio-label"},Be={class:"radio-label"},qe={class:"radio-label"},Oe={class:"right-panel"},Le={class:"panel-header"},Ke={class:"panel-body"},Ge={key:0,class:"loading-overlay"},He=e.defineComponent({__name:"threeTrackPathView",props:{fileBlobs:{},threeData:{default:()=>""},trackFileType:{}},emits:["getAnimationData","getThreeData"],setup(m,{emit:V}){const w=V,c=m,i=e.ref(null),u=e.ref(!1),d=e.ref(""),n=e.ref(),f=e.ref(!1),a=e.ref(""),p=e.ref(!1),s=e.ref(""),N=e.shallowRef(null),E=e.shallowRef(null),{currentModels:z,initThreeJS:M,handleResize:P,getThreeJSObjects:y,cleanup:r,axesHelperVisible:v,toggleAxesVisibility:I,zoomIn:R,zoomOut:B}=S.useThreeJS(i),{isAnimating:U,toggleAnimation:x,stopAnimation:Z}=S.useAnimation(y,z),{isClipping:Q,activeClippingAxis:h,toggleClipping:ee,updateClippingPlanes:C}=S.useClipping(y,z),te=()=>{I()},q=o=>{f.value=!0,a.value=o,o==="剖面视图"&&!Q.value&&ee()},O=o=>{p.value=!0,s.value=o,o==="动画仿真"&&w("getAnimationData")},L=e.ref([]),D=e.ref([]),oe=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isUv}),ne=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isCyd}),le=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isCpt}),_=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isNc}),K=e.computed(()=>{const o=c.fileBlobs||[];return o==null?void 0:o[0]});let b=e.shallowRef(),T=e.shallowRef();const ae=()=>{const{scene:o}=y();b.value&&o&&(S.disposeObj(b.value,o),b.value=null)},re=()=>{const{scene:o}=y();T.value&&o&&(S.disposeObj(T.value,o),T.value=null)},G=()=>{ae(),re()},ie=async o=>{const t=URL.createObjectURL(o),A=await ge.readFileText(t);if(URL.revokeObjectURL(t),he.isString(A)){const l=await $.getPoints(A,c.trackFileType)||[];L.value=l;const J=L.value;oe.value&&(b.value=$.drawLine(y,J)),(ne.value||le.value||_.value)&&(b.value=$.drawPoints(y,J)),S.frameCameraToObject3D(y,b.value)}},se=async()=>{var o,t;T.value=Ve(),D.value=$.convertPointsToVector3(L.value),D.value&&D.value.length&&(Y(T.value,D.value[0],b.value,new k.Color(16711680)),(t=(o=E.value)==null?void 0:o.add)==null||t.call(o,T.value))},ce=async()=>{var o;await((o=n==null?void 0:n.value)==null?void 0:o.reset()),await H(K.value)},H=async o=>{G(),await ie(o),_.value&&se()};e.watch(()=>K.value,async o=>{o&&await H(o)},{immediate:!0,deep:!0});const ue=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.playAnimation())},de=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.stopAnimation())},ve=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.forwardFrame())},fe=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.backwardFrame())};let F=null;const me=()=>{M(),e.nextTick(()=>{i.value&&(F=new ResizeObserver(P),F.observe(i.value))});const o=y();E.value=o.scene,E.value&&(E.value.name="CPMPIP")},pe=()=>{F&&F.disconnect(),U.value&&Z(),G(),r()};return e.onMounted(async()=>{try{me()}catch(o){console.error("Three.js 初始化失败:",o),j.ElMessage.error("渲染引擎初始化失败!")}}),e.onBeforeUnmount(()=>{pe()}),(o,t)=>{const A=e.resolveComponent("el-scrollbar");return e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",{ref_key:"threejsContainer",ref:i,class:"threejs-container"},null,512),e.createElementVNode("div",De,[e.createVNode(g.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:ce,title:"重置"}),e.createVNode(g.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大",onClick:e.unref(R)},null,8,["onClick"]),e.createVNode(g.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小",onClick:e.unref(B)},null,8,["onClick"]),e.createVNode(g.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:e.unref(x),title:e.unref(U)?"停止动画":"动画视图"},null,8,["onClick","title"]),e.createVNode(g.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:e.unref(v),onClick:te,title:"显隐坐标轴"},null,8,["active"])]),e.createElementVNode("div",Ae,[e.renderSlot(o.$slots,"button-left",{switchRightPanel:q},void 0,!0),e.createVNode(g.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:t[0]||(t[0]=l=>q("场景树")),active:f.value&&a.value==="场景树",title:"场景树"},null,8,["active"]),e.createVNode(g.ThreeSvgIcon,{name:"clipping",size:"24",onClick:t[1]||(t[1]=l=>q("剖面视图")),active:f.value&&a.value==="剖面视图",title:"剖面视图"},null,8,["active"])]),e.createElementVNode("div",ze,[e.renderSlot(o.$slots,"button-right",{switchRightPanel:O},void 0,!0),e.createVNode(g.ThreeSvgIcon,{name:"guanjiekongzhi",size:"24",onClick:t[2]||(t[2]=l=>O("关节控制")),active:p.value&&s.value==="关节控制",title:"关节控制"},null,8,["active"]),e.createVNode(g.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:t[3]||(t[3]=l=>O("动画仿真")),active:p.value&&s.value==="动画仿真"},null,8,["active"])]),e.createElementVNode("div",Pe,[e.createVNode(g.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:fe}),e.createVNode(g.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:ue}),e.createVNode(g.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:ve}),e.createVNode(g.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:de})]),e.withDirectives(e.createElementVNode("div",Ie,[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(a.value),1),e.createElementVNode("span",{class:"close",onClick:t[4]||(t[4]=l=>f.value=!1)}," X ")]),e.createElementVNode("div",Fe,[e.createVNode(A,{height:"100%"},{default:e.withCtx(()=>[a.value==="场景树"?(e.openBlock(),e.createBlock(X.UrdfTree,{key:0,model:N.value},null,8,["model"])):e.createCommentVNode("",!0),a.value==="剖面视图"?(e.openBlock(),e.createElementBlock("div",$e,[e.createElementVNode("div",je,[e.createElementVNode("label",Me,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":t[5]||(t[5]=l=>e.isRef(h)?h.value=l:null),onChange:t[6]||(t[6]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[14]||(t[14]=e.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),e.createElementVNode("label",Re,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":t[7]||(t[7]=l=>e.isRef(h)?h.value=l:null),onChange:t[8]||(t[8]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[15]||(t[15]=e.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),e.createElementVNode("label",Be,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":t[9]||(t[9]=l=>e.isRef(h)?h.value=l:null),onChange:t[10]||(t[10]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[16]||(t[16]=e.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),e.createElementVNode("label",qe,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":t[11]||(t[11]=l=>e.isRef(h)?h.value=l:null),onChange:t[12]||(t[12]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[17]||(t[17]=e.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):e.createCommentVNode("",!0)]),_:1})])],512),[[e.vShow,f.value]]),e.withDirectives(e.createElementVNode("div",Oe,[e.createElementVNode("div",Le,[e.createElementVNode("span",null,e.toDisplayString(s.value),1),e.createElementVNode("span",{class:"close",onClick:t[13]||(t[13]=l=>p.value=!1)}," X ")]),e.createElementVNode("div",Ke,[e.createVNode(A,{height:"100%"},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(X.JointPanel,{model:N.value},null,8,["model"]),[[e.vShow,s.value==="关节控制"]]),e.withDirectives(e.createVNode(Se,{ref_key:"animationPanelRef",ref:n,cloud:e.unref(b),knife:e.unref(T),vectors:D.value},null,8,["cloud","knife","vectors"]),[[e.vShow,s.value==="动画仿真"&&_.value]])]),_:1})])],512),[[e.vShow,p.value]]),u.value?(e.openBlock(),e.createElementBlock("div",Ge,[t[18]||(t[18]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(d.value),1)])):e.createCommentVNode("",!0)])}}}),Je=W._export_sfc(He,[["__scopeId","data-v-61931e01"]]);exports.default=Je;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),S=require("./iconfont-ZL_6BkHR.cjs"),k=require("./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DaF8XJ8v.cjs"),ge=require("./threeViewerHost-MWedRVF2.cjs"),j=require("./index-C8qRkCgn.cjs"),X=require("./urdfTree-NsMmy6lF.cjs"),W=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),g=require("./svgIcon-CUM54R6L.cjs"),$=require("./pointTrack-CPO9-bf6.cjs"),he=require("./isString--eJE54G5.cjs");function Ve(m=.5,V=4){const w=new k.Mesh(new k.ConeGeometry(m,V,32),new k.MeshStandardMaterial({color:"#919191ff",metalness:.3,roughness:.6})),c=w.geometry.parameters.height;return w.geometry.translate(0,-c/2,0),w.rotation.set(-90,0,0,"XYZ"),w}function we(m,V){m.position.copy(V)}function ye(m,V,w=new k.Color(16711680)){const c=new k.Vector3;V.getWorldPosition(c);const i=m.geometry.attributes.position,u=m.geometry.attributes.color,d=new k.Color(55551);let n=1/0,f=-1;for(let a=0;a<i.count;a++){const s=new k.Vector3().fromBufferAttribute(i,a).distanceTo(c);s<n&&(n=s,f=a)}for(let a=0;a<u.count;a++)d.toArray(u.array,a*3);if(f!==-1){const a=w.toArray(),p=f*3+2;for(let s=0;s<p;s=s+3)u.array[s]=a[0],u.array[s+1]=a[1],u.array[s+2]=a[2]}u.needsUpdate=!0}function Y(m,V,w,c=new k.Color(16711680)){we(m,V),ye(w,m,c)}const ke={class:"panel-content"},Ne={class:"animation-controls"},Ce={class:"control-row"},be={class:"control-row"},_e={class:"frame-info"},Te={class:"control-row"},Ee=e.defineComponent({__name:"trackAnimationPanel",props:{cloud:{},knife:{},vectors:{}},emits:["getThreeData"],setup(m,{expose:V,emit:w}){const c=m,i=e.computed(()=>c.vectors),u=e.ref(!1),d=e.ref(0),n=e.ref(100);let f=!1;const a=r=>`第 ${r+1} 帧`,p=r=>{if(r<0||r>=i.value.length){console.error(`帧索引 ${r} 超出范围`);return}const v=i.value[r];d.value=r,Y(c.knife,v,c.cloud)},s=async()=>{if(i.value.length===0){j.ElMessage.error("无法播放动画:无数据");return}if(!u.value){u.value=!0,f=!1,i.value.length-1===d.value&&(d.value=0);try{for(let r=d.value+1;r<i.value.length&&!f;r++)await new Promise(v=>setTimeout(v,n.value)),p(r);f||j.ElMessage.success("动画播放完成")}catch(r){console.error("动画播放出错:",r)}finally{u.value=!1}}},N=async()=>{u.value&&(f=!0,await new Promise(r=>{const v=e.watch(()=>u.value,I=>{v(),r()})}),j.ElMessage.info("动画已停止"))},E=async r=>{u.value&&await N(),p(r)},z=async()=>{u.value&&await N(),!(d.value+1>=i.value.length)&&p(d.value+1)},M=async()=>{u.value&&await N(),d.value!==0&&p(d.value-1)},P=()=>{d.value=0};return V({playAnimation:s,stopAnimation:N,forwardFrame:z,backwardFrame:M,resetAnimationFrame:P,reset:async()=>{await N(),P()}}),(r,v)=>{const I=e.resolveComponent("el-input-number"),R=e.resolveComponent("el-form-item"),B=e.resolveComponent("el-form"),U=e.resolveComponent("el-slider");return e.openBlock(),e.createElementBlock("div",ke,[e.createElementVNode("div",Ne,[e.createElementVNode("div",Ce,[e.createVNode(B,{"label-width":"auto",style:{width:"100%"}},{default:e.withCtx(()=>[e.createVNode(R,{label:"帧间隔 (ms):",prop:"frameDuration"},{default:e.withCtx(()=>[e.createVNode(I,{modelValue:n.value,"onUpdate:modelValue":v[0]||(v[0]=x=>n.value=x),min:0,max:5e3,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",be,[v[2]||(v[2]=e.createElementVNode("label",null,"当前帧:",-1)),e.createElementVNode("span",_e,e.toDisplayString(d.value+1)+" / "+e.toDisplayString(i.value.length),1)]),e.createElementVNode("div",Te,[v[3]||(v[3]=e.createElementVNode("label",null,"动画进度:",-1)),e.createVNode(U,{modelValue:d.value,"onUpdate:modelValue":v[1]||(v[1]=x=>d.value=x),min:0,max:i.value.length>0?i.value.length-1:0,step:1,"format-tooltip":a,onInput:E,disabled:i.value.length===0,style:{"flex-grow":"1",margin:"0 10px"}},null,8,["modelValue","max","disabled"])])])])}}}),Se=W._export_sfc(Ee,[["__scopeId","data-v-b5665bfd"]]),xe={class:"obj-viewer-container"},De={class:"buttonGroup-topLeft"},Ae={class:"buttonGroup-left"},ze={class:"buttonGroup-right"},Pe={class:"buttonGroup-bottom"},Ie={class:"left-panel"},Ue={class:"panel-header"},Fe={class:"panel-body"},$e={key:1,class:"clipping-content"},je={class:"radio-group"},Me={class:"radio-label"},Re={class:"radio-label"},Be={class:"radio-label"},qe={class:"radio-label"},Oe={class:"right-panel"},Le={class:"panel-header"},Ke={class:"panel-body"},Ge={key:0,class:"loading-overlay"},He=e.defineComponent({__name:"threeTrackPathView",props:{fileBlobs:{},threeData:{default:()=>""},trackFileType:{}},emits:["getAnimationData","getThreeData"],setup(m,{emit:V}){const w=V,c=m,i=e.ref(null),u=e.ref(!1),d=e.ref(""),n=e.ref(),f=e.ref(!1),a=e.ref(""),p=e.ref(!1),s=e.ref(""),N=e.shallowRef(null),E=e.shallowRef(null),{currentModels:z,initThreeJS:M,handleResize:P,getThreeJSObjects:y,cleanup:r,axesHelperVisible:v,toggleAxesVisibility:I,zoomIn:R,zoomOut:B}=S.useThreeJS(i),{isAnimating:U,toggleAnimation:x,stopAnimation:Z}=S.useAnimation(y,z),{isClipping:Q,activeClippingAxis:h,toggleClipping:ee,updateClippingPlanes:C}=S.useClipping(y,z),te=()=>{I()},q=o=>{f.value=!0,a.value=o,o==="剖面视图"&&!Q.value&&ee()},O=o=>{p.value=!0,s.value=o,o==="动画仿真"&&w("getAnimationData")},L=e.ref([]),D=e.ref([]),oe=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isUv}),ne=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isCyd}),le=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isCpt}),_=e.computed(()=>{var t;return(t=c.trackFileType)==null?void 0:t.isNc}),K=e.computed(()=>{const o=c.fileBlobs||[];return o==null?void 0:o[0]});let b=e.shallowRef(),T=e.shallowRef();const ae=()=>{const{scene:o}=y();b.value&&o&&(S.disposeObj(b.value,o),b.value=null)},re=()=>{const{scene:o}=y();T.value&&o&&(S.disposeObj(T.value,o),T.value=null)},G=()=>{ae(),re()},ie=async o=>{const t=URL.createObjectURL(o),A=await ge.readFileText(t);if(URL.revokeObjectURL(t),he.isString(A)){const l=await $.getPoints(A,c.trackFileType)||[];L.value=l;const J=L.value;oe.value&&(b.value=$.drawLine(y,J)),(ne.value||le.value||_.value)&&(b.value=$.drawPoints(y,J)),S.frameCameraToObject3D(y,b.value)}},se=async()=>{var o,t;T.value=Ve(),D.value=$.convertPointsToVector3(L.value),D.value&&D.value.length&&(Y(T.value,D.value[0],b.value,new k.Color(16711680)),(t=(o=E.value)==null?void 0:o.add)==null||t.call(o,T.value))},ce=async()=>{var o;await((o=n==null?void 0:n.value)==null?void 0:o.reset()),await H(K.value)},H=async o=>{G(),await ie(o),_.value&&se()};e.watch(()=>K.value,async o=>{o&&await H(o)},{immediate:!0,deep:!0});const ue=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.playAnimation())},de=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.stopAnimation())},ve=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.forwardFrame())},fe=()=>{var o;_.value&&((o=n==null?void 0:n.value)==null||o.backwardFrame())};let F=null;const me=()=>{M(),e.nextTick(()=>{i.value&&(F=new ResizeObserver(P),F.observe(i.value))});const o=y();E.value=o.scene,E.value&&(E.value.name="CPMPIP")},pe=()=>{F&&F.disconnect(),U.value&&Z(),G(),r()};return e.onMounted(async()=>{try{me()}catch(o){console.error("Three.js 初始化失败:",o),j.ElMessage.error("渲染引擎初始化失败!")}}),e.onBeforeUnmount(()=>{pe()}),(o,t)=>{const A=e.resolveComponent("el-scrollbar");return e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",{ref_key:"threejsContainer",ref:i,class:"threejs-container"},null,512),e.createElementVNode("div",De,[e.createVNode(g.ThreeSvgIcon,{name:"viewReset",size:"24",onClick:ce,title:"重置"}),e.createVNode(g.ThreeSvgIcon,{name:"fangda",size:"24",title:"放大",onClick:e.unref(R)},null,8,["onClick"]),e.createVNode(g.ThreeSvgIcon,{name:"suoxiao",size:"24",title:"缩小",onClick:e.unref(B)},null,8,["onClick"]),e.createVNode(g.ThreeSvgIcon,{name:"lookAround",size:"24",onClick:e.unref(x),title:e.unref(U)?"停止动画":"动画视图"},null,8,["onClick","title"]),e.createVNode(g.ThreeSvgIcon,{name:"zuobiaoxi",size:"24",active:e.unref(v),onClick:te,title:"显隐坐标轴"},null,8,["active"])]),e.createElementVNode("div",Ae,[e.renderSlot(o.$slots,"button-left",{switchRightPanel:q},void 0,!0),e.createVNode(g.ThreeSvgIcon,{name:"jiegoushu",size:"24",onClick:t[0]||(t[0]=l=>q("场景树")),active:f.value&&a.value==="场景树",title:"场景树"},null,8,["active"]),e.createVNode(g.ThreeSvgIcon,{name:"clipping",size:"24",onClick:t[1]||(t[1]=l=>q("剖面视图")),active:f.value&&a.value==="剖面视图",title:"剖面视图"},null,8,["active"])]),e.createElementVNode("div",ze,[e.renderSlot(o.$slots,"button-right",{switchRightPanel:O},void 0,!0),e.createVNode(g.ThreeSvgIcon,{name:"guanjiekongzhi",size:"24",onClick:t[2]||(t[2]=l=>O("关节控制")),active:p.value&&s.value==="关节控制",title:"关节控制"},null,8,["active"]),e.createVNode(g.ThreeSvgIcon,{name:"donghuafangzhen",size:"24",title:"动画仿真",onClick:t[3]||(t[3]=l=>O("动画仿真")),active:p.value&&s.value==="动画仿真"},null,8,["active"])]),e.createElementVNode("div",Pe,[e.createVNode(g.ThreeSvgIcon,{name:"kuaitui",size:"24",backgroundColor:"#ffffff",title:"快退",onClick:fe}),e.createVNode(g.ThreeSvgIcon,{name:"bofang",size:"24",backgroundColor:"#ffffff",title:"播放",onClick:ue}),e.createVNode(g.ThreeSvgIcon,{name:"kuaijin",size:"24",backgroundColor:"#ffffff",title:"快进",onClick:ve}),e.createVNode(g.ThreeSvgIcon,{name:"zanting",size:"24",backgroundColor:"#ffffff",title:"暂停",onClick:de})]),e.withDirectives(e.createElementVNode("div",Ie,[e.createElementVNode("div",Ue,[e.createElementVNode("span",null,e.toDisplayString(a.value),1),e.createElementVNode("span",{class:"close",onClick:t[4]||(t[4]=l=>f.value=!1)}," X ")]),e.createElementVNode("div",Fe,[e.createVNode(A,{height:"100%"},{default:e.withCtx(()=>[a.value==="场景树"?(e.openBlock(),e.createBlock(X.UrdfTree,{key:0,model:N.value},null,8,["model"])):e.createCommentVNode("",!0),a.value==="剖面视图"?(e.openBlock(),e.createElementBlock("div",$e,[e.createElementVNode("div",je,[e.createElementVNode("label",Me,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"none","onUpdate:modelValue":t[5]||(t[5]=l=>e.isRef(h)?h.value=l:null),onChange:t[6]||(t[6]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[14]||(t[14]=e.createElementVNode("span",{class:"radio-text"},"无切割",-1))]),e.createElementVNode("label",Re,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"x","onUpdate:modelValue":t[7]||(t[7]=l=>e.isRef(h)?h.value=l:null),onChange:t[8]||(t[8]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[15]||(t[15]=e.createElementVNode("span",{class:"radio-text"},"X轴切割",-1))]),e.createElementVNode("label",Be,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"y","onUpdate:modelValue":t[9]||(t[9]=l=>e.isRef(h)?h.value=l:null),onChange:t[10]||(t[10]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[16]||(t[16]=e.createElementVNode("span",{class:"radio-text"},"Y轴切割",-1))]),e.createElementVNode("label",qe,[e.withDirectives(e.createElementVNode("input",{type:"radio",name:"clipping-axis",value:"z","onUpdate:modelValue":t[11]||(t[11]=l=>e.isRef(h)?h.value=l:null),onChange:t[12]||(t[12]=(...l)=>e.unref(C)&&e.unref(C)(...l))},null,544),[[e.vModelRadio,e.unref(h)]]),t[17]||(t[17]=e.createElementVNode("span",{class:"radio-text"},"Z轴切割",-1))])])])):e.createCommentVNode("",!0)]),_:1})])],512),[[e.vShow,f.value]]),e.withDirectives(e.createElementVNode("div",Oe,[e.createElementVNode("div",Le,[e.createElementVNode("span",null,e.toDisplayString(s.value),1),e.createElementVNode("span",{class:"close",onClick:t[13]||(t[13]=l=>p.value=!1)}," X ")]),e.createElementVNode("div",Ke,[e.createVNode(A,{height:"100%"},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(X.JointPanel,{model:N.value},null,8,["model"]),[[e.vShow,s.value==="关节控制"]]),e.withDirectives(e.createVNode(Se,{ref_key:"animationPanelRef",ref:n,cloud:e.unref(b),knife:e.unref(T),vectors:D.value},null,8,["cloud","knife","vectors"]),[[e.vShow,s.value==="动画仿真"&&_.value]])]),_:1})])],512),[[e.vShow,p.value]]),u.value?(e.openBlock(),e.createElementBlock("div",Ge,[t[18]||(t[18]=e.createElementVNode("div",{class:"loading-spinner"},null,-1)),e.createElementVNode("p",null,e.toDisplayString(d.value),1)])):e.createCommentVNode("",!0)])}}}),Je=W._export_sfc(He,[["__scopeId","data-v-61931e01"]]);exports.default=Je;
@@ -1,7 +1,7 @@
1
1
  import { computed as l0, defineComponent as Hc, defineAsyncComponent as Ja, ref as ri, watch as Vc, createElementBlock as ti, openBlock as jt, normalizeClass as Gc, createElementVNode as Xc, createBlock as Za, createCommentVNode as ai, renderSlot as st, unref as qa, withCtx as mt } from "vue";
2
2
  import { a as xs, cb as zc, p as Y0, s as ds } from "./index-BUYYl2Pc.js";
3
- import { u as vs } from "./index.vue_vue_type_style_index_1_lang-DCNwSjkL.js";
4
- import "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BrO2CG13.js";
3
+ import { u as vs } from "./index.vue_vue_type_style_index_1_lang-DojDVre8.js";
4
+ import "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Cb5M-Cn4.js";
5
5
  import { _ as $c } from "./_plugin-vue_export-helper-CHgC5LLL.js";
6
6
  function x_(e) {
7
7
  const t = sessionStorage.getItem("loginToken") ?? "123456";
@@ -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-BxY31hG2.js")), a = Ja(() => import("./threePreview-CvFFnufL.js")), n = Ja(() => import("./threeTrackPathView-OwpZN5Yj.js")), i = Ja(() => import("./threeSceneViewForCPMPIP-zbXTglaB.js")), s = {
24806
+ const r = Ja(() => import("./threeSceneView-gGu_Tiet.js")), a = Ja(() => import("./threePreview-BhigaS7l.js")), n = Ja(() => import("./threeTrackPathView-BkvgX6iD.js")), i = Ja(() => import("./threeSceneViewForCPMPIP-ByeK_Nsi.js")), s = {
24807
24807
  ROBOT_SCENE: "robot",
24808
24808
  // 机器人场景
24809
24809
  LATHE_SCENE: "latheScene",