梁芳 尹守軍
摘 要:AutoCAD 是一款通用的繪圖軟件,Auto LISP是嵌入AutoCAD的二次開發(fā)工具,參數(shù)化繪圖是其典型的應(yīng)用。文章探討了參數(shù)化繪圖設(shè)計(jì)原理及步驟,并以軸承參數(shù)化繪圖為例,介紹了Auto LISP的參數(shù)化繪圖技術(shù)。
關(guān)鍵詞:參數(shù)化;AutoCAD;Auto LISP
中圖分類號:TP391.72 文獻(xiàn)標(biāo)識碼:A 文章編號:1006-8937(2014)24-0093-02
AutoCAD是由Autodesk公司發(fā)行的一款應(yīng)用于多領(lǐng)域的設(shè)計(jì)輔助和圖形處理軟件。在機(jī)械行業(yè)得到了廣泛應(yīng)用。AutoCAD雖然功能強(qiáng)大,但在專業(yè)應(yīng)用上還是有不足之處,如何讓通用的CAD系統(tǒng)更適合行業(yè)需要,必須對其要進(jìn)行二次開發(fā)。AutoCAD在30多年時(shí)間里相繼推出了Auto LISP、ADS、Visual LISP、VBA、Object ARX、AutoCAD.NET幾種不同層次的二次開發(fā)工具?!捌渲蠥uto LISP是唯一的一種以解釋方式運(yùn)行于AutoCAD內(nèi)部的解釋性程序設(shè)計(jì)語言,Auto LISP把數(shù)據(jù)和程序統(tǒng)一表達(dá)為表結(jié)構(gòu),所以它既可以把程序當(dāng)作數(shù)據(jù)來處理,還可以把數(shù)據(jù)當(dāng)作程序來執(zhí)行”。其語言規(guī)則簡單,直接針對AutoCAD,易學(xué)易用,AutoCAD的絕大多數(shù)命令可直接調(diào)用,參數(shù)化繪圖是其典型的應(yīng)用之一。
1 參數(shù)化繪圖設(shè)計(jì)原理及步驟
所謂參數(shù)化就是將圖形的有關(guān)幾何關(guān)系、約束關(guān)系有機(jī)地結(jié)合起來,從而構(gòu)成一個(gè)完整的參數(shù)化模型。當(dāng)設(shè)計(jì)人員改變圖形的某一參數(shù)時(shí),模型能根據(jù)尺寸及幾何約束等自動計(jì)算出滿足約束關(guān)系的工程圖形。
參數(shù)化編程方法的實(shí)質(zhì),就是將圖形信息記錄在程序中。它用一組變量記錄圖形的幾何參數(shù),用一些約束條件或者賦值語句來表達(dá)幾何參數(shù)與結(jié)構(gòu)參數(shù)之間的關(guān)系,再用一些繪圖語句來表述圖形的拓?fù)潢P(guān)系。參數(shù)化方法快捷、高效,參數(shù)化繪圖程序編寫步驟是:
①先進(jìn)行圖形結(jié)構(gòu)特征分析,一般繪制一個(gè)零件的圖樣,需要很多尺寸,這就需要我們分析這個(gè)零件,確定圖形中的關(guān)健幾何尺寸及圖形對象之間的依賴關(guān)系。
②從設(shè)計(jì)角度具體分析,確立不僅能體現(xiàn)零件的結(jié)構(gòu)特征,又可以推導(dǎo)出其它尺寸的基本尺寸作為圖形參數(shù),并明確尺寸與圖形參數(shù)之間的關(guān)系。
③構(gòu)造參數(shù)化模型,對應(yīng)參數(shù)。
④用修改參數(shù)值的方法,檢驗(yàn)所建模型的正確性。
2 參數(shù)化繪圖程序設(shè)計(jì)的應(yīng)用實(shí)例
下面以深溝球軸承的參數(shù)化繪圖為例,詳細(xì)闡述其實(shí)現(xiàn)過程。
2.1 軸承主視圖繪制思路
首先,進(jìn)行分析圖形,由于軸承是標(biāo)準(zhǔn)件,在機(jī)械手冊中已給出標(biāo)準(zhǔn)規(guī)格系列,所以其主要參數(shù)為內(nèi)徑d、外徑da及寬度B, 其他部分可根據(jù)軸承規(guī)定畫法畫出,參數(shù)化繪圖關(guān)鍵在于找出軸承圖形各個(gè)關(guān)鍵點(diǎn)和插入點(diǎn)(p0)之間的相對關(guān)系和換算坐標(biāo)。
然后用直線將所有各點(diǎn)連接起來,滾珠的繪制用畫圓命令即可,軸承各尺寸參數(shù)之間的關(guān)系如圖1所示。
2.2 程序編寫
(defun d:zhch() ;程序定義
(setq p0 (getpoint "請輸入基點(diǎn)坐標(biāo)"))
(setq da (getreal "請輸入da的值"))
(setq d (getreal "請輸入d的值"))
(setq b (getreal "請輸入b的值"))
(setq d3 (+ d (/ (- da d) 2) ) )
(setq d4 (/ (- da d) 4) );
計(jì)算滾珠直徑;
以下部分代碼為根據(jù)插入點(diǎn)坐標(biāo)計(jì)算各關(guān)鍵點(diǎn)坐標(biāo)
(setq p1 ( polar p0 0 b))
(setq p2 ( polar p0 (/ pi 2) (/ d 2) ) )
(setq p3 ( polar p2 0 b) )
(setq p4 (polar pt1 pi (/ (- b(* (sin (/ pi3) ) d4) )2)) )
(setq p5 (polar pt2 0 (/ (- b (* (sin (/ pi3) )d4) )2) ) )
(setq p6 (polar pt3 pi (/ (- b (*(sin (/ pi3) ) d4) )2)) )
(setq p7 (polar pt4 0 (/ (- b (* (sin (/ pi3) ) d4) ) 2) ) )
(setq p8 ( polar p0 (/ pi 2) (/ da 2) ) )
(setq p9 ( polar p8 0 b) )
(setq p10 ( polar pt (/ pi 2) (/ d3 2) ) )
(setq pt ( polar p0 0 (/ b 2) ) )
(setq pt1 ( polar p10 ( - 0 (/ (* 5 pi) 6) ) (/ d4 2) ) )
(setq pt2 ( polar p10 ( - 0 (/ pi 6) ) (/ d4 2) ) )
...... 因相似且篇幅較長,故將其省略。
圖形繪制:
(command "line" p0 p2 "")
(command "mirror" "l" "" p0 p1 "n" )
(command "line" p1 p3 "")
(command "mirror" "l" "" p0 p1 "n" )
(command "layer" "M" "hatch" "C" 4 "hatch" "" )
(command "pline" p4 pt1 "A" "A" 120 pt2 "L" p5 p3 p2 "c")
(command "hatch" "p" "ansi31" 1.5 0 "s" "l" "" "" )
(command "layer" "M" "hatch" "C" 4 "hatch" "" )
(command "pline" p7 pt4 "A" "A" 120 pt3 "L" p6 p8 p9 "c")
......
(princ)
)
2.3 程序的加載和運(yùn)行
在AutoCAD繪圖環(huán)境中,選擇下拉菜單/工具T→Auto LISP(I)→加載應(yīng)用程序(L)...,就會打開,加載/卸載應(yīng)用程序?qū)υ捒?,選擇所要加載的zhch.lsp文件,點(diǎn)擊加載即可。然后在command:提示符下鍵入defun定義的程序名即zhch,依次根據(jù)提示輸入插入點(diǎn)坐標(biāo)值、軸承內(nèi)徑、外經(jīng)及寬度相關(guān)參數(shù)后,系統(tǒng)將會按照輸入的參數(shù)值在相應(yīng)位置畫出軸承的圖像,如圖2所示。
3 結(jié) 語
利用Auto LISP的參數(shù)化設(shè)計(jì)可以避免結(jié)構(gòu)相同或尺寸差異實(shí)體繪圖時(shí)的繁瑣與重復(fù)性工作,縮短了設(shè)計(jì)周期,提高了生產(chǎn)效率,使設(shè)計(jì)人員能把主要精力投到真正的設(shè)計(jì)和創(chuàng)新的工作中去。
參考文獻(xiàn):
[1] 唐正連.AutoLISP二次開發(fā)技術(shù)在拖拉機(jī)設(shè)計(jì)中的應(yīng)用[D].南京:南京理工大學(xué),2008.
[2] 梁雪春,崔洪斌,吳義忠,等.Auto LISP實(shí)用教程[M].北京:人民郵電出版社,1998.
[3] 周陶勇,李珊,王磊,等.基于Auto LISP的AutoCAD參數(shù)化繪圖[J].計(jì)算機(jī)應(yīng)用,2006,(4).
[4] 劉喜平.基于AutoLISP的AutoCAD二次開發(fā)技術(shù)[J].信息技術(shù),2011,(4).