資源描述:
《用pline繪制齒輪》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、用Pline繪制齒輪 〖說明〗 本例程能夠根據(jù)給定的直徑、齒數(shù)和角度繪制齒輪輪廓線。繪成的輪廓是連續(xù)的polyline,能方便地進(jìn)行三維延伸等處理。不過其中曲線生成采用的數(shù)據(jù)是根據(jù)美國(guó)機(jī)械行業(yè)標(biāo)準(zhǔn),用的時(shí)候可能要根據(jù)自己的需要修改?! 及惭b〗 將程序代碼一節(jié)的文本裁剪下來,保存成名為SUPRGEAR.LSP的文本文件;將這個(gè)文件拷貝到AutoCAD的系統(tǒng)目錄中。 〖使用〗 在AutoCAD命令行鍵入:(loadsuprgear) 然后執(zhí)行:SG,按程序中的提示操作即可?! 汲绦虼a〗 ;;;b
2、egainsuprgear.lsp;*************************************************;SPURGEAR.LSP-alispprogrambyTonyHotchkiss;-------------------------------------------------;Thisroutinedrae)(cdr(assoccode(entgetename))));dxf(defunspurgear(/DNphiDOROABDRDBinv-plstp1trimcode
3、inventp0pcurventlinentlinent2ent2p2)(setqD(getrealPitchdiameter:)N(getintNumberofteeth:)phi(getrealPressureangle:)phi(*(/phi180)pi);PressureangleDO(*D(+(/2.0N)1.0));OutsidediameterRO(/DO2.0);OutsideradiusA(/DN);AddendumB(*1.25A);DedendumDR(-D(*B2.0));R
4、ootdiameterDB(*D(cosphi));Basecircledia.inv-plst(involuteDBNphi);involutepointstrimcodenil);setq(mandZOOM(list0(-B))(listRO(/RO1.5)));mand(setqinvent(dracode(ext-trimp0DRD);trimorextend);setq;theinvolute.(if(andtrimcode(=trimcode0))(progn;Joinstheinvolutetot
5、heextension.(setqp(list(/DR2.0)0))(mandPEDITpYJinventX)(setqcurvent(entlast)));progn(setqcurvent(entlast)));if(if(nulltrimcode)(setqcurventinvent))(setqlinent(draw-top-lineDDBNRO));top123下一頁——..,。line.(mandCOPYlinent0,00,0)(setqlinent2(entlast))(setqent2(mir
6、-itcurventlinent));mirrorcurve(mandPEDITcurventJlinentent2X)(segmentDRNlinent2);Finishthejob!(setqp1(list(-RO)(-RO)))(setqp2(listRORO))(mandZOOMp1p2)(promptConvertingtoPOLYLINE,pleaseandPEDIT(entlast)JCp1p2X)(promptAlldone!));spurgear(defuninvolute(DBNph
7、i/numerdenomfractheta2maxthetamaxtheta-incthetaplistRBxvalyvalp)(setqinvfact3)(setqnumer(+N2.0)denom(*N(cosphi))frac(/numerdenom)theta2max(-(*fracfrac)1)thetamax(sqrttheta2max)theta-inc(/thetamax(floatinvfact))theta0plistnilRB(/DB2.0));setq(repeat(1+invfact)
8、(setqxval(do-xRBtheta)yval(do-yRBtheta)p(listxvalyval)plist(appendplist(listp)));setq(setqtheta(+thetatheta-inc)));repeatplist);involute(defundo-x(RBtheta)(*RB(+(costheta)(*theta(sintheta)))));d