用字符串为子程序变量调用的问题
子程序是实现设置当前图层的 下面是子程序(defun var_set (/ a b)
(setq ts (tblsearch "layer" "a"))
(if (null ts)
(command "layer" "m" "a" "c" "b" "a" "")
(command "layer" "s" "a" "")
)
现在我想调用这个子程序时 比如图层名为Masonry 颜色为8 那么要这样写呢? (var_set Masonry 8) 好像不行 (defun var_set (/ a b)这里并没有给它指定需要任何参数而只是说明了两个局部变量,当然(var_set Masonry 8)就不行
如果需要那样,(defun var_set (/ a b)得改成(defun var_set (a b) llsheng_73 发表于 2013-10-25 09:33 static/image/common/back.gif
(defun var_set (/ a b)这里并没有给它指定需要任何参数而只是说明了两个局部变量,当然(var_set Masonry...
谢谢 调用的时候还是用(var_set Masonry 8) 吗? 试了一下还是不行 peraperson 发表于 2013-10-25 09:41 static/image/common/back.gif
谢谢 调用的时候还是用(var_set Masonry 8) 吗? 试了一下还是不行
什么意思呢? 我希望主程序就只有这一句(var_set Masonry 8)要修改的在子程序里 有什么办法呢 peraperson 发表于 2013-10-25 09:51 static/image/common/back.gif
什么意思呢? 我希望主程序就只有这一句(var_set Masonry 8)要修改的在子程序里 有什么办法呢
8 写成"8"如何? 本帖最后由 llsheng_73 于 2013-10-25 10:10 编辑
peraperson 发表于 2013-10-25 09:51 static/image/common/back.gif
什么意思呢? 我希望主程序就只有这一句(var_set Masonry 8)要修改的在子程序里 有什么办法呢
额,看样子你对参数在概念上还有点混乱。。。
你把需要给子程序的参数先确定好,再把命令中是参数的地方用成变量形式,不能用""把它们弄成直接的字符了,那样CAD的COMMAND命令会直接把"a"作为命令的参数而不是把你给a这个变量所赋的值娄成命令参数。。
具体该怎么写我也不清楚,我对CAD的很多命令的命令行参数都不太清楚,也很少用它,因为它太讨厌,总会因为版本而对参数顺序进行一些小调整,而让程序无法通用,所以我一般刻意避免了使用COMMAND。同时我所用CAD版本也许和你的不一样,就算我帮你调试了这个命令,那也是在我所用这个CAD版本上能通过,至于在你那能不能行得通,那就说不好了,所以最终还得你自己去调试它
可以给你写个简单点的例子
(defun mycir1(p r)
(command"_CIRCLE" P r) ;;;(command"_CIRCLE" P "r")这样是错的,"r"不会成为一个有效的参数
)
(setq p(list 1 2 0) r 5)
(mycir p r)
(mycir (list 1 2 0) 5);;这两种调用都应该没问题
;; (var_set "Masonry" 8)
(defun var_set (la co)
(if (null (tblsearch "layer" la))
(command "layer" "m" la "c" co la "")
(command "layer" "s" la "")
)
) 本帖最后由 peraperson 于 2013-10-25 10:19 编辑
xyp1964 发表于 2013-10-25 10:00 static/image/common/back.gif
好像还是不行
(回复 xyp1964 恩恩 带了的 还是不行 (var_set "Maonry" 8) (var_set "Maonry" "8") 和(var_set Maonry "8")都试过了的) 自贡黄明儒 发表于 2013-10-25 09:54 static/image/common/back.gif
8 写成"8"如何?
还是不行 llsheng_73 发表于 2013-10-25 09:58 static/image/common/back.gif
你把需要给子程序的参数先确定好,再把命令中是参数的地方用成变量形式,不能用""把它们弄成直接的字符了 ...
似懂非懂
页:
[1]
2