cond 函数用法
请教大家,程式运行到Cond这里无法按满足条件执行对应的操作是什么原因(defun c:aq()
(setq en(entget(car(entsel"\n选择圆:"))))
(setq cid(cdr(assoc 10 en)))
(setq cir(cdr(assoc 40 en)))
(setq n(getint"\n输入多边形<3边>:"))
(initget "C I c i")
(setq side(GETKWORD"\n[内接I]或[外切C]:"))
(setq side(strcase side))
(COND ((setq side C)(command "POLYGON"n cid "c" cir))
((setq side I)(command "POLYGON"n cid "I" cir))
(T (ALERT "未选择圆!"))
)
)
①(initget "C I")
②尽量设个默认值,如右键为C (if (null key ) (setq key "C"))
③Cond 中,只能是比较符,如(= side C) Try
(setq side C)
--->
(= side "C") 改进了下,你看下
(defun c:aq(/ en cid cir n side)
(setq en(entget(car(entsel"\n选择圆:"))))
(setq cid(cdr(assoc 10 en)))
(setq cir(cdr(assoc 40 en)))
(if (not (setq n(getint"\n输入多边形<3边>:")))
(setq n 3)
)
(initget "C I")
(setq side(GETKWORD"\n[内接I]或[外切C]:"))
(if (null side ) (setq side "C"))
(setq side(strcase side))
(COND
((= side "C")(command "POLYGON" n cid "c" cir))
((= side "I")(command "POLYGON" n cid "I" cir))
(T (ALERT "未选择圆!"))
)
)
Andyhon 发表于 2020-8-24 16:16
Try
(setq side C)
--->
是这个问题导致无法执行,谢谢指教 不知道你到底怎么理解的 (setq side C) ,还是提醒下:
在你的原代码中C 是个变量,本例程中还是没有定义的空变量,也就是nil值 (如果其他例程中没有定义过,因为是全局变量所以提醒下),把变量C的值赋给side变量, 也就是前面两句话无论如何都是nil ,这种操作有点迷茫了,
看您不习惯定义局部变量,如果您在其他例程中定义了C值,到这里会直接赋值给side,这时候会给你惊喜。但是肯定不是你想要的结果 来留个名 打个卡 G〆h 发表于 2020-8-24 16:23
改进了下,你看下
(defun c:aq(/ en cid cir n side)
(setq en(entget(car(entsel"\n选择圆:"))))
你这个改得很好用,谢谢 muwind 发表于 2020-8-24 21:46
不知道你到底怎么理解的 (setq side C) ,还是提醒下:
在你的原代码中C 是个变量,本例程中还是没有定义 ...
是的,我确实没有定义局部变量的习惯,以后会注意,谢谢提醒.
页:
[1]