# Belt组件
使用Belt组件可以为实体添加皮带机,由 @tx3d/extension 包提供。
# 添加基础皮带机
import { Belt } from '@tx3d/extension';
// 构建参数
const params = {
    
    path: [
        [ -50, 1.5, 0 ],
        [ -40, 1.5, 0 ],
        [ -30, 5.5, 0 ],
        [ -20, 5.5, 0 ],
        [ -10, 1.5, 0 ],
        [ 0, 1.5, 0 ]
        
    ],
    belt: '../assets/models/皮带机/机架中间.glb',
    wheel: '../assets/models/皮带机/拖带滚筒.glb',
    head: '../assets/models/皮带机/机头.glb',
    tail: '../assets/models/皮带机/机尾.glb',
    // 以下参数是可选的 可以不传
    // bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
    // bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
    // bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
    // bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
    // bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
    // bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
    // shutting: '../assets/models/皮带机/皮带闭锁.glb',
    // shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
    // bracketWheel:'../assets/models/皮带机2/下方拖带滚筒.glb', // 支架中间的滚筒 可选
    briquetteList: ['../assets/models/皮带机/煤块/煤块1.glb', '../assets/models/皮带机/煤块/煤块2.glb', '../assets/models/皮带机/煤块/煤块3.glb',
        '../assets/models/皮带机/煤块/煤块4.glb', '../assets/models/皮带机/煤块/煤块5.glb', '../assets/models/皮带机/煤块/煤块6.glb',
        '../assets/models/皮带机/煤块/煤块7.glb', '../assets/models/皮带机/煤块/煤块8.glb', '../assets/models/皮带机/煤块/煤块9.glb',
        '../assets/models/皮带机/煤块/煤块10.glb', '../assets/models/皮带机/煤块/煤块11.glb'],
    wheelGap: 2,					// 皮带滚筒间距
    bracketGap: 2.5,				// 支架间距
    shuttingGap: 3,					// 闭锁间距
    shuttingSide: true,				// 闭锁是在左边还是右边 true是左边 false是右边
    beltSpeed: 2.5,					// 皮带转动速度	米每秒
    beltWidth: 1.6,		            // 皮带的宽度
    visibleDistance: 500,			// 皮带的可见距离
    startup: true,					// 皮带开关
    briquetteLoad: 25,				// 煤流量
    isLoad: true,					// 是否按照煤流量填满煤
    generateBriquette:true	        // 是否产生煤块
}
// 创建实体
const entity = engine.createEntity( { transform: { position: [0, 0, 0] } } );
// 添加皮带机渲染组件
const belt = entity.addComponent( Belt, params );
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
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
提示
Belt组件初始化参数,详见BeltParameters。
皮带机建模参数可选部分说明:
这些参数可以不传
bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
shutting: '../assets/models/皮带机/皮带闭锁.glb',
shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
bracketWheel:'../assets/models/皮带机2/下方拖带滚筒.glb',
# 添加多条皮带机及搭接关系
import { Belt } from '@tx3d/extension';
const pathArr = [
    [
        [ -50, 1.5, 0 ],
        [ -40, 1.5, 0 ],
        [ -30, 5.5, 0 ],
        [ -20, 5.5, 0 ],
        [ -10, 1.5, 0 ],
        [ 0, 1.5, 0 ]
    ],
    [ [ 0, 1.5, 0 ], [ 15, 1.5, 0 ] ],
    [ [ 30, 1.5, -5 ], [ 15, 1.5, -5 ] ],
    [ [ 15, 0, -10 ], [ 15, 0, 15 ] ],
    [ [ 25, -1.5, 15 ], [ 0, -4, 15 ] ],
    [ [ 0, -5.5, 15 ], [ 0, -5.5, -20 ] ]
];
// !! 注意 点和点直接的距离 不能小于 机尾或机头 自带的皮带 长度  目前机尾 大约是3米
const beltArr = [];
for ( let i = 0, il = pathArr.length; i < il; i++ ) {
    // 构建参数
    const params = {
        
        path: pathArr[ i ],
        belt: '../assets/models/皮带机/机架中间.glb',
        wheel: '../assets/models/皮带机/拖带滚筒.glb',
        bracketLTop: '../assets/models/皮带机/支架_L_02.glb',
        bracketLMid: '../assets/models/皮带机/支架_L_01.glb',
        bracketLBottom: '../assets/models/皮带机/支架_L_03.glb',
        bracketRTop: '../assets/models/皮带机/支架_R_02.glb',
        bracketRMid: '../assets/models/皮带机/支架_R_01.glb',
        bracketRBottom: '../assets/models/皮带机/支架_R_03.glb',
        head: '../assets/models/皮带机/机头.glb',
        tail: '../assets/models/皮带机/机尾.glb',
        shutting: '../assets/models/皮带机/皮带闭锁.glb',
        shuttingLine: '../assets/models/皮带机/皮带闭锁链接线.glb',
        briquetteList: [
            '../assets/models/皮带机/煤块/煤块1.glb', 
            '../assets/models/皮带机/煤块/煤块2.glb', 
            '../assets/models/皮带机/煤块/煤块3.glb',
            '../assets/models/皮带机/煤块/煤块4.glb', 
            '../assets/models/皮带机/煤块/煤块5.glb', 
            '../assets/models/皮带机/煤块/煤块6.glb',
            '../assets/models/皮带机/煤块/煤块7.glb', 
            '../assets/models/皮带机/煤块/煤块8.glb', 
            '../assets/models/皮带机/煤块/煤块9.glb',
            '../assets/models/皮带机/煤块/煤块10.glb', 
            '../assets/models/皮带机/煤块/煤块11.glb'
        
        ],
        wheelGap: 2,					// 皮带滚筒间距
        bracketGap: 2.5,				// 支架间距
        shuttingGap: 3,					// 闭锁间距
        shuttingSide: true,				// 闭锁是在左边还是右边 true是左边 false是右边
        beltSpeed: 2.5,					// 皮带转动速度	米每秒
        beltWidth: 1.6,					// 皮带的宽度
        visibleDistance: 500,			// 皮带的可见距离
        startup: true,					// 皮带开关
        briquetteLoad: 25,				// 煤流量
        isLoad: true					// 是否按照煤流量填满煤
    }
    // 这几条皮带生产煤块 其他不生产
    if ( i == 0 || i == 2 || i == 3 || i == 4 ) {
        params.generateBriquette = true;	// 产生煤块
    }
    // 创建实体
    const entity = engine.createEntity( { transform: { position: [ 0, 0, 0 ] } } );
    // 添加皮带机渲染组件
    const belt = entity.addComponent( Belt, params );
    beltArr.push( belt );
}
// 设置皮带搭接关系
beltArr[ 1 ].receiveBriquette = beltArr[ 0 ];
beltArr[ 2 ].receiveBriquette = beltArr[ 1 ];
beltArr[ 3 ].receiveBriquette = beltArr[ 2 ];
beltArr[ 4 ].receiveBriquette = beltArr[ 3 ];
beltArr[ 5 ].receiveBriquette = beltArr[ 4 ];
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
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
# 皮带机异物添加
添加异物需要在传入参数添加异物构造方法和异物线构造方法,具体如下:
import { AssetsManager } from '@tx3d/core';
// 提前加载 异物类型的模型
const largeCoalGLTF = await AssetsManager.loadGLTFModelAsset( '../assets/models/皮带机/大煤块.glb' );// 大块煤模型
const anchorBoltGLTF = await AssetsManager.loadGLTFModelAsset( '../assets/models/皮带机/锚杆.glb' );// 锚杆模型
// 添加创建异物的构造函数
// type 是你在调用添加异物时传入的参数 在这里接收  用以判断 添加什么类型模型
// parentObject 是添加的容器
params.createForeignBody = ( type, parentObject ) => {
    let mesh;
    
    if ( type == 0 ) {
        mesh = largeCoalGLTF;
    } else if ( type == 1 ) {
        mesh = anchorBoltGLTF;
    }
    // 创建模型实体
    return engine.modelManager.createModel( mesh, { transform: { parent: parentObject } } );
};
// 添加创建异物线的构造函数
params.createTrackLine = ( points ) => {
    // 异物线样式
    const trackLineStyle = {
        coordinates: points,
        lineJoin: 'round',
        width: 10,
        color: '#ff0000',
        isClosed: false,
        outline: true,
        outlineWidth: 1,
        outlineColor: "#ffffff",
        flowSpeed: 1,
        moveColor: "#ffffff"
    }
    return engine.createPixelLine( trackLineStyle );
};
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
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
添加异物及异物线方法调用,参数详见接口说明
belt.addForeignBody( 1, [ 0, 0, 0 ], [ 10, 0, 0 ] );
1
# 皮带机卡扣添加
添加卡扣需要在传入参数添加卡扣构造方法,具体如下:
// 添加创建皮带卡扣的构造函数
params.createFastening = ( points ) => {
    // 线样式
    const trackLineStyle = {
        coordinates: points,
        lineJoin: 'round',
        width: 10,
        color: '#ff0000',
        isClosed: false,
        outline: true,
        outlineWidth: 1,
        outlineColor: "#ffffff",
        flowSpeed: 1,
        moveColor: "#ffffff"
    }
    return engine.createPixelLine( trackLineStyle );
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
添加卡扣方法调用,参数详见接口说明
belt.addFastening( [ 0, 0, 0 ], 1 );
1
# 属性
🌏 receiveBriquette 设置接收皮带
// 皮带机2接收皮带机1上的物体
belt2.receiveBriquette = belt1;
1
2
2
🌏 forceVisible 强制隐藏(不受皮带机自动控制的影响)
// 获取当前隐藏值
const forceVisible = belt.forceVisible;
// 设置隐藏值
belt.forceVisible = false;
1
2
3
4
5
2
3
4
5
🌏 beltSpeed 设置皮带速度(米每秒 如果模型单位是米)
// 设置皮带机传输速度为10米每秒
belt.beltSpeed = 10;
1
2
2
🌏 beltStartup 设置皮带机开关
// 设置皮带机停止
belt.beltStartup = false;
1
2
2
🌏 briquetteLoad 设置煤流量
// 设置皮带机每秒添加25块
belt.briquetteLoad = 25;
1
2
2
🌏 generateBriquette 设置产生煤块
// 设置皮带机产生煤块
belt.generateBriquette = true;
1
2
2
# 接口
🌏 addForeignBody 添加异物及异物线
const foreignBodyID = belt.addForeignBody( 1, [ 0, 0, 0 ], [ 10, 0, 0 ] );
1
🌏 removeForeignBody 删除异物
// 删除这条皮带机上的异物 (如果有的话)
belt.removeForeignBody( foreignBodyID );
1
2
2
🌏 removeTrack 删除异物线
// 删除这条皮带机上的异物线 (如果有的话)
belt.removeTrack( foreignBodyID );
1
2
2
🌏 addFastening 添加皮带卡扣
const fasteningID = belt.addFastening( [ 0, 0, 0 ], 1 );
1
🌏 removeFastening 删除皮带卡扣
// 删除这条皮带机上的卡扣 (如果有的话)
belt.removeFastening(fasteningID);
1
2
2
🌏 setHighlight 设置高亮效果
// 设置高亮效果
belt.getComponent(Belt).renderer.setHighlight( true, { name: "2#减速器", color: "#ff0000" } );
1
2
2
← Bar组件 BoundHelper组件 →
