build-dxf 0.0.20-14 → 0.0.20-2

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 (27) hide show
  1. package/package.json +1 -1
  2. package/src/build.js +1915 -1194
  3. package/src/index.css +629 -1
  4. package/src/index.js +7 -7
  5. package/src/index2.js +528 -327
  6. package/src/index3.js +1714 -1660
  7. package/src/selectLocalFile.js +3145 -1955
  8. package/src/utils/CommandManager/CommandFlow.d.ts +0 -17
  9. package/src/utils/CommandManager/CommandManager.d.ts +0 -23
  10. package/src/utils/DxfSystem/components/Dxf.d.ts +0 -1
  11. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/CommandFlowComponent.d.ts +1 -4
  12. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/Default.d.ts +20 -0
  13. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawDoorLine.d.ts +4 -24
  14. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawLine.d.ts +4 -20
  15. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawWindow.d.ts +2 -25
  16. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/PointDrag.d.ts +1 -14
  17. package/src/utils/DxfSystem/plugin/Editor/components/index.d.ts +0 -1
  18. package/src/utils/Quadtree/LineSegment.d.ts +0 -1
  19. package/src/utils/Quadtree/Point.d.ts +1 -2
  20. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/ConnectionLine.d.ts +0 -33
  21. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectLine.d.ts +0 -28
  22. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectWindow.d.ts +0 -33
  23. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/IntersectionConnectionLine.d.ts +0 -33
  24. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/MergeLine.d.ts +0 -33
  25. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/SelectAll.d.ts +0 -30
  26. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/VerticalCorrection.d.ts +0 -76
  27. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/ViewAngle.d.ts +0 -15
package/src/index2.js CHANGED
@@ -1,113 +1,159 @@
1
- import { C as P, P as U, V as $, D as W, M as Z, a as J, W as H } from "./build.js";
2
- import * as d from "three";
3
- import { Group as q } from "three";
1
+ import { C as Component, P as Point, V as Variable, D as DxfSystem, M as ModelDataPlugin, a as DetailsPoint, W as WhiteModel } 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, L as Q, D as S, a as A, b as G, S as O } from "./selectLocalFile.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, L as Lines, D as DomEventRegister, a as DomContainer, b as ElCheckbox, S as SelectLocalFile } from "./selectLocalFile.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 Q([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,227 @@ 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
+ this.Renderer?.camera?.position.set(center.x, center.y, 0).add(new THREE.Vector3(1, 1, 1).multiplyScalar(10));
293
+ const lineAnalysis = parent.findComponentByName("LineAnalysis");
294
+ const array = lineAnalysis.appendLineSegmentList.flatMap((line) => line.points.flatMap((p) => [p.x, p.y, dxf.originalZAverage]));
295
+ this.appendLineMode.geometry = new THREE.BufferGeometry().setAttribute("position", new THREE.BufferAttribute(new Float32Array(array), 3, true));
296
+ this.appendLineMode.material = new THREE.LineBasicMaterial({ color: 16711935 });
297
+ });
298
+ variable?.addEventListener("originalLineVisible", (e) => {
299
+ this.originalLineMode.visible = e.value;
300
+ });
301
+ variable?.addEventListener("currentKeyUp", (e) => {
302
+ if (e.value === "q") variable.set("originalLineVisible", !variable.originalLineVisible);
303
+ else if (e.value === "a") this.appendLineMode.visible = !this.appendLineMode.visible;
304
+ else if (e.value === "t") this.textGroup.visible = !this.textGroup.visible;
305
+ else if (e.value === "p") this.pointGroup.visible = !this.pointGroup.visible;
306
+ else if (e.value === "l") this.distanceGroup.visible = !this.distanceGroup.visible;
200
307
  });
201
308
  }
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(U.prototype.distance.call(o, a).toFixed(2)),
209
- new d.Vector3(c, u, i.originalZAverage),
309
+ updateMode(data) {
310
+ const dxf = this.Dxf, renderer = this.Renderer;
311
+ this.textGroup.clear();
312
+ this.distanceGroup.clear();
313
+ const originalArray = new Float32Array(data.flatMap(({ start, end }, i) => {
314
+ const x = start.x + (end.x - start.x) * 0.5;
315
+ const y = start.y + (end.y - start.y) * 0.5;
316
+ renderer.createText(i, new THREE.Vector3(x, y, dxf.originalZAverage), { fontSize: "10px", color: "#ffff00" }, this.textGroup);
317
+ renderer.createText(
318
+ Number(Point.prototype.distance.call(start, end).toFixed(2)),
319
+ new THREE.Vector3(x, y, dxf.originalZAverage),
210
320
  { fontSize: "10px", color: "#00ff00" },
211
321
  this.distanceGroup
212
- ), t.createPointMesh(new d.Vector3(o.x, o.y, i.originalZAverage), 0.04, {
322
+ );
323
+ renderer.createPointMesh(new THREE.Vector3(start.x, start.y, dxf.originalZAverage), 0.04, {
213
324
  color: 16777215,
214
- transparent: !0,
325
+ transparent: true,
215
326
  opacity: 0.5
216
- }, this.pointGroup), t.createPointMesh(new d.Vector3(a.x, a.y, i.originalZAverage), 0.02, {
327
+ }, this.pointGroup);
328
+ renderer.createPointMesh(new THREE.Vector3(end.x, end.y, dxf.originalZAverage), 0.02, {
217
329
  color: 16711680
218
- }, this.pointGroup), [
219
- o.x,
220
- o.y,
221
- i.originalZAverage,
222
- a.x,
223
- a.y,
224
- i.originalZAverage
330
+ }, this.pointGroup);
331
+ return [
332
+ start.x,
333
+ start.y,
334
+ dxf.originalZAverage,
335
+ end.x,
336
+ end.y,
337
+ dxf.originalZAverage
225
338
  ];
226
339
  }));
227
- this.originalLineMode.geometry = new d.BufferGeometry().setAttribute("position", new d.BufferAttribute(n, 3, !0));
340
+ this.originalLineMode.geometry = new THREE.BufferGeometry().setAttribute("position", new THREE.BufferAttribute(originalArray, 3, true));
228
341
  }
229
342
  }
230
- class z extends P {
343
+ class ModelDataRender extends Component {
231
344
  static name = "ModelDataRender";
232
- onAddFromParent(e) {
233
- this.dxf(e), this.whiteModel(e);
345
+ onAddFromParent(parent) {
346
+ this.dxf(parent);
347
+ this.whiteModel(parent);
234
348
  }
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;
349
+ dxf(parent) {
350
+ const renderer = parent.findComponentByName("Renderer");
351
+ const variable = parent.findComponentByName("Variable");
352
+ const dxfLineModel = parent.findComponentByName("DxfLineModel");
353
+ const dxf = parent.findComponentByName("Dxf");
354
+ renderer.container.add(dxfLineModel.dxfModelGroup);
355
+ variable.addEventListener("dxfVisible", (e) => {
356
+ dxfLineModel.dxfModelGroup.visible = e.value;
239
357
  });
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
- })));
358
+ let group = new Group();
359
+ dxfLineModel.dxfModelGroup.add(group);
360
+ variable?.addEventListener("currentKeyUp", (e) => {
361
+ if (e.value === "w") variable.set("dxfVisible", !variable.dxfVisible);
362
+ if (e.value === "b") {
363
+ if (group.visible) group.visible = false;
364
+ else {
365
+ group.visible = true;
366
+ group.clear();
367
+ dxf.wallsGroup.forEach((path, j) => {
368
+ path.forEach((p, i) => {
369
+ renderer.createText(`${j}-${i}`, p, { color: "#ff00ff", fontSize: "10px" }, group).position.z = dxf.originalZAverage * 0.99;
370
+ });
371
+ });
372
+ }
373
+ }
247
374
  });
248
375
  }
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));
376
+ whiteModel(parent) {
377
+ const renderer = parent.findComponentByName("Renderer");
378
+ const variable = parent.findComponentByName("Variable");
379
+ const whiteModel = parent.findComponentByName("WhiteModel");
380
+ renderer.container.add(whiteModel.whiteModelGroup);
381
+ renderer.container.add(whiteModel.originalWhiteMode);
382
+ whiteModel.originalWhiteMode.visible = false;
383
+ variable?.addEventListener("whiteModelVisible", (e) => whiteModel.whiteModelGroup.visible = e.value);
384
+ variable?.addEventListener("currentKeyUp", (e) => e.value === "e" && variable.set("whiteModelVisible", !variable.whiteModelVisible));
252
385
  }
253
386
  }
254
- class F extends P {
387
+ class EventInput extends Component {
255
388
  static name = "EventInput";
256
389
  keyList = /* @__PURE__ */ new Set();
257
390
  mouseList = /* @__PURE__ */ new Set();
@@ -264,32 +397,50 @@ class F extends P {
264
397
  *
265
398
  * @param parent
266
399
  */
267
- onAddFromParent(e) {
268
- const i = e.findComponentByType($);
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"]));
400
+ onAddFromParent(parent) {
401
+ const variable = parent.findComponentByType(Variable);
402
+ variable.addEventListener("currentMouseDown", (e) => {
403
+ if (this.mouseList.has(e.value)) return;
404
+ this.mouseList.add(e.value);
405
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "down" });
406
+ });
407
+ variable.addEventListener("currentMouseUp", (e) => {
408
+ this.mouseList.delete(e.value);
409
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "up" });
410
+ });
411
+ variable.addEventListener("currentKeyDown", (e) => {
412
+ if (this.keyList.has(e.value)) return;
413
+ this.keyList.add(e.value);
414
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "down" });
415
+ });
416
+ variable.addEventListener("currentKeyUp", (e) => {
417
+ this.keyList.delete(e.value);
418
+ this.dispatchEvent({ type: "codeChange", code: e.value, mode: "up" });
419
+ });
420
+ variable.addEventListener("focus", () => {
421
+ this.keyList.clear();
422
+ this.mouseList.clear();
423
+ });
424
+ this.addEventListener("codeChange", this._computedkeyCombination.bind(this));
425
+ this.addKeyCombination("save", ["control", "s"]);
426
+ this.addCancelDefaultBehavior((input) => input.isOnlyKeyDowns(["control", "s"]));
280
427
  }
281
428
  /** 添加取消浏览器默认行为规则
282
429
  * @param callBack
283
430
  */
284
- addCancelDefaultBehavior(e) {
285
- (this.parent?.findComponentByType(S)).addCancelDefaultBehavior(() => e(this));
431
+ addCancelDefaultBehavior(callBack) {
432
+ const domEventRegister = this.parent?.findComponentByType(DomEventRegister);
433
+ domEventRegister.addCancelDefaultBehavior(() => {
434
+ return callBack(this);
435
+ });
286
436
  }
287
437
  /**
288
438
  * 计算组合按键
289
439
  */
290
440
  _computedkeyCombination() {
291
- this.currentKeyCombinationMap.clear(), this.keyCombinationMap.forEach(
292
- ({ keys: e, count: i }, t) => this.isOnlyKeyDowns(e) && this.currentKeyCombinationMap.set(t, i)
441
+ this.currentKeyCombinationMap.clear();
442
+ this.keyCombinationMap.forEach(
443
+ ({ keys, count }, name) => this.isOnlyKeyDowns(keys) && this.currentKeyCombinationMap.set(name, count)
293
444
  );
294
445
  }
295
446
  /**
@@ -298,231 +449,281 @@ class F extends P {
298
449
  * @param keys
299
450
  * @param count
300
451
  */
301
- addKeyCombination(e, i, t = 1) {
302
- this.keyCombinationMap.set(e, { keys: i, count: t });
452
+ addKeyCombination(name, keys, count = 1) {
453
+ this.keyCombinationMap.set(name, { keys, count });
303
454
  }
304
455
  /**
305
456
  * 移除组合按键
306
457
  * @param name
307
458
  */
308
- removeKeyCombination(e) {
309
- this.keyCombinationMap.delete(e);
459
+ removeKeyCombination(name) {
460
+ this.keyCombinationMap.delete(name);
310
461
  }
311
462
  /**
312
463
  * 是否按下按键
313
464
  * @param key
314
465
  * @returns
315
466
  */
316
- isKeyDown(e) {
317
- return this.keyList.has(e.toLocaleLowerCase()) || this.mouseList.has(e.toLocaleLowerCase());
467
+ isKeyDown(key) {
468
+ return this.keyList.has(key) || this.mouseList.has(key);
318
469
  }
319
470
  /**
320
471
  * 是否按下按键组
321
472
  * @param keys
322
473
  * @returns
323
474
  */
324
- isKeyDowns(e) {
325
- return e.every((i) => this.isKeyDown(i));
475
+ isKeyDowns(keys) {
476
+ return keys.every((v) => this.isKeyDown(v));
326
477
  }
327
478
  /**
328
479
  * 是否按下按键组中部分
329
480
  * @param keys
330
481
  * @returns
331
482
  */
332
- isSomeKeyDowns(e) {
333
- return e.some((i) => this.isKeyDown(i));
483
+ isSomeKeyDowns(keys) {
484
+ return keys.some((v) => this.isKeyDown(v));
334
485
  }
335
486
  /**
336
487
  * 是否按下按键组中所有,并且只按下按键组中的按键
337
488
  * @param keys
338
489
  * @returns
339
490
  */
340
- isOnlyKeyDowns(e) {
341
- return e.length !== this.codeCount ? !1 : e.filter((t) => this.isKeyDown(t)).length === e.length;
491
+ isOnlyKeyDowns(keys) {
492
+ if (keys.length !== this.codeCount) return false;
493
+ const keyList = keys.filter((v) => this.isKeyDown(v));
494
+ return keyList.length === keys.length;
342
495
  }
343
496
  /**
344
497
  *
345
498
  * @param keys
346
499
  * @returns
347
500
  */
348
- isOnlyKeyDown(e) {
349
- return this.codeCount === 1 && this.isKeyDown(e);
501
+ isOnlyKeyDown(key) {
502
+ return this.codeCount === 1 && this.isKeyDown(key);
350
503
  }
351
504
  /**
352
505
  *
353
506
  * @param name
354
507
  */
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;
508
+ isKeyCombination(name) {
509
+ if (this.currentKeyCombinationMap.has(name)) {
510
+ const count = this.currentKeyCombinationMap.get(name);
511
+ if (count === 0) this.currentKeyCombinationMap.delete(name);
512
+ else this.currentKeyCombinationMap.set(name, count - 1);
513
+ return true;
359
514
  }
360
- return !1;
515
+ return false;
361
516
  }
362
517
  }
363
- const Ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
518
+ const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
364
519
  __proto__: null,
365
- DetailsPointRender: I,
366
- DomContainer: A,
367
- DomEventRegister: S,
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({
520
+ DetailsPointRender,
521
+ DomContainer,
522
+ DomEventRegister,
523
+ EventInput,
524
+ ModelDataRender,
525
+ OriginalLineRender,
526
+ Renderer
527
+ }, Symbol.toStringTag, { value: "Module" }));
528
+ 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" };
529
+ const _hoisted_2 = { class: "pointer-events-auto" };
530
+ const _hoisted_3 = { class: "pointer-events-auto" };
531
+ const _hoisted_4 = { class: "text-[14px] bg-[rgba(255,255,255,1)] rounded-[6px] p-[0px_10px]" };
532
+ const _sfc_main = /* @__PURE__ */ defineComponent({
373
533
  __name: "Dxf",
374
534
  props: {
375
535
  lines: {},
376
536
  detailsPoint: {}
377
537
  },
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 W().usePlugin(Z).usePlugin(fe), c = s.findComponentByType(J), u = s.findComponentByType(A), b = s.findComponentByType(H);
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));
538
+ setup(__props) {
539
+ THREE.Object3D.DEFAULT_UP = new THREE.Vector3(0, 0, 1);
540
+ const props = __props;
541
+ 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);
542
+ watch(() => props.lines, () => props.lines && setLines(props.lines));
543
+ watch(() => props.detailsPoint, () => props.detailsPoint && desPoint?.set(props.detailsPoint));
544
+ function setLines(lines) {
545
+ if (lines) {
546
+ localStorage.setItem("lines", JSON.stringify(lines));
385
547
  try {
386
- s.Dxf.set(r), s.Dxf.lineOffset();
387
- } catch (l) {
388
- console.log(l);
548
+ dxfSystem.Dxf.set(lines);
549
+ dxfSystem.Dxf.lineOffset();
550
+ } catch (error) {
551
+ console.log(error);
389
552
  }
390
553
  }
391
554
  }
392
- async function f() {
393
- const r = await O.json();
394
- Array.isArray(r) && (localStorage.removeItem("orbitControls"), h(r));
555
+ async function selectLocalFile() {
556
+ const data = await SelectLocalFile.json();
557
+ if (Array.isArray(data)) {
558
+ localStorage.removeItem("orbitControls");
559
+ setLines(data);
560
+ }
561
+ }
562
+ async function selectDetailsPointFile() {
563
+ const data = await SelectLocalFile.json();
564
+ if (Array.isArray(data)) desPoint?.set(data);
395
565
  }
396
- async function B() {
397
- const r = await O.json();
398
- Array.isArray(r) && c?.set(r);
566
+ watch(originalLineVisible, () => dxfSystem.Variable.set("originalLineVisible", originalLineVisible.value));
567
+ watch(dxfVisible, () => dxfSystem.Variable.set("dxfVisible", dxfVisible.value));
568
+ watch(whiteModelVisible, () => dxfSystem.Variable.set("whiteModelVisible", whiteModelVisible.value));
569
+ dxfSystem.Variable.addEventListener("isLook", (e) => isLook.value = e.value);
570
+ dxfSystem.Variable.addEventListener("originalLineVisible", (e) => originalLineVisible.value = e.value);
571
+ dxfSystem.Variable.addEventListener("dxfVisible", (e) => dxfVisible.value = e.value);
572
+ dxfSystem.Variable.addEventListener("whiteModelVisible", (e) => whiteModelVisible.value = e.value);
573
+ if (localStorage.getItem("lines")) {
574
+ setLines(JSON.parse(localStorage.getItem("lines") ?? "{}"));
575
+ } else {
576
+ setLines(props.lines);
399
577
  }
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", () => {
578
+ props.detailsPoint && desPoint?.set(props.detailsPoint);
579
+ onMounted(() => domContainer && elRef.value?.appendChild(domContainer.domElement));
580
+ onUnmounted(() => dxfSystem.destroy());
581
+ const renderer = dxfSystem.findComponentByType(Renderer);
582
+ renderer.orbitControls?.addEventListener("change", () => {
403
583
  localStorage.setItem("orbitControls", JSON.stringify({
404
- position: v.camera.position.toArray(),
405
- target: v.orbitControls?.target.toArray()
584
+ position: renderer.camera.position.toArray(),
585
+ target: renderer.orbitControls?.target.toArray()
406
586
  }));
407
587
  });
408
- const V = localStorage.getItem("orbitControls");
409
- if (V) {
410
- const r = JSON.parse(V);
588
+ const d = localStorage.getItem("orbitControls");
589
+ if (d) {
590
+ const data = JSON.parse(d);
411
591
  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]);
592
+ renderer.camera.position.set(data.position[0], data.position[1], data.position[2]);
593
+ renderer.orbitControls?.target.set(data.target[0], data.target[1], data.target[2]);
413
594
  });
414
595
  }
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"])
596
+ return (_ctx, _cache) => {
597
+ return openBlock(), createElementBlock("div", {
598
+ ref_key: "elRef",
599
+ ref: elRef,
600
+ style: { "height": "100%", "width": "100%", "overflow": "hidden", "position": "relative" }
601
+ }, [
602
+ createElementVNode("div", _hoisted_1, [
603
+ createElementVNode("div", _hoisted_2, [
604
+ createVNode(unref(ElButton), {
605
+ size: "small",
606
+ type: "primary",
607
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(dxfSystem).Dxf.download("test.dxf"))
608
+ }, {
609
+ default: withCtx(() => _cache[6] || (_cache[6] = [
610
+ createTextVNode(" 下载 DXF ", -1)
611
+ ])),
612
+ _: 1,
613
+ __: [6]
614
+ }),
615
+ createVNode(unref(ElButton), {
616
+ size: "small",
617
+ type: "primary",
618
+ onClick: _cache[1] || (_cache[1] = ($event) => unref(whiteModel).downloadGltf("test.glb"))
619
+ }, {
620
+ default: withCtx(() => _cache[7] || (_cache[7] = [
621
+ createTextVNode(" 下载 白模 ", -1)
622
+ ])),
623
+ _: 1,
624
+ __: [7]
625
+ }),
626
+ createVNode(unref(ElButton), {
627
+ size: "small",
628
+ type: "success",
629
+ onClick: selectLocalFile
630
+ }, {
631
+ default: withCtx(() => _cache[8] || (_cache[8] = [
632
+ createTextVNode(" 选择线路文件 ", -1)
633
+ ])),
634
+ _: 1,
635
+ __: [8]
636
+ }),
637
+ createVNode(unref(ElButton), {
638
+ size: "small",
639
+ type: "success",
640
+ onClick: selectDetailsPointFile
641
+ }, {
642
+ default: withCtx(() => _cache[9] || (_cache[9] = [
643
+ createTextVNode(" 选择详情点文件 ", -1)
644
+ ])),
645
+ _: 1,
646
+ __: [9]
647
+ }),
648
+ createVNode(unref(ElButton), {
649
+ size: "small",
650
+ type: "success",
651
+ onClick: selectDetailsPointFile
652
+ }, {
653
+ default: withCtx(() => _cache[10] || (_cache[10] = [
654
+ createTextVNode(" 编辑模式 ", -1)
655
+ ])),
656
+ _: 1,
657
+ __: [10]
658
+ })
489
659
  ]),
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))
660
+ isLook.value ? (openBlock(), createElementBlock("div", {
661
+ key: 0,
662
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(dxfSystem).Variable.set("isLook", false)),
663
+ class: "pointer-events-auto text-[#fff] h-fit text-[14px] rounded-[10px] bg-black p-[5px_20px] select-none cursor-pointer"
664
+ }, " 点击这或按 ESC 取消 ")) : createCommentVNode("", true),
665
+ createElementVNode("div", _hoisted_3, [
666
+ createElementVNode("div", _hoisted_4, [
667
+ createVNode(unref(ElCheckbox), {
668
+ modelValue: originalLineVisible.value,
669
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => originalLineVisible.value = $event),
670
+ label: "线(Q)"
671
+ }, null, 8, ["modelValue"]),
672
+ createVNode(unref(ElCheckbox), {
673
+ modelValue: dxfVisible.value,
674
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => dxfVisible.value = $event),
675
+ label: "dxf(W)"
676
+ }, null, 8, ["modelValue"]),
677
+ createVNode(unref(ElCheckbox), {
678
+ modelValue: whiteModelVisible.value,
679
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => whiteModelVisible.value = $event),
680
+ label: "墙体(E)"
681
+ }, null, 8, ["modelValue"])
682
+ ]),
683
+ _cache[11] || (_cache[11] = 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))
684
+ ])
491
685
  ])
492
- ])
493
- ], 512));
686
+ ], 512);
687
+ };
494
688
  }
495
689
  });
496
- function T(p, e = {}) {
690
+ function RenderPlugin_(dxfSystem, option = {}) {
497
691
  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 A();
504
- p.addComponent(s), p.addComponent(new E({
505
- canvas: s.canvas,
506
- camera: a,
692
+ originalLine = true,
693
+ modelData = true,
694
+ detailsPoint = true,
695
+ orbitControls = true,
696
+ camera = new THREE.PerspectiveCamera(45, 1, 0.01, 1e3)
697
+ } = option;
698
+ const domContainer = new DomContainer();
699
+ dxfSystem.addComponent(domContainer);
700
+ dxfSystem.addComponent(new Renderer({
701
+ canvas: domContainer.canvas,
702
+ camera,
507
703
  htmlRenderer: {
508
- "2d": s.html2DRenderer,
509
- "3d": s.html3DRenderer
704
+ "2d": domContainer.html2DRenderer,
705
+ "3d": domContainer.html3DRenderer
510
706
  },
511
- resizeObserver: s.domElement,
512
- orbitControls: o ? {
513
- domElement: s.domElement,
514
- enableDamping: !0,
707
+ resizeObserver: domContainer.domElement,
708
+ orbitControls: orbitControls ? {
709
+ domElement: domContainer.domElement,
710
+ enableDamping: true,
515
711
  dampingFactor: 0.15
516
712
  } : void 0
517
- })), i && p.addComponent(new j()), t && p.addComponent(new z()), n && p.addComponent(new I()), p.addComponent(new S()), p.addComponent(new F());
713
+ }));
714
+ originalLine && dxfSystem.addComponent(new OriginalLineRender());
715
+ modelData && dxfSystem.addComponent(new ModelDataRender());
716
+ detailsPoint && dxfSystem.addComponent(new DetailsPointRender());
717
+ dxfSystem.addComponent(new DomEventRegister());
718
+ dxfSystem.addComponent(new EventInput());
518
719
  }
519
- const fe = Object.assign(T, {
520
- create(p = {}) {
521
- return (e) => T(e, p);
720
+ const RenderPlugin = Object.assign(RenderPlugin_, {
721
+ create(option = {}) {
722
+ return (dxfSystem) => RenderPlugin_(dxfSystem, option);
522
723
  }
523
724
  });
524
725
  export {
525
- we as Dxf3DView,
526
- fe as RenderPlugin,
527
- Ce as components
726
+ _sfc_main as Dxf3DView,
727
+ RenderPlugin,
728
+ index as components
528
729
  };