错误:参数类型错误 为什么?
当我运行程序后,输入插入点,提示:错误:参数类型错误:numberp: nil 为什么?我用autolisp编制绘向心球轴承的二维图形,程序如下:
(defun c:zch1 (/ p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 pc1 pc2 a fx1 fx2 t1 )
(setq d (getreal"\n 输入轴承外径"))
(setq d1 (getreal"\n 输入轴承内径"))
(setq b (getreal"\n 输入轴承宽度"))
(if (> d 40)
(setq t1 1.5) ;t1为绘制刨面线的线间距比例因子
(setq t2 0.7)
)
(setq a (/ (- d d1) 2.0) ) ;计算三个中间参数值
(setq fx1 (/ pi 2))
(setq fx2 (/ (* 3 pi) 2))
)
(setq p0 (getpoint"\n 输入图形插入点:"))
(setq p1 (polar p0 fx1 (/ d 2.0)))
(setq p2 (polar p1 0 b))
(setq pc1 (list (+ (car p0) (/ b 2.0)) (+ (cadr p0) (/ (- d a) 2.0))))
(setq pc2 (polar pc1 fx2 (- d a)))
(setq p9 (polar pc1 (/ (* pi 11) 6) (/ a 4)))
(setq p8 (polar pc1 (/ (* pi 7) 6) (/ a 4)))
(setq p4 (polar pc1 (/ pi 6) (/ a 4)))
(setq p5 (polar pc1 (/ (* pi 5) 6) (/ a 4)))
(setq p3 (list (car p2) (cadr p4)))
(setq p6 (list (car p1) (cadr p5)))
(setq p7 (list (car p1) (cadr p8)))
(setq p10 (list (car p2) (cadr p9)))
(setq p11 (polar p2 fx2 a))
(setq p12 (polar p1 fx2 a))
(setq p13 (polar p0 fx2 (/ d1 2.0)))
(setq p14 (polar p13 0 b))
(setq p15 (polar p2 fx2 (/ d 2.0)))
(setq p16 (polar p15 0 b))
(nlayer) ;调用层设置函数
(command "zoom" "w" (polar p1 fx1 10) (polar p16 fx2 10))
(command "layer" "s" 1 "") ;绘制轴承的上半部分
(command "pline" p1 p2 p3 p4 "")
(command "arc" p4 "ce" pc1 "a" 120)
(command "pline" p5 p6 p1 "")
(command "pline" p6 p7 p8 "")
(command "arc" p8 "ce" pc1 "a" 120)
(command "pline" p9 p10 p11 p12 p7 "")
(command "pline" p3 p10 "")
(command "arc" p9 "ce" pc1 p4)
(command "arc" p5 "ce" pc1 p8)
(command "mirror" "w" p1 p11 "" p0 (polar p0 0 b) "");镜像绘制轴承的下半部分
(command "pline" p12 p13 "")
(command "pline" p11 p14 "")
(command "layer" "s" 0 "")
(command "hatch" "ansi31" t1 "0" "w" p1 p3 "") ;绘制剖面线
(command "hatch" "ansi31" t1 "90" "w" p7 p11 "")
(command "hatch" "ansi31" t1 "90" "w" p13 (polar p16 fx1 (/ a 2)) "")
(command "hatch" "ansi31" t1 "0" "w" p15 (polar p16 fx1 (/ a 2)) "")
(command "layer" "s" 3 "")
(command "pline" (polar p0 pi 2) (polar p0 0 (+ b 2)) "") ;绘制轴承中心线
(command "pline" (polar pc1 fx1 (* 1.2 (/ a 4.0))) ;绘制滚珠中心线
(polar pc1 fx2 (* 1.2 (/ a 4.0))) "")
(command "pline" (polar pc1 pi (* 1.2 (/ a 4.0)))
(polar pc1 0 (* 1.2 (/ a 4.0))) "")
(command "pline" (polar pc2 fx1 (* 1.2 (/ a 4.0)))
(polar pc2 fx2 (* 1.2 (/ a 4.0))) "")
(command "pline" (polar pc1 pi (* 1.2 (/ a 4.0)))
(polar pc2 0 (* 1.2 (/ a 4.0))) "")
(command "zoom" "a")
(command "regen")
)
(defun nlayer ()
(command "layer" "n" 1 "c" 1 1 "1" "continuous" 1 "")
(command "layer" "n" 2 "c" 2 2 "1" "dashed" 2 "")
(command "layer" "n" 3 "c" 3 3 "1" "center2" 3 "")
(command "layer" "n" 4 "c" 4 4 "1" "divide2" 4 "")
)
[ 本帖最后由 jianjian88 于 2008-5-31 18:19 编辑 ] 好复杂,没看懂啊!不好意思 (setq p5 (polar pc1 (/ (* pi 5) 6 (/ a 4))) 这个错误了,少了个“)”
正确的应该是
(setq p5 (polar pc1 (/ (* pi 5) 6) (/ a 4)))
回复 #3 mitenickevin 的帖子
谢谢你能看完我的程序,指出我的错误。可是依然列表有缺陷。为什么呢?:(请问Autolisp有没有查找错误的方法?谢!
页:
[1]