明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1819|回复: 0

[函数] CAD命令窗口的函数调用参数格式

[复制链接]
发表于 2013-12-29 20:28 | 显示全部楼层 |阅读模式
本帖最后由 林霄云 于 2013-12-29 20:37 编辑

defun
定义函数
(defun sym ([arguments] [/ variables...]) expr...)
参数
sym
函数名。
arguments
函数需要的形式参数名。
/ variables
函数使用的一个或多个局部变量名。
局部变量名称前的斜线和第一个局部名称之间,以及该斜线和最后一个参数(如果存在的话)之间,都必须保持至少一个空格的距离。

对于arguments,以下示例进行讨论。定义函数setup
  1. (defun   setup(layerAlias)
  2. (setq layerAliases_list '("AXIS""AXIS_TEXT""LABEL""SLAB-HATCH""STAIR""TABLE""TITLE""AZ""AZ_HATCH""AZ_TEXT"
  3. )

  4.   (setq layer_list '("G-AXIS(主轴线)""G-AXIS_TEXT(轴线号)""G-LABEL(引线)""G-SLAB-HATCH(板填充)""G-STAIR(楼梯)""G-TABLE(表格线)""G-TITLE(标题)""G_AZ(暗柱)""G_AZ_HATCH(暗柱填充)""G_AZ_TEXT(暗柱号)"
  5.   )

  6.   (setq color_list '("9""255""3""11""2""3""1""3""8""2"
  7.   )
  8.   
  9.   (setq linetype_list '("_AXIS100""CONTINUOUS""CONTINUOUS""CONTINUOUS""CONTINUOUS""CONTINUOUS""CONTINUOUS""_DASHED100""CONTINUOUS""CONTINUOUS"
  10.   )
  11.   
  12.   (setq linewidth_list '("0.13""0.3""0.13""0.13""0.13""0.13""0.13""0.13""0.13""0.25"
  13.   )
  14.   
  15.   (setq num (vl-position (strcase (vl-princ-to-string  layerAlias)) layerAliases_list))
  16.   (if num
  17.   (progn
  18.   (setq layname (nth num layer_list))
  19.   ;查找图层
  20.   (if ( = (tblsearch "LAYER" layname) nil)
  21.    
  22.     (progn
  23.     (setq     laycolor  (nth num color_list)
  24.                  linetype  (nth num linetype_list)
  25.                  linewidth (nth num linewidth_list)   
  26.           )

  27.     (command   "layer"       "m"             layname
  28.            "c"         laycolor          layname
  29.            "l"           linetype           layname
  30.            "lw"          linewidth      layname
  31.      ""
  32.     )
  33.     );progn
  34.     (setvar "clayer" layname)
  35.   
  36.   );if
  37.   );progn
  38.   );if num
  39.   );defun
这段代码作用是设置当前图层,输入图层名的简写,当图层不存在时生成。如(setup 'axis),则当前图层设置为G-AXIS(主轴线)
本想简化输入,如(setup axis)。事实上,在cad命令窗口如此输入行不通的。lisp将axis当成了变量名。axis其值为nil作为参数传递。如此得到结论,在cad命令窗口中,参数输入要么是数字,或者是双引号或者单引号修饰的字符串,或者是已经赋值的变量名,或者是其他函数的返回值
如果要形成简化输入,方便调用,可以增加定义一个调用函数。setu 空格 axis。其中setu设置为函数如下
  1. (defun C:setu ()
  2. (setup (getstring))
  3. )
复制代码
"觉得好,就打赏"
还没有人打赏,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 02:19 , Processed in 0.171536 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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