利用AutoLISP进行二井定向导线解析计算

2021-03-07 09:12:54刘吉波任传建王志红
电子技术与软件工程 2021年19期
关键词:定向井对话框定向

刘吉波 任传建 王志红

(贵州工程应用技术学院矿业工程学院 贵州省毕节市 551700)

1 引言

矿山联系测量中的二井定向井下导线计算,从根本上讲属于无定向导线解算范畴。林广元提出了3种无定向导线的平差计算方法,并分别对其精度进行了研究[1],田正华等研究了采用四参数转换模型解算两井定向井下导线的方法[2],沙从术等研究了利用AutoCAD图解计算两井定向导线的原理与方法,并通过实例验证了结果的可靠性[3]。本文拟在此基础上利用AutoLISP进行二次开发,实现井下无定向导线的自动解析计算。

2 程序设计思想

2.1 起算数据和观测数据

二井定向井下导线示意图如图1所示,图中#1、#2为井筒钢丝投影点,坐标已知,P1、P2…Pn为井下导线点。观测值为每一条边的边长和导线前进方向上的每一个左角。程序首先输入二个已知点坐标、观测的边长和角度,程序支持通过文件自动输入和对话框手动输入两种数据输入模式。

图1:二井定向井下导线图

2.2 数据设计

AutoCAD软件默认绘图坐标系为世界坐标系,即笛卡尔坐标系,二井定向数据为高斯平面直角坐标系,AutoLISP读取坐标数据时自动将点的X坐标和Y坐标进行互换,最终解析校正后坐标成果输出时,再次调换X、Y坐标,输出各测点的测量坐标。

假设井下共n个导线点,无定向导线共有n+2个测点,n+1条边,n个左角。#1坐标存于表变量Pb,#2坐标存于表变量Pe,边长存于表listtraverses中,角度存于表listangles中。

为减少后续编程难度,提高程序计算效率,无定向导线计算绘制时,#1坐标使用给定已知坐标,边#1-P1的方位假定为90°00′00″,即在AutoCAD中,边#1-P1指向X轴正向。

推算导线边的方向存储于表directions中,各导线点计算坐标存储于表pointsxy中,利用“pline”命令绘制导线,完成了导线解析。分别计算导线缩放系数m和旋转角θ,并依次使用“scale”和“rotate”命令对导线进行缩放和旋转,即完成了导线校正。最后从导线中提取坐标信息并输出至文件保存。

2.3 程序流程图

二井定向井下导线解析校正程序流程图如图2所示。

图2:程序流程图

3 程序界面设计

3.1 菜单项设计

利用记事本或其他文本编辑软件编写程序菜单项,并保存为twominemenu.mnu文件,菜单文件内容如下[4]:

***MENUGROUP=TWOMINE

***POP1

[二井定向]

[解析计算]^C^C(load "twomine");(twomine)

[保存数据]^C^C(load "savedata");(savedata)

其中,load后的字符串为点击菜单项要加载的AutoLISP程序,最后括号中为实际调用执行的函数名称。在AutoCAD命令行中通过“menuload”命令可以加载自定义的菜单,加载成功后系统菜单如图3所示,twominemenu.mnu文件中定义的菜单项插入在AutoCAD主菜单之后。

图3:自定义菜单项

3.2 输入数据对话框设计

为了方便二井定向测量数据输入,利用对话框控制语言DCL(Diglogue Control Language)设计对话框如图4所示[5-6]。通过输入模式单选按钮,可以选择数据加载模式,执行文件输入时,会自动将数据显示在对话框相应控件中,可以进行检查和修改操作。以下以对话框最下部的三个按钮为例说明AutoLISP中如何进行DCL设计。

图4:数据输入对话框

在AutoLISP程序中通过上述代码为“加载数据”和“解析计算”按钮添加响应事件,“退出”按钮执行程序默认事件,不用单独添加。action_tile建立了控件和事件之间的联系,“load”“count”为控件变量名称,loaddata和countdata为单击按钮时调用的函数,(done_dialog 1)作用是在点击“解析计算”按钮后,退出对话框,并返回数值1,供后续程序使用。

4 无定向导线解析和校正

4.1 井下导线绘制

在AutoLISP中可以使用polar函数计算点位坐标,其调用语法为(polar ptangdist),参数pt为一个二维或三维的点,即边的起点;ang是边的方向,从X坐标轴正向沿逆时针至计算边的角度,单位是弧度;dist是边的长度;返回值为边的末端点坐标[6]。根据后一条边Pi-1-Pi的方向和给定的角度∠Pi-1PiPi+1推算前一条边Pi-Pi+1的方向是自动展绘测点的关键。为此设计一子函数实现这一功能,代码如下:

函数direction的第一个参数tback是后一条边的方向,angle是两条边之间的夹角(左角),返回值是前一条边的方向tbefore,计算的原理如图5所示。从图5可知,Pi-Pi-1的方向值等于tback加上π,Pi-Pi+1的方向值等于Pi-Pi-1的方向值减去angle。如果tbefore大于2π,则从中减去2π,如果tbefore小于0.0,则加上2π。

图5:方向推算原理图

推导出每条边的方向值,则容易算得每个点的坐标。根据所有点坐标,绘制多段线,并获取多段线图元的句柄,供校正之用。绘制导线的AutoLISP代码如下:

4.2 导线校正

利用AutoLISP的函数distance和angle,根据#1和#2给定的坐标值可以得到钢丝间真实的长度D12和方向值T12,根据解析计算的#1和#2的坐标值可以得到钢丝间解析长度D12′和方向值T12′。导线校正时,缩放系数m=D12/D12′,旋转角度θ=T12-T12′。调用rotate和scale命令,以#1为基点对导线进行旋转和缩放操作,即可完成导线校正,AutoLISP代码为:

;pm1为#1坐标,entlast为多段线图元

;的句柄

(command "rotate" (entlast) "" pm1 theta)

(command nil);结束rotate命令

(command "scale" (entlast) "" pm1 m)

(command nil);结束scale命令

4.3 获取坐标信息

对导线进行解析和校正后,利用AutoLISP可以得到各点最终坐标,代码如下:

5 程序应用

以《测量学》教材中的实例的部分数据[7],利用上述AutoLISP程序实现如下:

5.1 编写测量数据文件

钢丝坐标

X1 609967.758

Y1 507993.557

X2 609924.779

Y2 508044.026

井下点个数5

角度

86.28202

155.08552

116.08355

328.11343

201.31569

边长

15.9132

37.9229

13.8807

17.2131

19.6327

13.7574

5.2 解析计算

通过AutoLISP程序解析校正,生成图形如图6所示,生成结果数据文件内容如下。

图6:解析校正后的导线图形

两井定向解析结果:

#1, 609967.758, 507993.557

P1, 609953.146, 507987.256

P2, 609940.300, 508022.936

P3, 609941.522, 508036.763

P4, 609957.582, 508042.957

P5, 609938.292, 508046.608

#2, 609924.779, 508044.026

6 结论

采用AutoLISP程序设计语言和DCL在AutoCAD平台上进行了二次开发,实现了二井定向无定向导线的可视化输入及自动解析校正,并以具体实例进行了验证。结果表明,程序操作简单,便捷,直接成图并输出计算成果,可为利用AutoCAD二次开发解决其他测量问题提供参考。

猜你喜欢
定向井对话框定向
正常恢复虚拟机
Bootlace Worms’Secret etc.
中学科技(2018年12期)2018-12-19 11:22:28
偏序集上的相对定向集及其应用
大庆油田大斜度定向井录井油气显示识别方法
录井工程(2017年3期)2018-01-22 08:40:14
定向越野
油田定向井数据矫正方法研究
定向驯化筛选耐毒酵母
层状砂岩油藏水平井与定向井适应性探讨
断块油气田(2013年2期)2013-03-11 15:32:52
快速抓取对话框中的完整信息
电脑迷(2012年22期)2012-04-29 20:30:54
定向井压裂前的射孔方位优化设计
断块油气田(2012年5期)2012-03-25 09:53:49