(常州機電職業技術學院,常州 213164)
Autolisp是美國Autodesk公司開發的lisp語言,該語言因語法簡單、函數強大、編寫環境寬、直譯等特點,而在AUTOCAD軟件的二次開發方面得到廣泛應用,特別是在機械行業,其影響及普及程度處于最重要地位。為了進一步擴充該軟件的功能和應用行業,專業人士應用AutoLISP技術對AUTOCAD進行二次開發的研究一直沒有停止過,也取得了較豐碩的成果。謝中梅等[1]用Auto LISP和Visual Basic開發的程序,完成了AUTOCAD軟件圖表的設計;張勇[2]研究了基于特定設計對象,AutoCAD的二次開發系統;張洪雷[3]應用AutoLISP技術,就如何制定產品結構和生產方案進行了研究;邱林[4]等用AutoLISP編程,對漸開線弧齒圓柱齒輪實現了參數化建模。本研究以銷軸為例詳細介紹AutoCAD軟件AutoLISP二次開發的方法與步驟。
AutoLISP是AutoCAD內部解釋型的API語言,它適用于交互式程序的二次開發,它不是面向對象的語言,而是一種人工智能語言。嵌入到AutoCAD里的AutoLISP語言是COMMON LISP語言的一個子集,它擁有強大的可進行圖形處理的函數,以一般高級語言結構形式實現圖形處理。其程序可被用來進行重復操作,以完成圖形的重復性處理任務,軟件可通過定制化的開發和程序編寫,在AutoCAD 軟件上生成相應的命令。
針對AutoCAD軟件的二次開發,AutoLISP增加了許多功能,使AutoLISP程序與AutoCAD繪圖命令融為一體;利用AutoLISP語言程序編寫功能,可實時對數據庫進行訪問、修改,以達到交互式設計的目的。Visual LISP是AutoLISP的衍生產物,至Visual LISP引入到AutoCAD后,它擴展了AutoLISP語言功能,具備了Active X自動化API與對象交互技術,同時,擴展了AutoLISP反饋事件的能力。與AutoLISP相比,VisualLISP還提供了一個集成開發環境(IDE),通過利用Active X/COM自動化API等技術,使AutoLISP程序開發周期縮短,源程序泄密性得到有效擬制,同時,Visual LISP因避免了LISP程序繁鎖的調試過程,因而其效率明顯提高,編譯后程序的運行效率比解釋型AutoLISP程序快幾倍[5,6]。
圖1為本次AutoLISP二次開發實例零件—銷軸工程圖。表1為該銷軸尺寸表。從圖表中可知,該零件為機械零件設計手冊中的標準零件,其由一系列尺寸組成,在實際工程繪圖中,若對每一尺寸進行繪制,則其工作效率很低,而采用AutoLISP編程驅動銷軸尺寸值,則可及時完成零件工程圖的繪制。其二次開發步驟按圖2所示流程進行。

圖1 銷軸工程圖

圖2 二次開發流程

表1 銷軸尺寸表
零件結構尺寸分析主要是研究零件的形狀、尺寸和角度值,列出尺寸值或角度值的換算公式,為AutoLISP程序編寫做好前期準備工作。建立dat文件是要建立零件尺寸數據庫,如表1所示,即建立AutoLISP可以讀取的數據庫文件,dat文件的輸入要與原始數據一一對應,列項名稱可以變換,但一定要與AutoLISP程序中的名稱相一致,從而避免CAD軟件在讀取數據時出現誤讀現象。AutoLISP程序的編寫是在Visual LISP集成開發環境下完成的,在調用AutoLISP內置函數的基礎上,編程人員定義自定義函數,以此完成程序的編寫,該過程是二次開發中最重要的環節。AutoLISP程序調試主要是為了檢驗程序的對與錯,修改或調整部分源程序,以便當程序導入到AutoCAD中時,AutoLISP程序能夠順利運行,以達到預期繪圖之目的。圖3為AutoLISP程序編寫與調試流程,由圖可知,在完成了零件尺寸分析的基礎上,即進入程序編寫階段,當程序載入到AutoCAD系統中后,開始進行程序調試判斷,若程序無誤,則程序編寫結束,若所撰寫的程序存在錯誤,則重新進入程序編寫與調試流程,最終獲得正確的AutoLISP程序。

圖3 AutoLISP程序編寫與調試流程

圖4 自定義CAD菜單步驟
自定義CAD菜單的目的是為了在CAD繪圖界面中可以方便地調取程序,及時繪制出零件工程圖。其具體操作步驟如圖4所示,在CAD繪圖界面中點擊菜單“工具”,選擇“自定義”—“界面”,出現圖5(a)所示的“自定義用戶界面”對話框,在“主CUI中的定義”界面中選擇“custom.cui”,點擊“菜單”項,按鼠標右鍵“新建”菜單,名稱取為“機械零件”如圖5(b)所示。在命令列表對話框中,選類別為“自定義命令”,點擊“新建命令”,在信息對話框中將命令改成“銷軸”。按住“銷軸”并拖放到“機械零件”下,如圖5(c)所示。在圖5(d)所示“宏”中載入AutoLISP程序,其格式為“^C^C(load "銷軸.lsp")銷軸”。最后在CAD界面中出現如圖6所示的菜單。

圖5 自定義CAD菜單操作流程

圖6 自定義命令菜單
AutoLISP語言將函數共分成兩大類:一類是AutoLISP語言所具有的如數學功能運算、關系邏輯判斷等內部函數,每個函數均有特定功能;另一類是defun自定義函數。內部函數與defun自定義函數間作某種調用與組織,就可編寫出某一程序,此應用程序以純文本文件方式保存,調用該程序即可完成指定功能操作,從而能在電腦中快速、方便地繪制出圖形。
AutoLISP中的defun自定義函數編寫格式是:
(defun C:<函數名>([實參變量名表[/局部變量名表]]<表達式>…),自定義函數名為一字符串。
以下是用記事本編輯器編寫的AutoLISP程序,存盤路徑為 C: / cadprograms/ PIN.LSP/ ,調用自定義函數時,按以下格式執行:
(函數名 <實參1> <實參2> …),該程序已在AutoCAD 2010 中調用過[7]。
在Visual LISP編輯器下編寫的銷軸部分程序代碼是:


由圖6可知,當點擊機械零件下拉菜單“銷軸”時,在“命令”對話框下將出現如圖7(a)所示的“輸入銷軸插入點<退出>:”命令,輸入插入點后,命令對話框將要求輸入銷軸直徑、長度和旋轉角度,如圖7(b)~圖7(d)所示。將以上數值確定后,在AutoCAD繪圖界面中將繪制出銷軸二維視圖,如圖8所示。圖9為某一尺寸用AutoCAD軟件生成的銷軸三維實體圖[8]。
從圖6所示的自定義命令菜單中可知,點擊自定義命令菜單中的某零件后,即可調用所需要的零件對話框,在圖7所示的命令菜單后輸入相應尺寸,就可實現對某零件圖形的調用。
從以上銷軸二次開發的結果可知,AutoLISP程序相對較為簡潔,初學者容易理解與掌握,軟件開發后使用起來也很方便。修改與調用也非常容易,通過AutoLISP的二次開發,擴展了AutoCAD的功能,達到了軟件使用效率高、準確性高的目的。

圖7 銷軸調用程序

圖8 銷軸工程圖

圖9 銷軸三維實體圖
本文以銷軸零件的二次開發為例,詳細介紹了應用Autolisp對AutoCAD進行二次開發的過程[9]。從結果看,采用該方法進行二次開發,可快速開發出各類零件的命令集,這將大大提高AutoCAD的繪圖效率和準確性;可在一定程度上減輕工程技術人員查閱手冊的繁鎖工作,從而使得AutoCAD輔助設計效能得到進一步發揮。開發者可基于項目需要選擇Autolisp開發工具,實現對AutoCAD的定向開發,制作出企業定制的AutoCAD系統。