本帖最后由 cafa 于 2022-11-19 17:07 编辑
想写这么一个程序,输入第一点,第二点后后执行命令1,当不需要输入第二点时,直接空格跳过并执行命令2。请教如何判断第二点的输入方式?
(setq ss (ssget))
(setq p1 (getpoint "\n指定第一点"))
(setq p2 (getpoint "\n指定第二点"))
(if 如果P2为空格或者鼠标右键则执行命令2,这句该怎么写。请大佬赐教
网友答: 那就是没取到点,一般返回nil.网友答:
请问怎么表达呢?(if (= p2 nil) ?网友答:
可以的,去试试就知道了。网友答: 本帖最后由 kucha007 于 2022-11-19 22:18 编辑
这样?

网友答: 可能需要用到Initget函数。
(if (null p2) (2模块))网友答:
是这样的,非常感谢
网友答:
好的,我试一下,非常感谢网友答:
好的,谢谢
想写这么一个程序,输入第一点,第二点后后执行命令1,当不需要输入第二点时,直接空格跳过并执行命令2。请教如何判断第二点的输入方式?
(setq ss (ssget))
(setq p1 (getpoint "\n指定第一点"))
(setq p2 (getpoint "\n指定第二点"))
(if 如果P2为空格或者鼠标右键则执行命令2,这句该怎么写。请大佬赐教
网友答: 那就是没取到点,一般返回nil.网友答:
AndyWang 发表于 2022-11-19 17:55
那就是没取到点,一般返回nil.
请问怎么表达呢?(if (= p2 nil) ?网友答:
cafa 发表于 2022-11-19 18:24
请问怎么表达呢?(if (= p2 nil) ?
可以的,去试试就知道了。网友答: 本帖最后由 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)
- )
网友答: 可能需要用到Initget函数。
(if (null p2) (2模块))网友答:
kucha007 发表于 2022-11-19 22:13
这样?
是这样的,非常感谢
网友答:
sto111 发表于 2022-11-19 22:37
可能需要用到Initget函数。
(if (null p2) (2模块))
好的,我试一下,非常感谢网友答:
AndyWang 发表于 2022-11-19 18:50
可以的,去试试就知道了。
好的,谢谢