明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2813|回复: 13

请教关于defun xxx nil 问题

  [复制链接]
发表于 2013-1-16 10:23:45 | 显示全部楼层 |阅读模式
  1. (defun LM:acdoc nil
  2.     (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
  3.     (LM:acdoc)
  4. )

谁能解释一下上面函数的执行过程。
定义函数时,函数后面跟的不是参数,而是nil,作用是什么?
发表于 2018-9-6 17:24:31 | 显示全部楼层
好巧啊楼主,我也是看到Lee Mac这段函数的时候,搞不懂,然后来论坛搜索,结果就发现了你的帖子,哈哈。
想必你的AutoLISP现在已经学得很好了吧,我前两天才开始接触这个,以前学过一些vba,但是感觉vba好像越来越不受重视了。
 楼主| 发表于 2013-1-16 11:04:01 | 显示全部楼层
没人愿意赐教下吗?这是lee-mac的一段程序,哪位高手指点下,谢谢
发表于 2013-1-16 11:37:24 | 显示全部楼层
wuqiu1986 发表于 2013-1-16 11:04
没人愿意赐教下吗?这是lee-mac的一段程序,哪位高手指点下,谢谢

无参数函数,和
(defun LM:acdoc ()
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
   (LM:acdoc)
)
是一回事!
发表于 2013-1-16 12:51:44 | 显示全部楼层
又学习了,,还有这种 说法,,
发表于 2013-1-16 12:55:55 | 显示全部楼层
又学习了,,还有这种 说法,,
发表于 2013-1-16 14:07:39 | 显示全部楼层
为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil
(vla-get-activedocument (vlax-get-acad-object))
)
这样有什么区别呢?
 楼主| 发表于 2013-1-16 15:19:42 | 显示全部楼层
snddd2000 发表于 2013-1-16 14:07
为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil

我也不明白,看不出区别,但是Lee-mac作为一个大神,我想不应该是故弄花哨吧

点评

lee的函数只需运行一次,再需要得到acdoc对象的时候,只要(cadr LM:acdoc)  发表于 2013-1-17 08:58
 楼主| 发表于 2013-1-16 15:21:02 | 显示全部楼层
Gu_xl 发表于 2013-1-16 11:37
无参数函数,和
(defun LM:acdoc ()
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vla ...

想问下老大,就像6楼问的一样:
为什么函数里还要重新定义同名函数在执行呢?

(defun LM:acdoc nil
(vla-get-activedocument (vlax-get-acad-object))
)
这样有什么区别呢?
发表于 2013-1-17 14:00:15 | 显示全部楼层
正如G版所说。还有就是,本坛子里有这方面知识!
发表于 2013-1-17 16:13:00 | 显示全部楼层
真是看不懂,如果是只使用一次的函数,为什么不直接使用
(setq lm:acdoc (vla-get-activedocument (vlax-get-acad-object)))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 07:28 , Processed in 0.192202 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表