- 积分
- 24100
- 明经币
- 个
- 注册时间
- 2018-4-24
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2019-8-1 12:45:29
|
显示全部楼层
我说的肯定是对的
(eval (list 'defun 'LM:acdoc '() (alert "a") (vla-get-activedocument (vlax-get-acad-object))));先计算(alert "a"),返回nil
(eval (list 'defun 'LM:acdoc nil nil (vla-get-activedocument (vlax-get-acad-object))))
;再计算vlax-get-acad-object,返回对象
(eval (list 'defun 'LM:acdoc nil nil (vla-get-activedocument #<VLA-OBJECT IAcadApplication 00007ff71ec6c910>)))
;再计算vla-get-activedocument,返回对象
(eval (list 'defun 'LM:acdoc nil nil #<VLA-OBJECT IAcadDocument 0000000030636888>)
;然后list得到一个表(DEFUN LM:ACDOC nil nil #<VLA-OBJECT IAcadDocument 0000000030636888>),这个表里的都是值,不再是代码
再然后就是重新定义函数,这个函数里的只有值,你再调用函数时肯定不会再计算了,直接就返回值了.
他就是把值存在了函数里
就相当于
(defun LM:ACDOC ()
"a"
1
nil
2
)
这个函数里只有值 ,不可能有其它东西
你再调用的时候,他只返回最后的1个值,不管你这个函数前面有什么值
|
|