build-dxf 0.0.57 → 0.0.59

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 (39) hide show
  1. package/package.json +4 -2
  2. package/src/DomEventRegister.js +3117 -1926
  3. package/src/bin/Main.js +269 -0
  4. package/src/bin/mini_cycles.js +15 -0
  5. package/src/bin/mini_cycles.wasm +0 -0
  6. package/src/bin/mini_cycles.wasm.map +1 -0
  7. package/src/bin/wasm_mini_cycles.js +296 -0
  8. package/src/build.d.ts +33 -0
  9. package/src/build.js +12332 -5002
  10. package/src/constants.d.ts +8 -0
  11. package/src/index.css +777 -1
  12. package/src/index.js +12 -9
  13. package/src/index2.js +516 -327
  14. package/src/index3.js +2755 -1739
  15. package/src/pages/Test.vue.d.ts +2 -0
  16. package/src/pages/buildJson.vue.d.ts +4 -0
  17. package/src/pages/modelCarrier/index.vue.d.ts +2 -0
  18. package/src/utils/Debouncing.d.ts +7 -0
  19. package/src/utils/DxfSystem/DxfSystem.d.ts +4 -5
  20. package/src/utils/DxfSystem/components/CorrectionDxf.d.ts +126 -0
  21. package/src/utils/DxfSystem/components/Dxf.d.ts +2 -3
  22. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/Default.d.ts +16 -6
  23. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectLine.d.ts +2 -6
  24. package/src/utils/DxfSystem/plugin/Editor/components/RenderManager.d.ts +2 -2
  25. package/src/utils/DxfSystem/plugin/ModelDataPlugin/components/WhiteModel.d.ts +1 -1
  26. package/src/utils/DxfSystem/type.d.ts +4 -1
  27. package/src/utils/DxfSystem/utils/AxisAlignCorr.d.ts +2 -2
  28. package/src/utils/DxfSystem/utils/CAD.d.ts +149 -5
  29. package/src/utils/DxfSystem/utils/LineGroupType.d.ts +11 -0
  30. package/src/utils/DxfSystem/utils/getWinDrawData.d.ts +18 -0
  31. package/src/utils/LineSegment.d.ts +1 -0
  32. package/src/utils/LoadModel.d.ts +7 -0
  33. package/src/utils/Map.d.ts +3 -0
  34. package/src/utils/Point.d.ts +3 -2
  35. package/src/utils/Polygon.d.ts +17 -1
  36. package/src/utils/Rectangle.d.ts +1 -0
  37. package/src/utils/fff.d.ts +1 -0
  38. package/src/utils/modelScenario/scenario.d.ts +64 -0
  39. package/src/utils/DxfSystem/components/AngleCorrectionDxf.d.ts +0 -13
package/src/index2.js CHANGED
@@ -1,113 +1,159 @@
1
- import { C as P, L as U, P as $, V as W, D as Z, M as J, a as H, W as q, S as A } from "./build.js";
2
- import * as d from "three";
3
- import { Group as Q } from "three";
1
+ import { C as Component, L as Lines, P as Point, V as Variable, D as DxfSystem, M as ModelDataPlugin, a as DetailsPoint, W as WhiteModel, S as SelectLocalFile } from "./build.js";
2
+ import * as THREE from "three";
3
+ import { Group } from "three";
4
4
  import "clipper-lib";
5
5
  import "dxf-writer";
6
- import { E as w, R as E, D as O, a as S, b as G } from "./DomEventRegister.js";
7
- import { defineComponent as K, createElementBlock as R, openBlock as k, createElementVNode as y, toDisplayString as X, createVNode as x, unref as m, withCtx as D, createTextVNode as M, createApp as Y, ref as L, watch as C, onMounted as ee, onUnmounted as te, createCommentVNode as ie, createStaticVNode as ne } from "vue";
8
- function oe(p, e, i, t = "#fff", n = 2) {
9
- const o = document.createElement("canvas"), a = o.getContext("2d");
10
- return o.width = e, o.height = i, a?.clearRect(0, 0, e, i), a?.save(), a.strokeStyle = t, a.lineWidth = n, a?.beginPath(), p.forEach((s, c) => {
11
- c === 0 ? a?.moveTo(s[0], s[1]) : a?.lineTo(s[0], s[1]);
12
- }), a?.stroke(), a?.restore(), o.toDataURL("image/png", 1);
6
+ import { E as ElButton, R as Renderer, D as DomEventRegister, a as DomContainer, b as ElCheckbox } from "./DomEventRegister.js";
7
+ import { defineComponent, createElementBlock, openBlock, createElementVNode, toDisplayString, createVNode, unref, withCtx, createTextVNode, createApp, ref, watch, onMounted, onUnmounted, createCommentVNode, createStaticVNode } from "vue";
8
+ function drawLinePathToPng(points, width, height, color = "#fff", lineWidth = 2) {
9
+ const can = document.createElement("canvas"), ctx = can.getContext("2d");
10
+ can.width = width;
11
+ can.height = height;
12
+ ctx?.clearRect(0, 0, width, height);
13
+ ctx?.save();
14
+ ctx.strokeStyle = color;
15
+ ctx.lineWidth = lineWidth;
16
+ ctx?.beginPath();
17
+ points.forEach((p, i) => {
18
+ if (i === 0) ctx?.moveTo(p[0], p[1]);
19
+ else ctx?.lineTo(p[0], p[1]);
20
+ });
21
+ ctx?.stroke();
22
+ ctx?.restore();
23
+ return can.toDataURL("image/png", 1);
13
24
  }
14
- const se = { class: "bg-white rounded-lg p-[10px] w-[200px] text-[14px]" }, ae = { class: "flex" }, re = { class: "flee-1 text-[14px] leading-[1.4em]" }, le = { class: "mt-[10px] ml-[1.4em]" }, de = /* @__PURE__ */ K({
25
+ const _hoisted_1$1 = { class: "bg-white rounded-lg p-[10px] w-[200px] text-[14px]" };
26
+ const _hoisted_2$1 = { class: "flex" };
27
+ const _hoisted_3$1 = { class: "flee-1 text-[14px] leading-[1.4em]" };
28
+ const _hoisted_4$1 = { class: "mt-[10px] ml-[1.4em]" };
29
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
15
30
  __name: "Card",
16
31
  props: {
17
32
  message: {}
18
33
  },
19
34
  emits: ["look"],
20
- setup(p, { emit: e }) {
21
- const i = e;
22
- return (t, n) => (k(), R("div", se, [
23
- y("div", ae, [
24
- n[1] || (n[1] = y("div", { class: "size-[1.4em] flex justify-center items-center" }, [
25
- y("div", { class: "size-[6px] bg-[var(--el-color-primary)] rounded-[50px]" })
26
- ], -1)),
27
- y("p", re, X(t.message), 1)
28
- ]),
29
- y("div", le, [
30
- x(m(w), {
31
- onClick: n[0] || (n[0] = () => i("look")),
32
- type: "primary",
33
- size: "small"
34
- }, {
35
- default: D(() => n[2] || (n[2] = [
36
- M(" 查看 ", -1)
37
- ])),
38
- _: 1,
39
- __: [2]
40
- })
41
- ])
42
- ]));
35
+ setup(__props, { emit: __emit }) {
36
+ const emits = __emit;
37
+ return (_ctx, _cache) => {
38
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
39
+ createElementVNode("div", _hoisted_2$1, [
40
+ _cache[1] || (_cache[1] = createElementVNode("div", { class: "size-[1.4em] flex justify-center items-center" }, [
41
+ createElementVNode("div", { class: "size-[6px] bg-[var(--el-color-primary)] rounded-[50px]" })
42
+ ], -1)),
43
+ createElementVNode("p", _hoisted_3$1, toDisplayString(_ctx.message), 1)
44
+ ]),
45
+ createElementVNode("div", _hoisted_4$1, [
46
+ createVNode(unref(ElButton), {
47
+ onClick: _cache[0] || (_cache[0] = () => emits("look")),
48
+ type: "primary",
49
+ size: "small"
50
+ }, {
51
+ default: withCtx(() => _cache[2] || (_cache[2] = [
52
+ createTextVNode(" 查看 ", -1)
53
+ ])),
54
+ _: 1,
55
+ __: [2]
56
+ })
57
+ ])
58
+ ]);
59
+ };
43
60
  }
44
- }), N = "radial-gradient(circle at center, rgba(0,0,0, 1), transparent, rgba(0,0,0, 1))", _ = "#409eff", pe = `radial-gradient(circle at center, ${_}, transparent, ${_})`;
45
- class I extends P {
61
+ });
62
+ const DES_POINT_DEFAULT_COLOR = "radial-gradient(circle at center, rgba(0,0,0, 1), transparent, rgba(0,0,0, 1))", DES_POINT_LINE_COLOR = "#409eff", DES_POINT_ACTIVE_COLOR = `radial-gradient(circle at center, ${DES_POINT_LINE_COLOR}, transparent, ${DES_POINT_LINE_COLOR})`;
63
+ class DetailsPointRender extends Component {
46
64
  static name = "DetailsPointRender";
47
65
  Dxf = null;
48
66
  Renderer = null;
49
67
  WhiteModel = null;
50
68
  Variable = null;
51
- desPointGroup = new d.Group();
52
- rayLineGroup = new d.Group();
69
+ desPointGroup = new THREE.Group();
70
+ rayLineGroup = new THREE.Group();
53
71
  data = [];
54
- onAddFromParent(e) {
55
- this.Dxf = e.findComponentByName("Dxf"), this.WhiteModel = e.findComponentByName("WhiteModel"), this.Renderer = e.findComponentByName("Renderer"), this.Variable = e.findComponentByName("Variable");
56
- const i = e.findComponentByName("DetailsPoint");
57
- this.Renderer?.container.add(this.desPointGroup), this.rayLineGroup.visible = !1, this.Variable?.addEventListener("whiteModelVisible", (n) => {
58
- this.desPointGroup.visible = n.value;
59
- }), this.Dxf?.addEventListener("setDta", () => this.updateModel()), i?.addEventListener("handleSuccess", () => this.updateModel()), this.Variable?.addEventListener("isLook", (n) => {
60
- n.value || this.cancelLook();
61
- }), this.Variable?.addEventListener("currentWheel", (n) => {
72
+ onAddFromParent(parent) {
73
+ this.Dxf = parent.findComponentByName("Dxf");
74
+ this.WhiteModel = parent.findComponentByName("WhiteModel");
75
+ this.Renderer = parent.findComponentByName("Renderer");
76
+ this.Variable = parent.findComponentByName("Variable");
77
+ const desPoint = parent.findComponentByName("DetailsPoint");
78
+ this.Renderer?.container.add(this.desPointGroup);
79
+ this.rayLineGroup.visible = false;
80
+ this.Variable?.addEventListener("whiteModelVisible", (e) => {
81
+ this.desPointGroup.visible = e.value;
82
+ });
83
+ this.Dxf?.addEventListener("setDta", () => this.updateModel());
84
+ desPoint?.addEventListener("handleSuccess", () => this.updateModel());
85
+ this.Variable?.addEventListener("isLook", (e) => {
86
+ if (!e.value) this.cancelLook();
87
+ });
88
+ this.Variable?.addEventListener("currentWheel", (e) => {
62
89
  if (this.Variable?.isLook) {
63
- const o = n.value > 0 ? -0.5 : 0.5, a = this.Renderer?.camera;
64
- a.fov += o, a.updateProjectionMatrix();
90
+ const v = e.value > 0 ? -0.5 : 0.5;
91
+ const camera = this.Renderer?.camera;
92
+ camera.fov += v;
93
+ camera.updateProjectionMatrix();
94
+ }
95
+ });
96
+ let rotationYSpeed = 0;
97
+ this.Variable?.addEventListener("pointerMove", (e) => {
98
+ rotationYSpeed = e.value.x * 2e-3;
99
+ });
100
+ this.addEventListener("update", () => {
101
+ const variable = this.Variable;
102
+ const renderer = this.Renderer;
103
+ if (variable.isLook) {
104
+ renderer.camera.rotation.y += rotationYSpeed;
105
+ rotationYSpeed *= 0.8;
106
+ if (Math.abs(rotationYSpeed) < 1e-5) rotationYSpeed = 0;
65
107
  }
66
108
  });
67
- let t = 0;
68
- this.Variable?.addEventListener("pointerMove", (n) => {
69
- t = n.value.x * 2e-3;
70
- }), this.addEventListener("update", () => {
71
- const n = this.Variable, o = this.Renderer;
72
- n.isLook && (o.camera.rotation.y += t, t *= 0.8, Math.abs(t) < 1e-5 && (t = 0));
73
- }), this.Variable?.addEventListener("currentKeyUp", (n) => {
74
- const o = this.Variable;
75
- o.isLook && n.value === "escape" && o.set("isLook", !1), n.value === "r" && (this.rayLineGroup.visible = !this.rayLineGroup.visible);
109
+ this.Variable?.addEventListener("currentKeyUp", (e) => {
110
+ const variable = this.Variable;
111
+ if (variable.isLook) {
112
+ if (e.value === "escape") variable.set("isLook", false);
113
+ }
114
+ if (e.value === "r") this.rayLineGroup.visible = !this.rayLineGroup.visible;
76
115
  });
77
116
  }
78
117
  /**
79
118
  * 更新模型
80
119
  */
81
120
  updateModel() {
82
- this.createDesPoint(), this.createRayline();
121
+ this.createDesPoint();
122
+ this.createRayline();
83
123
  }
84
124
  createDesPoint() {
85
- const e = this.parent?.findComponentByName("DetailsPoint");
86
- this.desPointGroup.clear(), e.desPoints.forEach(({ message: i, position: t, intersection: n }) => {
87
- const o = document.createElement("div");
88
- Object.assign(o.style, {
125
+ const desPointHandle = this.parent?.findComponentByName("DetailsPoint");
126
+ this.desPointGroup.clear();
127
+ desPointHandle.desPoints.forEach(({ message, position, intersection }) => {
128
+ const div = document.createElement("div");
129
+ Object.assign(div.style, {
89
130
  width: "15px",
90
131
  height: "15px",
91
- background: N,
132
+ background: DES_POINT_DEFAULT_COLOR,
92
133
  borderRadius: "40px",
93
134
  cursor: "pointer"
94
135
  });
95
- const a = new E.CSS2DObject(o);
96
- a.position.copy(n), this.desPointGroup.add(a), o.addEventListener("mousedown", (s) => {
97
- s.stopPropagation(), this.showDesBox(n, o, { message: i, position: t });
136
+ const css2DObject = new Renderer.CSS2DObject(div);
137
+ css2DObject.position.copy(intersection);
138
+ this.desPointGroup.add(css2DObject);
139
+ div.addEventListener("mousedown", (e) => {
140
+ e.stopPropagation();
141
+ this.showDesBox(intersection, div, { message, position });
98
142
  });
99
143
  });
100
144
  }
101
145
  createRayline() {
102
146
  this.desPointGroup.add(this.rayLineGroup);
103
- const e = this.parent?.findComponentByName("DetailsPoint");
104
- this.rayLineGroup.clear(), e.raylines.forEach(([i, t], n) => {
105
- if (n % 2 === 0) {
106
- const a = new d.Mesh(new d.SphereGeometry(0.05), new d.MeshBasicMaterial({ color: 65280 }));
107
- a.position.copy(i), this.rayLineGroup.add(a);
147
+ const desPointHandle = this.parent?.findComponentByName("DetailsPoint");
148
+ this.rayLineGroup.clear();
149
+ desPointHandle.raylines.forEach(([p1, p2], index2) => {
150
+ if (index2 % 2 === 0) {
151
+ const box = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 65280 }));
152
+ box.position.copy(p1);
153
+ this.rayLineGroup.add(box);
108
154
  }
109
- const o = new U([i, t], n % 2 === 0 ? 16711680 : 65280);
110
- this.rayLineGroup.add(o);
155
+ const lines = new Lines([p1, p2], index2 % 2 === 0 ? 16711680 : 65280);
156
+ this.rayLineGroup.add(lines);
111
157
  });
112
158
  }
113
159
  _desBoxInfo;
@@ -118,140 +164,226 @@ class I extends P {
118
164
  * @param param2
119
165
  * @returns
120
166
  */
121
- showDesBox(e, i, { message: t, position: n }) {
122
- const o = this.Variable, a = this.Renderer;
123
- if (o.isLook) return;
167
+ showDesBox(point, div, { message, position }) {
168
+ const variable = this.Variable, renderer = this.Renderer;
169
+ if (variable.isLook) return;
124
170
  this.hideDesBox();
125
- const s = document.createElement("div");
126
- Object.assign(s.style, {
171
+ const content = document.createElement("div");
172
+ Object.assign(content.style, {
127
173
  padding: "0px",
128
174
  fontSize: "14px",
129
175
  pointerEvents: "none"
130
176
  });
131
- const c = new E.CSS2DObject(s), u = 80, b = 40, h = document.createElement("img");
132
- h.style.pointerEvents = "none", h.style.width = u + "px", h.style.height = b + "px", h.style.marginTop = "1px", h.src = oe([[0, b - 1], [u * 0.2, b - 1], [u * 0.6, 2], [u, 2]], u, b, _, 2), s.appendChild(h), i.style.background = pe, c.position.copy(e), this.desPointGroup.add(c), s.style.opacity = "0", setTimeout(() => {
133
- const { width: v, height: V } = s.getBoundingClientRect();
134
- s.style.marginLeft = v * 0.5 + "px", s.style.marginTop = -V * 0.5 + "px", s.style.opacity = "1";
135
- }, 20), this._desBoxInfo = {
136
- targetEl: i,
137
- css2DObject: c
177
+ const contentCss2DObject = new Renderer.CSS2DObject(content);
178
+ const width = 80, height = 40;
179
+ const img = document.createElement("img");
180
+ img.style.pointerEvents = "none";
181
+ img.style.width = width + "px";
182
+ img.style.height = height + "px";
183
+ img.style.marginTop = "1px";
184
+ img.src = drawLinePathToPng([[0, height - 1], [width * 0.2, height - 1], [width * 0.6, 2], [width, 2]], width, height, DES_POINT_LINE_COLOR, 2);
185
+ content.appendChild(img);
186
+ div.style.background = DES_POINT_ACTIVE_COLOR;
187
+ contentCss2DObject.position.copy(point);
188
+ this.desPointGroup.add(contentCss2DObject);
189
+ content.style.opacity = "0";
190
+ setTimeout(() => {
191
+ const { width: width2, height: height2 } = content.getBoundingClientRect();
192
+ content.style.marginLeft = width2 * 0.5 + "px";
193
+ content.style.marginTop = -height2 * 0.5 + "px";
194
+ content.style.opacity = "1";
195
+ }, 20);
196
+ this._desBoxInfo = {
197
+ targetEl: div,
198
+ css2DObject: contentCss2DObject
138
199
  };
139
- const f = document.createElement("div");
140
- f.style.pointerEvents = "all", f.style.position = "absolute", f.style.left = "100%", f.style.top = "0px", f.style.margin = "-15px -20px", s.appendChild(f), Y(de, {
141
- message: t,
200
+ const main = document.createElement("div");
201
+ main.style.pointerEvents = "all";
202
+ main.style.position = "absolute";
203
+ main.style.left = "100%";
204
+ main.style.top = "0px";
205
+ main.style.margin = "-15px -20px";
206
+ content.appendChild(main);
207
+ createApp(_sfc_main$1, {
208
+ message,
142
209
  onLook: () => {
143
- this.onLook(e, n);
210
+ this.onLook(point, position);
144
211
  }
145
- }).mount(f), a.orbitControls.enabled = !1;
146
- const B = () => {
147
- o.isLook || (a.orbitControls.enabled = !0, this.hideDesBox());
212
+ }).mount(main);
213
+ renderer.orbitControls.enabled = false;
214
+ const cancelDesBox = () => {
215
+ if (variable.isLook) return;
216
+ renderer.orbitControls.enabled = true;
217
+ this.hideDesBox();
148
218
  };
149
- f.addEventListener("mousedown", (v) => v.stopPropagation()), document.addEventListener("mousedown", B);
219
+ main.addEventListener("mousedown", (e) => e.stopPropagation());
220
+ document.addEventListener("mousedown", cancelDesBox);
150
221
  }
151
222
  /**
152
223
  * 隐藏详情盒子
153
224
  */
154
225
  hideDesBox() {
155
- this._desBoxInfo && (this._desBoxInfo.targetEl.style.background = N, this._desBoxInfo.css2DObject.removeFromParent(), this._desBoxInfo = null);
226
+ if (this._desBoxInfo) {
227
+ this._desBoxInfo.targetEl.style.background = DES_POINT_DEFAULT_COLOR;
228
+ this._desBoxInfo.css2DObject.removeFromParent();
229
+ this._desBoxInfo = null;
230
+ }
156
231
  }
157
- orbitControlsTarget = new d.Vector3();
232
+ orbitControlsTarget = new THREE.Vector3();
158
233
  fov = 0;
159
234
  /**
160
235
  * 查看详情点
161
236
  * @param point
162
237
  * @param position
163
238
  */
164
- onLook(e, i) {
165
- const t = this.Variable, n = this.Renderer;
166
- t.set("isLook", !0), this.orbitControlsTarget.copy(n.orbitControls.target), n.orbitControls?.target.copy(e), this.fov = n.camera.fov, this.hideDesBox(), n.cameraTo(i, e), n.html2DRenderer?.domElement.focus();
239
+ onLook(point, position) {
240
+ const variable = this.Variable, renderer = this.Renderer;
241
+ variable.set("isLook", true);
242
+ this.orbitControlsTarget.copy(renderer.orbitControls.target);
243
+ renderer.orbitControls?.target.copy(point);
244
+ this.fov = renderer.camera.fov;
245
+ this.hideDesBox();
246
+ renderer.cameraTo(position, point);
247
+ renderer.html2DRenderer?.domElement.focus();
167
248
  }
168
249
  /**
169
250
  * 取消查看详情点
170
251
  */
171
252
  cancelLook() {
172
- const e = this.Renderer;
173
- e.cameraBack(), e.orbitControls.enabled = !0, e.orbitControls?.target.copy(this.orbitControlsTarget), e.camera.fov = this.fov, e.camera.updateProjectionMatrix();
253
+ const renderer = this.Renderer;
254
+ renderer.cameraBack();
255
+ renderer.orbitControls.enabled = true;
256
+ renderer.orbitControls?.target.copy(this.orbitControlsTarget);
257
+ renderer.camera.fov = this.fov;
258
+ renderer.camera.updateProjectionMatrix();
174
259
  }
175
260
  }
176
- class j extends P {
261
+ class OriginalLineRender extends Component {
177
262
  static name = "OriginalLineRender";
178
263
  Dxf = null;
179
264
  Renderer = null;
180
- originalLineMode = new d.LineSegments();
181
- appendLineMode = new d.LineSegments();
182
- textGroup = new d.Group();
183
- pointGroup = new d.Group();
184
- distanceGroup = new d.Group();
185
- onAddFromParent(e) {
186
- this.Dxf = e.findComponentByName("Dxf"), this.Renderer = e.findComponentByName("Renderer");
187
- const i = e.findComponentByName("Variable");
188
- this.Renderer?.container.add(this.originalLineMode), this.Renderer?.container.add(this.appendLineMode), this.Renderer?.container.add(this.textGroup), this.Renderer?.container.add(this.pointGroup), this.Renderer?.container.add(this.distanceGroup), this.appendLineMode.visible = !1, this.textGroup.visible = !1, this.pointGroup.visible = !1, this.distanceGroup.visible = !1, this.originalLineMode.material = new d.LineBasicMaterial({
265
+ originalLineMode = new THREE.LineSegments();
266
+ appendLineMode = new THREE.LineSegments();
267
+ textGroup = new THREE.Group();
268
+ pointGroup = new THREE.Group();
269
+ distanceGroup = new THREE.Group();
270
+ onAddFromParent(parent) {
271
+ this.Dxf = parent.findComponentByName("Dxf");
272
+ this.Renderer = parent.findComponentByName("Renderer");
273
+ const variable = parent.findComponentByName("Variable");
274
+ this.Renderer?.container.add(this.originalLineMode);
275
+ this.Renderer?.container.add(this.appendLineMode);
276
+ this.Renderer?.container.add(this.textGroup);
277
+ this.Renderer?.container.add(this.pointGroup);
278
+ this.Renderer?.container.add(this.distanceGroup);
279
+ this.appendLineMode.visible = false;
280
+ this.textGroup.visible = false;
281
+ this.pointGroup.visible = false;
282
+ this.distanceGroup.visible = false;
283
+ this.originalLineMode.material = new THREE.LineBasicMaterial({
189
284
  color: 5745151
190
- }), this.Dxf?.addEventListener("setDta", (t) => {
191
- this.pointGroup.clear(), this.updateMode(t.originalData);
192
- const n = this.Dxf, o = n.originalBox.center;
193
- this.Renderer?.orbitControls?.target.set(o.x, o.y, 0);
194
- const s = e.findComponentByName("LineAnalysis").appendLineSegmentList.flatMap((c) => c.points.flatMap((u) => [u.x, u.y, n.originalZAverage]));
195
- this.appendLineMode.geometry = new d.BufferGeometry().setAttribute("position", new d.BufferAttribute(new Float32Array(s), 3, !0)), this.appendLineMode.material = new d.LineBasicMaterial({ color: 16711935 });
196
- }), i?.addEventListener("originalLineVisible", (t) => {
197
- this.originalLineMode.visible = t.value;
198
- }), i?.addEventListener("currentKeyUp", (t) => {
199
- t.value === "q" ? i.set("originalLineVisible", !i.originalLineVisible) : t.value === "a" ? this.appendLineMode.visible = !this.appendLineMode.visible : t.value === "t" ? this.textGroup.visible = !this.textGroup.visible : t.value === "p" ? this.pointGroup.visible = !this.pointGroup.visible : t.value === "l" && (this.distanceGroup.visible = !this.distanceGroup.visible);
285
+ });
286
+ this.Dxf?.addEventListener("setDta", (e) => {
287
+ this.pointGroup.clear();
288
+ this.updateMode(e.originalData);
289
+ const dxf = this.Dxf;
290
+ const center = dxf.originalBox.center;
291
+ this.Renderer?.orbitControls?.target.set(center.x, center.y, 0);
292
+ const lineAnalysis = parent.findComponentByName("LineAnalysis");
293
+ const array = lineAnalysis.appendLineSegmentList.flatMap((line) => line.points.flatMap((p) => [p.x, p.y, dxf.originalZAverage]));
294
+ this.appendLineMode.geometry = new THREE.BufferGeometry().setAttribute("position", new THREE.BufferAttribute(new Float32Array(array), 3, true));
295
+ this.appendLineMode.material = new THREE.LineBasicMaterial({ color: 16711935 });
296
+ });
297
+ variable?.addEventListener("originalLineVisible", (e) => {
298
+ this.originalLineMode.visible = e.value;
299
+ });
300
+ variable?.addEventListener("currentKeyUp", (e) => {
301
+ if (e.value === "q") variable.set("originalLineVisible", !variable.originalLineVisible);
302
+ else if (e.value === "a") this.appendLineMode.visible = !this.appendLineMode.visible;
303
+ else if (e.value === "t") this.textGroup.visible = !this.textGroup.visible;
304
+ else if (e.value === "p") this.pointGroup.visible = !this.pointGroup.visible;
305
+ else if (e.value === "l") this.distanceGroup.visible = !this.distanceGroup.visible;
200
306
  });
201
307
  }
202
- updateMode(e) {
203
- const i = this.Dxf, t = this.Renderer;
204
- this.textGroup.clear(), this.distanceGroup.clear();
205
- const n = new Float32Array(e.flatMap(({ start: o, end: a }, s) => {
206
- const c = o.x + (a.x - o.x) * 0.5, u = o.y + (a.y - o.y) * 0.5;
207
- return t.createText(s, new d.Vector3(c, u, i.originalZAverage), { fontSize: "10px", color: "#ffff00" }, this.textGroup), t.createText(
208
- Number($.prototype.distance.call(o, a).toFixed(2)),
209
- new d.Vector3(c, u, i.originalZAverage),
308
+ updateMode(data) {
309
+ const dxf = this.Dxf, renderer = this.Renderer;
310
+ this.textGroup.clear();
311
+ this.distanceGroup.clear();
312
+ const originalArray = new Float32Array(data.flatMap(({ start, end }, i) => {
313
+ const x = start.x + (end.x - start.x) * 0.5;
314
+ const y = start.y + (end.y - start.y) * 0.5;
315
+ renderer.createText(i, new THREE.Vector3(x, y, dxf.originalZAverage), { fontSize: "10px", color: "#ffff00" }, this.textGroup);
316
+ renderer.createText(
317
+ Number(Point.prototype.distance.call(start, end).toFixed(2)),
318
+ new THREE.Vector3(x, y, dxf.originalZAverage),
210
319
  { fontSize: "10px", color: "#00ff00" },
211
320
  this.distanceGroup
212
- ), t.createPointMesh(new d.Vector3(o.x, o.y, i.originalZAverage), 0.04, {
321
+ );
322
+ renderer.createPointMesh(new THREE.Vector3(start.x, start.y, dxf.originalZAverage), 0.04, {
213
323
  color: 16777215,
214
- transparent: !0,
324
+ transparent: true,
215
325
  opacity: 0.5
216
- }, this.pointGroup), t.createPointMesh(new d.Vector3(a.x, a.y, i.originalZAverage), 0.02, {
326
+ }, this.pointGroup);
327
+ renderer.createPointMesh(new THREE.Vector3(end.x, end.y, dxf.originalZAverage), 0.02, {
217
328
  color: 16711680
218
- }, this.pointGroup), [
219
- o.x,
220
- o.y,
221
- i.originalZAverage,
222
- a.x,
223
- a.y,
224
- i.originalZAverage
329
+ }, this.pointGroup);
330
+ return [
331
+ start.x,
332
+ start.y,
333
+ dxf.originalZAverage,
334
+ end.x,
335
+ end.y,
336
+ dxf.originalZAverage
225
337
  ];
226
338
  }));
227
- this.originalLineMode.geometry = new d.BufferGeometry().setAttribute("position", new d.BufferAttribute(n, 3, !0));
339
+ this.originalLineMode.geometry = new THREE.BufferGeometry().setAttribute("position", new THREE.BufferAttribute(originalArray, 3, true));
228
340
  }
229
341
  }
230
- class z extends P {
342
+ class ModelDataRender extends Component {
231
343
  static name = "ModelDataRender";
232
- onAddFromParent(e) {
233
- this.dxf(e), this.whiteModel(e);
344
+ onAddFromParent(parent) {
345
+ this.dxf(parent);
346
+ this.whiteModel(parent);
234
347
  }
235
- dxf(e) {
236
- const i = e.findComponentByName("Renderer"), t = e.findComponentByName("Variable"), n = e.findComponentByName("DxfLineModel"), o = e.findComponentByName("Dxf");
237
- i.container.add(n.dxfModelGroup), t.addEventListener("dxfVisible", (s) => {
238
- n.dxfModelGroup.visible = s.value;
348
+ dxf(parent) {
349
+ const renderer = parent.findComponentByName("Renderer");
350
+ const variable = parent.findComponentByName("Variable");
351
+ const dxfLineModel = parent.findComponentByName("DxfLineModel");
352
+ const dxf = parent.findComponentByName("Dxf");
353
+ renderer.container.add(dxfLineModel.dxfModelGroup);
354
+ variable.addEventListener("dxfVisible", (e) => {
355
+ dxfLineModel.dxfModelGroup.visible = e.value;
239
356
  });
240
- let a = new Q();
241
- n.dxfModelGroup.add(a), t?.addEventListener("currentKeyUp", (s) => {
242
- s.value === "w" && t.set("dxfVisible", !t.dxfVisible), s.value === "b" && (a.visible ? a.visible = !1 : (a.visible = !0, a.clear(), o.wallsGroup.forEach((c, u) => {
243
- c.forEach((b, h) => {
244
- i.createText(`${u}-${h}`, b, { color: "#ff00ff", fontSize: "10px" }, a).position.z = o.originalZAverage * 0.99;
245
- });
246
- })));
357
+ let group = new Group();
358
+ dxfLineModel.dxfModelGroup.add(group);
359
+ variable?.addEventListener("currentKeyUp", (e) => {
360
+ if (e.value === "w") variable.set("dxfVisible", !variable.dxfVisible);
361
+ if (e.value === "b") {
362
+ if (group.visible) group.visible = false;
363
+ else {
364
+ group.visible = true;
365
+ group.clear();
366
+ dxf.wallsGroup.forEach((path, j) => {
367
+ path.forEach((p, i) => {
368
+ renderer.createText(`${j}-${i}`, p, { color: "#ff00ff", fontSize: "10px" }, group).position.z = dxf.originalZAverage * 0.99;
369
+ });
370
+ });
371
+ }
372
+ }
247
373
  });
248
374
  }
249
- whiteModel(e) {
250
- const i = e.findComponentByName("Renderer"), t = e.findComponentByName("Variable"), n = e.findComponentByName("WhiteModel");
251
- i.container.add(n.whiteModelGroup), i.container.add(n.originalWhiteMode), n.originalWhiteMode.visible = !1, t?.addEventListener("whiteModelVisible", (o) => n.whiteModelGroup.visible = o.value), t?.addEventListener("currentKeyUp", (o) => o.value === "e" && t.set("whiteModelVisible", !t.whiteModelVisible));
375
+ whiteModel(parent) {
376
+ const renderer = parent.findComponentByName("Renderer");
377
+ const variable = parent.findComponentByName("Variable");
378
+ const whiteModel = parent.findComponentByName("WhiteModel");
379
+ renderer.container.add(whiteModel.whiteModelGroup);
380
+ renderer.container.add(whiteModel.originalWhiteMode);
381
+ whiteModel.originalWhiteMode.visible = false;
382
+ variable?.addEventListener("whiteModelVisible", (e) => whiteModel.whiteModelGroup.visible = e.value);
383
+ variable?.addEventListener("currentKeyUp", (e) => e.value === "e" && variable.set("whiteModelVisible", !variable.whiteModelVisible));
252
384
  }
253
385
  }
254
- class F extends P {
386
+ class EventInput extends Component {
255
387
  static name = "EventInput";
256
388
  keyList = /* @__PURE__ */ new Set();
257
389
  mouseList = /* @__PURE__ */ new Set();
@@ -264,32 +396,50 @@ class F extends P {
264
396
  *
265
397
  * @param parent
266
398
  */
267
- onAddFromParent(e) {
268
- const i = e.findComponentByType(W);
269
- i.addEventListener("currentMouseDown", (t) => {
270
- this.mouseList.has(t.value) || (this.mouseList.add(t.value), this.dispatchEvent({ type: "codeChange", code: t.value, mode: "down" }));
271
- }), i.addEventListener("currentMouseUp", (t) => {
272
- this.mouseList.delete(t.value), this.dispatchEvent({ type: "codeChange", code: t.value, mode: "up" });
273
- }), i.addEventListener("currentKeyDown", (t) => {
274
- this.keyList.has(t.value) || (this.keyList.add(t.value), this.dispatchEvent({ type: "codeChange", code: t.value, mode: "down" }));
275
- }), i.addEventListener("currentKeyUp", (t) => {
276
- this.keyList.delete(t.value), this.dispatchEvent({ type: "codeChange", code: t.value, mode: "up" });
277
- }), i.addEventListener("focus", () => {
278
- this.keyList.clear(), this.mouseList.clear();
279
- }), this.addEventListener("codeChange", this._computedkeyCombination.bind(this)), this.addKeyCombination("save", ["control", "s"]), this.addCancelDefaultBehavior((t) => t.isOnlyKeyDowns(["control", "s"]) || t.isOnlyKeyDown("alt"));
399
+ onAddFromParent(parent) {
400
+ const variable = parent.findComponentByType(Variable);
401
+ variable.addEventListener("currentMouseDown", (e) => {
402
+ if (this.mouseList.has(e.value)) return;
403
+ this.mouseList.add(e.value);
404
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "down" });
405
+ });
406
+ variable.addEventListener("currentMouseUp", (e) => {
407
+ this.mouseList.delete(e.value);
408
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "up" });
409
+ });
410
+ variable.addEventListener("currentKeyDown", (e) => {
411
+ if (this.keyList.has(e.value)) return;
412
+ this.keyList.add(e.value);
413
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "down" });
414
+ });
415
+ variable.addEventListener("currentKeyUp", (e) => {
416
+ this.keyList.delete(e.value);
417
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "up" });
418
+ });
419
+ variable.addEventListener("focus", () => {
420
+ this.keyList.clear();
421
+ this.mouseList.clear();
422
+ });
423
+ this.addEventListener("codeChange", this._computedkeyCombination.bind(this));
424
+ this.addKeyCombination("save", ["control", "s"]);
425
+ this.addCancelDefaultBehavior((input) => input.isOnlyKeyDowns(["control", "s"]) || input.isOnlyKeyDown("alt"));
280
426
  }
281
427
  /** 添加取消浏览器默认行为规则
282
428
  * @param callBack
283
429
  */
284
- addCancelDefaultBehavior(e) {
285
- (this.parent?.findComponentByType(O)).addCancelDefaultBehavior(() => e(this));
430
+ addCancelDefaultBehavior(callBack) {
431
+ const domEventRegister = this.parent?.findComponentByType(DomEventRegister);
432
+ domEventRegister.addCancelDefaultBehavior(() => {
433
+ return callBack(this);
434
+ });
286
435
  }
287
436
  /**
288
437
  * 计算组合按键
289
438
  */
290
439
  _computedkeyCombination() {
291
- this.currentKeyCombinationMap.clear(), this.keyCombinationMap.forEach(
292
- ({ keys: e, count: i }, t) => this.isOnlyKeyDowns(e) && this.currentKeyCombinationMap.set(t, i)
440
+ this.currentKeyCombinationMap.clear();
441
+ this.keyCombinationMap.forEach(
442
+ ({ keys, count }, name) => this.isOnlyKeyDowns(keys) && this.currentKeyCombinationMap.set(name, count)
293
443
  );
294
444
  }
295
445
  /**
@@ -298,231 +448,270 @@ class F extends P {
298
448
  * @param keys
299
449
  * @param count
300
450
  */
301
- addKeyCombination(e, i, t = 1) {
302
- this.keyCombinationMap.set(e, { keys: i, count: t });
451
+ addKeyCombination(name, keys, count = 1) {
452
+ this.keyCombinationMap.set(name, { keys, count });
303
453
  }
304
454
  /**
305
455
  * 移除组合按键
306
456
  * @param name
307
457
  */
308
- removeKeyCombination(e) {
309
- this.keyCombinationMap.delete(e);
458
+ removeKeyCombination(name) {
459
+ this.keyCombinationMap.delete(name);
310
460
  }
311
461
  /**
312
462
  * 是否按下按键
313
463
  * @param key
314
464
  * @returns
315
465
  */
316
- isKeyDown(e) {
317
- return this.keyList.has(e.toLocaleLowerCase()) || this.mouseList.has(e.toLocaleLowerCase());
466
+ isKeyDown(key) {
467
+ return this.keyList.has(key.toLocaleLowerCase()) || this.mouseList.has(key.toLocaleLowerCase());
318
468
  }
319
469
  /**
320
470
  * 是否按下按键组
321
471
  * @param keys
322
472
  * @returns
323
473
  */
324
- isKeyDowns(e) {
325
- return e.every((i) => this.isKeyDown(i));
474
+ isKeyDowns(keys) {
475
+ return keys.every((v) => this.isKeyDown(v));
326
476
  }
327
477
  /**
328
478
  * 是否按下按键组中部分
329
479
  * @param keys
330
480
  * @returns
331
481
  */
332
- isSomeKeyDowns(e) {
333
- return e.some((i) => this.isKeyDown(i));
482
+ isSomeKeyDowns(keys) {
483
+ return keys.some((v) => this.isKeyDown(v));
334
484
  }
335
485
  /**
336
486
  * 是否按下按键组中所有,并且只按下按键组中的按键
337
487
  * @param keys
338
488
  * @returns
339
489
  */
340
- isOnlyKeyDowns(e) {
341
- return e.length !== this.codeCount ? !1 : e.filter((t) => this.isKeyDown(t)).length === e.length;
490
+ isOnlyKeyDowns(keys) {
491
+ if (keys.length !== this.codeCount) return false;
492
+ const keyList = keys.filter((v) => this.isKeyDown(v));
493
+ return keyList.length === keys.length;
342
494
  }
343
495
  /**
344
496
  *
345
497
  * @param keys
346
498
  * @returns
347
499
  */
348
- isOnlyKeyDown(e) {
349
- return this.codeCount === 1 && this.isKeyDown(e);
500
+ isOnlyKeyDown(key) {
501
+ return this.codeCount === 1 && this.isKeyDown(key);
350
502
  }
351
503
  /**
352
504
  *
353
505
  * @param name
354
506
  */
355
- isKeyCombination(e) {
356
- if (this.currentKeyCombinationMap.has(e)) {
357
- const i = this.currentKeyCombinationMap.get(e);
358
- return i === 0 ? this.currentKeyCombinationMap.delete(e) : this.currentKeyCombinationMap.set(e, i - 1), !0;
507
+ isKeyCombination(name) {
508
+ if (this.currentKeyCombinationMap.has(name)) {
509
+ const count = this.currentKeyCombinationMap.get(name);
510
+ if (count === 0) this.currentKeyCombinationMap.delete(name);
511
+ else this.currentKeyCombinationMap.set(name, count - 1);
512
+ return true;
359
513
  }
360
- return !1;
514
+ return false;
361
515
  }
362
516
  }
363
- const Ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
517
+ const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
364
518
  __proto__: null,
365
- DetailsPointRender: I,
366
- DomContainer: S,
367
- DomEventRegister: O,
368
- EventInput: F,
369
- ModelDataRender: z,
370
- OriginalLineRender: j,
371
- Renderer: E
372
- }, Symbol.toStringTag, { value: "Module" })), ce = { class: "pointer-events-none w-full flex justify-between absolute left-0 top-0 p-[10px] z-[1000] gap-[5px] select-none" }, ue = { class: "pointer-events-auto" }, he = { class: "pointer-events-auto" }, me = { class: "text-[14px] bg-[rgba(255,255,255,1)] rounded-[6px] p-[0px_10px]" }, we = /* @__PURE__ */ K({
519
+ DetailsPointRender,
520
+ DomContainer,
521
+ DomEventRegister,
522
+ EventInput,
523
+ ModelDataRender,
524
+ OriginalLineRender,
525
+ Renderer
526
+ }, Symbol.toStringTag, { value: "Module" }));
527
+ const _hoisted_1 = { class: "pointer-events-none w-full flex justify-between absolute left-0 top-0 p-[10px] z-[1000] gap-[5px] select-none" };
528
+ const _hoisted_2 = { class: "pointer-events-auto" };
529
+ const _hoisted_3 = { class: "pointer-events-auto" };
530
+ const _hoisted_4 = { class: "text-[14px] bg-[rgba(255,255,255,1)] rounded-[6px] p-[0px_10px]" };
531
+ const _sfc_main = /* @__PURE__ */ defineComponent({
373
532
  __name: "Dxf",
374
533
  props: {
375
534
  lines: {},
376
535
  detailsPoint: {}
377
536
  },
378
- setup(p) {
379
- d.Object3D.DEFAULT_UP = new d.Vector3(0, 0, 1);
380
- const e = p, i = L(), t = L(!0), n = L(!0), o = L(!0), a = L(!1), s = new Z().usePlugin(J).usePlugin(fe), c = s.findComponentByType(H), u = s.findComponentByType(S), b = s.findComponentByType(q);
381
- C(() => e.lines, () => e.lines && h(e.lines)), C(() => e.detailsPoint, () => e.detailsPoint && c?.set(e.detailsPoint));
382
- function h(r) {
383
- if (r) {
384
- localStorage.setItem("lines", JSON.stringify(r));
537
+ setup(__props) {
538
+ THREE.Object3D.DEFAULT_UP = new THREE.Vector3(0, 0, 1);
539
+ const props = __props;
540
+ const elRef = ref(), originalLineVisible = ref(true), dxfVisible = ref(true), whiteModelVisible = ref(true), isLook = ref(false), dxfSystem = new DxfSystem().usePlugin(ModelDataPlugin).usePlugin(RenderPlugin), desPoint = dxfSystem.findComponentByType(DetailsPoint), domContainer = dxfSystem.findComponentByType(DomContainer), whiteModel = dxfSystem.findComponentByType(WhiteModel);
541
+ watch(() => props.lines, () => props.lines && setLines(props.lines));
542
+ watch(() => props.detailsPoint, () => props.detailsPoint && desPoint?.set(props.detailsPoint));
543
+ function setLines(lines) {
544
+ if (lines) {
545
+ localStorage.setItem("lines", JSON.stringify(lines));
385
546
  try {
386
- s.Dxf.set(r), s.Dxf.lineOffset();
387
- } catch (l) {
388
- console.log(l);
547
+ dxfSystem.Dxf.set(lines);
548
+ dxfSystem.Dxf.lineOffset();
549
+ } catch (error) {
550
+ console.log(error);
389
551
  }
390
552
  }
391
553
  }
392
- async function f() {
393
- const r = await A.json();
394
- Array.isArray(r) && (localStorage.removeItem("orbitControls"), h(r));
554
+ async function selectLocalFile() {
555
+ const data = await SelectLocalFile.json();
556
+ if (Array.isArray(data)) {
557
+ localStorage.removeItem("orbitControls");
558
+ setLines(data);
559
+ }
560
+ }
561
+ async function selectDetailsPointFile() {
562
+ const data = await SelectLocalFile.json();
563
+ if (Array.isArray(data)) desPoint?.set(data);
395
564
  }
396
- async function B() {
397
- const r = await A.json();
398
- Array.isArray(r) && c?.set(r);
565
+ watch(originalLineVisible, () => dxfSystem.Variable.set("originalLineVisible", originalLineVisible.value));
566
+ watch(dxfVisible, () => dxfSystem.Variable.set("dxfVisible", dxfVisible.value));
567
+ watch(whiteModelVisible, () => dxfSystem.Variable.set("whiteModelVisible", whiteModelVisible.value));
568
+ dxfSystem.Variable.addEventListener("isLook", (e) => isLook.value = e.value);
569
+ dxfSystem.Variable.addEventListener("originalLineVisible", (e) => originalLineVisible.value = e.value);
570
+ dxfSystem.Variable.addEventListener("dxfVisible", (e) => dxfVisible.value = e.value);
571
+ dxfSystem.Variable.addEventListener("whiteModelVisible", (e) => whiteModelVisible.value = e.value);
572
+ if (localStorage.getItem("lines")) {
573
+ setLines(JSON.parse(localStorage.getItem("lines") ?? "{}"));
574
+ } else {
575
+ setLines(props.lines);
399
576
  }
400
- C(t, () => s.Variable.set("originalLineVisible", t.value)), C(n, () => s.Variable.set("dxfVisible", n.value)), C(o, () => s.Variable.set("whiteModelVisible", o.value)), s.Variable.addEventListener("isLook", (r) => a.value = r.value), s.Variable.addEventListener("originalLineVisible", (r) => t.value = r.value), s.Variable.addEventListener("dxfVisible", (r) => n.value = r.value), s.Variable.addEventListener("whiteModelVisible", (r) => o.value = r.value), localStorage.getItem("lines") ? h(JSON.parse(localStorage.getItem("lines") ?? "{}")) : h(e.lines), e.detailsPoint && c?.set(e.detailsPoint), ee(() => u && i.value?.appendChild(u.domElement)), te(() => s.destroy());
401
- const v = s.findComponentByType(E);
402
- v.orbitControls?.addEventListener("change", () => {
577
+ props.detailsPoint && desPoint?.set(props.detailsPoint);
578
+ onMounted(() => domContainer && elRef.value?.appendChild(domContainer.domElement));
579
+ onUnmounted(() => dxfSystem.destroy());
580
+ const renderer = dxfSystem.findComponentByType(Renderer);
581
+ renderer.orbitControls?.addEventListener("change", () => {
403
582
  localStorage.setItem("orbitControls", JSON.stringify({
404
- position: v.camera.position.toArray(),
405
- target: v.orbitControls?.target.toArray()
583
+ position: renderer.camera.position.toArray(),
584
+ target: renderer.orbitControls?.target.toArray()
406
585
  }));
407
586
  });
408
- const V = localStorage.getItem("orbitControls");
409
- if (V) {
410
- const r = JSON.parse(V);
587
+ const d = localStorage.getItem("orbitControls");
588
+ if (d) {
589
+ const data = JSON.parse(d);
411
590
  setTimeout(() => {
412
- v.camera.position.set(r.position[0], r.position[1], r.position[2]), v.orbitControls?.target.set(r.target[0], r.target[1], r.target[2]);
591
+ renderer.camera.position.set(data.position[0], data.position[1], data.position[2]);
592
+ renderer.orbitControls?.target.set(data.target[0], data.target[1], data.target[2]);
413
593
  });
414
594
  }
415
- return (r, l) => (k(), R("div", {
416
- ref_key: "elRef",
417
- ref: i,
418
- style: { height: "100%", width: "100%", overflow: "hidden", position: "relative" }
419
- }, [
420
- y("div", ce, [
421
- y("div", ue, [
422
- x(m(w), {
423
- size: "small",
424
- type: "primary",
425
- onClick: l[0] || (l[0] = (g) => m(s).Dxf.download("test.dxf"))
426
- }, {
427
- default: D(() => l[6] || (l[6] = [
428
- M(" 下载 DXF ", -1)
429
- ])),
430
- _: 1,
431
- __: [6]
432
- }),
433
- x(m(w), {
434
- size: "small",
435
- type: "primary",
436
- onClick: l[1] || (l[1] = (g) => m(b).downloadGltf("test.glb"))
437
- }, {
438
- default: D(() => l[7] || (l[7] = [
439
- M(" 下载 白模 ", -1)
440
- ])),
441
- _: 1,
442
- __: [7]
443
- }),
444
- x(m(w), {
445
- size: "small",
446
- type: "success",
447
- onClick: f
448
- }, {
449
- default: D(() => l[8] || (l[8] = [
450
- M(" 选择线路文件 ", -1)
451
- ])),
452
- _: 1,
453
- __: [8]
454
- }),
455
- x(m(w), {
456
- size: "small",
457
- type: "success",
458
- onClick: B
459
- }, {
460
- default: D(() => l[9] || (l[9] = [
461
- M(" 选择详情点文件 ", -1)
462
- ])),
463
- _: 1,
464
- __: [9]
465
- })
466
- ]),
467
- a.value ? (k(), R("div", {
468
- key: 0,
469
- onClick: l[2] || (l[2] = (g) => m(s).Variable.set("isLook", !1)),
470
- class: "pointer-events-auto text-[#fff] h-fit text-[14px] rounded-[10px] bg-black p-[5px_20px] select-none cursor-pointer"
471
- }, " 点击这或按 ESC 取消 ")) : ie("", !0),
472
- y("div", he, [
473
- y("div", me, [
474
- x(m(G), {
475
- modelValue: t.value,
476
- "onUpdate:modelValue": l[3] || (l[3] = (g) => t.value = g),
477
- label: "线(Q)"
478
- }, null, 8, ["modelValue"]),
479
- x(m(G), {
480
- modelValue: n.value,
481
- "onUpdate:modelValue": l[4] || (l[4] = (g) => n.value = g),
482
- label: "dxf(W)"
483
- }, null, 8, ["modelValue"]),
484
- x(m(G), {
485
- modelValue: o.value,
486
- "onUpdate:modelValue": l[5] || (l[5] = (g) => o.value = g),
487
- label: "墙体(E)"
488
- }, null, 8, ["modelValue"])
595
+ return (_ctx, _cache) => {
596
+ return openBlock(), createElementBlock("div", {
597
+ ref_key: "elRef",
598
+ ref: elRef,
599
+ style: { "height": "100%", "width": "100%", "overflow": "hidden", "position": "relative" }
600
+ }, [
601
+ createElementVNode("div", _hoisted_1, [
602
+ createElementVNode("div", _hoisted_2, [
603
+ createVNode(unref(ElButton), {
604
+ size: "small",
605
+ type: "primary",
606
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(dxfSystem).Dxf.download("test.dxf"))
607
+ }, {
608
+ default: withCtx(() => _cache[6] || (_cache[6] = [
609
+ createTextVNode(" 下载 DXF ", -1)
610
+ ])),
611
+ _: 1,
612
+ __: [6]
613
+ }),
614
+ createVNode(unref(ElButton), {
615
+ size: "small",
616
+ type: "primary",
617
+ onClick: _cache[1] || (_cache[1] = ($event) => unref(whiteModel).downloadGltf("test.glb"))
618
+ }, {
619
+ default: withCtx(() => _cache[7] || (_cache[7] = [
620
+ createTextVNode(" 下载 白模 ", -1)
621
+ ])),
622
+ _: 1,
623
+ __: [7]
624
+ }),
625
+ createVNode(unref(ElButton), {
626
+ size: "small",
627
+ type: "success",
628
+ onClick: selectLocalFile
629
+ }, {
630
+ default: withCtx(() => _cache[8] || (_cache[8] = [
631
+ createTextVNode(" 选择线路文件 ", -1)
632
+ ])),
633
+ _: 1,
634
+ __: [8]
635
+ }),
636
+ createVNode(unref(ElButton), {
637
+ size: "small",
638
+ type: "success",
639
+ onClick: selectDetailsPointFile
640
+ }, {
641
+ default: withCtx(() => _cache[9] || (_cache[9] = [
642
+ createTextVNode(" 选择详情点文件 ", -1)
643
+ ])),
644
+ _: 1,
645
+ __: [9]
646
+ })
489
647
  ]),
490
- l[10] || (l[10] = ne('<div class="mt-[5px] text-[#c9c9c9] text-[10px]"><p class="text-right">详情点射线辅助线快捷键:R</p><p class="text-right">墙壁合并追加线快捷键:A</p><p class="text-right">线段序号快捷键:T</p><p class="text-right">线段端点标示快捷键:P</p><p class="text-right">线段长度(单位米)快捷键:L</p></div>', 1))
648
+ isLook.value ? (openBlock(), createElementBlock("div", {
649
+ key: 0,
650
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(dxfSystem).Variable.set("isLook", false)),
651
+ class: "pointer-events-auto text-[#fff] h-fit text-[14px] rounded-[10px] bg-black p-[5px_20px] select-none cursor-pointer"
652
+ }, " 点击这或按 ESC 取消 ")) : createCommentVNode("", true),
653
+ createElementVNode("div", _hoisted_3, [
654
+ createElementVNode("div", _hoisted_4, [
655
+ createVNode(unref(ElCheckbox), {
656
+ modelValue: originalLineVisible.value,
657
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => originalLineVisible.value = $event),
658
+ label: "线(Q)"
659
+ }, null, 8, ["modelValue"]),
660
+ createVNode(unref(ElCheckbox), {
661
+ modelValue: dxfVisible.value,
662
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => dxfVisible.value = $event),
663
+ label: "dxf(W)"
664
+ }, null, 8, ["modelValue"]),
665
+ createVNode(unref(ElCheckbox), {
666
+ modelValue: whiteModelVisible.value,
667
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => whiteModelVisible.value = $event),
668
+ label: "墙体(E)"
669
+ }, null, 8, ["modelValue"])
670
+ ]),
671
+ _cache[10] || (_cache[10] = createStaticVNode('<div class="mt-[5px] text-[#c9c9c9] text-[10px]"><p class="text-right">详情点射线辅助线快捷键:R</p><p class="text-right">墙壁合并追加线快捷键:A</p><p class="text-right">线段序号快捷键:T</p><p class="text-right">线段端点标示快捷键:P</p><p class="text-right">线段长度(单位米)快捷键:L</p></div>', 1))
672
+ ])
491
673
  ])
492
- ])
493
- ], 512));
674
+ ], 512);
675
+ };
494
676
  }
495
677
  });
496
- function T(p, e = {}) {
678
+ function RenderPlugin_(dxfSystem, option = {}) {
497
679
  const {
498
- originalLine: i = !0,
499
- modelData: t = !0,
500
- detailsPoint: n = !0,
501
- orbitControls: o = !0,
502
- camera: a = new d.PerspectiveCamera(45, 1, 0.01, 1e3)
503
- } = e, s = new S();
504
- p.addComponent(s), p.addComponent(new E({
505
- canvas: s.canvas,
506
- camera: a,
680
+ originalLine = true,
681
+ modelData = true,
682
+ detailsPoint = true,
683
+ orbitControls = true,
684
+ camera = new THREE.PerspectiveCamera(45, 1, 0.01, 1e3)
685
+ } = option;
686
+ const domContainer = new DomContainer();
687
+ dxfSystem.addComponent(domContainer);
688
+ dxfSystem.addComponent(new Renderer({
689
+ canvas: domContainer.canvas,
690
+ camera,
507
691
  htmlRenderer: {
508
- "2d": s.html2DRenderer,
509
- "3d": s.html3DRenderer
692
+ "2d": domContainer.html2DRenderer,
693
+ "3d": domContainer.html3DRenderer
510
694
  },
511
- resizeObserver: s.domElement,
512
- orbitControls: o ? {
513
- domElement: s.domElement,
514
- enableDamping: !0,
695
+ resizeObserver: domContainer.domElement,
696
+ orbitControls: orbitControls ? {
697
+ domElement: domContainer.domElement,
698
+ enableDamping: true,
515
699
  dampingFactor: 0.15
516
700
  } : void 0
517
- })), i && p.addComponent(new j()), t && p.addComponent(new z()), n && p.addComponent(new I()), p.addComponent(new O()), p.addComponent(new F());
701
+ }));
702
+ originalLine && dxfSystem.addComponent(new OriginalLineRender());
703
+ modelData && dxfSystem.addComponent(new ModelDataRender());
704
+ detailsPoint && dxfSystem.addComponent(new DetailsPointRender());
705
+ dxfSystem.addComponent(new DomEventRegister());
706
+ dxfSystem.addComponent(new EventInput());
518
707
  }
519
- const fe = Object.assign(T, {
520
- create(p = {}) {
521
- return (e) => T(e, p);
708
+ const RenderPlugin = Object.assign(RenderPlugin_, {
709
+ create(option = {}) {
710
+ return (dxfSystem) => RenderPlugin_(dxfSystem, option);
522
711
  }
523
712
  });
524
713
  export {
525
- we as Dxf3DView,
526
- fe as RenderPlugin,
527
- Ce as components
714
+ _sfc_main as Dxf3DView,
715
+ RenderPlugin,
716
+ index as components
528
717
  };