基于Dynamo的矿井巷道参数化建模
2022-10-24李雯静焦宇豪张馨心任大军
李雯静 焦宇豪 邱 莉 张馨心 任大军
(1.武汉科技大学资源与环境工程学院,湖北 武汉 430081;2.冶金矿产资源高效利用与造块湖北省重点实验室,湖北 武汉 430081)
地下矿山的三维建模、可视化表达以及空间分析是提高地下矿山现代化管理水平的重要手段。近年来,计算机辅助设计技术以及三维可视化技术的迅猛发展促进了矿山三维建模水平的大幅提升[1-4]。地下矿山三维建模工作中,巷道和地层这两类空间目标是测绘工作者主要面对的设计对象。其中,巷道是在地表与矿体之间钻凿出的用于运矿、通风、排水、行人以及为冶金设备采出矿石新开凿的各种通路[5-6]。作为数字矿山建设的基础,由巷道构成的复杂网络系统模型对于矿山虚拟场景的实现显得尤为重要。巷道三维模型能便捷而又直观地显示井下布局。准确的巷道三维模型既可以为矿山管理人员和生产工人提供更为全面的巷道空间结构与位置信息,又可开展相关的空间分析,为人员作业、避难救灾、井下运输及通风等工作提供辅助和参考。因此,如何快速准确地构建出矿井巷道的三维可视化模型是数字矿山领域的一个重要研究课题。
近年来,许多学者从不同角度对矿井巷道三维建模进行了深入研究,如刘杰等[7]提出了一种基于近景摄影测量技术的地下巷道三维建模方法来构建拍摄目标的三维模型;史瑶[8]研究了基于草图输入的煤矿巷道模型生成方法;石信肖等[9]基于三维激光扫描技术获取数据点云对煤矿巷道进行了精细三维建模。这些研究在巷道三维建模方面实现了一定程度的自动化,但对模型复用性问题的研究还不够深入,即对已构建模型进行编辑修改时过程较为繁琐。同时,国内外科研机构和企业先后开发了一系列矿业类建模软件,如Dimine、3Dmine和Surpac等。这些产品可以实现矿山巷道的三维可视化设计,但在三维模型持续拓展和修改的功能上还有待加强。综上所述,针对井下巷道工程的参数化建模方法和技术还有待进一步深入研究。
当前,建筑信息模型(Building Information Modeling,BIM)技术发展势头迅猛,为井巷工程三维建模与可视化漫游提供了新的技术支撑[10-12]。AutoDesk公司的Revit平台是一款国内应用较多的BIM软件,但针对复杂曲线和变化曲面,应用Revit进行直接建模的局限性日益凸显。Dynamo作为Revit中的一款可视化编程插件,能使用户通过编程的方式实现个性化的建模功能,可以弥补Revit在设计上的局限性。结合参数化建模思路,Dynamo更加注重提高建模效率与模型的复用程度,已有学者将其广泛应用于桥梁、公路、隧道等结构物的建模[13-16]。本研究结合矿山巷道的空间结构特点,借助Dynamo探索对巷道三维模型的参数化设计和自动化建模,为矿山信息系统中辅助井巷工程掘进路线选择、巷道模型可视化设计、施工过程中的重难节点标注以及后期运营维护等功能的实现提供技术支持。
1 Dynamo可视化编程
Dynamo作为一种可视化的编程工具,用户能够直观地编写行为脚本,通过自定义逻辑片段并使用文本编程语言来进行建模。在建模过程中,Dynamo的可视化编程语言通过在工作空间中连接相关功能节点来设置一套结构清晰的程序流(算法),并通过输入、处理和输出这一系列基本逻辑操作来解决几何设计、参数提取及工作流程自动化等问题。
Dynamo功能节点由节点名称、输入项、输出项和连缀图标4个部分组成(图1),通过组织连接预先设计的各节点表达数据处理的逻辑,生成一个可执行的程序。Dynamo中存在一些内置常用功能节点,如Point(点创建)、Curve(曲线创建)、Surface(曲面创建)、Extend(拉伸)、Loft(放样)等,可实现点、线、面的创建以及对几何形体的拉伸、放样等操作。此外,Dynamo还允许用户利用Python语言编写一些能实现具有复杂功能需求的自定义节点并加入到现有节点库。图1所示为利用程序创建的一个线段坐标读取的自定义节点,通过输入存取有坐标数据的文件路径及表名(输入项),可实现生成线段起始点及方向向量(输出项)的功能。
图1 Dynamo自定义功能节点Fig.1 Custom function node in Dynamo
根据矿井巷道三维建模需求,利用Dynamo编写程序能更高效地实现数据批量处理、巷道中心线构建、巷道断面构建、快速放置巷道段等功能,达到巷道快速精准建模的目标。另外,通过编写代码的方式对已构建模型进行参数修改更加便利,有利于实现模型复用,大幅节约建模成本,提高建模效率。
2 巷道三维建模技术路线
目前,巷道三维模型的构建方法有多种思路[17],其中较为常用的是基于巷道中心线加载断面的方式。即通过表示巷道走向的中心线,在线的控制点处计算断面各点坐标得到巷道断面,然后通过三角化得到巷道三维模型。本研究在上述基础上做出改进,提出了基于Dynamo的巷道参数化建模方法,将巷道段分为断面形状发生变化(复合断面巷道)和不发生变化(单一断面巷道)两种情况,分别采用不同的方式进行建模。利用Dynamo对巷道进行参数化建模的详细流程如图2所示。
图2 巷道参数化设计流程Fig.2 Parametric design process of roadway
3 Dynamo巷道参数化建模方法
作为矿山地下开采的主要通路以及地下运矿、通风、排水等行为的主要发生场所,地下巷道的设计施工是矿山建设工程中的重点,其工程质量的优劣程度会对井下作业环境和生产效率产生直接影响,因此,有必要在巷道工程生命周期的初始阶段从整体上把握地下巷道的空间结构与布局。本研究利用Dynamo对矿井巷道三维模型进行快速构建,主要包括巷道中心线构建、断面参数族构建以及巷道段模型生成及耦合连接等内容。
3.1 巷道中心线构建
矿井巷道在水平方向上投影的几何中线称为巷道中心线,中心线之间相互连接构成的巷道网络决定了巷道在井下的空间位置以及巷道间的拓扑关系。本研究主要利用Dynamo中的PolyCurve(多段线)和NurbsCurve(样条曲线)节点构建巷道中心线。通过将录入的起始导线点坐标相连,形成表征巷道走向的线模型。巷道中心线构建主要包含数据识别及坐标转换两个步骤。
3.1.1 中心线数据识别
首先在CAD软件中提取DWG格式巷道中心线文件中的控制点坐标文件;然后利用Dynamo中的Data.ImportExcel(数据导入)节点将坐标文件导入到Dynamo中,并将此节点与图1中的自定义功能节点匹配实现巷道中心线数据的识别获取。
3.1.2 中心线坐标转换
通过PolyCurve和NurbsCurve节点构建曲线是Dynamo中生成曲线的常用方法。前者可根据输入点的顺序依次将导线点连接起来形成曲线,后者则是通过在各控制点之间插值的方法创建样条曲线。在Dynamo中生成巷道中心线时,长直巷道常选择Poly-Curve节点构建曲线的方式,对巷道拐角处的圆滑处理则会选用NurbsCurve节点方式。由于巷道实际导线坐标值一般较大,而Dynamo中模型单位的数量级较小,试验时通过式(1)的坐标转换公式对原始坐标数据进行等比例缩小。将转换后的相对坐标代替原始坐标添加到多段线或样条曲线节点中,完成巷道中心线模型构建(图3)。
图3 巷道中心线模型Fig.3 Centerline model of roadway
式中,x'1,x'2,…,x'n和x1,x2,…,xn分别为巷道中心线原始坐标和转换后的相对坐标;A为转换矩阵。
3.2 断面参数族构建
作为巷道三维模型的基础元参数,断面建模是巷道模型设计的基础和关键。矿井巷道的断面形状通常有圆形、梯形、半圆拱形等,可以在二维平面内对其进行设计。从与中心线的位置关系来看,巷道断面是指垂直于巷道中心线的巷道横断面。巷道的空间形态在巷道断面形式的影响下,主要在形状、宽度、高度三方面表现出差异。
根据巷道断面形状是否规则,分两种情况构建断面模型。对于形状规则的断面,可直接利用Dynamo中的巷道断面模型库进行构建;对于形状不规则的断面,则需要通过自定义节点创建新的构模设置,并将其添加到参数族库中。
根据巷道断面尺寸的变化,可以利用断面参数族方法进行建模设计。通过提取相应的断面模型并输入对应参数完成巷道断面建模。为适应各种类型断面的自动化建模要求,本研究采用经典的三元组形式(拱形圆弧半径r,巷道底面宽度w,巷道直壁高度h这3个参数)表示不同断面形状。由于半圆拱形在实际工程中被广泛应用,故本研究以半圆拱形为例构建断面参数族,主要步骤包括巷道断面点细化和Python Script断面构建。
3.2.1 巷道断面点细化
为使构建的断面模型更接近真实巷道断面,需要对巷道断面点进行细化处理。参考面为XOZ平面,以巷道中心线上的一个节点O为坐标原点,设断面底板及顶板圆弧上细化点数为n,n越大可以表示顶板圆弧的细节层次越多,相应的模型数据量也越大。底板及顶板圆弧上的细化点分别用序号1,2,3,…,(n -1),n进行标识,除了起始点与终止点外,其余细化点均在顶板圆弧上。通过式(2)(起始点计算式)、式(3)(顶板圆弧上细化点计算式)、式(4)(终止点计算式)可分别推算断面各点的坐标:
式中,x,y,z为巷道断面上各细化点的三维坐标值;w为巷道底面宽度;h为巷道直壁高度;r为拱形圆弧的半径;n为断面细化点个数;i为对应坐标点的编号,i∈[2 ,n-1]。
当n=15时,断面细分情况如图4所示。1#点和15#点分别为断面底板的起始点和终止点,2#~14#点为断面顶板圆弧上按角度均匀分布的点。
图4 拱形巷道断面细分示意Fig.4 Subdivision schematic of arch roadway section
3.2.2 Python Script断面构建
Dynamo作为一种可视化编程插件,仅依赖于Dynamo的内置节点进行断面设计及建模存在一定的局限性。Python Script是Dynamo中一个带有Python编程语言的节点,可根据此节点编写程序解决数据处理、逻辑判断、循环嵌套等复杂问题,定制个性化功能。
在计算出巷道断面的细化点坐标后,利用上述Python Script节点进行编辑。Python Script节点能够扩展输入接口的规模。借助于Python Script节点的开放性,可完成对不同形状巷道断面参数族的构建。其中半圆拱形断面的建模流程如图5所示。
3.3 巷道段模型生成
本研究根据巷道断面形状的复杂性,将巷道模型分为单一断面巷道和复合断面巷道两种,分别构建相应的模型。
3.3.1 单一断面巷道段建模
单一断面巷道段是指在掘进过程中断面没有发生形状变化的巷道段。这种情况只需在巷道的起始点插入巷道断面模型并沿中心线移动至终止点就能完成巷道三维建模。具体步骤为:①依据巷道中心线控制点的三维坐标值构建巷道中心线,并提取巷道段起始点坐标;②根据3.2节所述巷道断面参数族的设计流程选定巷道断面形式及相关尺寸参数;③将巷道断面从起始点沿巷道中心线方向移动至终止点得到单一断面巷道段的三维模型。半圆拱形断面类型巷道的建模效果如图6所示。
图6 单一断面巷道建模效果Fig.6 Modeling effect of single section roadway
3.3.2 复合断面巷道段建模
巷道断面有时为满足工程需要或者由于周围岩层力学性质的变化在设计时会变更形状样式,这一类巷道即为断面发生变化的巷道或者复合断面巷道。复合断面形态多样,本研究以同时具有拱形和梯形两种断面形态的巷道段为例,其建模步骤如下:
(1)圆滑处理。由于断面发生变化的情况常出现在巷道的拐角处,为了使两种不同形态的断面能很好地连接在一起,首先需要对两个断面结合处进行圆滑处理。在Dynamo中利用NurbsCurve节点在巷道拐角处中心线的控制点间进行插值处理。圆滑处理后与原始的转弯半径会存在一定的误差,可通过增加实测导线点个数进行拟合优化。
(2)选择断面类型。经圆滑处理后,分别在巷道中心线起点处加载拱形巷道断面,在终点处加载梯形巷道断面。
(3)沿中心线放样。将两种不同类型的断面沿巷道中心线放样得到巷道三维模型。经过圆滑处理后的拐角处复合断面巷道段建模效果如图7所示。
图7 复合断面巷道建模效果Fig.7 Modeling effect of compound section roadway
4 巷道参数化模型构建试验
4.1 巷道交岔点建模
巷道交岔点处理是巷道三维建模过程中的难点。巷道的某个节点连接多条巷道时,在巷道交岔处容易出现重叠或者错切现象,因此实现交岔点的无缝连接与贯通是三维巷道建模的关键。巷道交岔点需要与各相连巷道端口完全闭合,在交岔处建立一个沟通所有连接巷道端口的节点模型。本试验基于Dynamo可视化程序与布尔运算算法,分水平交岔及倾斜交岔两种情况对巷道交岔节点进行建模。
巷道交岔节点建模时首先在每个节点处将巷道分为直巷和交岔节点两部分;然后对巷道的直巷和交岔节点分别建模,直巷的建模分解效果如图8(a)所示。根据建模算法在交岔节点处生成交岔节点模型,如图8(b)所示。
图8 直巷及交岔节点分解示意Fig.8 Decomposition schematic of straight roadway and intersection node
通过Dynamo编写可视化程序,对上述2个模型采用布尔运算算法实现水平交岔点的贯通,建模效果如图9所示。
图9 水平交岔巷道模型Fig.9 Horizontal intersection roadway model
倾斜巷道的两个断面位于不同高程位置,巷道与水平面间存在一定坡度,随着坡度的增大,倾斜巷道的顶板面与底板面之间的距离变小,在交岔点处断面连接会出现异常。在水平交岔巷道建模方法的基础上,将倾斜巷道断面旋转一定角度使其与巷道中线平行,构建的倾斜巷道交岔模型如图10所示。
图10 倾斜交岔巷道模型Fig.10 Inclined intersection roadway model
4.2 巷道模型快速构建
本研究以国内某金属矿区8-11中段内部分区域的导线控制点三维坐标、断面参数及巷道位置信息为试验数据,通过前文所述方法在Dynamo中构建巷道的三维参数化模型。根据3.1节所述的坐标转换公式对导线控制点进行坐标转换,转换后部分导线控制点的相对坐标如表1所示,此时考虑的是单位长度,在工程中可根据实际测量时的数据值进行单位换算。
表1 导线控制坐标(部分)Table 1 Traverse control coordinates(part)
本研究参数化模型构建步骤为:①在CAD软件中提取DWG格式巷道中心线文件中的控制点坐标文件;②在Dynamo中读取坐标数据文件并构建表征巷道空间走向的巷道中心线模型;③利用Dynamo中的Python Script节点构建巷道断面参数族;④依据断面形状的变化情况将巷道段分为断面形状未变化的简单巷道段和断面形状变化的复杂巷道段,采用不同的方式建模,即简单巷道段采取断面沿中心线方向扫描的方式进行建模,断面变化巷道段则经过圆滑处理后,通过两变化断面间放样的方式进行建模;⑤将各巷道段进行耦合连接并对交岔点进行处理,最终实现矿井巷道的参数化建模。
在Dynamo中按照上述步骤进行编程,导入巷道数据并运行程序。巷道建模效果如图11所示,图左右两侧分别为不同细节层次的巷道三维模型。基于本研究建模方法,通过程序自动化地完成了平巷、斜井、竖井建模以及巷道交岔节点模型的圆滑处理与无缝拼接。
图11 巷道参数化建模效果Fig.11 Effect of roadway parametric modeling
4.3 巷道参数模型复用
在实际井巷工程中,为满足矿山不同工作部门的使用需求,并顾及到地质构造和施工要求不断改变的影响,巷道断面形状也会随之变化。因此,巷道模型的构建不仅要满足矿山开采生命周期内不同阶段对巷道空间形态的正确表达需求,还应该保证巷道模型在时空变换中的一致性,提高参数模型的复用性是解决这一问题的重要途径。
参数化建模的优势在于实现参数驱动模型以及模型复用,提高建模效率。本研究利用Dynamo对巷道模型进行参数化设计,通过参数来控制巷道模型的几何形状和尺寸大小,实现模型的快速动态调整。
试验中以一个长度为10个单位长度、断面尺寸为2个单位长度的直壁拱形巷道为例(图12(a)),通过对巷道长度、断面尺寸两个参数节点对其进行调整(长度调整为15个单位长度、断面尺寸调整为1个单位长度),实现对巷道模型设计的更改。经过参数调整后,巷道模型的形状和尺寸都得到了修改(图12(b))。
图12 模型样式参数化调整Fig.12 Parametric adjustment of model style
将该思路应用到整个巷道系统的建模中,利用参数驱动方式对巷道模型进行系统地编辑更新,不仅可以根据不同生产阶段的需要快速完成巷道模型的设计和修改,还可以减少因为重复建模带来的错误和误差。
5 结 论
本研究基于Dynamo可视化编程技术,对巷道模型的参数化构建方法进行了初步探索。通过程序对巷道模型进行几何参数驱动,可以更快完成巷道的三维设计优化,实现巷道三维模型的自动化创建。试验结果反映出研究方法在巷道三维模型构建中的优势体现在以下几个方面:
(1)通过Python Script节点进行脚本编写创建巷道断面参数族,可以充分利用Dynamo与编程语言结合的适应性与开放性。
(2)通过导入坐标数据、设置断面参数、加载中心线节点等关键步骤完成巷道自动化建模流程,该过程直观且具有较强的逻辑性。
(3)通过布尔运算相关功能节点编写可视化程序,可以实现巷道的无缝连接与交岔点贯通处理,调整后的巷道交岔模型贯通效果较好。
(4)通过调整建模参数实现模型的修改与更新,提升了建模效率和模型复用性。