楊雙富
(云南一九八煤田地質(zhì)勘探隊(duì),云南昆明 650208)
為AutoCAD新增三種畫圓弧的方式
楊雙富?
(云南一九八煤田地質(zhì)勘探隊(duì),云南昆明 650208)
在AutoCAD中,利用Visual LISP作為二次開發(fā)工具,為其增加已知弧長(zhǎng)及弦長(zhǎng)、已知弦長(zhǎng)及弓高、已知弧長(zhǎng)及弓高繪制圓弧的3種方式,解決了這3種已知條件下求圓弧半徑及畫圓弧的難題。
Visual LISP;圓??;非線性方程;牛頓迭代法;二次開發(fā)
已知弧長(zhǎng)及弦長(zhǎng)、已知弦長(zhǎng)及弓高、已知弧長(zhǎng)及弓高求圓弧半徑不僅是計(jì)算幾何的問題,也是工程設(shè)計(jì)和施工中常遇到的問題,由于列出求解的方程中含有三角函數(shù),為非線性方程,采用常規(guī)算法很難求解。AutoCAD是目前使用率最高的計(jì)算機(jī)輔助設(shè)計(jì)軟件之一,它根據(jù)圓弧的起點(diǎn)、終點(diǎn)、圓心、半徑、圓心角等基本參數(shù)有效組合,一共提供了10種不同繪制圓弧的方式,基本滿足用戶的需求,但其中卻沒有上述3種已知條件下繪制圓弧的方法,為此文中利用Visual LISP作為二次開發(fā)工具,按非線性方程的牛頓迭代法編程解算出圓心角、半徑,并實(shí)現(xiàn)了圓弧的高精度繪制。
2.1 根據(jù)已知條件,求解半徑方程
任取一圓弧如圖1所示,P1、P2為圓弧的起點(diǎn)和止點(diǎn),P1、P2間的弧長(zhǎng)為L(zhǎng),弦長(zhǎng)為C,圓弧的弓高為h,設(shè)圓弧的半徑為R,所對(duì)應(yīng)的圓心角為x,根據(jù)已知弧長(zhǎng)L及弦長(zhǎng)C、弧長(zhǎng)L及弓高h(yuǎn)、弦長(zhǎng)C及弓高h(yuǎn)三個(gè)條件,則求半徑及圓心角的相應(yīng)方程組見表1第2行,因圓心角x在0~2π之間,為方便后述選取迭代初值,故按消元法消去半徑R,得到以圓心角為未知數(shù)的一元非線方程列入表1中的第3行。
圖1 圓弧示意圖
求解圓心角方程式 表1
2.2 圓心角、半徑求解
由于列出求解圓心角的方程中含有三角函數(shù),為非線性方程,根據(jù)牛頓迭代法,其求解的迭代計(jì)算式如下:
式中的f(xi)、f′(xi)見表1,迭代精度取ε=10-10,當(dāng)?shù)Y(jié)束后,按表1中最后一行計(jì)算半徑。
2.3 迭代初值選取
根據(jù)牛頓迭代法解非線性方程初值選取規(guī)則[f(x0)f″(x0)〉0],經(jīng)分析和測(cè)試,初值選取表中倒數(shù)第二行的數(shù)據(jù)時(shí),迭代均收斂,可較為精確地解算出圓心角,從而精確地計(jì)算出半徑。
3.1 畫圓弧的步驟
(1)由已知數(shù)據(jù),按牛頓迭代法解算出圓弧的圓心角,并計(jì)算出半徑;
(2)任選一點(diǎn)P1作為圓弧的起點(diǎn),根據(jù)已知數(shù)據(jù)和已解算出圓心角、半徑,按圓弧起點(diǎn)至止點(diǎn)的角度為0、距離為弦長(zhǎng)計(jì)算出止點(diǎn)P3,再由P1點(diǎn)、P3點(diǎn)及弓高計(jì)算圓弧的中點(diǎn)P2;
(3)以三點(diǎn)畫圓弧命令繪出圓弧,并以P1點(diǎn)為旋轉(zhuǎn)中心,動(dòng)態(tài)將圓弧旋轉(zhuǎn)到指定的止點(diǎn)方向。
3.2 Visual LISP程序
(1)將上述Visual LISP程序以文件名arc1.lsp保存;
(2)啟動(dòng)AutoCAD,將arc1.lsp加載;
(3)在命令行鍵入arc1并回車,按照提示輸入數(shù)據(jù)就可進(jìn)行計(jì)算和繪制圓弧,如表2為圓弧的已知數(shù)據(jù),表3為計(jì)算出的圓弧半徑;
圓弧已知數(shù)據(jù) 表2
計(jì)算出的圓弧半徑 表3
(4)以下為YH3按弧長(zhǎng)弓高繪制圓弧的操作過程及所繪圓弧與原圓弧特性截圖。
圖2 圓弧特性截圖
(1)在已知弧長(zhǎng)及弦長(zhǎng)、已知弦長(zhǎng)及弓高、已知弧長(zhǎng)及弓高以及選擇適當(dāng)初值的條件下,以Visual LISP作為開二次發(fā)工具,按非線性方程的牛頓迭代法編程解算圓心角并計(jì)算出半徑的方法,不但收斂速度很快而且準(zhǔn)確,從而實(shí)現(xiàn)了圓弧的高精度繪制,是對(duì)Auto-CAD圓弧繪制功能的有益補(bǔ)充。
(2)限于篇幅,程序中未對(duì)輸入的數(shù)據(jù)有效性(即能否組成圓弧)、繪制圓弧的順或逆時(shí)針方向等細(xì)節(jié)進(jìn)行處理,請(qǐng)讀者自行完善。另外,也可為這種繪制圓弧方法創(chuàng)建菜單或工具欄按鈕,以方便操作,提高效率和精度。
[1]翟瑞彩,謝偉松.數(shù)值分析[M].天津:天津大學(xué)出版社,2000
[2]段紅梅,周明,胡仁喜等.AutoCAD 2000(中文版)自學(xué)教程[M].北京:清華大學(xué)出版社,2000
[3]孫江宏,丁立偉,米潔.Visual LISP R14~2000編程與應(yīng)用[M].北京:科學(xué)出版社,1999
AutoCAD Drawing for the New Arc Three Kinds of Ways
Yang ShuangFu
(198 coal geological exploration teams in Yunnan,Yunnan 650208,China)
In the AutoCAD,using Visual LISP as a secondary development tools,known for its increase in arc length and chord length,chord length and arch of known high,known to draw the circular arc and bow-h(huán)igh three ways,resolved under the conditions of these three are known to seek arc radius and arc drawing problems.
Visual LISP;arc;non-linear equations;Newton's iterative method;secondary development
1672-8262(2010)03-113-03
P209
B
2009—10—16
楊雙富(1967—),男,高級(jí)工程師,主要從事工程測(cè)量工作。