选择与输入
(defun SS:xz-or-sr (/ test)(princ "\n选择对象或 回车 输入数据: ")
(if (null (setq test (ssget)))
(setq test (getstring "\n输入数据: "))
)
(setq mgc (atof (cdr (assoc 1 (entget (ssname test 0) )))))
)
求解惑:拾取的文本可以当变量参与计算,输入的数据不能当作变量参与计算,要怎么修改
参与计算可以直接用 getreal 函数输入实数 手动输入还是不行,出现错误
; 错误: 参数类型错误: lselsetp
(defun c:pj (/ by dx)
(vl-load-com)
(setq dx (getpoint "\n请选择已知点:"))
;;;(setq dgc (getreal "\n请输入宽度: "))
(princ "\n请输入宽度:")
(setq dgc (SS:xz-or-sr))
(setq y (getpoint "\n请选择插入数据的点:"))
(setq by (nth 0 y))
(setq Ld (strcat (rtos (+ dgc by) 2 3)))
(COMMAND "TEXT" "j" "Bl" y"" "" ld )
(princ)
)
(defun SS:xz-or-sr (/ test)
(princ "\n选择对象或 回车 输入数据: ")
(if (null (setq test (ssget)))
(setq test (getreal "\n输入数据: "))
)
(setq mgc (atof (cdr (assoc 1 (entget (ssname test 0))))))
)
改代码是痛苦的,还不如直接说你需要什么功能就行了。 需求:如果是拾取(选择)实数文本,或 者输入实数数据,两都都能根据操作作为计算变量进行计算 wshx 发表于 2021-6-29 10:52
手动输入还是不行,出现错误
; 错误: 参数类型错误: lselsetp
(defun c:pj (/ by dx)
(setq mgc (getreal "\n输入数据: "))
你输入的就是数字不用再转了明白吗 (defun c:pj (/ dgc y by ld)
(vl-load-com)
(princ "\n请输入宽度:")
(setq dgc (SS:xz-or-sr))
(setq y (getpoint "\n请选择插入数据的点:"))
(setq by (car y))
(setq ld (strcat (rtos (+ dgc by) 2 3)))
(command "TEXT" "j" "Bl" y"" "" ld)
(princ)
)
(defun SS:xz-or-sr (/ test)
(setq test (entsel "\n选择对象:<空格/回车 输入数据>"))
(if (null test)
(setq mgc (getreal "\n输入数据: "))
(setq mgc (atof(cdr(assoc 1 (entget(car test))))))
)
) 谢谢大神帮助,这样也可以使用
(defun SS:xz-or-sr (/ test)
(princ "\n选择对象或 回车 输入数据: ")
(if(setq test (ssget))
(progn
(setq mgc (arof (cdr (assoc 1 (entget (ssname test 0))))))
)
(setq test (getreal"\n输入数据: " ))
)
)
页:
[1]