Skip to content

井巷工程 API

井巷工程模块:提供巷道断面生成、建模与轮廓线建模功能

ContourAlgorithm

Bases: IntEnum

轮廓线建模算法类型

Source code in dimine_python_sdk\lib\exploitation\models.py
113
114
115
116
117
118
119
class ContourAlgorithm(IntEnum):
    """轮廓线建模算法类型"""

    MIN_PERIMETER = 0  # 最小周长法
    MIN_SURFACE_AREA = 1  # 最小表面积法
    SYNC_ADVANCE = 2  # 同步前进法
    MIN_DISTANCE = 3  # 最小距离法

ContourExtrapolateModelingError

Bases: ModelingError

轮廓线外推建模失败

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
59
60
class ContourExtrapolateModelingError(ModelingError):
    """轮廓线外推建模失败"""

ContourModeling

轮廓线建模 — 两轮廓线建模 / 单轮廓线封闭为面 / 外推建模 / 实体合并 / 多平行轮廓线建模

推荐用法(无需实例化)

ContourModeling.two_contour_modeling(ContourAlgorithm.MIN_PERIMETER, line1, line2) ContourModeling.single_contour_modeling(ContourAlgorithm.MIN_PERIMETER, line) ContourModeling.contour_extrapolate_modeling(ExtrapolateMode.TIP, line) ContourModeling.unite_polydata(tin_list) ContourModeling.multi_parallel_contour_modeling(polylines_set)

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
class ContourModeling:
    """
    轮廓线建模 — 两轮廓线建模 / 单轮廓线封闭为面 / 外推建模 / 实体合并 / 多平行轮廓线建模

    推荐用法(无需实例化)
    --------------------
    >>> ContourModeling.two_contour_modeling(ContourAlgorithm.MIN_PERIMETER, line1, line2)
    >>> ContourModeling.single_contour_modeling(ContourAlgorithm.MIN_PERIMETER, line)
    >>> ContourModeling.contour_extrapolate_modeling(ExtrapolateMode.TIP, line)
    >>> ContourModeling.unite_polydata(tin_list)
    >>> ContourModeling.multi_parallel_contour_modeling(polylines_set)
    """

    @staticmethod
    def two_contour_modeling(method: ContourAlgorithm, line1, line2) -> List[TINGeometry]:
        """
        两轮廓线建模

        Parameters
        ----------
        method : ContourAlgorithm
            算法类型
        line1 : Line or np.ndarray or List[List[float]]
            第一条轮廓线
        line2 : Line or np.ndarray or List[List[float]]
            第二条轮廓线

        Returns
        -------
        List[TINGeometry]
        """
        return two_contour_modeling_impl(method, line1, line2)

    @staticmethod
    def single_contour_modeling(method: ContourAlgorithm, line) -> List[TINGeometry]:
        """
        单轮廓线封闭为面

        Parameters
        ----------
        method : ContourAlgorithm
            算法类型
        line : Line or np.ndarray or List[List[float]]
            轮廓线

        Returns
        -------
        List[TINGeometry]
        """
        return single_contour_modeling_impl(method, line)

    @staticmethod
    def contour_extrapolate_modeling(
        model: ExtrapolateMode,
        point_set,
        extra_dir: ExtrapolateDirection = ExtrapolateDirection.BOTH,
        forward_distance: float = 25.0,
        backward_distance: float = 25.0,
        auto_calc: bool = True,
        normal: List[float] | None = None,
        zoom: float = 70.0,
        pinchout_point_count: int = 2,
        close: bool = True,
        taper_line_verical: bool = False,
    ) -> List[TINGeometry]:
        """
        轮廓线外推建模

        Parameters
        ----------
        model : ExtrapolateMode
            外推模式枚举:TIP=0 尖推、WEDGE=1 楔推、FLAT=2 平推
        point_set : Line or np.ndarray or List[List[float]]
            轮廓线
        extra_dir : ExtrapolateDirection
            外推方向,默认 BOTH
        forward_distance : float
            正侧距离
        backward_distance : float
            反侧距离
        auto_calc : bool
            自动计算外推法向量
        normal : List[float] | None
            外推法向量,auto_calc=True 时可省略
        zoom : float
            缩放比例
        pinchout_point_count : int
            楔推尖灭点数
        close : bool
            平推时是否封闭外推端
        taper_line_verical : bool
            楔推时是否按短轴尖灭

        Returns
        -------
        List[TINGeometry]
        """
        return contour_extrapolate_modeling_impl(
            model, point_set, extra_dir,
            forward_distance, backward_distance, auto_calc,
            normal, zoom, pinchout_point_count, close, taper_line_verical,
        )

    @staticmethod
    def unite_polydata(tin_list: list[TINGeometry]) -> List[TINGeometry]:
        """
        实体合并

        Parameters
        ----------
        tin_list : list[TINGeometry]
            待合并的三角网模型列表

        Returns
        -------
        List[TINGeometry]
            合并后的三角网模型列表
        """
        return unite_polydata_impl(tin_list)

    @staticmethod
    def multi_parallel_contour_modeling(
        polylines_set,
        space_x: float = 1.0,
        space_y: float = 1.0,
        vertical_tol: float = 0.5,
        close_end: bool = True,
    ) -> List[TINGeometry]:
        """
        多平行轮廓线建模

        Parameters
        ----------
        polylines_set : List[Line] or List[np.ndarray] or List[List[List[float]]]
            多条轮廓线数据集
        space_x : float
            X 方向网格大小
        space_y : float
            Y 方向网格大小
        vertical_tol : float
            垂直方向间隔容差
        close_end : bool
            是否封闭端部

        Returns
        -------
        List[TINGeometry]
        """
        return multi_parallel_contour_modeling_impl(
            polylines_set, space_x, space_y, vertical_tol, close_end,
        )

contour_extrapolate_modeling(model, point_set, extra_dir=ExtrapolateDirection.BOTH, forward_distance=25.0, backward_distance=25.0, auto_calc=True, normal=None, zoom=70.0, pinchout_point_count=2, close=True, taper_line_verical=False) staticmethod

轮廓线外推建模

Parameters

model : ExtrapolateMode 外推模式枚举:TIP=0 尖推、WEDGE=1 楔推、FLAT=2 平推 point_set : Line or np.ndarray or List[List[float]] 轮廓线 extra_dir : ExtrapolateDirection 外推方向,默认 BOTH forward_distance : float 正侧距离 backward_distance : float 反侧距离 auto_calc : bool 自动计算外推法向量 normal : List[float] | None 外推法向量,auto_calc=True 时可省略 zoom : float 缩放比例 pinchout_point_count : int 楔推尖灭点数 close : bool 平推时是否封闭外推端 taper_line_verical : bool 楔推时是否按短轴尖灭

Returns

List[TINGeometry]

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
@staticmethod
def contour_extrapolate_modeling(
    model: ExtrapolateMode,
    point_set,
    extra_dir: ExtrapolateDirection = ExtrapolateDirection.BOTH,
    forward_distance: float = 25.0,
    backward_distance: float = 25.0,
    auto_calc: bool = True,
    normal: List[float] | None = None,
    zoom: float = 70.0,
    pinchout_point_count: int = 2,
    close: bool = True,
    taper_line_verical: bool = False,
) -> List[TINGeometry]:
    """
    轮廓线外推建模

    Parameters
    ----------
    model : ExtrapolateMode
        外推模式枚举:TIP=0 尖推、WEDGE=1 楔推、FLAT=2 平推
    point_set : Line or np.ndarray or List[List[float]]
        轮廓线
    extra_dir : ExtrapolateDirection
        外推方向,默认 BOTH
    forward_distance : float
        正侧距离
    backward_distance : float
        反侧距离
    auto_calc : bool
        自动计算外推法向量
    normal : List[float] | None
        外推法向量,auto_calc=True 时可省略
    zoom : float
        缩放比例
    pinchout_point_count : int
        楔推尖灭点数
    close : bool
        平推时是否封闭外推端
    taper_line_verical : bool
        楔推时是否按短轴尖灭

    Returns
    -------
    List[TINGeometry]
    """
    return contour_extrapolate_modeling_impl(
        model, point_set, extra_dir,
        forward_distance, backward_distance, auto_calc,
        normal, zoom, pinchout_point_count, close, taper_line_verical,
    )

multi_parallel_contour_modeling(polylines_set, space_x=1.0, space_y=1.0, vertical_tol=0.5, close_end=True) staticmethod

多平行轮廓线建模

Parameters

polylines_set : List[Line] or List[np.ndarray] or List[List[List[float]]] 多条轮廓线数据集 space_x : float X 方向网格大小 space_y : float Y 方向网格大小 vertical_tol : float 垂直方向间隔容差 close_end : bool 是否封闭端部

Returns

List[TINGeometry]

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
@staticmethod
def multi_parallel_contour_modeling(
    polylines_set,
    space_x: float = 1.0,
    space_y: float = 1.0,
    vertical_tol: float = 0.5,
    close_end: bool = True,
) -> List[TINGeometry]:
    """
    多平行轮廓线建模

    Parameters
    ----------
    polylines_set : List[Line] or List[np.ndarray] or List[List[List[float]]]
        多条轮廓线数据集
    space_x : float
        X 方向网格大小
    space_y : float
        Y 方向网格大小
    vertical_tol : float
        垂直方向间隔容差
    close_end : bool
        是否封闭端部

    Returns
    -------
    List[TINGeometry]
    """
    return multi_parallel_contour_modeling_impl(
        polylines_set, space_x, space_y, vertical_tol, close_end,
    )

single_contour_modeling(method, line) staticmethod

单轮廓线封闭为面

Parameters

method : ContourAlgorithm 算法类型 line : Line or np.ndarray or List[List[float]] 轮廓线

Returns

List[TINGeometry]

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
@staticmethod
def single_contour_modeling(method: ContourAlgorithm, line) -> List[TINGeometry]:
    """
    单轮廓线封闭为面

    Parameters
    ----------
    method : ContourAlgorithm
        算法类型
    line : Line or np.ndarray or List[List[float]]
        轮廓线

    Returns
    -------
    List[TINGeometry]
    """
    return single_contour_modeling_impl(method, line)

two_contour_modeling(method, line1, line2) staticmethod

两轮廓线建模

Parameters

method : ContourAlgorithm 算法类型 line1 : Line or np.ndarray or List[List[float]] 第一条轮廓线 line2 : Line or np.ndarray or List[List[float]] 第二条轮廓线

Returns

List[TINGeometry]

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
@staticmethod
def two_contour_modeling(method: ContourAlgorithm, line1, line2) -> List[TINGeometry]:
    """
    两轮廓线建模

    Parameters
    ----------
    method : ContourAlgorithm
        算法类型
    line1 : Line or np.ndarray or List[List[float]]
        第一条轮廓线
    line2 : Line or np.ndarray or List[List[float]]
        第二条轮廓线

    Returns
    -------
    List[TINGeometry]
    """
    return two_contour_modeling_impl(method, line1, line2)

unite_polydata(tin_list) staticmethod

实体合并

Parameters

tin_list : list[TINGeometry] 待合并的三角网模型列表

Returns

List[TINGeometry] 合并后的三角网模型列表

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
@staticmethod
def unite_polydata(tin_list: list[TINGeometry]) -> List[TINGeometry]:
    """
    实体合并

    Parameters
    ----------
    tin_list : list[TINGeometry]
        待合并的三角网模型列表

    Returns
    -------
    List[TINGeometry]
        合并后的三角网模型列表
    """
    return unite_polydata_impl(tin_list)

ExtrapolateDirection

Bases: IntEnum

轮廓线外推方向

Source code in dimine_python_sdk\lib\exploitation\models.py
130
131
132
133
134
135
class ExtrapolateDirection(IntEnum):
    """轮廓线外推方向"""

    BOTH = 0  # 两端
    FRONT = 1  # 正侧
    BACK = 2  # 反侧

ExtrapolateMode

Bases: IntEnum

轮廓线外推建模模式

Source code in dimine_python_sdk\lib\exploitation\models.py
122
123
124
125
126
127
class ExtrapolateMode(IntEnum):
    """轮廓线外推建模模式"""

    TIP = 0  # 尖推
    WEDGE = 1  # 楔推
    FLAT = 2  # 平推

ImplicitEstimationParam

Bases: ParamModel

隐式建模估值参数

Source code in dimine_python_sdk\lib\exploitation\models.py
189
190
191
192
193
194
195
196
197
198
199
200
201
class ImplicitEstimationParam(ParamModel):
    """隐式建模估值参数"""

    method: int = Field(default=0, ge=0, description="估值方法")
    kernel_function: int = Field(default=0, ge=0, description="核函数类型")
    reach_point_num: int = Field(default=10, gt=0, description="邻域搜索点数")
    reach: float = Field(default=100.0, gt=0, description="搜索半径")
    function_type: int = Field(default=0, ge=0, description="变差函数类型")
    nugget: float = Field(default=0.0, ge=0, description="块金值")
    sill: float = Field(default=2.0, ge=0, description="基台值")
    range: float = Field(default=10.0, gt=0, description="变程")
    ellipse_rate: float = Field(default=1.0, gt=0, description="椭球各向异性比")
    main_angle: float = Field(default=0.0, description="主方向角(度)")

ImplicitGridParam

Bases: ParamModel

隐式建模网格参数

Source code in dimine_python_sdk\lib\exploitation\models.py
178
179
180
181
182
183
184
185
186
class ImplicitGridParam(ParamModel):
    """隐式建模网格参数"""

    type: int = Field(default=1, ge=0, description="网格类型")
    adaptive: bool = Field(default=True, description="是否自适应网格")
    x_node_num: int = Field(default=81, gt=1, description="X 方向节点数")
    y_node_num: int = Field(default=81, gt=1, description="Y 方向节点数")
    z_node_num: int = Field(default=20, gt=1, description="Z 方向节点数")
    offset: float = Field(default=10.0, ge=0, description="网格外扩距离")

ImplicitModeling

隐式建模 — 隐式地层建模

推荐用法(无需实例化)

param = ImplicitStratumModelingParam( ... data=ImplicitStratumDataParam( ... drill_file=r"F:\测试数据\建模测试数据\钻孔数据库.dmd", ... layer_table="分层表", ... layer_table_field="地层", ... layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"], ... ) ... ) ImplicitModeling.stratum_modeling(param)

Source code in dimine_python_sdk\lib\exploitation\implicit_modeling.py
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
class ImplicitModeling:
    """
    隐式建模 — 隐式地层建模

    推荐用法(无需实例化)
    --------------------
    >>> param = ImplicitStratumModelingParam(
    ...     data=ImplicitStratumDataParam(
    ...         drill_file=r"F:\\测试数据\\建模测试数据\\钻孔数据库.dmd",
    ...         layer_table="分层表",
    ...         layer_table_field="地层",
    ...         layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"],
    ...     )
    ... )
    >>> ImplicitModeling.stratum_modeling(param)
    """

    @staticmethod
    def stratum_modeling(
        param: ImplicitStratumModelingParam,
    ) -> List[Tuple[str, TINGeometry]]:
        """
        隐式地层建模

        Parameters
        ----------
        param : ImplicitStratumModelingParam
            隐式地层建模参数(数据 / 网格 / 估值 / 尖灭厚度)

        Returns
        -------
        List[Tuple[str, TINGeometry]]
            (地层名称, 实体三角网) 列表,按建模顺序排列

        Raises
        ------
        ImplicitStratumModelingError
            底层建模失败或抛出异常时包装
        """
        return implicit_stratum_modeling_impl(param)

stratum_modeling(param) staticmethod

隐式地层建模

Parameters

param : ImplicitStratumModelingParam 隐式地层建模参数(数据 / 网格 / 估值 / 尖灭厚度)

Returns

List[Tuple[str, TINGeometry]] (地层名称, 实体三角网) 列表,按建模顺序排列

Raises

ImplicitStratumModelingError 底层建模失败或抛出异常时包装

Source code in dimine_python_sdk\lib\exploitation\implicit_modeling.py
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
@staticmethod
def stratum_modeling(
    param: ImplicitStratumModelingParam,
) -> List[Tuple[str, TINGeometry]]:
    """
    隐式地层建模

    Parameters
    ----------
    param : ImplicitStratumModelingParam
        隐式地层建模参数(数据 / 网格 / 估值 / 尖灭厚度)

    Returns
    -------
    List[Tuple[str, TINGeometry]]
        (地层名称, 实体三角网) 列表,按建模顺序排列

    Raises
    ------
    ImplicitStratumModelingError
        底层建模失败或抛出异常时包装
    """
    return implicit_stratum_modeling_impl(param)

ImplicitModelingError

Bases: RuntimeError

隐式建模异常基类

Source code in dimine_python_sdk\lib\exploitation\implicit_modeling.py
27
28
class ImplicitModelingError(RuntimeError):
    """隐式建模异常基类"""

ImplicitStratumDataParam

Bases: ParamModel

隐式地层建模数据参数

示例

ImplicitStratumDataParam( ... drill_file=r"F:\测试数据\建模测试数据\钻孔数据库.dmd", ... layer_table="分层表", ... layer_table_field="地层", ... layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"], ... )

Source code in dimine_python_sdk\lib\exploitation\models.py
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
class ImplicitStratumDataParam(ParamModel):
    """
    隐式地层建模数据参数

    示例
    ------
    >>> ImplicitStratumDataParam(
    ...     drill_file=r"F:\\测试数据\\建模测试数据\\钻孔数据库.dmd",
    ...     layer_table="分层表",
    ...     layer_table_field="地层",
    ...     layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"],
    ... )
    """

    drill_file: str = Field(
        ...,
        alias="drill_file",
        description="钻孔数据库文件路径(.dmd)",
    )
    layer_table: str = Field(..., description="分层表名称")
    layer_table_field: str = Field(..., description="分层表中地层字段名称")
    layer_sequence: List[str] = Field(
        ...,
        min_length=1,
        description="地层序列(按建模顺序排列的地层名称,序列化时以逗号连接)",
    )

    @field_validator("layer_sequence", mode="before")
    @classmethod
    def _split_sequence_str(cls, v):
        """兼容直接传入逗号分隔字符串"""
        if isinstance(v, str):
            return [item.strip() for item in v.split(",") if item.strip()]
        return v

    @field_serializer("layer_sequence")
    def _join_sequence(self, v: List[str]) -> str:
        return ",".join(v)

ImplicitStratumModelingError

Bases: ImplicitModelingError

隐式地层建模失败

Source code in dimine_python_sdk\lib\exploitation\implicit_modeling.py
31
32
class ImplicitStratumModelingError(ImplicitModelingError):
    """隐式地层建模失败"""

ImplicitStratumModelingParam

Bases: ParamModel

隐式地层建模参数:数据 + 网格 + 估值 + 尖灭厚度

示例

ImplicitStratumModelingParam( ... data=ImplicitStratumDataParam( ... drill_file=r"F:\测试数据\建模测试数据\钻孔数据库.dmd", ... layer_table="分层表", ... layer_table_field="地层", ... layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"], ... ), ... grid=ImplicitGridParam(x_node_num=81, y_node_num=81, z_node_num=20), ... pinch_thickness=0.1, ... )

Source code in dimine_python_sdk\lib\exploitation\models.py
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
class ImplicitStratumModelingParam(ParamModel):
    """
    隐式地层建模参数:数据 + 网格 + 估值 + 尖灭厚度

    示例
    ------
    >>> ImplicitStratumModelingParam(
    ...     data=ImplicitStratumDataParam(
    ...         drill_file=r"F:\\测试数据\\建模测试数据\\钻孔数据库.dmd",
    ...         layer_table="分层表",
    ...         layer_table_field="地层",
    ...         layer_sequence=["泥盆纪地层", "志留纪地层", "寒武纪地层"],
    ...     ),
    ...     grid=ImplicitGridParam(x_node_num=81, y_node_num=81, z_node_num=20),
    ...     pinch_thickness=0.1,
    ... )
    """

    data: ImplicitStratumDataParam = Field(..., description="数据参数")
    grid: ImplicitGridParam = Field(
        default_factory=ImplicitGridParam, description="网格参数"
    )
    estimation: ImplicitEstimationParam = Field(
        default_factory=ImplicitEstimationParam, description="估值参数"
    )
    pinch_thickness: float = Field(default=0.1, ge=0, description="尖灭厚度")

Laneway

井巷工程 — 断面/巷道/竖井生成

推荐用法(无需实例化)

Laneway.get_section(SectionParam(type=0, width=2.0)) Laneway.get_lane_way_model(LanewayParam(section=..., polylines_set=...)) Laneway.get_lane_way_model(LanewayParam(section=..., polylines_set=..., shaft=True, angle=45.0))

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
class Laneway:
    """
    井巷工程 — 断面/巷道/竖井生成

    推荐用法(无需实例化)
    --------------------
    >>> Laneway.get_section(SectionParam(type=0, width=2.0))
    >>> Laneway.get_lane_way_model(LanewayParam(section=..., polylines_set=...))
    >>> Laneway.get_lane_way_model(LanewayParam(section=..., polylines_set=..., shaft=True, angle=45.0))
    """

    @staticmethod
    def get_section(param: Union[Dict[str, Any], SectionParam]) -> np.ndarray:
        """
        获取断面轮廓

        Parameters
        ----------
        param : SectionParam or dict
            断面参数(dict 已废弃,会发出 DeprecationWarning)

        Returns
        -------
        np.ndarray
            断面轮廓点数组

        Raises
        ------
        SectionGenerateError
            底层返回空结果或抛出异常时包装
        """
        return get_section_contour_impl(param)

    @staticmethod
    def get_lane_way_model(param: Union[Dict[str, Any], "LanewayParam"]) -> List[TINGeometry]:
        """
        根据断面 + 中心线生成巷道或竖井

        Parameters
        ----------
        param : LanewayParam or dict
            巷道/竖井建模参数(dict 已废弃,会发出 DeprecationWarning)。
            当 ``shaft=True`` 时切换为竖井建模,由 C++ 侧根据 ``shaft`` 字段区分;
            ``angle`` 控制竖井水平旋转角度(度),范围 ``[0, 360)``。

        Returns
        -------
        List[TINGeometry]
            生成的巷道/竖井模型三角网列表

        Raises
        ------
        LanewayModelingError
            底层返回空结果或抛出异常时包装
        """
        return laneway_modeling_impl(param)

get_lane_way_model(param) staticmethod

根据断面 + 中心线生成巷道或竖井

Parameters

param : LanewayParam or dict 巷道/竖井建模参数(dict 已废弃,会发出 DeprecationWarning)。 当 shaft=True 时切换为竖井建模,由 C++ 侧根据 shaft 字段区分; angle 控制竖井水平旋转角度(度),范围 [0, 360)

Returns

List[TINGeometry] 生成的巷道/竖井模型三角网列表

Raises

LanewayModelingError 底层返回空结果或抛出异常时包装

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@staticmethod
def get_lane_way_model(param: Union[Dict[str, Any], "LanewayParam"]) -> List[TINGeometry]:
    """
    根据断面 + 中心线生成巷道或竖井

    Parameters
    ----------
    param : LanewayParam or dict
        巷道/竖井建模参数(dict 已废弃,会发出 DeprecationWarning)。
        当 ``shaft=True`` 时切换为竖井建模,由 C++ 侧根据 ``shaft`` 字段区分;
        ``angle`` 控制竖井水平旋转角度(度),范围 ``[0, 360)``。

    Returns
    -------
    List[TINGeometry]
        生成的巷道/竖井模型三角网列表

    Raises
    ------
    LanewayModelingError
        底层返回空结果或抛出异常时包装
    """
    return laneway_modeling_impl(param)

get_section(param) staticmethod

获取断面轮廓

Parameters

param : SectionParam or dict 断面参数(dict 已废弃,会发出 DeprecationWarning)

Returns

np.ndarray 断面轮廓点数组

Raises

SectionGenerateError 底层返回空结果或抛出异常时包装

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
@staticmethod
def get_section(param: Union[Dict[str, Any], SectionParam]) -> np.ndarray:
    """
    获取断面轮廓

    Parameters
    ----------
    param : SectionParam or dict
        断面参数(dict 已废弃,会发出 DeprecationWarning)

    Returns
    -------
    np.ndarray
        断面轮廓点数组

    Raises
    ------
    SectionGenerateError
        底层返回空结果或抛出异常时包装
    """
    return get_section_contour_impl(param)

LanewayError

Bases: RuntimeError

井巷工程异常基类

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
34
35
class LanewayError(RuntimeError):
    """井巷工程异常基类"""

LanewayModelingError

Bases: LanewayError

巷道建模失败

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
42
43
class LanewayModelingError(LanewayError):
    """巷道建模失败"""

LanewayParam

Bases: ParamModel

巷道/竖井建模参数:断面 + 中心线 + 生成选项

示例

LanewayParam( ... section=SectionParam(type=0, width=2.0, wall_height=1.0), ... polylines_set=[ ... [["1", "2", "0"], ["2", "4", "0"], ["3", "6", "0"]], ... [["2", "1", "3"], ["4", "2", "3"], ["6", "3", "3"]], ... ], ... close=False, ... connectivity=False, ... method=0, ... bottom_contour=False, ... )

竖井建模示例

LanewayParam( ... section=SectionParam(type=0, width=2.0, wall_height=1.0), ... polylines_set=[[["0", "0", "0"], ["0", "0", "10"]]], ... shaft=True, ... angle=45.0, ... )

Source code in dimine_python_sdk\lib\exploitation\models.py
 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
class LanewayParam(ParamModel):
    """
    巷道/竖井建模参数:断面 + 中心线 + 生成选项

    示例
    ------
    >>> LanewayParam(
    ...     section=SectionParam(type=0, width=2.0, wall_height=1.0),
    ...     polylines_set=[
    ...         [["1", "2", "0"], ["2", "4", "0"], ["3", "6", "0"]],
    ...         [["2", "1", "3"], ["4", "2", "3"], ["6", "3", "3"]],
    ...     ],
    ...     close=False,
    ...     connectivity=False,
    ...     method=0,
    ...     bottom_contour=False,
    ... )

    竖井建模示例
    ------------
    >>> LanewayParam(
    ...     section=SectionParam(type=0, width=2.0, wall_height=1.0),
    ...     polylines_set=[[["0", "0", "0"], ["0", "0", "10"]]],
    ...     shaft=True,
    ...     angle=45.0,
    ... )
    """

    section: SectionParam = Field(..., description="断面信息")
    polylines_set: List[List[List[float]] | Line] = Field(
        default_factory=list,
        description="中心线集合,三维折线顶点列表的列表",
    )

    @field_validator("polylines_set", mode="before")
    @classmethod
    def _convert_line_to_list(cls, v):
        if not isinstance(v, list):
            return v
        result = []
        for item in v:
            if isinstance(item, Line):
                result.append(item.geometry.tolist())
            else:
                result.append(item)
        return result
    close: bool = Field(default=False, description="是否封口,即巷道的尽头是否封口")
    connectivity: bool = Field(default=False, description="是否联通建模,即巷道交叉口是否自动联通起来")
    method: int = Field(
        default=0,
        ge=0,
        le=2,
        description="生成模式:0整体连接 1拐点分离 2顶墙分离(非联通时用)",
    )
    bottom_contour: bool = Field(default=False, description="是否为底部轮廓线(联通时用)")
    shaft: bool = Field(
        default=False,
        description="是否为竖井,true=竖井,false=巷道",
    )
    angle: float = Field(
        default=0.0,
        ge=0,
        lt=360,
        description="竖井水平旋转角度(度),范围 0~360",
    )

ModelingError

Bases: RuntimeError

轮廓线建模异常基类

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
47
48
class ModelingError(RuntimeError):
    """轮廓线建模异常基类"""

ParallelContourModelingError

Bases: ModelingError

多平行轮廓线建模失败

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
63
64
class ParallelContourModelingError(ModelingError):
    """多平行轮廓线建模失败"""

SectionGenerateError

Bases: LanewayError

断面生成失败

Source code in dimine_python_sdk\lib\exploitation\lane_way.py
38
39
class SectionGenerateError(LanewayError):
    """断面生成失败"""

SectionParam

Bases: ParamModel

巷道断面参数

示例

SectionParam( ... type=0, ... width=2.0, ... width_up=2.0, ... wall_height=1.0, ... wide_arch_ratio=3, ... offset_x=0, ... offset_y=0, ... point_count=20, ... )

Source code in dimine_python_sdk\lib\exploitation\models.py
 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
class SectionParam(ParamModel):
    """
    巷道断面参数

    示例
    ------
    >>> SectionParam(
    ...     type=0,
    ...     width=2.0,
    ...     width_up=2.0,
    ...     wall_height=1.0,
    ...     wide_arch_ratio=3,
    ...     offset_x=0,
    ...     offset_y=0,
    ...     point_count=20,
    ... )
    """

    type: int = Field(
        ...,
        ge=0,
        le=6,
        description="断面类型:0矩形拱 1梯形拱 2圆形拱 3圆弧拱 4三心拱 5六边形拱 6自定义断面",
    )
    width: float = Field(..., gt=0, description="下宽度")
    width_up: float = Field(default=0.0, description="上宽度")
    wall_height: float = Field(..., gt=0, description="墙高。竖井也有墙高")
    wide_arch_ratio: int = Field(
        default=2,
        ge=1,
        description="宽度/拱高比",
    )
    offset_x: float = Field(default=0.0, description="X轴偏移")
    offset_y: float = Field(default=0.0, description="Y轴偏移")
    point_count: int = Field(default=20, gt=0, description="轮廓采集点数")

SingleContourModelingError

Bases: ModelingError

单轮廓线封闭为面失败

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
55
56
class SingleContourModelingError(ModelingError):
    """单轮廓线封闭为面失败"""

TwoContourModelingError

Bases: ModelingError

两轮廓线建模失败

Source code in dimine_python_sdk\lib\exploitation\contour_modeling.py
51
52
class TwoContourModelingError(ModelingError):
    """两轮廓线建模失败"""