import { QingXiCheAndQvCarEvent } from "./QingXiCheAndQvCarEvent.js"; import { QingXiCheAndQvComHighlightLayer } from "./QingXiCheAndQvComHighlightLayer.js"; import { ComVal } from "../common/ComVal.js"; import { WindowEvent } from "../../WindowQingXiCheAndQv/js/WindowEvent.js"; import { QingXiCheAndQvComRes } from '../js/QingXiCheAndQvComRes.js'; import { QingXiCheAndQvComClipPlaneMeshEvent } from './QingXiCheAndQvComClipPlaneMeshEvent.js'; import { QingXiCheAdnQvCarEventStep } from './QingXiCheAdnQvCarEventStep.js'; import { ElMessage, ElMessageBox } from 'element-plus'; /** * 操作清洗车仿真 点击物体的时候触发 逻辑 */ export class QingXiCheAndQvCarEventClick { // 每次 new 出对象则会调用这个构造函数 constructor() { /** * 三维世界对象 src\components\ThreeWorldEvent\js\QingXiCheAndQvThreeWorldEventMain.js */ this.objThreeWorldEventMain = null; /** * 当前移动的物体列表,和对应的参数 * 当数组存在目标的时候,则 拖拽的时候,目标物体跟着鼠标移动 */ this.moveMeshList = []; // 记录第一次点击拖拽时候的坐标 this.moveMeshListClick = { "x" : 0, "y" : 0, "z" : 0 }; /** * 当前这些参数不等于null的时候,则说明再拖拽移动目标物体 * 此时固定相机的坐标,和视角 */ this.moveCameraRadius = null; this.moveCameraAlpha = null; this.moveCameraBeta = null; // 记录最后因为 this.moveMeshList 逻辑,鼠标移动的坐标 this.moveCoordinate = { "x" : 0, "y" : 0, "z" : 0 }; // 是否开启每帧判断的逻辑 this.renderEventBool = false; // 记录 QingXiCheAndQvProcessEventStore this.QingXiCheAndQvProcessEventStore = null; } // 实现单例模式 static find() { if (!QingXiCheAndQvCarEventClick.instance) { QingXiCheAndQvCarEventClick.instance = new QingXiCheAndQvCarEventClick(); } return QingXiCheAndQvCarEventClick.instance; } /** * 鼠标点击的时候 * pickResult 点击的具体坐标,物体等信息 */ clickMeshEvent = function(pickResult) { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // console.log( // "鼠标点击的时候", pickResult // ); // 处理中则不做处理 if (QingXiCheAndQvCarEvent.find().eventEnd != 0) { return this; } let type = QingXiCheAndQvCarEvent.find().eventName; let meshMoveConfig = thisClass.meshMoveConfig(type); if (meshMoveConfig == null) { thisClass.moveMeshListReset(); return; } // 目标物体 let pickedMesh = pickResult["pickedMesh"]; if (typeof pickedMesh["id"] != "string") { return; } let meshId = pickedMesh["id"]; // 点击的坐标 let pickedPoint = pickResult["pickedPoint"]; let meshList = meshMoveConfig["meshList"]; let meshJson = meshMoveConfig["meshJson"]; // 点击的不是在物体的列表里的时候 if (meshJson[meshId] == null || meshJson[meshId] == undefined) { thisClass.moveMeshListReset(); return; } let objSceneActiveCamera = ChengGuangYuanJing.CommonVal.find().objSceneActiveCamera; thisClass.moveCameraRadius = objSceneActiveCamera.radius; thisClass.moveCameraAlpha = objSceneActiveCamera.alpha; thisClass.moveCameraBeta = objSceneActiveCamera.beta; thisClass.moveMeshListClick = { "x" : pickedPoint.x, "y" : pickedPoint.y, "z" : pickedPoint.z }; console.log( "thisClass.moveMeshListClick", thisClass.moveMeshListClick ); thisClass.moveMeshList = []; // 记录点击的时候的物体的坐标 for (let i = 0; i < meshList.length; i++) { let thisMeshId = meshList[i]; let thisObjMesh = objScene.getMeshById(thisMeshId); if (thisObjMesh != null && thisObjMesh != undefined) { // 设置为不可选中 thisObjMesh.isPickable = false; let addJson = { "meshId" : thisObjMesh.id, "x" : thisObjMesh.absolutePosition.x, "y" : thisObjMesh.absolutePosition.y, "z" : thisObjMesh.absolutePosition.z, }; thisClass.moveMeshList.push( // 必须转换下,这样就是独立的对象 JSON.parse(JSON.stringify(addJson)) ); } } return thisClass; } /** * 重置为不是拖拽逻辑 */ moveMeshListReset = function() { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 先将对应的物体,恢复可以选中 if (thisClass.moveMeshList.length > 0) { for (let i = 0; i < thisClass.moveMeshList.length; i++) { let thisConfig = thisClass.moveMeshList[i]; let thisMeshId = thisConfig["meshId"]; let thisObjMesh = objScene.getMeshById(thisMeshId); if (thisObjMesh != null && thisObjMesh != undefined) { // 设置为可选中 thisObjMesh.isPickable = true; } } } thisClass.moveMeshList = []; thisClass.moveCameraRadius = null; thisClass.moveCameraAlpha = null; thisClass.moveCameraBeta = null; } /** * 更新被拖拽物体的位置 */ moveMeshListCoordinateUpdate = function() { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; if (thisClass.moveMeshList.length > 0) { // 追加的xyz坐标 var addPosition = { "x" : thisClass.moveCoordinate.x - thisClass.moveMeshListClick.x, "y" : thisClass.moveCoordinate.y - thisClass.moveMeshListClick.y, "z" : thisClass.moveCoordinate.z - thisClass.moveMeshListClick.z, }; for (let i = 0; i < thisClass.moveMeshList.length; i++) { let thisConfig = thisClass.moveMeshList[i]; let thisMeshId = thisConfig["meshId"]; let thisObjMesh = objScene.getMeshById(thisMeshId); if (thisObjMesh != null && thisObjMesh != undefined) { // 一定要用绝对坐标更新,这样才可以解决不同模型轴向,问题导致设置 position 会各种出错 thisObjMesh.setAbsolutePosition( new BABYLON.Vector3( parseFloat(thisConfig["x"]) + addPosition.x, parseFloat(thisConfig["y"]) + addPosition.y, parseFloat(thisConfig["z"]) + addPosition.z ) ); } } } } /** * 将当前的物体列表,回归到最初原始的坐标位置 */ moveMeshListResetPosition = function () { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; if (thisClass.moveMeshList.length > 0) { for (let i = 0; i < thisClass.moveMeshList.length; i++) { let thisConfig = thisClass.moveMeshList[i]; let thisMeshId = thisConfig["meshId"]; let thisObjMesh = objScene.getMeshById(thisMeshId); if (thisObjMesh != null && thisObjMesh != undefined) { // 一定要用绝对坐标更新,这样才可以解决不同模型轴向,问题导致设置 position 会各种出错 thisObjMesh.setAbsolutePosition( new BABYLON.Vector3( parseFloat(thisConfig["x"]), parseFloat(thisConfig["y"]), parseFloat(thisConfig["z"]) ) ); } } } } /** * 鼠标移动的时候 * pickResult 点击的具体坐标,物体等信息 */ clickMoveMeshEvent = function(pickResult) { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // console.log( // "鼠标移动的时候", pickResult // ); // 处理中则不做处理 if (QingXiCheAndQvCarEvent.find().eventEnd != 0) { return this; } // 此时移动的坐标 let pickedPoint = pickResult["pickedPoint"]; thisClass.moveCoordinate = { "x" : pickedPoint.x, "y" : pickedPoint.y, "z" : pickedPoint.z }; thisClass.moveMeshListCoordinateUpdate(); return thisClass; } /** * 判断是否拖拽到指定的坐标范围了 * 范围内 返回 true , 否则返回 false */ dragBool = function() { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 当没有被点击的物体的时候,说明该逻辑是没有拖拽到附近的 if (thisClass.moveMeshList.length <= 0) { return false; } // 最终应该拖拽到哪个坐标附近 let targetPosition = { "x" : -0.00247241766192019, "y" : -0.8081836700439453, "z" : 36.005401611328125, } // 得到两点之间的距离 let thisVector3distanceTo = BABYLON.Vector3.Distance( new BABYLON.Vector3(parseFloat(targetPosition.x), parseFloat(targetPosition.y), parseFloat(targetPosition.z)), new BABYLON.Vector3(parseFloat(thisClass.moveCoordinate.x), parseFloat(thisClass.moveCoordinate.y), parseFloat(thisClass.moveCoordinate.z)) ); // console.log( // "拖拽后的距离", thisVector3distanceTo // ); if (thisVector3distanceTo <= 0.5) { return true; } return false; } /** * 每帧被执行,用于判断距离等情况使用 */ renderEvent = () => { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; if (thisClass.renderEventBool == false) { return this; } if (QingXiCheAndQvCarEvent.find().eventEnd != 0) { return this; } let type = QingXiCheAndQvCarEvent.find().eventName; // console.log("每帧 renderEvent ---", type); switch (type) { case '行至车辆区域': let roleAndPositionTargetBool = objThreeWorldEventMain.roleAndPositionTargetBool(); if (roleAndPositionTargetBool == true) { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.renderEventBool = false; // 记录当前的视角,解决人物,切换到新的视角的时候,会出现一个很长的过度问题 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); thisClass.downTimeEvent(); } break; case '绕车一周': // console.log("绕车一周 每帧执行"); let aroundTheCarPointBool = objThreeWorldEventMain.aroundTheCarPointBool(); // console.log("绕车一周 每帧执行 ---", aroundTheCarPointBool); if (aroundTheCarPointBool == true) { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.renderEventBool = false; // 记录当前的视角,解决人物,切换到新的视角的时候,会出现一个很长的过度问题 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); thisClass.downTimeEvent(); } break; } } /** * 统一处理完成当前任务的逻辑 */ downTimeEvent = () => { let thisClass = this; ElMessageBox.alert('恭喜你,完成了当前任务,请点击下一步继续', '提示', { confirmButtonClass : 'el-button--success', confirmButtonText: '下一步', callback: (action) => { thisClass.QingXiCheAndQvProcessEventStore.obj.downTime = "" + new Date().getTime(); }, }); } /** * 鼠标弹起的时候 * 根据点击到的物体,和当前的流程,触发对应的逻辑 * pickResult 点击的具体坐标,物体等信息 */ main = (pickResult) => { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; console.log("typeClick 111111", QingXiCheAndQvCarEvent.find().eventName, QingXiCheAndQvCarEvent.find().eventEnd); if (QingXiCheAndQvCarEvent.find().eventEnd != 0) { return this; } console.log("typeClick 222222", QingXiCheAndQvCarEvent.find().eventName, QingXiCheAndQvCarEvent.find().eventEnd); var objMesh = pickResult.pickedMesh; var objPosition = pickResult.pickedPoint; // 获取点击对象的方向【 一定要加上 true,否则载入的获取模型的方向,会有问题 】 // eslint-disable-next-line no-unused-vars var getNormal = pickResult.getNormal(true); let type = QingXiCheAndQvCarEvent.find().eventName; let dragBool = thisClass.dragBool(); switch(type) { // 仿真模拟 case '仿真模拟': break; // 人物换装 case '人物换装': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("穿衣服_2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('人物换装_鞋子', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('人物换装_裤子', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('人物换装_上衣', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('人物换装_安全帽', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); }); } break; // 打开车门进入驾驶室 case '打开车门进入驾驶室': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_打开左门', function() { // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车打开车门"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 // ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500 * 3, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车确定车辆双闪和工作箭头等是否正常"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_关门', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车进入副驾驶2"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); }); } break; // 确认手刹已拉起档位是P档然后发动车辆 case '确认手刹已拉起档位是P档然后发动车辆': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车切换挡位到空挡"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 发动车辆 case '发动车辆': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车启动车辆"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_旋转钥匙', function() { QingXiCheAndQvCarEvent.find().carOpen(true); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); // // 切换视角 // objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("拧动钥匙发动车辆向上"); // objIframeEdit.roleShow(false); // thisTime = new Date().getTime(); // // 控制延迟逻辑 // ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { // ComVal.find().fpsEventDel(fpsEventAddRet.code); // QingXiCheAndQvCarEvent.find().eventEnd = 2; // QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); // QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); // }); }); }); } break; // 打开车辆双闪同时开启工作双闪灯 case '打开车辆双闪同时开启工作双闪灯': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + new Date().getTime(), {}, 1000, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; QingXiCheAndQvCarEvent.find().carShuangShanOpen(true); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车开启双闪"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 踩下车辆离合器5秒 case '踩下车辆离合器5秒': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车踩离合5秒"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('踩下车辆离合器5秒', function() { WindowEvent.find().WindowCountdownOpen(5, "自定义返回数据", function(WindowCountdownOpenRes) { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); } break; // 按下取力器开关 case '按下取力器开关': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("观察仪表盘指示目视"); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车按下取力器开关"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 缓慢抬起离合器 case '缓慢抬起离合器': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("抬起离合器踏板2"); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车缓慢抬起离合器"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('缓慢抬起离合器', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 确定车辆双闪和工作箭头等是否正常 case '确定车辆双闪和工作箭头等是否正常': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车确定车辆双闪和工作箭头等是否正常"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 下车 case '下车': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("启动"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_打开左门', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车下车_1"); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500 * 2, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_关门', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); } break; // 下车确定安全灯显示是否正常 case '下车确定安全灯显示是否正常': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_关门', function() { // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("下车观察各项灯光"); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车确定安全灯是否正常"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); // }); } break; // 在施工范围放置警示标识 case '在施工范围放置警示标识': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate();// 先记录下当前视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车摆放安全桩"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().anQuanZhuangLookYes(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 从水管固定座上拧下高压水管 case '从水管固定座上拧下高压水管': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("从水管固定座上拧下高压水管2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); // QingXiCheAndQvComClipPlaneMeshEvent.find().jieKaiLookYes(function() { QingXiCheAndQvComClipPlaneMeshEvent.find().jieKaiLookYes_2(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 调整卷筒器到合适位置 case '调整卷筒器到合适位置': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("调整卷筒器到合适位置2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_调整卷筒器到合适位置_打开_1', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_调整卷筒器到合适位置_打开_2', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); } break; // 取出高压水管并放入布管器内 case '取出高压水管并放入布管器内': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("取出高压水管并放入布管器内2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().zhuanDaoWeiLookYes(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 套上高压水管护管器 case '套上高压水管护管器': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("套上高压水管护管器2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_套上高压水管护管器', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); // QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_1(function() { // QingXiCheAndQvCarEvent.find().eventEnd = 2; // QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); // QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); // }); }); }); } break; // 安装合适的高压喷头 case '安装合适的高压喷头': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("安装合适的高压喷头2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_安装合适的高压喷头_打开箱子', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_安装合适的高压喷头_喷头移动到对应位置', function() { QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_1(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); } break; // 将高压水管放入待施工的管道内 case '将高压水管放入待施工的管道内': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将高压水管放入待施工的管道内2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_将高压水管放入待施工的管道内_打开井盖', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_高压水管护管器_弯曲', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_安装合适的高压喷头_喷头移动到对应位置_下井', function() { }); QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_2(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); } break; // 在触屏操作面板上将管长清零 case '在触屏操作面板上将管长清零': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("在触屏操作面板上将管长清零2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 在安全的情况开启冲水开关 case '在安全的情况开启冲水开关': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("在安全的情况开启冲水开关2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 根据现场工况调节冲水压力 case '根据现场工况调节冲水压力': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("根据现场工况调节冲水压力2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().waterEvent(true); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 疏通管道后减小油门到初始状态 case '疏通管道后减小油门到初始状态': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("疏通管道后减小油门到初始状态2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().waterEvent(false); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 带压收回高压水管 case '带压收回高压水管': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("带压收回高压水管2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); } break; // 至触摸屏关闭冲水开关 case '至触摸屏关闭冲水开关': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("至触摸屏关闭冲水开关2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); } break; // 缓慢收回高压水管 case '缓慢收回高压水管': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("缓慢收回高压水管2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_高压水管护管器_变直', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_将高压水管放入待施工的管道内_关闭井盖', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_安装合适的高压喷头_喷头移动到对应位置_地面', function() { }); QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_3(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); } break; // 拆卸高压喷头放入喷头机箱内 case '拆卸高压喷头放入喷头机箱内': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("拆卸高压喷头放入喷头机箱内2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_喷头放入箱内', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_箱子盖起', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); } break; // 收起高压水管将卷筒恢复到初始状态 case '收起高压水管将卷筒恢复到初始状态': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("收起高压水管将卷筒恢复到初始状态2"); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车收回高压水管并拆卸高压喷头放入喷头机箱内1"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_4(function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_高压水管护管器回到原始位置', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("收起高压水管将卷筒恢复到初始状态2"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().zhuanDaoWeiLookYes_2(function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_调整卷筒器到合适位置_关闭_2', function() { QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_调整卷筒器到合适位置_关闭_1', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); }); }); }); } break; // 将高压水管拧到水管固定座 case '将高压水管拧到水管固定座': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将高压水管拧到水管固定座2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().jieKaiLookYes(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_开启卷帘门 case '小卷筒使用方法_开启卷帘门': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车拉出水管到需要的长度固定2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_开启卷帘门', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_开启车身侧门 case '小卷筒使用方法_开启车身侧门': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车拉出水管到需要的长度固定1"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_开启车身侧门', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_拉出水管到需要的长度固定 case '小卷筒使用方法_拉出水管到需要的长度固定': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车拉出水管到需要的长度固定2"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().shuiQiangGuanLook_1(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_安装手持水枪 case '小卷筒使用方法_安装手持水枪': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车安装手持水枪"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_安装手持水枪', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_切换手动三通阀 case '小卷筒使用方法_切换手动三通阀': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车切换手动三通阀"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 小卷筒使用方法_扣动手持水枪的开关即可出水 case '小卷筒使用方法_扣动手持水枪的开关即可出水': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车扣动手持水枪的开关即可出水"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().waterShuiQiangEvent(true); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1000, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_在使用完毕后切换手动三通阀 case '小卷筒使用方法_在使用完毕后切换手动三通阀': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车在使用完毕后切换手动三通阀1"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().waterShuiQiangEvent(false); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1000, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); } break; // 小卷筒使用方法_拆卸掉手持水枪并收回水管 case '小卷筒使用方法_拆卸掉手持水枪并收回水管': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车拆卸掉手持水枪并收回水管1"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_卸掉手持水枪', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车拉出水管到需要的长度固定2"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvComClipPlaneMeshEvent.find().shuiQiangGuanLook_2(function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车在使用完毕后切换手动三通阀1"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_关闭车身侧门', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车安装手持水枪"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('小卷筒使用方法_关闭卷帘门', function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); }); }); }); }); } break; // 回到驾驶室 case '回到驾驶室': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_打开左门', function() { // 切换视角 objThreeWorldEventMain.coordinateMoveSphereFollowUpdate(); objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车打开车门"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 // ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500 * 3, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车确定车辆双闪和工作箭头等是否正常"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_关门', function() { objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车进入副驾驶2"); ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); }); }); } break; // 回到驾驶室踩下车辆离合器5秒 case '回到驾驶室踩下车辆离合器5秒': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车踩离合5秒"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('踩下车辆离合器5秒', function() { WindowEvent.find().WindowCountdownOpen(5, "自定义返回数据", function(WindowCountdownOpenRes) { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); }); }); } break; // 关闭取力器开关 case '关闭取力器开关': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); // objIframeEdit.cameraVisualAngleGetListNameGpsTo("观察仪表盘指示目视"); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车按下取力器开关"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 关闭车辆双闪和工作双闪箭头灯 case '关闭车辆双闪和工作双闪箭头灯': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; QingXiCheAndQvCarEvent.find().carShuangShanOpen(false); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("打开工作双闪箭头灯"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; case '切换E/P开关至E档': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("清洗车切换挡位到空挡"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); thisClass.downTimeEvent(); }); } break; // 车辆正常熄火 case '车辆正常熄火': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("拧动钥匙发动车辆"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_钥匙关闭_熄火', function() { QingXiCheAndQvCarEvent.find().carOpen(false); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("拧动钥匙发动车辆向上"); objIframeEdit.roleShow(false); thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); }); } break; // // // case '': // break; // // // case '': // break; // 已完成所有任务 case 'equipmentRepositioningWork': break; // 数字修复虚拟仿真-将阀门关闭停止水流 case '数字修复虚拟仿真-将阀门关闭停止水流': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("关闭阀门完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); // 停止水流 QingXiCheAdnQvCarEventStep.find().waterGuanEvent(false); QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); } break; // 数字修复虚拟仿真-将橡胶垫片放置到正确的位置 case '数字修复虚拟仿真-将橡胶垫片放置到正确的位置': // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 范围内 if (dragBool == true) { // 回到原始位置 thisClass.moveMeshListResetPosition(); WindowEvent.find().WindowTxtViewOpenEvent( // "现在播放橡胶垫片安装过程\n" // + "各类机械设备的法兰连接、轴承密封、泵体密封等部位都需要使用橡胶垫片,以保证设备的正常运行,防止润滑油、液压油等泄漏" ); // WindowEvent.find().WindowVideoViewOpenEvent( // QingXiCheAndQvCarEvent.find().videoJson["02"], // { "自定义回调的字段" : "自定义回调的字段111" }, // function(WindowVideoViewOpenEventRes) { // console.log( // "WindowVideoViewOpenEventRes", WindowVideoViewOpenEventRes // ); // } // ); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将橡胶垫片放置到正确的位置_完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); thisClass.xiangJiaoDianPianOk(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } else { // 回到原始位置 thisClass.moveMeshListResetPosition(); // 范围外 QingXiCheAndQvCarEvent.find().eventEnd = 0; } break; // 数字修复虚拟仿真-将抱箍放置到正确的位置 case '数字修复虚拟仿真-将抱箍放置到正确的位置': // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 范围内 if (dragBool == true) { // 回到原始位置 thisClass.moveMeshListResetPosition(); WindowEvent.find().WindowTxtViewOpenEvent( // "现在播放橡抱箍安装过程\n" // + "抱箍是一种用于抱住或箍住其他材料的紧固件,通过将两个或多个部件紧紧固定在一起,起到连接、支撑或加固的作用." + "通常由箍板、翼板、拉结筋板、螺栓及内衬垫构成。其中,箍板是主要的抱紧部件,翼板用于增加连接面积或提供额外的支撑点,拉结筋板则增强箍板的强度和稳定性,螺栓用于将抱箍紧固,内衬垫则可增加摩擦力或保护被箍物体的表面" ); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将抱箍放置到正确的位置_完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); thisClass.baoGuOk(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } else { // 回到原始位置 thisClass.moveMeshListResetPosition(); // 范围外 QingXiCheAndQvCarEvent.find().eventEnd = 0; } break; // 数字修复虚拟仿真-将插销安装到正确的位置 case '数字修复虚拟仿真-将插销安装到正确的位置': // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 范围内 if (dragBool == true) { // 回到原始位置 thisClass.moveMeshListResetPosition(); WindowEvent.find().WindowTxtViewOpenEvent( // "现在播放插销安装过程\n" // + "通过将销杆插入对应的销孔中,实现物体之间的连接或锁定。利用销杆与销孔之间的配合精度和摩擦力,保持连接的稳定性。带有锁止机构的插销,通过特定的操作(如旋转、按压等)使锁止部件卡住销杆,防止其意外拔出,增强锁定效果。" ); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将插销安装到正确的位置_完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); thisClass.chaXiaoOk(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } else { // 回到原始位置 thisClass.moveMeshListResetPosition(); // 范围外 QingXiCheAndQvCarEvent.find().eventEnd = 0; } break; // 数字修复虚拟仿真-将螺丝安装到正确的位置 case '数字修复虚拟仿真-将螺丝安装到正确的位置': // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 范围内 if (dragBool == true) { // 回到原始位置 thisClass.moveMeshListResetPosition(); WindowEvent.find().WindowTxtViewOpenEvent( // "现在播放螺丝安装过程\n" // + "螺丝通常由头部和螺纹杆两部分组成。头部有不同的形状,如圆形、方形、六角形等,以便使用相应的工具进行拧紧或松开操作。螺纹杆上有螺旋状的螺纹,用于与螺母或带有内螺纹的部件配合。" ); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("将螺丝安装到正确的位置_完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); thisClass.luoSiOk(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } else { // 回到原始位置 thisClass.moveMeshListResetPosition(); // 范围外 QingXiCheAndQvCarEvent.find().eventEnd = 0; } break; // 数字修复虚拟仿真-用扳手将螺丝旋紧螺丝 case '数字修复虚拟仿真-用扳手将螺丝旋紧螺丝': // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; // 范围内 if (dragBool == true) { // 回到原始位置 thisClass.moveMeshListResetPosition(); WindowEvent.find().WindowTxtViewOpenEvent( // "现在播放扳手使用过程\n" // + "扳手通常由头部和手柄两部分组成。头部是与螺栓或螺母接触并施加扭矩的部分,根据不同的类型有各种形状和结构;手柄则用于握持和施加力,一般为杆状,以提供足够的杠杆作用。" ); // 切换视角 objIframeEdit.modelPeopleLook(3); objIframeEdit.cameraVisualAngleGetListNameGpsTo("用扳手将螺丝旋紧螺丝_完成"); objIframeEdit.roleShow(false); let thisTime = new Date().getTime(); // 控制延迟逻辑 ComVal.find().fpsEventAdd("type_click_" + thisTime, {}, 1500, function(fpsEventAddRet) { ComVal.find().fpsEventDel(fpsEventAddRet.code); thisClass.banShouOk(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } else { // 回到原始位置 thisClass.moveMeshListResetPosition(); // 范围外 QingXiCheAndQvCarEvent.find().eventEnd = 0; } break; // // // case '': // break; // // // case '': // break; default: break; } // 上面执行完成,固定执行如下逻辑 thisClass.moveMeshListReset(); } /** * 根据不同类型,触发对应物体列表高亮逻辑 * type 对应类型操作高亮 */ meshListComHighlightEvent = (type) => { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; let meshList = []; // QingXiCheAndQvComHighlightLayer.find().delAll("自定义"); // 默认不闪烁 QingXiCheAndQvComHighlightLayer.find().flickerBool = false; switch (type) { case "数字修复虚拟仿真-将阀门关闭停止水流": meshList = [ "model_1746598895146阀门_primitive0", "model_1746598895146阀门_primitive1", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "数字修复虚拟仿真-将橡胶垫片放置到正确的位置": meshList = [ "model_1746598895146橡胶垫", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "数字修复虚拟仿真-将抱箍放置到正确的位置": meshList = [ "model_1746598895146上箍", "model_1746598895146插销轴", "model_1746598895146下箍", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "数字修复虚拟仿真-将插销安装到正确的位置": meshList = [ "model_1746598895146插销1", "model_1746598895146插销2", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "数字修复虚拟仿真-将螺丝安装到正确的位置": meshList = [ "model_1746598895146紧箍螺丝01", "model_1746598895146紧箍螺丝02", "model_1746598895146紧箍螺丝03", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "数字修复虚拟仿真-用扳手将螺丝旋紧螺丝": meshList = [ "model_1746598895146扳手", ]; // 开启闪烁逻辑 QingXiCheAndQvComHighlightLayer.find().flickerBool = true; break; case "": break; } for (let i = 0; i < meshList.length; i++) { let meshId = meshList[i]; let objMesh = objScene.getMeshById(meshId); if (objMesh != null && objMesh != undefined) { // console.log( // "添加发光的物体", meshId, objMesh // ); // 先去除 QingXiCheAndQvComHighlightLayer.find().delMesh("自定义", objMesh); // 在添加 QingXiCheAndQvComHighlightLayer.find().addMesh("自定义", objMesh, "rgb(79, 185, 255)"); } } } /** * 配置被拖拽物体的列表 * type 类型,根据不同类型进行获取 */ meshMoveConfig = function(type) { let meshList = []; switch(type) { case "数字修复虚拟仿真-将橡胶垫片放置到正确的位置": meshList = [ "model_1746598895146橡胶垫", ]; break; case "数字修复虚拟仿真-将抱箍放置到正确的位置": meshList = [ "model_1746598895146上箍", "model_1746598895146插销轴", "model_1746598895146下箍", ]; break; case "数字修复虚拟仿真-将插销安装到正确的位置": meshList = [ "model_1746598895146插销1", "model_1746598895146插销2", ]; break; case "数字修复虚拟仿真-将螺丝安装到正确的位置": meshList = [ "model_1746598895146紧箍螺丝01", "model_1746598895146紧箍螺丝02", "model_1746598895146紧箍螺丝03", ]; break; case "数字修复虚拟仿真-用扳手将螺丝旋紧螺丝": meshList = [ "model_1746598895146扳手", ]; break; case "": break; } if (meshList.length <= 0) { return null; } let meshJson = {}; for (let i = 0; i < meshList.length; i++) { let meshId = meshList[i]; meshJson[meshId] = meshId; } return { "meshList" : meshList, "meshJson" : meshJson, }; } /** * 数字修复虚拟仿真-将橡胶垫片放置到正确的位置 * callback 开启完成回调 */ xiangJiaoDianPianOk = (callback) => { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 播放动画列表 let playList = [ { "name" : "橡胶垫.001", "speed" : 2, "from" : 0, "to" : 200 }, ]; // 动画播放完成次数 let playEndNum = 0; for (let i = 0; i < playList.length; i++) { let thisPlayList = playList[i]; ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback( thisPlayList.name, 'start', thisPlayList.speed, thisPlayList.from, thisPlayList.to, false, null, function(state, objAnimation) { if (state == "播放完成") { playEndNum += 1; if (playEndNum >= playList.length) { callback("yes"); } } } ); } } /** * 数字修复虚拟仿真-将抱箍放置到正确的位置 * callback 开启完成回调 */ baoGuOk = (callback) => { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 播放动画列表 let playList = [ { "name" : "上箍", "speed" : 2, "from" : 0, "to" : 300 }, { "name" : "插销轴.001", "speed" : 2, "from" : 0, "to" : 200 }, { "name" : "下箍.001", "speed" : 2, "from" : 0, "to" : 300 }, ]; // 动画播放完成次数 let playEndNum = 0; for (let i = 0; i < playList.length; i++) { let thisPlayList = playList[i]; ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback( thisPlayList.name, 'start', thisPlayList.speed, thisPlayList.from, thisPlayList.to, false, null, function(state, objAnimation) { if (state == "播放完成") { playEndNum += 1; if (playEndNum >= playList.length) { callback("yes"); } } } ); } } /** * 数字修复虚拟仿真-将插销安装到正确的位置 * callback 开启完成回调 */ chaXiaoOk = function(callback) { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 播放动画列表 let playList = [ { "name" : "插销1.001", "speed" : 2, "from" : 300, "to" : 400 }, { "name" : "插销2.001", "speed" : 2, "from" : 300, "to" : 400 }, ]; // 动画播放完成次数 let playEndNum = 0; for (let i = 0; i < playList.length; i++) { let thisPlayList = playList[i]; ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback( thisPlayList.name, 'start', thisPlayList.speed, thisPlayList.from, thisPlayList.to, false, null, function(state, objAnimation) { if (state == "播放完成") { playEndNum += 1; if (playEndNum >= playList.length) { callback("yes"); } } } ); } } /** * 数字修复虚拟仿真-将螺丝安装到正确的位置 * callback 开启完成回调 */ luoSiOk = function(callback) { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 播放动画列表 let playList = [ { "name" : "紧箍螺丝01.001", "speed" : 2, "from" : 400, "to" : 502 }, { "name" : "紧箍螺丝02.001", "speed" : 2, "from" : 400, "to" : 502 }, { "name" : "紧箍螺丝03|", "speed" : 2, "from" : 400, "to" : 502 }, ]; // 动画播放完成次数 let playEndNum = 0; for (let i = 0; i < playList.length; i++) { let thisPlayList = playList[i]; ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback( thisPlayList.name, 'start', thisPlayList.speed, thisPlayList.from, thisPlayList.to, false, null, function(state, objAnimation) { if (state == "播放完成") { playEndNum += 1; if (playEndNum >= playList.length) { callback("yes"); } } } ); } } /** * 数字修复虚拟仿真-用扳手将螺丝旋紧螺丝 * callback 开启完成回调 */ banShouOk = function(callback) { let thisClass = this; let objThreeWorldEventMain = this.objThreeWorldEventMain; let objIframeEdit = objThreeWorldEventMain.objIframeEdit; let objIframe = objThreeWorldEventMain.objIframe; let objScene = objThreeWorldEventMain.objScene; let BABYLON = objThreeWorldEventMain.BABYLON; let ChengGuangYuanJing = objIframe.ChengGuangYuanJing; // 播放动画列表 let playList = [ { "name" : "扳手.001", "speed" : 2, "from" : 500, "to" : 802 }, ]; // 动画播放完成次数 let playEndNum = 0; for (let i = 0; i < playList.length; i++) { let thisPlayList = playList[i]; ChengGuangYuanJing.CommonVal.find().animationGroupsEventCallback( thisPlayList.name, 'start', thisPlayList.speed, thisPlayList.from, thisPlayList.to, false, null, function(state, objAnimation) { if (state == "播放完成") { playEndNum += 1; if (playEndNum >= playList.length) { callback("yes"); } } } ); } } }