iflow-engine-base-3d 3.12.22 → 3.12.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bim-engine-sdk.es.js +11 -7035
- package/dist/bim-engine-sdk.umd.js +559 -999
- package/dist/chunks/{engine-3d-NODP2UZP.js → engine-3d-CRGDf-35.js} +189 -190
- package/dist/chunks/{sdk-assets-rr-2tUgO.js → sdk-assets-Dl8936wx.js} +1 -1
- package/dist/chunks/{sdk-runtime-Dh6NDrxA.js → sdk-runtime-9GTYNlYO.js} +2 -2
- package/dist/chunks/{three-vendor-Bm0q8_z9.js → three-vendor-Cy618JLY.js} +16650 -50149
- package/dist/iflow-engine-base.css +1 -1
- package/dist/index.d.ts +0 -36
- package/distGaussian/gaussian.es.js +14769 -14769
- package/distGaussian/gaussian.umd.js +23 -23
- package/distGaussian/index.d.ts +80 -80
- package/package.json +7 -3
- package/dist2d/dwg-preview.css +0 -1
- package/dist2d/dwg-preview.d.ts +0 -2
- package/dist2d/dwg-preview.es.js +0 -21462
- package/dist2d/dwg-preview.umd.js +0 -242
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as Ti, G as ue, P as qt, O as ke, M as O, V as d, e as $e, T as Rn, C as Ds, W as Ii, a as ks, b as je, N as _i, c as Ls, d as ot, f as
|
|
2
|
-
import { W as ge, C as xo, L as ft, B as Yi, g as ze, a as wo, E as bo, r as Co } from "./sdk-runtime-
|
|
3
|
-
import { r as ee, g as Ao } from "./sdk-assets-
|
|
1
|
+
import { S as Ti, G as ue, P as qt, O as ke, M as O, V as d, e as $e, T as Rn, C as Ds, W as Ii, a as ks, b as je, N as _i, c as Ls, d as ot, f as W, Q as Se, E as On, R as pe, g as Ze, h as Fn, B as R, i as Di, A as Nn, j as H, k as z, I as V, l as ii, m as ni, n as Hn, o as Vn, L as Kt, p as Bs, q as zs, r as Rs, s as Gi, D as re, t as qi, u as Os, F as Fs, v as Me, w as Un, x as Wn, y as ki, z as Ns, H as Gn, J as he, K as Hs, U as Vs, X as bt, Y as Us, Z as qn, _ as Ws, $ as qe, a0 as jt, a1 as Li, a2 as Z, a3 as oe, a4 as Ct, a5 as Gs, a6 as Je, a7 as yi, a8 as He, a9 as It, aa as qs, ab as Ks, ac as Mi, ad as ht, ae as js, af as ct, ag as Ys, ah as Xs, ai as Kn, aj as Yt, ak as At, al as Xt, am as Qs, an as Ki, ao as dt, ap as Et, aq as St, ar as $s, as as Zs, at as ji, au as Js, av as eo, aw as to, ax as io, ay as no, az as so, aA as oo, aB as ro, aC as ao, aD as lo, aE as jn, aF as co, aG as ho, aH as uo, aI as vi, aJ as Ye, aK as po, aL as mo, aM as go, aN as fo, aO as yo, aP as Mo, aQ as vo } from "./three-vendor-Cy618JLY.js";
|
|
2
|
+
import { W as ge, C as xo, L as ft, B as Yi, g as ze, a as wo, E as bo, r as Co } from "./sdk-runtime-9GTYNlYO.js";
|
|
3
|
+
import { r as ee, g as Ao } from "./sdk-assets-Dl8936wx.js";
|
|
4
4
|
import { a as Qt, J as xi, c as Eo, b as So, P as si, q as Po, k as To, n as Xi, E as Qi, S as Io } from "./sdk-vendor-DYgn7sFs.js";
|
|
5
5
|
class _o {
|
|
6
6
|
engine;
|
|
@@ -22,7 +22,7 @@ class ie {
|
|
|
22
22
|
cameraAnimationFrame = null;
|
|
23
23
|
constructor(e) {
|
|
24
24
|
this.engine = e, this.perspectiveCamera = new qt(
|
|
25
|
-
|
|
25
|
+
45,
|
|
26
26
|
this.engine.container.clientWidth / this.engine.container.clientHeight,
|
|
27
27
|
0.1,
|
|
28
28
|
1e3
|
|
@@ -500,7 +500,7 @@ class Yn extends Ls {
|
|
|
500
500
|
LEFT: ot.ROTATE,
|
|
501
501
|
MIDDLE: ot.DOLLY,
|
|
502
502
|
RIGHT: ot.PAN
|
|
503
|
-
}, this.state = de.NONE, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this.up0 = this.object.up.clone(), this.origin0 = this.origin.clone(), this._lastZoom = this.object.zoom, this._lastPosition = this.object.position.clone(), this._lastTarget = this.target.clone(), this._lastUp = this.object.up.clone(), this._lastQuaternion = this.object.quaternion.clone(), this._referenceUp = this.object.up.clone().normalize(), this._viewRight = new d(1, 0, 0).applyQuaternion(this.object.quaternion).normalize(), this._rotateVelocity = new
|
|
503
|
+
}, this.state = de.NONE, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this.up0 = this.object.up.clone(), this.origin0 = this.origin.clone(), this._lastZoom = this.object.zoom, this._lastPosition = this.object.position.clone(), this._lastTarget = this.target.clone(), this._lastUp = this.object.up.clone(), this._lastQuaternion = this.object.quaternion.clone(), this._referenceUp = this.object.up.clone().normalize(), this._viewRight = new d(1, 0, 0).applyQuaternion(this.object.quaternion).normalize(), this._rotateVelocity = new W(), this._panVelocity = new W(), this._zoomVelocity = 0, this._mouseStart = new W(), this._touchCenter = new W(), this._touchDistance = 0, this._pointers = /* @__PURE__ */ new Map(), this._pressedKeys = /* @__PURE__ */ new Set(), this._keyboardAnimationId = null, this._lastKeyboardMoveTime = 0, this._isInteracting = !1, this._keyDomElement = null, this._touchAction = "", this._onContextMenu = this._handleContextMenu.bind(this), this._onPointerDown = this._handlePointerDown.bind(this), this._onPointerMove = this._handlePointerMove.bind(this), this._onPointerUp = this._handlePointerUp.bind(this), this._onPointerCancel = this._handlePointerUp.bind(this), this._onWheel = this._handleWheel.bind(this), this._onKeyDown = this._handleKeyDown.bind(this), this._onKeyUp = this._handleKeyUp.bind(this), this.domElement && this.connect(this.domElement), this.update(), this.saveState();
|
|
504
504
|
}
|
|
505
505
|
connect(e) {
|
|
506
506
|
e && (this.disconnect(), this.domElement = e, this._touchAction = e.style.touchAction, e.style.touchAction = "none", e.addEventListener("contextmenu", this._onContextMenu), e.addEventListener("pointerdown", this._onPointerDown), e.addEventListener("pointermove", this._onPointerMove), e.addEventListener("pointerup", this._onPointerUp), e.addEventListener("pointercancel", this._onPointerCancel), e.addEventListener("wheel", this._onWheel, { passive: !1 }), this.listenToKeyEvents(window));
|
|
@@ -1741,15 +1741,15 @@ class Go {
|
|
|
1741
1741
|
r || (r = [0, 0, []]);
|
|
1742
1742
|
const a = Pe(n, s), c = this.getModelSnapCache(s, o, r);
|
|
1743
1743
|
n.camera.updateMatrixWorld(!0);
|
|
1744
|
-
const h = new H().multiplyMatrices(n.camera.projectionMatrix, n.camera.matrixWorldInverse), u = n.renderer.domElement.clientWidth, p = n.renderer.domElement.clientHeight, g = new
|
|
1745
|
-
let S = "face", I = null, T = null,
|
|
1744
|
+
const h = new H().multiplyMatrices(n.camera.projectionMatrix, n.camera.matrixWorldInverse), u = n.renderer.domElement.clientWidth, p = n.renderer.domElement.clientHeight, g = new W(t.offsetX, t.offsetY), f = new ii(), v = new d(), w = new d(), m = new W(), b = new W(), A = new d();
|
|
1745
|
+
let S = "face", I = null, T = null, L = 100;
|
|
1746
1746
|
if (i != null) {
|
|
1747
1747
|
const k = e.point.clone(), N = e.normal || (e.face ? e.face.normal : null);
|
|
1748
1748
|
if (N && e.object?.matrixWorld?.elements) {
|
|
1749
|
-
const
|
|
1749
|
+
const K = N.clone().transformDirection(e.object.matrixWorld).normalize(), Q = new d().subVectors(i, k).dot(K), ce = i.clone().sub(K.clone().multiplyScalar(Q)), ae = this.projectWorldPointToScreen(ce, h, u, p, m, f);
|
|
1750
1750
|
if (ae != null) {
|
|
1751
1751
|
const le = this.getDistanceSq(ae.x, ae.y, g.x, g.y);
|
|
1752
|
-
le <
|
|
1752
|
+
le < L * 4 && (L = le, I = {
|
|
1753
1753
|
point: ce,
|
|
1754
1754
|
distanceSq: le,
|
|
1755
1755
|
pointxy: ae.clone(),
|
|
@@ -1764,10 +1764,10 @@ class Go {
|
|
|
1764
1764
|
const N = this.projectWorldPointToScreen(v, h, u, p, m, f);
|
|
1765
1765
|
if (N == null)
|
|
1766
1766
|
continue;
|
|
1767
|
-
const
|
|
1768
|
-
|
|
1767
|
+
const K = this.getDistanceSq(N.x, N.y, g.x, g.y);
|
|
1768
|
+
K < L && (L = K, I = {
|
|
1769
1769
|
point: v.clone(),
|
|
1770
|
-
distanceSq:
|
|
1770
|
+
distanceSq: K,
|
|
1771
1771
|
pointxy: N.clone(),
|
|
1772
1772
|
style: "rect"
|
|
1773
1773
|
});
|
|
@@ -1778,10 +1778,10 @@ class Go {
|
|
|
1778
1778
|
const N = this.projectWorldPointToScreen(v, h, u, p, m, f);
|
|
1779
1779
|
if (N == null)
|
|
1780
1780
|
continue;
|
|
1781
|
-
const
|
|
1782
|
-
|
|
1781
|
+
const K = this.getDistanceSq(N.x, N.y, g.x, g.y);
|
|
1782
|
+
K < L && (L = K, I = {
|
|
1783
1783
|
point: v.clone(),
|
|
1784
|
-
distanceSq:
|
|
1784
|
+
distanceSq: K,
|
|
1785
1785
|
pointxy: N.clone(),
|
|
1786
1786
|
style: "default"
|
|
1787
1787
|
});
|
|
@@ -1791,11 +1791,11 @@ class Go {
|
|
|
1791
1791
|
else {
|
|
1792
1792
|
for (let k = 0; k < c.localLines.length; k += 6) {
|
|
1793
1793
|
v.set(c.localLines[k], c.localLines[k + 1], c.localLines[k + 2]).applyMatrix4(a), w.set(c.localLines[k + 3], c.localLines[k + 4], c.localLines[k + 5]).applyMatrix4(a);
|
|
1794
|
-
const N = this.projectWorldPointToScreen(v, h, u, p, m, f),
|
|
1795
|
-
if (N == null ||
|
|
1794
|
+
const N = this.projectWorldPointToScreen(v, h, u, p, m, f), K = this.projectWorldPointToScreen(w, h, u, p, b, f);
|
|
1795
|
+
if (N == null || K == null)
|
|
1796
1796
|
continue;
|
|
1797
|
-
const te = this.pointToLineProjection(g, N,
|
|
1798
|
-
if (Q <
|
|
1797
|
+
const te = this.pointToLineProjection(g, N, K), Q = this.pointToLineDistanceSq(g, N, K);
|
|
1798
|
+
if (Q < L) {
|
|
1799
1799
|
const ce = this.pointToLineProjection3D(te, v, w, h, A);
|
|
1800
1800
|
if (n.clipping && !n.clipping.isPointInClippingRange(ce))
|
|
1801
1801
|
continue;
|
|
@@ -1804,9 +1804,9 @@ class Go {
|
|
|
1804
1804
|
point: ce.clone(),
|
|
1805
1805
|
pointxy: this.projectWorldPointToScreen(ce, h, u, p, m, f)?.clone() ?? N.clone(),
|
|
1806
1806
|
start: N.clone(),
|
|
1807
|
-
end:
|
|
1807
|
+
end: K.clone(),
|
|
1808
1808
|
style: "funnel"
|
|
1809
|
-
},
|
|
1809
|
+
}, L = Q;
|
|
1810
1810
|
}
|
|
1811
1811
|
}
|
|
1812
1812
|
T != null && (S = "line");
|
|
@@ -1860,10 +1860,10 @@ class Go {
|
|
|
1860
1860
|
return this.getDistanceSq(e.x, e.y, s, o);
|
|
1861
1861
|
}
|
|
1862
1862
|
pointToLineProjection(e, t, i) {
|
|
1863
|
-
const n = new
|
|
1863
|
+
const n = new W().subVectors(i, t), s = n.lengthSq();
|
|
1864
1864
|
if (s < 1e-10)
|
|
1865
1865
|
return 0;
|
|
1866
|
-
const o = new
|
|
1866
|
+
const o = new W().subVectors(e, t);
|
|
1867
1867
|
return O.clamp(o.dot(n) / s, 0, 1);
|
|
1868
1868
|
}
|
|
1869
1869
|
/**
|
|
@@ -1951,14 +1951,14 @@ function Hi(l) {
|
|
|
1951
1951
|
mouseMoveFrame: null,
|
|
1952
1952
|
latestMouseMoveEvent: null
|
|
1953
1953
|
}, t = 800, i = 28, n = 132, s = 44, o = 168, r = new Go(l);
|
|
1954
|
-
e.handle_catch = function(M, E,
|
|
1954
|
+
e.handle_catch = function(M, E, B = !0, U = !0) {
|
|
1955
1955
|
const Y = e.options;
|
|
1956
1956
|
e.options = {
|
|
1957
1957
|
...Y ?? {},
|
|
1958
|
-
showCatch:
|
|
1958
|
+
showCatch: B
|
|
1959
1959
|
};
|
|
1960
1960
|
try {
|
|
1961
|
-
return
|
|
1961
|
+
return j(M, E, !0, U);
|
|
1962
1962
|
} finally {
|
|
1963
1963
|
e.options = Y;
|
|
1964
1964
|
}
|
|
@@ -1973,9 +1973,9 @@ function Hi(l) {
|
|
|
1973
1973
|
e.mouseMoveFrame != null && (cancelAnimationFrame(e.mouseMoveFrame), e.mouseMoveFrame = null), e.latestMouseMoveEvent = null;
|
|
1974
1974
|
}
|
|
1975
1975
|
e.active = function() {
|
|
1976
|
-
l.renderer.domElement.addEventListener("mousedown", ce), l.renderer.domElement.addEventListener("mouseup", le), l.renderer.domElement.addEventListener("mousemove", ae), l.renderer.domElement.addEventListener("touchstart", _, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchend", P, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchcancel", P, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchmove", D, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("pointerdown", F, !0), l.renderer.domElement.addEventListener("pointermove",
|
|
1976
|
+
l.renderer.domElement.addEventListener("mousedown", ce), l.renderer.domElement.addEventListener("mouseup", le), l.renderer.domElement.addEventListener("mousemove", ae), l.renderer.domElement.addEventListener("touchstart", _, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchend", P, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchcancel", P, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("touchmove", D, { capture: !0, passive: !1 }), l.renderer.domElement.addEventListener("pointerdown", F, !0), l.renderer.domElement.addEventListener("pointermove", G, !0), l.renderer.domElement.addEventListener("pointerup", q, !0), l.renderer.domElement.addEventListener("pointercancel", q, !0), window.addEventListener("keydown", c), window.addEventListener("keyup", h);
|
|
1977
1977
|
}, e.disActive = function() {
|
|
1978
|
-
m(), a(), N(), l.renderer.domElement.removeEventListener("mousedown", ce), l.renderer.domElement.removeEventListener("mouseup", le), l.renderer.domElement.removeEventListener("mousemove", ae), l.renderer.domElement.removeEventListener("touchstart", _, !0), l.renderer.domElement.removeEventListener("touchend", P, !0), l.renderer.domElement.removeEventListener("touchcancel", P, !0), l.renderer.domElement.removeEventListener("touchmove", D, !0), l.renderer.domElement.removeEventListener("pointerdown", F, !0), l.renderer.domElement.removeEventListener("pointermove",
|
|
1978
|
+
m(), a(), N(), l.renderer.domElement.removeEventListener("mousedown", ce), l.renderer.domElement.removeEventListener("mouseup", le), l.renderer.domElement.removeEventListener("mousemove", ae), l.renderer.domElement.removeEventListener("touchstart", _, !0), l.renderer.domElement.removeEventListener("touchend", P, !0), l.renderer.domElement.removeEventListener("touchcancel", P, !0), l.renderer.domElement.removeEventListener("touchmove", D, !0), l.renderer.domElement.removeEventListener("pointerdown", F, !0), l.renderer.domElement.removeEventListener("pointermove", G, !0), l.renderer.domElement.removeEventListener("pointerup", q, !0), l.renderer.domElement.removeEventListener("pointercancel", q, !0), window.removeEventListener("keydown", c), window.removeEventListener("keyup", h);
|
|
1979
1979
|
};
|
|
1980
1980
|
function c(M) {
|
|
1981
1981
|
(M.keyCode === 8 || M.keyCode === 46) && e.self && e.self.handelKeyDeleteDown != null && e.self.handelKeyDeleteDown(), M.keyCode === 27 && e.self && e.self.handelKeyEscDown != null && e.self.handelKeyEscDown(), M.keyCode === 13 && e.self && e.self.handelKeyEnterDown != null && e.self.handelKeyEnterDown(), M.keyCode === 32 && e.self && e.self.handelKeySpaceDown != null && e.self.handelKeySpaceDown(M), M.key === "Tab" && e.self && e.self.handelKeyTabDown != null && e.self.handelKeyTabDown(M), M.key === "Control" && e.self && e.self.handelKeyCtrlDown != null && e.self.handelKeyCtrlDown(), M.key === "Delete" && e.self && e.self.handelKeyDeleteDown != null && e.self.handelKeyDeleteDown(), M.key === "Shift" && e.self && e.self.handelKeyShiftDown != null && e.self.handelKeyShiftDown(), M.key === "Meta" && e.self && e.self.handelKeyMetaDown != null && e.self.handelKeyMetaDown();
|
|
@@ -1984,12 +1984,12 @@ function Hi(l) {
|
|
|
1984
1984
|
M.key === "Alt" && e.self && e.self.handelKeyAltUp != null && e.self.handelKeyAltUp(), M.key === "Tab" && e.self && e.self.handelKeyTabUp != null && e.self.handelKeyTabUp(), M.key === "Control" && e.self && e.self.handelKeyCtrlUp != null && e.self.handelKeyCtrlUp(), M.key === "Shift" && e.self && e.self.handelKeyShiftUp != null && e.self.handelKeyShiftUp(), M.key === "Meta" && e.self && e.self.handelKeyMetaUp != null && e.self.handelKeyMetaUp(), M.key === "Command" && e.self && e.self.handelKeyCommandUp != null && e.self.handelKeyCommandUp(), M.key === "Windows" && e.self && e.self.handelKeyWindowsUp != null && e.self.handelKeyWindowsUp();
|
|
1985
1985
|
}
|
|
1986
1986
|
function u(M) {
|
|
1987
|
-
const E = new
|
|
1988
|
-
return E.x = M.offsetX /
|
|
1987
|
+
const E = new W(), B = l.renderer.domElement.clientWidth, U = l.renderer.domElement.clientHeight;
|
|
1988
|
+
return E.x = M.offsetX / B * 2 - 1, E.y = -(M.offsetY / U) * 2 + 1, E;
|
|
1989
1989
|
}
|
|
1990
1990
|
function p(M) {
|
|
1991
|
-
const E = new pe(),
|
|
1992
|
-
return E.setFromCamera(
|
|
1991
|
+
const E = new pe(), B = u(M);
|
|
1992
|
+
return E.setFromCamera(B, l.camera), E;
|
|
1993
1993
|
}
|
|
1994
1994
|
function g() {
|
|
1995
1995
|
return l?.deviceModule?.isMobile?.() === !0 || l?.deviceType === "mobile";
|
|
@@ -2026,9 +2026,9 @@ function Hi(l) {
|
|
|
2026
2026
|
}
|
|
2027
2027
|
function T(M) {
|
|
2028
2028
|
const E = M.touches[0] || M.changedTouches[0];
|
|
2029
|
-
return E ? new
|
|
2029
|
+
return E ? new W(E.clientX, E.clientY) : null;
|
|
2030
2030
|
}
|
|
2031
|
-
function
|
|
2031
|
+
function L() {
|
|
2032
2032
|
if (e.touchMagnifierCanvas)
|
|
2033
2033
|
return e.touchMagnifierCanvas;
|
|
2034
2034
|
const M = document.createElement("canvas"), E = Math.max(1, window.devicePixelRatio || 1);
|
|
@@ -2041,12 +2041,12 @@ function Hi(l) {
|
|
|
2041
2041
|
function N() {
|
|
2042
2042
|
e.touchMagnifierCanvas?.remove?.(), e.touchMagnifierCanvas = null, e.touchMagnifierContext = null;
|
|
2043
2043
|
}
|
|
2044
|
-
function
|
|
2044
|
+
function K(M, E, B, U, Y, we) {
|
|
2045
2045
|
const ve = l?.catchSvg;
|
|
2046
2046
|
if (!ve?.childElementCount) return;
|
|
2047
2047
|
const Le = l?.reactBoundingClientRect ?? E.getBoundingClientRect(), nt = (be) => {
|
|
2048
2048
|
const [Re, Oe] = be.split(",").map(Number);
|
|
2049
|
-
return Number.isFinite(Re) && Number.isFinite(Oe) ? [(Re - Le.left -
|
|
2049
|
+
return Number.isFinite(Re) && Number.isFinite(Oe) ? [(Re - Le.left - B) / Y * n * we, (Oe - Le.top - U) / Y * n * we] : null;
|
|
2050
2050
|
};
|
|
2051
2051
|
Array.from(ve.children).forEach((be) => {
|
|
2052
2052
|
const Re = be.tagName.toLowerCase(), xe = (Re === "line" ? [`${be.getAttribute("x1")},${be.getAttribute("y1")}`, `${be.getAttribute("x2")},${be.getAttribute("y2")}`].map(nt) : (be.getAttribute("points") || "").trim().split(/\s+/).map(nt)).filter(Boolean);
|
|
@@ -2054,36 +2054,36 @@ function Hi(l) {
|
|
|
2054
2054
|
});
|
|
2055
2055
|
}
|
|
2056
2056
|
function te(M) {
|
|
2057
|
-
const E = l?.renderer?.domElement,
|
|
2058
|
-
if (!E || !
|
|
2057
|
+
const E = l?.renderer?.domElement, B = L(), U = e.touchMagnifierContext;
|
|
2058
|
+
if (!E || !B || !U)
|
|
2059
2059
|
return;
|
|
2060
2060
|
const Y = M?.catch?.point, we = Y && (l?.worldToScreen ?? new ge(l.camera, l.renderer, l.scene)), ve = we?.worldToScreenIfVisible?.(Y) ?? we?.worldToScreen?.(Y);
|
|
2061
2061
|
if (!ve || !Number.isFinite(ve.x) || !Number.isFinite(ve.y) || ve.x < 0 || ve.y < 0 || ve.x > E.clientWidth || ve.y > E.clientHeight) {
|
|
2062
2062
|
k();
|
|
2063
2063
|
return;
|
|
2064
2064
|
}
|
|
2065
|
-
const Le =
|
|
2065
|
+
const Le = B.width / n, nt = Math.min(
|
|
2066
2066
|
window.innerWidth - n / 2 - 8,
|
|
2067
2067
|
Math.max(n / 2 + 8, M.clientX)
|
|
2068
2068
|
), be = Math.min(
|
|
2069
2069
|
window.innerHeight - n - 8,
|
|
2070
2070
|
Math.max(8, M.clientY - o)
|
|
2071
2071
|
);
|
|
2072
|
-
|
|
2072
|
+
B.style.left = `${nt - n / 2}px`, B.style.top = `${be}px`, B.style.display = "block";
|
|
2073
2073
|
const Re = E.width / Math.max(1, E.clientWidth), Oe = E.height / Math.max(1, E.clientHeight), xe = s, st = Math.max(0, Math.min(E.clientWidth - xe, ve.x - xe / 2)), Fe = Math.max(0, Math.min(E.clientHeight - xe, ve.y - xe / 2));
|
|
2074
|
-
U.save(), U.clearRect(0, 0,
|
|
2074
|
+
U.save(), U.clearRect(0, 0, B.width, B.height), U.beginPath(), U.arc(B.width / 2, B.height / 2, B.width / 2, 0, Math.PI * 2), U.clip(), U.fillStyle = window.getComputedStyle(E.parentElement ?? document.body).backgroundColor || "#dfe8f2", U.fillRect(0, 0, B.width, B.height);
|
|
2075
2075
|
try {
|
|
2076
|
-
U.drawImage(E, st * Re, Fe * Oe, xe * Re, xe * Oe, 0, 0,
|
|
2076
|
+
U.drawImage(E, st * Re, Fe * Oe, xe * Re, xe * Oe, 0, 0, B.width, B.height), K(U, E, st, Fe, xe, Le);
|
|
2077
2077
|
} catch {
|
|
2078
2078
|
k(), U.restore();
|
|
2079
2079
|
return;
|
|
2080
2080
|
}
|
|
2081
|
-
U.strokeStyle = "rgba(0, 255, 247, 0.9)", U.lineWidth = 1.5 * Le, U.beginPath(), U.moveTo(
|
|
2081
|
+
U.strokeStyle = "rgba(0, 255, 247, 0.9)", U.lineWidth = 1.5 * Le, U.beginPath(), U.moveTo(B.width / 2 - 10 * Le, B.height / 2), U.lineTo(B.width / 2 + 10 * Le, B.height / 2), U.moveTo(B.width / 2, B.height / 2 - 10 * Le), U.lineTo(B.width / 2, B.height / 2 + 10 * Le), U.stroke(), U.restore();
|
|
2082
2082
|
}
|
|
2083
|
-
function Q(M, E = !1,
|
|
2083
|
+
function Q(M, E = !1, B = !1, U = !0) {
|
|
2084
2084
|
const Y = p(M);
|
|
2085
2085
|
if (M.raycaster = Y, E) {
|
|
2086
|
-
const we =
|
|
2086
|
+
const we = j(Y, M, B, U);
|
|
2087
2087
|
M.catch = we;
|
|
2088
2088
|
}
|
|
2089
2089
|
}
|
|
@@ -2099,10 +2099,10 @@ function Hi(l) {
|
|
|
2099
2099
|
function le(M) {
|
|
2100
2100
|
if (v(M))
|
|
2101
2101
|
return;
|
|
2102
|
-
const E = Date.now(),
|
|
2102
|
+
const E = Date.now(), B = E - e.mouseDownTime, U = new d(M.offsetX, M.offsetY, 0);
|
|
2103
2103
|
e.self && e.self.handleMouseUp != null && M.button == 0 && (Q(M, !1, !1, !1), e.self.handleMouseUp(M));
|
|
2104
2104
|
const Y = U.distanceTo(e.mouseDownPosition);
|
|
2105
|
-
(
|
|
2105
|
+
(B < 100 || Y == 0) && e.self && e.self.handleMouseClick != null && (Q(M, !0, !0, !1), E - e.lastClickTime < 200 ? e.self.handleMouseDoubleClick != null && M.button == 0 && e.self.handleMouseDoubleClick(M) : e.self.handleMouseClick != null && M.button == 0 ? e.self.handleMouseClick(M) : e.self.handleRightMouseClick != null && M.button == 2 && e.self.handleRightMouseClick(M), e.lastClickTime = Date.now());
|
|
2106
2106
|
}
|
|
2107
2107
|
function fe(M) {
|
|
2108
2108
|
const E = M.touches[0] || M.changedTouches[0];
|
|
@@ -2123,10 +2123,10 @@ function Hi(l) {
|
|
|
2123
2123
|
};
|
|
2124
2124
|
}
|
|
2125
2125
|
function Ae(M) {
|
|
2126
|
-
const
|
|
2126
|
+
const B = l.renderer.domElement.getBoundingClientRect();
|
|
2127
2127
|
return {
|
|
2128
|
-
offsetX: M.clientX -
|
|
2129
|
-
offsetY: M.clientY -
|
|
2128
|
+
offsetX: M.clientX - B.left,
|
|
2129
|
+
offsetY: M.clientY - B.top,
|
|
2130
2130
|
button: M.button ?? 0,
|
|
2131
2131
|
clientX: M.clientX,
|
|
2132
2132
|
clientY: M.clientY,
|
|
@@ -2135,16 +2135,16 @@ function Hi(l) {
|
|
|
2135
2135
|
originalEvent: M
|
|
2136
2136
|
};
|
|
2137
2137
|
}
|
|
2138
|
-
function x(M, E,
|
|
2139
|
-
m(), e.touchInputMode =
|
|
2138
|
+
function x(M, E, B, U = null) {
|
|
2139
|
+
m(), e.touchInputMode = B, e.touchPointerId = U, e.touchLatestEvent = M, e.touchStartPosition = E, e.touchLongPressTimer = window.setTimeout(() => {
|
|
2140
2140
|
const Y = e.touchLatestEvent;
|
|
2141
2141
|
Y && (e.touchLongPressActive = !0, A(), e.mouseDownTime = Date.now(), e.mouseDownPosition = new d(Y.offsetX, Y.offsetY, 0), e.self?.handleMouseMove != null && (Q(Y, !0, !0, e.isClickSimpleModel), e.self.handleMouseMove(Y)), te(Y));
|
|
2142
2142
|
}, t);
|
|
2143
2143
|
}
|
|
2144
2144
|
function y(M, E) {
|
|
2145
2145
|
e.touchLatestEvent = M;
|
|
2146
|
-
const
|
|
2147
|
-
!e.touchLongPressActive &&
|
|
2146
|
+
const B = e.touchStartPosition;
|
|
2147
|
+
!e.touchLongPressActive && B && E && B.distanceTo(E) > i && w(), e.touchLongPressActive && (e.self?.handleMouseMove != null && (Q(M, !0, !0, e.isClickSimpleModel), e.self.handleMouseMove(M)), te(M));
|
|
2148
2148
|
}
|
|
2149
2149
|
function C(M) {
|
|
2150
2150
|
w(), e.touchLongPressActive && (Q(M, !0, !0, e.isClickSimpleModel), e.self?.handleMouseClick != null && e.self.handleMouseClick(M), e.self?.handleMouseUp != null && e.self.handleMouseUp(M)), m();
|
|
@@ -2157,7 +2157,7 @@ function Hi(l) {
|
|
|
2157
2157
|
const E = fe(M);
|
|
2158
2158
|
if (E) {
|
|
2159
2159
|
if (f()) {
|
|
2160
|
-
x(E, T(M) ?? new
|
|
2160
|
+
x(E, T(M) ?? new W(E.clientX, E.clientY), "touch");
|
|
2161
2161
|
return;
|
|
2162
2162
|
}
|
|
2163
2163
|
ce(E);
|
|
@@ -2192,23 +2192,23 @@ function Hi(l) {
|
|
|
2192
2192
|
if (M.pointerType !== "touch" || !f() || M.isPrimary === !1)
|
|
2193
2193
|
return;
|
|
2194
2194
|
const E = Ae(M);
|
|
2195
|
-
x(E, new
|
|
2195
|
+
x(E, new W(M.clientX, M.clientY), "pointer", M.pointerId);
|
|
2196
2196
|
}
|
|
2197
|
-
function
|
|
2198
|
-
M.pointerType !== "touch" || !f() || (e.touchLongPressActive && b(M), e.touchInputMode === "pointer" && (e.touchPointerId != null && M.pointerId !== e.touchPointerId || y(Ae(M), new
|
|
2197
|
+
function G(M) {
|
|
2198
|
+
M.pointerType !== "touch" || !f() || (e.touchLongPressActive && b(M), e.touchInputMode === "pointer" && (e.touchPointerId != null && M.pointerId !== e.touchPointerId || y(Ae(M), new W(M.clientX, M.clientY))));
|
|
2199
2199
|
}
|
|
2200
2200
|
function q(M) {
|
|
2201
2201
|
M.pointerType !== "touch" || !f() || (e.touchLongPressActive && b(M), e.touchInputMode === "pointer" && (e.touchPointerId != null && M.pointerId !== e.touchPointerId || C(Ae(M))));
|
|
2202
2202
|
}
|
|
2203
|
-
function
|
|
2204
|
-
if (!l.engineStatus.isFree &&
|
|
2203
|
+
function j(M, E, B = !1, U = !0) {
|
|
2204
|
+
if (!l.engineStatus.isFree && B == !1) {
|
|
2205
2205
|
l.hoverHighLight.clearHighlight();
|
|
2206
2206
|
return;
|
|
2207
2207
|
}
|
|
2208
2208
|
if (l.engineStatus.editorMode == "simple")
|
|
2209
2209
|
return;
|
|
2210
2210
|
l.catchSvg.innerHTML = "";
|
|
2211
|
-
let Y = l.octreeBox.rayInterationModel(M,
|
|
2211
|
+
let Y = l.octreeBox.rayInterationModel(M, B, U);
|
|
2212
2212
|
if (Y = l.clipping?.filterIntersectionsByClipping(Y) ?? Y, Y.length !== 0)
|
|
2213
2213
|
return e.options.showCatch ? r.applySnapPreview(Y[0], E, e.lastPoint) : Y[0];
|
|
2214
2214
|
}
|
|
@@ -2722,8 +2722,8 @@ function Yo(l, e, t, i) {
|
|
|
2722
2722
|
A != null && b.forEach((S, I) => {
|
|
2723
2723
|
const T = [[A, I, 0, 0]];
|
|
2724
2724
|
S.indexes = T, S.id = Number(S.id);
|
|
2725
|
-
const
|
|
2726
|
-
Tt(
|
|
2725
|
+
const L = { ...S, instance: !0, info: S, infos: [S], indexes: T };
|
|
2726
|
+
Tt(L), r.nodesMap.set(Number(S.id), L), c.push(Number(S.id));
|
|
2727
2727
|
});
|
|
2728
2728
|
};
|
|
2729
2729
|
v("Circle", h), v("Rect", u), v("Ellipse", g), v("Bridge", p), Xo(r, c);
|
|
@@ -2782,10 +2782,10 @@ function Qo(l, e, t, i, n) {
|
|
|
2782
2782
|
}
|
|
2783
2783
|
} else
|
|
2784
2784
|
S = (w.clone().sub(v.clone()).cross(new d(0, 0, 1)).y > 0 ? -1 : 1) * w.clone().sub(v.clone()).angleTo(new d(0, 0, 1)), A = (f.startPoint.Z > f.endPoint.Z ? 1 : -1) * w.clone().sub(v.clone()).angleTo(b.clone().sub(m.clone()));
|
|
2785
|
-
const T = new H(),
|
|
2786
|
-
let N,
|
|
2787
|
-
l === "Circle" ? (N = f.diameter,
|
|
2788
|
-
const te = T.clone().makeScale(N,
|
|
2785
|
+
const T = new H(), L = new Ze(A, S, I, "YXZ"), k = T.clone().makeRotationFromEuler(L);
|
|
2786
|
+
let N, K;
|
|
2787
|
+
l === "Circle" ? (N = f.diameter, K = f.diameter) : (N = f.width, K = f.height);
|
|
2788
|
+
const te = T.clone().makeScale(N, K, f.length);
|
|
2789
2789
|
T.multiplyMatrices(k, te), T.setPosition(f.position.x, f.position.y, f.position.z), r.setMatrixAt(g, T.clone()), r.setColorAt(g, f.color);
|
|
2790
2790
|
const Q = c?.clone().applyMatrix4(T) ?? new R(), ce = Q.min.clone(), ae = Q.max.clone(), le = Q.getCenter(new d());
|
|
2791
2791
|
f.box = Q.clone();
|
|
@@ -3137,8 +3137,8 @@ async function kr(l, e, t, i) {
|
|
|
3137
3137
|
u.forEach((b, A) => {
|
|
3138
3138
|
const S = Number(b.name), I = hn(b.geometry), T = w.get(S) ?? [];
|
|
3139
3139
|
if (T.push([m, m + I]), w.set(S, T), s?.nodesMap?.has(S)) {
|
|
3140
|
-
const
|
|
3141
|
-
|
|
3140
|
+
const L = s.nodesMap.get(S);
|
|
3141
|
+
L.indexes == null && (L.indexes = []), L.indexes.push([g.index, f + A, m, m + I]);
|
|
3142
3142
|
}
|
|
3143
3143
|
m += I;
|
|
3144
3144
|
}), g.indexes == null && (g.indexes = /* @__PURE__ */ new Map()), w.forEach((b, A) => {
|
|
@@ -3218,7 +3218,7 @@ async function Rr(l, e, t, i) {
|
|
|
3218
3218
|
t.meshPromise = (async () => {
|
|
3219
3219
|
console.log(`[loadLightModel] start build lod meshes ${Date.now() - window.startTime}ms`);
|
|
3220
3220
|
const n = await Sr(l, e, t, i);
|
|
3221
|
-
await
|
|
3221
|
+
await zr(e, t, l, i), t.glbs = [], await kr(e.url, l, n, i), t.instanceNodes = null, t.status = !0, console.log(`[loadLightModel] *****************************************************finish build lod meshes ${Date.now() - window.startTime}ms`);
|
|
3222
3222
|
})().finally(() => {
|
|
3223
3223
|
t.meshPromise = null;
|
|
3224
3224
|
}), await t.meshPromise;
|
|
@@ -3810,7 +3810,7 @@ class Ma {
|
|
|
3810
3810
|
* 初始化场景基础光照,并把投影灯引用挂到 scene 上供后续更新使用。
|
|
3811
3811
|
*/
|
|
3812
3812
|
init() {
|
|
3813
|
-
const e = new qe(16774630,
|
|
3813
|
+
const e = new qe(16774630, 2);
|
|
3814
3814
|
e.name = "directionalShadowLight", e.castShadow = !0, e.shadow.mapSize.width = mn, e.shadow.mapSize.height = mn, e.shadow.camera.near = hi, e.shadow.camera.far = di, e.shadow.bias = -Mn, e.shadow.normalBias = yn;
|
|
3815
3815
|
const t = ci;
|
|
3816
3816
|
e.shadow.camera.left = -t, e.shadow.camera.right = t, e.shadow.camera.top = t, e.shadow.camera.bottom = -t, e.shadow.radius = 2, e.shadow.intensity = xt, e.target.name = "directionalShadowLightTarget";
|
|
@@ -3871,8 +3871,8 @@ class Ma {
|
|
|
3871
3871
|
f,
|
|
3872
3872
|
o,
|
|
3873
3873
|
u
|
|
3874
|
-
), b = Math.abs(u - this.lastShadowHalfSize) > 0.5, A = Math.abs(m.near - this.lastShadowNear) > 1, S = Math.abs(m.far - this.lastShadowFar) > 1, I = w.distanceToSquared(this.lastLightPosition) > 0.25, T = f.distanceToSquared(this.lastLightTarget) > 0.25,
|
|
3875
|
-
!b && !A && !S && !I && !T && !
|
|
3874
|
+
), b = Math.abs(u - this.lastShadowHalfSize) > 0.5, A = Math.abs(m.near - this.lastShadowNear) > 1, S = Math.abs(m.far - this.lastShadowFar) > 1, I = w.distanceToSquared(this.lastLightPosition) > 0.25, T = f.distanceToSquared(this.lastLightTarget) > 0.25, L = Math.abs(v - this.lastShadowIntensity) > 0.01;
|
|
3875
|
+
!b && !A && !S && !I && !T && !L || (t.position.copy(w), t.target.position.copy(f), t.target.updateMatrixWorld(!0), t.updateMatrixWorld(!0), i.left = -u, i.right = u, i.top = u, i.bottom = -u, i.near = m.near, i.far = m.far, i.updateProjectionMatrix(), this.updateShadowBias(t, u, m), t.shadow.intensity = v, t.shadow.needsUpdate = !0, this.lastShadowHalfSize = u, this.lastShadowNear = m.near, this.lastShadowFar = m.far, this.lastLightPosition.copy(w), this.lastLightTarget.copy(f), this.lastShadowIntensity = v);
|
|
3876
3876
|
}
|
|
3877
3877
|
/**
|
|
3878
3878
|
* 计算场景范围对阴影相机半边长的贡献。
|
|
@@ -4169,8 +4169,8 @@ class va {
|
|
|
4169
4169
|
timeOutEvent;
|
|
4170
4170
|
selectionBox = null;
|
|
4171
4171
|
isBoxSelecting = !1;
|
|
4172
|
-
selectionStart = new
|
|
4173
|
-
selectionEnd = new
|
|
4172
|
+
selectionStart = new W();
|
|
4173
|
+
selectionEnd = new W();
|
|
4174
4174
|
suppressClickOnce = !1;
|
|
4175
4175
|
selectionThreshold = 5;
|
|
4176
4176
|
tempInstanceMatrix = new H();
|
|
@@ -5786,7 +5786,7 @@ function Pa(l, e, t) {
|
|
|
5786
5786
|
const x = i.sceneOrtho?.renderer;
|
|
5787
5787
|
if (!x || !i.camera)
|
|
5788
5788
|
return;
|
|
5789
|
-
const { width: y, height: C } = h(), _ = x.getSize(new
|
|
5789
|
+
const { width: y, height: C } = h(), _ = x.getSize(new W());
|
|
5790
5790
|
if (_.x !== y || _.y !== C) {
|
|
5791
5791
|
x.setSize(y, C);
|
|
5792
5792
|
const D = y > C ? y / C : C / y, P = 300;
|
|
@@ -5794,7 +5794,7 @@ function Pa(l, e, t) {
|
|
|
5794
5794
|
}
|
|
5795
5795
|
}
|
|
5796
5796
|
i.init = function() {
|
|
5797
|
-
o || (
|
|
5797
|
+
o || (L(), k(), i.ready = le());
|
|
5798
5798
|
}, i.Hide = function() {
|
|
5799
5799
|
o.style.display = "none", i.visible = !1;
|
|
5800
5800
|
}, i.Show = function() {
|
|
@@ -5854,8 +5854,8 @@ function Pa(l, e, t) {
|
|
|
5854
5854
|
p();
|
|
5855
5855
|
var y = new d(0, 0, 0), C = null;
|
|
5856
5856
|
x == "top" ? (y = new d(0, 1, 0), C = new d(0, 0, -1)) : x == "down" || x == "button" ? (y = new d(0, -1, 0), C = new d(0, 0, 1)) : x == "front" ? y = new d(0, 0, 1) : x == "left" ? y = new d(-1, 0, 0) : x == "back" ? y = new d(0, 0, -1) : x == "right" ? y = new d(1, 0, 0) : x == "top_front" ? y = new d(1, 1, 0) : x == "top_left" ? y = new d(0, 1, -1) : x == "top_back" ? y = new d(-1, 1, 0) : x == "top_right" ? y = new d(0, 1, 1) : x == "down_front" ? y = new d(1, -1, 0) : x == "down_left" ? y = new d(0, -1, -1) : x == "down_back" ? y = new d(-1, -1, 0) : x == "down_right" ? y = new d(0, -1, 1) : x == "front_right" ? y = new d(1, 0, 1) : x == "right_back" ? y = new d(-1, 0, 1) : x == "back_left" ? y = new d(-1, 0, -1) : x == "left_front" ? y = new d(1, 0, -1) : x == "top_left_front" ? y = new d(1, 1, -1) : x == "top_front_right" ? y = new d(1, 1, 1) : x == "top_right_back" ? y = new d(-1, 1, 1) : x == "top_back_left" ? y = new d(-1, 1, -1) : x == "button_left_front" ? y = new d(1, -1, -1) : x == "button_front_right" ? y = new d(1, -1, 1) : x == "button_right_back" ? y = new d(-1, 1, 1) : x == "button_back_left" && (y = new d(-1, -1, -1));
|
|
5857
|
-
var _ = l.octreeBox.getBoundingBox(), D = _.min, P = _.max, F = D.clone().add(P.clone()).multiplyScalar(0.5),
|
|
5858
|
-
T(e.camera.position,
|
|
5857
|
+
var _ = l.octreeBox.getBoundingBox(), D = _.min, P = _.max, F = D.clone().add(P.clone()).multiplyScalar(0.5), G = F.clone().add(y.multiplyScalar(1 * P.distanceTo(D)));
|
|
5858
|
+
T(e.camera.position, G, l.controls.target.clone(), F, null, null, 1e3, null, C);
|
|
5859
5859
|
}, i.GetCameraPose = function() {
|
|
5860
5860
|
var x = e.camera.quaternion, y = e.camera.position, C = l.controls.target, _ = {
|
|
5861
5861
|
quaternion: x,
|
|
@@ -5880,8 +5880,8 @@ function Pa(l, e, t) {
|
|
|
5880
5880
|
e.camera.quaternion,
|
|
5881
5881
|
_,
|
|
5882
5882
|
y,
|
|
5883
|
-
(
|
|
5884
|
-
C && (F || (C(
|
|
5883
|
+
(G) => {
|
|
5884
|
+
C && (F || (C(G), F = !0));
|
|
5885
5885
|
}
|
|
5886
5886
|
), C && setTimeout(() => {
|
|
5887
5887
|
F || (C(!0), F = !0);
|
|
@@ -5892,15 +5892,15 @@ function Pa(l, e, t) {
|
|
|
5892
5892
|
w(y), m(y);
|
|
5893
5893
|
var C = l.octreeBox.getBoundingBox(), _ = l.clipping?.getClippedBoundingBox?.(C), D = _ && !_.isEmpty() ? _ : C, P = D.min.clone().add(D.max.clone()).multiplyScalar(0.5);
|
|
5894
5894
|
let F = new d(1, 1, 1);
|
|
5895
|
-
var
|
|
5895
|
+
var G = C.max.distanceTo(C.min), q = D.max.distanceTo(D.min), j = P.clone().add(F.multiplyScalar(q * 0.8));
|
|
5896
5896
|
if (e.camera.isOrthographicCamera) {
|
|
5897
|
-
var
|
|
5898
|
-
e.camera.left = -
|
|
5897
|
+
var M = l.container.clientWidth / l.container.clientHeight, E = q * 0.5;
|
|
5898
|
+
e.camera.left = -E * M, e.camera.right = E * M, e.camera.top = E, e.camera.bottom = -E, e.camera.zoom = 1, e.camera.near = 0.1, e.camera.far = G * 3, e.camera.updateProjectionMatrix();
|
|
5899
5899
|
} else
|
|
5900
|
-
e.camera.near =
|
|
5900
|
+
e.camera.near = 0.1, e.camera.far = G * 10, e.camera.updateProjectionMatrix();
|
|
5901
5901
|
l.controlModule.orbitControls.origin = P.clone(), T(
|
|
5902
5902
|
e.camera.position,
|
|
5903
|
-
|
|
5903
|
+
j,
|
|
5904
5904
|
l.controls.target.clone(),
|
|
5905
5905
|
P,
|
|
5906
5906
|
null,
|
|
@@ -5915,7 +5915,7 @@ function Pa(l, e, t) {
|
|
|
5915
5915
|
let ti = function() {
|
|
5916
5916
|
n = requestAnimationFrame(ti), Fe.update();
|
|
5917
5917
|
};
|
|
5918
|
-
var C = x.min.clone().add(x.max.clone()).multiplyScalar(0.5), _ = e.camera.position.clone().sub(l.controls.target.clone()).normalize(), D = e.camera.position.distanceTo(l.controls.target), P = C.clone().add(_.multiplyScalar(D)), F = e.camera.zoom,
|
|
5918
|
+
var C = x.min.clone().add(x.max.clone()).multiplyScalar(0.5), _ = e.camera.position.clone().sub(l.controls.target.clone()).normalize(), D = e.camera.position.distanceTo(l.controls.target), P = C.clone().add(_.multiplyScalar(D)), F = e.camera.zoom, G = new d(1, 0, 0).applyQuaternion(e.camera.quaternion), q = new d(0, 1, 0).applyQuaternion(e.camera.quaternion), j = [
|
|
5919
5919
|
new d(x.min.x, x.min.y, x.min.z),
|
|
5920
5920
|
new d(x.max.x, x.min.y, x.min.z),
|
|
5921
5921
|
new d(x.min.x, x.max.y, x.min.z),
|
|
@@ -5924,12 +5924,12 @@ function Pa(l, e, t) {
|
|
|
5924
5924
|
new d(x.max.x, x.min.y, x.max.z),
|
|
5925
5925
|
new d(x.min.x, x.max.y, x.max.z),
|
|
5926
5926
|
new d(x.max.x, x.max.y, x.max.z)
|
|
5927
|
-
], M = 1 / 0, E = -1 / 0,
|
|
5928
|
-
for (var Y of
|
|
5929
|
-
var we = Y.dot(
|
|
5930
|
-
M = Math.min(M, we), E = Math.max(E, we),
|
|
5927
|
+
], M = 1 / 0, E = -1 / 0, B = 1 / 0, U = -1 / 0;
|
|
5928
|
+
for (var Y of j) {
|
|
5929
|
+
var we = Y.dot(G), ve = Y.dot(q);
|
|
5930
|
+
M = Math.min(M, we), E = Math.max(E, we), B = Math.min(B, ve), U = Math.max(U, ve);
|
|
5931
5931
|
}
|
|
5932
|
-
var Le = (E - M) / 2, nt = (U -
|
|
5932
|
+
var Le = (E - M) / 2, nt = (U - B) / 2, be = (e.camera.right - e.camera.left) / 2, Re = (e.camera.top - e.camera.bottom) / 2;
|
|
5933
5933
|
F = Math.min(be / Le, Re / nt) * 0.75;
|
|
5934
5934
|
var Oe = e.camera.position.clone(), xe = l.controls.target.clone(), st = e.camera.zoom, Fe = new $e.Tween({
|
|
5935
5935
|
x1: Oe.x,
|
|
@@ -5964,9 +5964,9 @@ function Pa(l, e, t) {
|
|
|
5964
5964
|
T(e.camera.position, P, l.controls.target.clone(), C, null, null, y);
|
|
5965
5965
|
}
|
|
5966
5966
|
};
|
|
5967
|
-
function T(x, y, C, _, D, P, F = 1e3,
|
|
5968
|
-
var
|
|
5969
|
-
D && P ? (
|
|
5967
|
+
function T(x, y, C, _, D, P, F = 1e3, G, q) {
|
|
5968
|
+
var j;
|
|
5969
|
+
D && P ? (j = new $e.Tween({
|
|
5970
5970
|
x1: x.x,
|
|
5971
5971
|
// 相机当前位置x
|
|
5972
5972
|
y1: x.y,
|
|
@@ -5987,7 +5987,7 @@ function Pa(l, e, t) {
|
|
|
5987
5987
|
// 相机当前quaternion
|
|
5988
5988
|
_w: D._w
|
|
5989
5989
|
// 相机当前quaternion
|
|
5990
|
-
}),
|
|
5990
|
+
}), j.to(
|
|
5991
5991
|
{
|
|
5992
5992
|
x1: y.x,
|
|
5993
5993
|
// 新的相机位置x
|
|
@@ -6011,7 +6011,7 @@ function Pa(l, e, t) {
|
|
|
6011
6011
|
// 新的相机quaternion
|
|
6012
6012
|
},
|
|
6013
6013
|
F
|
|
6014
|
-
)) : (
|
|
6014
|
+
)) : (j = new $e.Tween({
|
|
6015
6015
|
x1: x.x,
|
|
6016
6016
|
// 相机当前位置x
|
|
6017
6017
|
y1: x.y,
|
|
@@ -6024,7 +6024,7 @@ function Pa(l, e, t) {
|
|
|
6024
6024
|
// 控制当前的中心点y
|
|
6025
6025
|
z2: C.z
|
|
6026
6026
|
// 控制当前的中心点z
|
|
6027
|
-
}),
|
|
6027
|
+
}), j.to(
|
|
6028
6028
|
{
|
|
6029
6029
|
x1: y.x,
|
|
6030
6030
|
// 新的相机位置x
|
|
@@ -6040,9 +6040,9 @@ function Pa(l, e, t) {
|
|
|
6040
6040
|
// 新的控制中心点位置x
|
|
6041
6041
|
},
|
|
6042
6042
|
F
|
|
6043
|
-
)),
|
|
6043
|
+
)), j.onUpdate(function(E) {
|
|
6044
6044
|
l.controls && (D && P ? (e.camera.quaternion._x = E._x, e.camera.quaternion._y = E._y, e.camera.quaternion._z = E._z, e.camera.quaternion._w = E._w) : l.controls.auto = !0, e.camera.position.x = E.x1, e.camera.position.y = E.y1, e.camera.position.z = E.z1, l.controls.target.x = E.x2, l.controls.target.y = E.y2, l.controls.target.z = E.z2, l.controls.update(), i.RenderScene());
|
|
6045
|
-
}),
|
|
6045
|
+
}), j.onComplete(function(E) {
|
|
6046
6046
|
if (!l.controls) {
|
|
6047
6047
|
f();
|
|
6048
6048
|
return;
|
|
@@ -6050,14 +6050,14 @@ function Pa(l, e, t) {
|
|
|
6050
6050
|
l.controls.syncAvatarFromCameraTarget?.(
|
|
6051
6051
|
new d(E.x2, E.y2, E.z2),
|
|
6052
6052
|
{ preserveCameraDistance: !0 }
|
|
6053
|
-
), l.controls.auto = !1, q && typeof l.controls.setScreenUp == "function" ? l.controls.setScreenUp(q) : l.controls.update(), i.RenderScene(),
|
|
6054
|
-
}),
|
|
6053
|
+
), l.controls.auto = !1, q && typeof l.controls.setScreenUp == "function" ? l.controls.setScreenUp(q) : l.controls.update(), i.RenderScene(), G && G(!0), cancelAnimationFrame(n), n = null, f();
|
|
6054
|
+
}), j.easing($e.Easing.Cubic.InOut);
|
|
6055
6055
|
function M(E) {
|
|
6056
|
-
n = requestAnimationFrame(M),
|
|
6056
|
+
n = requestAnimationFrame(M), j.update();
|
|
6057
6057
|
}
|
|
6058
|
-
g(),
|
|
6058
|
+
g(), j.start(), M();
|
|
6059
6059
|
}
|
|
6060
|
-
function
|
|
6060
|
+
function L() {
|
|
6061
6061
|
o = document.createElement("div"), o.className = "ViewCube", t.appendChild(o), r = document.createElement("div"), r.className = "viewSettingWrapper", r.innerHTML = "...";
|
|
6062
6062
|
var x = document.createElement("div");
|
|
6063
6063
|
x.className = "homeViewWrapper", x.style.backgroundImage = `url(${Qe.home})`, x.addEventListener("mousedown", function() {
|
|
@@ -6088,10 +6088,10 @@ function Pa(l, e, t) {
|
|
|
6088
6088
|
});
|
|
6089
6089
|
D.setSize(C, _), D.setClearAlpha(0), i.sceneOrtho.renderer = D;
|
|
6090
6090
|
let P = new jt(16777215, 0.8);
|
|
6091
|
-
i.sceneOrtho.add(P), Sa(o, D), i.orbitControls = new Yn(l, i.camera, o), i.orbitControls.enableZoom = !1, i.orbitControls.enablePan = !1, i.orbitControls.enableDamping = !0, i.orbitControls.dampingFactor = 0.1, i.orbitControls.rotateSpeed = 0.5, i.orbitControls.addEventListener("start",
|
|
6091
|
+
i.sceneOrtho.add(P), Sa(o, D), i.orbitControls = new Yn(l, i.camera, o), i.orbitControls.enableZoom = !1, i.orbitControls.enablePan = !1, i.orbitControls.enableDamping = !0, i.orbitControls.dampingFactor = 0.1, i.orbitControls.rotateSpeed = 0.5, i.orbitControls.addEventListener("start", K), i.orbitControls.addEventListener("change", te), i.orbitControls.addEventListener("end", Q);
|
|
6092
6092
|
}
|
|
6093
6093
|
let N = !1;
|
|
6094
|
-
function
|
|
6094
|
+
function K() {
|
|
6095
6095
|
p(), N = !0, g(), m(e.camera.up), b(i.orbitControls, l.controls), l.controls && (i._mainTarget = l.controls.target.clone(), i._mainDistance = e.camera.position.distanceTo(l.controls.target));
|
|
6096
6096
|
}
|
|
6097
6097
|
function te() {
|
|
@@ -6153,23 +6153,23 @@ function Pa(l, e, t) {
|
|
|
6153
6153
|
P.x = F.clientX, P.y = F.clientY;
|
|
6154
6154
|
}), o.addEventListener("mouseup", (F) => {
|
|
6155
6155
|
if (N) return;
|
|
6156
|
-
const
|
|
6157
|
-
if (Math.sqrt(
|
|
6156
|
+
const G = F.clientX - P.x, q = F.clientY - P.y;
|
|
6157
|
+
if (Math.sqrt(G * G + q * q) > 5) return;
|
|
6158
6158
|
var M = {};
|
|
6159
6159
|
M.x = F.offsetX / o.clientWidth * 2 - 1, M.y = -(F.offsetY / o.clientHeight) * 2 + 1;
|
|
6160
6160
|
var E = new pe();
|
|
6161
6161
|
E.setFromCamera(M, i.camera);
|
|
6162
|
-
const
|
|
6163
|
-
|
|
6162
|
+
const B = E.intersectObjects(a, !1);
|
|
6163
|
+
B.length > 0 && i.ToggleDirectionView(B[0].object.name);
|
|
6164
6164
|
}), o.addEventListener("mousemove", (F) => {
|
|
6165
|
-
var
|
|
6166
|
-
|
|
6165
|
+
var G = {};
|
|
6166
|
+
G.x = F.offsetX / o.clientWidth * 2 - 1, G.y = -(F.offsetY / o.clientHeight) * 2 + 1;
|
|
6167
6167
|
var q = new pe();
|
|
6168
|
-
q.setFromCamera(
|
|
6169
|
-
const
|
|
6168
|
+
q.setFromCamera(G, i.camera);
|
|
6169
|
+
const j = q.intersectObjects(a, !1);
|
|
6170
6170
|
for (var M of a)
|
|
6171
6171
|
M.material.opacity = 0.01;
|
|
6172
|
-
|
|
6172
|
+
j.length > 0 && (j[0].object.material.opacity = 0.2);
|
|
6173
6173
|
});
|
|
6174
6174
|
}
|
|
6175
6175
|
function fe(x) {
|
|
@@ -6589,11 +6589,11 @@ function Ia(l) {
|
|
|
6589
6589
|
if (C == null)
|
|
6590
6590
|
return;
|
|
6591
6591
|
if (!C.threeBox) {
|
|
6592
|
-
let q = new d(C.min.X * 0.3048, C.min.Z * 0.3048, -C.min.Y * 0.3048),
|
|
6592
|
+
let q = new d(C.min.X * 0.3048, C.min.Z * 0.3048, -C.min.Y * 0.3048), j = new d(C.max.X * 0.3048, C.max.Z * 0.3048, -C.max.Y * 0.3048), M = new d(Math.min(q.x, j.x), Math.min(q.y, j.y), Math.min(q.z, j.z)), E = new d(Math.max(j.x, q.x), Math.max(j.y, q.y), Math.max(j.z, q.z));
|
|
6593
6593
|
C.threeBox = new R(M, E).applyMatrix4(P);
|
|
6594
6594
|
}
|
|
6595
|
-
const F = C.threeBox,
|
|
6596
|
-
if (!(
|
|
6595
|
+
const F = C.threeBox, G = y.ray.intersectsBox(F);
|
|
6596
|
+
if (!(G == null || G == !1) && !(o && u?.doesBoxIntersectClippingRange?.(F) === !1))
|
|
6597
6597
|
if (C.children == null || C.children.length == 0) {
|
|
6598
6598
|
if (C.elements != null)
|
|
6599
6599
|
for (let q of C.elements)
|
|
@@ -6612,22 +6612,22 @@ function Ia(l) {
|
|
|
6612
6612
|
const P = _.nodesMap.get(y);
|
|
6613
6613
|
if (P == null)
|
|
6614
6614
|
return;
|
|
6615
|
-
const F =
|
|
6615
|
+
const F = L(P.indexes);
|
|
6616
6616
|
if (F.length > 0) {
|
|
6617
|
-
F.forEach((
|
|
6618
|
-
const q = te(P, D,
|
|
6617
|
+
F.forEach((G) => {
|
|
6618
|
+
const q = te(P, D, G);
|
|
6619
6619
|
if (q == null || o && u?.doesBoxIntersectClippingRange?.(q) === !1)
|
|
6620
6620
|
return;
|
|
6621
|
-
const
|
|
6622
|
-
if (
|
|
6621
|
+
const j = i.ray.intersectBox(q, h);
|
|
6622
|
+
if (j == null)
|
|
6623
6623
|
return;
|
|
6624
|
-
const M = i.ray.origin.distanceToSquared(
|
|
6625
|
-
T(P,
|
|
6624
|
+
const M = i.ray.origin.distanceToSquared(j);
|
|
6625
|
+
T(P, G, C.url, D, M);
|
|
6626
6626
|
});
|
|
6627
6627
|
return;
|
|
6628
6628
|
}
|
|
6629
|
-
P.infos != null && P.infos.forEach((
|
|
6630
|
-
I(
|
|
6629
|
+
P.infos != null && P.infos.forEach((G) => {
|
|
6630
|
+
I(G.mesh, D);
|
|
6631
6631
|
});
|
|
6632
6632
|
}
|
|
6633
6633
|
function I(y, C) {
|
|
@@ -6650,9 +6650,9 @@ function Ia(l) {
|
|
|
6650
6650
|
function T(y, C, _, D, P) {
|
|
6651
6651
|
if (!Array.isArray(C) || C.length < 2 || !(De(l, C[0]) instanceof V))
|
|
6652
6652
|
return;
|
|
6653
|
-
const
|
|
6654
|
-
c.has(
|
|
6655
|
-
key:
|
|
6653
|
+
const G = `instance:${C[0]}:${C[1]}`;
|
|
6654
|
+
c.has(G) || (c.add(G), a.push({
|
|
6655
|
+
key: G,
|
|
6656
6656
|
distanceSq: P,
|
|
6657
6657
|
kind: "instance",
|
|
6658
6658
|
node: y,
|
|
@@ -6661,7 +6661,7 @@ function Ia(l) {
|
|
|
6661
6661
|
modelMatrix: D.clone()
|
|
6662
6662
|
}), k());
|
|
6663
6663
|
}
|
|
6664
|
-
function
|
|
6664
|
+
function L(y) {
|
|
6665
6665
|
return Array.isArray(y) ? y.filter((C) => Array.isArray(C) && De(l, C[0]) instanceof V) : [];
|
|
6666
6666
|
}
|
|
6667
6667
|
function k() {
|
|
@@ -6671,26 +6671,26 @@ function Ia(l) {
|
|
|
6671
6671
|
}
|
|
6672
6672
|
}
|
|
6673
6673
|
function N(y) {
|
|
6674
|
-
return y.kind === "mesh" ? y.mesh : y.kind === "instance" ?
|
|
6674
|
+
return y.kind === "mesh" ? y.mesh : y.kind === "instance" ? K(y.node, y.indexInfo, y.url, y.modelMatrix) : null;
|
|
6675
6675
|
}
|
|
6676
|
-
function
|
|
6676
|
+
function K(y, C, _, D) {
|
|
6677
6677
|
if (!Array.isArray(C) || C.length < 2 || y == null)
|
|
6678
6678
|
return null;
|
|
6679
6679
|
const P = De(l, C[0]);
|
|
6680
6680
|
if (!(P instanceof V) || P.geometry == null)
|
|
6681
6681
|
return null;
|
|
6682
|
-
const F = C[1],
|
|
6683
|
-
if (
|
|
6682
|
+
const F = C[1], G = Q(P, F);
|
|
6683
|
+
if (G == null)
|
|
6684
6684
|
return null;
|
|
6685
|
-
const q = D.clone().multiply(
|
|
6686
|
-
|
|
6685
|
+
const q = D.clone().multiply(G), j = y.info ?? y;
|
|
6686
|
+
j.__pickMeshes instanceof Map || (j.__pickMeshes = /* @__PURE__ */ new Map());
|
|
6687
6687
|
const M = `${C[0]}:${F}`;
|
|
6688
|
-
let E =
|
|
6689
|
-
return E instanceof z || (E = new z(P.geometry, P.material),
|
|
6688
|
+
let E = j.__pickMeshes.get(M);
|
|
6689
|
+
return E instanceof z || (E = new z(P.geometry, P.material), j.__pickMeshes.set(M, E)), x(E, q), E.userData.__instancePickMeta = {
|
|
6690
6690
|
url: _,
|
|
6691
6691
|
id: y.info?.id ?? y.id ?? y.infos[0].id,
|
|
6692
6692
|
instanceId: F,
|
|
6693
|
-
matrix:
|
|
6693
|
+
matrix: G.clone()
|
|
6694
6694
|
}, E;
|
|
6695
6695
|
}
|
|
6696
6696
|
function te(y, C, _) {
|
|
@@ -6751,8 +6751,8 @@ class _a {
|
|
|
6751
6751
|
engine;
|
|
6752
6752
|
// 绘制状态
|
|
6753
6753
|
isDrawing = !1;
|
|
6754
|
-
startPoint = new
|
|
6755
|
-
endPoint = new
|
|
6754
|
+
startPoint = new W();
|
|
6755
|
+
endPoint = new W();
|
|
6756
6756
|
// UI绘制框元素
|
|
6757
6757
|
selectionBox = null;
|
|
6758
6758
|
// 坐标转换工具
|
|
@@ -6982,7 +6982,7 @@ class La {
|
|
|
6982
6982
|
debugger;
|
|
6983
6983
|
if (s.length === 0)
|
|
6984
6984
|
return null;
|
|
6985
|
-
const o = this.toVector3(n), r = new
|
|
6985
|
+
const o = this.toVector3(n), r = new W(o.x, o.z), a = this.buildAxisFamilies(s).sort((p, g) => g.axes.length - p.axes.length).slice(0, 2).map((p, g) => ({ ...p, familyIndex: g }));
|
|
6986
6986
|
if (a.length === 0)
|
|
6987
6987
|
return null;
|
|
6988
6988
|
const c = a.map((p) => this.resolveFamilyLocation(p, r)), h = this.sortFamiliesForDisplay(c), u = h.length === 2 && h.every((p) => p.isInside);
|
|
@@ -7087,7 +7087,7 @@ class La {
|
|
|
7087
7087
|
t.push({
|
|
7088
7088
|
familyIndex: t.length,
|
|
7089
7089
|
direction: n.direction.clone(),
|
|
7090
|
-
normal: new
|
|
7090
|
+
normal: new W(-n.direction.y, n.direction.x),
|
|
7091
7091
|
axes: [n]
|
|
7092
7092
|
});
|
|
7093
7093
|
}), t.forEach((i) => {
|
|
@@ -7095,10 +7095,10 @@ class La {
|
|
|
7095
7095
|
}), t;
|
|
7096
7096
|
}
|
|
7097
7097
|
createProjection(e) {
|
|
7098
|
-
const t = this.coordinateMapper(e.Points[0]), i = this.coordinateMapper(e.Points[1]), n = new
|
|
7098
|
+
const t = this.coordinateMapper(e.Points[0]), i = this.coordinateMapper(e.Points[1]), n = new W(t.x, t.z), s = new W(i.x, i.z), o = s.clone().sub(n);
|
|
7099
7099
|
if (o.lengthSq() <= Number.EPSILON)
|
|
7100
7100
|
return null;
|
|
7101
|
-
const r = this.normalizeDirection(o), a = new
|
|
7101
|
+
const r = this.normalizeDirection(o), a = new W(-r.y, r.x);
|
|
7102
7102
|
return {
|
|
7103
7103
|
data: e,
|
|
7104
7104
|
start: n,
|
|
@@ -8797,8 +8797,8 @@ class Ve {
|
|
|
8797
8797
|
n(m, !0);
|
|
8798
8798
|
let I = m.container;
|
|
8799
8799
|
I.getElementsByTagName("circle")[0].setAttribute("cx", b.x), I.getElementsByTagName("circle")[0].setAttribute("cy", b.y), I.getElementsByTagName("circle")[1].setAttribute("cx", A.x), I.getElementsByTagName("circle")[1].setAttribute("cy", A.y), I.getElementsByTagName("circle")[2].setAttribute("cx", S.x), I.getElementsByTagName("circle")[2].setAttribute("cy", S.y), I.getElementsByTagName("polyline")[0].setAttribute("points", b.x + "," + b.y + " " + A.x + "," + A.y), I.getElementsByTagName("polyline")[1].setAttribute("points", A.x + "," + A.y + " " + S.x + "," + S.y);
|
|
8800
|
-
let T = A.x,
|
|
8801
|
-
I.getElementsByTagName("rect")[0].setAttribute("x", T - 40), I.getElementsByTagName("rect")[0].setAttribute("y",
|
|
8800
|
+
let T = A.x, L = A.y - 30;
|
|
8801
|
+
I.getElementsByTagName("rect")[0].setAttribute("x", T - 40), I.getElementsByTagName("rect")[0].setAttribute("y", L - 12.5), I.getElementsByTagName("text")[0].setAttribute("x", T), I.getElementsByTagName("text")[0].setAttribute("y", L + 4), I.getElementsByTagName("text")[0].innerHTML = m.text, I.style.top = "0px", I.style.left = "0px";
|
|
8802
8802
|
}
|
|
8803
8803
|
function p(m) {
|
|
8804
8804
|
if (m.container == null) {
|
|
@@ -8830,14 +8830,14 @@ class Ve {
|
|
|
8830
8830
|
n(m, !0), A = A / b.length, S = S / b.length;
|
|
8831
8831
|
let I = b.map((te) => te.x + "," + te.y).join(" "), T = [...b];
|
|
8832
8832
|
b.length >= 3 && T.push(b[0]);
|
|
8833
|
-
let
|
|
8834
|
-
k.getElementsByTagName("polygon")[0].setAttribute("points", b.length >= 3 ? I : ""), k.getElementsByTagName("polyline")[0].setAttribute("points",
|
|
8835
|
-
let N = A,
|
|
8836
|
-
k.getElementsByTagName("rect")[0].setAttribute("x", N - 40), k.getElementsByTagName("rect")[0].setAttribute("y",
|
|
8833
|
+
let L = T.map((te) => te.x + "," + te.y).join(" "), k = m.container;
|
|
8834
|
+
k.getElementsByTagName("polygon")[0].setAttribute("points", b.length >= 3 ? I : ""), k.getElementsByTagName("polyline")[0].setAttribute("points", L);
|
|
8835
|
+
let N = A, K = S;
|
|
8836
|
+
k.getElementsByTagName("rect")[0].setAttribute("x", N - 40), k.getElementsByTagName("rect")[0].setAttribute("y", K - 12.5), k.getElementsByTagName("text")[0].setAttribute("x", N + 10), k.getElementsByTagName("text")[0].setAttribute("y", K + 4), k.getElementsByTagName("text")[0].innerHTML = e.getMeasureText(m.text, 2), k.style.top = "0px", k.style.left = "0px";
|
|
8837
8837
|
}
|
|
8838
8838
|
function g(m) {
|
|
8839
8839
|
if (m.container == null) {
|
|
8840
|
-
let
|
|
8840
|
+
let L = [
|
|
8841
8841
|
'<svg class="measureSvg">',
|
|
8842
8842
|
"<defs>",
|
|
8843
8843
|
'<marker id="slope-arrow-' + m.id + '" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">',
|
|
@@ -8851,7 +8851,7 @@ class Ve {
|
|
|
8851
8851
|
'<text x="50" y="16" text-anchor="middle" class="measureLabel"> ' + m.text + "</text>",
|
|
8852
8852
|
"</svg>"
|
|
8853
8853
|
].join("");
|
|
8854
|
-
m.container = document.createElement("div"), m.container.className = "slope-annotation", m.container.id = m.id, m.container.innerHTML =
|
|
8854
|
+
m.container = document.createElement("div"), m.container.className = "slope-annotation", m.container.id = m.id, m.container.innerHTML = L, e.engine.measure.annotationContainer.appendChild(m.container), m.container.getElementsByTagName("svg")[0].addEventListener("click", function() {
|
|
8855
8855
|
e.clearHighlight(), m.container.getElementsByTagName("svg")[0].classList.add("Hight"), m.highlight = !0, e.engine.events.trigger(se.MeasureClick, m);
|
|
8856
8856
|
}), m.isSelect && (m.container.getElementsByTagName("svg")[0].classList.add("Hight"), m.highlight = !0);
|
|
8857
8857
|
}
|
|
@@ -8891,8 +8891,8 @@ class Ve {
|
|
|
8891
8891
|
n(m, !0), b.style.top = "0px", b.style.left = "0px";
|
|
8892
8892
|
let S = b.getElementsByTagName("circle")[0];
|
|
8893
8893
|
S && (S.setAttribute("cx", A.x), S.setAttribute("cy", A.y));
|
|
8894
|
-
let I = b.getElementsByTagName("rect"), T = b.getElementsByTagName("text"),
|
|
8895
|
-
I[0] && (I[0].setAttribute("x", A.x + 10), I[0].setAttribute("y", A.y + 10 +
|
|
8894
|
+
let I = b.getElementsByTagName("rect"), T = b.getElementsByTagName("text"), L = -55;
|
|
8895
|
+
I[0] && (I[0].setAttribute("x", A.x + 10), I[0].setAttribute("y", A.y + 10 + L)), T[0] && (T[0].setAttribute("x", A.x + 10 + 50), T[0].setAttribute("y", A.y + 10 + 16 + L)), I[1] && (I[1].setAttribute("x", A.x + 10), I[1].setAttribute("y", A.y + 10 + 30 + L)), T[1] && (T[1].setAttribute("x", A.x + 10 + 50), T[1].setAttribute("y", A.y + 10 + 46 + L)), I[2] && (I[2].setAttribute("x", A.x + 10), I[2].setAttribute("y", A.y + 10 + 60 + L)), T[2] && (T[2].setAttribute("x", A.x + 10 + 50), T[2].setAttribute("y", A.y + 10 + 76 + L)), T[0] && (T[0].innerHTML = "X: " + e.getMeasureText(m.textX, 1)), T[1] && (T[1].innerHTML = "Y: " + e.getMeasureText(-m.textZ, 1)), T[2] && (T[2].innerHTML = "Z: " + e.getMeasureText(m.textY, 1));
|
|
8896
8896
|
}
|
|
8897
8897
|
function v(m) {
|
|
8898
8898
|
if (m.container == null) {
|
|
@@ -9463,17 +9463,17 @@ class wt {
|
|
|
9463
9463
|
return n.lengthSq() < 1e-10 ? null : n.normalize();
|
|
9464
9464
|
}
|
|
9465
9465
|
pointToScreenLineDistance(e, t, i) {
|
|
9466
|
-
const n = new
|
|
9466
|
+
const n = new W().subVectors(i, t), s = n.lengthSq();
|
|
9467
9467
|
if (s < 1e-10)
|
|
9468
9468
|
return e.distanceTo(t);
|
|
9469
|
-
const o = new
|
|
9469
|
+
const o = new W().subVectors(e, t).dot(n) / s, r = t.clone().add(n.multiplyScalar(o));
|
|
9470
9470
|
return e.distanceTo(r);
|
|
9471
9471
|
}
|
|
9472
9472
|
isNearSlopeDirection(e, t, i, n, s) {
|
|
9473
9473
|
const o = new ge(this.engine.camera, this.engine.renderer, this.engine.scene), r = o.worldToScreenIfVisible(e);
|
|
9474
9474
|
if (r == null)
|
|
9475
9475
|
return !1;
|
|
9476
|
-
const a = Number.isFinite(s?.offsetX) && Number.isFinite(s?.offsetY) ? new
|
|
9476
|
+
const a = Number.isFinite(s?.offsetX) && Number.isFinite(s?.offsetY) ? new W(s.offsetX, s.offsetY) : o.worldToScreenIfVisible(n);
|
|
9477
9477
|
if (a == null)
|
|
9478
9478
|
return !1;
|
|
9479
9479
|
const c = Math.max(
|
|
@@ -9932,7 +9932,7 @@ class al {
|
|
|
9932
9932
|
return this.meshs.filter((e) => e.type === "Mesh");
|
|
9933
9933
|
}
|
|
9934
9934
|
createRaycasterFromMouseEvent(e) {
|
|
9935
|
-
const t = new pe(), i = new
|
|
9935
|
+
const t = new pe(), i = new W(), n = this.engine.renderer.domElement.clientWidth, s = this.engine.renderer.domElement.clientHeight;
|
|
9936
9936
|
return i.x = e.offsetX / n * 2 - 1, i.y = -(e.offsetY / s) * 2 + 1, t.setFromCamera(i, this.engine.camera), t;
|
|
9937
9937
|
}
|
|
9938
9938
|
isMobileDevice() {
|
|
@@ -9940,7 +9940,7 @@ class al {
|
|
|
9940
9940
|
}
|
|
9941
9941
|
getTouchPoint(e) {
|
|
9942
9942
|
const t = e.touches[0] || e.changedTouches[0];
|
|
9943
|
-
return t ? new
|
|
9943
|
+
return t ? new W(t.clientX, t.clientY) : null;
|
|
9944
9944
|
}
|
|
9945
9945
|
createMouseEventFromTouch(e) {
|
|
9946
9946
|
const t = e.touches[0] || e.changedTouches[0], i = this.engine.renderer?.domElement;
|
|
@@ -10445,8 +10445,8 @@ class ll {
|
|
|
10445
10445
|
const r = t?.clone() ?? o.clone().add(n.clone().multiplyScalar(e)), { tangent: a, bitangent: c } = this.getPlaneBasis(n), h = this.getBoxCorners(this.box), u = this.box.min.distanceTo(this.box.max), p = Math.max(u * 0.02, 0.01);
|
|
10446
10446
|
let g = 1 / 0, f = -1 / 0, v = 1 / 0, w = -1 / 0;
|
|
10447
10447
|
h.forEach((I) => {
|
|
10448
|
-
const T = I.clone().sub(r),
|
|
10449
|
-
g = Math.min(g,
|
|
10448
|
+
const T = I.clone().sub(r), L = T.dot(a), k = T.dot(c);
|
|
10449
|
+
g = Math.min(g, L), f = Math.max(f, L), v = Math.min(v, k), w = Math.max(w, k);
|
|
10450
10450
|
}), g -= p, f += p, v -= p, w += p;
|
|
10451
10451
|
const m = r.clone().add(a.clone().multiplyScalar(g)).add(c.clone().multiplyScalar(v)), b = r.clone().add(a.clone().multiplyScalar(f)).add(c.clone().multiplyScalar(v)), A = r.clone().add(a.clone().multiplyScalar(f)).add(c.clone().multiplyScalar(w)), S = r.clone().add(a.clone().multiplyScalar(g)).add(c.clone().multiplyScalar(w));
|
|
10452
10452
|
this.current_center = r.clone(), this.createFace(i, [m, b, A, S], n, "face"), this.updateTransformControl(s), this.updateRotateControl(s);
|
|
@@ -10549,7 +10549,7 @@ class ll {
|
|
|
10549
10549
|
const i = e._gizmo?.picker?.[e.mode];
|
|
10550
10550
|
if (!i)
|
|
10551
10551
|
return null;
|
|
10552
|
-
const n = this.engine.renderer.domElement.getBoundingClientRect(), s = new
|
|
10552
|
+
const n = this.engine.renderer.domElement.getBoundingClientRect(), s = new W(
|
|
10553
10553
|
(t.clientX - n.left) / n.width * 2 - 1,
|
|
10554
10554
|
-((t.clientY - n.top) / n.height) * 2 + 1
|
|
10555
10555
|
), o = new pe();
|
|
@@ -10680,7 +10680,7 @@ class ll {
|
|
|
10680
10680
|
this.ensureRotateControl(), !(!this.rotateControl || !this.rotateAnchor || !this.current_center) && (this.isSyncingRotateControl = !0, this.rotateAnchor.position.copy(this.current_center), this.rotateAnchor.quaternion.copy(this.getPlaneQuaternion(e)), this.rotateAnchor.visible = this.isActive, this.rotateControl.object !== this.rotateAnchor && this.rotateControl.attach(this.rotateAnchor), this.applyControlModeLock(), this.rotateHelper && (this.rotateHelper.visible = this.isActive), this.isSyncingRotateControl = !1);
|
|
10681
10681
|
}
|
|
10682
10682
|
createRaycasterFromMouseEvent(e) {
|
|
10683
|
-
const t = new pe(), i = new
|
|
10683
|
+
const t = new pe(), i = new W(), n = this.engine.renderer.domElement.clientWidth, s = this.engine.renderer.domElement.clientHeight;
|
|
10684
10684
|
return i.x = e.offsetX / n * 2 - 1, i.y = -(e.offsetY / s) * 2 + 1, t.setFromCamera(i, this.engine.camera), t;
|
|
10685
10685
|
}
|
|
10686
10686
|
isMobileDevice() {
|
|
@@ -10688,7 +10688,7 @@ class ll {
|
|
|
10688
10688
|
}
|
|
10689
10689
|
getTouchPoint(e) {
|
|
10690
10690
|
const t = e.touches[0] || e.changedTouches[0];
|
|
10691
|
-
return t ? new
|
|
10691
|
+
return t ? new W(t.clientX, t.clientY) : null;
|
|
10692
10692
|
}
|
|
10693
10693
|
createMouseEventFromTouch(e) {
|
|
10694
10694
|
const t = e.touches[0] || e.changedTouches[0], i = this.engine.renderer?.domElement;
|
|
@@ -11092,11 +11092,11 @@ class hl {
|
|
|
11092
11092
|
for (let S = 0; S < s.count; S += 3) {
|
|
11093
11093
|
if (h.fromBufferAttribute(s, S), u.fromBufferAttribute(s, S + 1), p.fromBufferAttribute(s, S + 2), a.subVectors(u, h), c.subVectors(p, h), r.crossVectors(a, c), r.lengthSq() < 1e-14 || (r.normalize(), Math.abs(r.dot(o)) < 0.9))
|
|
11094
11094
|
continue;
|
|
11095
|
-
const I = t.distanceToPoint(h), T = t.distanceToPoint(u),
|
|
11096
|
-
if (Math.max(I, T,
|
|
11095
|
+
const I = t.distanceToPoint(h), T = t.distanceToPoint(u), L = t.distanceToPoint(p), k = Math.min(I, T, L);
|
|
11096
|
+
if (Math.max(I, T, L) - k > w)
|
|
11097
11097
|
continue;
|
|
11098
|
-
const
|
|
11099
|
-
Math.abs(
|
|
11098
|
+
const K = (I + T + L) / 3;
|
|
11099
|
+
Math.abs(K) > m || K < 0 || (g.copy(h).addScaledVector(o, -I), f.copy(u).addScaledVector(o, -T), v.copy(p).addScaledVector(o, -L), r.dot(o) <= 0 ? (b.push(g.x, g.y, g.z), b.push(f.x, f.y, f.z), b.push(v.x, v.y, v.z)) : (b.push(g.x, g.y, g.z), b.push(v.x, v.y, v.z), b.push(f.x, f.y, f.z)));
|
|
11100
11100
|
}
|
|
11101
11101
|
if (n.dispose(), b.length < 9)
|
|
11102
11102
|
return null;
|
|
@@ -14259,15 +14259,15 @@ class Ui {
|
|
|
14259
14259
|
if (o.disableClipping === !0)
|
|
14260
14260
|
this.engine.clipping?.disActive?.();
|
|
14261
14261
|
else {
|
|
14262
|
-
const T = o.ViewRange || o.viewRange,
|
|
14263
|
-
|
|
14262
|
+
const T = o.ViewRange || o.viewRange, L = this.createViewRangePlanes(T, g);
|
|
14263
|
+
L ? this.engine.clipping.setSectionPlanesByViewRange(L) : this.engine.clipping.setSectionByView(g, b), !S && this.engine.camera.type !== "OrthographicCamera" && this.engine.cameraModule.switchToOrthographicCamera(), this.engine.cameraModule.setViewFromOriginAndDirection(
|
|
14264
14264
|
m,
|
|
14265
14265
|
b.clone().multiplyScalar(c),
|
|
14266
14266
|
h,
|
|
14267
14267
|
A,
|
|
14268
14268
|
I,
|
|
14269
14269
|
() => {
|
|
14270
|
-
S || (o.focusBox instanceof R && !o.focusBox.isEmpty() ? this.engine.viewCube?.zoomToModel?.(o.focusBox, 0) :
|
|
14270
|
+
S || (o.focusBox instanceof R && !o.focusBox.isEmpty() ? this.engine.viewCube?.zoomToModel?.(o.focusBox, 0) : L && this.zoomToCurrentViewRange(0)), i?.();
|
|
14271
14271
|
}
|
|
14272
14272
|
);
|
|
14273
14273
|
return;
|
|
@@ -15050,12 +15050,12 @@ class oc {
|
|
|
15050
15050
|
selectable: !1,
|
|
15051
15051
|
evented: !1,
|
|
15052
15052
|
objectCaching: !1
|
|
15053
|
-
}),
|
|
15053
|
+
}), L = new Xi([S, T], {
|
|
15054
15054
|
selectable: n,
|
|
15055
15055
|
evented: n,
|
|
15056
15056
|
objectCaching: !1
|
|
15057
15057
|
});
|
|
15058
|
-
return
|
|
15058
|
+
return L.annotationType = "arrow", L;
|
|
15059
15059
|
}
|
|
15060
15060
|
createCloudObject(e, t, i) {
|
|
15061
15061
|
const n = this.buildCloudPath(e, t.cloudRadius);
|
|
@@ -15528,7 +15528,7 @@ class rc {
|
|
|
15528
15528
|
return !e || !this.engine.camera ? Promise.resolve(null) : (e.style.cursor = "crosshair", new Promise((t) => {
|
|
15529
15529
|
const i = (n) => {
|
|
15530
15530
|
n.preventDefault(), n.stopImmediatePropagation(), e.removeEventListener("click", i, !0), e.style.cursor = "";
|
|
15531
|
-
const s = e.getBoundingClientRect(), o = n.clientX - s.left, r = n.clientY - s.top, a = new
|
|
15531
|
+
const s = e.getBoundingClientRect(), o = n.clientX - s.left, r = n.clientY - s.top, a = new W(
|
|
15532
15532
|
o / (e.clientWidth || 1) * 2 - 1,
|
|
15533
15533
|
-(r / (e.clientHeight || 1)) * 2 + 1
|
|
15534
15534
|
), c = new pe();
|
|
@@ -16193,7 +16193,7 @@ class dc {
|
|
|
16193
16193
|
const t = this.engine.renderer?.domElement, i = this.engine.camera;
|
|
16194
16194
|
if (!t || !i)
|
|
16195
16195
|
return null;
|
|
16196
|
-
const n = t.getBoundingClientRect(), s = e.clientX - n.left, o = e.clientY - n.top, r = new
|
|
16196
|
+
const n = t.getBoundingClientRect(), s = e.clientX - n.left, o = e.clientY - n.top, r = new W(s / n.width * 2 - 1, -(o / n.height) * 2 + 1);
|
|
16197
16197
|
this.raycaster.setFromCamera(r, i);
|
|
16198
16198
|
const a = this.raycaster.intersectObjects(this.rootGroup.children, !0);
|
|
16199
16199
|
for (const c of a) {
|
|
@@ -16509,7 +16509,7 @@ function Ss(l) {
|
|
|
16509
16509
|
n.lengthSq() < 1e-8 && (n = new d(0, 1, 0));
|
|
16510
16510
|
const s = new d().crossVectors(n, i).normalize(), o = new d().crossVectors(s, n).normalize(), r = e.map((c) => {
|
|
16511
16511
|
const h = c.clone().sub(t);
|
|
16512
|
-
return new
|
|
16512
|
+
return new W(h.dot(o), h.dot(s));
|
|
16513
16513
|
}), a = new H().makeBasis(o, s, n).setPosition(t);
|
|
16514
16514
|
return { origin: t, normal: n, matrix: a, localPoints: r };
|
|
16515
16515
|
}
|
|
@@ -16548,7 +16548,7 @@ function Mc(l) {
|
|
|
16548
16548
|
}
|
|
16549
16549
|
class vc {
|
|
16550
16550
|
render(e) {
|
|
16551
|
-
const t = e.instance.style.leaderPoint ?? {}, i = t.strokeColor || e.instance.style.color || "#7ffcff", n = t.backgroundColor || e.instance.style.fillColor || i, s = t.borderColor || i, o = t.anchorColor || n, r = t.anchorRingColor || i, a = t.iconBackgroundColor || n, c = t.side ?? "right", h = t.icon ? this.escapeXmlAttribute(t.icon) : "", u = Math.max(t.iconWidth ?? 22, 1), p = Math.max(t.iconHeight ?? 22, 1), g = (t.text ?? "").trim(), f = Math.max(t.fontSize ?? 14, 10), v = t.textColor || e.instance.style.color || "#ffffff", w = t.fontWeight ?? 500, m = Math.max(Math.round((t.height ?? 8) * 12), 48), b = Math.max(Math.round(Math.abs(t.offsetX ?? t.armLength ?? 4) * 18), 56), A = this.getBoardWidth(e, g, f), S = Math.max(Math.round((t.boardHeight ?? 1.8) * 22), f + 18, 34), I = Math.max(Math.round((t.stemWidth ?? e.instance.style.lineWidth ?? 0.12) * 20), 2), T = t.borderWidth ?? 2.5,
|
|
16551
|
+
const t = e.instance.style.leaderPoint ?? {}, i = t.strokeColor || e.instance.style.color || "#7ffcff", n = t.backgroundColor || e.instance.style.fillColor || i, s = t.borderColor || i, o = t.anchorColor || n, r = t.anchorRingColor || i, a = t.iconBackgroundColor || n, c = t.side ?? "right", h = t.icon ? this.escapeXmlAttribute(t.icon) : "", u = Math.max(t.iconWidth ?? 22, 1), p = Math.max(t.iconHeight ?? 22, 1), g = (t.text ?? "").trim(), f = Math.max(t.fontSize ?? 14, 10), v = t.textColor || e.instance.style.color || "#ffffff", w = t.fontWeight ?? 500, m = Math.max(Math.round((t.height ?? 8) * 12), 48), b = Math.max(Math.round(Math.abs(t.offsetX ?? t.armLength ?? 4) * 18), 56), A = this.getBoardWidth(e, g, f), S = Math.max(Math.round((t.boardHeight ?? 1.8) * 22), f + 18, 34), I = Math.max(Math.round((t.stemWidth ?? e.instance.style.lineWidth ?? 0.12) * 20), 2), T = t.borderWidth ?? 2.5, L = t.variant ?? "elbow", k = c === "right" ? 22 + b - 8 : 22 - b - A + 8, N = 8, K = Math.min(22, k) - 16, te = Math.max(22, k + A) + 16, Q = Math.max(te - K, 140), ce = Math.max(m + S + 36, 120), ae = 22 - K, le = k - K, fe = ce - 18, Ae = Math.max(fe - m, 14), x = c === "right" ? le : le + A, y = N + Math.round(S * 0.5), C = L === "vertical" ? [`${ae},${fe}`, `${ae},${Ae}`] : [`${ae},${fe}`, `${ae},${y}`, `${x},${y}`], _ = e.instance.selectable !== !1, D = _ ? "visiblePainted" : "none", P = _ ? "pointer" : "default", F = le + (h || !g ? 38 : 12), G = t.showBoard === !1 ? "" : `
|
|
16552
16552
|
<rect x="${le}" y="${N}" width="${A}" height="${S}" rx="10"
|
|
16553
16553
|
fill="${n}" fill-opacity="${t.backgroundOpacity ?? t.boardOpacity ?? 0.18}"
|
|
16554
16554
|
stroke="${s}" stroke-width="${T}" />
|
|
@@ -16579,7 +16579,7 @@ class vc {
|
|
|
16579
16579
|
stroke-linejoin="round"
|
|
16580
16580
|
/>
|
|
16581
16581
|
${q}
|
|
16582
|
-
${
|
|
16582
|
+
${G}
|
|
16583
16583
|
</g>
|
|
16584
16584
|
</svg>
|
|
16585
16585
|
`.trim();
|
|
@@ -17825,7 +17825,7 @@ class lt {
|
|
|
17825
17825
|
if (t == null || !Number.isFinite(t.x) || !Number.isFinite(t.y))
|
|
17826
17826
|
return null;
|
|
17827
17827
|
const i = this.engine.reactBoundingClientRect;
|
|
17828
|
-
return new
|
|
17828
|
+
return new W(
|
|
17829
17829
|
t.x + (Number.isFinite(i?.left) ? i.left : 0),
|
|
17830
17830
|
t.y + (Number.isFinite(i?.top) ? i.top : 0)
|
|
17831
17831
|
);
|
|
@@ -18360,15 +18360,15 @@ class Xc {
|
|
|
18360
18360
|
this.selectionPointerDown = null;
|
|
18361
18361
|
return;
|
|
18362
18362
|
}
|
|
18363
|
-
this.selectionPointerDown = new
|
|
18363
|
+
this.selectionPointerDown = new W(e.clientX, e.clientY);
|
|
18364
18364
|
}
|
|
18365
18365
|
}
|
|
18366
18366
|
/** 仅把未拖动的点击视为选中/取消选中,避免旋转视图时隐藏操作柄。 */
|
|
18367
18367
|
handlePointerUp(e) {
|
|
18368
18368
|
if (!this.editingEnabled || !this.engine.camera || !this.engine.renderer || !this.selectionPointerDown) return;
|
|
18369
18369
|
const t = this.selectionPointerDown;
|
|
18370
|
-
if (this.selectionPointerDown = null, t.distanceTo(new
|
|
18371
|
-
const i = this.engine.renderer.domElement.getBoundingClientRect(), n = new
|
|
18370
|
+
if (this.selectionPointerDown = null, t.distanceTo(new W(e.clientX, e.clientY)) > 4) return;
|
|
18371
|
+
const i = this.engine.renderer.domElement.getBoundingClientRect(), n = new W((e.clientX - i.left) / i.width * 2 - 1, -((e.clientY - i.top) / i.height) * 2 + 1), s = new pe();
|
|
18372
18372
|
s.setFromCamera(n, this.engine.camera);
|
|
18373
18373
|
const o = s.intersectObjects(Array.from(this.modelList.values(), (a) => a.object), !0)[0];
|
|
18374
18374
|
if (!o) {
|
|
@@ -20405,7 +20405,7 @@ class ah {
|
|
|
20405
20405
|
if (!this.engine.camera || !this.engine.renderer) return null;
|
|
20406
20406
|
const t = this.engine.renderer.domElement.clientWidth, i = this.engine.renderer.domElement.clientHeight;
|
|
20407
20407
|
if (!t || !i) return null;
|
|
20408
|
-
const n = new
|
|
20408
|
+
const n = new W(e.offsetX / t * 2 - 1, -(e.offsetY / i) * 2 + 1), s = new pe();
|
|
20409
20409
|
return s.setFromCamera(n, this.engine.camera), s.intersectObjects(this.pointsGroup.children, !1)[0]?.object ?? null;
|
|
20410
20410
|
}
|
|
20411
20411
|
updatePreview(e) {
|
|
@@ -20869,7 +20869,7 @@ class ph {
|
|
|
20869
20869
|
constructor(e) {
|
|
20870
20870
|
if (window.THREE = Rn, er(), this.options = e, this.container = document.getElementById(e.containerId), !this.container)
|
|
20871
20871
|
throw new Error(`Container ${e.containerId} not found`);
|
|
20872
|
-
if (this.rxQuotaListMapper = new sh(this), this.filterLoaderModel = new lh(this), this.engineModelModule = new Aa(this), this.engineModelModule.init(), this.deviceModule = new Do(this), this.deviceType = this.deviceModule.getDeviceType(), this.cameraModule = new ie(this), this.sceneModule = new _o(this), this.scene = this.sceneModule.scene, this.renderModule = new ko(this), this.renderer = this.renderModule.createRenderer(), this.camera = this.cameraModule.
|
|
20872
|
+
if (this.rxQuotaListMapper = new sh(this), this.filterLoaderModel = new lh(this), this.engineModelModule = new Aa(this), this.engineModelModule.init(), this.deviceModule = new Do(this), this.deviceType = this.deviceModule.getDeviceType(), this.cameraModule = new ie(this), this.sceneModule = new _o(this), this.scene = this.sceneModule.scene, this.renderModule = new ko(this), this.renderer = this.renderModule.createRenderer(), this.camera = this.cameraModule.perspectiveCamera, this.scene.camera = this.camera, this.renderer) {
|
|
20873
20873
|
const o = this.renderer;
|
|
20874
20874
|
o.interactionCullingEnabled = !0, o.interactionActive = !1, o.interactionRenderScene = this.scene, o.interactionFrameBudgetMs = this.options.interactionFrameBudgetMs ?? 6, o.interactionSkipShadows = this.options.interactionSkipShadows ?? !0;
|
|
20875
20875
|
}
|
|
@@ -21225,7 +21225,6 @@ class ph {
|
|
|
21225
21225
|
}
|
|
21226
21226
|
}
|
|
21227
21227
|
export {
|
|
21228
|
-
|
|
21229
|
-
nh as M
|
|
21230
|
-
ph as a
|
|
21228
|
+
ph as E,
|
|
21229
|
+
nh as M
|
|
21231
21230
|
};
|