peraperson 发表于 2013-10-25 09:20:41

用字符串为子程序变量调用的问题

子程序是实现设置当前图层的 下面是子程序
(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) 好像不行

llsheng_73 发表于 2013-10-25 09:33:23

(defun var_set (/ a b)这里并没有给它指定需要任何参数而只是说明了两个局部变量,当然(var_set Masonry 8)就不行
如果需要那样,(defun var_set (/ a b)得改成(defun var_set (a b)

peraperson 发表于 2013-10-25 09:41:41

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:51:38

peraperson 发表于 2013-10-25 09:41 static/image/common/back.gif
谢谢 调用的时候还是用(var_set Masonry 8) 吗? 试了一下还是不行

什么意思呢? 我希望主程序就只有这一句(var_set Masonry 8)要修改的在子程序里 有什么办法呢

自贡黄明儒 发表于 2013-10-25 09:54:50

peraperson 发表于 2013-10-25 09:51 static/image/common/back.gif
什么意思呢? 我希望主程序就只有这一句(var_set Masonry 8)要修改的在子程序里 有什么办法呢

8 写成"8"如何?

llsheng_73 发表于 2013-10-25 09:58:14

本帖最后由 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);;这两种调用都应该没问题


xyp1964 发表于 2013-10-25 10:00:22

;; (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:07:54

本帖最后由 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")都试过了的)

peraperson 发表于 2013-10-25 10:08:43

自贡黄明儒 发表于 2013-10-25 09:54 static/image/common/back.gif
8 写成"8"如何?

还是不行

peraperson 发表于 2013-10-25 10:10:13

llsheng_73 发表于 2013-10-25 09:58 static/image/common/back.gif
你把需要给子程序的参数先确定好,再把命令中是参数的地方用成变量形式,不能用""把它们弄成直接的字符了 ...

似懂非懂
页: [1] 2
查看完整版本: 用字符串为子程序变量调用的问题