明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3343|回复: 6

[请教]关于command函数

[复制链接]
发表于 2006-8-8 22:25:00 | 显示全部楼层 |阅读模式

command 可以直接调用cad里的函数,可是里面的参数怎么设置呢?哪里可以查到?比如说要画一个点,用command怎样表示呢?谢谢!

发表于 2006-8-9 08:02:00 | 显示全部楼层
command函数

command函数是AUTOLISP语言中特别重要的一个函数,它是与AUTOCAD接口的重要函数,通过它把AUTOLISP语言的计算结果实现为AUTOCAD的内容.

(command [arguments] ...)

    执行一条 AutoCAD 命令,command 函数返回 nilarguments 参数表示要执行的 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 等用户输入函数(如 getanglegetstringgetintgetpoint等)不能在 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函数.

发表于 2006-8-9 08:04:00 | 显示全部楼层

模拟命令行执行过程,其中输入参数可以与命令行执行时形式一致的字符串,也可以是autolist变量甚至autolisp表达式,空串表示回车,pause表示由操作人员输入数据。

多做试验。

例如画线:

(command "line" "2,3" pt4 "")

(command "line" pt1 (getpoint)  pt3 "")

(command "line" pt1 "@45,1000" pt5 "")

(command "line" (list 0 0 0)  pause "")

都是可以的

 

发表于 2006-8-9 09:11:00 | 显示全部楼层
不过关于""配对的,还是不懂
 楼主| 发表于 2006-8-9 10:12:00 | 显示全部楼层

谢谢!

发表于 2006-8-9 19:11:00 | 显示全部楼层

一起学习

Command命令的参数是在AutoCAD的帮助里面,而不是在Autolisp的帮助里面,在AutoCAD的帮助里MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/1acr.html" target="_blank" >命令参考的注释。

比如Text输出字符串命令,选择T命令类找到Text如下

MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/acad_acr.chm::/ac.keyboard.gif" border=0> 命令行:  text

当前文字样式:当前当前文字高度:当前

指定文字的MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/acad_acr.chm::/acr_t4.html#935578" target="_blank" >起点或 [MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/acad_acr.chm::/acr_t4.html#935613" target="_blank" >对正(J)/MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/acad_acr.chm::/acr_t4.html#935975" target="_blank" >样式(S)]:  

要进一步了解参数定义对正,则双击MSITStore:C:\Program%20Files\AutoCAD%202004\help\acad.chm::/acad_acr.chm::/acr_t4.html#935613" target="_blank" >对正(J),又详细地揭示

(command "text" "J" "BL" p1 "3.0" "90" Km)

“J”定义对正,后面紧跟的是他的参数意义

[对齐(A)/布满(F)/中心(C)/中间(M)/右(R)/左上(TL)/中上(TC)/右上(TR)/左中(ML)/正中(MC)/右中(MR)/左下(BL)/中下(BC)/右下(BR)]:

选择相应的参数就可以,也可以Autocad在命令行

先输入Text

出现“指定文字的起点或 [对正(J)/样式(S)]:”

准备调整对正时输入“J”

系统提示:

输入选项
[对齐(A)/调整(F)/中心(C)/中间(M)/右(R)/左上(TL)/中上(TC)/右上(TR)/左中(ML)/正中(
MC)/右中(MR)/左下(BL)/中下(BC)/右下(BR)]:

按要求我们输入选项“BL”

只不过Command命令将它一次输入而以,就这么简单。

 楼主| 发表于 2006-8-10 13:28:00 | 显示全部楼层
楼上讲的太详细了,知道怎么用了,谢谢诸位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-25 02:37 , Processed in 0.250153 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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