王國崗段慶偉孫 平
(1.中國地質大學(北京),北京 100083; 2.中國水利水電科學研究院,北京 100038)
一種基于 AutoLisp 語言快速等分任意曲線的方法
王國崗1,2段慶偉2孫 平2
(1.中國地質大學(北京),北京 100083; 2.中國水利水電科學研究院,北京 100038)
針對三維地質建模過程中曲線形式多樣且轉化為建模所需線條困難的問題,提出了利用AutoLisp語言定數或定距等分相應曲線的方法,并通過兩個工程實例證明,該程序具有良好的應用效果。
AutoLisp,曲線,定數等分,定距等分
三維地質模型一般采用點、線、面、體順序構建的方式來完成,而邊是重要的元素,相當于面與面之間的“粘合劑”。在大型復雜三維地質模型的構建,尤其在水利水電工程中,由于涉及的地質條件復雜及水工特殊的構造形式,對線的簡化處理提出了更高的要求。本文提出了利用AutoLisp二次開發語言在AutoCAD中快速簡化任意曲線的方法,有效地提高了建模效率。
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)定距等分待處理圖元時,當該圖元長度與定距之比出現小數時,可按相應要求取相應整數,以保證新形成三維多段線各個子段長度的一致協調性。
某拱壩上游面拱圈的設計曲線如圖5a)所示。不同高程的拱圈由樣條曲線來表示,由于樣條曲線上點的分布不均勻,在后續建模軟件(如ANSYS)中建立壩體時,壩體上游面很難生成。利用本文的程序將每條樣條曲線等分,然后對不同拱圈的相應點連線,最終形成的圖形如圖5b)所示,較好地解決了這個問題。

圖5 拱壩壩體上游面拱壩梁曲線處理示意圖
圖6a)為某地下廠房錨桿支護設計剖面圖,為快速形成如圖6b)所示的三維錨桿支護形式并將錨桿的數據導入數值計算軟件(如FLAC3D)中進行計算,可按照設計規范要求的錨桿間距將沿錨桿方向的線段定距等分,然后,在AutoCAD中將錨桿定距陣列,即可畫出三維錨桿支護圖。為得到錨桿在FLAC3D中的數據,可進一步編寫相應的AutoLisp程序來實現。

圖6 某洞室數值計算時錨桿支護快速生成示意圖
本文利用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-),男,在讀工程碩士