|  |  |  | 
|---|
|  |  |  | import {MTLLoader} from "../lib/MTLLoader.js"; | 
|---|
|  |  |  | import {OBJLoader} from "../lib/OBJLoader.js"; | 
|---|
|  |  |  | import {Color} from "../three.module.js"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const xOffset = -1735; | 
|---|
|  |  |  | const yOffset = -289; | 
|---|
|  |  |  | const zOffset = -480; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const xOffset0 = -1735; | 
|---|
|  |  |  | const yOffset0 = -108; | 
|---|
|  |  |  | const zOffset0 = -480; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const xOffset1 = -1735; | 
|---|
|  |  |  | const yOffset1 = -107; | 
|---|
|  |  |  | const zOffset1 = -475; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function StoreCrn(option, object) { | 
|---|
|  |  |  | let that = this; | 
|---|
|  |  |  | this.crnBodyLength = option.crnBody.length||50;//库位长度 | 
|---|
|  |  |  | this.crnBodyWidth = option.crnBody.width||50;//库位宽 | 
|---|
|  |  |  | this.crnBodyHeight = option.crnBody.height||500;//库位高 | 
|---|
|  |  |  | 
|---|
|  |  |  | this.crnForkHeight = option.crnFork.height||30;//库位高 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 立柱 | 
|---|
|  |  |  | var a = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnBodyLength, this.crnBodyHeight, this.crnBodyWidth), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | color: 0xff0000, | 
|---|
|  |  |  | transparent: true, | 
|---|
|  |  |  | opacity: .3 | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | a.name = option.crnNo + "-body"; | 
|---|
|  |  |  | a.position.x = option.crnBody.position.x; | 
|---|
|  |  |  | a.position.y = option.crnBody.position.y + this.crnBodyHeight/2; | 
|---|
|  |  |  | a.position.z = option.crnBody.position.z - this.crnBodyWidth/2; | 
|---|
|  |  |  | object.addObject(a); | 
|---|
|  |  |  | // var a = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnBodyLength, this.crnBodyHeight, this.crnBodyWidth), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | //     color: 0xff0000, | 
|---|
|  |  |  | //     transparent: true, | 
|---|
|  |  |  | //     opacity: .3 | 
|---|
|  |  |  | // })) | 
|---|
|  |  |  | // a.name = option.crnNo + "-body"; | 
|---|
|  |  |  | // a.position.x = option.crnBody.position.x; | 
|---|
|  |  |  | // a.position.y = option.crnBody.position.y + this.crnBodyHeight/2; | 
|---|
|  |  |  | // a.position.z = option.crnBody.position.z - this.crnBodyWidth/2; | 
|---|
|  |  |  | // object.addObject(a); | 
|---|
|  |  |  | // 载货台 | 
|---|
|  |  |  | var b = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnLoadLength, this.crnLoadHeight, this.crnLoadWidth), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | color: 0x00ff00, | 
|---|
|  |  |  | transparent: true, | 
|---|
|  |  |  | opacity: .5 | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | b.name = option.crnNo + "-load"; | 
|---|
|  |  |  | b.position.x = option.crnLoad.position.x; | 
|---|
|  |  |  | b.position.y = option.crnLoad.position.y + this.crnLoadHeight/2; | 
|---|
|  |  |  | b.position.z = option.crnLoad.position.z - this.crnLoadWidth/2 + 5; | 
|---|
|  |  |  | object.addObject(b); | 
|---|
|  |  |  | // var b = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnLoadLength, this.crnLoadHeight, this.crnLoadWidth), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | //     color: 0x00ff00, | 
|---|
|  |  |  | //     transparent: true, | 
|---|
|  |  |  | //     opacity: .5 | 
|---|
|  |  |  | // })) | 
|---|
|  |  |  | // b.name = option.crnNo + "-load"; | 
|---|
|  |  |  | // b.position.x = option.crnLoad.position.x; | 
|---|
|  |  |  | // b.position.y = option.crnLoad.position.y + this.crnLoadHeight/2; | 
|---|
|  |  |  | // b.position.z = option.crnLoad.position.z - this.crnLoadWidth/2 + 5; | 
|---|
|  |  |  | // object.addObject(b); | 
|---|
|  |  |  | // 叉牙 | 
|---|
|  |  |  | var c = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnForkLength, this.crnForkWidth, this.crnForkHeight), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | color: 0xff00ff, | 
|---|
|  |  |  | transparent: true, | 
|---|
|  |  |  | opacity: 1 | 
|---|
|  |  |  | })) | 
|---|
|  |  |  | c.name = option.crnNo + "-fork"; | 
|---|
|  |  |  | c.position.x = option.crnFork.position.x; | 
|---|
|  |  |  | c.position.y = option.crnFork.position.y + this.crnLoadHeight/2; | 
|---|
|  |  |  | c.position.z = option.crnFork.position.z - this.crnLoadWidth/2; | 
|---|
|  |  |  | object.addObject(c); | 
|---|
|  |  |  | // var c = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnForkLength, this.crnForkWidth, this.crnForkHeight), new THREE.MeshBasicMaterial({ | 
|---|
|  |  |  | //     color: 0xff00ff, | 
|---|
|  |  |  | //     transparent: true, | 
|---|
|  |  |  | //     opacity: 1 | 
|---|
|  |  |  | // })) | 
|---|
|  |  |  | // c.name = option.crnNo + "-fork"; | 
|---|
|  |  |  | // c.position.x = option.crnFork.position.x; | 
|---|
|  |  |  | // c.position.y = option.crnFork.position.y + this.crnLoadHeight/2; | 
|---|
|  |  |  | // c.position.z = option.crnFork.position.z - this.crnLoadWidth/2; | 
|---|
|  |  |  | // object.addObject(c); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const manager = new THREE.LoadingManager(); | 
|---|
|  |  |  | new MTLLoader(manager) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '堆垛机本体.mtl', function ( materials ) { | 
|---|
|  |  |  | materials.preload(); | 
|---|
|  |  |  | new OBJLoader( manager ) | 
|---|
|  |  |  | .setMaterials( materials ) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '堆垛机本体.obj', function ( obj ) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: 0xCD6839 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | obj.scale.set(0.03, 0.03, 0.03); | 
|---|
|  |  |  | obj.rotateY(- Math.PI / 2); | 
|---|
|  |  |  | obj.name = option.crnNo + "-body"; | 
|---|
|  |  |  | obj.position.x = option.crnBody.position.x + xOffset; | 
|---|
|  |  |  | obj.position.y = option.crnBody.position.y + that.crnBodyHeight/2 + yOffset; | 
|---|
|  |  |  | obj.position.z = option.crnBody.position.z - that.crnBodyWidth/2 + zOffset; | 
|---|
|  |  |  | object.addObject( obj ); | 
|---|
|  |  |  | }, null, null ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | new MTLLoader(manager) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '载货台.mtl', function ( materials ) { | 
|---|
|  |  |  | materials.preload(); | 
|---|
|  |  |  | new OBJLoader( manager ) | 
|---|
|  |  |  | .setMaterials( materials ) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '载货台.obj', function ( obj ) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: 0xD2691E | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | obj.scale.set(0.03, 0.03, 0.03); | 
|---|
|  |  |  | obj.rotateY(- Math.PI / 2); | 
|---|
|  |  |  | obj.name = option.crnNo + "-load"; | 
|---|
|  |  |  | obj.position.x = option.crnLoad.position.x + xOffset0; | 
|---|
|  |  |  | obj.position.y = option.crnLoad.position.y + that.crnLoadHeight/2 + yOffset0; | 
|---|
|  |  |  | obj.position.z = option.crnLoad.position.z - that.crnLoadWidth/2 + 5 + zOffset0; | 
|---|
|  |  |  | object.addObject( obj ); | 
|---|
|  |  |  | }, null, null ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | new MTLLoader(manager) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '货叉.mtl', function ( materials ) { | 
|---|
|  |  |  | materials.preload(); | 
|---|
|  |  |  | new OBJLoader( manager ) | 
|---|
|  |  |  | .setMaterials( materials ) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '货叉.obj', function ( obj ) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: 0x363636 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | obj.scale.set(0.03, 0.03, 0.03); | 
|---|
|  |  |  | obj.rotateY(- Math.PI / 2); | 
|---|
|  |  |  | obj.name = option.crnNo + "-fork"; | 
|---|
|  |  |  | obj.position.x = option.crnFork.position.x + xOffset1; | 
|---|
|  |  |  | obj.position.y = option.crnFork.position.y + that.crnLoadHeight/2 + yOffset1; | 
|---|
|  |  |  | obj.position.z = option.crnFork.position.z - that.crnLoadWidth/2 + zOffset1; | 
|---|
|  |  |  | object.addObject( obj ); | 
|---|
|  |  |  | }, null, null ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export {StoreCrn} | 
|---|