內(nèi)蒙古科技大學機械工程學院 張乃斌
螺紋繪制的AutoCAD程序化
內(nèi)蒙古科技大學機械工程學院 張乃斌
利用AutoCAD繪制螺紋、彈簧這類三維圖形時,作圖過程復雜,工作量大且效率低。針對這一問題,本文闡述了利用AutoCAD所支持的一種內(nèi)嵌式高級編程語言AutoL ISP進行編程,對AutoCAD進行二次開發(fā),把螺紋程序以命令的形式添加到AutoCAD中,然后用戶就可以像使用AutoCAD標準命令一樣使用新添加的命令,按提示輸入不同的參數(shù),繪制圓柱螺紋。
螺紋CAD繪圖L ISP程序程序化
在用AutoCAD繪制三維工程圖時,若繪制螺紋、彈簧這類三維圖形的問題,采用交互式繪圖方法,為了保證繪制的三維圖形尺寸精確,就必須輸入大量精確數(shù)據(jù),才能一點一點地畫出所需的圖形,這樣做起來工作量大、效率極低。若利用AutoCAD內(nèi)嵌的L ISP語言,以其基本參數(shù)為變量編制程序來定義圖形,操作時只需輸入基本參數(shù)的具體值即可由程序完成繪圖過程。這不僅可以進行參數(shù)化繪圖,而且大大提高工作效率,提高繪圖質(zhì)量。
下面以螺紋為例來說明程序化繪圖過程:
1.繪制螺紋的AutoL ISP程序代碼如下:
(defun shuru();輸入?yún)?shù)
(setq zhijing(getREAL″公稱直徑:″))
(setq luoju(getreal″螺距:″))
(SETQ QUANSHU(GETREAL″螺紋有效圈數(shù):″))
(SETQ JINGDU(GETint″每轉切割次數(shù):″))
(setq QIDIAN(getpoint″輸入起始點:″))
)
(defun JISUAN();計算螺紋參數(shù)
(setq H(3 0.8660254 luoju))
(setq D2(-zhijing(3 20.375 H)))
(SETQ LD2(3 D2 PI))
(SETQ LUOXUANJIAO(A TAN(/LUOJU LD2)))
(SETQ LXJ(3 180(/LUOXUANJIAO pi)))
(setq banjiao(atan(/luoju zhijing)))
(setq djxc(sqrt(+(exp t luoju 2)(expt zhijing 2))))
(setq pyj(+banjiao luoxuanjiao))
(setq pianyi(3(sin pyj)djxc))
(setq pianyi(/pianyi 2.0000))
(SETQ SL(fix(3(+1 QUANSHU)JINGDU )));數(shù)量
(SETQ FD(/360.0000 JINGDU));分度
(SETQ BC(/(3 1.0000 LUOJU)JINGDU))
(setq bc(-bc));步長
)
(defun draw();繪制
(setq pt1(polar QIDIAN PI(/LUOJU 2. 0000)))
(SETQ PT1(POLAR PT1(3 1.5 PI)(+ (3 0.1250 H)(/ZH IJING 2.0000))))
(setq p t2(polar p t1 0(3 luoju 0.375(cos LU2 OXUANJIAO))))
(SETQ PT2(POLAR PT2(3 0.5 PI)(3 0.750 H)))
(setq pt3(polar p t2 0(3 0.25 LUOJU(cos LU2 OXUANJIAO))))
(setq pt4(polar pt1 0(3 LUOJU(cos LUOXU2 ANJIAO))));基本三角形
(setq p t5(polar QID IAN pi(3 2.00 LUOJU QUANSHU)))
(setq pt7(polar p t5 0(3 2 LUOJU)))
(setq p t7(polar pt7(3 1.5 pi)(/ZH IJING 2))) ;螺紋軸線
(setq pt6(polar p t5 0 LUOJU))
(SETQ PT6(POLAR PT6(3 0.5 PI)(3 0.50000 ZH IJING)))光桿輪廓
(SETQ PT8(POLAR PT1 0(3 0.5 LUO2 JU)))
(SETQ PT9(POLAR PT8(3 0.5 PI)(3 0.8 ZHIJING)));齒條轉動軸線
(SETQ MV(POLAR Q ID IAN 0(/ZH I2 JING 2.0000)))
;制做齒條并轉角
(command″pline″p t1 p t2 p t3 p t4″c″)
(command″extrude″″last″″″ZH IJING″″)
(setq SS(ssget p t1))
(rotate3d ss PT9 PT8 90)
(COMMAND″MOVE″″Previous″″″QIDIAN MV )
(rotate3d ss″″PT8 PT9 90)
(rotate3d ss″″PT9 PT8 LXJ)
(SETQ YD(POLAR QID IAN 0(/LUOJU 2. 0000)))
(COMMAND″MOVE″″Previous″″″QID IAN YD );外移
;制做光桿
(SETQ PT0(POLAR Q IDIAN 0 LUOJU))
(COMMAND″L INE″PT5 PT0″″)
(COMMAND″rectang″PT6 Q ID IAN)
(COMMAND″revolve″″LAST″″″PT5 qidian″″)
;布爾運算
(SETQ PT(POLAR PT4 0 pianyi))
(SETQ SQ p t6)
(while(/=SL 0);判斷
(SETQ SS(SSGEt p t))
(setq p ta(polar p t 0 bc))
(command″copy″ss″″p t pta)
;(p rin1 p t)
(COMMAND″subtract″sq″″ss″″);相減
;(setq zanting(getstring))
(setq SS(ssget pt6))
(ROTA TE3D SS PT5 qidian FD);旋轉
(setq PT p ta);步進
(SETQ SL(-SL 1))
)
(setq p ta(polar p t 0 bc))
(COMMAND″ERASE″PT″″)
)
(defun C:3DLW()
(arxload″geom3d.ARX″N IL)
(shuru)
(SETQ SSs(GETVAR″OSMODE″))
(SETVAR″OSMODE″0)
(SETQ SNM(GETVAR″SNAPMODE″))
(SETVAR″SNAPMODE″0)
(SETQ PICKB(GETVAR″PICKBOX″))
(SETVAR″PICKBOX″0)
(setq cmd(getvar″cmdecho″))
(setvar″cmdecho″0)
(JISUAN)
(SETQ GD(3 1.2 ZH IJING))
(SETQ CT(POLAR QIDIAN PI(3 LUOJU QUANSHU)))
(COMMAND″ZOOM″″C″CT GD)
(draw)
(SETVAR″OSMODE″SSs)
(setvar″cmdecho″cmd)
(SETVAR″SNAPMODE″SNM)
(SETVAR″PICKBOX″PICKB)
)
(p rinc″ C:3DLW為繪制命令″)
(p rinc)
2.繪圖
只要將上述程序復制、粘貼到Autocd2004下面support目錄里的autocad2004doc.Lsp文件里即可,以后在AutoCAD2000繪圖窗口命令行里輸入3dlw后,按提示輸入不同的參數(shù),即可繪制所需要的三維圓柱螺紋。
繪制的螺紋參數(shù)提示如下:(1)公稱直徑;(2)螺距;(3)螺紋有效圈數(shù);(4)每轉切割次數(shù);(5)輸入起始點。圖1為用AutoCAD繪制的螺紋,參數(shù)如下:
螺紋公稱直徑=30mm;螺距=3mm;螺紋有效圈數(shù)=10;每轉切割次數(shù)=100。
圖1 螺紋Fig.1 Thread
AutoCAD采用開放式體系結構,用Visual L ISP集成開發(fā)環(huán)境,我們可以在一個單獨的環(huán)境中執(zhí)行文本編輯、程序調(diào)試,與AutoCAD及其他應用程序的交互等操作,極大地方便了AutoCAD的二次開發(fā)。
[1]張躍峰,陳通.AutoCAD2000[M].北京:清華大學出版社,2003
[2]胡志勇.計算機輔助設計基礎[M].內(nèi)蒙古:內(nèi)蒙古大學出版社,2004
book=65,ebook=91