AutoCAD下繪制直線對(duì)稱中心線的方法
(作者未知) 2009/7/19
AutoCAD是目前國(guó)內(nèi)應(yīng)用最廣范的CAD系統(tǒng)之一,AutoCAD功能強(qiáng)大,是一個(gè)通用的CAD平臺(tái),但是如果不根據(jù)本專業(yè)的需要進(jìn)行二次開發(fā),使用起來(lái)是很不方便的。畫對(duì)稱中心線是機(jī)械設(shè)計(jì)中經(jīng)常遇到的一個(gè)問題。
筆者用AutoLISP依據(jù)國(guó)家標(biāo)準(zhǔn)開發(fā)了兩個(gè)程序,可以很方便地解決直線對(duì)稱中心線的問題。
第一個(gè)程序適用于兩條邊是連續(xù)直線的情況。使用方法是:用LOAD命令裝入GLS.LSP,運(yùn)行C:GSL,依據(jù)屏幕提示,分別選擇兩邊,自動(dòng)繪制出中心線。
GSL.LSP:
(defunmid(pt1pt2)計(jì)算兩點(diǎn)之中點(diǎn)的功能函數(shù)
(setqpt(mapcar’+pt1pt2))
(setqpt(mapcar’/pt’(222)))
)
(defunc:gsl/mcl1clcl2eptpt1pt2pt3pt4a)(SETQM1)
(WHILEM
(SETQCL1(ENTSEL"\n選擇第一條直線"))
(cond
((notcl1)(prompt"\n沒有發(fā)現(xiàn)實(shí)體"))
((/="LINE"(cdr(assoc0(setqe(entget(carcl1))))))
(prompt"\n所選不是直線")
)
(t(prompt"找到了第一條直線”)
(setqmnil);退出循環(huán)
)
)
)
(setqcl(ssget(nth0(cdrcl1))));取得第一條直線的實(shí)體數(shù)據(jù)
(SETQM1)
(WHILEM
(SETQCL2(ENTSEL"\n選擇第二條直線"))
(ifcl2
(if(ssmemb(carcl2)cl)
(progn
(princ"\n選擇重復(fù),重新選擇")
(setqcl2nil)
)
)
)
(cond
((notcl2)(prompt"沒有發(fā)現(xiàn)實(shí)體或重復(fù)"))
((/="LINE"(cdr(assoc0(setqe(entget(carcl2))))))
(prompt"\n所選不是直線")
)
(t(prompt"\n兩條直線已經(jīng)選擇完畢")
(setqmnil);;;退出循環(huán)
)
)
)
;;;取得第一直線兩端點(diǎn)的坐標(biāo)
(setqpt1(cdr(assoc10e))pt2(cdr(assoc11e)))
(setqe(entget(carcl1)));;取得第二條直線的實(shí)體數(shù)據(jù)
;;;取得第二直線兩端點(diǎn)的坐標(biāo)
(setqpt3(cdr(assoc10e))pt4(cdr(assoc11e)))
;;調(diào)整端點(diǎn)
(if(interspt1pt3pt2pt4t)
(setqptpt1
pt1pt2
pt2pt
)
)
;;;計(jì)算兩端中點(diǎn)坐標(biāo)
(setqpt1(midpt1pt3))
(setqpt2(midpt2pt4))
(setqa(anglept1pt2));計(jì)算中心線的傾角
(setqpt2(polarpt2a2.5));;計(jì)算中心線的第一個(gè)端點(diǎn)
(setqpt1(polarpt1(+pia)2.5))
(command"layer""SET"5"");;設(shè)置中心線層
(command"line"pt1pt2"");;畫出中心線
)
(princ"\nC:GSLhasloaded")
(Princ"\nforsymmetryline")
(princ)
第二個(gè)程序適用于階梯軸,階梯孔等各種情況。使用方法是:用LOAD命令裝入GLS1.LSP,運(yùn)行C:GSL1,依據(jù)屏幕提示(未完,下一頁(yè))
|