GamIng 发表于 2018-10-9 10:27:10

出现参数类型错误提示,请指点!

(defun c:tt (/ newtx V1 n nme oldtx V3)
(setvar "cmdecho" 0)
(if (= TEXT0 "")
    (setq TEXT0 "(-0.050)")
)
(setq newtx (getstring (strcat "\n请输入文本<" TEXT0 ">:")))
(if (= newtx "")
    (setq newtx TEXT0)
    (setq TEXT0 newtx)   
)
(if (= TEXT0 "")
    (setq newtx "(-0.050)")
)
(prompt "\n选择文本(支持标注(非天正),单、多行文本):")
(setq newtx (cons 1 newtx))
(setq V1 (ssget))
(setq n 0)
(command "chprop" V1 "" "C" 2 "")        ;改黄色
(if (/= V1 nil)
    (while (< n (sslength V1))
      (setq nme (ssname V1 n))
      (setq oldtx (assoc 1 (entget nme)))
      (setq V3 (entget nme))
      (entmod (subst newtx oldtx V3))
      (entupd nme)
      (setq n (+ n 1))
    )
)
(princ)
)
出现如下提示:
错误: 参数类型错误: stringp nil
请各位路过的大神给指点指点!谢谢!

Andyhon 发表于 2018-10-9 10:51:39

...(= TEXT0 "")...

此时 TEXT0 未赋值应是 nil
下同

建议改用 Ustr 自定义函数
(参考老帖)

GamIng 发表于 2018-10-9 11:13:09

Andyhon 发表于 2018-10-9 10:51
...(= TEXT0 "")...

此时 TEXT0 未赋值应是 nil


未赋值,if认定条件为非空。一开始我是按nil指定,但执行直接回车的空文本时就出问题了。

Ustr自定义函数?能否给个地址?

血司 发表于 2018-10-9 12:01:39

(if (not TEXT0 )
    (setq TEXT0 "(-0.050)")
)

血司 发表于 2018-10-9 12:44:55

(defun c:lxy (/ ss str)
        (if (not str )
    (setq str "(-0.050)")
)
        (setq str (getstring (strcat "\n请输入文本<" str ">:")))
        (prompt "\n选择文本(支持标注(非天正),单、多行文本):")
        (setq ss (ssget '((0 . "*TEXT,DIMENSION"))))
        (foreach s (lxy-pickset->list ss)
                (if (= (cdr (cadr (entget s))) "DIMENSION")
                        (Vlax-Put-Property (Vlax-Ename->Vla-Object s) 'TextOverride str )
                        (Vlax-Put-Property (Vlax-Ename->Vla-Object s) 'TextString str )
                )
                (Vlax-Put-Property (Vlax-Ename->Vla-Object s) 'Color 1 )
        )
)

GamIng 发表于 2018-10-9 14:46:37

血司 发表于 2018-10-9 12:01
(if (not TEXT0 )
    (setq TEXT0 "(-0.050)")
)

非常感谢!多谢!:victory:
页: [1]
查看完整版本: 出现参数类型错误提示,请指点!