APP下载

一种基于 AutoLisp 语言快速等分任意曲线的方法

2016-02-07王国岗段庆伟孙

山西建筑 2016年35期
关键词:定数图元线段

王国岗段庆伟孙 平

(1.中国地质大学(北京),北京 100083; 2.中国水利水电科学研究院,北京 100038)

一种基于 AutoLisp 语言快速等分任意曲线的方法

王国岗1,2段庆伟2孙 平2

(1.中国地质大学(北京),北京 100083; 2.中国水利水电科学研究院,北京 100038)

针对三维地质建模过程中曲线形式多样且转化为建模所需线条困难的问题,提出了利用AutoLisp语言定数或定距等分相应曲线的方法,并通过两个工程实例证明,该程序具有良好的应用效果。

AutoLisp,曲线,定数等分,定距等分

0 引言

三维地质模型一般采用点、线、面、体顺序构建的方式来完成,而边是重要的元素,相当于面与面之间的“粘合剂”。在大型复杂三维地质模型的构建,尤其在水利水电工程中,由于涉及的地质条件复杂及水工特殊的构造形式,对线的简化处理提出了更高的要求。本文提出了利用AutoLisp二次开发语言在AutoCAD中快速简化任意曲线的方法,有效地提高了建模效率。

1 程序思路

1.1 问题的提出

AutoCAD中的定数等分或定距等分以等分点的形式在等分曲线上显示出来,并保留了该曲线。如图1所示,直线AB长度为L,利用AutoCAD自带定数或定距等分功能等分该直线后,等分点分别为C,D与E,F,G。然而,这种对曲线的等分方式如用在三维地质模型的建立中,则存在以下几个问题:1)只存在等分点,未形成后续建模中需要的简化曲线;2)欲通过等分处理简化的原曲线依然存在;3)无法批量处理多条任意曲线,缺乏快捷性;4)定距等分某曲线时,等分后末端间距的处理有待讨论。如图1b)所示,按照间距d定距等分直线AB后,符合间距d等分数为n(在图中n=3),且末端GB段间距为d1。此时将AB线段n等分还是n+1等分需对GB段设定处理办法。

图1 AutoCAD中的等分方式

简要说明利用程序定距等分直线AB时的大致思路。设K= d1/d(0≤K≤1.0),并设Kd(0≤Kd<1.0),Kd的大小由程序使用者输入。当K≥Kd,AB线段n+1等分;当K<Kd,AB线段n等分。即通过Kd对K进行界定。更为详细的讨论将会在1.2节展开。

1.2 两种等分方式的程序处理

针对上述AutoCAD自带等分功能的不足,尤其定距等分时出现的问题,在解决思路上给出了较为合理的处理。设某曲线长度为L,按照定数等分或定距等分两种等分方式对此曲线进行处理。

1)对某曲线定数等分。设等分数为n,具体数值在程序响应的提示下输入,则该曲线等分段数N=n,每段的长度l=L/N。以直线AB为例,该线段等分数n=3,利用程序等分后的效果如图2所示,较好地完成了线段定数等分的功能,最终形成了使用性较强的三维多段线。

图2 利用程序定数等分AB线段

2)对某曲线定距等分。设定距长为d,当L/d为整数时,该曲线等分段数N=L/d,每段的长度l=d。当L/d为实数时,设余数为d1,K=d1/d(0≤K≤1.0),Kd是对K的界定。当K≥Kd且L/d≥1时,该曲线最终等分段数N=fix(L/d)+1,每段长度l=L/N;当K<Kd且L/d≥1时,N=fix(L/d),l=L/N;当L/d<1时,N=1,l=L/N。

以线段AB为例来说明程序定距等分的功能。当在程序中按照程序提示输入定距长d,Kd,在本例中设满足定距d的等分线段数n=3。当K≥Kd且L/d≥1时,此时线段AB等分数为n+1,如图3a)所示;当K<Kd且L/d≥1时,此时线段AB等分数为n,如图3b)所示;当L/d<1时,此时线段AB等分数为1,如图3c)所示。

综上所述,将程序内嵌在AutoCAD中,可较好地实现对直线等分的功能。此外,通过验证,程序也可实现对其他任意曲线的等分。

1.3 等分技术路线

程序等分的技术路线如图4所示。

图3 利用程序定距等分线段AB

图4 技术路线

1.4 程序的优势

相对于AutoCAD自带的等分功能,本程序的优势如下:

1)原AutoCAD自带(定数或定距)等分命令执行后,只是生成等分实体点,并未完成对现有图元的替换或调整,不利于在地质模型建立中对线型的处理,编写的程序解决了这一问题;2)可以处理的图元线型有直线、二维或三维多段线、样条曲线、圆弧、圆、椭圆或椭圆弧等,并可批量处理以上图元,具有普遍的实用性和快捷性;3)所选的图元进行定数或定距等分处理,并最终由等分实体点生成新的三维多段线,删除原线形图元,并改变新生成三维多段线的颜色以示区分;4)定距等分待处理图元时,当该图元长度与定距之比出现小数时,可按相应要求取相应整数,以保证新形成三维多段线各个子段长度的一致协调性。

2 工程应用

某拱坝上游面拱圈的设计曲线如图5a)所示。不同高程的拱圈由样条曲线来表示,由于样条曲线上点的分布不均匀,在后续建模软件(如ANSYS)中建立坝体时,坝体上游面很难生成。利用本文的程序将每条样条曲线等分,然后对不同拱圈的相应点连线,最终形成的图形如图5b)所示,较好地解决了这个问题。

图5 拱坝坝体上游面拱坝梁曲线处理示意图

图6a)为某地下厂房锚杆支护设计剖面图,为快速形成如图6b)所示的三维锚杆支护形式并将锚杆的数据导入数值计算软件(如FLAC3D)中进行计算,可按照设计规范要求的锚杆间距将沿锚杆方向的线段定距等分,然后,在AutoCAD中将锚杆定距阵列,即可画出三维锚杆支护图。为得到锚杆在FLAC3D中的数据,可进一步编写相应的AutoLisp程序来实现。

图6 某洞室数值计算时锚杆支护快速生成示意图

3 结语

本文利用AutoLisp语言在AutoCAD中实现了批量快速等分三维地质建模中任意曲线,并形成具有普遍适用性的三维多段线的功能。该程序可对所选的图元进行定数或定距等分处理,简单快捷。通过快速处理坝体拱圈与厂房某部位曲线等工程实例,说明该程序行之有效,具有很好的借鉴意义。

[1] 刘志刚.AutoCAD2000 Visual LISP开发人员指南[M].北京:中国电力出版社,2001.

[2] 马永志.AutoCAD中文版三维造型基础教程[M].北京:人民邮电出版社,2009.

A method of fast dividing arbitrary curve based on AutoLisp language

Wang Guogang1,2Duan Qingwei2Sun Ping2
(1.China University of Geosciences(Beijing),Beijing 100083,China; 2.China Water Resources and Hydropower Research Institute,Beijing 100038,China)

In order to solve the problem that the curves is difficult to be transformed into modeling in the process of 3D geological modeling,a method of using AutoLisp language to determine the corresponding curve is given.Through two engineering examples,shows that the program has achieved very good results.

AutoLisp,curve,divide,measure

TP319

A

1009-6825(2016)35-0257-02

2016-09-30

王国岗(1988-),男,在读工程硕士

猜你喜欢

定数图元线段
双定数混合截尾下两参数Pareto分布的统计分析
画出线段图来比较
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
食有定数
怎样画线段图
我们一起数线段
这边日落
数线段
基于Qt绘图系统的图形应用优化研究与实现