畢英建 丁玲玲 韓世展 曹程溪 丁克會


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