额,,,搞错了,然来钻头是这样的啊。
(defun c:lxyp() ;;;本程序将绘制出螺旋叶片的内外径在螺管上的一个节距的投影图.
(setq os(getvar"osmode")) ;;保存OSNAP系统变量值。
(setvar"osmode"0) ;;关闭捕捉功能
(setq cen (getpoint"\输入展开图中心:"))
(setq pp(getpoint"\n输入绘图中心:"))
(setq dd (getdist"\n请输入螺旋大径:"))
(setq dd1 (getdist"\n请输入螺旋小径:"))
(setq tt(getdist"\n请输入螺旋节距:"))
(setq n (getdist"\n请输入等分数:"))
(setq rr (/ dd 2.0)) ;;;计算螺旋的外半径
(setq rr1 (/ dd1 2.0)) ;;;计算螺旋的内半径
(setq tt1 (/ tt n))
(setq pp1 (list (car pp) (cadr pp)))
(setq p1 (list (car pp) (cadr pp)))
(setq inc (/ (* pi 2) n)) ;;;计算等分角度。
(setq pa (polar pp 0 rr1))
(setq pb (polar pa (/ pi 2.0) tt))
(setq pc (polar pp pi rr1))
(setq pd (polar pc (/ pi 2.0) tt))
(setq a 0)
(while (< a ( + 1 n));;;循环语句连续绘制曲线。
(setq p0 (list (+ (car pp) (* (cos(* a inc)) rr)) (+ (cadr pp) (* tt1 a))))
(setq pp0 (list (+ (car pp) (* (cos( * a inc)) rr1)) (+ (cadr pp) (* tt1 a))))
(command "line"p1 p0 "")
(command "line" pp1 pp0 "")
(setq p1 (list (car p0) (cadr p0))) ;;;重新指定初值重复绘制线段。
(setq pp1 (list (car pp0) (cadr pp0)))
(setq a (+ 1 a )))
(command "line" pa pb"") ;;;绘制螺管素线。
(command "line" pc pd"") ;;;绘制螺管素线。
(SETQ Paa (polar pp (/ PI 2.0) tt))
(setq la(* dd1 pi))
(setq lb(* dd pi))
(setq a (sqrt(+(* tt tt) (* la la))))
(setq b (sqrt(+(* tt tt) (* lb lb))))
(setq c(/ (- dd dd1) 2))
(setq rr1(/ (* a c) (- b a)))
(setq rr2(+ rr1 c))
(command "circle"cen rr1)
(command "circle" cen rr2)
(command "LAYER" "S""0""");;;根据你所设的图层,“将0改为你所需的中心线表示层。
(command "line" pp paa"")
(setvar "osmode"os) ;;;恢复保存过的系统变量osnap的值。
(princ) ;;;退出程序。
)
我找到一个制作二维螺旋线的程序。。我们画螺旋桨用的。
温馨提示:答案为网友推荐,仅供参考