#
luxiaotao1123
2021-12-25 2b4aa7fdb59b2656e1281258ebd4a3bccc24958e
static/js/object/StoreConvey.js
@@ -1,125 +1,98 @@
import {MTLLoader} from "../lib/MTLLoader.js";
import {OBJLoader} from "../lib/OBJLoader.js";
import {Color} from "../three.module.js";
import * as THREE from '../three.module.js';
const xOffset = -1658;
const yOffset = -553;
const zOffset = -1800;
function StoreConvey(object, data) {
    let that = this;
    that.data = null;
    that.object = null;
const xOffset0 = -1407;
const yOffset0 = 0;
const zOffset0 = 490;
    let chainList = [];
    let rollerList = [];
    let transportList = [];
function StoreConvey(object) {
    let init = function () {
        that.data = data;
        that.object = object;
        for (let i=0;i<that.data.length;i++) {
            let conveyObj = that.data[i];
            switch (conveyObj.objectType) {
                case "chain":
                    chainList.push(conveyObj);
                    break;
                case "roller":
                    rollerList.push(conveyObj);
                    break;
                case "transport":
                    transportList.push(conveyObj);
                    break;
                default:
                    break;
            }
        }
    };
    init();
    const manager = new THREE.LoadingManager();
    let chain = 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 ) {
                    chain = obj;
                    chain.scale.set(0.03, 0.03, 0.025);
                    chain.rotateY( -Math.PI / 2);
                    chain.traverse (function (child) {
                        if (child instanceof THREE.Mesh) {
                            child.material = new THREE.MeshLambertMaterial({
                                color: 0xF5F5F5
                            });
                        }
    this.load = function () {
        new THREE.ObjectLoader().load( "../static/model/json/链条输送机.json", function (obj) {
            obj.traverse (function (child) {
                if (child instanceof THREE.Mesh) {
                    child.scale.set(1, 1, 1.8);
                    child.material = new THREE.MeshLambertMaterial({
                        color: 0xAAAAAA
                    });
                    for (let i = 0; i<24; i++) {
                        let clone = chain.clone();
                        // roller.name = option.crnNo + "-body";
                        let offset = 0;
                        if (i % 2 === 0) {
                            offset = 90;
                        }
                        clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230;
                        clone.position.y = yOffset0;
                        clone.position.z = zOffset0 + 39;
                        object.addObject( clone );
                    }
                    for (let i = 0; i<24; i++) {
                        let clone = chain.clone();
                        // roller.name = option.crnNo + "-body";
                        let offset = 0;
                        if (i % 2 === 0) {
                            offset = 90;
                        }
                        clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230;
                        console.log(clone.position.x)
                        clone.position.y = yOffset0;
                        clone.position.z = zOffset0 + 39 + 82;
                        object.addObject( clone );
                    }
                    for (let i = 0; i<24; i++) {
                        var clone = chain.clone();
                        // roller.name = option.crnNo + "-body";
                        let offset = 0;
                        if (i % 2 === 0) {
                            offset = 90;
                        }
                        clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230;
                        console.log(clone.position.x)
                        clone.position.y = yOffset0 + 310;
                        clone.position.z = zOffset0 + 39;
                        object.addObject( clone );
                    }
                    for (let i = 0; i<24; i++) {
                        let clone = chain.clone();
                        // roller.name = option.crnNo + "-body";
                        let offset = 0;
                        if (i % 2 === 0) {
                            offset = 90;
                        }
                        clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230;
                        console.log(clone.position.x)
                        clone.position.y = yOffset0 + 310;
                        clone.position.z = zOffset0 + 39 + 82;
                        object.addObject( clone );
                    }
                }, null, null );
                }
            });
            chainList.map(item => {
                that.object.addObject(customize(obj.clone(), item));
            })
        });
    let roller = null;
    new MTLLoader(manager)
       .setPath( '../static/model/obj/' )
       .load( '123.mtl', function ( materials ) {
          materials.preload();
          new OBJLoader( manager )
             .setMaterials( materials )
             .setPath( '../static/model/obj/' )
             .load( '123.obj', function ( obj ) {
                    roller = obj;
                    roller.traverse (function (child) {
                        if (child instanceof THREE.Mesh) {
                            child.material = new THREE.MeshLambertMaterial({
                                color: 0xCD6839
                            });
                        }
        new THREE.ObjectLoader().load( "../static/model/json/辊筒输送机.json", function (obj) {
            obj.traverse (function (child) {
                if (child instanceof THREE.Mesh) {
                    child.scale.set(1, 1, 1.8);
                    child.material = new THREE.MeshLambertMaterial({
                        color: 0xAAAAAA
                    });
                }
            });
            rollerList.map(item => {
                that.object.addObject(customize(obj.clone(), item));
            })
        });
        new THREE.ObjectLoader().load( "../static/model/json/顶升移栽.json", function (obj) {
            obj.traverse (function (child) {
                if (child instanceof THREE.Mesh) {
                    child.scale.set(1, 1, 1.8);
                    child.material = new THREE.MeshLambertMaterial({
                        color: 0xAAAAAA
                    });
                }
            });
            transportList.map(item => {
                that.object.addObject(customize(obj.clone(), item));
            })
        });
    }
                    roller.scale.set(1000, 1000, 1000);
                    roller.rotateY(- Math.PI / 2);
                    // roller.name = option.crnNo + "-body";
                    roller.position.x = xOffset;
                    roller.position.y = yOffset;
                    roller.position.z = zOffset;
                    // object.addObject( roller );
             }, null, null );
    });
    function customize(clone, info) {
        clone.position.x = 0 + info.position.x;
        clone.position.y = 0 + info.position.y;
        clone.position.z = 0 + info.position.z;
        clone.rotateY(info.rotateY);
        if (info.traverse !== undefined) {
            let traverse = info.traverse;
            clone.traverse (function (child) {
                if (child instanceof THREE.Mesh) {
                    child.scale.set(traverse.scale.x, traverse.scale.y, traverse.scale.z);
                    child.material = new THREE.MeshLambertMaterial({
                        color: traverse.color
                    });
                }
            });
        }
        return clone;
    }
}