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