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'; /** * 操作清洗车仿真 点击物体的时候触发 逻辑 */ 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 }; } // 实现单例模式 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; } /** * 鼠标弹起的时候 * 根据点击到的物体,和当前的流程,触发对应的逻辑 * 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; QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_打开左门', function() { // 切换视角 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); }); }); } 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); QingXiCheAdnQvCarEventStep.find().animationAllTypeUpdate('清洗车_旋转钥匙', function() { QingXiCheAndQvCarEvent.find().carOpen(true); // 切换视角 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); // 切换成正在处理中 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); }); } break; // 踩下车辆离合器5秒 case '踩下车辆离合器5秒': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; thisClass.openCaiLiHe(function() { WindowEvent.find().WindowCountdownOpen(5, "自定义返回数据", function(WindowCountdownOpenRes) { 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("观察仪表盘指示目视"); 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); thisClass.openCaiLiHeTaiQi(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; thisClass.closeCarMen(function() { // 切换视角 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); }); }); } 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); QingXiCheAndQvComClipPlaneMeshEvent.find().anQuanZhuangLookYes(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; // 切换视角 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); }); }); } 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); thisClass.tiaoZhengJuanPan(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; // 切换视角 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); }); }); } 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); thisClass.taoShangGaoYaShuiGuan_1(function() { 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; // 切换视角 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); thisClass.gaoYaPengTouXiangZiDaKai(function() { thisClass.gaoYaPengTou_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; // 切换视角 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); thisClass.taoShangGaoYaShuiGuan_2(function() { }); thisClass.gaoYaPengTou_2(function() { }); QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_2(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; // 切换视角 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; // 切换视角 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); }); } 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(false); 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; // 切换视角 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); thisClass.taoShangGaoYaShuiGuan_3(function() { }); thisClass.gaoYaPengTou_3(function() { }); QingXiCheAndQvComClipPlaneMeshEvent.find().ruanGuanLookYes_3(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; // 切换视角 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); thisClass.gaoYaPengTou_4(function() { thisClass.gaoYaPengTouXiangZiDaKai_2(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; // 切换视角 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().ruanGuanLookYes_4(function() { thisClass.taoShangGaoYaShuiGuan_4(function() { QingXiCheAndQvComClipPlaneMeshEvent.find().zhuanDaoWeiLookYes_2(function() { thisClass.tiaoZhengJuanPan_2(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; // 切换视角 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_2(function() { QingXiCheAndQvCarEvent.find().eventEnd = 2; QingXiCheAndQvCarEvent.find().tipsBtnsUpOpenEventCallbackMain(false); QingXiCheAndQvCarEvent.find().tipsBtnsDownOpenEventCallbackMain(true); }); }); } break; // 回到驾驶室踩下车辆离合器5秒 case '回到驾驶室踩下车辆离合器5秒': if (QingXiCheAdnQvCarEventStep.find().meshListBool(type, objMesh.id) == true) { QingXiCheAdnQvCarEventStep.find().meshVisibility("all", false); // 切换成正在处理中 QingXiCheAndQvCarEvent.find().eventEnd = 1; thisClass.openCaiLiHe(function() { WindowEvent.find().WindowCountdownOpen(5, "自定义返回数据", function(WindowCountdownOpenRes) { 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("观察仪表盘指示目视"); 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; 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); }); } 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); thisClass.openYaoShi_2(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 开启完成回调 */ openCarMen = (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" : "Armature.001", "speed" : 2, "from" : 0, "to" : 120 }, ]; // 动画播放完成次数 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 开启完成回调 */ openCaiLiHe = (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 开启完成回调 */ openCaiLiHeTaiQi = (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" : 200, "to" : 0 }, ]; // 动画播放完成次数 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 开启完成回调 */ closeCarMen = (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" : "Armature.001", "speed" : 2, "from" : 120, "to" : 0 }, ]; // 动画播放完成次数 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 开启完成回调 */ tiaoZhengJuanPan = (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" : "Armature.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 开启完成回调 */ tiaoZhengJuanPan_2 = (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" : "Armature.001", "speed" : 2, "from" : 200, "to" : 0 }, ]; // 动画播放完成次数 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 开启完成回调 */ taoShangGaoYaShuiGuan_1 = (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" : 200, "to" : 340 }, ]; // 动画播放完成次数 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 开启完成回调 */ taoShangGaoYaShuiGuan_2 = (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" : 340, "to" : 401 }, ]; // 动画播放完成次数 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 开启完成回调 */ taoShangGaoYaShuiGuan_3 = (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" : 401, "to" : 340 }, ]; // 动画播放完成次数 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 开启完成回调 */ taoShangGaoYaShuiGuan_4 = (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" : 340, "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 开启完成回调 */ gaoYaPengTouXiangZiDaKai = (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" : 41 }, ]; // 动画播放完成次数 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 开启完成回调 */ gaoYaPengTouXiangZiDaKai_2 = (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" : 41, "to" : 0 }, ]; // 动画播放完成次数 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 开启完成回调 */ gaoYaPengTou_1 = (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" : 270, "to" : 330 }, ]; // 动画播放完成次数 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 开启完成回调 */ gaoYaPengTou_2 = (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" : 330, "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 开启完成回调 */ gaoYaPengTou_3 = (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" : 400, "to" : 330 }, ]; // 动画播放完成次数 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 开启完成回调 */ gaoYaPengTou_4 = (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" : 330, "to" : 270 }, ]; // 动画播放完成次数 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 开启完成回调 */ 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"); } } } ); } } /** * 拧动钥匙 * callback 开启完成回调 */ openYaoShi = (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" : 102 }, ]; // 动画播放完成次数 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 开启完成回调 */ openYaoShi_2 = (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" : 102, "to" : 0 }, ]; // 动画播放完成次数 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"); } } } ); } } }