#
luxiaotao1123
2022-04-07 2e11a06eb7f79a8321613c577fa14483a43d2c76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import {MTLLoader} from "../lib/MTLLoader.js";
import {OBJLoader} from "../lib/OBJLoader.js";
 
const xOffset = -1735;
const yOffset = -289;
const zOffset = -480;
 
const xOffset0 = -1735;
const yOffset0 = -117;
const zOffset0 = -480;
 
const xOffset1 = -1735;
const yOffset1 = -116;
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.crnLoadLength = option.crnLoad.length||60;//库位长度
    this.crnLoadWidth = option.crnLoad.width||60;//库位宽
    this.crnLoadHeight = option.crnLoad.height||40;//库位高
    this.crnForkLength = option.crnFork.length||50;//库位长度
    this.crnForkWidth = option.crnFork.width||20;//库位宽
    this.crnForkHeight = option.crnFork.height||30;//库位高
 
    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) {
                        child.castShadow = true;
                        // child.receiveShadow = true;
                        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;
                    obj.userData['crnBodyLength'] = that.crnBodyLength;
                    obj.userData['crnBodyWidth'] = that.crnBodyWidth;
                    obj.userData['crnBodyHeight'] = that.crnBodyHeight;
                    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.castShadow = true;
                            // child.receiveShadow = true;
                            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;
                    obj.userData['crnLoadLength'] = that.crnLoadLength;
                    obj.userData['crnLoadWidth'] = that.crnLoadWidth;
                    obj.userData['crnLoadHeight'] = that.crnLoadHeight;
                    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.castShadow = true;
                            // child.receiveShadow = true;
                            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;
                    obj.userData['crnForkLength'] = that.crnForkLength;
                    obj.userData['crnForkWidth'] = that.crnForkWidth;
                    obj.userData['crnForkHeight'] = that.crnForkHeight;
                    object.addObject( obj );
                }, null, null );
        });
 
}
 
export {StoreCrn}