王國崗段慶偉孫 平
(1.中國地質(zhì)大學(北京),北京 100083; 2.中國水利水電科學研究院,北京 100038)
一種基于 AutoLisp 語言快速等分任意曲線的方法
王國崗1,2段慶偉2孫 平2
(1.中國地質(zhì)大學(北京),北京 100083; 2.中國水利水電科學研究院,北京 100038)
針對三維地質(zhì)建模過程中曲線形式多樣且轉化為建模所需線條困難的問題,提出了利用AutoLisp語言定數(shù)或定距等分相應曲線的方法,并通過兩個工程實例證明,該程序具有良好的應用效果。
AutoLisp,曲線,定數(shù)等分,定距等分
三維地質(zhì)模型一般采用點、線、面、體順序構建的方式來完成,而邊是重要的元素,相當于面與面之間的“粘合劑”。在大型復雜三維地質(zhì)模型的構建,尤其在水利水電工程中,由于涉及的地質(zhì)條件復雜及水工特殊的構造形式,對線的簡化處理提出了更高的要求。本文提出了利用AutoLisp二次開發(fā)語言在AutoCAD中快速簡化任意曲線的方法,有效地提高了建模效率。
1.1 問題的提出
AutoCAD中的定數(shù)等分或定距等分以等分點的形式在等分曲線上顯示出來,并保留了該曲線。如圖1所示,直線AB長度為L,利用AutoCAD自帶定數(shù)或定距等分功能等分該直線后,等分點分別為C,D與E,F(xiàn),G。然而,這種對曲線的等分方式如用在三維地質(zhì)模型的建立中,則存在以下幾個問題:1)只存在等分點,未形成后續(xù)建模中需要的簡化曲線;2)欲通過等分處理簡化的原曲線依然存在;3)無法批量處理多條任意曲線,缺乏快捷性;4)定距等分某曲線時,等分后末端間距的處理有待討論。如圖1b)所示,按照間距d定距等分直線AB后,符合間距d等分數(shù)為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節(jié)展開。
1.2 兩種等分方式的程序處理
針對上述AutoCAD自帶等分功能的不足,尤其定距等分時出現(xiàn)的問題,在解決思路上給出了較為合理的處理。設某曲線長度為L,按照定數(shù)等分或定距等分兩種等分方式對此曲線進行處理。
1)對某曲線定數(shù)等分。設等分數(shù)為n,具體數(shù)值在程序響應的提示下輸入,則該曲線等分段數(shù)N=n,每段的長度l=L/N。以直線AB為例,該線段等分數(shù)n=3,利用程序等分后的效果如圖2所示,較好地完成了線段定數(shù)等分的功能,最終形成了使用性較強的三維多段線。
圖2 利用程序定數(shù)等分AB線段
2)對某曲線定距等分。設定距長為d,當L/d為整數(shù)時,該曲線等分段數(shù)N=L/d,每段的長度l=d。當L/d為實數(shù)時,設余數(shù)為d1,K=d1/d(0≤K≤1.0),Kd是對K的界定。當K≥Kd且L/d≥1時,該曲線最終等分段數(shù)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的等分線段數(shù)n=3。當K≥Kd且L/d≥1時,此時線段AB等分數(shù)為n+1,如圖3a)所示;當K<Kd且L/d≥1時,此時線段AB等分數(shù)為n,如圖3b)所示;當L/d<1時,此時線段AB等分數(shù)為1,如圖3c)所示。
綜上所述,將程序內(nèi)嵌在AutoCAD中,可較好地實現(xiàn)對直線等分的功能。此外,通過驗證,程序也可實現(xiàn)對其他任意曲線的等分。
1.3 等分技術路線
程序等分的技術路線如圖4所示。
圖3 利用程序定距等分線段AB
圖4 技術路線
1.4 程序的優(yōu)勢
相對于AutoCAD自帶的等分功能,本程序的優(yōu)勢如下:
1)原AutoCAD自帶(定數(shù)或定距)等分命令執(zhí)行后,只是生成等分實體點,并未完成對現(xiàn)有圖元的替換或調(diào)整,不利于在地質(zhì)模型建立中對線型的處理,編寫的程序解決了這一問題;2)可以處理的圖元線型有直線、二維或三維多段線、樣條曲線、圓弧、圓、橢圓或橢圓弧等,并可批量處理以上圖元,具有普遍的實用性和快捷性;3)所選的圖元進行定數(shù)或定距等分處理,并最終由等分實體點生成新的三維多段線,刪除原線形圖元,并改變新生成三維多段線的顏色以示區(qū)分;4)定距等分待處理圖元時,當該圖元長度與定距之比出現(xiàn)小數(shù)時,可按相應要求取相應整數(shù),以保證新形成三維多段線各個子段長度的一致協(xié)調(diào)性。
某拱壩上游面拱圈的設計曲線如圖5a)所示。不同高程的拱圈由樣條曲線來表示,由于樣條曲線上點的分布不均勻,在后續(xù)建模軟件(如ANSYS)中建立壩體時,壩體上游面很難生成。利用本文的程序?qū)⒚織l樣條曲線等分,然后對不同拱圈的相應點連線,最終形成的圖形如圖5b)所示,較好地解決了這個問題。
圖5 拱壩壩體上游面拱壩梁曲線處理示意圖
圖6a)為某地下廠房錨桿支護設計剖面圖,為快速形成如圖6b)所示的三維錨桿支護形式并將錨桿的數(shù)據(jù)導入數(shù)值計算軟件(如FLAC3D)中進行計算,可按照設計規(guī)范要求的錨桿間距將沿錨桿方向的線段定距等分,然后,在AutoCAD中將錨桿定距陣列,即可畫出三維錨桿支護圖。為得到錨桿在FLAC3D中的數(shù)據(jù),可進一步編寫相應的AutoLisp程序來實現(xiàn)。
圖6 某洞室數(shù)值計算時錨桿支護快速生成示意圖
本文利用AutoLisp語言在AutoCAD中實現(xiàn)了批量快速等分三維地質(zhì)建模中任意曲線,并形成具有普遍適用性的三維多段線的功能。該程序可對所選的圖元進行定數(shù)或定距等分處理,簡單快捷。通過快速處理壩體拱圈與廠房某部位曲線等工程實例,說明該程序行之有效,具有很好的借鑒意義。
[1] 劉志剛.AutoCAD2000 Visual LISP開發(fā)人員指南[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-),男,在讀工程碩士