欢迎来到天天文库
浏览记录
ID:38040949
大小:293.50 KB
页数:5页
时间:2019-05-24
《AutoCAD画圆弧功能的补充》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、AutoCAD圆弧绘制功能的补充秦皇岛烟草机械有限责任公司技术开发研究所王永强齐海涛[摘要]以VisualLisp为二次开发工具,对AutoCAD的圆弧绘制功能进行补充[关键词]AutoCADVisualLisp圆弧绘制一、引言AutoCAD是目前使用最为广泛的计算机辅助设计软件之一,圆弧绘制是其一项最基本的绘图功能。AutoCAD中画圆弧的方法是根据圆弧的基本参数(如圆弧的起点、终点、圆心、半径、角度、方向)的合理组合来进行绘制。这些绘制圆弧的方法有一个共同特点,即都可以根据已知参数通过三角计算就能得到圆弧的所有基本参数。但当已知圆弧的弧长和弦高或已知弧长和
2、弦长时,无法用AutoCAD现有的方法绘出圆弧,因为在AutoCAD现有的所有绘制圆弧的方法中,没有弧长与弦高或弦长的参数组合。此时要在AutoCAD中绘出圆弧,必须先进行繁锁的高等数学计算,由弧长、弦高参数或弧长、弦长参数求出圆弧的半径、中心角等参数的近似值,再用AutoCAD现有的绘制圆弧的方法进行绘制,给设计工作带来不便。这种情况在实际工程设计中是可能出现的,例如用现有规格260mmx30m、厚1mm的矩形板料制作截面如图1所示的零件(图1中忽略板厚,弧BCD长+30x2=260),对尺寸L没有过于严格的要求,但要保证其它尺寸,求圆弧BCD的半径R。图1
3、下面就以劣弧时已知圆弧弧长和圆弧弦高为例,介绍用AutoCAD的VisualLisp二次开发工具进行程序设计,求解并绘出圆弧的方法。二、开发过程如图2所示,已知劣弧ADB的弧长为a,弦高CD为h。5图2由a=2αR∵α=arccos(R-h)/R∴a=2Rarccos(R-h)/R①用高等数学求解此方程,一般要先绘制方程的曲线并划定方程的根的隔离区间,再用一定的计算方法反复求得方程的近似值,直到得到满足精度要求的近似解,计算过程复杂、繁锁,而且计算精度不易保证。但我们可以用计算机强大的计算功能来精确地进行求解。在确定程序算法之前,先绘出方程①的曲线。令已知参数
4、弦高h分别取不同的常数,以圆弧半径R为变量,求出对应每一个R值的弧长a并绘出方程曲线,为此设计以下Lisp程序:(defunc:yz()(setvar"OSMODE"0)(setvar"CMDECHO"0)(setqr(getreal"PleaseinputR:");输入起始半径上限h(getreal"Pleaseinputh:"));输入假设弦高常数(if(>rh)(progn(setqcosa(/(-rh)r)sina(sqrt(-1(exptcosa2)))jiao(atan(/sinacosa))l(*2jiaor))))(while(>r1)
5、(progn(setqr(-r1))(if(>rh)(progn(setqcosa(/(-rh)r)sina(sqrt(-1(*cosacosa)))jiao(atan(/sinacosa))l(*2jiaor)p(listrl))(command"point"p);在AutoCAD中绘制点5)))))在AutoCAD中加载并执行以上程序,依次输入圆弧半径的上限值和圆弧弦高常数,即可绘出对应的方程曲线。图3为程序在AutoCAD中绘制的R极大值为1000、h分别取值10、50、100时方程①的曲线。图3由图3所示的方程曲线可知,当弦高为常数时,每一个弧长a值都
6、对应唯一一个半径R(R>h)值,且函数为单调增函数。运用二分法算法,设计以下程序来求解方程并在AutoCAD中绘制圆弧。(defunc:lh()(setql(getreal"输入圆弧长度L:")h(getreal"输入圆弧弦高H:"))(if(>h(/lpi))(progn(princ"输入参数不构成劣弧,请执行优弧命令。"))(progn(setqxx99999999.0;直径范围初始极大值,可根据实际情况确定r(/xx2)c(/(-rh)r)s(sqrt(-1(exptc2)))wt(/sc)j(atanwt)ll(*2rj)a0)(while
7、(>(abs(setqb(-lll)))0.000001)(if(>b0)(setqxxrr(/(+xxa)2))(setqarr(/(+xxa)2)))(setqc(/(-rh)r)s(sqrt(-1(exptc2)))wt(/sc)j(atanwt)ll(*2jr)))5(setqp1(polar'(00)(-(/pi2)j)r)p2(polar'(00)(+(/pi2)j)r))(print"圆弧中心角:")(print(*2.0j))(print"圆弧半径R:")(printr)(setqp3(getpoint"请输入圆弧中心:"))(comman
8、d"arc""c"'(00)p1p2"
此文档下载收益归作者所有