我的基本路线需要帮助
我试着做一个例程(我的第一个),每次调用函数时都切换两层状态。你能告诉我代码有什么问题吗?
非常感谢。
(defun c:layswitch (/ layvar)
(setvar "layvar" 1)
(if (=(getvar "layvar") 1)
(command "layer" "A" "R" "T1" "")
(setvar "layvar" 0)
) ;if
(if (=(getvar "layvar") 0)
(command "layer" "A" "R" "T2" "")
(setvar "layvar" 1)
) ;if
(princ)
);defun
看起来很快,这就是我看到的,加上什么是LAYVAR? 哼一个我创建的变量?对于每次调用函数时在layerstate T1和T2之间切换,是否良好?
编辑:这显然与layvar无关。。。我在某个地方读到需要调用defun()括号中的变量。但我想我误解了
您可能应该使用“setenv”来设置系统环境变量,或者只使用通常的“setq”来设置局部变量。 好的,请问语法有什么问题?
(defun c:layswitch ()
(setq "layvar" 1)
(if ("layvar" = 1)
(command "layer" "A" "R" "T1" "")
(setq "layvar" 0)
) ;if
(if ("layvar" = 0)
(command "layer" "A" "R" "T2" "")
(setq "layvar" 1)
) ;if
(princ)
);defun
使用“setq”时,不要在变量名周围使用引号,此外,为了检查等式,请使用:
(= xxxx yyy)
不是:
("xxxx" = yyy)
(defun c:layswitch (/ layvar)
(setq layvar 1)
(if (= layvar 1)
(command "layer" "A" "R" "T1" "")
(setq layvar 0)
) ;if
(if (= layvar 0)
(command "layer" "A" "R" "T2" "")
(setq layvar 1)
) ;if
(princ)
);defun 太好了谢谢
这部分工作正常,
现在,每次我运行该函数时,它只将我的层状态设置为T1(而不是T2)
我想这是因为第2行变量总是设置为1。
知道吗? 正确,这是你的问题
你把layvar设置为1,所以它总是1
我不确定你想做什么,(咖啡还没有开始)
对不起,我帮不了你多少,但是
你想换层吗?
比如,如果电流层是t1,那么转到t2,如果电流层是t2,那么转到t1?
当做
是的,这就是我要做的 LISP中的布尔值为nil(false),T(true)不是0和1。在这种情况下,变量“layvar”必须是全局变量。在real LISP中:
7
页:
[1]
2