找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2365|回复: 2

[求助] [求助]:在lisp中使用command和vl_cmdf有何区别?

[复制链接]
发表于 2009-1-29 14:38:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在lisp中使用command和vl_cmdf有何区别?能否举例说明。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1488个

财富等级: 财源广进

发表于 2009-1-29 20:34:41 | 显示全部楼层
语法

   (vl-cmdf  [arguments] ...)

功能

    执行 AutoCAD 命令

说明

     1)l-cmdf 函数和 command 函数类似,但在求值传递的参数方面有所不同。

         a)vl-cmdf 函数在执行 AutoCAD 命令之前检查所有的描述参数,如果在这一过程中检测到错误,将不再执行AutoCAD命令。

         b)  command 函数将每个参数顺序传递给 AutoCAD,所以在发现错误之时命令可能已开始执行了。

         c)   如果对命令的调用中包含对其他函数的调用,则 vl-cmdf 在执行命令之前先进行函数调用。而 command 则在开始执行命令后执行定函数调用。

        d )  有些命令在通过 vl-cmdf 调用时表现正常,而在通过 command 调用时则会失败。

        vl-cmdf 函数主要突破了在 command 中不能使用 getxxx 的限制。

   2 ) 参数 arguments 是AutoCAD 命令及选项。

       a)根据执行命令提示的要求,arguments 参数可以为字符串、实数、整数或点。空字符串和按 ENTER 键的效果一样。不带参数调用 vl-cmdf 和按 ESC 的效果一样,可以取消大多数 AutoCAD 命令。

       b)如果在 Visual LISP 中执行 vl-cmdf,焦点不会转换到 AutoCAD 窗口中。若命令要求用户输入,则返回值 (T) 将出现在控制台窗口中,但 AutoCAD 继续等待输入。此时,必须手动激活 AutoCAD 窗口来响应提示。但在这之前,将停止执行任何后续命令。

   返回值:

        T

   样例:

       加深 command 和 vl-cmdf 的区别,在 AutoCAD 命令提示行(而不是 VLISP 控制台提示)输入下列代码:

       1)使用 command 时,先执行 LINE 命令,然后再调用 getpoint 函数。

     

        命令:(command "line" (getpoint " getpoint ") '(0 0) "")

            line 指定第一点:getpoint

            指定下一点或 [放弃(U)]:

        命令:nil

       2)使用 vl-cmdf 时,先调用 getpoint 函数,然后再执行 LINE 命令。

        命令:(VL-CMDF "line" (getpoint "getpoint!") '(0 0) "")

                         getpoint!line 指定第一点:

              指定下一点或 [放弃(U)]:

        命令:T

3)由于向 LINE 命令传递了一个无效点表,command 函数将每个参数依次传递给 AutoCAD,而并不计算参数,所以不能检测到无效的点表,函数被取消。

命令:(command "line" (getpoint "getpoint?") '(0) "")

line 指定第一点:point?

指定下一点或 [放弃(U)]:

命令:ERASE nil

选择对象:指定对角点:*取消*

找到 0 个

命令:(VL-CMDF "line" (getpoint "getpoint!") '(0) "")

getpoint!应用程序错误: 发送到 ads_cmd 的类型无效。

nil

这是因为  vl-cmdf 在传递命令前先计算每个参数,所以检测到了无效点表,不再继续执行命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-30 00:06:17 | 显示全部楼层
解答得很详细,非常感谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-28 09:27 , Processed in 0.246145 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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