人生啊人生 10 months ago
parent
commit
1ff1d67fa8

+ 1 - 1
index.html

@@ -4,7 +4,7 @@
     <meta charset="UTF-8" />
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>排水管道智能检测平台</title>
+    <title>排水管网运维养护虚拟仿真教学平台</title>
   </head>
   <body>
     <div id="app"></div>

+ 2 - 2
package-lock.json

@@ -1,11 +1,11 @@
 {
-  "name": "edu-train-web",
+  "name": "water_maintenance",
   "version": "0.0.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "edu-train-web",
+      "name": "water_maintenance",
       "version": "0.0.0",
       "dependencies": {
         "@element-plus/icons-vue": "^2.3.1",

File diff suppressed because it is too large
+ 34 - 922
src/components/student/CourseChapter3d.vue


+ 0 - 5
src/components/student/courseChapter3d/showStudyRight.vue

@@ -54,11 +54,6 @@ const musicImgPlay = function(title : any) {
         return;
     }
 
-    // @ts-ignore
-    courseChapter3dShow().show.objTypeViewEvent.musicConfigPlay(
-        playName, "introduce"
-    );
-
 }
 
 </script>

+ 0 - 2459
src/components/student/event/DragAndDropEvent.ts

@@ -1,2459 +0,0 @@
-import { threeWorld } from "@/stores/threeWorld.ts";
-import { courseChapter3dShow } from "@/stores/courseChapter3dShow.ts";
-
-/**
- * 处理指定物体拖拽逻辑
- * 鼠标事件处理
- */
-export class DragAndDropEvent {
-
-    // 可以被调用的 iframe 对象
-    public objIframe : any = null;
-
-    // 三维对象
-    public ChengGuangYuanJing : any = null;
-
-    // babylon 对象
-    public BABYLON : any = null;
-
-    
-    /**
-     * 用于记录当前的相机对应参数
-     * 当 cameraRadius、cameraAlpha、cameraBeta 都不等于空
-     * 则固定视角对应的参数
-     */
-    public cameraRadius : any = null;
-    public cameraAlpha : any = null;
-    public cameraBeta : any = null;
-
-    /**
-     * 记录当前被点击的物体,当鼠标释放后,则重置为null
-     */
-    public objClickMesh : any = null;
-
-    /**
-     * 记录另外一个可以跟着移动拖拽的物体的坐标,当鼠标释放后,则重置为null
-     */
-    public objClickMesh2 : any = null;
-
-    /**
-     * 记录被点击的物体的时候的坐标
-     * */
-    public clickMeshPosition = { "x" : 0, "y" : 0, "z" : 0 };
-
-    /**
-     * 记录鼠标当时点击三维的坐标
-     */
-    public clickPosition = { "x" : 0, "y" : 0, "z" : 0 };
-
-    /**
-     * 当前不可选中的物体列表,当鼠标弹起,则对应的物体先全部恢复可选中,然后重置为 []
-     */
-    public isPickableList : any = [];
-
-    /**
-     * 上一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEventCallback : any = null;
-    /**
-     * 下一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEventCallback : any = null;
-
-    /**
-     * 当前的鼠标移动逻辑是否可以触发了,进行一个控制
-     * 要不然会出现闪烁问题
-     */
-    public meshBtnInteractiveBool = true;
-
-    // 处理高光的对象
-    public objHighlightLayerEvent : any = null;
-
-    // 当前是否弹出对应的文字逻辑
-    public txtBool = false;
-
-    /**
-     * 记录本次点击,高亮的物体列表
-     */
-    public highlightLayerMeshListClick = [];
-
-
-    // 每次 new 出对象则会调用这个构造函数
-    constructor() {
-        
-    }
-
-    /**
-     * 用于控制点击是否触发拖拽的逻辑
-     * pickResult       鼠标的对象
-     * statue           当前的步骤状态
-     */
-    public dragAndDropClick = (pickResult : any, statue : any) => {
-
-        // console.log(
-        //     "用于控制点击是否触发拖拽的逻辑",
-        //     pickResult
-        // );
-
-        // @ts-ignore
-        let objSceneActiveCamera = this.ChengGuangYuanJing.CommonVal.find().objSceneActiveCamera;
-        
-        let objMesh = pickResult.pickedMesh;
-        let thisClickPosition = pickResult.pickedPoint;
-
-        // 触发点击事件
-        let clickEventBool = false;
-        
-        if (
-            (
-                statue == "将四个安全桩放置到正确的位置"
-                && (
-                    objMesh.id == "model_1709892139359安全桩001"
-                    || objMesh.id == "model_1709892139359安全桩004"
-                    || objMesh.id == "model_1709892139359安全桩003"
-                    || objMesh.id == "model_1709892139359安全桩002"
-                )
-            )
-            
-            || (
-                statue == "将检测机器人6寸轮子安装到正确位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive1"
-                )
-            )
-            
-            || (
-                statue == "将检测机器人的轮子安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive2"
-                    
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive2"
-                )
-            )
-
-            || (
-                statue == "将检测机器人6寸右侧轮子安装到正确位置"
-                && (
-                    // objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive1"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive1"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-
-                    objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive1"
-                )
-            )
-            
-            || (
-                statue == "将检测机器人6寸左侧轮子安装到正确位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive1"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive1"
-                )
-            )
-
-            || (
-                statue == "将检测机器人10寸右侧轮子安装到正确位置"
-                && (
-                    // objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive1"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive2"
-                    
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive1"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive2"
-
-                    objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive2"
-                )
-            )
-
-            || (
-                statue == "将检测机器人10寸左侧轮子安装到正确位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive2"
-                    
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive2"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive1"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive2"
-
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive0"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive1"
-                    // || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive2"
-                )
-            )
-            
-            ||  (
-                statue == "将检测机器人的防撞杆安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_防撞杆_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_防撞杆_primitive1"
-                )
-            ) ||  (
-                statue == "将检测机器人的防撞杆锁安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_防撞杆锁_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_防撞杆锁_primitive1"
-                )
-            ) ||  (
-                statue == "将检测机器人的镜头架安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_镜头架_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive3"
-
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-                )
-            ) ||  (
-                statue == "将检测机器人的相机安装到正确的位置"
-                && (
-
-                    objMesh.id == "exhibition_html_1710385814466_镜头架_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive3"
-
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-                )
-            ) ||  (
-                statue == "将绕线车的电源线安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_绕线车-电源线"
-                )
-            ) ||  (
-                statue == "将绕线车的纠偏轮安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_绕线车-纠偏轮_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_绕线车-纠偏轮_primitive1"
-                )
-            ) ||  (
-                statue == "将绕线车的锂电池安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_锂电池_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_锂电池_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_锂电池_primitive2"
-                )
-            ) ||  (
-                statue == "将绕线车的电脑主机放置到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive3"
-                )
-            ) || (
-                statue == "将绕线车的手柄安装到正确的位置"
-                && (
-                    objMesh.id == "exhibition_html_1710385814466_手柄_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive3"
-                )
-            )
-            
-        ) {
-
-            clickEventBool = true;
-            
-            this.iframeCanvasStyle("pointer");
-            
-            // 开始触发鼠标移动逻辑
-            courseChapter3dShow().show.pickResultMoveBool = true;
-
-        }
-
-        if (clickEventBool == false) {
-            return;
-        }
-
-        // console.log(
-        //     "是否允许拖拽",
-        //     statue,
-        //     objMesh.id,
-        //     gizmoManagerBool,
-        //     objMesh
-        // );
-
-        if (
-            objMesh.parent != null && objMesh.parent != undefined
-            && (
-                (
-                    objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮左_primitive2"
-                    
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮左_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”后轮右_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_10”前轮右_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮左_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮左_primitive0"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”后轮右_primitive0"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”中轮右_primitive1"
-
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_6”前轮右_primitive1"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_镜头架_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive3"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_绕线车-纠偏轮_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_绕线车-纠偏轮_primitive1"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_锂电池_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_锂电池_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_锂电池_primitive2"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑屏幕_primitive2"
-
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_电脑主机_primitive3"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_手柄_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive1"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive2"
-                    || objMesh.id == "exhibition_html_1710385814466_手柄_primitive3"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_防撞杆_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_防撞杆_primitive1"
-                ) || (
-                    objMesh.id == "exhibition_html_1710385814466_防撞杆锁_primitive0"
-                    || objMesh.id == "exhibition_html_1710385814466_防撞杆锁_primitive1"
-                )
-            )
-        ) {
-
-            // 重新更新被拖拽的目标物体
-            objMesh = objMesh.parent;
-
-            let list : any = [];
-
-            // 设置旋转
-            if (objMesh.id == "exhibition_html_1710385814466__10”前轮右") {
-                
-                list = [
-                    
-                    { "name" : "10”前轮右轴", "speed" : 1, "from" : 6, "to" : 6 },
-                    { "name" : "10”前轮右", "speed" : 1, "from" : 6, "to" : 6 },
-
-                ];
-                
-                
-            } else if (objMesh.id == "exhibition_html_1710385814466__10”后轮右") {
-
-                list = [
-                    
-                    { "name" : "10”后轮右轴", "speed" : 1, "from" : 6, "to" : 6 },
-                    { "name" : "10”后轮右", "speed" : 1, "from" : 6, "to" : 6 },
-
-                ];
-                
-            } else if (objMesh.id == "exhibition_html_1710385814466__10”前轮左") {
-
-                list = [
-                    
-                    { "name" : "10”前轮左轴", "speed" : 1, "from" : 6, "to" : 6 },
-                    { "name" : "10”前轮左", "speed" : 1, "from" : 6, "to" : 6 },
-                    
-                ];
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__10”后轮左") {
-
-                list = [
-
-                    { "name" : "10”后轮左轴", "speed" : 1, "from" : 6, "to" : 6 },
-                    { "name" : "10”后轮左", "speed" : 1, "from" : 6, "to" : 6 },
-                    
-                ];
-                
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”前轮右") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”前轮右", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”中轮右") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”中轮右", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”后轮右") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”后轮右", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”前轮左") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”前轮左", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”中轮左") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”中轮左", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            } else if (objMesh.id == "exhibition_html_1710385814466__6”后轮左") {
-
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    "6”后轮左", 'start', 10, 6, 6, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                this.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-
-
-            
-        }
-        
-        if (
-            objSceneActiveCamera != null && objSceneActiveCamera != undefined
-            && clickEventBool == true
-        ) {
-
-            this.cameraRadius = objSceneActiveCamera.radius;
-            this.cameraAlpha = objSceneActiveCamera.alpha;
-            this.cameraBeta = objSceneActiveCamera.beta;
-            this.objClickMesh = objMesh;
-
-            // console.log(
-            //     "点击选中的物体,或者是节点",
-            //     this.objClickMesh
-            // );
-
-            // 进行特殊处理
-            if (this.objClickMesh.id == "exhibition_html_1710385814466__镜头架") {
-                this.objClickMesh2 = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById("exhibition_html_1710385814466__相机");
-            }
-            else if (this.objClickMesh.id == "exhibition_html_1710385814466__相机") {
-                this.objClickMesh2 = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById("exhibition_html_1710385814466__镜头架");
-            }
-            else if (this.objClickMesh.id == "exhibition_html_1710385814466__电脑屏幕") {
-                this.objClickMesh2 = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById("exhibition_html_1710385814466__电脑主机");
-            }
-            else if (this.objClickMesh.id == "exhibition_html_1710385814466__电脑主机") {
-                this.objClickMesh2 = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById("exhibition_html_1710385814466__电脑屏幕");
-            }
-            else {
-                this.objClickMesh2 = null;
-            }
-
-            // objClickMesh2 = objMesh;
-
-            // 临时记录 objClickMesh2 的所在世界坐标
-            if (this.objClickMesh2 != null && this.objClickMesh2 != undefined) {
-
-                this.objClickMesh2["oldAbsolutePosition"] = JSON.parse(JSON.stringify({
-                    "x" : this.objClickMesh2.absolutePosition.x,
-                    "y" : this.objClickMesh2.absolutePosition.y,
-                    "z" : this.objClickMesh2.absolutePosition.z
-                }));
-
-            }
-
-            /**
-             * 这里是关键,一定要把对应的物体不可选中
-             * 后续开发你会发现,会让目标多个物体同时设置不可选中
-             */
-            this.isPickableList = [];
-            this.isPickableList.push(objMesh);
-            this.childrenIsPickableUpdate(this.isPickableList, false);
-
-            
-            // 一定要用获取绝对坐标,这样才可以解决不同模型轴向,问题导致设置 position 会各种出错
-            this.clickMeshPosition.x = objMesh.absolutePosition.x;
-            this.clickMeshPosition.y = objMesh.absolutePosition.y;
-            this.clickMeshPosition.z = objMesh.absolutePosition.z;
-            
-            this.clickPosition.x = thisClickPosition.x;
-            this.clickPosition.y = thisClickPosition.y;
-            this.clickPosition.z = thisClickPosition.z;
-
-        } else {
-
-            this.cameraRadius = null;
-            this.cameraAlpha = null;
-            this.cameraBeta = null;
-            this.objClickMesh = null;
-            this.objClickMesh2 = null;
-
-            // 重置为可选中
-            this.childrenIsPickableUpdate(this.isPickableList, true);
-            this.isPickableList = [];
-
-        }
-        
-    }
-
-    /**
-     * 切换3d的iframe的canvas 的手势样式
-     * type     normal - 正常样式, pointer - 手势样式
-     */
-    public iframeCanvasStyle = (type : any) => {
-        
-        // @ts-ignore
-        // let objRenderCanvas = threeWorld().obj.newIframe.objIframe.document.getElementById("renderCanvas");
-        let objRenderCanvas = threeWorld().obj.newIframe.objIframe.document.getElementById("canvasZone");
-
-        if (objRenderCanvas == null || objRenderCanvas == undefined) {
-            return;
-        }
-
-        // console.log(
-        //     "切换3d的iframe的canvas 的手势样式",
-        //     objRenderCanvas,
-        //     type
-        // );
-
-        if (type == "pointer") {
-            
-            objRenderCanvas.style.cursor = "pointer";
-
-            return;
-        }
-        
-        objRenderCanvas.style.cursor = "default";
-        
-
-    }
-
-    
-    /**
-     * 设置目标对象,是否存在子物体对象,来设置 ( isPickable ) 是否可选中
-     * objMeshList  目标 mesh 或者 node 对象 列表
-     * bool         true - 可选中, false - 不可选中
-     */
-    public childrenIsPickableUpdate = (objMeshList : any, bool : any) => {
-
-        // 设置为不可选中
-        for (var i = 0; i < objMeshList.length; i++) {
-
-            let thisObjMeshList = objMeshList[i];
-
-            // 如果存在子物体
-            if (thisObjMeshList._children != null && thisObjMeshList._children != undefined) {
-
-                for (let i = 0; i < thisObjMeshList._children.length; i++) {
-                    let thisChildren = thisObjMeshList._children[i];
-                    thisChildren.isPickable = bool;
-                }
-                
-            }
-            
-            thisObjMeshList.isPickable = bool;
-
-        }
-        
-    }
-
-    /**
-     * 用于控制拖拽鼠标弹起后的逻辑
-     * pickResult       鼠标的对象
-     * statue           当前的步骤状态
-     */
-    public dragAndDropPointerup = (pickResult : any, statue : any) => {
-
-        // console.log(
-        //     "用于控制拖拽鼠标弹起后的逻辑",
-        //     // pickResult,
-        //     pickResult.pickedPoint
-        // );
-
-        // let objMesh = pickResult.pickedMesh;
-        // let thisClickPosition = pickResult.pickedPoint;
-        
-        if (
-            statue == "将四个安全桩放置到正确的位置"
-            || statue == "将检测机器人6寸轮子安装到正确位置"
-            || statue == "将检测机器人的轮子安装到正确的位置"
-
-            || statue == "将检测机器人6寸右侧轮子安装到正确位置"
-            || statue == "将检测机器人6寸左侧轮子安装到正确位置"
-            || statue == "将检测机器人10寸右侧轮子安装到正确位置"
-            || statue == "将检测机器人10寸左侧轮子安装到正确位置"
-
-            || statue == "将检测机器人的防撞杆安装到正确的位置"
-            || statue == "将检测机器人的防撞杆锁安装到正确的位置"
-            || statue == "将检测机器人的镜头架安装到正确的位置"
-            || statue == "将检测机器人的相机安装到正确的位置"
-            || statue == "将绕线车的电源线安装到正确的位置"
-            || statue == "将绕线车的纠偏轮安装到正确的位置"
-            || statue == "将绕线车的锂电池安装到正确的位置"
-            || statue == "将绕线车的电脑主机放置到正确的位置"
-            || statue == "将绕线车的手柄安装到正确的位置"
-        ) {
-            this.dragAndDropPointerupEvent(pickResult, statue);
-        }
-        
-        this.cameraRadius = null;
-        this.cameraAlpha = null;
-        this.cameraBeta = null;
-        this.objClickMesh = null;
-        this.objClickMesh2 = null;
-
-        // 重置为可选中
-        this.childrenIsPickableUpdate(this.isPickableList, true);
-        this.isPickableList = [];
-
-        
-        if (
-            statue == "将四个安全桩放置到正确的位置"
-            || statue == "将检测机器人6寸轮子安装到正确位置"
-            || statue == "将检测机器人的轮子安装到正确的位置"
-            
-            || statue == "将检测机器人6寸右侧轮子安装到正确位置"
-            || statue == "将检测机器人6寸左侧轮子安装到正确位置"
-            || statue == "将检测机器人10寸右侧轮子安装到正确位置"
-            || statue == "将检测机器人10寸左侧轮子安装到正确位置"
-
-            || statue == "将检测机器人的防撞杆安装到正确的位置"
-            || statue == "将检测机器人的防撞杆锁安装到正确的位置"
-            || statue == "将检测机器人的镜头架安装到正确的位置"
-            || statue == "将检测机器人的相机安装到正确的位置"
-            || statue == "将绕线车的电源线安装到正确的位置"
-            || statue == "将绕线车的纠偏轮安装到正确的位置"
-            || statue == "将绕线车的锂电池安装到正确的位置"
-            || statue == "将绕线车的电脑主机放置到正确的位置"
-            || statue == "将绕线车的手柄安装到正确的位置"
-        ) {
-
-            this.iframeCanvasStyle("normal");
-            // 开始触发鼠标移动逻辑
-            courseChapter3dShow().show.pickResultMoveBool = false;
-
-        }
-        
-    }
-
-    /**
-     * 拖拽鼠标弹起后判断对应流程是否可以继续往下走
-     * pickResult       鼠标的对象
-     * statue           当前的步骤状态
-     * 
-     */
-    public dragAndDropPointerupEvent = (pickResult : any, statue : any) => {
-
-        if (this.objClickMesh == null || this.objClickMesh == undefined) {
-            return;
-        }
-        
-        let meshInstallConfig : any = threeWorld().obj.meshInstallConfig;
-
-        // console.log(
-        //     "拖拽鼠标弹起后判断对应流程是否可以继续往下走",
-        //     statue,
-        //     meshInstallConfig
-        // );
-
-        // @ts-ignore
-        let CommonVal = this.ChengGuangYuanJing.CommonVal;
-
-        // 被判断的多个物体列表
-        let list : any = [];
-
-        // 对应数组下标数量
-        let positionListIndex : any = {};
-        // 记录 positionListIndex 出现的数量
-        let positionListIndexSum = 0;
-
-        // 记录符合条件的数量
-        let sumOk = 0;
-
-        // 记录符合条件的id
-        let okJsonId : any = {};
-
-        // 是否出现过不符合条件的数据
-        let noCondition = false;
-
-        // 是否出现设置到范围坐标里
-        let updatePosition = false;
-
-        switch (statue) {
-
-            case '将四个安全桩放置到正确的位置':
-
-                // objClickMesh
-
-                list = [
-                    "model_1709892139359安全桩001",
-                    "model_1709892139359安全桩002",
-                    "model_1709892139359安全桩003",
-                    "model_1709892139359安全桩004",
-                ];
-
-                // 判断已经在的数组下标数量
-                for (let i = 0; i < list.length; i++) {
-
-                    let thisList = list[i];
-
-                    let objMesh = CommonVal.find().objScene.getMeshById(thisList);
-                    if (objMesh != null && objMesh != undefined) {
-                        
-                        if (meshInstallConfig[thisList] != null && meshInstallConfig[thisList] != undefined) {
-
-                            let objMeshInstallConfig = meshInstallConfig[thisList];
-                            let absolutePosition = objMeshInstallConfig['absolutePosition'];
-                            let positionList = objMeshInstallConfig['positionList'];
-                            let distance = objMeshInstallConfig['distance'];
-                            
-                            for (let positionListI = 0; positionListI < positionList.length; positionListI++) {
-
-                                let thisPositionList = positionList[positionListI];
-                                    // 得到两点之间的距离
-                                let thisVector3distanceTo = this.BABYLON.Vector3.Distance(
-                                    new this.BABYLON.Vector3(parseFloat(objMesh.absolutePosition.x), parseFloat(objMesh.absolutePosition.y), parseFloat(objMesh.absolutePosition.z)),
-                                    new this.BABYLON.Vector3(parseFloat(thisPositionList.x), parseFloat(thisPositionList.y), parseFloat(thisPositionList.z))
-                                );
-
-                                // console.log(
-                                //     "thisVector3distanceTo", thisVector3distanceTo
-                                // );
-
-                                if (thisVector3distanceTo <= distance) {
-
-                                    if (positionListIndex[positionListI] == null || positionListIndex[positionListI] == undefined) {
-                                        positionListIndex[positionListI] = [];
-                                    }
-
-                                    positionListIndex[positionListI].push(thisList);
-
-                                    // 设置为所在坐标
-                                    if (thisList == this.objClickMesh.id) {
-
-                                        updatePosition = true;
-
-                                        // 回归坐标点逻辑
-                                        this.objClickMesh.setAbsolutePosition(
-                                            new this.BABYLON.Vector3(
-                                                parseFloat(thisPositionList.x), parseFloat(thisPositionList.y), parseFloat(thisPositionList.z)
-                                            )
-                                        );
-
-                                    }
-                                    
-                                }
-                                
-                            }
-
-                        }
-                    }
-
-                }
-
-                // console.log(
-                //     "positionListIndex", positionListIndex
-                // );
-                
-                // 循环判断是否恢复原始位置
-                for (let key in positionListIndex) {
-
-                    positionListIndexSum += 1;
-
-                    let array = positionListIndex[key];
-
-                    // console.log(
-                    //     "array", array
-                    // );
-
-                    if (array.length <= 0) {
-                        noCondition = true;
-                    }
-
-                    if (array.length >= 2) {
-                        noCondition = true;
-
-                        for (let i = 0; i < array.length; i++) {
-
-                            let thisArray = array[i];
-                            // console.log(
-                            //     "thisArray", thisArray
-                            // );
-
-                            if (thisArray == this.objClickMesh.id) {
-
-                                if (meshInstallConfig[thisArray] != null && meshInstallConfig[thisArray] != undefined) {
-
-                                    let objMeshInstallConfig = meshInstallConfig[thisArray];
-                                    let absolutePosition = objMeshInstallConfig['absolutePosition'];
-
-                                    // 回归坐标点逻辑
-                                    this.objClickMesh.setAbsolutePosition(
-                                        new this.BABYLON.Vector3(
-                                            parseFloat(absolutePosition.x), parseFloat(absolutePosition.y), parseFloat(absolutePosition.z)
-                                        )
-                                    );
-                                
-                                }
-                                
-                            }
-
-                        }
-
-                    }
-
-                }
-
-                // console.log(
-                //     "noCondition", noCondition,
-                //     positionListIndex
-
-                // );
-
-                // 没有出现过在范围做表里
-                if (updatePosition == false) {
-
-                    if (meshInstallConfig[this.objClickMesh.id] != null && meshInstallConfig[this.objClickMesh.id] != undefined) {
-
-                        let objMeshInstallConfig = meshInstallConfig[this.objClickMesh.id];
-                        let absolutePosition = objMeshInstallConfig['absolutePosition'];
-
-                        // 回归坐标点逻辑
-                        this.objClickMesh.setAbsolutePosition(
-                            new this.BABYLON.Vector3(
-                                parseFloat(absolutePosition.x), parseFloat(absolutePosition.y), parseFloat(absolutePosition.z)
-                            )
-                        );
-
-                    }
-
-                }
-
-                if (noCondition == false && positionListIndexSum >= list.length) {
-
-                    courseChapter3dShow().show.showCongratulationsViewBool = true;
-                    courseChapter3dShow().show.showEndViewBool = true;
-                    // courseChapter3dShow().show.showCongratulationsTxt = "安全桩成功放置完成,请点击下一步,将盒子拆开";
-                    
-                    // 上一步和下一步是否显示
-                    this.tipsBtnsUpOpenEvent(true);
-                    this.tipsBtnsDownOpenEvent(true);
-
-                } else {
-
-                    courseChapter3dShow().show.showCongratulationsViewBool = false;
-                    courseChapter3dShow().show.showEndViewBool = false;
-
-                    // 上一步和下一步是否显示
-                    this.tipsBtnsUpOpenEvent(false);
-                    this.tipsBtnsDownOpenEvent(false);
-
-                }
-                
-                break;
-
-            case '将检测机器人6寸轮子安装到正确位置':
-
-                list = [
-                    
-                    "exhibition_html_1710385814466__6”前轮右",
-                    "exhibition_html_1710385814466__6”中轮右",
-                    "exhibition_html_1710385814466__6”后轮右",
-                    "exhibition_html_1710385814466__6”前轮左",
-                    "exhibition_html_1710385814466__6”中轮左",
-                    "exhibition_html_1710385814466__6”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-
-                break;
-
-            case '将检测机器人的轮子安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__10”前轮右",
-                    "exhibition_html_1710385814466__10”后轮右",
-                    "exhibition_html_1710385814466__10”前轮左",
-                    "exhibition_html_1710385814466__10”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将检测机器人6寸右侧轮子安装到正确位置':
-
-                list = [
-                    
-                    "exhibition_html_1710385814466__6”前轮右",
-                    "exhibition_html_1710385814466__6”中轮右",
-                    "exhibition_html_1710385814466__6”后轮右",
-                    // "exhibition_html_1710385814466__6”前轮左",
-                    // "exhibition_html_1710385814466__6”中轮左",
-                    // "exhibition_html_1710385814466__6”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-
-                break;
-
-            case '将检测机器人6寸左侧轮子安装到正确位置':
-
-                list = [
-                    
-                    // "exhibition_html_1710385814466__6”前轮右",
-                    // "exhibition_html_1710385814466__6”中轮右",
-                    // "exhibition_html_1710385814466__6”后轮右",
-                    "exhibition_html_1710385814466__6”前轮左",
-                    "exhibition_html_1710385814466__6”中轮左",
-                    "exhibition_html_1710385814466__6”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-
-                break;
-
-            case '将检测机器人10寸右侧轮子安装到正确位置':
-
-                list = [
-                    "exhibition_html_1710385814466__10”前轮右",
-                    "exhibition_html_1710385814466__10”后轮右",
-                    // "exhibition_html_1710385814466__10”前轮左",
-                    // "exhibition_html_1710385814466__10”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将检测机器人10寸左侧轮子安装到正确位置':
-
-                list = [
-                    // "exhibition_html_1710385814466__10”前轮右",
-                    // "exhibition_html_1710385814466__10”后轮右",
-                    "exhibition_html_1710385814466__10”前轮左",
-                    "exhibition_html_1710385814466__10”后轮左",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-                
-            case '将检测机器人的防撞杆安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__防撞杆",
-                ];
-                
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将检测机器人的防撞杆锁安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__防撞杆锁",
-                ];
-                
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将检测机器人的镜头架安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__镜头架",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将检测机器人的相机安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__相机",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将绕线车的电源线安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466_绕线车-电源线",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'mesh');
-                
-                break;
-                
-            case '将绕线车的纠偏轮安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__绕线车-纠偏轮",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将绕线车的锂电池安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__锂电池",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将绕线车的电脑主机放置到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__电脑屏幕",
-                    // "exhibition_html_1710385814466__电脑主机",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-
-            case '将绕线车的手柄安装到正确的位置':
-
-                list = [
-                    "exhibition_html_1710385814466__手柄",
-                ];
-
-                this.dragAndDropPointerupAnimationEvent(statue, list, 'node');
-                
-                break;
-                
-        }
-
-    }
-
-    /**
-     * 统一判断拖拽通过动画来决定安装的结果
-     * statue           当前的步骤状态
-     * list         目标列表
-     * type         类型
-     *              mesh - 物体
-     *              node - Node
-     * 
-     * 
-     * 
-     */
-    public dragAndDropPointerupAnimationEvent = (statue : any, list : any, type : any) => {
-        
-        let meshInstallConfig : any = threeWorld().obj.meshInstallConfig;
-        // @ts-ignore
-        let CommonVal = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal;
-        
-        // 记录符合条件的数量
-        let sumOk = 0;
-
-        // 记录符合条件的id
-        let okJsonId : any = {};
-
-        // 判断已经在的数组下标数量
-        for (let i = 0; i < list.length; i++) {
-
-            let thisList = list[i];
-
-            // let objMesh = CommonVal.find().objScene.getMeshById(thisList);
-            let objNode = type == 'mesh' ? CommonVal.find().objScene.getMeshById(thisList) : CommonVal.find().objScene.getNodeById(thisList);
-
-            // console.log(
-            //     statue, objClickMesh.getClassName(), thisList, objMesh, objNode
-            // );
-
-            if (objNode != null && objNode != undefined) {
-                
-                if (meshInstallConfig[thisList] != null && meshInstallConfig[thisList] != undefined) {
-
-                    let objMeshInstallConfig = meshInstallConfig[thisList];
-
-                    let animationInstall = objMeshInstallConfig['animationInstall'];
-                    let animationEnd = objMeshInstallConfig['animationEnd'];
-
-                    let animationInstallList = objMeshInstallConfig['animationInstallList'];
-                    let animationEndList = objMeshInstallConfig['animationEndList'];
-
-
-                    let positionList = objMeshInstallConfig['positionList'];
-                    let distance = objMeshInstallConfig['distance'];
-
-                    let resetPosition = objMeshInstallConfig['resetPosition']
-                    
-                    for (let positionListI = 0; positionListI < positionList.length; positionListI++) {
-
-                        let thisPositionList = positionList[positionListI];
-                            // 得到两点之间的距离
-                        let thisVector3distanceTo = this.BABYLON.Vector3.Distance(
-                            new this.BABYLON.Vector3(parseFloat(objNode.absolutePosition.x), parseFloat(objNode.absolutePosition.y), parseFloat(objNode.absolutePosition.z)),
-                            new this.BABYLON.Vector3(parseFloat(thisPositionList.x), parseFloat(thisPositionList.y), parseFloat(thisPositionList.z))
-                        );
-
-                        // console.log(
-                        //     "thisVector3distanceTo",
-                        //     thisVector3distanceTo,
-                        //     distance
-                        // );
-
-                        if (thisVector3distanceTo <= distance) {
-                            
-                            // console.log(
-                            //     "距离范围【内】播放动画", animationEnd, animationEndList
-                            // );
-
-                            if (okJsonId[thisList] == null || okJsonId[thisList] == undefined) {
-                                okJsonId[thisList] = thisList;
-                                sumOk += 1;
-                            }
-
-                            // 单个动画
-                            if (animationEnd != null && animationEnd != undefined) {
-
-                                // @ts-ignore
-                                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                                    animationEnd.name, 'start', animationEnd.speed, animationEnd.from, animationEnd.to, false, null, function(state : any, objAnimation : any) {
-
-                                        if (state == "播放完成") {
-                                            
-                                        }
-                                        
-                                    }
-                                );
-
-                            }
-
-                            // 多个动画
-                            if (animationEndList != null && animationEndList != undefined) {
-
-                                for (let animationEndListI = 0; animationEndListI < animationEndList.length; animationEndListI++) {
-                                    
-                                    let thisAnimationEndList = animationEndList[animationEndListI];
-                                    // @ts-ignore
-                                    threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                                        thisAnimationEndList.name, 'start', thisAnimationEndList.speed, thisAnimationEndList.from, thisAnimationEndList.to, false, null, function(state : any, objAnimation : any) {
-
-                                            if (state == "播放完成") {
-                                                
-                                            }
-                                            
-                                        }
-                                    );
-
-                                }
-
-                            }
-                            
-                        } else {
-
-                            // console.log(
-                            //     "距离范围【外】播放动画", animationInstall, animationInstallList
-                            // );
-
-                            // 单个动画
-                            if (animationInstall != null && animationInstall != undefined) {
-
-                                // @ts-ignore
-                                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                                    animationInstall.name, 'start', animationInstall.speed, animationInstall.from, animationInstall.to, false, null, function(state : any, objAnimation : any) {
-
-                                        if (state == "播放完成") {
-                                            
-                                        }
-                                        
-                                    }
-                                );
-
-                            }
-
-                            // 多个动画
-                            if (animationInstallList != null && animationInstallList != undefined) {
-
-                                for (let animationInstallListI = 0; animationInstallListI < animationInstallList.length; animationInstallListI++) {
-                                    
-                                    let thisAnimationInstallList = animationInstallList[animationInstallListI];
-                                    // @ts-ignore
-                                    threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                                        thisAnimationInstallList.name, 'start', thisAnimationInstallList.speed, thisAnimationInstallList.from, thisAnimationInstallList.to, false, null, function(state : any, objAnimation : any) {
-
-                                            if (state == "播放完成") {
-                                                
-                                            }
-                                            
-                                        }
-                                    );
-
-                                }
-
-                            }
-
-                        }
-
-                        // 回归原始坐标
-                        if (resetPosition != null && resetPosition != undefined) {
-
-                            for (let resetPositionKey in resetPosition) {
-
-                                let objMeshReset = CommonVal.find().objScene.getMeshById(resetPositionKey)
-                                let objNodeReset = CommonVal.find().objScene.getNodeById(resetPositionKey);
-
-                                let thisResetPosition = resetPosition[resetPositionKey];
-
-                                let thisResetPositionNew = { "x": 0, "y": 0, "z": 0 };
-
-                                if (thisVector3distanceTo <= distance) {
-                                    thisResetPositionNew = thisResetPosition["End"];
-                                } else {
-                                    thisResetPositionNew = thisResetPosition["Install"];
-                                }
-
-                                if (objMeshReset != null && objMeshReset != undefined) {
-
-                                    objMeshReset.setAbsolutePosition(
-                                        new this.BABYLON.Vector3(
-                                            thisResetPositionNew.x,
-                                            thisResetPositionNew.y,
-                                            thisResetPositionNew.z
-                                        )
-                                    );
-                                }
-
-                                if (objNodeReset != null && objNodeReset != undefined) {
-                                    objNodeReset.setAbsolutePosition(
-                                        new this.BABYLON.Vector3(
-                                            thisResetPositionNew.x,
-                                            thisResetPositionNew.y,
-                                            thisResetPositionNew.z
-                                        )
-                                    );
-                                }
-                                
-                            }
-
-
-                        }
-                        
-                    }
-
-                }
-            }
-            
-            // console.log(
-            //     statue, sumOk, list.length
-            // );
-
-            if (sumOk >= list.length) {
-
-                courseChapter3dShow().show.showCongratulationsViewBool = true;
-                courseChapter3dShow().show.showEndViewBool = true;
-
-                // 上一步和下一步是否显示
-                this.tipsBtnsUpOpenEvent(true);
-                this.tipsBtnsDownOpenEvent(true);
-
-            } else {
-
-                courseChapter3dShow().show.showCongratulationsViewBool = false;
-                courseChapter3dShow().show.showEndViewBool = false;
-
-                // 上一步和下一步是否显示
-                this.tipsBtnsUpOpenEvent(false);
-                this.tipsBtnsDownOpenEvent(false);
-
-            }
-
-        }
-
-    }
-
-    /**
-     * 用于每帧是否固定相机视角逻辑,该方法每帧被调用
-     */
-    public cameraVisualAngleUpdate = () => {
-        
-
-        // 固定相机视角逻辑
-        if (
-            this.cameraRadius != null && this.cameraRadius != undefined
-            && this.cameraAlpha != null && this.cameraAlpha != undefined
-            && this.cameraBeta != null && this.cameraBeta != undefined
-        ) {
-
-            // @ts-ignore
-            let objSceneActiveCamera = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objSceneActiveCamera;
-            if (objSceneActiveCamera != null && objSceneActiveCamera != undefined) {
-
-                objSceneActiveCamera.radius = this.cameraRadius;
-                objSceneActiveCamera.alpha = this.cameraAlpha;
-                objSceneActiveCamera.beta = this.cameraBeta;
-                
-            }
-            
-        }
-
-    }
-
-
-    /**
-     * 用于拖拽移动的逻辑
-     * pickResult       鼠标的对象
-     * statue           当前的步骤状态
-     */
-    public dragAndDropMove = (pickResult : any, statue : any) => {
-
-        // console.log(
-        //     "用于拖拽移动的逻辑",
-        //     pickResult
-        // );
-
-        if (this.objClickMesh == null || this.objClickMesh == undefined) {
-            return;
-        }
-
-        let objMesh = pickResult.pickedMesh;
-        let thisMovePosition = pickResult.pickedPoint;
-
-        console.log(
-            "this.objClickMesh", this.objClickMesh
-        );
-
-        console.log(
-            "鼠标移动触发逻辑",
-            // "pickResult",
-            // pickResult,
-            thisMovePosition,
-            this.objClickMesh.id
-        );
-
-        // 追加的xyz坐标
-        let addPosition2 = { "x" : 0, "y" : 0, "z" : 0 };
-
-        // 旋转
-        let rotationQuaternionNew : any = null;
-
-        // 对应的物体也要跟着旋转
-        let rotationQuaternionList : any = null;
-
-        // 特殊处理
-        if (this.objClickMesh.id == "exhibition_html_1710385814466__10”前轮左") {
-            // addPosition2 = { "x" : 0, "y" : -0.25, "z" : 0.3 };
-            addPosition2 = { "x" : 0, "y" : 0.05, "z" : 0.3 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__10”后轮左") {
-            // addPosition2 = { "x" : 0, "y" : -0.25, "z" : 0.3 };
-            addPosition2 = { "x" : 0, "y" : 0.05, "z" : 0.3 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__10”后轮右") {
-            
-            // addPosition2 = { "x" : 0, "y" : 0.25, "z" : -0.3 };
-            // addPosition2 = { "x" : 0, "y" : 0.55, "z" : -0.3 };
-            // addPosition2 = { "x" : 0, "y" : 0.25, "z" : -0.3 };
-            addPosition2 = { "x" : 0, "y" : 0.05, "z" : -0.3 };
-
-            rotationQuaternionNew = {
-                "x": 1,
-                "y": -8.742277657347586e-8,
-                "z": -1.910685426890209e-15,
-                "w": -2.1855694143368964e-8
-            }
-
-            rotationQuaternionList = {
-                "exhibition_html_1710385814466__10”后轮右轴" : 
-                {
-                    "x": 1,
-                    "y": -8.742277657347586e-8,
-                    "z": -1.9106854647700726e-15,
-                    "w": -2.1855694143368964e-8
-                },
-            };
-            
-
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__10”前轮右") {
-
-            // addPosition2 = { "x" : 0, "y" : 0.25, "z" : -0.3 };
-            // addPosition2 = { "x" : 0, "y" : 0.55, "z" : -0.3 };
-            // addPosition2 = { "x" : 0, "y" : 0.25, "z" : -0.3 };
-            addPosition2 = { "x" : 0, "y" : 0.05, "z" : -0.3 };
-
-            rotationQuaternionNew = {
-                "x": 1,
-                "y": -8.742277657347586e-8,
-                "z": -1.910685426890209e-15,
-                "w": -2.1855694143368964e-8
-            }
-
-            rotationQuaternionList = {
-                "exhibition_html_1710385814466__10”前轮右轴" : 
-                {
-                    "x": 1,
-                    "y": -8.742277657347586e-8,
-                    "z": -1.9106854647700726e-15,
-                    "w": -2.1855694143368964e-8
-                },
-            };
-            
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”前轮右") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”中轮右") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”后轮右") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”前轮左") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”中轮左") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__6”后轮左") {
-            addPosition2 = { "x" : 0, "y" : 0.15, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "model_1709892139359安全桩001") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "model_1709892139359安全桩004") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "model_1709892139359安全桩003") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "model_1709892139359安全桩002") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__防撞杆") {
-            addPosition2 = { "x" : 0, "y" : 0.1, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__防撞杆锁") {
-            addPosition2 = { "x" : 0, "y" : 0.1, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__相机") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__镜头架") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466_绕线车-电源线") {
-            addPosition2 = { "x" : 0, "y" : 0.2, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__绕线车-纠偏轮") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__锂电池") {
-            addPosition2 = { "x" : 0, "y" : 0.25, "z" : 0 };
-        }
-
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__电脑屏幕") {
-            addPosition2 = { "x" : 0, "y" : 0.2, "z" : 0 };
-        }
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__电脑主机") {
-            addPosition2 = { "x" : 0, "y" : 0.2, "z" : 0 };
-        }
-        
-        else if (this.objClickMesh.id == "exhibition_html_1710385814466__手柄") {
-            addPosition2 = { "x" : 0, "y" : 0.2, "z" : 0 };
-        }
-        
-        if (this.objClickMesh != null && this.objClickMesh != undefined) {
-            
-            // 追加的xyz坐标
-            let addPosition = {
-                "x" : thisMovePosition.x - this.clickPosition.x,
-                "y" : thisMovePosition.y - this.clickPosition.y,
-                "z" : thisMovePosition.z - this.clickPosition.z,
-            };
-            
-            // console.log(
-            //     "拖拽物体id",
-            //     this.objClickMesh.id,
-            //     // this.objClickMesh._rotationQuaternion,
-            // );
-            
-            // 如果存在旋转,在根据这个来旋转
-            if (rotationQuaternionNew != null && rotationQuaternionNew != undefined) {
-
-                this.objClickMesh._rotationQuaternion.x = rotationQuaternionNew.x;
-                this.objClickMesh._rotationQuaternion.y = rotationQuaternionNew.y;
-                this.objClickMesh._rotationQuaternion.z = rotationQuaternionNew.z;
-                this.objClickMesh._rotationQuaternion.w = rotationQuaternionNew.w;
-                
-            }
-
-            if (rotationQuaternionList != null && rotationQuaternionList != undefined) {
-                
-                if (this.objClickMesh["parent"] != null && this.objClickMesh["parent"] != undefined) {
-
-                    var meshParent = this.objClickMesh["parent"];
-                    var meshParentId = meshParent.id;
-                    if (rotationQuaternionList[meshParentId] != null && rotationQuaternionList[meshParentId] != undefined) {
-
-                        var thisRotationQuaternionList = rotationQuaternionList[meshParentId];
-                        meshParent._rotationQuaternion.x = thisRotationQuaternionList.x;
-                        meshParent._rotationQuaternion.y = thisRotationQuaternionList.y;
-                        meshParent._rotationQuaternion.z = thisRotationQuaternionList.z;
-                        meshParent._rotationQuaternion.w = thisRotationQuaternionList.w;
-
-                    }
-
-                }
-
-            }
-            
-            // 一定要用绝对坐标更新,这样才可以解决不同模型轴向,问题导致设置 position 会各种出错
-            this.objClickMesh.setAbsolutePosition(
-                new this.BABYLON.Vector3(
-                    this.clickMeshPosition.x + addPosition.x + addPosition2.x,
-                    this.clickMeshPosition.y + addPosition.y + addPosition2.y,
-                    this.clickMeshPosition.z + addPosition.z + addPosition2.z
-                )
-            );
-            
-        }
-
-        // 另外一个物体一起跟着拖拽
-        if (this.objClickMesh2 != null && this.objClickMesh2 != undefined) {
-            
-            // // 追加的xyz坐标
-            // let addPosition = {
-            //     "x" : thisMovePosition.x - this.clickPosition.x,
-            //     "y" : thisMovePosition.y - this.clickPosition.y,
-            //     "z" : thisMovePosition.z - this.clickPosition.z,
-            // };
-
-            // 追加的xyz坐标 【 跟着一起追加偏移 】
-            let addPosition = {
-                "x" : thisMovePosition.x - this.clickPosition.x + addPosition2.x,
-                "y" : thisMovePosition.y - this.clickPosition.y + addPosition2.y,
-                "z" : thisMovePosition.z - this.clickPosition.z + addPosition2.z,
-            };
-
-            // 一定要用绝对坐标更新,这样才可以解决不同模型轴向,问题导致设置 position 会各种出错
-            this.objClickMesh2.setAbsolutePosition(
-                new this.BABYLON.Vector3(
-                    parseFloat(this.objClickMesh2["oldAbsolutePosition"].x) + addPosition.x,
-                    parseFloat(this.objClickMesh2["oldAbsolutePosition"].y) + addPosition.y,
-                    parseFloat(this.objClickMesh2["oldAbsolutePosition"].z) + addPosition.z
-                )
-            );
-
-        }
-        
-    }
-
-
-
-    /**
-     * 上一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsUpOpenEventCallback != null && this.tipsBtnsUpOpenEventCallback != undefined) {
-            this.tipsBtnsUpOpenEventCallback(open);
-        }
-    }
-
-    /**
-     * 下一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsDownOpenEventCallback != null && this.tipsBtnsDownOpenEventCallback != undefined) {
-            this.tipsBtnsDownOpenEventCallback(open);
-        }
-    }
-
-    
-
-
-    /**
-     * 切换指定按钮的交互逻辑
-     * obj              鼠标移动传来的对象
-     * statue           当前的步骤状态
-     * */
-    public threeWorldPointerMove = (obj : any, statue : any) => {
-
-        // 如果不可以触发
-        if (this.meshBtnInteractiveBool == false) {
-            return;
-        }
-
-        // 此时不可触发
-        if (this.txtBool == false) {
-            return;
-        }
-
-        let objMesh = obj.pickedMesh;
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-
-        // console.log(
-        //     " 鼠标移动传来的对象 threeWorldPointerMove = (obj : any) => { ", objMesh.id
-        // );
-
-        this.meshBtnInteractive(objMesh.id);
-        
-    }
-
-    /**
-     * 指定的目标物体id触发交互逻辑
-     * objMeshId            被放大的按钮id
-     */
-    public meshBtnInteractive = (objMeshId : any) => {
-        
-        let thisObj = this;
-
-        // 当前的时间戳
-        let thisTime = new Date().getTime();
-
-        let list = [
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框05",
-                "list" : [ "exhibition_html_1710385814466_检测车文字03" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字03",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框05" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框06",
-                "list" : [ "exhibition_html_1710385814466_检测车文字04" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字04",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框06" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框07",
-                "list" : [ "exhibition_html_1710385814466_检测车文字07" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字07",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框07" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框08",
-                "list" : [ "exhibition_html_1710385814466_检测车文字08" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字08",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框08" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框04",
-                "list" : [ "exhibition_html_1710385814466_检测车文字05" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字05",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框04" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框03",
-                "list" : [ "exhibition_html_1710385814466_检测车文字06" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字06",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框03" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框02",
-                "list" : [ "exhibition_html_1710385814466_检测车文字01" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字01",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框02" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字框01",
-                "list" : [ "exhibition_html_1710385814466_检测车文字02" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_检测车文字02",
-                "list" : [ "exhibition_html_1710385814466_检测车文字框01" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字01",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字框002" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字框002",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字01" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字02",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字框001" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字框001",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字02" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字03",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字框004" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字框004",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字03" ],
-            },
-
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字04",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字框003" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字框003",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字04" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字005",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字框005" ],
-            },
-            {
-                "meshId" : "exhibition_html_1710385814466_绕线车文字框005",
-                "list" : [ "exhibition_html_1710385814466_绕线车文字005" ],
-            },
-            
-        ];
-
-        for (let i = 0; i < list.length; i++) {
-
-            let thisList = list[i];
-            let meshId = thisList['meshId'];
-            let listFor = thisList['list'];
-            listFor.push(meshId);
-
-            // 决定缩放的值
-            let scaling = 1;
-            // 决定缩放的最大值
-            let scalingMax = 2;
-
-            // 切换的颜色值
-            let color : any = {
-                r : 0,
-                g : 102,
-                b : 255
-            };
-
-            if (objMeshId != null && objMeshId != undefined && objMeshId == meshId) {
-
-                scaling = scalingMax;
-
-                color = {
-                    r : 255,
-                    g : 255,
-                    b : 0
-                };
-
-                thisObj.meshBtnInteractiveBool = false;
-                setTimeout(function() {
-                    thisObj.meshBtnInteractiveBool = true;
-                }, 200);
-
-            } else {
-
-            }
-
-            // console.log(
-            //     "触发3d按钮交互逻辑", objMeshId, scaling, listFor
-            // );
-
-            for (let listForI = 0; listForI < listFor.length; listForI++) {
-
-                let thisListFor = listFor[listForI];
-                // @ts-ignore
-                let objMesh = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(thisListFor);
-                if (objMesh != null && objMesh != undefined && objMesh.material != null && objMesh.material != undefined) {
-
-
-                    // if (objMesh.material != null && objMesh.material != undefined) {
-                        
-                    //     let newColor = new BABYLON.Color3(
-                    //         parseFloat(color.r) / 255,
-                    //         parseFloat(color.g) / 255,
-                    //         parseFloat(color.b) / 255
-                    //     );
-
-                    //     objMesh.material.albedoColor = newColor;
-                    //     objMesh.material.emissiveColor = newColor;
-
-                    //     console.log(
-                    //         "objMesh.material",
-                    //         objMesh.id,
-                    //         objMesh.material.albedoColor
-                    //     );
-                    
-                    // }
-
-                    // 可以被选中
-                    objMesh.isPickable = true;
-                    
-                    // 记录最后一次缩放的值和时间戳
-                    if (objMesh["carNewScaling"] == null || objMesh["carNewScaling"] == undefined) {
-                        objMesh["carNewScaling"] = objMesh.scaling.x;
-                    }
-                    
-                    if (objMesh["carNewScalingTime"] == null || objMesh["carNewScalingTime"] == undefined) {
-                        objMesh["carNewScalingTime"] = 0;
-                    }
-
-                    if (objMesh["carNewScaling"] != scaling) {
-
-                        if (
-                            // 如果不等于最大值
-                            scaling != scalingMax
-                            // 并且大于多少毫秒后
-                            // && thisTime - objMesh["carNewScalingTime"] >= 1000
-                            && thisTime - objMesh["carNewScalingTime"] >= 300
-                        ) {
-
-                            objMesh.scaling.x = scaling;
-                            objMesh.scaling.y = scaling;
-                            objMesh.scaling.z = scaling;
-                            objMesh["carNewScaling"] = scaling;
-
-                            if (this.highlightLayerMeshListClick.length <= 0) {
-
-                                // 去除高光
-                                this.objHighlightLayerEvent.removeAll();
-                                
-                            }
-                            
-                        } else if (
-                            // 最大值
-                            scaling == scalingMax
-                        ) {
-
-                            // 放大逻辑
-                            objMesh.scaling.x = scaling;
-                            objMesh.scaling.y = scaling;
-                            objMesh.scaling.z = scaling;
-                            objMesh["carNewScaling"] = scaling;
-                            objMesh["carNewScalingTime"] = thisTime;
-                            
-                            if (thisListFor.indexOf("文字框") < 0) {
-
-                                let newList = [ thisListFor ];
-
-                                for (
-                                    let highlightLayerMeshListClickI = 0;
-                                    highlightLayerMeshListClickI < this.highlightLayerMeshListClick.length;
-                                    highlightLayerMeshListClickI++
-                                ) {
-                                    newList.push(this.highlightLayerMeshListClick[highlightLayerMeshListClickI]);
-                                }
-                                
-                                // 高光
-                                this.objHighlightLayerEvent.meshListAdd(
-                                    // listFor,
-                                    newList,
-                                    null
-                                );
-                                
-                            }
-                            
-                        }
-
-                    }
-                    
-                }
-
-            }
-            
-        }
-
-    }
-
-    
-    /**
-     * 鼠标点击3d后,鼠标弹起触发逻辑
-     * obj              鼠标弹起后传来的对象
-     * statue           当前的步骤状态
-     */
-    public threeWorldPointerupEvent = (obj : any, statue : any) => {
-
-        let objMesh = obj.pickedMesh;
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-
-        console.log(
-            " 鼠标点击弹起了 threeWorldPointerupEvent = (obj : Object) => { ", objMesh.id
-        );
-        
-        switch (objMesh.id) {
-
-            // 爬行器 - 后置相机
-            case 'exhibition_html_1710385814466_检测车文字框05':
-            case 'exhibition_html_1710385814466_检测车文字03':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "后置相机";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "高清云台摄像机,满足360°轴向旋转,同时具备一定角度的径向旋转,可以满足拍摄管道中各个角度的管道图像,尤其是在拍摄管道接口位置时,可以采集完整的接口位置图像,以提高检测数据的完整性,方便数据分析人员对管道状况进行准确评估。",
-                ];
-                break;
-            // 爬行器 - 检测车身
-            case 'exhibition_html_1710385814466_检测车文字框06':
-            case 'exhibition_html_1710385814466_检测车文字04':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "检测车身";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "机器人底盘,一般包含电机、控制电路系统、信号处理系统等,是机器人的核心部分,目前的检测机器人一般配备了多个电机组,支持差速控制,既能满足机器人前进后退的行走需求,也可以满足机器人原地转弯等特殊操作需求。",
-                ];
-                break;
-
-            // 爬行器 - 轮子
-            case 'exhibition_html_1710385814466_检测车文字框07':
-            case 'exhibition_html_1710385814466_检测车文字07':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "轮子";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "轮组,由于不同的管道其管径大小不同,所以需要检测时根据不同的管径大小采用不同的轮组,以满足检测的需求。目前的检测机器人一般配备了多种尺寸的轮组,并采用快拆设计,保证更换方便。",
-                ];
-                break;
-
-            // 爬行器 - 前置相机
-            case 'exhibition_html_1710385814466_检测车文字框08':
-            case 'exhibition_html_1710385814466_检测车文字08':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "前置相机";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "高清云台摄像机,满足360°轴向旋转,同时具备一定角度的径向旋转,可以满足拍摄管道中各个角度的管道图像,尤其是在拍摄管道接口位置时,可以采集完整的接口位置图像,以提高检测数据的完整性,方便数据分析人员对管道状况进行准确评估。",
-                ];
-                break;
-
-            // 爬行器 - 防撞杆
-            case 'exhibition_html_1710385814466_检测车文字框04':
-            case 'exhibition_html_1710385814466_检测车文字05':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "防撞杆";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "防撞杆可以涉及到多个方面,包括其尺寸公差、抗拉强度、化学成分、表面质量、屈服强度、延伸率、静态弯曲、低温冲击、金相组织分析和机械性能等。这些检测项目可以确保防撞杆的质量和性能符合设计要求和安全标准。",
-                    "要进行这些检测,可能需要使用各种设备和工具,如测量工具、力学测试设备、化学分析仪器、显微镜等。同时,检测过程需要由专业的技术人员进行,以确保结果的准确性和可靠性。",
-                    "此外,对于机器人防撞杆的检测,可能还需要考虑其在实际使用中的性能和可靠性。例如,可以通过模拟碰撞测试来评估防撞杆在实际碰撞中的表现,以确保其能够有效地保护机器人和周围环境的安全。",
-                    "总之,检测机器人防撞杆需要综合考虑多个方面,包括其设计、制造、使用等多个环节,以确保其质量和性能符合相关标准和要求。",
-                ];
-                break;
-
-            // 爬行器 - LED前灯
-            case 'exhibition_html_1710385814466_检测车文字框03':
-            case 'exhibition_html_1710385814466_检测车文字06':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "LED前灯";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "LED灯光模块,一般包含前置远光灯组、近光灯组以及后视灯组,可以保证云台拍摄时画面的清晰度,同时也可帮助地面控制人员控制机器人行走。",
-                ];
-                break;
-
-            // 爬行器 - 升降支架
-            case 'exhibition_html_1710385814466_检测车文字框02':
-            case 'exhibition_html_1710385814466_检测车文字01':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "升降支架";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "升降架,根据相关检测标准,检测机器人在管道中进行检测时,云台位置应处于管道的中心位置,以保证检测视频获取完整的非失真的管道图像,为了满足这一要求,-般检测机器人会配备升降机构,从而可以将云台根据不同管径的大小调整到管道的中心位置。",
-                ];
-                break;
-
-            // 爬行器 - 连接线缆
-            case 'exhibition_html_1710385814466_检测车文字框01':
-            case 'exhibition_html_1710385814466_检测车文字02':
-                this.meshEventTxt(1, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "连接线缆";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "连接线缆同样是一个重要的环节,它涉及到机器人的正常运行和安全性。以下是检测机器人连接线缆时需要考虑的几个方面:",
-                    "1.外观检查:检查线缆外皮是否有裂纹、老化、变形或损坏等情况。同时,检查线缆的端头是否松动或损坏,以及连接头是否牢固连接。",
-                    "2.导通性测试:使用万用表等测试工具,检查线缆的导通性是否正常,以确保信号和电流能够顺畅传输。",
-                    "3.绝缘性能测试:通过绝缘电阻测试仪等设备,测量线缆的绝缘电阻值,以评估线缆的绝缘性能是否符合要求。",
-                    "4.耐压测试:使用耐压测试仪,对线缆进行耐压测试,以检查线缆在正常工作电压下是否会出现漏电或击穿等情况。",
-                    "5.温度测试:在机器人运行过程中,检查线缆的温度变化,以确保线缆在工作过程中不会出现过热或烧毁等情况。",
-                    "需要注意的是,在检测机器人连接线缆时,应先关闭机器人并断开电源,以避免电击等安全风险。同时,检测过程应由专业人员进行,以确保结果的准确性和可靠性。",
-                    "总之,检测机器人连接线缆是确保机器人正常运行和安全性的重要环节,需要综合考虑外观、导通性、绝缘性能、耐压性和温度等多个方面。",
-                ];
-                break;
-
-            // 线缆卷盘 - 控制终端
-            case 'exhibition_html_1710385814466_绕线车文字01':
-            case 'exhibition_html_1710385814466_绕线车文字框002':
-                this.meshEventTxt(0, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "控制终端";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "控制终端分为工业控制器和平板电脑两种,各有优缺点,工业控制器屏幕尺寸更大,亮度更高,高温下工作更稳定,可以搭配无线操作盒使用。平板电脑更便携,一般采用无线连接,满足不同使用场景下控制方式的需求",
-                ];
-                break;
-
-            // 线缆卷盘 - 电源连线
-            case 'exhibition_html_1710385814466_绕线车文字02':
-            case 'exhibition_html_1710385814466_绕线车文字框001':
-                this.meshEventTxt(0, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "电源连线";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "电源连线是确保机器人安全、稳定运行的重要环节。以下是检测机器人电源连线时需要考虑的几个方面:",
-                    "1.外观检查:检查电源连线外皮是否有破损、老化、裂纹或变形等情况。同时,检查电源插头的完好性和接触是否良好。",
-                    "2.导通性测试:使用万用表等测试工具,检查电源连线的导通性是否正常。确保电源能够顺畅地传输到机器人中。",
-                    "3.电压测试:使用电压表等测试工具,测量电源连线的电压值是否符合要求。过高的电压可能导致设备损坏,而过低的电压则可能影响机器人的正常运行。",
-                    "4.电流测试:通过电流表等测试工具,测量电源连线的电流值是否在正常范围内。过大的电流可能导致线缆过热、烧毁甚至引发火灾。",
-                    "5.绝缘性能测试:使用绝缘电阻测试仪等设备,测量电源连线的绝缘电阻值,以评估线缆的绝缘性能是否满足要求。",
-                    "6.温度测试:在机器人运行过程中,检查电源连线的温度变化。过高的温度可能表明线缆存在过载或散热不良等问题。",
-                ];
-                break;
-
-            // 线缆卷盘 - 锂电池
-            case 'exhibition_html_1710385814466_绕线车文字03':
-            case 'exhibition_html_1710385814466_绕线车文字框004':
-                this.meshEventTxt(0, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "锂电池";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "内置大容量电池,续航时间8h以上",
-                ];
-                break;
-
-            // 线缆卷盘 - 连接线缆
-            case 'exhibition_html_1710385814466_绕线车文字04':
-            case 'exhibition_html_1710385814466_绕线车文字框003':
-                this.meshEventTxt(0, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "连接线缆";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "一般线缆卷盘采用几种收线方式,手动收线、电动收线、全自动收线。手动收线即通过摇杆等方式将线缆收回;电动收线则通过按动线缆卷盘上收线开关由线缆卷盘内部的电机进行收线或通过控制终端控制收线;全自动收线是收线控制系统根据机器人回退的速度自动调整收线电机的收线速度,从而将线缆自动收回。",
-                ];
-                break;
-
-            // 线缆卷盘 - 控制手柄
-            case 'exhibition_html_1710385814466_绕线车文字005':
-            case 'exhibition_html_1710385814466_绕线车文字框005':
-                this.meshEventTxt(0, objMesh.id);
-                courseChapter3dShow().show.showStudyRightTitle = "控制手柄";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "检测机器人控制手柄是一个关键步骤,它有助于确保机器人系统的正常运行。控制手柄作为操作机器人的重要设备,如果出现故障,将对机器人的操作产生严重影响。",
-                ];
-                break;
-                
-        }
-        
-    }
-
-
-    /**
-     * 根据传来的物体id,和对应配置逻辑触发效果
-     * car              0 - 线缆卷盘, 1 - 爬行器模块
-     * meshId           传物体的id
-     */
-    public meshEventTxt = (car : any, meshId : any) : any => {
-
-        if (meshId == null || meshId == undefined) {
-            return this;
-        }
-
-        // @ts-ignore
-        if (threeWorld().obj.meshEventTxt[meshId] == null || threeWorld().obj.meshEventTxt[meshId] == undefined) {
-            return this;
-        }
-
-        // @ts-ignore
-        let json : any = threeWorld().obj.meshEventTxt[meshId];
-
-        if (json["fieldSynchronous"] != null && json["fieldSynchronous"] != undefined) {
-            let fieldSynchronous : any = json["fieldSynchronous"];
-            return this.meshEventTxt(car, fieldSynchronous);
-        }
-
-        // 高亮的物体列表
-        let heighLight : any = json["heighLight"];
-        // 切换视角
-        let cameraVisualAngleGetListNameGpsTo : any = json["cameraVisualAngleGetListNameGpsTo"];
-        if (cameraVisualAngleGetListNameGpsTo != null && cameraVisualAngleGetListNameGpsTo != undefined) {
-            // @ts-ignore
-            threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo(cameraVisualAngleGetListNameGpsTo, false);
-        }
-
-        // console.log(
-        //     " ========= meshEventTxt = (meshId : any) => { ========= ",
-        //     json,
-        //     heighLight
-        // );
-
-        let meshJson : any = {};
-
-        for (let i = 0; i < heighLight.length; i++) {
-            let thisHeighLight = heighLight[i];
-            meshJson[thisHeighLight] = thisHeighLight;
-        }
-
-        this.retVisibility(car, "update", meshJson);
-
-        return this;
-    }
-    
-
-    /**
-     * 
-     * 线缆卷盘 和 爬行器模块
-     * 恢复 或者 设置可见度,以及显示线框逻辑
-     * 
-     * car          0 - 线缆卷盘, 1 - 爬行器模块
-     * type         restore - 恢复 , update - 设置可见度和线框
-     * meshJson     指定的物体列表,是进行高亮,并且正常可见
-     *              { "meshId1" : "meshId1", "meshId2" : "meshId2" }
-     * 
-     */
-    public retVisibility = (car : any, type : any, meshJson : any) => {
-
-
-        // console.log(
-        //     "retVisibility = (car : any, type : any, meshJson : any) => {",
-        //     car, type, meshJson
-        // );
-
-        // 线缆卷盘
-        let carMeshId = "exhibition_html_1710385814466_绕线车-侧板01_primitive1";
-
-        if (car == 1) {
-            // 爬行器模块
-            carMeshId = "exhibition_html_1710385814466_上机_primitive3";
-        }
-
-        let objMesh = this.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(carMeshId);
-
-        // 找到整体模型的对象
-        let objMeshAll : any = null;
-
-        if (objMesh != null && objMesh != undefined) {
-
-            if (objMesh["_parentContainer"] != null && objMesh["_parentContainer"] != undefined) {
-                objMeshAll = objMesh["_parentContainer"].meshes;
-            }
-            
-        }
-        
-        for (let i = 0; i < objMeshAll.length; i++) {
-
-            let thisObjMeshAll = objMeshAll[i];
-            let thisMeshId = thisObjMeshAll.id;
-
-            // 跳过逻辑
-            if (
-                thisMeshId.indexOf("检测车文字") >= 0
-                || thisMeshId.indexOf("绕线车文字") >= 0
-                || thisMeshId.indexOf("标注线") >= 0
-                || thisObjMeshAll.visibility <= 0
-            ) {
-                continue;
-            }
-
-            // console.log(
-            //     "thisObjMeshAll",
-            //     thisMeshId,
-            //     thisObjMeshAll.visibility
-            // );
-
-            // 是否恢复可见度,和隐藏线框
-            let visibilityRetBool = false;
-
-            // 恢复可见度
-            if (meshJson[thisMeshId] != null && meshJson[thisMeshId] != undefined) {
-                visibilityRetBool = true;
-            }
-
-            // 如果是恢复的话
-            if (type == "restore") {
-                visibilityRetBool = true;
-            }
-            
-            if (
-                // 设置可见度和线框
-                type == "update"
-                // 不需要恢复可见度,和隐藏线框
-                && visibilityRetBool == false
-            ) {
-                
-                // 不存在配置的,才进行
-                if (thisObjMeshAll["myDragAndDropEventRetVisibility"] == null || thisObjMeshAll["myDragAndDropEventRetVisibility"] == undefined) {
-
-                    // 记录更新前的可见度
-                    thisObjMeshAll["myDragAndDropEventRetVisibility"] = parseFloat("" + thisObjMeshAll.visibility);
-
-                    // 更新可见度
-                    thisObjMeshAll.visibility = 0.5;
-
-                    // // 关闭禁用网格边框渲染
-                    // thisObjMeshAll.disableEdgesRendering();
-                    // // 启动网格边框渲染
-                    // thisObjMeshAll.enableEdgesRendering(
-                    //     1,
-                    //     true,
-                    //     {
-
-                    //         // /**
-                    //         //  * 获取或设置一个布尔值,该布尔值指示在查找边之前应应用细分。如果几何体有点小,则可能需要激活此选项
-                    //         //  * 不寻常的,比如一个三角形的顶点在另一个三角形边的两个顶点之间。在使用CSG构造网格时,这种情况经常发生。
-                    //         //  */
-                    //         // "applyTessellation" : true,
-                    //         // /**
-                    //         //  * 删除退化三角
-                    //         //  * 获取或设置一个布尔值,该值指示不应处理退化三角形。
-                    //         //  * 退化三角形是指具有2个或3个顶点的三角形,其坐标相同
-                    //         //  */
-                    //         // "removeDegeneratedTriangles" : true,
-                    //         // /**
-                    //         //  * 获取或设置一个布尔值,该布尔值指示必须使用备用寻边器算法
-                    //         //  * 如果未定义,则默认值为true
-                    //         //  */
-                    //         // "useAlternateEdgeFinder" : true,
-                    //         // /**
-                    //         //  * 获取或设置一个布尔值,该布尔值指示必须使用顶点合并快速处理。
-                    //         //  * 如果未定义,则默认值为true。
-                    //         //  * 通常情况下,应将其保留为未定义(或设置为true),除非在边渲染中看到一些瑕疵(可能发生在复杂的几何体中)
-                    //         //  * useAlternateEdgeFinder = true
-                    //         //  */
-                    //         // "useFastVertexMerger" : true,
-
-
-                    //     }
-                    // );
-
-                    // // 网格边框渲染宽度
-                    // thisObjMeshAll.edgesWidth = 0.01;
-                    // // 网格边框渲染颜色
-                    // thisObjMeshAll.edgesColor = new this.BABYLON.Color4(1, 1, 0, 0.3);
-
-                    // 在排除列表中添加网格,以防止其影响高亮显示层或受到高亮显示层的影响。
-                    this.objHighlightLayerEvent.objHighlightLayer.addExcludedMesh(thisObjMeshAll);
-
-                }
-
-            }
-
-            // 恢复可见度,和隐藏线框
-            if (visibilityRetBool == true) {
-                
-                if (thisObjMeshAll["myDragAndDropEventRetVisibility"] != null && thisObjMeshAll["myDragAndDropEventRetVisibility"] != undefined) {
-
-                    // 恢复可见度
-                    thisObjMeshAll.visibility = thisObjMeshAll["myDragAndDropEventRetVisibility"];
-                    // 关闭禁用网格边框渲染
-                    thisObjMeshAll.disableEdgesRendering();
-
-                    // 删除配置项
-                    thisObjMeshAll["myDragAndDropEventRetVisibility"] = null;
-                    delete thisObjMeshAll["myDragAndDropEventRetVisibility"];
-
-                    // 从排除列表中删除网格,使其影响高亮显示层或受到高亮显示层的影响。
-                    this.objHighlightLayerEvent.objHighlightLayer.removeExcludedMesh(thisObjMeshAll);
-
-                }
-                
-            }
-            
-        }
-
-        // 高亮的物体列表
-        let highlightLayerMeshList : any = [];
-        for (let key in meshJson) {
-            highlightLayerMeshList.push(key);
-        }
-
-        this.highlightLayerMeshListClick = highlightLayerMeshList;
-
-        if (highlightLayerMeshList.length <= 0) {
-            return this;
-        }
-
-        // 触发高亮的效果
-        this.objHighlightLayerEvent.meshListAdd(
-            highlightLayerMeshList,
-            null
-        );
-
-        
-        
-        return this;
-
-    }
-
-
-
-    
-
-}

+ 0 - 473
src/components/student/event/HighlightLayerEvent.ts

@@ -1,473 +0,0 @@
-import { threeWorld } from "@/stores/threeWorld.ts";
-import { courseChapter3dShow } from "@/stores/courseChapter3dShow.ts";
-
-/**
- * 处理高光使用
- */
-export class HighlightLayerEvent {
-
-    // 可以被调用的 iframe 对象
-    public objIframe : any = null;
-
-    // 三维对象
-    public ChengGuangYuanJing : any = null;
-
-    // babylon 对象
-    public BABYLON : any = null;
-
-    /**
-     * 上一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEventCallback : any = null;
-    /**
-     * 下一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEventCallback : any = null;
-
-    /**
-     * 让哪些物体高光效果
-     */
-    public objHighlightLayer : any = null;
-
-
-    // 每次 new 出对象则会调用这个构造函数
-    constructor() {
-        
-    }
-
-    /**
-     * 上一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsUpOpenEventCallback != null && this.tipsBtnsUpOpenEventCallback != undefined) {
-            this.tipsBtnsUpOpenEventCallback(open);
-        }
-    }
-
-    /**
-     * 下一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsDownOpenEventCallback != null && this.tipsBtnsDownOpenEventCallback != undefined) {
-            this.tipsBtnsDownOpenEventCallback(open);
-        }
-    }
-
-
-    /**
-     * 初始化高光对象
-     */
-    public objHighlightLayerInit = () => {
-
-        if (this.objHighlightLayer != null || this.objHighlightLayer != undefined) {
-            return this.objHighlightLayer;
-        }
-
-        this.objHighlightLayer = new this.BABYLON.HighlightLayer(
-            "objHighlightLayer",
-            this.ChengGuangYuanJing.CommonVal.find().objScene
-        );
-
-        // // 高光横向模糊度
-        // this.objHighlightLayer.blurHorizontalSize = 1;
-        // // 高光纵向模糊的
-        // this.objHighlightLayer.blurVerticalSize = 1;
-
-        // 指定边界框是应正常渲染还是应受到层的影响
-        this.objHighlightLayer.disableBoundingBoxesFromEffectLayer = true;
-        // 指定层中的外部辉光是否处于活动状态。
-        this.objHighlightLayer.outerGlow = true;
-        // 指定层中的内部辉光是否处于活动状态。
-        this.objHighlightLayer.innerGlow = true;
-
-        return this.objHighlightLayer;
-
-    }
-
-    /**
-     * 记录当前高光的变化参数
-     */
-    public sizeThis = 1;
-    /**
-     * 当前高光变化模式
-     * 1 - 从小到大变化
-     * 2 - 从大到小变化
-     */
-    public sizeModel = 1;
-    /**
-     * 高光的最小变化尺寸
-     */
-    public sizeMin = 0.05;
-    // public sizeMin = 0.001;
-    /**
-     * 高光的最大变化尺寸
-     */
-    public sizeMax = 1.8;
-    // public sizeMax = 0.5;
-
-    /**
-     * 高光的变化速度
-     */
-    // public sizeSpeed = 0.01;
-    // public sizeSpeed = 0.05;
-    public sizeSpeed = 0.05;
-
-    /**
-     * 该方法每帧被调用,用于实现让高光有个动画的效果
-     */
-    public updateSize = () => {
-
-        let objHighlightLayer = this.objHighlightLayerInit();
-
-        // 高光横向模糊度
-        objHighlightLayer.blurHorizontalSize = this.sizeThis;
-        // 高光纵向模糊的
-        objHighlightLayer.blurVerticalSize = this.sizeThis;
-        
-        if (this.sizeModel == 1) {
-
-            this.sizeThis += this.sizeSpeed;
-            if (this.sizeThis >= this.sizeMax) {
-                this.sizeThis = this.sizeMax;
-                this.sizeModel = 2;
-            }
-
-        } else if (this.sizeModel == 2) {
-
-            this.sizeThis -= this.sizeSpeed;
-            if (this.sizeThis <= this.sizeMin) {
-                this.sizeThis = this.sizeMin;
-                this.sizeModel = 1;
-            }
-
-        }
-
-        // console.log(
-        //     "更换高光size", this.sizeThis
-        // );
-        
-    }
-
-    /**
-     * 移除所有物体高光效果
-     */
-    public removeAll = () => {
-
-        // console.log(
-        //     " ========== removeAll = () => {  移除所有物体高光效果  ========== ",
-        // );
-
-        let objHighlightLayer = this.objHighlightLayerInit();
-        objHighlightLayer.removeAllMeshes();
-
-        return this;
-
-    }
-
-    /**
-     * 添加指定物体列表高光效果
-     * 会优先删除之前所有的高光
-     * 
-     * meshList     传物体的id例如
-     *              [ "物体的id1", "物体的id2", "物体的id3" ]
-     * 
-     * color        自定义颜色值, 例如 { r : 50 / 255, g : 100 / 255, b : 200 / 255 }
-     *              可以不传,则默认颜色
-     */
-    public meshListAdd = (meshList : any, color : any) => {
-        
-        // console.log(
-        //     " ========== meshListAdd = (meshList : any, color : any) => {  添加高光的逻辑触发  ========== ",
-        //     meshList
-        // );
-
-        let objHighlightLayer = this.objHighlightLayerInit();
-        this.removeAll();
-
-        if (color == null || color == undefined) {
-            // color = { r : 0 / 255, g : 255 / 255, b : 0 / 255 };
-            color = { r : 0 / 255, g : 230 / 255, b : 255 / 255 }
-        }
-
-        let newColor = new this.BABYLON.Color3(color.r, color.g, color.b);
-
-        for (let i = 0; i < meshList.length; i++) {
-
-            let thisMeshList = meshList[i];
-            let objNode = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById(thisMeshList);
-            let objMesh = this.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(thisMeshList);
-
-            if (objNode != null && objNode != undefined) {
-
-                if (objNode._children != null && objNode._children != undefined) {
-
-                    for (let j = 0; j < objNode._children.length; j++) {
-
-                        let thisChildren = objNode._children[j];
-
-                        if (thisChildren.getClassName() == "Mesh") {
-                            objHighlightLayer.addMesh(thisChildren, newColor);
-                        }
-                        
-                    }
-
-                }
-                
-            }
-
-            if (objMesh != null && objMesh != undefined) {
-
-                // console.log(
-                //     "objMesh", objMesh.getClassName(), objMesh
-                // );
-
-                if (objMesh.getClassName() == "Mesh") {
-                    objHighlightLayer.addMesh(objMesh, newColor);
-                }
-                
-            }
-            
-        }
-        
-    }
-
-    /**
-     * 添加指定物体列表高光效果
-     * 【不会】删除之前所有的高光
-     * 
-     * meshList     传物体的id例如
-     *              [ "物体的id1", "物体的id2", "物体的id3" ]
-     * 
-     * color        自定义颜色值, 例如 { r : 50 / 255, g : 100 / 255, b : 200 / 255 }
-     *              可以不传,则默认颜色
-     */
-    public meshListAdd2 = (meshList : any, color : any) => {
-        
-        // console.log(
-        //     " ========== meshListAdd = (meshList : any, color : any) => {  添加高光的逻辑触发  ========== ",
-        //     meshList
-        // );
-
-        let objHighlightLayer = this.objHighlightLayerInit();
-
-        if (color == null || color == undefined) {
-            // color = { r : 0 / 255, g : 255 / 255, b : 0 / 255 };
-            color = { r : 0 / 255, g : 230 / 255, b : 255 / 255 }
-        }
-
-        let newColor = new this.BABYLON.Color3(color.r, color.g, color.b);
-
-        for (let i = 0; i < meshList.length; i++) {
-
-            let thisMeshList = meshList[i];
-            let objNode = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById(thisMeshList);
-            let objMesh = this.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(thisMeshList);
-
-            if (objNode != null && objNode != undefined) {
-
-                if (objNode._children != null && objNode._children != undefined) {
-
-                    for (let j = 0; j < objNode._children.length; j++) {
-
-                        let thisChildren = objNode._children[j];
-
-                        if (thisChildren.getClassName() == "Mesh") {
-                            objHighlightLayer.addMesh(thisChildren, newColor);
-                        }
-                        
-                    }
-
-                }
-                
-            }
-
-            if (objMesh != null && objMesh != undefined) {
-
-                // console.log(
-                //     "objMesh", objMesh.getClassName(), objMesh
-                // );
-
-                if (objMesh.getClassName() == "Mesh") {
-                    objHighlightLayer.addMesh(objMesh, newColor);
-                }
-                
-            }
-            
-        }
-        
-    }
-
-
-    /**
-     * 根据不同的状态,显示和隐藏对应的物体,以及哪些物体高亮
-     * statue           状态
-     */
-    public statueMeshLookOrHighlight = (statue : any) => {
-
-        // 清空所有高光
-        this.removeAll();
-
-        // @ts-ignore 优先把对应的物体都隐藏
-        for (let key in threeWorld().obj.showCongratulationsTxtJson) {
-            // @ts-ignore
-            let thisShowCongratulationsTxtJson = threeWorld().obj.showCongratulationsTxtJson[key];
-
-            // console.log(
-            //     "thisShowCongratulationsTxtJson", thisShowCongratulationsTxtJson
-            // );
-
-            // 可见度
-            let visibilityNew = key == statue ? 1 : 0;
-
-            // 找到对应的状态的时候
-            if (key == statue) {
-
-                // 高亮
-                this.meshListAdd(thisShowCongratulationsTxtJson["heighLight"], null);
-
-            }
-
-            // console.log(
-            //     statue == "将检测机器人6寸轮子安装到正确位置",
-            //     visibilityNew,
-            //     thisShowCongratulationsTxtJson.meshVisibilityAndIsPickAbleYes,
-            //     thisShowCongratulationsTxtJson.meshVisibilityAndIsPickAbleNo,
-            // );
-            
-            this.meshUpdate(thisShowCongratulationsTxtJson.meshVisibilityAndIsPickAbleYes, visibilityNew, null);
-            this.meshUpdate(thisShowCongratulationsTxtJson.meshVisibilityAndIsPickAbleNo, visibilityNew, false);
-            
-        }
-        
-        return this;
-    }
-
-
-    /**
-     * 将指定的物体列表,控制可见度,以及 是否可选中
-     * meshList         物体列表
-     * visibility       可见度
-     * isPickable       是否可选中
-     */
-    public meshUpdate = (meshList : any, visibility : any, isPickable : any) => {
-
-        for (let i = 0; i < meshList.length; i++) {
-
-            let thisMeshId = meshList[i];
-            let objNode = this.ChengGuangYuanJing.CommonVal.find().objScene.getNodeById(thisMeshId);
-            let objMesh = this.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(thisMeshId);
-            
-            if (objNode != null && objNode != undefined) {
-
-                if (objNode._children != null && objNode._children != undefined) {
-
-                    for (let j = 0; j < objNode._children.length; j++) {
-
-                        let thisChildren = objNode._children[j];
-
-                        if (thisChildren.getClassName() == "Mesh") {
-
-                            // 进行特殊处理
-                            if (thisChildren.id.indexOf("安装点") >= 0) {
-
-
-                                if (thisChildren["oldAbsolutePosition2"] == null || thisChildren["oldAbsolutePosition2"] == undefined) {
-
-                                    thisChildren["oldAbsolutePosition2"] = JSON.parse(JSON.stringify({
-                                        "x" : thisChildren.absolutePosition.x,
-                                        "y" : thisChildren.absolutePosition.y,
-                                        "z" : thisChildren.absolutePosition.z
-                                    }));
-                                    
-                                }
-
-                                thisChildren.setAbsolutePosition(
-                                    new this.BABYLON.Vector3(
-                                        parseFloat(thisChildren["oldAbsolutePosition2"].x),
-                                        visibility >= 1 ? parseFloat(thisChildren["oldAbsolutePosition2"].y) : -999,
-                                        parseFloat(thisChildren["oldAbsolutePosition2"].z)
-                                    )
-                                );
-                                
-                            } else {
-                                
-                                // thisChildren.visibility = visibility;
-
-                                // 可见度没效果,改成缩放的方式
-                                thisChildren.scaling.x = visibility;
-                                thisChildren.scaling.y = visibility;
-                                thisChildren.scaling.z = visibility;
-                                
-                            }
-                            
-                            if (isPickable == false) {
-                                thisChildren.isPickable = isPickable;
-                            }
-                            
-                        }
-                        
-                    }
-
-                }
-                
-            }
-
-            if (objMesh != null && objMesh != undefined) {
-                
-                if (objMesh.getClassName() == "Mesh") {
-
-                    // 进行特殊处理
-                    if (objMesh.id.indexOf("安装点") >= 0) {
-
-
-                        if (objMesh["oldAbsolutePosition2"] == null || objMesh["oldAbsolutePosition2"] == undefined) {
-
-                            objMesh["oldAbsolutePosition2"] = JSON.parse(JSON.stringify({
-                                "x" : objMesh.absolutePosition.x,
-                                "y" : objMesh.absolutePosition.y,
-                                "z" : objMesh.absolutePosition.z
-                            }));
-                            
-                        }
-
-                        objMesh.setAbsolutePosition(
-                            new this.BABYLON.Vector3(
-                                parseFloat(objMesh["oldAbsolutePosition2"].x),
-                                visibility >= 1 ? parseFloat(objMesh["oldAbsolutePosition2"].y) : -999,
-                                parseFloat(objMesh["oldAbsolutePosition2"].z)
-                            )
-                        );
-                        
-                    } else {
-                        
-                        // objMesh.visibility = visibility;
-
-                        // 可见度没效果,改成缩放的方式
-                        objMesh.scaling.x = visibility;
-                        objMesh.scaling.y = visibility;
-                        objMesh.scaling.z = visibility;
-
-                    }
-
-                    if (isPickable == false) {
-                        objMesh.isPickable = isPickable;
-                    }
-                    
-                }
-                
-            }
-
-        }
-        
-        return this;
-
-    }
-
-    
-
-
-}

+ 0 - 3488
src/components/student/event/TypeViewEvent.ts

@@ -1,3488 +0,0 @@
-import { threeWorld } from "@/stores/threeWorld.ts";
-import { courseChapter3dShow } from "@/stores/courseChapter3dShow.ts";
-import { ModelHtml5Audio } from "./ModelHtml5Audio.ts";
-
-/**
- * 根据配置的流程切换对应的3d界面逻辑
- */
-export class TypeViewEvent {
-
-    // 可以被调用的 iframe 对象
-    public objIframe : any = null;
-
-    // 三维对象
-    public ChengGuangYuanJing : any = null;
-
-    // babylon 对象
-    public BABYLON : any = null;
-
-    /**
-     * 车相机的名字
-     */
-    public cameraCarName = "arcRotateCameraCar";
-
-    // 灯光的唯一code
-    public lightCode = "spotLightCameraEventLightCode";
-
-    // 灯光的唯一code
-    public pointLightCode = "spotLightCameraEventPointLightCode";
-
-    /**
-     * 上一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEventCallback : any = null;
-    /**
-     * 下一步是否显示 回调方法
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEventCallback : any = null;
-
-    // 可拖拽旋转对象
-    public objGizmoManagerOne : any = null;
-    public objGizmoManagerTwo : any = null;
-
-    public wearTextureNo:any = null;
-    public wearTextureYes:any = null;
-
-    // 处理高光的对象
-    public objHighlightLayerEvent : any = null;
-
-    // 播放声音的对象
-    public objModelHtml5Audio : any = null;
-
-    // 配置对应要播放的声音
-    public musicConfig : any = {};
-    
-    // 每次 new 出对象则会调用这个构造函数
-    constructor() {
-
-        this.objModelHtml5Audio = new ModelHtml5Audio();
-
-    }
-
-    /**
-     * 上一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsUpOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsUpOpenEventCallback != null && this.tipsBtnsUpOpenEventCallback != undefined) {
-            this.tipsBtnsUpOpenEventCallback(open);
-        }
-    }
-
-    /**
-     * 下一步是否显示
-     * open     true - 显示, false - 隐藏
-     */
-    public tipsBtnsDownOpenEvent = (open : Boolean) => {
-        if (this.tipsBtnsDownOpenEventCallback != null && this.tipsBtnsDownOpenEventCallback != undefined) {
-            this.tipsBtnsDownOpenEventCallback(open);
-        }
-    }
-
-    public gizmoManagerExitClose = () => {
-        // @ts-ignore 添加帧事件
-        let CommonVal = this.ChengGuangYuanJing.CommonVal;
-        // 关闭所有可拖拽
-        CommonVal.find().gizmoManagerExit();
-    }
-
-    /**
-     * 将车的相机更新是否可见
-     * 因为车的相机,在下井,和不是下井,看到的是不一样的
-     * visibilityBool           true - 可见, false - 隐藏
-     * 
-     */
-    public arcRotateCameraCarUpdate = (visibilityBool : any) => {
-
-        let BABYLON = this.BABYLON;
-
-        courseChapter3dShow().show.arcRotateCameraCarUpdateOpen = visibilityBool;
-
-        let objArcRotateCameraCodeGetObj = this.arcRotateCameraCodeGetObj(this.cameraCarName);
-        
-        if (visibilityBool == true) {
-
-            // let config : any = {
-            //     viewportX : 0.5,
-            //     viewportY : 0.5,
-            //     viewportW : 0.5,
-            //     viewportH : 0.5,
-            // }
-
-            let config : any = {
-                viewportX : 0,
-                viewportY : 0,
-                viewportW : 1,
-                viewportH : 1,
-            }
-
-            // @ts-ignore 更新可视区域
-            objArcRotateCameraCodeGetObj.viewport = new BABYLON.Viewport(
-                parseFloat(config.viewportX),
-                parseFloat(config.viewportY),
-                parseFloat(config.viewportW),
-                parseFloat(config.viewportH)
-            );
-
-
-            return;
-        }
-
-        let config : any = {
-            viewportX : 0,
-            viewportY : 0,
-            viewportW : 0,
-            viewportH : 0,
-        }
-
-        // @ts-ignore 更新可视区域
-        objArcRotateCameraCodeGetObj.viewport = new BABYLON.Viewport(
-            parseFloat(config.viewportX),
-            parseFloat(config.viewportY),
-            parseFloat(config.viewportW),
-            parseFloat(config.viewportH)
-        );
-
-
-    }
-
-    /**
-     * 根据 code 获取可以操作的相机,不存在则会自己创建
-     * code     唯一code
-     */
-    public arcRotateCameraCodeGetObj = (code : String) => {
-
-        // @ts-ignore
-        var objCamera = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getCameraByID(code);
-        if (objCamera != null && objCamera != undefined) {
-            // console.log("【没有】创建相机逻辑", code);
-            return objCamera;
-        }
-
-        // @ts-ignore
-        objCamera = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CameraArray.find().newArcRotateCamera(
-            code,
-            -Math.PI / 2,
-            Math.PI / 2.2,
-            12,
-            new this.BABYLON.Vector3(0, 1.0, 0),
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene
-        );
-
-        objCamera.id = code;
-        objCamera.name = code;
-        
-        return objCamera;
-
-    }
-
-    /**
-     * 判断是否添加渲染车的相机
-     */
-    public arcRotateCameraCarPushEvent = () => {
-
-        // @ts-ignore 【 注意这里的相机的添加顺序。 越是后面追加的,则越置顶显示 】
-        let activeCameras = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.activeCameras;
-        
-        for (var i = 0; i < activeCameras.length; i++) {
-
-            let objActiveCameras = activeCameras[i];
-            // 已经存在相机
-            if (objActiveCameras.id == this.cameraCarName) {
-
-                // 如果是当前不切换到当前视角的时候
-                if (courseChapter3dShow().show.arcRotateCameraCarUpdateOpen == false) {
-
-                    // @ts-ignore console.log("删除第几个相机", i);
-                    threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.activeCameras.splice(i, 1);
-
-                }
-
-                return;
-            }
-
-        }
-
-        if (courseChapter3dShow().show.arcRotateCameraCarUpdateOpen == false) {
-            return;
-        }
-
-        // 追加渲染的相机
-        let objArcRotateCameraCodeGetObj = this.arcRotateCameraCodeGetObj(this.cameraCarName);
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.activeCameras.push(objArcRotateCameraCodeGetObj);
-
-    }
-
-
-
-    /**
-     * 该方法每帧被调用,用于更新下井的时候,车相机的坐标,朝向往哪里看
-     */
-    public arcRotateCameraCarEvent = () => {
-
-        if (courseChapter3dShow().show.arcRotateCameraCarUpdateOpen == false) {
-            return;
-        }
-
-        let objArcRotateCameraCodeGetObj = this.arcRotateCameraCodeGetObj(this.cameraCarName);
-        // @ts-ignore 角色
-        let car = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().objRole;
-        // 车坐标点
-        let positionCar = car.position;
-        // @ts-ignore 当前选中的相机
-        let objSceneActiveCamera = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objSceneActiveCamera;
-
-        if (objSceneActiveCamera == null || objSceneActiveCamera == undefined) {
-            return;
-        }
-
-        // 当前选中的坐标
-        let objSceneActiveCameraPosition = objSceneActiveCamera.position;
-        // console.log(
-        //     "objSceneActiveCameraPosition", objSceneActiveCameraPosition
-        // );
-        
-        // 要用这个方式更新坐标逻辑 setPosition 你会发现没用
-        objArcRotateCameraCodeGetObj.setTarget(
-            new this.BABYLON.Vector3(
-                parseFloat(objSceneActiveCameraPosition.x),
-                parseFloat(objSceneActiveCameraPosition.y) + courseChapter3dShow().show.carCameraPositionYNew,
-                parseFloat(objSceneActiveCameraPosition.z),
-            )
-        );
-
-        // // 得到现在应该结果的旋转角度
-        // let newAlpha = objSceneActiveCamera.alpha + courseChapter3dShow().show.carCameraAlpha;
-        // let newBeta = objSceneActiveCamera.beta + courseChapter3dShow().show.carCameraBeta;
-
-        // 控制前视还是后视
-        let addAlpha = courseChapter3dShow().show.lookAfterOrFront == 'front' ? 0 : Math.PI;
-        
-        // 控制上下左右相机旋转
-        objArcRotateCameraCodeGetObj.alpha = objSceneActiveCamera.alpha + courseChapter3dShow().show.carCameraAlphaNew + addAlpha;
-        objArcRotateCameraCodeGetObj.beta = objSceneActiveCamera.beta + courseChapter3dShow().show.carCameraBetaNew;
-
-        objArcRotateCameraCodeGetObj.radius = objSceneActiveCamera.radius;
-
-        // 控制车相机的放大缩小
-        objArcRotateCameraCodeGetObj.fov = courseChapter3dShow().show.carCameraFovNew;
-        
-        // 控制车的左右轮子旋转
-        objSceneActiveCamera.alpha = Math.PI + courseChapter3dShow().show.carCameraAlphaWheelNew;
-
-        // console.log(
-        //     "objSceneActiveCamera.alpha", objSceneActiveCamera.alpha
-        // );
-        
-    }
-
-    
-    /**
-     * 获取聚光灯【类似手电筒】
-     * code         唯一code
-     */
-    public getSpotLight = (code : any) => {
-        
-        // @ts-ignore
-        var objLight = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getLightById(code);
-
-        if (objLight != null || objLight != undefined) {
-            return objLight;
-        }
-        
-        // 添加灯光【聚光灯,类似手电筒】
-        var objLight = new this.BABYLON.SpotLight(
-            code,
-            new this.BABYLON.Vector3(0, 50, -10),
-            new this.BABYLON.Vector3(0, -10, 0), Math.PI / 3,
-            1,
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene
-        );
-
-        objLight.id = code;
-        objLight.name = code;
-
-        // 对于点光和聚光灯,可以使用范围range属性,设置灯光到达目标的距离
-        // objLight.range = 9999;
-        // objLight.range = 10;
-        // objLight.range = 300;
-        objLight.range = 9999;
-        // 强度
-        objLight.intensity = 0;
-        // 角度
-        // objLight.angle = Math.PI / 3;
-        // objLight.angle = Math.PI / 10;
-        // objLight.angle = 0.78;
-        // objLight.angle = 1;
-        // objLight.angle = Math.PI / 2;
-        // objLight.angle = Math.PI / 1.2;
-        // objLight.angle = Math.PI / 2;
-        // objLight.angle = Math.PI * 2;
-        objLight.angle = Math.PI / 3;
-
-        // 光的衰减
-        objLight.exponent = 80;
-        
-        // // 灯光颜色【反射】
-        // objLight.diffuse = new BABYLON.Color3(255, 255, 0);
-        // 灯光颜色【漫射】
-        objLight.specular = new this.BABYLON.Color3(255, 255, 255);
-
-
-
-        // console.log(
-        //     "创建灯光" + code
-        // );
-
-        return objLight;
-    }
-
-    
-
-    /**
-     * 更新聚光灯的参数来让该灯光是否有用
-     * intensity        强度
-     * 
-     */
-    public spotLightCameraUpdateConfig = (intensity : any) => {
-        
-        let objLight = this.getSpotLight(this.lightCode);
-        objLight.intensity = intensity;
-
-    }
-
-    
-    /**
-     * 获取点光【类似灯泡】
-     * code         唯一code
-     */
-    public getPointLight = (code : any) => {
-        
-        // @ts-ignore
-        var objLight = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getLightById(code);
-
-        if (objLight != null || objLight != undefined) {
-            return objLight;
-        }
-        
-        // 添加灯光点光【类似灯泡】
-        var objLight = new this.BABYLON.PointLight(
-            code,
-            new this.BABYLON.Vector3(
-                0,
-                0,
-                0
-            ),
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene
-        );
-
-        objLight.id = code;
-        objLight.name = code;
-
-        // 对于点光和聚光灯,可以使用范围range属性,设置灯光到达目标的距离
-        objLight.range = 100;
-        // 强度
-        objLight.intensity = 0;
-        // 光的衰减
-        objLight.exponent = 150;
-        
-        // // 灯光颜色【反射】
-        // objLight.diffuse = new this.BABYLON.Color3(255, 255, 0);
-        // 灯光颜色【漫射】
-        objLight.specular = new this.BABYLON.Color3(255, 255, 255);
-
-        // console.log(
-        //     " 创建灯光 点光【类似灯泡】 " + code
-        // );
-
-        return objLight;
-    }
-
-    /**
-     * 更新点光灯的参数来让该灯光是否有用
-     * intensity        强度
-     * 
-     */
-    public pointLightCameraUpdateConfig = (intensity : any) => {
-        
-        let objLight = this.getPointLight(this.pointLightCode);
-        objLight.intensity = intensity;
-
-    }
-
-
-    /**
-     * 让相机和灯光绑在一起,灯光跟着相机方向发射光
-     */
-    public spotLightCameraEvent = () => {
-
-        if (courseChapter3dShow().show.arcRotateCameraCarUpdateOpen == false) {
-            return;
-        }
-        
-        let objLight = this.getSpotLight(this.lightCode);
-
-        // @ts-ignore 当前选中的相机
-        let objSceneActiveCamera = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objSceneActiveCamera;
-
-        let objArcRotateCameraCodeGetObj = this.arcRotateCameraCodeGetObj(this.cameraCarName);
-
-        if (objSceneActiveCamera == null || objSceneActiveCamera == undefined) {
-            return;
-        }
-        
-        var origin = new this.BABYLON.Vector3(objArcRotateCameraCodeGetObj.position.x, objArcRotateCameraCodeGetObj.position.y, objArcRotateCameraCodeGetObj.position.z);
-        var target = new this.BABYLON.Vector3(objArcRotateCameraCodeGetObj.target.x, objArcRotateCameraCodeGetObj.target.y, objArcRotateCameraCodeGetObj.target.z);
-        
-        var targetVector = new this.BABYLON.Vector3(
-            target.x - origin.x,
-            target.y - origin.y,
-            target.z - origin.z
-        );
-
-        
-        targetVector = targetVector.normalize();
-        
-        // 聚光灯朝向往前挪
-        objLight.position.x = origin.x + (targetVector.x * 0);
-        objLight.position.y = origin.y + (targetVector.y * 0);
-        objLight.position.z = origin.z + (targetVector.z * 0);
-
-        
-        // 聚光灯的朝向
-        objLight.direction = new this.BABYLON.Vector3(
-            targetVector.x,
-            targetVector.y,
-            targetVector.z
-        );
-
-        // 点光灯
-        let objPointLight = this.getPointLight(this.pointLightCode);
-
-        // 把灯光往朝向往前挪
-        objPointLight.position.x = origin.x + (targetVector.x * 0);
-        objPointLight.position.y = origin.y + (targetVector.y * 0);
-        objPointLight.position.z = origin.z + (targetVector.z * 0);
-
-        
-    }
-    
-    /**
-     * 优先将其他组件隐藏
-     */
-    public viewHide = () => {
-
-        this.gizmoManagerExitClose();
-        
-        // 车的相机隐藏
-        this.arcRotateCameraCarUpdate(false);
-
-        // @ts-ignore 允许键盘的操作
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonEvent.find().keyEventOpenApi = true;
-
-        // 不使用该灯光
-        courseChapter3dShow().show.lightMain = 0;
-        courseChapter3dShow().show.lightAssist = 0;
-        this.pointLightCameraUpdateConfig(0);
-
-        // 取消拖拽
-        this.gizmoManagerEventUpdate(null, null);
-
-        // 初始化为前置摄像头
-        courseChapter3dShow().show.lookAfterOrFront = "front";
-
-        // 不触发鼠标移动逻辑
-        courseChapter3dShow().show.pickResultMoveBool = false;
-        
-        // 停止车的移动
-        courseChapter3dShow().show.carStatus = "stopMove";
-        courseChapter3dShow().show.carMoveLv = 0;
-
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(true);
-        this.tipsBtnsDownOpenEvent(true);
-
-        courseChapter3dShow().show.showToastState = "";
-
-        courseChapter3dShow().show.showVideoBgBool = true;
-        courseChapter3dShow().show.courseChapter3dMainStyle = "z-index:0;";
-
-        courseChapter3dShow().show.threeWorldMask = false;
-        courseChapter3dShow().show.showOperationHelpViewBool = false;
-        courseChapter3dShow().show.showMouseViewBool = false;
-        courseChapter3dShow().show.showThreeRotationViewBool = false;
-        courseChapter3dShow().show.showStudyRightViewBool = false;
-        courseChapter3dShow().show.showMatterViewBool = false;
-        courseChapter3dShow().show.showVideoViewBool = false;
-        courseChapter3dShow().show.showToastViewBool = false;
-        courseChapter3dShow().show.showTitleViewBool = false;
-        courseChapter3dShow().show.showLinkOkViewBool = false;
-        courseChapter3dShow().show.showToolMenuRightViewBool = false;
-        courseChapter3dShow().show.showCarEyeViewBool = false;
-
-        courseChapter3dShow().show.showLinkOkNextBool = false;
-
-        courseChapter3dShow().show.showCarEyeViewBoolSpeeding = false;
-        courseChapter3dShow().show.showCarEyeViewBoolSpeeding2 = false;
-
-        courseChapter3dShow().show.showCongratulationsViewBool = false;
-        courseChapter3dShow().show.showEndViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = false;
-
-        courseChapter3dShow().show.showClickRotationViewBool = false;
-        
-    }
-
-    /**
-     * 操作帮助
-     */
-    public operationHelpEvent = () => {
-
-        this.viewHide();
-
-        courseChapter3dShow().show.showOperationHelpViewBool = true;
-
-    }
-
-    /**
-     * 设备拆解
-     */
-    public equipmentDisassemblyEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("检测车");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showMouseViewBool = true;
-        courseChapter3dShow().show.showThreeRotationViewBool = true;
-        
-    }
-
-    /**
-     * 切换对应的动画结果
-     * type     类型
-     */
-    public animationAllTypeUpdate = (type : any) => {
-
-        // 通过配置来更新动画
-        let list : any = [];
-
-        switch (type) {
-
-            // 停止所有动画放到对应的合理位置
-            case 'stopAll':
-                
-                list = [
-                    
-                    { "name" : "井盖002", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "井盖002|西区实训基地|BaseLayer", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全桩001|西区实训基地|BaseLayer.001", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全桩004|西区实训基地|BaseLayer.001", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全桩003|西区实训基地|BaseLayer.001", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全桩002|西区实训基地|BaseLayer.001", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "鞋子|", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全帽", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "裤子", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "上衣", "speed" : 1, "from" : 0, "to" : 0 },
-                    
-                    { "name" : "绕线车盒021", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车盒041", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒031", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒021", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒041", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车盒031", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "Armature", "speed" : 1, "from" : 0, "to" : 0 },
-                    
-                    { "name" : "叉1", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "叉2", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "上机", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "电池锁", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "电缆01", "speed" : 1, "from" : 80, "to" : 80 },
-                    { "name" : "手柄", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "防撞杆锁", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "防撞杆", "speed" : 100, "from" : 61, "to" : 61 },
-                    { "name" : "绕线车-电源线", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "锂电池", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "绕线车-纠偏轮", "speed" : 1, "from" : 32, "to" : 32 },
-
-                    { "name" : "10”后轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”后轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-
-                    { "name" : "6”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "相机", "speed" : 1, "from" : 40, "to" : 40 },
-                    { "name" : "镜头架", "speed" : 1, "from" : 40, "to" : 40 },
-
-                    { "name" : "电脑", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑主机", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑屏幕轴", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "电脑屏幕", "speed" : 1, "from" : 41, "to" : 41 },
-
-
-                    
-                ];
-
-                break;
-
-            // 进入拆箱前的动画
-            case 'beforeUnboxing':
-
-                list = [
-                    
-                    { "name" : "鞋子|", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "安全帽", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "裤子", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "上衣", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "井盖002", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "井盖002|西区实训基地|BaseLayer", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车盒021", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车盒041", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒031", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒021", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "爬行车盒041", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车盒031", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "Armature", "speed" : 1, "from" : 0, "to" : 0 },
-                    
-                    { "name" : "叉1", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "叉2", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "上机", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "电池锁", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "电缆01", "speed" : 1, "from" : 80, "to" : 80 },
-                    { "name" : "手柄", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "防撞杆锁", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "防撞杆", "speed" : 100, "from" : 61, "to" : 61 },
-                    { "name" : "绕线车-电源线", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "锂电池", "speed" : 1, "from" : 32, "to" : 32 },
-                    { "name" : "绕线车-纠偏轮", "speed" : 1, "from" : 32, "to" : 32 },
-                    
-                    { "name" : "10”后轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”后轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "6”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    
-                    { "name" : "相机", "speed" : 1, "from" : 40, "to" : 40 },
-                    { "name" : "镜头架", "speed" : 1, "from" : 40, "to" : 40 },
-
-                    { "name" : "电脑", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑主机", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑屏幕轴", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑屏幕", "speed" : 1, "from" : 41, "to" : 41 },
-
-                ];
-                
-                break;
-
-            // 将对应的物体零件摆放到对应的位置
-            case 'part':
-
-                list = [
-                    
-                    { "name" : "电池锁", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "电缆01", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "手柄", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "防撞杆锁", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "防撞杆", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车-电源线", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "锂电池", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "绕线车-纠偏轮", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "10”后轮左轴", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "10”后轮左", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "10”前轮左轴", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "10”前轮左", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "10”前轮右轴", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "10”前轮右", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "10”后轮右轴", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "10”后轮右", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "6”前轮右", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "6”中轮右", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "6”后轮右", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "6”后轮左", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "6”中轮左", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "6”前轮左", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "相机", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "镜头架", "speed" : 1, "from" : 0, "to" : 0 },
-
-                    { "name" : "电脑", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "电脑主机", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "电脑屏幕轴", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "电脑屏幕", "speed" : 1, "from" : 0, "to" : 0 },
-                    
-                ];
-
-                break;
-
-            // 将对应的物体零件【 轮胎 】摆放到对应的位置
-            case 'tyre':
-
-                list = [
-                    
-                    { "name" : "10”后轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮左轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”前轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "10”后轮右轴", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "10”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-
-                    { "name" : "6”前轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮右", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”后轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”中轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                    { "name" : "6”前轮左", "speed" : 1, "from" : 200, "to" : 200 },
-                ];
-
-                break;
-
-            // 将对应的物体零件【 防撞杆 】摆放到对应的位置
-            case 'antiCollisionBar':
-
-                list = [
-                    { "name" : "防撞杆", "speed" : 100, "from" : 61, "to" : 61 },
-                ];
-
-                break;
-
-            // 将对应的物体零件【 防撞杆锁 】摆放到对应的位置
-            case 'antiCollisionLock':
-                list = [
-                    { "name" : "防撞杆锁", "speed" : 1, "from" : 61, "to" : 61 },
-                ];
-                break;
-
-            // 将对应的物体零件【 镜头架 】摆放到对应的位置
-            case 'lensHolder':
-                list = [
-                    { "name" : "镜头架", "speed" : 1, "from" : 40, "to" : 40 },
-                ];
-                break;
-
-            // 将对应的物体零件【 相机 】摆放到对应的位置
-            case 'camera':
-                list = [
-                    { "name" : "相机", "speed" : 1, "from" : 40, "to" : 40 },
-                ];
-                break;
-
-            // 将对应的物体零件【 电源线 】摆放到对应的位置
-            case 'powerCord':
-                list = [
-                    { "name" : "绕线车-电源线", "speed" : 1, "from" : 32, "to" : 32 },
-                ];
-                break;
-
-            // 将对应的物体零件【 纠偏轮 】摆放到对应的位置
-            case 'correctionWheel':
-                list = [
-                    { "name" : "绕线车-纠偏轮", "speed" : 1, "from" : 32, "to" : 32 },
-                ];
-                break;
-
-            // 将对应的物体零件【 锂电池 】摆放到对应的位置
-            case 'lithiumBattery':
-                list = [
-                    { "name" : "电池锁", "speed" : 1, "from" : 61, "to" : 61 },
-                    { "name" : "锂电池", "speed" : 1, "from" : 32, "to" : 32 },
-                ];
-                break;
-
-            // 将对应的物体零件【 电脑主机 】摆放到对应的位置
-            case 'computerHost':
-                list = [
-                    
-                    { "name" : "电脑", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑主机", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑屏幕轴", "speed" : 1, "from" : 41, "to" : 41 },
-                    { "name" : "电脑屏幕", "speed" : 1, "from" : 41, "to" : 41 },
-
-                ];
-                break;
-
-            // 将对应的物体零件【 手柄 】摆放到对应的位置
-            case 'handle':
-                list = [
-                    { "name" : "手柄", "speed" : 1, "from" : 32, "to" : 32 },
-                ];
-                break;
-
-            // 将对应的物体零件【 电缆 】摆放到对应的位置
-            case 'cable':
-                list = [
-                    { "name" : "电缆01", "speed" : 1, "from" : 0, "to" : 80 },
-                ];
-                break;
-
-            // 重置井盖位置
-            case 'manholeCoverZero':
-                list = [
-                    { "name" : "井盖002", "speed" : 1, "from" : 0, "to" : 0 },
-                    { "name" : "井盖002|西区实训基地|BaseLayer", "speed" : 1, "from" : 0, "to" : 0 },
-                ];
-                break;
-
-            // case '':
-            //     break;
-
-            // case '':
-            //     break;
-            
-        }
-        
-        for (let i = 0; i < list.length; i++) {
-
-            let thisList = list[i];
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                    if (state == "播放完成") {
-                        
-                    }
-                    
-                }
-            );
-
-        }
-
-    };
-
-    /**
-     * 爬行器模块
-     */
-    public crawlerModuleEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-
-        // 触发鼠标移动逻辑
-        courseChapter3dShow().show.pickResultMoveBool = true;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("检测车标注");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        this.crawlerModuleTxtUpdate("crawlerModule");
-        courseChapter3dShow().show.showStudyRightViewBool = true;
-
-    }
-
-    /**
-     * 爬行器 - 内容
-     * type     类型
-     */
-    public crawlerModuleTxtUpdate = (type : String) => {
-
-        switch (type) {
-            // 爬行器
-            case 'crawlerModule':
-
-                courseChapter3dShow().show.showStudyRightTitle = "爬行器";
-                courseChapter3dShow().show.showStudyRightTxtList = [
-                    "一般的检测机器人车体主要包括车身、云台摄像机、LED灯光模块、升降架(适应不同管径)以及不同尺寸的轮组。",
-                    "1、 高清云台摄像机:满足360°轴向旋转,同时具备一定角度的径向旋转,可以满足拍摄管道中各个角度的管道图像,尤其是在拍摄管道接口位置时,可以采集完整的接口位置图像,以提高检测数据的完整性,方便数据分析人员对管道状况进行准确评估。",
-                    "2、 LED灯光模块:一般包含前置远光灯组、近光灯组以及后视灯组,可以保证云台拍摄时画面的清晰度,同时也可帮助地面控制人员控制机器人行走。  ",
-                    "3、 升降架:根据相关检测标准,检测机器人在管道中进行检测时,云台位置应处于管道的中心位置,以保证检测视频获取完整的非失真的管道图像,为了满足这一要求,-般检测机器人会配备升降机构,从而可以将云台根据不同管径的大小调整到管道的中心位置。  ",
-                    "4、 机器人底盘:一般包含电机、控制电路系统、信号处理系统等,是机器人的核心部分,目前的检测机器人一般配备了多个电机组,支持差速控制,既能满足机器人前进后退的行走需求,也可以满足机器人原地转弯等特殊操作需求。 ",
-                    " 轮组:由于不同的管道其管径大小不同,所以需要检测时根据不同的管径大小采用不同的轮组,以满足检测的需求。目前的检测机器人一般配备了多种尺寸的轮组,并采用快拆设计,保证更换方便。 ",
-                ];
-                break;
-
-        }
-
-    }
-
-    /**
-     * 线缆卷盘
-     */
-    public cableReelEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-        // 触发鼠标移动逻辑
-        courseChapter3dShow().show.pickResultMoveBool = true;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("绕线车标注");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-        
-        courseChapter3dShow().show.showStudyRightTitle = "线缆卷盘";
-        courseChapter3dShow().show.showStudyRightTxtList = [
-            "线缆卷盘一般由线缆、计米器、收放线控制系统、电源系统、通信系统等组成。",
-            "1、 收线模块:一般线缆卷盘采用几种收线方式,手动收线、电动收线、全自动收线。手动收线即通过摇杆等方式将线缆收回;电动收线则通过按动线缆卷盘上收线开关由线缆卷盘内部的电机进行收线或通过控制终端控制收线;全自动收线是收线控制系统根据机器人回退的速度自动调整收线电机的收线速度,从而将线缆自动收回。",
-            "2、 通信模块:线缆卷盘一般可通过有线通信与无线通信两种方式与控制终端进行通信。一般有线通信方式主要采用外接通信线方式将线缆卷盘与控制终端进行连接;无线通信方式是技术更为先进的通信方式,控制终端能够通过无线方式通过线缆卷盘控制机器人并获取机器人采集的图像视频信息。计米器:线缆卷盘通过配备计米器模块,可以准确计算出机器人在管道中行走的距离,从而能够准确定位缺陷所在的位置,同时可以计算出管道的长度,方便工程量计算以及项目验收。",
-        ];
-        courseChapter3dShow().show.showStudyRightViewBool = true;
-        
-    }
-
-    /**
-     * 检测实训注意事项
-     * durationStudyMin     学习时间
-     */
-    public precautionsForTestingTrainingEvent = (durationStudyMin : any) => {
-
-        // console.log(
-        //     "检测实训注意事项",
-        //     props.config
-        // );
-
-        this.viewHide();
-        courseChapter3dShow().show.showMatterViewBool = true;
-        courseChapter3dShow().show.showMatterDurationStudyMin = durationStudyMin;
-
-    }
-
-    /**
-     * 设备下井实验视频
-     */
-    public equipmentDownHoleExperimentVideoEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.showVideoTitle = "检测机器人设备组装";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/2_CCTV检测机器人设备组装.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-    /**
-     * 设置角色到地面的区域位置
-     */
-    public roleRegion = () => {
-
-        // @ts-ignore
-        let objRole = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().objRole;
-        // @ts-ignore
-        let CommonVal = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal;
-        
-        // objRole.position.x = (-30);
-        // objRole.position.y = (1.01);
-        // objRole.position.z = (1.25);
-
-        objRole.position.x = (-32);
-        objRole.position.y = (1.01);
-        objRole.position.z = (1.8);
-        
-
-    }
-
-    
-    // 请走到工作区域
-    public work_1 = () => {
-
-        // 没有穿衣服
-        this.workRoleClothingUpdate("no", false);
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-        // 切换动画
-        this.animationAllTypeUpdate("beforeUnboxing");
-
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("准备区域");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(true);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        // @ts-ignore
-        let thisBirthPoint = courseChapter3dShow().show.birthPoint["地面出生点"];
-        
-        // @ts-ignore
-        let objRole = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().objRole;
-        // @ts-ignore
-        let CommonVal = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal;
-
-        objRole.position.x = thisBirthPoint.positionTarget.x;
-        objRole.position.y = thisBirthPoint.positionTarget.y;
-        objRole.position.z = thisBirthPoint.positionTarget.z;
-
-        // CommonVal.find().objSceneActiveCamera.alpha = thisBirthPoint.alpha;
-        // CommonVal.find().objSceneActiveCamera.beta = thisBirthPoint.beta;
-
-        CommonVal.find().objSceneActiveCamera.alpha = 3.1617563103769375;
-        CommonVal.find().objSceneActiveCamera.beta = 1.4440851199999976;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().releaseCameraVisualAngle = 1;
-        // @ts-ignore 第三人称视角
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CameraArray.find().cameraVisualAngle = 1;
-        // @ts-ignore
-        threeWorld().obj.newIframe.modelPeopleLook(1);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CameraArray.find().cameraLookRoleZoomInNoStrEvent();
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    /**
-     * 更新工作人员的衣服
-     * wear                 no - 不穿, yes - 穿
-     * heightLightBool      true - 高亮, false - 不高亮
-     */
-    public workRoleClothingUpdate = (wear : String, heightLightBool : Boolean) => {
-        
-        // // 被更新的衣服服装id列表
-        // let list = [
-        //     "exhibition_html_1705997189149_node66",
-        //     "exhibition_html_1705997189149_node68",
-        //     "exhibition_html_1705997189149_node70",
-        //     "exhibition_html_1705997189149_node72",
-        //     "exhibition_html_1705997189149_node74",
-        //     "exhibition_html_1705997189149_node76",
-        // ];
-
-        // for (let i = 0; i < list.length; i++) {
-
-        //     let objMeshId = list[i];
-        //     // @ts-ignore
-        //     let objMesh = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(objMeshId);
-        //     if (objMesh != null && objMesh != undefined && objMesh.material != null && objMesh.material != undefined) {
-        //         objMesh.material.albedoTexture = wear == "no" ? wearTextureNo : wearTextureYes;
-        //     }
-            
-        // }
-
-
-        // @ts-ignore
-        let roleCode = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().roleCode;
-
-        // 循环所有的物体
-        // @ts-ignore
-        let objMeshes = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.meshes;
-        for (let i = 0; i < objMeshes.length; i++) {
-
-            let objMesh = objMeshes[i];
-            if (objMesh != null && objMesh != undefined && objMesh.material != null && objMesh.material != undefined) {
-
-                try {
-                    
-                    if (
-                        objMesh.id.indexOf(roleCode) >= 0
-                        && objMesh.id.indexOf("M_SML_Construction_01_primitive0") >= 0
-                    ) {
-                        objMesh.material.albedoTexture = wear == "no" ? this.wearTextureNo : this.wearTextureYes;
-                    }
-                    
-                } catch (e) {}
-
-                if (
-                    objMesh.id.indexOf(roleCode) >= 0
-                ) {
-
-                    if (heightLightBool == true) {
-                        this.objHighlightLayerEvent.objHighlightLayerInit();
-                        this.objHighlightLayerEvent.objHighlightLayer.addMesh(
-                            objMesh,
-                            new this.BABYLON.Color3(0 / 255, 230 / 255, 255 / 255)
-                        );
-
-                        // console.log(
-                        //     "设置高光", this.objHighlightLayerEvent
-                        // );
-
-                    }
-
-                }
-                
-            }
-
-        }
-
-        
-    }
-
-    // 请点击人物进行穿搭衣服
-    public work_2 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-        this.workRoleClothingUpdate("no", true);
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-        
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("穿工作服", false);
-        // @ts-ignore
-        // threeWorld().obj.newIframe.roleShow(true);
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        // 人物到指定坐标
-        this.roleRegion();
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    
-    // 将四个安全桩放置到正确的位置
-    public work_3 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        // threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("摆放安全桩", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-    
-    /**
-     * 是否触发完成动画了
-     */
-    public partEventBool = false;
-
-    /**
-     * 
-     */
-    public partEvent = () => {
-
-        if (this.partEventBool == true) {
-            return;
-        }
-
-        this.partEventBool = true;
-
-        this.animationAllTypeUpdate("part");
-
-
-    }
-
-    // 将盒子拆开把设备拿出来
-    public work_4 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-
-        // 切换动画
-        this.animationAllTypeUpdate("beforeUnboxing");
-
-        this.partEventBool = false;
-
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("开箱", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-
-    // 将盒子拆开把设备放置在安全的位置
-    public work_5 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("开箱", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    // 将检测机器人6寸轮子安装到正确位置
-    public work_6_0 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("6“轮安装5", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    // 将检测机器人的轮子安装到正确的位置(10寸轮子安装)
-    public work_6 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("10“轮安装4", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-    
-    // 将检测机器人6寸右侧轮子安装到正确位置
-    public work_6_right = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("6“轮安装5", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    // 将检测机器人6寸左侧轮子安装到正确位置
-    public work_6_left = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("6“轮安装1", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    // 将检测机器人10寸右侧轮子安装到正确位置
-    public work_10_right = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("10“轮安装3", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    // 将检测机器人10寸左侧轮子安装到正确位置
-    public work_10_left = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("10“轮安装1", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    // 将检测机器人的防撞杆安装到正确的位置
-    public work_7 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("防撞杆安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将检测机器人的防撞杆锁安装到正确的位置
-    public work_8 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("防撞杆锁安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将检测机器人的镜头架安装到正确的位置
-    public work_9 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将检测机器人的相机安装到正确的位置
-    public work_10 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的电源线安装到正确的位置
-    public work_11 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("电源线安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的纠偏轮安装到正确的位置
-    public work_12 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("纠偏轮安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的锂电池安装到正确的位置
-    public work_13 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("电池安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的电脑主机放置到正确的位置
-    public work_14 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("电脑安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的手柄安装到正确的位置
-    public work_15 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("手柄安装", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    // 将绕线车的电缆安装到正确的位置
-    public work_16 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("连接电缆", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    // 抬升支架降至最低
-    public work_17 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机上升", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-    
-    /**
-     * 将抬升支架降至最低,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openSupport = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "抬升支架降至最低") {
-            return;
-        }
-
-        // console.log(
-        //     "将盒子拆开把设备拿出来,触发动画",
-        //     objMesh.id
-        // );
-
-        if (
-
-            objMesh.id == "exhibition_html_1710385814466_上机_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_上机_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_上机_primitive2"
-            || objMesh.id == "exhibition_html_1710385814466_上机_primitive3"
-            || objMesh.id == "exhibition_html_1710385814466_上机_primitive4"
-            || objMesh.id == "exhibition_html_1710385814466_上机_primitive5"
-
-            || objMesh.id == "exhibition_html_1710385814466_基座_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_基座_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_基座_primitive2"
-            
-            || objMesh.id == "exhibition_html_1710385814466_叉1_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_叉1_primitive1"
-
-            || objMesh.id == "exhibition_html_1710385814466_叉2_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_叉2_primitive1"
-
-            || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive2"
-            || objMesh.id == "exhibition_html_1710385814466_镜头架_primitive3"
-
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-
-        ) {
-            
-            let list = [
-                
-                { "name" : "叉1", "speed" : 1, "from" : 160, "to" : 401 },
-                { "name" : "叉2", "speed" : 1, "from" : 160, "to" : 401 },
-                { "name" : "上机", "speed" : 1, "from" : 160, "to" : 401 },
-                { "name" : "相机", "speed" : 1, "from" : 160, "to" : 401 },
-                { "name" : "镜头架", "speed" : 1, "from" : 160, "to" : 401 },
-                
-            ];
-                
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-
-
-    // 镜头旋转至正上方
-    public work_18 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    /**
-     * 镜头旋转至正上方,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openShotUp = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "镜头旋转至正上方") {
-            return;
-        }
-        
-        if (
-
-            objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-
-        ) {
-            
-            let list = [
-                
-                { "name" : "相机", "speed" : 0.1, "from" : 123, "to" : 132 },
-
-            ];
-            
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-        
-    // 镜头归位
-    public work_19 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("镜头归位", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-        
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-    }
-
-    /**
-     * 镜头归位,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openShotRet = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "镜头归位") {
-            return;
-        }
-
-        if (
-
-            objMesh.id == "exhibition_html_1710385814466_相机_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive2"
-            || objMesh.id == "exhibition_html_1710385814466_相机_primitive3"
-
-        ) {
-            
-            let list = [
-                
-                { "name" : "相机", "speed" : 0.1, "from" : 132, "to" : 123 },
-
-            ];
-            
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-        
-    // 调节行驶方向正确放置过线滑轮
-    public work_20 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("偏放", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            // "调节行驶方向正确放置过线滑轮"
-        ];
-        // courseChapter3dShow().show.showToastViewBool = true;
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-
-        setTimeout(function() {
-            courseChapter3dShow().show.showClickRotationViewBool = true;
-        }, 1500);
-
-        // 更新旋转
-
-        // @ts-ignore
-        let CommonVal = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal;
-        let raoXianChe = CommonVal.find().objScene.getNodeById("exhibition_html_1709910293850__RaoXianChe");
-
-        raoXianChe.rotationQuaternion.x = 0.6793041089752351;
-        raoXianChe.rotationQuaternion.y = 0.19633155278297382;
-        raoXianChe.rotationQuaternion.z = -0.19633149598661914;
-        raoXianChe.rotationQuaternion.w = 0.6793039029733633;
-        
-
-        // for (let i = 0; i < raoXianChe._children.length; i++) {
-        //     let thisChildren = raoXianChe._children[i];
-        //     thisChildren.rotation.z = Math.PI / 3;
-        // }
-        
-        // raoXianChe.rotation.y = Math.PI / 3;
-
-        let paXingChe = CommonVal.find().objScene.getNodeById("exhibition_html_1709910293850__PaXingChe");
-        paXingChe.rotationQuaternion.x = 0.6783627735004868;
-        paXingChe.rotationQuaternion.y = -0.1995597575308167;
-        paXingChe.rotationQuaternion.z = 0.1995597111999094;
-        paXingChe.rotationQuaternion.w = 0.6783625670456601;
-        
-
-        // for (let i = 0; i < paXingChe._children.length; i++) {
-        //     let thisChildren = paXingChe._children[i];
-        //     thisChildren.rotation.z = Math.PI / 3;
-        // }
-
-        // paXingChe.rotation.y = Math.PI / 3;
-        // console.log(
-        //     raoXianChe,
-        //     paXingChe
-        // );
-
-        this.gizmoManagerEventUpdate(raoXianChe, paXingChe);
-
-        // 判断是否正确
-        this.work_20_event(raoXianChe, paXingChe);
-        
-    }
-
-
-    /**
-     * objOne       被操作的对象1
-     * objTwo       被操作的对象2
-     */
-    public work_20_event = (objOne : any, objTwo : any) => {
-
-        // console.log(
-        //     " const work_20_event = (objOne : any, objTwo : any) => { ",
-        //     objOne.rotationQuaternion,
-        //     objTwo.rotationQuaternion
-        // );
-
-
-        // 优先清除其他高光
-        this.objHighlightLayerEvent.removeAll();
-
-        // 方向调整正确
-        if (
-            objOne.rotationQuaternion.y >= -0.05
-            && objOne.rotationQuaternion.y <= 0.015
-        ) {
-
-            this.objHighlightLayerEvent.meshListAdd2(
-                [
-                    "exhibition_html_1709910293850__RaoXianChe",
-                ],
-                new this.BABYLON.Color3(0 / 255, 230 / 255, 255 / 255)
-            );
-
-        } else {
-
-            // 方向调整错误
-            this.objHighlightLayerEvent.meshListAdd2(
-                [
-                    "exhibition_html_1709910293850__RaoXianChe",
-                ],
-                new this.BABYLON.Color3(255 / 255, 0 / 255, 0 / 255)
-            );
-
-        }
-
-        // 方向调整正确
-        if (
-            objTwo.rotationQuaternion.y >= -0.05
-            && objTwo.rotationQuaternion.y <= 0.015
-        ) {
-
-            this.objHighlightLayerEvent.meshListAdd2(
-                [
-                    "exhibition_html_1709910293850__PaXingChe",
-                ],
-                new this.BABYLON.Color3(0 / 255, 230 / 255, 255 / 255)
-            );
-
-        } else {
-
-            // 方向调整错误
-            this.objHighlightLayerEvent.meshListAdd2(
-                [
-                    "exhibition_html_1709910293850__PaXingChe",
-                ],
-                new this.BABYLON.Color3(255 / 255, 0 / 255, 0 / 255)
-            );
-
-        }
-        
-        this.objHighlightLayerEvent.meshListAdd2(
-            [
-                "exhibition_html_1709910293850_电缆-特效",
-            ],
-            new this.BABYLON.Color3(0 / 255, 230 / 255, 255 / 255)
-        );
-
-        courseChapter3dShow().show.showDirectionViewBool = false;
-
-        if (
-            objOne.rotationQuaternion.y >= -0.05
-            && objOne.rotationQuaternion.y <= 0.015
-            && objTwo.rotationQuaternion.y >= -0.05
-            && objTwo.rotationQuaternion.y <= 0.015
-        ) {
-
-            // 上一步和下一步是否显示
-            this.tipsBtnsUpOpenEvent(true);
-            this.tipsBtnsDownOpenEvent(true);
-
-            courseChapter3dShow().show.showEndViewBool = true;
-
-        } else {
-
-            // 上一步和下一步是否显示
-            this.tipsBtnsUpOpenEvent(false);
-            this.tipsBtnsDownOpenEvent(false);
-
-            courseChapter3dShow().show.showEndViewBool = false;
-
-        }
-
-
-    }
-    
-    
-    /**
-     * 可操作的旋转对象
-     * objOne       被操作的对象1
-     * objTwo       被操作的对象2
-     */
-    public gizmoManagerEventUpdate = (objOne : any, objTwo : any) => {
-
-        let BABYLON = this.BABYLON;
-
-        let thisObj = this;
-
-        // @ts-ignore
-        let objChengGuangYuanJing = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing;
-
-        if (this.objGizmoManagerOne == null || this.objGizmoManagerOne == undefined) {
-            this.objGizmoManagerOne = new BABYLON.GizmoManager(objChengGuangYuanJing.CommonVal.find().objScene);
-        }
-
-        if (this.objGizmoManagerTwo == null || this.objGizmoManagerTwo == undefined) {
-            this.objGizmoManagerTwo = new BABYLON.GizmoManager(objChengGuangYuanJing.CommonVal.find().objScene);
-        }
-        
-        // 是否开启边界盒子,此时点击的物体,可以进行拖拽改变尺寸大小
-        this.objGizmoManagerOne.boundingBoxGizmoEnabled = false;
-        // 是否开启控制坐标,点击物体,可进行移动
-        this.objGizmoManagerOne.positionGizmoEnabled = false;
-        // 是否开启控制旋转,点击物体,可进行旋转
-        this.objGizmoManagerOne.rotationGizmoEnabled = false;
-        // 是否开启控制缩放,点击物体可进行缩放
-        this.objGizmoManagerOne.scaleGizmoEnabled = false;
-
-        /** 
-         * 控制是否可以点击物体,来进行拖拽。false 此时如果你选中了一个物体,那么在点击其他物体,则不能锁定其他物体,而是固定一直在当前的物体
-         * true 就是,你点击什么物体,就立刻锁定当前点击物体,来进行可以拖拽
-         */
-        this.objGizmoManagerOne.enableAutoPicking = false;
-        
-        // 是否开启边界盒子,此时点击的物体,可以进行拖拽改变尺寸大小
-        this.objGizmoManagerTwo.boundingBoxGizmoEnabled = false;
-        // 是否开启控制坐标,点击物体,可进行移动
-        this.objGizmoManagerTwo.positionGizmoEnabled = false;
-        // 是否开启控制旋转,点击物体,可进行旋转
-        this.objGizmoManagerTwo.rotationGizmoEnabled = false;
-        // 是否开启控制缩放,点击物体可进行缩放
-        this.objGizmoManagerTwo.scaleGizmoEnabled = false;
-        /** 
-         * 控制是否可以点击物体,来进行拖拽。false 此时如果你选中了一个物体,那么在点击其他物体,则不能锁定其他物体,而是固定一直在当前的物体
-         * true 就是,你点击什么物体,就立刻锁定当前点击物体,来进行可以拖拽
-         */
-        this.objGizmoManagerTwo.enableAutoPicking = false;
-
-        if (objOne != null && objOne != undefined) {
-            this.objGizmoManagerOne.enableAutoPicking = true;
-            this.objGizmoManagerOne.attachToMesh(objOne);
-            this.objGizmoManagerOne.enableAutoPicking = false;
-
-            this.objGizmoManagerOne.rotationGizmoEnabled = true;
-
-            this.objGizmoManagerOne.gizmos.rotationGizmo.xGizmo.isEnabled = false;
-            this.objGizmoManagerOne.gizmos.rotationGizmo.yGizmo.isEnabled = false;
-            this.objGizmoManagerOne.gizmos.rotationGizmo.zGizmo.isEnabled = true;
-
-            // // 清空所有的事件
-            // this.objGizmoManagerOne.gizmos.rotationGizmo.onDragStartObservable.clear();
-            // // 添加事件
-            // this.objGizmoManagerOne.gizmos.rotationGizmo.onDragStartObservable.add(function() {
-            //     // console.log("【旋转】开始", this.objGizmoManagerOne._attachedMesh);
-            // });
-
-            // 清空所有的事件
-            this.objGizmoManagerOne.gizmos.rotationGizmo.onDragEndObservable.clear();
-            // 添加事件
-            this.objGizmoManagerOne.gizmos.rotationGizmo.onDragEndObservable.add(function() {
-                // console.log(
-                //     "【旋转】结束 1111111111 ",
-                //     // this.objGizmoManagerOne._attachedMesh,
-                //     // this.objGizmoManagerOne._attachedMesh.absoluteRotationQuaternion,
-                //     this.objGizmoManagerOne._attachedMesh.rotationQuaternion,
-                // );
-
-                thisObj.work_20_event(thisObj.objGizmoManagerOne._attachedMesh, thisObj.objGizmoManagerTwo._attachedMesh);
-
-            });
-
-
-        }
-
-        if (objTwo != null && objTwo != undefined) {
-            this.objGizmoManagerTwo.enableAutoPicking = true;
-            this.objGizmoManagerTwo.attachToMesh(objTwo);
-            this.objGizmoManagerTwo.enableAutoPicking = false;
-
-            this.objGizmoManagerTwo.rotationGizmoEnabled = true;
-
-            // console.log(
-            //     "objGizmoManagerTwo", this.objGizmoManagerTwo.gizmos.rotationGizmo
-            // );
-
-            this.objGizmoManagerTwo.gizmos.rotationGizmo.xGizmo.isEnabled = false;
-            this.objGizmoManagerTwo.gizmos.rotationGizmo.yGizmo.isEnabled = false;
-            this.objGizmoManagerTwo.gizmos.rotationGizmo.zGizmo.isEnabled = true;
-
-            // // 清空所有的事件
-            // this.objGizmoManagerTwo.gizmos.rotationGizmo.onDragStartObservable.clear();
-            // // 添加事件
-            // this.objGizmoManagerTwo.gizmos.rotationGizmo.onDragStartObservable.add(function() {
-            //     // console.log("【旋转】开始", this.objGizmoManagerOne._attachedMesh);
-            // });
-
-            // 清空所有的事件
-            this.objGizmoManagerTwo.gizmos.rotationGizmo.onDragEndObservable.clear();
-            // 添加事件
-            this.objGizmoManagerTwo.gizmos.rotationGizmo.onDragEndObservable.add(function() {
-                // console.log(
-                //     "【旋转】结束 2222222222 ",
-                //     // objGizmoManagerTwo._attachedMesh,
-                //     // objGizmoManagerTwo._attachedMesh.absoluteRotationQuaternion,
-                //     objGizmoManagerTwo._attachedMesh.rotationQuaternion,
-                // );
-
-                thisObj.work_20_event(thisObj.objGizmoManagerOne._attachedMesh, thisObj.objGizmoManagerTwo._attachedMesh);
-                
-            });
-
-
-        }
-        
-    }
-
-    // 打开井盖
-    public work_21 = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.threeWorldMask = true;
-        
-        // 上一步和下一步是否显示
-        this.tipsBtnsUpOpenEvent(false);
-        this.tipsBtnsDownOpenEvent(false);
-
-        this.animationAllTypeUpdate("manholeCoverZero");
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("打开井盖", false);
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            ""
-        ];
-        courseChapter3dShow().show.showToastViewBool = false;
-
-        courseChapter3dShow().show.showThreeWorldIndicateViewBool = true;
-        
-    }
-
-    /**
-     * 打开井盖,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openManholeCover = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "打开井盖") {
-            return;
-        }
-
-        if (
-
-            objMesh.id == "model_1712911455459井盖002"
-
-        ) {
-            
-            let list = [
-                
-                { "name" : "井盖002", "speed" : 3, "from" : 0, "to" : 120 },
-                { "name" : "井盖002|西区实训基地|BaseLayer", "speed" : 3, "from" : 0, "to" : 120 },
-
-            ];
-            
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") { 
-                            
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-
-        
-    // 下井视频
-    public work_22 = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        // 设置角色到地面的区域位置
-        this.roleRegion();
-
-        courseChapter3dShow().show.showVideoTitle = "下井视频";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/4_CCTV检测机器人下井操作.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-
-    // 设备回收视频
-    public work_23 = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        // 设置角色到地面的区域位置
-        this.roleRegion();
-
-        courseChapter3dShow().show.showVideoTitle = "设备回收视频";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/6_CCTV检测机器人回收操作.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-    /**
-     * 作业前准备工作1
-     */
-    public preparationWorkBeforeHomework1Event = () => {
-
-        this.workRoleClothingUpdate("no", false);
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("制服");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-        
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "1、安全防护设备穿戴 作业人员在抵达作业现场时,必须穿醒目的带反光警示标志工作服(或反光衣)和佩好安全帽。"
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "立即穿戴";
-
-        courseChapter3dShow().show.showToastBtnTxt = "立即穿戴";
-        
-    }
-
-    /**
-     * 划安全区 动画回归位置
-     */
-    public animationAllFpsToZeroSecurityZone = () => {
-        
-        let list = [
-            "安全桩001|西区实训基地-烘|BaseLayer",
-            "安全桩002|西区实训基地-烘|BaseLayer",
-            "安全桩003|西区实训基地-烘|BaseLayer",
-            "安全桩004|西区实训基地-烘|BaseLayer",
-        ];
-
-        for (let i = 0; i < list.length; i++) {
-
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                list[i], 'start', 1,  0, 0, false, null, function(state : any, objAnimation : any) {
-
-                    if (state == "播放完成") {
-                        
-                    }
-                    
-                }
-            );
-
-        }
-
-
-    };
-
-    /**
-     * 安全桩 划安全区
-     * name     动画名字
-     */
-    public animationSecurityZoneStart = (name : String) => {
-
-        let thisObj = this;
-        
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-            name, 'start', 1,  null, null, false, null, function(state : any, objAnimation : any) {
-
-                if (state == "播放完成") {
-
-                    if (name == "安全桩001|西区实训基地-烘|BaseLayer") {
-                        thisObj.animationSecurityZoneStart("安全桩002|西区实训基地-烘|BaseLayer");
-                    } else if (name == "安全桩002|西区实训基地-烘|BaseLayer") {
-                        thisObj.animationSecurityZoneStart("安全桩003|西区实训基地-烘|BaseLayer");
-                    } else if (name == "安全桩003|西区实训基地-烘|BaseLayer") {
-                        thisObj.animationSecurityZoneStart("安全桩004|西区实训基地-烘|BaseLayer");
-                    }
-                    
-                    // console.log(
-                    //     "const animationSecurityZoneStart = (name : String) => {",
-                    //     name
-                    // );
-
-                }
-                
-            }
-        );
-        
-    }
-
-    /**
-     * 作业前准备工作2
-     */
-    public preparationWorkBeforeHomework2Event = () => {
-
-        this.animationAllFpsToZeroSecurityZone();
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-        
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "2、摆放反光锥",
-            "管井口四周摆放安全警示反光锥。",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "去摆放";
-
-        courseChapter3dShow().show.showToastBtnTxt = "去摆放";
-
-    }
-
-    /**
-     * 作业前准备工作3
-     */
-    public preparationWorkBeforeHomework3Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-
-        courseChapter3dShow().show.showToastBtnTxt = "";
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            "(1)确认管道水位情况",
-            "确认管道水位不大于管道直径20%,若管道水位大于管道直径20%,进行管道封堵、导流;",
-            "如需管道封堵、导流,提供开展封堵、导流提醒,并显示封堵、导流完成结果即可:",
-            "(2)管道疏通、清洗",
-            "当开展结构性,需针对管道进行疏通、清洗。提供开展高压清洗车进行清洗提醒,并疏通、清洗完成结果即可;",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-        
-    }
-
-    /**
-     * 作业前准备工作4
-     */
-    public preparationWorkBeforeHomework4Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "作业前准备工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-
-        courseChapter3dShow().show.showToastBtnTxt = "";
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            "确认管道水位不大于管道直径20%,若管道水位大于管道直径20%,进行管道封堵、导流;",
-            "如需管道封堵、导流,提供开展封堵、导流提醒,并显示封堵、导流完成结果即可:",
-            "(2)管道疏通、清洗",
-            "当开展结构性,需针对管道进行疏通、清洗。提供开展高压清洗车进行清洗提醒,并疏通、清洗完成结果即可;",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-    }
-
-    /**
-     * 设备连接工作1
-     */
-    public deviceConnectionWork1Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("检测车");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备连接工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // courseChapter3dShow().show.showLinkOkViewBool = true;
-        // courseChapter3dShow().show.showToolMenuRightViewBool = true;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-            "巡检车拆解", 'start', 1,  null, null, false, null, function(state : any, objAnimation : any) {
-
-                if (state == "播放完成") {
-                    
-                }
-                
-            }
-        );
-        
-    }
-
-    /**
-     * 设备连接工作2
-     */
-    public deviceConnectionWork2Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        // threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("检测车组");
-        
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备连接工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        // courseChapter3dShow().show.showLinkOkViewBool = true;
-
-        courseChapter3dShow().show.showToolMenuRightViewBool = true;
-
-    }
-
-    
-    /**
-     * 设备调试工作
-     */
-    public equipmentDebuggingWorkEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.showVideoTitle = "软件操作录屏视频";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/3_CCTV检测机器人控制软件介绍.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-    // 录制准备视频
-    public recordPreparationVideoEvent = () => {
-
-        this.viewHide();
-        courseChapter3dShow().show.showVideoTitle = "录制准备";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/3_CCTV检测机器人控制软件介绍.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-    // 设备下井工作1
-    public equipmentDownHoleWork1Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-        
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "1.将抬升支架降至最低",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "将抬升支架降至最低";
-
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    // 设备下井工作2
-    public equipmentDownHoleWork2Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-        
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "2.镜头旋转至正上方",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "镜头旋转至正上方";
-
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    // 设备下井工作3
-    public equipmentDownHoleWork3Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-        
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "3.摆放线缆盘,线缆盘方向与爬行器爬行的方向一致",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "摆放线缆盘线缆盘方向与爬行器爬行的方向一致";
-
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    // 设备下井工作4
-    public equipmentDownHoleWork4Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            "4.设备下井,云台摄像机朝下;设备下井时,应避免车体尾部线缆与井口、管壁发生摩擦导致线缆破损,线缆不能强拉硬拽。(建议在检测机器人尾部套入PVC水管弯头或购买导向轮,用于保护线缆)5.快到井底,尾部先下,镜头后下",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "";
-
-    }
-
-    // 设备下井工作5
-    public equipmentDownHoleWork5Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机上升");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showVideoBgBool = false;
-        courseChapter3dShow().show.showVideoTitle = "下井视频演示";
-        courseChapter3dShow().show.showVideoUrl = "https://www.3dyzt.com/eduTrain/video/4_CCTV检测机器人下井操作.mp4";
-        courseChapter3dShow().show.showVideoViewBool = true;
-
-    }
-
-    // 设备下井工作6
-    public equipmentDownHoleWork6Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "6.镜头归位",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "镜头归位";
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    // 设备下井工作7
-    public equipmentDownHoleWork7Event = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("相机降低");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备下井工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        courseChapter3dShow().show.showToastBtnOpen = true;
-        courseChapter3dShow().show.showToastTxtList = [
-            "7.调节行驶方向,正确放置过线滑轮",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "调节行驶方向正确放置过线滑轮";
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    // 下井检测
-    public downHoleInspectionEvent = () => {
-
-        this.viewHide();
-
-        courseChapter3dShow().show.courseChapter3dMainStyle = "z-index:107;";
-
-        // 切换到车的相机
-        this.arcRotateCameraCarUpdate(true);
-        // @ts-ignore 关闭键盘的操作
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonEvent.find().keyEventOpenApi = false;
-        // 使用灯光
-        // courseChapter3dShow().show.lightMain = 50;
-        courseChapter3dShow().show.lightMain = 10;
-        // courseChapter3dShow().show.lightAssist = 50;
-        courseChapter3dShow().show.lightAssist = 0;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("问题点");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        // @ts-ignore
-        let thisBirthPoint = courseChapter3dShow().show.birthPoint["下井检测"];
-
-        
-        // console.log(
-        //     "threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig",
-        //     // @ts-ignore
-        //     threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig,
-        //     thisBirthPoint
-        // );
-
-        // // 优先更新位置坐标,让后续切换到下井是直接切换
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig.alpha = thisBirthPoint.alpha;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig.beta = thisBirthPoint.beta;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig.position = thisBirthPoint.position;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig.positionTarget = thisBirthPoint.positionTarget;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig.radius = thisBirthPoint.radius;
-
-
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().roleConfig.alpha = thisBirthPoint.alpha;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().roleConfig.beta = thisBirthPoint.beta;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().roleConfig.position = thisBirthPoint.position;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().roleConfig.positionTarget = thisBirthPoint.positionTarget;
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().roleConfig.radius = thisBirthPoint.radius;
-
-        // @ts-ignore
-        let objRole = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().objRole;
-        // @ts-ignore
-        let CommonVal = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal;
-
-        objRole.position.x = thisBirthPoint.positionTarget.x;
-        objRole.position.y = thisBirthPoint.positionTarget.y;
-        objRole.position.z = thisBirthPoint.positionTarget.z;
-
-        CommonVal.find().objSceneActiveCamera.alpha = thisBirthPoint.alpha;
-        CommonVal.find().objSceneActiveCamera.beta = thisBirthPoint.beta;
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().releaseCameraVisualAngle = 0;
-        // @ts-ignore 第一人称视角
-        threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CameraArray.find().cameraVisualAngle = 0;
-
-
-        // // @ts-ignore
-        // threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().cameraConfig
-
-        // this.cameraConfig = {
-        //     position : {
-        //         x : -0.041237659846068725,
-        //         y : 1.987358447239373,
-        //         z : 6.459729812549235
-        //     },
-        //     alpha : 1.6103164322646395,
-        //     beta : 1.4550484068033844,
-        //     radius : 5.169452113030256,
-        //     positionTarget : {
-        //         x : 0.1616397954342349,
-        //         y : 1.3903403041312212,
-        //         z : 1.3288775223491305
-        //     },
-        //     // 移动速度, 等于 null , 则会自动以 Role.find().speed 速度为准
-        //     speedMove : null,
-        // };
-
-        // @ts-ignore 切换到第一人称
-        // threeWorld().obj.newIframe.modelPeopleLook(0);
-
-        setTimeout(function() {
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.$(".previewBtnMove").css("display", "none");
-            // @ts-ignore
-            threeWorld().obj.newIframe.objIframe.$(".previewBtnAction").css("display", "none");
-        }, 1000);
-
-        
-        
-        courseChapter3dShow().show.showCarEyeViewBool = true;
-        
-    }
-    
-    // 设备归位工作
-    public equipmentRepositioningWorkEvent = () => {
-
-        this.viewHide();
-
-        // @ts-ignore
-        threeWorld().obj.newIframe.cameraVisualAngleGetListNameGpsTo("划安全区");
-        // @ts-ignore
-        threeWorld().obj.newIframe.roleShow(false);
-
-        courseChapter3dShow().show.showTitleTxt = "设备归位工作";
-        courseChapter3dShow().show.showTitleViewBool = true;
-
-        courseChapter3dShow().show.showToastBtnOpen = false;
-        courseChapter3dShow().show.showToastTxtList = [
-            "现场监督人员签字",
-        ];
-        courseChapter3dShow().show.showToastViewBool = true;
-
-        // 配置状态,后续关闭隐藏后,触发不同的逻辑
-        courseChapter3dShow().show.showToastState = "";
-        courseChapter3dShow().show.showToastBtnTxt = "3D操作";
-
-    }
-
-    
-    /**
-     * 确定点击到了人物了,此时触发穿衣服逻辑
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public wearingClothes = (objMesh : any, statue : any) => {
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "请点击人物进行穿搭衣服") {
-            return;
-        }
-        
-        // @ts-ignore
-        let roleCode = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.Role.find().roleCode;
-
-        console.log(
-            "确定点击到了人物了,此时触发穿衣服逻辑",
-            objMesh.id,
-            roleCode
-        );
-
-        
-        // if (
-        //     // 点击到人物了
-        //     objMesh.id.indexOf(roleCode) >= 0
-        //     || objMesh.id == "exhibition_html_1710834647553_裤子"
-        //     || objMesh.id == "exhibition_html_1710834647553_鞋子"
-        //     || objMesh.id == "exhibition_html_1710834647553_安全帽"
-        //     || objMesh.id == "exhibition_html_1710834647553_上衣"
-        // ) {
-
-        //     this.workRoleClothingUpdate("yes", false);
-
-        //     // 隐藏对应的物体
-        //     let meshHideList = [
-        //         "exhibition_html_1710834647553_裤子",
-        //         "exhibition_html_1710834647553_鞋子",
-        //         "exhibition_html_1710834647553_安全帽",
-        //         "exhibition_html_1710834647553_上衣",
-        //     ];
-
-        //     for (let i = 0; i < meshHideList.length; i++) {
-
-        //         let thisMeshHideList = meshHideList[i];
-        //         // @ts-ignore
-        //         let objMesh = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById(thisMeshHideList);
-        //         if (objMesh != null && objMesh != undefined) {
-        //             objMesh.visibility = 0;
-        //         }
-                
-        //     }
-            
-        //     // 播放完成穿衣服的逻辑
-        //     courseChapter3dShow().show.showCongratulationsViewBool = true;
-        //     courseChapter3dShow().show.showEndViewBool = true;
-
-        //     // 上一步和下一步是否显示
-        //     this.tipsBtnsUpOpenEvent(true);
-        //     this.tipsBtnsDownOpenEvent(true);
-
-        // }
-
-        let thisObj = this;
-
-        if (
-            objMesh.id == "exhibition_html_1710899716162_安全帽"
-            || objMesh.id == "exhibition_html_1710899716162_鞋子"
-            || objMesh.id == "exhibition_html_1710899716162_上衣"
-            || objMesh.id == "exhibition_html_1710899716162_巡检员_primitive0"
-            || objMesh.id == "exhibition_html_1710899716162_巡检员_primitive1"
-            || objMesh.id == "exhibition_html_1710899716162_裤子"
-        ) {
-
-            // 播放对应的动画
-            let list = [
-                
-                { "name" : "鞋子|", "speed" : 1, "from" : 0, "to" : 82 },
-                { "name" : "安全帽", "speed" : 1, "from" : 0, "to" : 82 },
-                { "name" : "裤子", "speed" : 1, "from" : 0, "to" : 82 },
-                { "name" : "上衣", "speed" : 1, "from" : 0, "to" : 82 },
-                
-            ];
-                
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            // 播放完成穿衣服的逻辑
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-        
-    }
-
-    /**
-     * 将盒子拆开把设备拿出来,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openBox = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-        
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "将盒子拆开把设备拿出来") {
-            return;
-        }
-
-        // console.log(
-        //     "将盒子拆开把设备拿出来,触发动画",
-        //     objMesh.id
-        // );
-        
-        if (
-
-            objMesh.id == "exhibition_html_1710385814466_爬行车盒04"
-            || objMesh.id == "exhibition_html_1710385814466_爬行车盒01"
-            || objMesh.id == "exhibition_html_1710385814466_爬行车盒02"
-            || objMesh.id == "exhibition_html_1710385814466_爬行车盒03"
-
-            || objMesh.id == "exhibition_html_1710385814466_绕线车盒03"
-            || objMesh.id == "exhibition_html_1710385814466_绕线车盒01"
-            || objMesh.id == "exhibition_html_1710385814466_绕线车盒02"
-            || objMesh.id == "exhibition_html_1710385814466_绕线车盒04"
-
-        ) {
-            
-            let list = [
-                
-                { "name" : "绕线车盒021", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "绕线车盒041", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "爬行车盒031", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "爬行车盒021", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "爬行车盒041", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "绕线车盒031", "speed" : 1, "from" : 0, "to" : 61 },
-                { "name" : "Armature", "speed" : 1, "from" : 0, "to" : 61 },
-                
-            ];
-                
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-
-                            thisObj.partEvent();
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-
-    /**
-     * 将绕线车的电缆安装到正确的位置,触发动画
-     * objMesh          被点击的目标物体
-     * statue           流程状态
-     */
-    public openCable = (objMesh : any, statue : any) => {
-
-        let thisObj = this;
-
-        if (objMesh == null || objMesh == undefined) {
-            return;
-        }
-        
-        if (statue != "将绕线车的电缆安装到正确的位置") {
-            return;
-        }
-
-        // console.log(
-        //     "将盒子拆开把设备拿出来,触发动画",
-        //     objMesh.id
-        // );
-
-        if (
-
-            objMesh.id == "exhibition_html_1710385814466_电缆01_primitive0"
-            || objMesh.id == "exhibition_html_1710385814466_电缆01_primitive1"
-            || objMesh.id == "exhibition_html_1710385814466_绕线车-电缆"
-        ) {
-            
-            let list = [
-                
-                { "name" : "电缆01", "speed" : 1, "from" : 0, "to" : 80 },
-                
-            ];
-                
-            for (let i = 0; i < list.length; i++) {
-
-                let thisList = list[i];
-                // @ts-ignore
-                threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback(
-                    thisList.name, 'start', thisList.speed, thisList.from, thisList.to, false, null, function(state : any, objAnimation : any) {
-
-                        if (state == "播放完成") {
-                            
-                            thisObj.dianLan();
-
-                            // 上一步和下一步是否显示
-                            thisObj.tipsBtnsUpOpenEvent(true);
-                            thisObj.tipsBtnsDownOpenEvent(true);
-
-                            courseChapter3dShow().show.showCongratulationsViewBool = true;
-                            courseChapter3dShow().show.showEndViewBool = true;
-
-                            
-                            
-                            
-                        }
-                        
-                    }
-                );
-
-            }
-            
-        }
-
-    }
-
-    /**
-     * 电缆物体显示出来
-     */
-    public dianLan = () => {
-
-        // @ts-ignore 显示对应的物体
-        let dianLanMesh = threeWorld().obj.newIframe.objIframe.ChengGuangYuanJing.CommonVal.find().objScene.getMeshById("exhibition_html_1709910293850_电缆-特效");
-                            
-        if (dianLanMesh != null && dianLanMesh != undefined) {
-            dianLanMesh.visibility = 1;
-        }
-
-    }
-
-    
-    /**
-     * 根据指定的流程,来切换播放的声音
-     * name             流程名称
-     * type             播放的字段,例如 start 或者 end 等后续扩展
-     * 
-     */
-    public musicConfigPlay = (name : any, type : any) => {
-
-        if (this.musicConfig[name] == null || this.musicConfig[name] == undefined) {
-            return this;
-        }
-
-        if (this.musicConfig[name][type] == null || this.musicConfig[name][type] == undefined) {
-            return this;
-        }
-
-        let config = this.musicConfig[name][type];
-
-        
-        if (this.objModelHtml5Audio != null && this.objModelHtml5Audio != undefined) {
-            this.objModelHtml5Audio.pause();
-        }
-
-        // console.log(
-        //     "播放声音", config
-        // );
-
-        // 设置播放音乐的文件,或者地址
-        this.objModelHtml5Audio.setUrl(config);
-
-        // 不需要循环播放
-        this.objModelHtml5Audio.loopClose();
-        // 继续播放音乐
-        this.objModelHtml5Audio.start();
-
-        // console.log(
-        //     "播放的音乐",
-        //     config,
-        //     this.objModelHtml5Audio
-        // );
-
-        return this;
-
-    }
-
-
-
-}

+ 1 - 6
src/stores/courseChapter3dShow.ts

@@ -11,12 +11,7 @@ export const courseChapter3dShow = defineStore('courseChapter3dShow', () => {
 
         // 3d的样式
         courseChapter3dMainStyle : "z-index:0;",
-
-        /**
-         * 
-         */
-        objTypeViewEvent : null,
-
+        
         // 记录当前的3d切换的视角参数
         viewType : null,
         

+ 2 - 2
src/view/LogIn.vue

@@ -3,8 +3,8 @@
         <div id="login-backgroud" class="login-backgroud"></div>
         <div class="login-container">
             <div class="login-header">
-                <span class="title-1">排水管道智能检测评估</span>
-                <span class="title-2">虚拟仿真软件</span>
+                <span class="title-1">排水管网运维养护</span>
+                <span class="title-2">虚拟仿真教学平台</span>
             </div>
             <div class="login-form">
                 <el-form ref="formRef" :model="form" :rules="rules" :validate-on-rule-change="false" @keyup.enter="onSubmit(formRef)">

+ 1 - 1
src/view/student/layout/index.vue

@@ -27,7 +27,7 @@ import router from '@/router/index';
 
 const userInfo = useUserInfo();
 const route = useRoute();
-const title = ref('排水管道智能检测评估虚拟仿真实验');
+const title = ref('排水管网运维养护虚拟仿真教学平台');
 const state: {
     componentKey: string;
     keepAliveComponentNameList: string[];

Some files were not shown because too many files changed in this diff