CAD lisp 程序中出现参数类型错误: numberp: nil,怎么修改,请指教~!

2025-04-24 19:30:22
推荐回答(2个)
回答1:

程序是没有错的。不过你可能是选择的有问题。


;我修改了一下

;----------------------------------------------------------------------

(defun c:gw ()

  (setq olddz (getvar "dimzin"))

  (setvar "dimzin" 0)

  (setvar "blipmode" 0)

  (prompt "选取钢筋直径:")

  (setq a (ssget))

  (setq ename (ssname a 0))

  (setq a1 (entget ename))

  (setq aa (cdr (assoc 1 a1)))

  (setq a (atof aa))

  (prompt "选取根数:")

  (setq b (ssget))

  (setq ename (ssname b 0))

  (setq b1 (entget ename))

  (setq bb (cdr (assoc 1 b1)))

  (setq b (atof bb))

  (prompt "选取单长:")

  (setq c (ssget))

  (setq ename (ssname c 0))

  (setq c1 (entget ename))

  (setq cc (cdr (assoc 1 c1)))

  (setq c (atof cc))

  (setq d (* b c 0.001))

  (setq e (rtos (* 0.006165375 a a) 2 3))

  (setq e (atof e))

  (setq f (* e d))

  (setvar "dimzin" 8)

  (setq d (rtos d))

  (prompt "选取修改总长:")

  (setq x (ssget))

  (setq x (ssname x 0))

  (setq x1 (entget x))

  (setq x1 (subst (cons 1 d) (assoc 1 x1) x1))

  (entmod x1)

  (setvar "dimzin" 8)

  (setq f (rtos f 2 3))

  (prompt "选取修改总重:")

  (setq x (ssget))

  (setq x (ssname x 0))

  (setq x1 (entget x))

  (setq x1 (subst (cons 1 f) (assoc 1 x1) x1))

  (entmod x1)

  (setvar "dimzin" olddz)

  (princ)

)

回答2:

按一下程序停在哪一句,然后重点分析。应该是返回数据空之类的错误。