uditx 发表于 2011-7-16 23:51:02

参数类型错误: numberp: nil 谁能帮我一下呀

下面的我抄的代码,确定是红色部分出错了,因为改那儿之前是可以运行的,出现的错误描述是:参数类型错误: numberp: nil,那位大侠帮我下呀 不胜感激!
(defun c:jzfh()
(vl-load-com)
(setq chklay (tblsearch "layer" "尺寸线"))
                   (if (= chklay nil)
                     (command "layer" "n" "尺寸线" "c" "7" "尺寸线" ""))
      (setq chksty (tblsearch "style" "尺寸标注" ))
                   (if (= chksty nil)
         (command "style" "尺寸标注" "txt.shx" "" "0.7" "" "" "" ""))
(setvar "cmdecho" 0)
    (command"clayer" "尺寸线")
(setq a (vlax-ename->vla-object (car (entsel))))
(setq aa (getpoint "标注点:"))
(setq c (vlax-curve-getparamatpoint a aa))
(setq d (vlax-curve-getfirstderiv a c))
(setq e (atan (cadr d) (car d)))
(setq m (polar aa (+ e (/ pi 2)) 100))
(setq n (polar aa (- e (/ pi 2)) 100))
(setq s (getpoint "标注方向:"))
(setq u (distance s m))
(if (< u 100) (setq an1 (angle m n)) (setq an1 (angle n m)))
(setq z1 (getvar "textsize" ))
(setvar "textsize" 4.5)
(setq z (getvar "textsize" ))
(setq t1 (getstring "\n基准名:"))
(setvar "osmode" 0)
(cond
   ((= an1 0)
             (setq a1 (polar aa 0 1)
   a2 (polar a1 (/ pi 2) (/ z 2))
   a3 (polar a2 (* pi 1.5) Z)
   a4 (polar a1 0 z)
   a5 (polar a4 0 (/ z 1.3))))
    ((< an1 pi)
            (setq a1 (polar aa an1 1)
    a2 (polar a1 (+ an1 (/ pi 2))(/ z 2))
                  a3 (polar a2 (- an1 (/ pi 2)) z )
    a4 (polar a1 an1 z )
    a5(polar a4 an1 (/ z 1.3))))
   ((> an1 pi )
   (setq a1 (polar aa (+ an1 pi) (- 0 1))
    a2 (polar a1 (- an1 (/ pi 2))(/ z 2))
                  a3 (polar a2 (- an1 (/ pi 2)) (- 0 z ))
    a4 (polar a1 (+ an1 pi) (- 0 z ))
    a5(polar a4 (+ an1 pi) (- 0 (/ z 1.3) ))))
      ((= an1 pi)
            (setq a1 (polar aa pi 1)
   a2 (polar a1 (/ pi 2) (/ z 2))
   a3 (polar a2 (* pi 1.5) Z)
   a4 (polar a1 pi z)
   a5 (polar a4 pi (/ z 1.5)))))
(setq r1(distance a4 a5))
(command "pline" a2 "w" "0.3" "0.3" a3 "")
(command "line" a1a4 "")
(command "circle" a5 r1)
(setvar "textsize" z1)
(setvar "osmode" 167)
(command "text" "s" "尺寸标注""m" a5 Z 0 t1)
)

zhynt 发表于 2011-7-17 00:38:19

不是这里的问题,程序出错的原因是标注点变量aa造成的,因为点aa必须是曲线上的点,如果点的点不在线上变量c将为nil,直接导致下面的语句出错,解决方法:
在点取标注点前先设置捕捉,以确保aa在线上。

ljpnb 发表于 2011-7-17 05:55:41

问题同2楼说的一样,测试结果感觉画的与标注方向刚好相反...

uditx 发表于 2011-7-17 17:45:26

哈哈,谢谢了,学习学习,是这么个问题!

yangkerjkl 发表于 2013-6-19 02:04:20

学习了,谢谢楼主
页: [1]
查看完整版本: 参数类型错误: numberp: nil 谁能帮我一下呀