command函数
command函数是AUTOLISP语言中特别重要的一个函数,它是与AUTOCAD接口的重要函数,通过它把AUTOLISP语言的计算结果实现为AUTOCAD的内容.
(command [arguments] ...)
执行一条 AutoCAD 命令,command 函数返回 nil。arguments 参数表示要执行的 AutoCAD 命令名和所需的响应。本函数是AUTOLISP语言非常重要的一个函数,通过调用本,将用户其它处理结果反映在图形中。其使用规则如下:
⑴ command 函数的参数可以是字符串、实数、整数、点、选择集、实体,但必须与要执行的命令所需的参数类型一致。若提供的参数类型不符,则跳过该参数,读取下一个,因此调用此函数时,必须非常熟悉命令所需参数的个数、类型、顺序。
⑵ 对于字符串、实数、整数参数可以显式的给出,也可通过变量、函数返回值的方式给出(不能是用户输入函数),对于选择集、实体只能以变量的方式给出。
⑶ 一个函数中可以调用多个AUTOCAD命令,也可多次调用该函数完成一个命令。
⑷ 空字符串 ("") 表示从键盘敲 ENTER 键。
⑸ 参数中的符号PAUSE表示此时的AUTOCAD命令参数需要用户输入,不从函数参数表中获得。如果一个命令请求输入文本字符串或属性值时遇到 PAUSE 符号,则只有当系统变量 TEXTEVAL 的值为非零时,AutoCAD 才会暂停,以使用户输入文本字符串或属性值。否则,AutoCAD 不会暂停而直接使用 PAUSE 符号的文本值(单个反斜杠字符)。当 command 函数暂停下来让用户输入时,command 函数仍是激活的,所以用户不能输入其他要进行求值的 AutoLISP 表达式。
⑹ 无参数调用 command 相当于敲 ESC 键,这样可取消大多数 AutoCAD 命令。
⑺ command 函数对每一个参数求值并顺序传给 AutoCAD 以响应提示。它以字符串形式提交命令名和选项;以两个实数组成的表的形式提交二维点;以三个实数组成的表的形式提交三维点。
⑻ command 函数不能识别命令名,为了使程序能在各种环境很好运行,所有AUTOCAD命令均应采用全写,不能采用简写方式。
⑼ 本函数只能在defun 函数中调用,command 函数返回 nil。
⑽ 如果系统变量 CMDECHO(可通过 setvar 和 getvar 函数存取)设为 0,通过 command 函数执行的命令将不会在命令行中显示。
⑾ getxxx 等用户输入函数(如 getangle、getstring、getint、getpoint等)不能在 command 函数里使用。如果需要用户输入,在调用 command 函数前调用 getxxx 函数,或在相邻的 command 函数调用之间调用 getxxx 函数。
⑿ 对于那些需要选取一个对象的 AutoCAD 命令(如 BREAK 和 TRIM 命令),可以提供一个用 entsel 函数获得的表来取代为选取一个对象而需要的点,将拾取点传给 AutoCAD。
⒀ AutoCAD 的 DTEXT 和 SKETCH 命令直接读取键盘和数字化仪,因此不能在 AutoLISP 的 command 函数中使用这两个命令。
⒁ 如果在函数中使用 'SCRIPT 命令,它必须是出现在该 AutoLISP 程序的最后。每一个通过 command 函数执行的命令都会创建一个 UNDO 组。
⒂ 如果用户在运行 AutoLISP 程序后键入 U(或 UNDO),只有最后一个命令被撤销。如果继续键入 UNDO,将把程序中的命令以从后到前的顺序撤销。
(16).从理论上将,AUTOLISP语言的程序由低版本的AUTOCAD向高版本的移植时,应该不做任何修改,但实际情况并非如此.出现问题的地方主要集中以下两个方面:
1.新版本的初始绘图环境(如捕捉模式等)与旧版本不同,因此发现程序不能在新版本下运行结果不是预期时,应检查一下捕捉模式).
2.新版本的命令运行参数顺序与旧版本的有出入,此时必须根据新版本的参数格式修改程序中相关的command函数. |