|  |  |  | 
|---|
|  |  |  | that.forkPos = -1; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | that.crnBody = null; | 
|---|
|  |  |  | that.crnLoad = null; | 
|---|
|  |  |  | that.crnFork = null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let curves = []; | 
|---|
|  |  |  | that.curve = null; | 
|---|
|  |  |  | that.progress = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | that.position = crnData.position; | 
|---|
|  |  |  | that.forkPos = crnData.forkPos; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | that.crnBody = getArrVal(object.objects, "name", that.crnNo + "-body") | 
|---|
|  |  |  | that.crnBody = getArrVal(object.objects, "name", that.crnNo + "-body"); | 
|---|
|  |  |  | that.crnLoad = getArrVal(object.objects, "name", that.crnNo + "-load"); | 
|---|
|  |  |  | that.crnFork = getArrVal(object.objects, "name", that.crnNo + "-fork"); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | init(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | if (JSON.stringify(crnData.position) === JSON.stringify(that.position)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | that.run = true; | 
|---|
|  |  |  | // 上一次 | 
|---|
|  |  |  | that.preBay = that.bay; | 
|---|
|  |  |  | that.preLev = that.lev; | 
|---|
|  |  |  | 
|---|
|  |  |  | that.z = crnData.position.z; | 
|---|
|  |  |  | that.position = crnData.position; | 
|---|
|  |  |  | that.forkPos = crnData.forkPos; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // create Route ------------------------------------------------ | 
|---|
|  |  |  | that.curve = new Route([that.prePosition, that.position]);    // body | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 堆垛机叉牙 伸叉 | 
|---|
|  |  |  | if (that.prePosition.x !== that.position.x) { | 
|---|
|  |  |  | curves.push({ | 
|---|
|  |  |  | start: false, | 
|---|
|  |  |  | progress: 0, | 
|---|
|  |  |  | part: 'fork', | 
|---|
|  |  |  | route: new Route([ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.prePosition.x, | 
|---|
|  |  |  | y: that.crnFork.position.y, | 
|---|
|  |  |  | z: that.crnFork.position.z | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.position.x, | 
|---|
|  |  |  | y: that.crnFork.position.y, | 
|---|
|  |  |  | z: that.crnFork.position.z | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ]) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 堆垛机载货台和叉牙 移动 | 
|---|
|  |  |  | if (that.prePosition.z !== that.position.z || that.prePosition.y !== that.position.y) { | 
|---|
|  |  |  | curves.push({ | 
|---|
|  |  |  | start: false, | 
|---|
|  |  |  | progress: 0, | 
|---|
|  |  |  | part: 'load', | 
|---|
|  |  |  | route: new Route([ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.crnLoad.position.x, | 
|---|
|  |  |  | y: that.prePosition.y, | 
|---|
|  |  |  | z: that.prePosition.z | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.crnLoad.position.x, | 
|---|
|  |  |  | y: that.position.y, | 
|---|
|  |  |  | z: that.position.z | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ]) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 堆垛机本体运动轨迹 | 
|---|
|  |  |  | if (that.prePosition.z !== that.position.z && false) { | 
|---|
|  |  |  | curves.push({ | 
|---|
|  |  |  | start: false, | 
|---|
|  |  |  | progress: 0, | 
|---|
|  |  |  | part: 'body', | 
|---|
|  |  |  | route: new Route([ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.crnBody.position.x, | 
|---|
|  |  |  | y: that.crnBody.position.y, | 
|---|
|  |  |  | z: that.prePosition.z | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x: that.crnBody.position.x, | 
|---|
|  |  |  | y: that.crnBody.position.y, | 
|---|
|  |  |  | z: that.position.z | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ]) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | curves[0].start = true; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log(curves); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // new Route();    // load | 
|---|
|  |  |  | // console.log(bodyRoute); | 
|---|
|  |  |  | console.log("pre" + JSON.stringify(that.prePosition)); | 
|---|
|  |  |  | console.log(JSON.stringify(that.position)); | 
|---|
|  |  |  | that.run = true; | 
|---|
|  |  |  | // console.log(that.curve); | 
|---|
|  |  |  | // console.log("pre" + JSON.stringify(that.prePosition)); | 
|---|
|  |  |  | // console.log(JSON.stringify(that.position)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | that.move = function (object) { | 
|---|
|  |  |  | if (that.curve) { | 
|---|
|  |  |  | that.progress += 0.001; | 
|---|
|  |  |  | if (that.progress>1.0) { | 
|---|
|  |  |  | that.curve = null; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | let point = that.curve.getPoint(that.progress); | 
|---|
|  |  |  | if(point && point.x){ | 
|---|
|  |  |  | that.crnBody.position.set(point.x,point.y,point.z); | 
|---|
|  |  |  | that.move = function () { | 
|---|
|  |  |  | if (curves.length > 0) { | 
|---|
|  |  |  | for (let i = 0; i < curves.length ; i++) { | 
|---|
|  |  |  | if (curves[i].start) { | 
|---|
|  |  |  | curves[i].progress += 0.01; | 
|---|
|  |  |  | if (curves[i].progress > 1.0) { | 
|---|
|  |  |  | curves[i].start = false; | 
|---|
|  |  |  | if (i !== curves.length - 1) { | 
|---|
|  |  |  | curves[i+1].start = true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | curves = []; | 
|---|
|  |  |  | that.run = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | let point = curves[i].route.getPoint(curves[i].progress); | 
|---|
|  |  |  | console.log(point) | 
|---|
|  |  |  | if ( point && point.x ) { | 
|---|
|  |  |  | switch (curves[i].part) { | 
|---|
|  |  |  | case 'body': | 
|---|
|  |  |  | that.crnBody.position.set(point.x, point.y, point.z); | 
|---|
|  |  |  | break | 
|---|
|  |  |  | case 'load': | 
|---|
|  |  |  | that.crnBody.position.z = point.z; | 
|---|
|  |  |  | that.crnLoad.position.set(point.x, point.y, point.z); | 
|---|
|  |  |  | that.crnFork.position.set(point.x, point.y, point.z); | 
|---|
|  |  |  | break | 
|---|
|  |  |  | case 'fork': | 
|---|
|  |  |  | that.crnFork.position.set(point.x, point.y, point.z); | 
|---|
|  |  |  | break | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|