# 煤层

# 加载煤层

1️⃣ 使用引擎(Engine)的loadWorkfaces接口加载煤层(工作面和采空区)。

import { defined } from '@tx3d/core';

// 加载工作面和采空区
engine.loadWorkfaces( 'assets/jsons/workfaces.json',

    // 工作面配置参数
    workface: {

        color: '#000000'// 工作面颜色

    },

    // 采空区配置参数
    goaf: {

        color: '#aaaaaa'// 采空区颜色

    }

).then( ( results ) => {

    // 工作面实体数组
    workfaces = [];

    // 采空区实体数组
    goafs = [];
    
    for ( let i = 0, il = results.length; i < il; i++ ) {

        const result = results[ i ];

        // 判断工作面是否存在
        if ( defined( result.workface ) ) {

            workfaces.push( result.workface );

        }

        // 判断采空区是否存在
        if ( defined( result.goaf ) ) {

            goafs.push( result.goaf );

        }

    }

} );
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

提示

工作面和采空区配置参数,详见CoalSeamConfiguration

2️⃣ 使用引擎(Engine)的loadWorkfacesByData接口加载煤层(工作面和采空区)。

// 加载工作面和采空区
const results = engine.loadWorkfacesByData( data, {

    // 工作面配置参数
    workface: {

        color: '#000000'// 工作面颜色

    },

    // 采空区配置参数
    goaf: {

        color: '#aaaaaa'// 采空区颜色

    }

} );

// 工作面实体数组
workfaces = [];

// 采空区实体数组
goafs = [];

for ( let i = 0, il = results.length; i < il; i++ ) {

    const result = results[ i ];

    // 判断工作面是否存在
    if ( defined( result.workface ) ) {

        workfaces.push( result.workface );

    }

    // 判断采空区是否存在
    if ( defined( result.goaf ) ) {

        goafs.push( result.goaf );

    }

}
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

# 煤层纹理平铺间距及平铺方向设置

  • 通过 tilingSpacing 初始属性设置纹理U方向和V方向平铺间距(单位:米),tilingSpacing 初始属性可以在数据中设置,也可以通过煤层加载接口的配置参数设置:

    提示

    纹理平铺次数=平铺长度/平铺间距纹理平铺次数 = 平铺长度 / 平铺间距

    • 在数据中设置
    // 煤层数据
    [{
        "workface": {
            .......
    
            "tilingSpacing": [ 20.0, 20.0 ], // 工作面U方向和V方向间隔20米平铺一次
    
            .......
        },
        "goaf": {
            ......
    
            "tilingSpacing": [ 10.0, 10.0 ], // 采空区U方向和V方向间隔10米平铺一次
    
            ......
        }
    }]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    • 通过煤层加载接口的配置参数设置
    // 加载工作面和采空区
    engine.loadWorkfaces( 'assets/jsons/workfaces.json',
    
        // 工作面配置参数
        workface: {
    
            tilingSpacing: [ 20.0, 20.0 ] // 工作面U方向和V方向间隔20米平铺一次,也可以使用 Vector2 传递参数
    
        },
    
        // 采空区配置参数
        goaf: {
    
            tilingSpacing: [ 10.0, 10.0 ] // // 采空区U方向和V方向间隔10米平铺一次,也可以使用 Vector2 传递参数
    
        }
    
    );
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import { Vector2 } from 'three';
    
    // 加载工作面和采空区
    const results = engine.loadWorkfacesByData( data, {
    
        // 工作面配置参数
        workface: {
    
            tilingSpacing: new Vector2( 20.0, 20.0 ) // 工作面U方向和V方向间隔20米平铺一次
    
        },
    
        // 采空区配置参数
        goaf: {
    
            tilingSpacing: new Vector2( 10.0, 10.0 ) // // 采空区U方向和V方向间隔10米平铺一次
    
        }
    
    } );
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    提示

    程序会优先使用数据中tilingSpacing 属性!

  • 通过 tilingDirection 初始属性设置纹理平铺方向,tilingDirection 初始属性可以在数据中设置,也可以通过煤层加载接口的配置参数设置:

    提示

    tilingDirection 数据结构如下所示:

    {
        start: Array<number> | Vector3, // 平铺方向起点坐标(地测坐标)
        end: Array<number> | Vector3    // 平铺方向终点坐标 (地测坐标)
    }
    
    1
    2
    3
    4
    • 在数据中设置
    // 煤层数据
    [{
        "workface": {
            .......
    
            "tilingDirection": {
                "start": [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ],  // 工作面纹理平铺方向起点坐标(地测坐标)
                "end": [ 37408389.4456786, 4260347.04513537, 1081.582 ]             // 工作面纹理平铺方向终点坐标(地测坐标)
            }
    
            .......
        },
        "goaf": {
            ......
    
            "tilingDirection": {
                "start": [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ],  // 采空区纹理平铺方向起点坐标(地测坐标)
                "end": [ 37408389.4456786, 4260347.04513537, 1081.582 ]             // 采空区纹理平铺方向终点坐标(地测坐标
            }
    
            ......
        }
    }]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    • 通过煤层加载接口的配置参数设置
    // 加载工作面和采空区
    engine.loadWorkfaces( 'assets/jsons/workfaces.json',
    
        // 工作面配置参数
        workface: {
    
            tilingDirection:{
                start: [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ],  // 工作面纹理平铺方向起点坐标(地测坐标),也可以使用 Vector3 传递参数
                end: [ 37408389.4456786, 4260347.04513537, 1081.582 ]             // 工作面纹理平铺方向终点坐标(地测坐标),也可以使用 Vector3 传递参数
            }
    
        },
    
        // 采空区配置参数
        goaf: {
    
            tilingDirection:{
                start: [ 37408003.4193593, 4260324.37902636, 1075.03287744472 ],  // 采空区纹理平铺方向起点坐标(地测坐标),也可以使用 Vector3 传递参数
                end: [ 37408389.4456786, 4260347.04513537, 1081.582 ]             // 采空区纹理平铺方向终点坐标(地测坐标),也可以使用 Vector3 传递参数
            }
    
        }
    
    );
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import { Vector3 } from 'three';
    
    // 加载工作面和采空区
    const results = engine.loadWorkfacesByData( data, {
    
        // 工作面配置参数
        workface: {
    
            tilingDirection:{
                start: new Vector3( 37408003.4193593, 4260324.37902636, 1075.03287744472 ),  // 工作面纹理平铺方向起点坐标(地测坐标)
                end: new Vector3( 37408389.4456786, 4260347.04513537, 1081.582 )             // 工作面纹理平铺方向终点坐标(地测坐标)
            }
    
        },
    
        // 采空区配置参数
        goaf: {
    
            tilingDirection:{
                start: new Vector3( 37408003.4193593, 4260324.37902636, 1075.03287744472 ),  // 采空区纹理平铺方向起点坐标(地测坐标)
                end: new Vector3( 37408389.4456786, 4260347.04513537, 1081.582 )             // 采空区纹理平铺方向终点坐标(地测坐标)
            }
    
        }
    
    } );
    
    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

    提示

    程序会优先使用数据中tilingDirection 属性!

# 煤层属性

提示

煤层使用CoalSeam组件渲染,更新属性或调用接口时需要先获取煤层渲染组件。

import { CoalSeam } from '@tx3d/core';

// 获取煤层渲染器
const coalSeam = entity.getComponent( CoalSeam );
1
2
3
4

🌏 type 煤层类型,只读。

// 获取煤层类型
const type = coalSeam.type;
1
2

注意

煤层类型取值"Workface"(工作面)或"Goaf"(采空区)。

🌏 wireframe 是否启用线框模式

// 获取是否启用线框模式
const wireframe = coalSeam.wireframe; 

// 设置是否启用线框模式
coalSeam.wireframe = true;
1
2
3
4
5

🌏 opacity 透明度

// 获取透明度
const opacity = coalSeam.opacity;

// 设置透明度
coalSeam.opacity = 0.5;
1
2
3
4
5

🌏 topVisible 顶面可见性控制

// 获取顶面可见性
const topVisible = coalSeam.topVisible;

// 设置顶面可见性
coalSeam.topVisible = false;
1
2
3
4
5

🌏 bottomVisible 底面可见性控制

// 获取底面可见性
const bottomVisible = coalSeam.bottomVisible;

// 设置底面可见性
coalSeam.bottomVisible = false;
1
2
3
4
5

🌏 boundaryVisible 侧面可见性控制

// 获取侧面可见性
const boundaryVisible = coalSeam.boundaryVisible;

// 设置侧面可见性
coalSeam.boundaryVisible = false;
1
2
3
4
5

🌏 outlineVisible 边框可见性控制

// 获取边框可见性
const outlineVisible = coalSeam.outlineVisible;

// 设置边框可见性
coalSeam.outlineVisible = false;
1
2
3
4
5

🌏 gridVisible 附着网格可见性控制

// 获取附着网格可见性
const gridVisible = coalSeam.gridVisible;

// 设置附着网格可见性
coalSeam.gridVisible = true;
1
2
3
4
5

🌏 gridSize 附着网格大小

// 获取附着网格大小
const gridSize = coalSeam.gridSize;

// 设置附着网格大小
coalSeam.gridSize = 30;
1
2
3
4
5

🌏 gridRatio 附着网格线宽度比率

// 获取附着网格线宽比率
const gridRatio = coalSeam.gridRatio;

// 设置附着网格线宽比率
coalSeam.gridRatio = 0.015;
1
2
3
4
5

注意

gridRatio取值在[ 0.0 ~ 1.0 ]区间

🌏 gridColor 附着网格颜色

// 获取附着网格颜色
const gridColor = coalSeam.gridColor;

// 设置附着网格颜色
coalSeam.gridColor = '#ff00de';
1
2
3
4
5

🌏 gridIntensity 附着网格强度

// 获取附着网格X轴和Y轴方向的强度
const intensity = coalSeam.gridIntensity;

// 设置附着网格X轴和Y轴方向的强度
coalSeam.gridIntensity = [ 1.0, 0.0 ]; // 只显示X轴方向的附着网格
1
2
3
4
5

注意

附着网格强度取值在[ 0.0 ~ 1.0 ]区间,可以通过该属性实现只显示单一方向的附着网格。

# 煤层接口

🌏 setHighlight 设置是否高亮

// 高亮煤层
coalSeam.setHighlight( true, { color: '#ff0000', opacity: 0.5 } );

// 取消煤层高亮
coalSeam.setHighlight( false );
1
2
3
4
5

提示

高亮设置参数,详见HighlightParameters

Last Updated: 2/21/2025, 1:12:10 PM