用AutoLISP程序提高绘图效率的几个实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2007.12

科技广场

254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。

根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下:

图二园台螺旋线

X=[r0+hg *α/(2π)]*cosα

Y=[r0+hg *α/(2π)] *sinα

Z=±vg *α/(2π)

其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。

下面提供圆台螺旋线的AutoLISP程序清单:

(defun c:luoxc(/)

(setq b1 (getpoint" 指定基点:"))

(setq r1 (getreal "指定初始半径:"))

(setq disp (getreal "指定节距:"))

(setq angtg (getreal "输入锥形角:"))

(setq m (getint"输入圈数:"))

(setq n (getint"输入每圈细化段数<36>:"))

(cond ((null n )(setq n 36)))

(setq delta (/ (* 2.0 pi ) n))

(setq j (/ disp n))

(setq bb (caddr b1))

(setq tg (*(/ angtg 180) pi))

(setq ang 0)

(setq k 0)

(command "ucs" "o" b1)

(command "3dpoly" (list r1 0 0))

(repeat (* m n)

(setq k(+ k 1))

(setq ang(+ delta ang))

(setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg)))))

(setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k))))

(command pt2)

(command "")

根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下:

(defun c:luoxc(/)

(setq b1 (getpoint" 指定基点:"))

(setq r (getreal "指定初始半径:"))

(setq vg (getreal "指定节距:"))

(setq m (getint"输入圈数:"))

(setq n (getint"输入每圈细化段数<36>:"))

(cond ((null n )(setq n 36)))

(setq delta (/ (* 2.0 pi ) n))

(setq j (/ disp n))

(setq bb (caddr b1))

(setq ang 0)

(setq k 0)

(command "ucs" "o" b1)

(command "3dpoly" (list r 0 0))

255

2007.12

科技广场

256

相关文档
最新文档