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.
- package/package.json +1 -1
- package/src/build.js +1915 -1194
- package/src/index.css +629 -1
- package/src/index.js +7 -7
- package/src/index2.js +528 -327
- package/src/index3.js +1714 -1660
- package/src/selectLocalFile.js +3145 -1955
- package/src/utils/CommandManager/CommandFlow.d.ts +0 -17
- package/src/utils/CommandManager/CommandManager.d.ts +0 -23
- package/src/utils/DxfSystem/components/Dxf.d.ts +0 -1
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/CommandFlowComponent.d.ts +1 -4
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/Default.d.ts +20 -0
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawDoorLine.d.ts +4 -24
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawLine.d.ts +4 -20
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawWindow.d.ts +2 -25
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/PointDrag.d.ts +1 -14
- package/src/utils/DxfSystem/plugin/Editor/components/index.d.ts +0 -1
- package/src/utils/Quadtree/LineSegment.d.ts +0 -1
- package/src/utils/Quadtree/Point.d.ts +1 -2
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/ConnectionLine.d.ts +0 -33
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectLine.d.ts +0 -28
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectWindow.d.ts +0 -33
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/IntersectionConnectionLine.d.ts +0 -33
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/MergeLine.d.ts +0 -33
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/SelectAll.d.ts +0 -30
- package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/VerticalCorrection.d.ts +0 -76
- 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
|
|
2
|
-
import * as
|
|
3
|
-
import { Group
|
|
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
|
|
7
|
-
import { defineComponent
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
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(
|
|
21
|
-
const
|
|
22
|
-
return (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
})
|
|
45
|
-
|
|
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
|
|
52
|
-
rayLineGroup = new
|
|
69
|
+
desPointGroup = new THREE.Group();
|
|
70
|
+
rayLineGroup = new THREE.Group();
|
|
53
71
|
data = [];
|
|
54
|
-
onAddFromParent(
|
|
55
|
-
this.Dxf =
|
|
56
|
-
|
|
57
|
-
this.Renderer
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
64
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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()
|
|
121
|
+
this.createDesPoint();
|
|
122
|
+
this.createRayline();
|
|
83
123
|
}
|
|
84
124
|
createDesPoint() {
|
|
85
|
-
const
|
|
86
|
-
this.desPointGroup.clear()
|
|
87
|
-
|
|
88
|
-
|
|
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:
|
|
132
|
+
background: DES_POINT_DEFAULT_COLOR,
|
|
92
133
|
borderRadius: "40px",
|
|
93
134
|
cursor: "pointer"
|
|
94
135
|
});
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
104
|
-
this.rayLineGroup.clear()
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
|
110
|
-
this.rayLineGroup.add(
|
|
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(
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
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
|
|
126
|
-
Object.assign(
|
|
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
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
140
|
-
|
|
141
|
-
|
|
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(
|
|
210
|
+
this.onLook(point, position);
|
|
144
211
|
}
|
|
145
|
-
}).mount(
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
219
|
+
main.addEventListener("mousedown", (e) => e.stopPropagation());
|
|
220
|
+
document.addEventListener("mousedown", cancelDesBox);
|
|
150
221
|
}
|
|
151
222
|
/**
|
|
152
223
|
* 隐藏详情盒子
|
|
153
224
|
*/
|
|
154
225
|
hideDesBox() {
|
|
155
|
-
|
|
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
|
|
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(
|
|
165
|
-
const
|
|
166
|
-
|
|
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
|
|
173
|
-
|
|
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
|
|
261
|
+
class OriginalLineRender extends Component {
|
|
177
262
|
static name = "OriginalLineRender";
|
|
178
263
|
Dxf = null;
|
|
179
264
|
Renderer = null;
|
|
180
|
-
originalLineMode = new
|
|
181
|
-
appendLineMode = new
|
|
182
|
-
textGroup = new
|
|
183
|
-
pointGroup = new
|
|
184
|
-
distanceGroup = new
|
|
185
|
-
onAddFromParent(
|
|
186
|
-
this.Dxf =
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
})
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
this.
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
this.
|
|
198
|
-
|
|
199
|
-
|
|
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(
|
|
203
|
-
const
|
|
204
|
-
this.textGroup.clear()
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
-
)
|
|
322
|
+
);
|
|
323
|
+
renderer.createPointMesh(new THREE.Vector3(start.x, start.y, dxf.originalZAverage), 0.04, {
|
|
213
324
|
color: 16777215,
|
|
214
|
-
transparent:
|
|
325
|
+
transparent: true,
|
|
215
326
|
opacity: 0.5
|
|
216
|
-
}, this.pointGroup)
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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
|
|
340
|
+
this.originalLineMode.geometry = new THREE.BufferGeometry().setAttribute("position", new THREE.BufferAttribute(originalArray, 3, true));
|
|
228
341
|
}
|
|
229
342
|
}
|
|
230
|
-
class
|
|
343
|
+
class ModelDataRender extends Component {
|
|
231
344
|
static name = "ModelDataRender";
|
|
232
|
-
onAddFromParent(
|
|
233
|
-
this.dxf(
|
|
345
|
+
onAddFromParent(parent) {
|
|
346
|
+
this.dxf(parent);
|
|
347
|
+
this.whiteModel(parent);
|
|
234
348
|
}
|
|
235
|
-
dxf(
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
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
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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(
|
|
250
|
-
const
|
|
251
|
-
|
|
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
|
|
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(
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
this.
|
|
273
|
-
})
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
this.
|
|
277
|
-
})
|
|
278
|
-
|
|
279
|
-
|
|
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(
|
|
285
|
-
|
|
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()
|
|
292
|
-
|
|
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(
|
|
302
|
-
this.keyCombinationMap.set(
|
|
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(
|
|
309
|
-
this.keyCombinationMap.delete(
|
|
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(
|
|
317
|
-
return this.keyList.has(
|
|
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(
|
|
325
|
-
return
|
|
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(
|
|
333
|
-
return
|
|
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(
|
|
341
|
-
|
|
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(
|
|
349
|
-
return this.codeCount === 1 && this.isKeyDown(
|
|
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(
|
|
356
|
-
if (this.currentKeyCombinationMap.has(
|
|
357
|
-
const
|
|
358
|
-
|
|
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
|
|
515
|
+
return false;
|
|
361
516
|
}
|
|
362
517
|
}
|
|
363
|
-
const
|
|
518
|
+
const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
364
519
|
__proto__: null,
|
|
365
|
-
DetailsPointRender
|
|
366
|
-
DomContainer
|
|
367
|
-
DomEventRegister
|
|
368
|
-
EventInput
|
|
369
|
-
ModelDataRender
|
|
370
|
-
OriginalLineRender
|
|
371
|
-
Renderer
|
|
372
|
-
}, Symbol.toStringTag, { value: "Module" }))
|
|
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(
|
|
379
|
-
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
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
|
-
|
|
387
|
-
|
|
388
|
-
|
|
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
|
|
393
|
-
const
|
|
394
|
-
Array.isArray(
|
|
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
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
-
|
|
401
|
-
|
|
402
|
-
|
|
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:
|
|
405
|
-
target:
|
|
584
|
+
position: renderer.camera.position.toArray(),
|
|
585
|
+
target: renderer.orbitControls?.target.toArray()
|
|
406
586
|
}));
|
|
407
587
|
});
|
|
408
|
-
const
|
|
409
|
-
if (
|
|
410
|
-
const
|
|
588
|
+
const d = localStorage.getItem("orbitControls");
|
|
589
|
+
if (d) {
|
|
590
|
+
const data = JSON.parse(d);
|
|
411
591
|
setTimeout(() => {
|
|
412
|
-
|
|
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 (
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
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
|
-
|
|
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
|
-
|
|
686
|
+
], 512);
|
|
687
|
+
};
|
|
494
688
|
}
|
|
495
689
|
});
|
|
496
|
-
function
|
|
690
|
+
function RenderPlugin_(dxfSystem, option = {}) {
|
|
497
691
|
const {
|
|
498
|
-
originalLine
|
|
499
|
-
modelData
|
|
500
|
-
detailsPoint
|
|
501
|
-
orbitControls
|
|
502
|
-
camera
|
|
503
|
-
} =
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
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":
|
|
509
|
-
"3d":
|
|
704
|
+
"2d": domContainer.html2DRenderer,
|
|
705
|
+
"3d": domContainer.html3DRenderer
|
|
510
706
|
},
|
|
511
|
-
resizeObserver:
|
|
512
|
-
orbitControls:
|
|
513
|
-
domElement:
|
|
514
|
-
enableDamping:
|
|
707
|
+
resizeObserver: domContainer.domElement,
|
|
708
|
+
orbitControls: orbitControls ? {
|
|
709
|
+
domElement: domContainer.domElement,
|
|
710
|
+
enableDamping: true,
|
|
515
711
|
dampingFactor: 0.15
|
|
516
712
|
} : void 0
|
|
517
|
-
}))
|
|
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
|
|
520
|
-
create(
|
|
521
|
-
return (
|
|
720
|
+
const RenderPlugin = Object.assign(RenderPlugin_, {
|
|
721
|
+
create(option = {}) {
|
|
722
|
+
return (dxfSystem) => RenderPlugin_(dxfSystem, option);
|
|
522
723
|
}
|
|
523
724
|
});
|
|
524
725
|
export {
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
726
|
+
_sfc_main as Dxf3DView,
|
|
727
|
+
RenderPlugin,
|
|
728
|
+
index as components
|
|
528
729
|
};
|