ss-component-new 1.2.9 → 1.2.11

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 (117) hide show
  1. package/dist/{animationData-1jRSDcwE.js → animationData-C_gV7XAN.js} +16 -16
  2. package/dist/animationData-CyP8-u7i.cjs +1 -0
  3. package/dist/array-A59WrroX.js +1207 -0
  4. package/dist/array-BtZq8qON.cjs +11 -0
  5. package/dist/index-2nEz-J89.js +24 -0
  6. package/dist/{index-CQAvn30B.cjs → index-7eyGTvr0.cjs} +1 -1
  7. package/dist/{index-DNm5s2Lm.cjs → index-Adqs5vHH.cjs} +1 -1
  8. package/dist/{index-fMxLuU_H.js → index-B7g38Yte.js} +2 -2
  9. package/dist/{index-Cyk0Tzhx.cjs → index-B9OZcnHm.cjs} +13 -13
  10. package/dist/index-BAOnUk_J.cjs +1 -0
  11. package/dist/{index-B1NmIRwn.js → index-BDaeo6qO.js} +2 -2
  12. package/dist/{index-L3WHrdzB.cjs → index-BJBNtx2b.cjs} +1 -1
  13. package/dist/{index-cA_EynOM.js → index-BMYtLkw8.js} +4 -4
  14. package/dist/{index-Dfhvay-Y.js → index-BQ4Rjf8F.js} +6 -6
  15. package/dist/{index-BQdJqnJf.cjs → index-BUUEqGRN.cjs} +1 -1
  16. package/dist/{index-CgtkRkQ3.js → index-B_ZGJtId.js} +1 -1
  17. package/dist/{index-C2aGGJxk.cjs → index-B_mFQujY.cjs} +1 -1
  18. package/dist/{index-lyUWApVE.js → index-BbI9_JbX.js} +32 -48
  19. package/dist/index-BeYNgEHV.js +144 -0
  20. package/dist/{index-CKHNyMzP.js → index-BwjuTBrR.js} +1 -1
  21. package/dist/{index-Ci_C9h8v.js → index-C-c1pt-2.js} +1 -1
  22. package/dist/{index-DbisH6iI.cjs → index-C40ofXP7.cjs} +1 -1
  23. package/dist/{index-CvrTrN91.js → index-C461j30b.js} +1 -1
  24. package/dist/{index-1vs_3Pz3.cjs → index-C5gPrwPs.cjs} +1 -1
  25. package/dist/{index-Duqrg0DV.cjs → index-C68Hri2v.cjs} +1 -1
  26. package/dist/{index-Djagy2ww.cjs → index-CAewC69j.cjs} +1 -1
  27. package/dist/index-CApZYDIm.cjs +1 -0
  28. package/dist/{index-BWECkG4C.js → index-CKLBlQoK.js} +2122 -2129
  29. package/dist/{index-BaOQV1JK.cjs → index-CKt6cj9f.cjs} +1 -1
  30. package/dist/index-CN29uy_G.js +7293 -0
  31. package/dist/{index-B--6DX0M.js → index-CRiovRyR.js} +2 -2
  32. package/dist/index-CTRmgnKQ.js +2643 -0
  33. package/dist/{index-DWfuOOVD.js → index-CVDv-Zz-.js} +1012 -1009
  34. package/dist/index-CVadHkfS.cjs +1 -0
  35. package/dist/{index-DbzvXPKu.js → index-CYp77kPp.js} +175 -175
  36. package/dist/{index-DGE2awa5.js → index-CjB5ZP_P.js} +2 -2
  37. package/dist/{index-D9wa1LMS.js → index-CkA2IZJB.js} +5 -5
  38. package/dist/{index-fzCcjoGJ.js → index-CoVAbxHN.js} +1 -1
  39. package/dist/index-CwhX2vaq.cjs +1 -0
  40. package/dist/{index-BkrJ0cBf.js → index-D4CVC2Sk.js} +4 -4
  41. package/dist/{index-BzOBvH4x.cjs → index-D55zzS4D.cjs} +1 -1
  42. package/dist/{index-C_MIoNOd.cjs → index-D5ShC3zu.cjs} +1 -1
  43. package/dist/{index-BxftyAcm.cjs → index-D9l1Z4TO.cjs} +1 -1
  44. package/dist/index-DDhAMgrO.js +22 -0
  45. package/dist/{index-CXbvmuYZ.cjs → index-DGBDGLOK.cjs} +1 -1
  46. package/dist/{index-D732VV-0.js → index-DHQH1rlQ.js} +2 -2
  47. package/dist/{index-LjRfbvxs.js → index-DJMHw-xb.js} +11 -11
  48. package/dist/index-DP7rcz4I.cjs +1 -0
  49. package/dist/{index-y1YK6w8c.js → index-DQZ_oAyj.js} +6 -6
  50. package/dist/{index-CVfC3cyK.js → index-DTkAIcvV.js} +13 -13
  51. package/dist/{index-pkxiNiXI.js → index-DfKkN76b.js} +3 -3
  52. package/dist/{index-BFl4mw2K.cjs → index-DkG4A3iE.cjs} +1 -1
  53. package/dist/{index-pleSKUL2.cjs → index-DnU2slQv.cjs} +1 -1
  54. package/dist/{index-sS7-HQlI.cjs → index-DsQ-qtQ9.cjs} +1 -1
  55. package/dist/index-Dwr4RHei.cjs +1 -0
  56. package/dist/{index-BDVOKqI5.js → index-ESNVepXU.js} +6 -6
  57. package/dist/{index-CxbH4zmS.js → index-H_3u1NA_.js} +24 -24
  58. package/dist/{index-wpD5_HUA.cjs → index-QkDZ18PI.cjs} +1 -1
  59. package/dist/index-RVDLy1iy.cjs +1 -0
  60. package/dist/{index-Dcd9HZXq.js → index-ecVCII_e.js} +5 -5
  61. package/dist/{index-BsPQl6nI.cjs → index-i50hp6po.cjs} +1 -1
  62. package/dist/{index-BlZXanJX.js → index-qu3KI1yZ.js} +5 -5
  63. package/dist/{index-BxL4p0ej.cjs → index-t6--MDLB.cjs} +1 -1
  64. package/dist/{index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DkSoLqEi.js → index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-BRxOMo6y.js} +8749 -8765
  65. package/dist/{index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-hGi9c2Ju.cjs → index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-Dwdjsitu.cjs} +108 -108
  66. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-B5nxyyO7.cjs → index.vue_vue_type_style_index_0_scoped_92477073_lang-DfqsvuRy.cjs} +1 -1
  67. package/dist/{index.vue_vue_type_style_index_0_scoped_92477073_lang-BfcynI3w.js → index.vue_vue_type_style_index_0_scoped_92477073_lang-e_PTrAf6.js} +6 -6
  68. package/dist/index.vue_vue_type_style_index_0_scoped_bcdf4fb0_lang-7HSISF9c.cjs +56 -0
  69. package/dist/index.vue_vue_type_style_index_0_scoped_bcdf4fb0_lang-BqmMCEyN.js +37436 -0
  70. package/dist/{index.vue_vue_type_style_index_1_lang-Bmq_QiXo.js → index.vue_vue_type_style_index_1_lang-CsY5rIO4.js} +3 -3
  71. package/dist/{index.vue_vue_type_style_index_1_lang-B_ESWhzz.cjs → index.vue_vue_type_style_index_1_lang-DOjFqzi3.cjs} +1 -1
  72. package/dist/index.vue_vue_type_style_index_1_lang-DQUFi_Vi.cjs +32 -0
  73. package/dist/index.vue_vue_type_style_index_1_lang-Ds1cd7yg.js +7806 -0
  74. package/dist/{isString-CZMLuMzD.js → isString-BNK38WbE.js} +1 -1
  75. package/dist/{main-YbBj49yf.cjs → main-CVaemyhm.cjs} +1 -1
  76. package/dist/{main-CSTH0D6W.js → main-DIbH2rlN.js} +5 -5
  77. package/dist/ss-component.cjs +1 -1
  78. package/dist/ss-component.css +2 -2
  79. package/dist/ss-component.js +11 -11
  80. package/dist/ss-component2.cjs +1 -1
  81. package/dist/ss-component2.js +12 -12
  82. package/dist/{threeLatheView-BmVBnC8n.js → threeLatheView-Bp0kjo_V.js} +2 -2
  83. package/dist/{threeModel-Xb9BSJ_k.js → threeModel-27sl0tTS.js} +3 -3
  84. package/dist/{threeModel-nbfSsMNt.cjs → threeModel-C0Jdw2O3.cjs} +1 -1
  85. package/dist/{threePreview-CYX5wKoL.js → threePreview-DFFjm93P.js} +1 -1
  86. package/dist/threeSceneView-CEpBvJSV.cjs +5 -0
  87. package/dist/threeSceneView-ZDXqO8ZA.js +1413 -0
  88. package/dist/{threeSceneViewForCPMPIP-CT63Js8f.cjs → threeSceneViewForCPMPIP-B0VPmBWd.cjs} +3 -3
  89. package/dist/{threeSceneViewForCPMPIP-skA3ZWC-.js → threeSceneViewForCPMPIP-BPPWM68P.js} +83 -84
  90. package/dist/{threeViewerHost-Enxz60zh.js → threeViewerHost-CKE2a4PV.js} +65 -78
  91. package/dist/threeViewerHost-yHvsk7TK.cjs +1 -0
  92. package/dist/useRayCaster-1DNcSYPR.cjs +1 -0
  93. package/dist/{useRayCaster-CQ61IQT5.js → useRayCaster-BM9XKGKx.js} +3 -3
  94. package/package.json +1 -1
  95. package/dist/animationData-BQdcO65E.cjs +0 -1
  96. package/dist/array-BI6c3lN7.cjs +0 -11
  97. package/dist/array-BivICFct.js +0 -1142
  98. package/dist/index-BBVbSXk-.cjs +0 -1
  99. package/dist/index-BM6YLczV.js +0 -2567
  100. package/dist/index-BSa3xW1H.js +0 -158
  101. package/dist/index-C9gh-jny.js +0 -7211
  102. package/dist/index-CA-edgmV.js +0 -3370
  103. package/dist/index-CIv0zRrQ.cjs +0 -1
  104. package/dist/index-DW7I4GY6.cjs +0 -1
  105. package/dist/index-DdFUblTC.cjs +0 -1
  106. package/dist/index-Dy3FE211.cjs +0 -1
  107. package/dist/index-YMD55UlA.cjs +0 -1
  108. package/dist/index.vue_vue_type_style_index_0_scoped_bcdf4fb0_lang-86_u8ovk.js +0 -34129
  109. package/dist/index.vue_vue_type_style_index_0_scoped_bcdf4fb0_lang-dAkBFPF0.cjs +0 -56
  110. package/dist/index.vue_vue_type_style_index_1_lang-Bl5IzVKi.js +0 -8126
  111. package/dist/index.vue_vue_type_style_index_1_lang-Cb3WPLY1.cjs +0 -32
  112. package/dist/isUndefined-ClRzgwTy.cjs +0 -1
  113. package/dist/isUndefined-chfCDxUU.js +0 -84
  114. package/dist/threeSceneView-BLWTfaec.js +0 -1472
  115. package/dist/threeSceneView-JPxH8xcz.cjs +0 -5
  116. package/dist/threeViewerHost-UHWY3q2v.cjs +0 -1
  117. package/dist/useRayCaster-CvOiIyjA.cjs +0 -1
@@ -1,1472 +0,0 @@
1
- import { defineComponent as Le, ref as _, watch as de, shallowRef as he, computed as _e, onUnmounted as Ie, resolveComponent as J, createElementBlock as ge, openBlock as ee, createElementVNode as o, createCommentVNode as ve, createVNode as t, withCtx as A, createBlock as Ce, unref as F, Fragment as Je, renderList as Ne, toDisplayString as fe, onBeforeUnmount as Ee, createTextVNode as qe, onMounted as He, nextTick as We, withDirectives as oe, vShow as me, renderSlot as be, isRef as ke, vModelRadio as Pe } from "vue";
2
- import { U as Ke, r as xe, s as Ye, u as Qe, a as et, W as tt } from "./useRayCaster-CQ61IQT5.js";
3
- import { u as Oe, a as lt, b as ot, S as U } from "./iconfont-pt17sMx3.js";
4
- import "./index.vue_vue_type_style_index_0_scoped_0f027c8c_lang-DkSoLqEi.js";
5
- import { R as at, c as nt, E as Z, a as st, aC as it, ak as rt } from "./index-DbzvXPKu.js";
6
- import "./index.vue_vue_type_style_index_1_lang-Bl5IzVKi.js";
7
- import "./index-BHtNKL1L.js";
8
- import { _ as ue, s as ut } from "./index-Ci_C9h8v.js";
9
- import "./index.vue_vue_type_style_index_1_lang-Bmq_QiXo.js";
10
- import { m as Be, T as Me, V as X, k as ne, l as ct, n as pt, L as dt, e as we, o as mt, p as vt, q as ft, r as gt, s as ht, t as bt, u as yt, i as _t } from "./three-viewport-gizmo-CkQ98n-T.js";
11
- import "./index-BlZXanJX.js";
12
- import { f as wt, a as Ct } from "./animationData-1jRSDcwE.js";
13
- import { o as kt, p as Pt } from "./index-CA-edgmV.js";
14
- import { _ as je } from "./_plugin-vue_export-helper-CHgC5LLL.js";
15
- import { U as xt, J as Tt } from "./urdfTree-BuTtRGdl.js";
16
- const ae = 1e-3, ce = ct.degToRad, Xe = new mt({
17
- // 灰色
18
- color: 13421772,
19
- metalness: 0.3,
20
- roughness: 0.6,
21
- side: _t
22
- }), Ze = (P) => P.reduce((w, T) => {
23
- let i = 0;
24
- const k = T.Y ?? 0, V = T.C ?? 0, v = T.R ?? 0;
25
- return k > 0 && (i += k), V > 0 && v > 0 && (i += v * ce(V)), w + i;
26
- }, 0), Ge = (P) => {
27
- const w = [], T = P.Y ?? 0, i = P.B ?? 0, k = P.C ?? 0, V = P.R ?? 0, v = {
28
- pos: new X(0, 0, 0),
29
- localY: new X(0, 1, 0),
30
- localX: new X(1, 0, 0),
31
- localZ: new X(0, 0, 1)
32
- };
33
- if (!T && !k) return w;
34
- if (w.push(v.pos.clone()), i !== 0) {
35
- const M = new ne().makeRotationAxis(v.localY, ce(i));
36
- v.localX.applyMatrix4(M), v.localZ.applyMatrix4(M);
37
- }
38
- if (T > 0 && (v.pos.add(v.localY.clone().multiplyScalar(T * ae)), w.push(v.pos.clone())), k > 0 && V > 0) {
39
- const M = ce(k), D = V * ae, u = v.pos.clone().add(v.localX.clone().multiplyScalar(-D)), r = Math.max(16, Math.ceil(k / 5));
40
- for (let g = 1; g <= r; g++) {
41
- const a = M * g / r, h = new ne().makeRotationAxis(v.localZ, a), b = v.localX.clone().multiplyScalar(D).applyMatrix4(h), f = u.clone().add(b);
42
- w.push(f);
43
- }
44
- }
45
- return w;
46
- };
47
- function Mt(P, w) {
48
- const T = new pt();
49
- T.name = "CompletePipe";
50
- const i = {
51
- pos: new X(0, 0, 0),
52
- localX: new X(1, 0, 0),
53
- localY: new X(0, 1, 0),
54
- localZ: new X(0, 0, 1)
55
- };
56
- let k = 0, V = 1;
57
- for (let v = 0; v < P.length; v++) {
58
- const M = P[v], D = M.Y ?? 0, u = M.B ?? 0, r = M.C ?? 0, g = M.R ?? 0;
59
- if (u !== 0) {
60
- const a = new ne().makeRotationAxis(i.localY, ce(u));
61
- i.localX.applyMatrix4(a), i.localZ.applyMatrix4(a);
62
- }
63
- if (D > 0) {
64
- const a = i.pos.clone();
65
- i.pos.add(i.localY.clone().multiplyScalar(D * ae));
66
- const h = i.pos.clone(), s = Rt(a, h, w * ae);
67
- s.userData = {
68
- segmentType: "straight",
69
- segmentIndex: k,
70
- frameIndex: v,
71
- length: D,
72
- frame: { Y: D, B: u, C: r, R: g }
73
- }, s.name = `直段_${k}`, T.add(s);
74
- const b = a.clone();
75
- Vt(T, V, b, w * ae), k++;
76
- }
77
- if (r > 0 && g > 0) {
78
- const a = ce(r), h = g * ae, s = [];
79
- s.push(i.pos.clone());
80
- const b = i.pos.clone().add(i.localX.clone().multiplyScalar(-h)), f = Math.max(16, Math.ceil(r / 5));
81
- for (let R = 1; R <= f; R++) {
82
- const E = a * R / f, S = new ne().makeRotationAxis(i.localZ, E), G = i.localX.clone().multiplyScalar(h).applyMatrix4(S), te = b.clone().add(G);
83
- s.push(te);
84
- }
85
- const x = Dt(s, w * ae);
86
- x.userData = {
87
- segmentType: "bend",
88
- segmentIndex: k,
89
- frameIndex: v,
90
- angle: r,
91
- radius: g,
92
- centerPoint: b.toArray(),
93
- frame: { Y: D, B: u, C: r, R: g }
94
- }, x.name = `弯段_${k}`, T.add(x), Math.floor(s.length / 2), s[0], i.pos = s[s.length - 1].clone();
95
- const m = new ne().makeRotationAxis(i.localZ, a);
96
- i.localY.applyMatrix4(m), i.localX.applyMatrix4(m), k++, V++;
97
- }
98
- }
99
- return T;
100
- }
101
- function Vt(P, w, T, i) {
102
- const k = new X(0, i * 2, i * 5), V = T.clone().add(k), v = [T, V], M = new vt().setFromPoints(v), D = new ft({
103
- color: 16711680,
104
- dashSize: i * 0.5,
105
- gapSize: i * 0.3,
106
- linewidth: 1
107
- }), u = new gt(M, D);
108
- u.computeLineDistances(), P.add(u);
109
- const r = document.createElement("canvas"), g = r.getContext("2d");
110
- r.width = 128, r.height = 128, g.clearRect(0, 0, 128, 128), g.fillStyle = "#FF0000", g.font = "bold 80px Arial", g.textAlign = "center", g.textBaseline = "middle", g.fillText(w.toString(), 64, 64);
111
- const a = new ht(r), h = new bt({
112
- map: a,
113
- transparent: !0,
114
- depthTest: !1,
115
- depthWrite: !1
116
- }), s = new yt(h), b = i * 3;
117
- s.scale.set(b, b, 1), s.position.copy(V), s.name = `Label_${w}`, s.userData = { labelNumber: w }, P.add(s);
118
- }
119
- function Rt(P, w, T) {
120
- const i = new dt(P, w), k = new Me(i, 2, T, 18, !1);
121
- return new we(k, Xe);
122
- }
123
- function Dt(P, w) {
124
- const T = new Be(P, !1, "catmullrom", 0.01), i = new Me(T, Math.max(16, P.length * 2), w, 18, !1);
125
- return new we(i, Xe);
126
- }
127
- function Te(P, w, T, i, k, V = 0) {
128
- let v = w.slice(0, k + 1);
129
- const M = w[k + 1];
130
- if (M && V > 0) {
131
- const s = {
132
- ...M,
133
- // 根据插值因子计算当前的弯曲角度C,实现从0到目标角度的平滑过渡
134
- B: (M.B ?? 0) * V,
135
- // 根据插值因子计算当前的弯曲角度C,实现从0到目标角度的平滑过渡
136
- C: (M.C ?? 0) * V
137
- };
138
- v.push(s);
139
- }
140
- const D = Ze(v), u = Math.max(0, T - D), r = [];
141
- r.push(new X(0, 0, 0));
142
- const g = new X(0, u * ae, 0);
143
- u > 0 && r.push(g);
144
- let a = {
145
- pos: g.clone(),
146
- localY: new X(0, 1, 0),
147
- localX: new X(1, 0, 0),
148
- localZ: new X(0, 0, 1)
149
- };
150
- const h = [];
151
- for (let s = v.length - 1; s >= 0; s--) {
152
- const b = v[s], f = Ge(b);
153
- if (f.length > 0) {
154
- const x = f.map((S) => {
155
- const $ = S.clone(), G = new ne();
156
- return G.makeBasis(a.localX, a.localY, a.localZ), $.applyMatrix4(G), $.add(a.pos);
157
- });
158
- h.push(x);
159
- const m = x[x.length - 1];
160
- a.pos = m.clone();
161
- const R = b.B ?? 0, E = b.C ?? 0;
162
- if (R !== 0) {
163
- const S = new ne().makeRotationAxis(a.localY, ce(R));
164
- a.localX.applyMatrix4(S), a.localZ.applyMatrix4(S);
165
- }
166
- if (E > 0) {
167
- const S = ce(E), $ = new ne().makeRotationAxis(a.localZ, S);
168
- a.localY.applyMatrix4($), a.localX.applyMatrix4($);
169
- }
170
- }
171
- }
172
- for (const s of h)
173
- s.length > 1 && r.push(...s.slice(1));
174
- r.length < 2 && r.push(new X(0, 1e-3, 0));
175
- try {
176
- const s = new Be(r, !1, "catmullrom", 0.01), b = new Me(s, Math.max(2, r.length * 4), i * ae, 18, !1);
177
- P.geometry.dispose(), P.geometry = b;
178
- } catch (s) {
179
- console.error("管件更新失败", s);
180
- }
181
- }
182
- function Ue(P, w, T, i = 0) {
183
- let k = P.slice(0, T + 1);
184
- const V = P[T + 1];
185
- if (V && i > 0) {
186
- const a = {
187
- ...V,
188
- // 根据插值因子计算当前的弯曲角度C,实现从0到目标角度的平滑过渡
189
- B: (V.B ?? 0) * i,
190
- // 根据插值因子计算当前的弯曲角度C,实现从0到目标角度的平滑过渡
191
- C: (V.C ?? 0) * i
192
- };
193
- k.push(a);
194
- }
195
- const v = Ze(k), M = Math.max(0, w - v), D = [];
196
- D.push(new X(0, 0, 0));
197
- const u = new X(0, M * ae, 0);
198
- M > 0 && D.push(u);
199
- let r = {
200
- pos: u.clone(),
201
- localY: new X(0, 1, 0),
202
- localX: new X(1, 0, 0),
203
- localZ: new X(0, 0, 1)
204
- };
205
- const g = [];
206
- for (let a = k.length - 1; a >= 0; a--) {
207
- const h = k[a], s = Ge(h);
208
- if (s.length > 0) {
209
- const b = s.map((R) => {
210
- const E = R.clone(), S = new ne();
211
- return S.makeBasis(r.localX, r.localY, r.localZ), E.applyMatrix4(S), E.add(r.pos);
212
- });
213
- g.push(b);
214
- const f = b[b.length - 1];
215
- r.pos = f.clone();
216
- const x = h.B ?? 0, m = h.C ?? 0;
217
- if (x !== 0) {
218
- const R = new ne().makeRotationAxis(r.localY, ce(x));
219
- r.localX.applyMatrix4(R), r.localZ.applyMatrix4(R);
220
- }
221
- if (m > 0) {
222
- const R = ce(m), E = new ne().makeRotationAxis(r.localZ, R);
223
- r.localY.applyMatrix4(E), r.localX.applyMatrix4(E);
224
- }
225
- }
226
- }
227
- for (const a of g)
228
- a.length > 1 && D.push(...a.slice(1));
229
- return D.length < 2 && D.push(new X(0, 1e-3, 0)), D;
230
- }
231
- function ye(P, w, T, i, k, V, v, M = 0, D = 0) {
232
- const u = k - D, r = Ue(i, u, v, M);
233
- let a = Ue(T, D, v, M);
234
- a.forEach((s) => s.y = -s.y), a.reverse();
235
- const h = [...a, ...r];
236
- try {
237
- const s = new Be(h, !1, "catmullrom", 0.01), b = new Me(s, Math.max(2, h.length * 4), V * ae, 18, !1);
238
- w.geometry.dispose(), P.geometry.dispose(), w.parent && w.parent.remove(w), P.geometry = b;
239
- } catch (s) {
240
- console.error("管件更新失败", s);
241
- }
242
- }
243
- const St = { class: "panel-content" }, $t = { class: "action-bar" }, At = {
244
- key: 0,
245
- class: "animation-controls"
246
- }, zt = { class: "control-row" }, Ft = { class: "control-row" }, Yt = { class: "control-row" }, Lt = { class: "frame-info" }, Bt = { class: "control-row" }, jt = { class: "progress-bar" }, Ut = { class: "dialog-footer" }, Et = /* @__PURE__ */ Le({
247
- __name: "animationPanel",
248
- props: {
249
- model: {},
250
- threeData: {}
251
- },
252
- emits: ["getThreeData"],
253
- setup(P, { expose: w, emit: T }) {
254
- const i = P, k = T, V = _(), v = _(), M = _("单机器人弯管");
255
- de(() => i.threeData, (n) => {
256
- const l = n == null ? void 0 : n.data;
257
- M.value = l == null ? void 0 : l.任务类型;
258
- }, {
259
- immediate: !0
260
- });
261
- const D = async () => {
262
- if (!sessionStorage.getItem("systemKey")) {
263
- k("getThreeData");
264
- return;
265
- }
266
- let l = {};
267
- M.value === xe.SINGLE && (l = await wt()), M.value === xe.DOUBLE && (l = await Ct());
268
- const {
269
- initialPipeLength: c = 0,
270
- pipeRadius: C = 0,
271
- clampLength: d = 0,
272
- animationData: L
273
- } = l;
274
- S.value = c, $.value = C, G.value = d, V.value = L;
275
- const j = nt(V.value);
276
- u.value = (j == null ? void 0 : j["输出(动画数据)"]) || [];
277
- let I = (j == null ? void 0 : j["输出(动画数据)Content"]) ?? [];
278
- I && (v.value = I);
279
- }, u = _([]), r = _(!1), g = _(""), a = _(!1), h = _(0), s = _(0), b = _(1e3), f = _(null);
280
- let x = !1;
281
- const m = he(null), R = he(null), E = he(null), S = _(1302), $ = _(12.5), G = _(30), te = _([]), Y = _(null), y = _e(() => i.model ? Object.values(i.model.joints).filter((n) => n.jointType !== "fixed").map((n) => n.name) : []), N = _(["Y", "B", "C", "R"]), O = _e(() => [...y.value, ...N.value]), H = _e(() => O.value.length > 0 ? `请按以下格式粘贴数据 (第一行为表头,使用 Tab 分隔):
282
- ${O.value.join(" ")}
283
- 0 0 0 ...
284
- 1 2 3 ...` : "请先加载模型。"), le = (n, l) => {
285
- if (!l)
286
- return null;
287
- const c = n.links[l];
288
- if (!c)
289
- return console.warn(`在模型中未找到名为 '${l}' 的 link`), console.log("可用的链接:", Object.keys(n.links)), null;
290
- let C = null;
291
- return c.traverse((d) => {
292
- d instanceof we && !C && (C = d);
293
- }), C || console.warn(`在 link '${l}' 中未找到可用的 Mesh 对象`), C;
294
- }, se = () => {
295
- E.value && (E.value.visible = !0), m.value && m.value.parent && m.value.parent.remove(m.value), E.value = null, m.value = null, R.value = null;
296
- };
297
- de(O, (n, l) => {
298
- if (JSON.stringify(n) !== JSON.stringify(l))
299
- if (n.length > 0) {
300
- const c = n.reduce((C, d) => (C[d] = "0", C), {});
301
- u.value = [c];
302
- } else
303
- u.value = [];
304
- }, { immediate: !0 }), de(() => i.model, (n) => {
305
- se(), n ? (f.value = new Ke(n), te.value = Object.keys(n.links), te.value.includes("Pipe_Link") ? Y.value = "Pipe_Link" : Y.value = null) : (f.value = null, te.value = [], Y.value = null);
306
- }, { immediate: !0 }), de([Y, G], ([n, l]) => {
307
- if (se(), i.model && n) {
308
- const c = le(i.model, n);
309
- if (console.log(c, "meshToReplace"), c && c.parent) {
310
- E.value = c;
311
- const C = new we(
312
- c.geometry.clone(),
313
- c.material
314
- );
315
- if (C.name = "managed_pipe_clone", c.parent.add(C), C.position.copy(c.position), C.rotation.copy(c.rotation), C.scale.copy(c.scale), c.visible = !1, M.value === xe.SINGLE && (C.position.y -= l * 1e-3), m.value = C, M.value === xe.DOUBLE) {
316
- const d = new we(
317
- c.geometry.clone(),
318
- c.material
319
- );
320
- d.name = "managed_oppsite_pipe_clone", d.position.copy(c.position), d.rotation.copy(c.rotation), d.scale.copy(c.scale), c.parent.add(d), R.value = d;
321
- }
322
- m.value && R.value && ye(
323
- m.value,
324
- R.value,
325
- [],
326
- [],
327
- S.value,
328
- $.value,
329
- 0,
330
- 0,
331
- G.value
332
- );
333
- } else
334
- n && console.warn(`在 link '${n}' 中未找到可替换的网格或其没有父级。`);
335
- }
336
- });
337
- const re = () => u.value.map((n) => ({
338
- Y: parseFloat(n.Y) || 0,
339
- B: parseFloat(n.B) || 0,
340
- C: parseFloat(n.C) || 0,
341
- R: parseFloat(n.R) || 0
342
- })), W = () => {
343
- const n = [], l = [];
344
- return u.value.forEach((c) => {
345
- const { Y1: C, B1: d, C1: L, R1: j, Y2: I, B2: K, C2: p, R2: e } = c;
346
- n.push({
347
- Y: parseFloat(C) || 0,
348
- B: parseFloat(d) || 0,
349
- C: parseFloat(L) || 0,
350
- R: parseFloat(j) || 0
351
- }), l.push({
352
- Y: parseFloat(I) || 0,
353
- B: parseFloat(K) || 0,
354
- C: parseFloat(p) || 0,
355
- R: parseFloat(e) || 0
356
- });
357
- }), {
358
- posPipeYbcr: n,
359
- negPipeYbcr: l
360
- };
361
- }, B = (n) => {
362
- if (n < 0 || n >= u.value.length) {
363
- console.error(`帧索引 ${n} 超出范围`);
364
- return;
365
- }
366
- const l = u.value[n];
367
- if (console.log(`应用第 ${n} 帧数据 ${l}`), h.value = n, f.value) {
368
- const c = {};
369
- y.value.forEach((C) => {
370
- const d = parseFloat(l[C]);
371
- isNaN(d) || (c[C] = d);
372
- }), f.value.setJointAngles(c);
373
- }
374
- if (m.value && R.value) {
375
- const c = W();
376
- console.log("ybcr数据:", c), ye(
377
- m.value,
378
- R.value,
379
- c.posPipeYbcr,
380
- c.negPipeYbcr,
381
- S.value,
382
- $.value,
383
- n,
384
- 0,
385
- G.value
386
- );
387
- return;
388
- }
389
- if (m.value) {
390
- const c = re();
391
- console.log("ybcr数据:", c), Te(
392
- m.value,
393
- c,
394
- S.value,
395
- $.value,
396
- n,
397
- 0
398
- );
399
- return;
400
- }
401
- }, pe = async () => {
402
- if (u.value.length === 0) {
403
- Z.error("无法播放动画:无数据");
404
- return;
405
- }
406
- a.value = !0, x = !1;
407
- const n = m.value ? re() : [];
408
- try {
409
- for (let l = h.value + 1; l < u.value.length && !x; l++) {
410
- h.value = l;
411
- const c = u.value[l], C = {};
412
- f.value && y.value.forEach((d) => {
413
- const L = parseFloat(c[d]);
414
- isNaN(L) || (C[d] = L);
415
- }), f.value ? await f.value.animateToState(
416
- C,
417
- b.value,
418
- (d) => {
419
- if (s.value = (l + d) / u.value.length * 100, m.value && R.value) {
420
- const L = W();
421
- console.log("ybcr数据:", n), ye(
422
- m.value,
423
- R.value,
424
- L.posPipeYbcr,
425
- L.negPipeYbcr,
426
- S.value,
427
- $.value,
428
- l - 1,
429
- d,
430
- G.value
431
- );
432
- } else m.value && Te(m.value, n, S.value, $.value, l - 1, d);
433
- }
434
- ) : m.value && R.value ? await new Promise((d) => {
435
- const L = performance.now();
436
- let j;
437
- const I = (K) => {
438
- if (x) {
439
- cancelAnimationFrame(j), d();
440
- return;
441
- }
442
- const p = K - L, e = Math.min(p / b.value, 1);
443
- s.value = (l + e) / u.value.length * 100;
444
- const ie = W();
445
- ye(
446
- m.value,
447
- R.value,
448
- ie.posPipeYbcr,
449
- ie.negPipeYbcr,
450
- S.value,
451
- $.value,
452
- l - 1,
453
- e,
454
- G.value
455
- ), e < 1 ? j = requestAnimationFrame(I) : d();
456
- };
457
- j = requestAnimationFrame(I);
458
- }) : m.value ? await new Promise((d) => {
459
- const L = performance.now();
460
- let j;
461
- const I = (K) => {
462
- if (x) {
463
- cancelAnimationFrame(j), d();
464
- return;
465
- }
466
- const p = K - L, e = Math.min(p / b.value, 1);
467
- s.value = (l + e) / u.value.length * 100, Te(m.value, n, S.value, $.value, l - 1, e), e < 1 ? j = requestAnimationFrame(I) : d();
468
- };
469
- j = requestAnimationFrame(I);
470
- }) : (await new Promise((d) => setTimeout(d, b.value)), s.value = (l + 1) / u.value.length * 100);
471
- }
472
- x || Z.success("动画播放完成");
473
- } catch (l) {
474
- console.error("动画播放出错:", l), Z.error("动画播放出错");
475
- } finally {
476
- a.value = !1, s.value = 0;
477
- }
478
- }, z = () => {
479
- x = !0, a.value = !1, s.value = 0, Z.info("动画已停止");
480
- }, Ve = () => {
481
- if (f.value && f.value.resetToZero(), console.log("pipeMesh.value", m.value), m.value && R.value) {
482
- const n = W();
483
- ye(
484
- m.value,
485
- R.value,
486
- n.posPipeYbcr,
487
- n.negPipeYbcr,
488
- S.value,
489
- $.value,
490
- -1,
491
- 0,
492
- G.value
493
- );
494
- } else if (m.value) {
495
- const n = re();
496
- Te(
497
- m.value,
498
- n,
499
- S.value,
500
- $.value,
501
- -1,
502
- 0
503
- );
504
- }
505
- h.value = 0, Z.success("机器人和管件已重置");
506
- }, Re = () => {
507
- console.log("当前管件Mesh:", m.value);
508
- }, De = (n) => {
509
- a.value && z(), B(n);
510
- }, Se = () => {
511
- a.value && z(), !(h.value + 1 >= u.value.length) && B(h.value + 1);
512
- }, $e = () => {
513
- a.value && z(), h.value !== 0 && B(h.value - 1);
514
- }, Ae = async () => {
515
- if (O.value.length === 0) {
516
- Z.warning("没有可导出的表头");
517
- return;
518
- }
519
- const n = O.value.join(" ");
520
- try {
521
- await navigator.clipboard.writeText(n), Z.success("表头已成功复制到剪贴板!");
522
- } catch (l) {
523
- console.error("复制失败:", l), Z.error("复制失败,请检查浏览器权限或手动复制。");
524
- }
525
- }, ze = () => {
526
- if (!g.value.trim()) {
527
- Z.warning("导入内容不能为空");
528
- return;
529
- }
530
- const n = g.value.trim().split(`
531
- `).filter((L) => L.trim() !== "");
532
- if (n.length < 2) {
533
- Z.error("导入数据至少需要包含表头行和一行数据");
534
- return;
535
- }
536
- const l = n[0].split(" ").map((L) => L.trim()), c = {};
537
- if (l.forEach((L, j) => {
538
- O.value.includes(L) && (c[j] = L);
539
- }), Object.keys(c).length === 0) {
540
- Z.error("没有找到匹配的表头,请检查表头名称是否正确");
541
- return;
542
- }
543
- const d = n.slice(1).map((L) => {
544
- const j = L.split(" "), I = {};
545
- return O.value.forEach((K) => {
546
- I[K] = "0";
547
- }), Object.entries(c).forEach(([K, p]) => {
548
- const e = j[parseInt(K)];
549
- e !== void 0 && e.trim() !== "" && (I[p] = e.trim());
550
- }), I;
551
- });
552
- d.length > 0 ? (u.value = d, Z.success(`成功导入 ${d.length} 行数据!`), r.value = !1, g.value = "") : Z.error("未能解析到有效数据,请检查格式。");
553
- }, Fe = (n) => `第 ${n + 1} 帧`;
554
- return Ie(() => {
555
- se(), x = !0;
556
- }), w({ playAnimation: pe, stopAnimation: z, forwardFrame: Se, backwardFrame: $e }), (n, l) => {
557
- const c = J("el-icon"), C = J("el-input-number"), d = J("el-form-item"), L = J("el-form"), j = J("el-slider"), I = J("el-progress"), K = J("el-input"), p = J("el-dialog");
558
- return ee(), ge("div", St, [
559
- o("div", $t, [
560
- t(ue, {
561
- onClick: D,
562
- modelValue: "获取数据"
563
- }),
564
- t(ue, {
565
- onClick: Ae,
566
- disabled: O.value.length === 0,
567
- modelValue: "导出表头"
568
- }, null, 8, ["disabled"]),
569
- t(ue, {
570
- modelValue: "播放",
571
- onClick: pe,
572
- disabled: u.value.length === 0 || a.value,
573
- buttonType: "primary"
574
- }, {
575
- default: A(() => [
576
- a.value ? (ee(), Ce(c, {
577
- key: 0,
578
- class: "is-loading"
579
- }, {
580
- default: A(() => [
581
- t(F(at))
582
- ]),
583
- _: 1
584
- })) : ve("", !0)
585
- ]),
586
- _: 1
587
- }, 8, ["disabled"]),
588
- t(ue, {
589
- onClick: z,
590
- modelValue: "停止",
591
- buttonType: "danger"
592
- }),
593
- t(ue, {
594
- onClick: Ve,
595
- modelValue: "重置",
596
- buttonType: "primary"
597
- }),
598
- t(ue, {
599
- onClick: Re,
600
- modelValue: "测试功能",
601
- buttonType: "primary"
602
- })
603
- ]),
604
- u.value.length > 0 ? (ee(), ge("div", At, [
605
- o("div", zt, [
606
- t(L, {
607
- "label-width": "auto",
608
- style: { width: "100%" }
609
- }, {
610
- default: A(() => [
611
- t(d, {
612
- label: "帧间隔 (ms):",
613
- prop: "frameDuration"
614
- }, {
615
- default: A(() => [
616
- t(C, {
617
- modelValue: b.value,
618
- "onUpdate:modelValue": l[0] || (l[0] = (e) => b.value = e),
619
- min: 100,
620
- max: 5e3,
621
- step: 100,
622
- style: { width: "100%" }
623
- }, null, 8, ["modelValue"])
624
- ]),
625
- _: 1
626
- }),
627
- t(d, {
628
- label: "管件总长 (mm):",
629
- prop: "initialPipeLength"
630
- }, {
631
- default: A(() => [
632
- t(C, {
633
- modelValue: S.value,
634
- "onUpdate:modelValue": l[1] || (l[1] = (e) => S.value = e),
635
- min: 0,
636
- style: { width: "100%" }
637
- }, null, 8, ["modelValue"])
638
- ]),
639
- _: 1
640
- }),
641
- t(d, {
642
- label: "管件半径 (mm):",
643
- prop: "pipeRadius"
644
- }, {
645
- default: A(() => [
646
- t(C, {
647
- modelValue: $.value,
648
- "onUpdate:modelValue": l[2] || (l[2] = (e) => $.value = e),
649
- min: 0,
650
- style: { width: "100%" }
651
- }, null, 8, ["modelValue"])
652
- ]),
653
- _: 1
654
- }),
655
- t(d, {
656
- label: "夹持长度 (mm):",
657
- prop: "clampLength"
658
- }, {
659
- default: A(() => [
660
- t(C, {
661
- modelValue: G.value,
662
- "onUpdate:modelValue": l[3] || (l[3] = (e) => G.value = e),
663
- min: 0,
664
- style: { width: "100%" }
665
- }, null, 8, ["modelValue"])
666
- ]),
667
- _: 1
668
- })
669
- ]),
670
- _: 1
671
- })
672
- ]),
673
- o("div", Ft, [
674
- l[9] || (l[9] = o("label", null, "管件 Mesh:", -1)),
675
- t(F(kt), {
676
- modelValue: Y.value,
677
- "onUpdate:modelValue": l[4] || (l[4] = (e) => Y.value = e),
678
- placeholder: "选择管件Link",
679
- size: "small",
680
- disabled: "",
681
- style: { width: "180px" }
682
- }, {
683
- default: A(() => [
684
- (ee(!0), ge(Je, null, Ne(te.value, (e) => (ee(), Ce(F(Pt), {
685
- key: e,
686
- label: e,
687
- value: e
688
- }, null, 8, ["label", "value"]))), 128))
689
- ]),
690
- _: 1
691
- }, 8, ["modelValue", "disabled"])
692
- ]),
693
- o("div", Yt, [
694
- l[10] || (l[10] = o("label", null, "当前帧:", -1)),
695
- o("span", Lt, fe(h.value + 1) + " / " + fe(u.value.length), 1)
696
- ]),
697
- o("div", Bt, [
698
- l[11] || (l[11] = o("label", null, "动画进度:", -1)),
699
- t(j, {
700
- modelValue: h.value,
701
- "onUpdate:modelValue": l[5] || (l[5] = (e) => h.value = e),
702
- min: 0,
703
- max: u.value.length > 0 ? u.value.length - 1 : 0,
704
- step: 1,
705
- "format-tooltip": Fe,
706
- onInput: De,
707
- disabled: u.value.length === 0,
708
- style: { "flex-grow": "1", margin: "0 10px" }
709
- }, null, 8, ["modelValue", "max", "disabled"])
710
- ]),
711
- o("div", jt, [
712
- t(I, {
713
- percentage: s.value,
714
- "show-text": !1,
715
- "stroke-width": 6
716
- }, null, 8, ["percentage"])
717
- ])
718
- ])) : ve("", !0),
719
- t(p, {
720
- modelValue: r.value,
721
- "onUpdate:modelValue": l[8] || (l[8] = (e) => r.value = e),
722
- title: "导入数据",
723
- width: "500px"
724
- }, {
725
- footer: A(() => [
726
- o("span", Ut, [
727
- t(ue, {
728
- modelValue: "取消",
729
- onClick: l[7] || (l[7] = (e) => r.value = !1)
730
- }),
731
- t(ue, {
732
- modelValue: "确认导入",
733
- onClick: ze,
734
- type: "primary"
735
- })
736
- ])
737
- ]),
738
- default: A(() => [
739
- l[12] || (l[12] = o("p", { class: "import-instructions" }, " 请从Excel或csv中复制数据 (首行为表头, Tab分隔) ", -1)),
740
- t(K, {
741
- modelValue: g.value,
742
- "onUpdate:modelValue": l[6] || (l[6] = (e) => g.value = e),
743
- type: "textarea",
744
- rows: 10,
745
- placeholder: H.value
746
- }, null, 8, ["modelValue", "placeholder"])
747
- ]),
748
- _: 1,
749
- __: [12]
750
- }, 8, ["modelValue"])
751
- ]);
752
- };
753
- }
754
- }), Ot = /* @__PURE__ */ je(Et, [["__scopeId", "data-v-6903e33c"]]), Xt = "http://139.196.154.85:20018";
755
- function Zt(P, w = !1) {
756
- return console.log(P, "data"), st({
757
- url: `${Xt}/api/pipeBendingTraditional/pipeAnsys/${w}`,
758
- method: "post",
759
- data: P
760
- });
761
- }
762
- const Gt = { class: "pipe-analysis-dialog-header" }, It = { class: "header-right" }, Jt = { class: "pipe-analysis-dialog-body" }, Nt = { class: "panel-left" }, qt = { class: "pipe-analysis-input" }, Ht = { class: "input-params" }, Wt = { class: "step-label" }, Kt = { class: "button-group" }, Qt = { class: "upload-content" }, el = { class: "file-item" }, tl = { key: 0 }, ll = { class: "pipe-analysis-output" }, ol = { class: "ouput-params" }, al = /* @__PURE__ */ Le({
763
- __name: "pipeAnalysisPanel",
764
- emits: ["nodeClick", "visibleChange", "updatePosition", "updateRotation"],
765
- setup(P, { expose: w, emit: T }) {
766
- const i = _(null), k = he(null), {
767
- initThreeJS: V,
768
- handleResize: v,
769
- cleanup: M,
770
- clearAllModels: D,
771
- addModelAndFit: u
772
- } = Oe(i), r = _(null), g = _({ file: null }), a = _(null), h = _(!1), s = () => {
773
- var Y;
774
- (Y = r.value) == null || Y.click();
775
- }, b = async (Y) => {
776
- var O;
777
- const N = (O = Y.target.files) == null ? void 0 : O[0];
778
- N && (a.value = N);
779
- };
780
- _("ybcr");
781
- const f = _({
782
- form: {},
783
- list: [],
784
- reverse: !1
785
- }), x = async () => {
786
- var Y;
787
- if (!a.value) {
788
- Z.warning("请先选择文件");
789
- return;
790
- }
791
- try {
792
- h.value = !0;
793
- const y = new FormData();
794
- y.set("file", a.value);
795
- let N = !1;
796
- ((Y = f.value) == null ? void 0 : Y.reverse) == !0 && (N = !0);
797
- const { data: { data: O } = {} } = await Zt(y, N);
798
- m(O), Z.success("提交成功");
799
- } catch (y) {
800
- Z.error("提交失败,请重试"), console.error("提交错误:", y);
801
- } finally {
802
- h.value = !1;
803
- }
804
- }, m = (Y) => {
805
- const { length: y, outerDiameter: N, innerDiameter: O, thickness: H, ybcrList: le } = Y || {};
806
- f.value.form = {
807
- length: y,
808
- outerDiameter: N,
809
- innerDiameter: O,
810
- thickness: H
811
- }, f.value.list = le;
812
- }, R = () => {
813
- const { form: Y, list: y } = f.value, {
814
- outerDiameter: N
815
- } = Y, O = N / 2, H = y == null ? void 0 : y.map((se) => {
816
- const { y: re, b: W, c: B, r: pe } = se;
817
- return {
818
- Y: re,
819
- B: W,
820
- C: B,
821
- R: pe
822
- };
823
- });
824
- D();
825
- const le = Mt(H, O);
826
- u(le);
827
- }, E = _(!1), S = () => {
828
- const Y = E.value;
829
- E.value = !Y;
830
- }, $ = _(!1), G = () => {
831
- $.value = !1;
832
- }, te = () => {
833
- $.value = !0;
834
- };
835
- return de(() => f, () => {
836
- R();
837
- }, {
838
- deep: !0
839
- }), de(() => i, () => {
840
- try {
841
- if (k.value)
842
- return;
843
- V(), window.addEventListener("resize", v);
844
- } catch (Y) {
845
- console.error("Three.js 初始化失败:", Y), Z.error("渲染引擎初始化失败!");
846
- }
847
- }, {
848
- deep: !0
849
- }), Ee(() => {
850
- window.removeEventListener("resize", v), M();
851
- }), w({ openDialog: te }), (Y, y) => {
852
- const N = J("el-icon"), O = J("el-button"), H = J("el-form-item"), le = J("el-form"), se = J("el-option"), re = J("el-select"), W = J("el-input"), B = J("el-table-column"), pe = J("el-table");
853
- return ee(), Ce(ut, {
854
- class: "pipe-analysis-dialog",
855
- visible: $.value,
856
- onBeforeDestroy: Y.onDestroy,
857
- showClose: !1,
858
- fullScreen: E.value
859
- }, {
860
- header: A(() => [
861
- o("div", Gt, [
862
- y[5] || (y[5] = o("div", {
863
- class: "header-left",
864
- title: "管件解析"
865
- }, " 管件解析 ", -1)),
866
- o("div", It, [
867
- t(N, null, {
868
- default: A(() => [
869
- t(F(it), { onClick: S })
870
- ]),
871
- _: 1
872
- }),
873
- t(N, null, {
874
- default: A(() => [
875
- t(F(rt), { onClick: G })
876
- ]),
877
- _: 1
878
- })
879
- ])
880
- ])
881
- ]),
882
- default: A(() => [
883
- o("div", Jt, [
884
- o("div", Nt, [
885
- o("div", qt, [
886
- y[8] || (y[8] = o("span", { class: "item-view-group" }, [
887
- o("span", { class: "group-name-wrap" }, "输入")
888
- ], -1)),
889
- o("div", Ht, [
890
- t(le, {
891
- model: g.value,
892
- "label-width": "auto",
893
- "label-position": "top"
894
- }, {
895
- default: A(() => [
896
- t(H, { label: "step文件" }, {
897
- label: A(() => [
898
- o("div", Wt, [
899
- y[7] || (y[7] = o("div", null, " step文件 ", -1)),
900
- o("div", Kt, [
901
- t(ue, {
902
- emptyColor: !0,
903
- onClickTrigger: s,
904
- modelValue: "上传"
905
- }),
906
- o("input", {
907
- type: "file",
908
- ref_key: "fileInput",
909
- ref: r,
910
- accept: ".step,.csv",
911
- onChange: b,
912
- style: { display: "none" }
913
- }, null, 544),
914
- t(O, {
915
- type: "primary",
916
- onClick: x,
917
- loading: h.value,
918
- disabled: !a.value
919
- }, {
920
- default: A(() => y[6] || (y[6] = [
921
- qe(" 解析 ")
922
- ])),
923
- _: 1,
924
- __: [6]
925
- }, 8, ["loading", "disabled"])
926
- ])
927
- ])
928
- ]),
929
- default: A(() => {
930
- var z;
931
- return [
932
- o("div", Qt, [
933
- o("div", el, [
934
- a.value ? (ee(), ge("div", tl, fe((z = a.value) == null ? void 0 : z.name), 1)) : ve("", !0)
935
- ])
936
- ])
937
- ];
938
- }),
939
- _: 1
940
- })
941
- ]),
942
- _: 1
943
- }, 8, ["model"])
944
- ])
945
- ]),
946
- o("div", ll, [
947
- t(H, { label: "加工方向" }, {
948
- default: A(() => [
949
- t(re, {
950
- modelValue: f.value.reverse,
951
- "onUpdate:modelValue": y[0] || (y[0] = (z) => f.value.reverse = z),
952
- placeholder: "请选择加工方向"
953
- }, {
954
- default: A(() => [
955
- t(se, {
956
- label: "正向",
957
- value: !1
958
- }),
959
- t(se, {
960
- label: "反向",
961
- value: !0
962
- })
963
- ]),
964
- _: 1
965
- }, 8, ["modelValue"])
966
- ]),
967
- _: 1
968
- }),
969
- y[9] || (y[9] = o("span", { class: "item-view-group" }, [
970
- o("span", { class: "group-name-wrap" }, "输出(弯管基础参数)")
971
- ], -1)),
972
- o("div", ol, [
973
- t(le, {
974
- model: f.value.form,
975
- "label-width": "auto",
976
- "label-position": "top",
977
- inline: !0
978
- }, {
979
- default: A(() => [
980
- t(H, { label: "管长" }, {
981
- default: A(() => [
982
- t(W, {
983
- modelValue: f.value.form.length,
984
- "onUpdate:modelValue": y[1] || (y[1] = (z) => f.value.form.length = z)
985
- }, null, 8, ["modelValue"])
986
- ]),
987
- _: 1
988
- }),
989
- t(H, { label: "外径" }, {
990
- default: A(() => [
991
- t(W, {
992
- modelValue: f.value.form.outerDiameter,
993
- "onUpdate:modelValue": y[2] || (y[2] = (z) => f.value.form.outerDiameter = z)
994
- }, null, 8, ["modelValue"])
995
- ]),
996
- _: 1
997
- }),
998
- t(H, { label: "内径" }, {
999
- default: A(() => [
1000
- t(W, {
1001
- modelValue: f.value.form.innerDiameter,
1002
- "onUpdate:modelValue": y[3] || (y[3] = (z) => f.value.form.innerDiameter = z)
1003
- }, null, 8, ["modelValue"])
1004
- ]),
1005
- _: 1
1006
- }),
1007
- t(H, { label: "壁厚" }, {
1008
- default: A(() => [
1009
- t(W, {
1010
- modelValue: f.value.form.thickness,
1011
- "onUpdate:modelValue": y[4] || (y[4] = (z) => f.value.form.thickness = z)
1012
- }, null, 8, ["modelValue"])
1013
- ]),
1014
- _: 1
1015
- })
1016
- ]),
1017
- _: 1
1018
- }, 8, ["model"]),
1019
- t(pe, {
1020
- ref: "singleTableRef",
1021
- data: f.value.list,
1022
- "highlight-current-rowstyle": "width: 100%"
1023
- }, {
1024
- default: A(() => [
1025
- t(B, {
1026
- type: "index",
1027
- width: "50"
1028
- }),
1029
- t(B, {
1030
- property: "y",
1031
- label: "Y"
1032
- }),
1033
- t(B, {
1034
- property: "b",
1035
- label: "B"
1036
- }),
1037
- t(B, {
1038
- property: "c",
1039
- label: "C"
1040
- }),
1041
- t(B, {
1042
- property: "r",
1043
- label: "R"
1044
- })
1045
- ]),
1046
- _: 1
1047
- }, 8, ["data"])
1048
- ])
1049
- ])
1050
- ]),
1051
- o("div", {
1052
- class: "panel-right",
1053
- ref_key: "threejsContainer",
1054
- ref: i
1055
- }, null, 512)
1056
- ])
1057
- ]),
1058
- _: 1
1059
- }, 8, ["visible", "onBeforeDestroy", "fullScreen"]);
1060
- };
1061
- }
1062
- }), nl = /* @__PURE__ */ je(al, [["__scopeId", "data-v-577e5f83"]]), sl = { class: "obj-viewer-container" }, il = { class: "pipe-comparison" }, rl = {
1063
- ref: "pipe1",
1064
- class: "pipe-container"
1065
- }, ul = {
1066
- ref: "pipe2",
1067
- class: "pipe-container"
1068
- }, cl = { class: "buttonGroup-top" }, pl = { class: "buttonGroup-topLeft" }, dl = { class: "buttonGroup-left" }, ml = { class: "buttonGroup-right" }, vl = { class: "buttonGroup-bottom" }, fl = { class: "top-panel" }, gl = { class: "panel-header" }, hl = { class: "panel-body" }, bl = { class: "left-panel" }, yl = { class: "panel-header" }, _l = { class: "panel-body" }, wl = {
1069
- key: 1,
1070
- class: "clipping-content"
1071
- }, Cl = { class: "radio-group" }, kl = { class: "radio-label" }, Pl = { class: "radio-label" }, xl = { class: "radio-label" }, Tl = { class: "radio-label" }, Ml = { class: "right-panel" }, Vl = { class: "panel-header" }, Rl = { class: "panel-body" }, Dl = {
1072
- key: 0,
1073
- class: "loading-overlay"
1074
- }, Sl = /* @__PURE__ */ Le({
1075
- __name: "threeSceneView",
1076
- props: {
1077
- fileBlobs: { default: () => [] },
1078
- animationData: { default: () => ({}) },
1079
- threeData: {}
1080
- },
1081
- emits: ["getAnimationData", "getThreeData"],
1082
- setup(P, { emit: w }) {
1083
- const T = w, i = P, k = _(Ye.ROBOT), V = _(null), v = _(), M = _(!1), D = _(""), u = _(!1), r = _(""), g = _(!1), a = _(""), h = _(!1), s = _(""), b = he(null), f = he(null), x = _(), {
1084
- currentModels: m,
1085
- resetView: R,
1086
- initThreeJS: E,
1087
- handleResize: S,
1088
- getThreeJSObjects: $,
1089
- cleanup: G,
1090
- setModels: te,
1091
- axesHelperVisible: Y,
1092
- toggleAxesVisibility: y,
1093
- zoomIn: N,
1094
- zoomOut: O
1095
- } = Oe(V), { loadSceneFromFile: H } = et(
1096
- $,
1097
- m,
1098
- M,
1099
- D
1100
- ), { isAnimating: le, toggleAnimation: se, stopAnimation: re } = lt($, m), { isClipping: W, activeClippingAxis: B, toggleClipping: pe, updateClippingPlanes: z } = ot($, m), { initRaycaster: Ve, selectedObject3D: Re, setSelectedObjVisible: De, updatePosition: Se, updateRotation: $e, dispose: Ae } = Qe(V, $, m), ze = () => {
1101
- y();
1102
- }, Fe = _e(() => k.value === Ye.ROBOT), n = _e(() => k.value === Ye.PIPECOMPARSION), l = (p) => {
1103
- var e;
1104
- s.value = p, s.value === "弯管解析" ? (e = v.value) == null || e.openDialog() : h.value = !0;
1105
- }, c = (p) => {
1106
- u.value = !0, r.value = p, p === "剖面视图" && !W.value && pe();
1107
- }, C = (p) => {
1108
- g.value = !0, a.value = p, p === "动画仿真" && T("getAnimationData");
1109
- }, d = () => {
1110
- T("getThreeData");
1111
- }, L = () => {
1112
- var p;
1113
- (p = x == null ? void 0 : x.value) == null || p.playAnimation();
1114
- }, j = () => {
1115
- var p;
1116
- (p = x == null ? void 0 : x.value) == null || p.stopAnimation();
1117
- }, I = () => {
1118
- var p;
1119
- (p = x == null ? void 0 : x.value) == null || p.forwardFrame();
1120
- }, K = () => {
1121
- var p;
1122
- (p = x == null ? void 0 : x.value) == null || p.backwardFrame();
1123
- };
1124
- return de(() => i.fileBlobs, (p) => {
1125
- if (p && p.length > 0) {
1126
- const e = p[0];
1127
- if (!e.name.toLowerCase().endsWith(".urdf"))
1128
- return;
1129
- H(e).then((ie) => {
1130
- b.value = ie;
1131
- }).catch((ie) => {
1132
- console.error("加载URDF文件时发生错误:", ie), Z.error("加载urdf模型失败"), b.value = null;
1133
- });
1134
- } else
1135
- b.value = null;
1136
- }, {
1137
- immediate: !0,
1138
- deep: !0
1139
- }), de(b, (p) => {
1140
- te(p ? [p] : []), Ve();
1141
- }), He(async () => {
1142
- await We();
1143
- try {
1144
- E(), window.addEventListener("resize", S);
1145
- const p = $();
1146
- f.value = p.scene;
1147
- } catch (p) {
1148
- console.error("Three.js 初始化失败:", p), Z.error("渲染引擎初始化失败!");
1149
- }
1150
- }), Ee(() => {
1151
- r.value = "", a.value = "", window.removeEventListener("resize", S), le.value && re(), G(), Ae();
1152
- }), (p, e) => {
1153
- const ie = J("el-scrollbar");
1154
- return ee(), ge("div", sl, [
1155
- oe(o("div", {
1156
- ref_key: "threejsContainer",
1157
- ref: V,
1158
- class: "threejs-container"
1159
- }, null, 512), [
1160
- [me, Fe.value]
1161
- ]),
1162
- oe(o("div", il, [
1163
- o("div", rl, null, 512),
1164
- o("div", ul, null, 512)
1165
- ], 512), [
1166
- [me, n.value]
1167
- ]),
1168
- o("div", cl, [
1169
- be(p.$slots, "button-top", { switchTopPanel: l }, void 0, !0),
1170
- t(U, {
1171
- name: "guanjianjiexi",
1172
- size: "34",
1173
- onClick: e[0] || (e[0] = (Q) => l("弯管解析"))
1174
- }),
1175
- t(U, {
1176
- name: "guanjiekongzhi",
1177
- size: "34"
1178
- }),
1179
- t(U, {
1180
- name: "gongyishengcheng",
1181
- size: "34"
1182
- }),
1183
- t(U, {
1184
- name: "buchangshezhi",
1185
- size: "34"
1186
- }),
1187
- t(U, {
1188
- name: "shuchujiagongchengxu",
1189
- size: "34"
1190
- }),
1191
- be(p.$slots, "logout", {}, void 0, !0)
1192
- ]),
1193
- o("div", pl, [
1194
- t(U, {
1195
- name: "viewReset",
1196
- size: "24",
1197
- onClick: F(R),
1198
- title: "重置"
1199
- }, null, 8, ["onClick"]),
1200
- t(U, {
1201
- name: "fangda",
1202
- size: "24",
1203
- title: "放大",
1204
- onClick: F(N)
1205
- }, null, 8, ["onClick"]),
1206
- t(U, {
1207
- name: "suoxiao",
1208
- size: "24",
1209
- title: "缩小",
1210
- onClick: F(O)
1211
- }, null, 8, ["onClick"]),
1212
- t(U, {
1213
- name: "lookAround",
1214
- size: "24",
1215
- onClick: F(se),
1216
- title: F(le) ? "停止动画" : "动画视图"
1217
- }, null, 8, ["onClick", "title"]),
1218
- t(U, {
1219
- name: "zuobiaoxi",
1220
- size: "24",
1221
- active: F(Y),
1222
- onClick: ze,
1223
- title: "显隐坐标轴"
1224
- }, null, 8, ["active"])
1225
- ]),
1226
- o("div", dl, [
1227
- t(U, {
1228
- name: "jiegoushu",
1229
- size: "24",
1230
- onClick: e[1] || (e[1] = (Q) => c("场景树")),
1231
- active: u.value && r.value === "场景树",
1232
- title: "场景树"
1233
- }, null, 8, ["active"]),
1234
- t(U, {
1235
- name: "clipping",
1236
- size: "24",
1237
- onClick: e[2] || (e[2] = (Q) => c("剖面视图")),
1238
- active: u.value && r.value === "剖面视图",
1239
- title: "剖面视图"
1240
- }, null, 8, ["active"]),
1241
- t(U, {
1242
- name: "zhaozi",
1243
- size: "24",
1244
- onClick: e[3] || (e[3] = (Q) => c("工件树")),
1245
- active: u.value && r.value === "工件树",
1246
- title: "工件 "
1247
- }, null, 8, ["active"]),
1248
- t(U, {
1249
- name: "donghuafangzhen",
1250
- size: "24",
1251
- onClick: e[4] || (e[4] = (Q) => c("场景4"))
1252
- })
1253
- ]),
1254
- o("div", ml, [
1255
- be(p.$slots, "button-right", { switchRightPanel: C }, void 0, !0),
1256
- t(U, {
1257
- name: "donghuafangzhen",
1258
- size: "24"
1259
- }),
1260
- t(U, {
1261
- name: "donghuafangzhen",
1262
- size: "24"
1263
- }),
1264
- t(U, {
1265
- name: "guanjiekongzhi",
1266
- size: "24",
1267
- onClick: e[5] || (e[5] = (Q) => C("关节控制")),
1268
- active: g.value && a.value === "关节控制",
1269
- title: "关节控制"
1270
- }, null, 8, ["active"]),
1271
- t(U, {
1272
- name: "donghuafangzhen",
1273
- size: "24",
1274
- title: "动画仿真",
1275
- onClick: e[6] || (e[6] = (Q) => C("动画仿真")),
1276
- active: g.value && a.value === "动画仿真"
1277
- }, null, 8, ["active"]),
1278
- t(U, {
1279
- name: "donghuafangzhen",
1280
- size: "24",
1281
- title: "urdf动画",
1282
- onClick: e[7] || (e[7] = (Q) => C("urdf动画")),
1283
- active: g.value && a.value === "urdf动画"
1284
- }, null, 8, ["active"]),
1285
- t(U, {
1286
- name: "donghuafangzhen",
1287
- size: "24"
1288
- })
1289
- ]),
1290
- o("div", vl, [
1291
- t(U, {
1292
- name: "kuaitui",
1293
- size: "24",
1294
- backgroundColor: "#ffffff",
1295
- title: "快退",
1296
- onClick: K
1297
- }),
1298
- t(U, {
1299
- name: "bofang",
1300
- size: "24",
1301
- backgroundColor: "#ffffff",
1302
- title: "播放",
1303
- onClick: L
1304
- }),
1305
- t(U, {
1306
- name: "kuaijin",
1307
- size: "24",
1308
- backgroundColor: "#ffffff",
1309
- title: "快进",
1310
- onClick: I
1311
- }),
1312
- t(U, {
1313
- name: "zanting",
1314
- size: "24",
1315
- backgroundColor: "#ffffff",
1316
- title: "暂停",
1317
- onClick: j
1318
- })
1319
- ]),
1320
- oe(o("div", fl, [
1321
- o("div", gl, [
1322
- o("span", null, fe(s.value), 1),
1323
- o("span", {
1324
- class: "close",
1325
- onClick: e[8] || (e[8] = (Q) => h.value = !1)
1326
- }, " X ")
1327
- ]),
1328
- o("div", hl, [
1329
- t(ie, { height: "100%" }, {
1330
- default: A(() => [
1331
- be(p.$slots, "top-panel", { topPanelType: s.value }, void 0, !0)
1332
- ]),
1333
- _: 3
1334
- })
1335
- ])
1336
- ], 512), [
1337
- [me, h.value]
1338
- ]),
1339
- oe(o("div", bl, [
1340
- o("div", yl, [
1341
- o("span", null, fe(r.value), 1),
1342
- o("span", {
1343
- class: "close",
1344
- onClick: e[9] || (e[9] = (Q) => u.value = !1)
1345
- }, " X ")
1346
- ]),
1347
- o("div", _l, [
1348
- t(ie, { height: "100%" }, {
1349
- default: A(() => {
1350
- var Q;
1351
- return [
1352
- r.value === "场景树" ? (ee(), Ce(xt, {
1353
- key: 0,
1354
- model: b.value
1355
- }, null, 8, ["model"])) : ve("", !0),
1356
- r.value === "剖面视图" ? (ee(), ge("div", wl, [
1357
- o("div", Cl, [
1358
- o("label", kl, [
1359
- oe(o("input", {
1360
- type: "radio",
1361
- name: "clipping-axis",
1362
- value: "none",
1363
- "onUpdate:modelValue": e[10] || (e[10] = (q) => ke(B) ? B.value = q : null),
1364
- onChange: e[11] || (e[11] = //@ts-ignore
1365
- (...q) => F(z) && F(z)(...q))
1366
- }, null, 544), [
1367
- [Pe, F(B)]
1368
- ]),
1369
- e[19] || (e[19] = o("span", { class: "radio-text" }, "无切割", -1))
1370
- ]),
1371
- o("label", Pl, [
1372
- oe(o("input", {
1373
- type: "radio",
1374
- name: "clipping-axis",
1375
- value: "x",
1376
- "onUpdate:modelValue": e[12] || (e[12] = (q) => ke(B) ? B.value = q : null),
1377
- onChange: e[13] || (e[13] = //@ts-ignore
1378
- (...q) => F(z) && F(z)(...q))
1379
- }, null, 544), [
1380
- [Pe, F(B)]
1381
- ]),
1382
- e[20] || (e[20] = o("span", { class: "radio-text" }, "X轴切割", -1))
1383
- ]),
1384
- o("label", xl, [
1385
- oe(o("input", {
1386
- type: "radio",
1387
- name: "clipping-axis",
1388
- value: "y",
1389
- "onUpdate:modelValue": e[14] || (e[14] = (q) => ke(B) ? B.value = q : null),
1390
- onChange: e[15] || (e[15] = //@ts-ignore
1391
- (...q) => F(z) && F(z)(...q))
1392
- }, null, 544), [
1393
- [Pe, F(B)]
1394
- ]),
1395
- e[21] || (e[21] = o("span", { class: "radio-text" }, "Y轴切割", -1))
1396
- ]),
1397
- o("label", Tl, [
1398
- oe(o("input", {
1399
- type: "radio",
1400
- name: "clipping-axis",
1401
- value: "z",
1402
- "onUpdate:modelValue": e[16] || (e[16] = (q) => ke(B) ? B.value = q : null),
1403
- onChange: e[17] || (e[17] = //@ts-ignore
1404
- (...q) => F(z) && F(z)(...q))
1405
- }, null, 544), [
1406
- [Pe, F(B)]
1407
- ]),
1408
- e[22] || (e[22] = o("span", { class: "radio-text" }, "Z轴切割", -1))
1409
- ])
1410
- ])
1411
- ])) : ve("", !0),
1412
- r.value === "工件树" ? (ee(), Ce(tt, {
1413
- key: 2,
1414
- model: (Q = F(Re)) == null ? void 0 : Q.obj,
1415
- onVisibleChange: F(De),
1416
- onUpdatePosition: F(Se),
1417
- onUpdateRotation: F($e)
1418
- }, null, 8, ["model", "onVisibleChange", "onUpdatePosition", "onUpdateRotation"])) : ve("", !0)
1419
- ];
1420
- }),
1421
- _: 1
1422
- })
1423
- ])
1424
- ], 512), [
1425
- [me, u.value]
1426
- ]),
1427
- oe(o("div", Ml, [
1428
- o("div", Vl, [
1429
- o("span", null, fe(a.value), 1),
1430
- o("span", {
1431
- class: "close",
1432
- onClick: e[18] || (e[18] = (Q) => g.value = !1)
1433
- }, " X ")
1434
- ]),
1435
- o("div", Rl, [
1436
- t(ie, { height: "100%" }, {
1437
- default: A(() => [
1438
- oe(t(Tt, { model: b.value }, null, 8, ["model"]), [
1439
- [me, a.value === "关节控制"]
1440
- ]),
1441
- oe(t(Ot, {
1442
- ref_key: "animationPanelRef",
1443
- ref: x,
1444
- model: b.value,
1445
- onGetThreeData: d,
1446
- threeData: i.threeData
1447
- }, null, 8, ["model", "threeData"]), [
1448
- [me, a.value === "动画仿真"]
1449
- ]),
1450
- be(p.$slots, "right-panel", { rightPanelType: a.value }, void 0, !0)
1451
- ]),
1452
- _: 3
1453
- })
1454
- ])
1455
- ], 512), [
1456
- [me, g.value]
1457
- ]),
1458
- M.value ? (ee(), ge("div", Dl, [
1459
- e[23] || (e[23] = o("div", { class: "loading-spinner" }, null, -1)),
1460
- o("p", null, fe(D.value), 1)
1461
- ])) : ve("", !0),
1462
- t(nl, {
1463
- ref_key: "pipeAnalysisPanelRef",
1464
- ref: v
1465
- }, null, 512)
1466
- ]);
1467
- };
1468
- }
1469
- }), Jl = /* @__PURE__ */ je(Sl, [["__scopeId", "data-v-3bada747"]]);
1470
- export {
1471
- Jl as default
1472
- };