cafa 发表于 2022-11-19 17:03

求助判断空格

本帖最后由 cafa 于 2022-11-19 17:07 编辑

想写这么一个程序,输入第一点,第二点后后执行命令1,当不需要输入第二点时,直接空格跳过并执行命令2。请教如何判断第二点的输入方式?
(setq ss (ssget))
(setq p1 (getpoint "\n指定第一点"))
(setq p2 (getpoint "\n指定第二点"))
(if 如果P2为空格或者鼠标右键则执行命令2,这句该怎么写。请大佬赐教

AndyWang 发表于 2022-11-19 17:55

那就是没取到点,一般返回nil.

cafa 发表于 2022-11-19 18:24

AndyWang 发表于 2022-11-19 17:55
那就是没取到点,一般返回nil.

请问怎么表达呢?(if (= p2 nil)   ?

AndyWang 发表于 2022-11-19 18:50

cafa 发表于 2022-11-19 18:24
请问怎么表达呢?(if (= p2 nil)   ?

可以的,去试试就知道了。

kucha007 发表于 2022-11-19 22:13

本帖最后由 kucha007 于 2022-11-19 22:18 编辑

这样?
(defun C:TT (/ Old_Cmd SS P1 P2)
    (setq Old_Cmd (getvar "cmdecho"))(setvar "cmdecho" 0)
    (if (setq SS (SSget))
      (progn
          (setq P1 (getpoint "\n→请指定第一点"))
          (setq P2 (getpoint "\n→请指定第二点"))
          (cond
            ((and P1 P2)
            (progn
                (princ "\n→P1、P2都存在")(princ)
            )
            )
            ((and P1 (not P2))
            (progn
                (princ "\n→P1存在,但P2不存在")(princ)
            )
            )
            ((and (not P1) (not P2))
            (progn
                (princ "\n→P1、P2都不存在")(princ)
            )
            )
          )
      )
      (progn
      (princ "\n→未选择对象,命令结束")(princ)
      )
    )
    (command "redraw")
    (setvar "cmdecho" Old_Cmd)(princ)
)


sto111 发表于 2022-11-19 22:37

可能需要用到Initget函数。
(if (null p2) (2模块))

cafa 发表于 2022-11-20 00:05

kucha007 发表于 2022-11-19 22:13
这样?

是这样的,非常感谢

cafa 发表于 2022-11-20 00:06

sto111 发表于 2022-11-19 22:37
可能需要用到Initget函数。
(if (null p2) (2模块))

好的,我试一下,非常感谢

cafa 发表于 2022-11-20 00:07

AndyWang 发表于 2022-11-19 18:50
可以的,去试试就知道了。

好的,谢谢
页: [1]
查看完整版本: 求助判断空格