畢英建 丁玲玲 韓世展 曹程溪 丁克會
摘要:利用AutoCAD內(nèi)嵌的Visual LISP語言進(jìn)行三維函數(shù)曲線交互式對話框程序設(shè)計,幫助使用者繪制各種三維、二維公式函數(shù)曲線,可方便快速地分析函數(shù)參數(shù)對曲線形狀的影響,擴充了AutoCAD的功能。
關(guān)鍵詞:二次開發(fā);函數(shù)曲線;對話框;Visual LISP語言
中圖分類號:TH122 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)29-0226-03
Abstract: Using Visual LISP language embedded in AutoCAD for 3D function curve interactive dialog box programming, Help users draw various 3D and 2D formula function curves,It can analyze the influence of function parameters on curve shape conveniently and quickly. The function of AutoCAD is expanded.
Key words: secondary exploration; function curve; dialog box; Visual LISP language
1 背景
AutoCAD是一款發(fā)行較早,使用很廣的繪圖軟件。Visual LISP是為加速AutoLISP程序開發(fā)而設(shè)計的軟件開發(fā)工具,是一個完整的集成開發(fā)環(huán)境(IDE),包括文本編輯器、格式編排器、語法檢查器、源代碼調(diào)試器檢驗和監(jiān)程管理系統(tǒng)、上下文相關(guān)幫助等,它增強并擴展了AutoLISP語言。Visual LISP兼容AutoLISP程序。在Visual LISP集成環(huán)境下可以便捷、高效地開發(fā)AutoLISP程序,可以經(jīng)過編譯得到運行效率高、代碼緊湊、源代碼受到保護的應(yīng)用程序。
一些較為復(fù)雜的三維、二維函數(shù)曲線在數(shù)學(xué)函數(shù)圖樣分析和工程設(shè)計分析中會經(jīng)常用到,機械行業(yè)用到的三維軟件如UG,Pro/E等及工程領(lǐng)域用到的MATLAB等都有繪制三維函數(shù)曲線圖形的功能,鑒于AutoCAD目前還不能實現(xiàn)這樣的功能,因此筆者對AutoCAD二次開發(fā),添加了三維函數(shù)曲線命令,可以在AutoCAD中繪制各種三維,二維函數(shù)曲線。
2 問題分析與程序原理
常用三維公式曲線表示形式有:笛卡爾坐標(biāo)系方程、圓柱坐標(biāo)系方程、球坐標(biāo)系方程。在AutoCAD中都可以輸入相應(yīng)形式的坐標(biāo)數(shù)據(jù)繪圖。
笛卡爾坐標(biāo)系即三維空間直角坐標(biāo)系,其方程是形如[X=ft; Y=ft; Z=ft]所組成的參數(shù)方程組,t為自變量,X、Y、Z為因變量,因此直觀的可以得到函數(shù)曲線上的點坐標(biāo)。圓柱坐標(biāo)系是基于圓柱體的空間坐標(biāo)系,其方程形如[R=ft; θ=ft; Z=ft]所組成的參數(shù)方程組。球坐標(biāo)系是基于球體的空間坐標(biāo)系,其方程形如[R=ft ; θ=ft ; Φ=ft]。由于柱坐標(biāo)方程和球坐標(biāo)方程均可變換為笛卡爾坐標(biāo)方程,因此在程序中最終會以笛卡爾坐標(biāo)的形式獲取函數(shù)曲線上點的坐標(biāo),這樣方便程序的坐標(biāo)數(shù)據(jù)處理。
使用者不需要將柱坐標(biāo)和球坐標(biāo)方程轉(zhuǎn)換為笛卡爾坐標(biāo)方程再輸入表達(dá)式,程序本身自帶換算功能,相比較于UG和Pro/E中只允許輸入笛卡爾坐標(biāo)方程來說,減少了用戶的計算量,提高了繪圖速度和便捷性。
程序繪制曲線的辦法是采用Spline命令創(chuàng)建“真實”的樣條曲線即NURBS曲線,等步距取點完成作圖。與等誤差法比較雖有其缺點,如相同的精度計算步數(shù)較多,但也有其優(yōu)點,如程序編寫簡單,計算量小、對周期函數(shù)容易選擇恰當(dāng)?shù)牟骄鄟肀WC圖形的對稱性、函數(shù)的取值范圍不影響圖形的平滑性和對稱性。
程序的主要原理如下:
1)根據(jù)程序需要創(chuàng)建相應(yīng)的對話框即DCL文件,對各個控件進(jìn)行布局。
2)編輯運行程序的LISP主文件,調(diào)用對話框,響應(yīng)用戶輸入,實現(xiàn)對函數(shù)曲線的預(yù)覽和繪圖。
3)程序中處理函數(shù)公式時不能用字符t、e作為參數(shù)字符,因為t是Lisp的保留字,e為數(shù)學(xué)專用字符。
4)預(yù)覽提供主視、左視、俯視與西南軸側(cè)四種方位,以供使用者在實際作圖前有效參考并修改相關(guān)函數(shù)曲線的各類參數(shù)。
5)在每次響應(yīng)預(yù)覽、確定動作時,程序都要進(jìn)行自檢,判斷使用者輸入的參數(shù)、表達(dá)式等是否存在語法錯誤,計算的結(jié)果是否符合規(guī)定,能否進(jìn)行完整的運算,如果存在錯誤則自行退出程序并給出相關(guān)錯誤類型的提示,以免造成程序崩潰、死循環(huán)等不可預(yù)見的情況。
6)預(yù)覽對話框中采用線段作圖,實際作圖采用Spline命令對曲線進(jìn)行擬合。
7)程序幫助是必不可少的,可用調(diào)用對話框的方式,將要顯示的內(nèi)容寫在程序中,按下幫助按鈕,顯示幫助內(nèi)容,提供在線幫助。
3 應(yīng)用
程序在VLISP下編輯、檢查、運行,當(dāng)確認(rèn)無誤后可以將其保存在CAD的support目錄下,文件名自定。用appload命令加載主程序文件即可以使用。如果每次打開CAD都有可能用到此命令則將其添加到“啟動組”中,以便每次啟動CAD時自動加載該程序。為加快CAD系統(tǒng)的啟動,可以將命令添加到某菜單組中,方法是在 .mns或 .mnu文件下拉菜單中添加如下一行:
ID_Fun-curve [函數(shù)曲線(&F;)]^P(load "文件名")^P ^C^C_fa
重載菜單組,則當(dāng)選中此菜單項才加載此程序,之后方可在命令行使用。對于較大的程序,這樣做可以加速系統(tǒng)的啟動,增大內(nèi)存空間。
以下給出錐螺旋曲線、蝴蝶曲線圖例。
(1)錐螺旋線的方程為[X=x*cos b*xY=x*sinb*c*xZ=a*x ] 采用笛卡爾坐標(biāo)系,自變量[x]取值范圍[0~360],步距為1,單位選角度。在X、Y、Z文本框中輸入各自的表達(dá)式(見圖2),選擇某一方向視圖,點擊預(yù)覽查看曲線,按繪圖按鈕拾取坐標(biāo)點畫圖,見圖3。
用此程序可方便地分析函數(shù)中參數(shù)的變化對曲線形狀的影響,如此例中:參數(shù)a控制螺距大小,影響整個螺旋線的高度,參數(shù)b控制螺旋線的圈數(shù),b=5即為5圈,參數(shù)c控制曲線生成不規(guī)則螺旋線,當(dāng)a=2,c=2時,曲線變?yōu)閳D4形狀。
參考文獻(xiàn):
[1] 郭秀娟. AutoCAD二次開發(fā)實用教程[M]. 北京: 機械工業(yè)出版社, 2014.
[2] 童秉樞. 機械CAD技術(shù)基礎(chǔ)[M]. 北京: 清華大學(xué)出版社, 1996.
[3] 三維曲線方程大全-百度文庫[EB/OL]. https://wenku.baidu.com/view/038719fbf705cc175527095f.html.
[4] 張巖, 吳水根. MATLAB優(yōu)化算法[M]. 北京: 清華大學(xué)出版社, 2017.
[5] 詹建新. UG10.0造型設(shè)計、模具設(shè)計與數(shù)控編程實例精講[M]. 北京: 清華大學(xué)出版社, 2017.
【通聯(lián)編輯:謝媛媛】