明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2748|回复: 4

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

[复制链接]
发表于 2011-7-16 23:51:02 | 显示全部楼层 |阅读模式
下面的我抄的代码,确定是红色部分出错了,因为改那儿之前是可以运行的,出现的错误描述是:参数类型错误: 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" a1  a4 "")
  (command "circle" a5 r1)
  (setvar "textsize" z1)
  (setvar "osmode" 167)
  (command "text" "s" "尺寸标注"  "m" a5 Z 0 t1)
  )
发表于 2011-7-17 00:38:19 | 显示全部楼层
不是这里的问题,程序出错的原因是标注点变量aa造成的,因为点aa必须是曲线上的点,如果点的点不在线上变量c将为nil,直接导致下面的语句出错,解决方法:
在点取标注点前先设置捕捉,以确保aa在线上。
发表于 2011-7-17 05:55:41 | 显示全部楼层
问题同2楼说的一样,测试结果感觉画的与标注方向刚好相反...
 楼主| 发表于 2011-7-17 17:45:26 | 显示全部楼层
哈哈,谢谢了,学习学习,是这么个问题!
发表于 2013-6-19 02:04:20 | 显示全部楼层
学习了,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-29 03:40 , Processed in 0.179190 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表