#
luxiaotao1123
2021-12-25 ce9da384d05f0b6b50aeeb5c3a00e53694695976
static/js/object/StoreShelf.js
@@ -1,3 +1,5 @@
import * as BufferGeometryUtils from '../utils/BufferGeometryUtils.js';
function StoreShelf(option) {
    this.binLength = option.binLength||50;//库位长度
    this.binWidth = option.binWidth||50;//库位宽
@@ -13,12 +15,16 @@
    this.rackWidth = 3;//支架的宽度,默认设定为3
    // 材质
    let shelfMat = new THREE.MeshLambertMaterial({color:0x175EC0});//定义支架和托盘的材质
    let shelfMat = new THREE.MeshPhysicalMaterial({
        color: 0x175EC0,
        transparent: false,
        opacity: 0.7
    });
    //定义一个组合体
    let group = new THREE.Group();
    // 货架总高
    let shelfHeight=this.bottomHight+(this.binYNum-1)*this.binHeight;
    let shelfHeight=this.bottomHight+(this.binYNum)*this.binHeight;
    // 货架总宽
    let shelfWidth=this.binZNum*this.binWidth;
    // 支架模型 + 材质
@@ -36,29 +42,59 @@
    //右侧支架柱的X轴定位
    let rightPositionX=this.positionX+this.binLength/2 - this.rackLengh;    // 缩进支架长度
    let geometries = [];
    let transform = new THREE.Object3D();
    // 初始化支架模型
    for(let i=0;i<=this.binZNum;i++) {
        let leftRack = rackObject.clone();
        let positionZ = this.positionZ - shelfWidth/2 + i*this.binWidth;
        leftRack.position.set(leftPositionX,positionY,positionZ);
        leftRack.updateMatrix();
        group.add(leftRack);
        // let leftRack = rackObject.clone();
        // let positionZ = - ( this.positionZ + i*this.binWidth );
        // leftRack.position.set(leftPositionX,positionY,positionZ);
        // leftRack.updateMatrix();
        // group.add(leftRack);
        //
        // let rightRack = rackObject.clone();
        // rightRack.position.set(rightPositionX,positionY,positionZ);
        // rightRack.updateMatrix();
        // group.add(rightRack);
        let rightRack = rackObject.clone();
        rightRack.position.set(rightPositionX,positionY,positionZ);
        rightRack.updateMatrix();
        group.add(rightRack);
        let positionZ = - ( this.positionZ + i*this.binWidth );
        // -----
        let leftClone = rackBoxGeometry.clone();
        transform.position.set(leftPositionX,positionY,positionZ);
        transform.updateMatrix();
        leftClone.applyMatrix4(transform.matrix);
        geometries.push(leftClone);
        let rightClone = rackBoxGeometry.clone();
        transform.position.set(rightPositionX,positionY,positionZ);
        transform.updateMatrix();
        rightClone.applyMatrix4(transform.matrix);
        geometries.push(rightClone);
    }
    // 初始化托板模型
    for(let i = 0;i < this.binZNum;i++) {
        for (let j = 0;j < this.binYNum;j++) {
            let plane = planeObject.clone();
        for (let j = 0;j <= this.binYNum;j++) {
            // let plane = planeObject.clone();
            // let positionY= this.positionY + this.bottomHight + j*this.binHeight + 1;
            // let positionZ= - ( this.positionZ + i * this.binWidth + this.binWidth/2 );
            // plane.position.set(this.positionX-this.rackLengh/2,positionY,positionZ);
            // plane.updateMatrix();
            // group.add(plane);
            let clone = planeBoxGeometry.clone();
            let positionY= this.positionY + this.bottomHight + j*this.binHeight + 1;
            let positionZ= this.positionZ - shelfWidth/2 + i * this.binWidth + this.binWidth/2;
            plane.position.set(this.positionX-this.rackLengh/2,positionY,positionZ);
            plane.updateMatrix();
            group.add(plane);
            let positionZ= - ( this.positionZ + i * this.binWidth + this.binWidth/2 );
            transform.position.set(this.positionX-this.rackLengh/2,positionY,positionZ);
            transform.updateMatrix();
            clone.applyMatrix4(transform.matrix);
            geometries.push(clone);
        }
    }
    return group;
    let mergedGeometry = BufferGeometryUtils.mergeBufferGeometries(geometries);
    var mesh = new THREE.Mesh(mergedGeometry, shelfMat);
    mesh.castShadow = true;
    return mesh;
}
export {StoreShelf}