From 153015e996355722e60293b4e0142e5ed3270150 Mon Sep 17 00:00:00 2001
From: huliang <1539398430@qq.com>
Date: Fri, 27 Jun 2025 14:09:26 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A0=81=E6=A8=A3=E5=BC=8F=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/dashboard/dashboardBuild.vue | 18 ++-----
src/components/forge/Forge.vue | 53 +++++++++++++++++++++
2 files changed, 58 insertions(+), 13 deletions(-)
diff --git a/src/components/dashboard/dashboardBuild.vue b/src/components/dashboard/dashboardBuild.vue
index 08f06f4..4d750d3 100644
--- a/src/components/dashboard/dashboardBuild.vue
+++ b/src/components/dashboard/dashboardBuild.vue
@@ -15,7 +15,7 @@ const { is3D } = inject("app_config");
height: '100%',
}"
>
-
+
![build]()
-
-
-
-
- 掌握建築用電、系統健康狀態,打造智慧節能醫院
-
+
+ 2D
+ 3D
+
diff --git a/src/components/forge/Forge.vue b/src/components/forge/Forge.vue
index 6db6cf2..8d7aefd 100644
--- a/src/components/forge/Forge.vue
+++ b/src/components/forge/Forge.vue
@@ -26,6 +26,10 @@ const initViewer = (container) => {
viewer.impl.renderer().setClearAlpha(0);
viewer.impl.glrenderer().setClearColor(0xffffff, 0);
viewer.impl.invalidate(true);
+ // viewer.addEventListener(
+ // Autodesk.Viewing.CAMERA_CHANGE_EVENT,
+ // trackCamera
+ // ); // 添加相機變化監聽器
resolve(viewer);
}
);
@@ -41,6 +45,21 @@ const loadModel = (filePath) => {
(model) => {
viewer.impl.invalidate(true);
viewer.fitToView();
+ // 設置攝影機位置
+ setTimeout(() => {
+ setCameraPosition(
+ {
+ x: -167.82545540638415,
+ y: 345.10870156503876,
+ z: 81.70050447380856,
+ }, // 攝影機的新位置
+ {
+ x: 21.13901422856481,
+ y: -41.714495314675034,
+ z: -29.07274095478474,
+ } // 攝影機的焦點
+ );
+ }, 500);
resolve(model);
console.log("模型加載完成");
},
@@ -49,6 +68,36 @@ const loadModel = (filePath) => {
});
};
+// 追蹤攝影機位置
+const trackCamera = () => {
+ if (viewer) {
+ const nav = viewer.navigation;
+
+ const cameraPosition = nav.getPosition();
+ const cameraTarget = nav.getTarget();
+
+ console.log("當前相機位置:", cameraPosition);
+ console.log("當前相機目標:", cameraTarget);
+ }
+};
+
+// 設定攝影機位置
+const setCameraPosition = (position, target) => {
+ if (viewer) {
+ const nav = viewer.navigation;
+
+ const newPosition = new THREE.Vector3(position.x, position.y, position.z);
+ const newTarget = new THREE.Vector3(target.x, target.y, target.z);
+
+ nav.setView(newPosition, newTarget);
+ console.log("攝影機定位完成:");
+ console.log("新位置:", newPosition);
+ console.log("新目標:", newTarget);
+ } else {
+ console.warn("Forge Viewer 尚未初始化");
+ }
+};
+
onMounted(async () => {
console.log("Forge 加載");
await initViewer(forgeDom.value);
@@ -59,6 +108,10 @@ onMounted(async () => {
onUnmounted(() => {
console.log("Forge 銷毀");
if (viewer) {
+ // viewer.removeEventListener(
+ // Autodesk.Viewing.CAMERA_CHANGE_EVENT,
+ // trackCamera
+ // ); // 移除事件監聽器
viewer.tearDown();
viewer.finish();
viewer = null;