新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 图形图像 > AutoCAD教程 > 正文:为AUTOLISP建立缺省输入函数

为AUTOLISP建立缺省输入函数

新客网 XKER.COM 2006-11-06 来源: 收藏本文

使用LISP编程时,常常需要用户回答一些参数,为了提高工作效率,希望能用回车代替某个特定输入即缺省值。此时,在程序中增加一个判断可使变量得到缺省回答。
如:
   (setqwidth(getreal″inputwidth:″))
   (if(nullwidth)(setqwidth0.3));回车置width的值为0.3。
   有时需要依上一次的输入值为本次的缺省输入(如:宽度、角度、距离等),这时就需要用全局变量保存上一次输入值提供缺省输入。例如,若欲将上次输入的宽度值作为缺省输入可使用下述函数:
   (if(notwidth)
   (setqwidth0.3);第一次依03为缺省值)
   (princ″\inputwidth:″)
   (princ″\n
   (princwidth)
   (princ″:″);显示提示信息
   (setqw1(getrea1))
   (if(notw1)
   (setqw1width)
   (setqwidthw1);用全局变量保存当前输入值
   (princw1)
   )
   函数的执行结果是:第一次执行时依宽度03为缺省值,提示信息为:inputwidth:,给定新的输入值后如05,下一次依宽度05为缺省提示值,提示信息为:inputwidth:。
   在一般情况下,还可通过建立缺省处理函数,加快程序处理速度,减少编码。如:
   (defundefal(strval)
   (setqglobaval)
   (princ(strcatstr″
  (princgloba)
(princ″″)
(setqvar(getreal))
  (if(notvar)
(setqvargloba);用缺省值作为输入
)
(princvar)
  )
   这是一个有参函数,它将输入的实数作为返回值。当按(defal″inputwidth″0.5)调用时提示信息为:inputwidth:。该函数能按str的提示缺省输入实数(由val给定)类值(如:角度、距离等),加入到ACADLSP文件中即可像LISP标准函数一样供其它函数调用。

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。