wshx 发表于 2021-6-28 17:59:08

选择与输入

(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) )))))
)

求解惑:拾取的文本可以当变量参与计算,输入的数据不能当作变量参与计算,要怎么修改

start4444 发表于 2021-6-28 22:51:13

参与计算可以直接用 getreal 函数输入实数

wshx 发表于 2021-6-29 10:52:15

手动输入还是不行,出现错误
; 错误: 参数类型错误: 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))))))
)

ssyfeng 发表于 2021-6-29 13:59:16

改代码是痛苦的,还不如直接说你需要什么功能就行了。

wshx 发表于 2021-6-29 14:49:51

需求:如果是拾取(选择)实数文本,或 者输入实数数据,两都都能根据操作作为计算变量进行计算

start4444 发表于 2021-6-29 17:23:40

wshx 发表于 2021-6-29 10:52
手动输入还是不行,出现错误
; 错误: 参数类型错误: lselsetp
(defun c:pj (/ by dx)


(setq mgc (getreal "\n输入数据: "))
你输入的就是数字不用再转了明白吗

Bao_lai 发表于 2021-6-29 22:58:49

(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))))))
)
)

wshx 发表于 2021-6-30 09:33:05

谢谢大神帮助,这样也可以使用
(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]
查看完整版本: 选择与输入