CADLISP函数.doc_第1页
CADLISP函数.doc_第2页
CADLISP函数.doc_第3页
CADLISP函数.doc_第4页
CADLISP函数.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CADLISP语言数据类型1. 表2. 文件描述符3. 实体名4. 选择集5. 内部函数(AutoLISP子程序)6. 外部函数(ADS、ARX函数)代码意义ASII码键114”“键042eESC键033n换行012r回车015t制表键011赋值与数值计算函数1. (1+ 数) 加1函数2. (1- 数) 减1函数3. (abs 数)求绝对值4. (max数 数 )求最大数5. (min数 数 )求最小数6. (sqrt数)求平方根7. (expt数 幂)乘方8. (exp 幂)e的任意次方9. (log数)对数10. (sin 角)正弦函数11. (cos角)余弦12. (atan数1数2)反正切函数13. (rem数1 数2)求余数14. (gcd数 数)最大公约数15. ( 整数)求补 注:用pi表示圆周率16. (logand数 数)按位逻辑”与”函数17. (logior数 数)按位逻辑”或”函数18. ( 数)按位逻辑”非”函数19. (and 表达式)逻辑”与”函数20. (or 表达式)逻辑”或”函数21. (not 表达式)逻辑”非”函数22. (lsh 数 位数)位移函数23. (boole 方式 数1 数2)布尔运算。方式有16种,如1为and,6为xor(异或),7为or,8为not等。24. (= 原子 原子)等于函数25. (/= 原子 原子)不等于函数26. ( 原子 原子)小于函数27. ( 原子 原子)大于函数29. (= 原子 原子)大于等于函数30. (atom 项)原子测试31. (listp 项)表测试32. (boundp 原子)原子值测试33. (null 项)空测试34. (numberp 项)数值测试35. (minusp 项)负值测试36. (zerop 项)零测试37. (eq 式1 式2)相同表达式测试38. (equal式1 式2)相等测试39. (wcmatch 字符串 模式)字符匹配测试分支与循环1. (if 条件 式1式2)若条件为真,则执行式1;否则执行式2。2. (cond(条件1 式1)(条件2 式2)分支函数。如:(cond(minusp a)(- a)(T a))求a的绝对值。注:cond是AutoLISP中最基本的条件函数,由它为核心构成的自定义函数可以实现循环和递归等功能。3. (repeat 次数 式1 式2 )重复函数。将多个表达式重复执行多次。4. (while 条件 式1 式2 )循环函数。条件为真,执行表达式。否则结束循环。如:(setq s 0 a 1)(while( a 101)(setq s(+ s a)(setq a(1+ a))(print s) 计算0100之间所有整数的和。5. (progn 式1 式2 )求多个表达式值函数。在只能用一个表达式的地方,使用他可完成多个表达式的计算。如if 语句中字符串与类型转换函数1. (ascii 字符串)ASCII码转换2. (chr 整数)字符转换3. (strcat 字符串)字符串连接4. (strlen 字符串)字符串长度测试5. (substr 字符串 起点 长度)取子字符串。如果不设置长度,则取到最后一个字符。6. (strcase 字符串 方式)字符串大小写转换。若指定了方式且非空(NIL),则把所有的字母转换为小写;否则转换为大写。7. (float 数)整型变实型8. (fix 数)实型变整型9. (itoa 整型数)整型变字符串10. (atoi 字符串)字符串变整型11. (atof 字符串)字符串变实型12. (angtos 角 方式 精度)角度单位转换。“角”是以弧度为单位的实数,转换为其它单位,返回一个字符串。该字符串是以“方式”和“精度”的要求,按AutoCAD的系统变量UNITMODE(单位模式)对“角”进行处理得到的,“精度”为小数点后的位数。“方式”有:0为度,1为度/分/秒,2为梯度,3为弧度等。13. (rtos 数 方式 精度)实数计数制转换。方式:1为科学计数法,2为十进制,3为工程制(英寸与小数英寸),4为建筑制(英寸与分数英寸)14. (cvunit 值 旧单位 新单位)单位制转换。单位名称可以是acad.unt文件中给出的任意单位格式,否则返回NIL(trans 点 旧坐标系 新坐标系)坐标转换。坐标:0为WCS(世界坐标系),1为UCS(用户坐标系),2为DCS(显示坐标系)表处理函数1. (quote 表达式)引用函数。作用:告诉程序不要对后面的表达式求值。如:(quote(x y z)可简写为 (x y z)2. (car 表)取表中的第一个元素3. (cdr 表)取子表函数。返回除第一个元素以外的所有元素组成的新表4. 由car与cdr组合而成的函数car与cdr是取表元素的基本函数。这两个函数可以组合起来使用,从而获得表中的其它元素,例如 cadr。这种组合最多可达四级,即最多六个字符,如 caddar。AutoLISP执行这组合函数时先从后面做起。例如:(caddr (1 2 3)) 返回3 (caddr (a (b c) d)) 返回(c)也就是说,若L为一张表,则有:(cadr L)=(car(cdr L))(cdadar L)=(cdr(car(cdr(car L)5. (last 表)取表中最后一个元素6. (nth n 表)取表中第n个元素(第一个元素的序号为0)7. (list 表达式)建立表函数8. (length 表)测量表长9. (append 表1 表2 )连接表函数10. (cons 新元素 表)向表中添加元素11. (subst 新项 旧项 表)元素替换函数12. (reverse 表)表倒置函数13. (assoc 关键字 关联表)assoc 函数。该函数在“关联表”中搜索“关键字”,并返回关联表中对应元素。搜索无结果,则返回NIL14. (member 表达式 表)member函数。该函数在“表”中搜索“表达式”,并返回一张由第一次出现的“表达式”及其后面所有元素构成的新表。15. (foreach 变量名 表 表达式)foreach函数。该函数依次将“表”中的每个元素的值赋给“变量名”对表中的每个元素计算每个表达式的值。函数返回最后一个表达式的计算结果。16. (apply 函数 表)Apply函数。以表为变元,执行“函数”给定的函数。如:(apply +(1 2 3)) 返回 6(apply strcat(“a” “b”)) 返回“ab”Apply既可用于内部函数,也可用于用户定义的函数。17. (mapcar 函数 表1 表2)mapcar 函数。它执行“函数”给定的函数,并以后面各表中的每个元素作为函数的变元。如:(mapcar 1+(10 20 30))返回(11 21 31)(mapcar +(10 20 30)(4 3 2))返回(14 23 32) Apply函数的操作对象是单个表中的所有元素;mapcar函数则每次只处理多个表中的对应元素,依次处理,直到结束。自定义函数1. defun函数格式:(defun 函数名 变量表 表达式)其中变量表被一个前后均有空格的斜杠符号“ / ”分成两部分(形参 / 局部变量):形参在调用函数时接受参数传递而转换为实参;局部变量仅用于函数内部1)变量表可以是空格,此时调用函数时无参数传递。2)变量表中的形参与局部变量均只在所定义的函数中起作用,甚至可以与某外部变量同名,而不会对外部变量造成任何影响2. defun函数定义AutoCAD新命令格式:(defun C:命令名() 表达式)其中:“命令名”前必须有“C:”,后面必须带一张没有形参的变元表。3. lambda函数格式:(lambda 变元表 表达式)该函数定义一个无名函数。在经常需要使用某一表达式,而又没必要用defun将它定义为一个新函数时,可使用lambda来完成这个任务。它返回最后一个表达式的值,且经常与apply和mapcar一起使用。如:(apply (lambda (x y z )(* x(- y z)(5 20 14)返回30,即5*(20-14)。又如:(mapcar (lambda (x)(* x 5)(2 4 -6 10.2))返回(10 20 -30 51.0)数据交换及相关的计算函数1. (getint 提示) 整数输入函数2. (getreal 提示) 实数输入函数3. (getstring cr 提示) 字符串数输入函数。字符串最大长度为132个字符。如果提供了cr且cr不为NIL,则输入的字符串中可以有空格,此时只有用回车来终止输入,否则可以用空格终止输入。4. (getpoint 基点 提示) 点输入函数5. (getdist 基点 提示) 距离输入函数。等待用户输入一个距离值或用光标输入两个点,返回两点间的距离。若有基点,则只需再输入一个点,该点与基点间的距离就是输入的值。6. (getcorner 基点 提示) 矩形对角点输入函数。他必须有基点,且当用户移动光标时,屏幕上画一个由基点和当前光标点为对角点的矩形。7. (getangle 基点 提示) 角度输入函数。等待用户输入一个角度,并将该角以弧度值返回。度量角度时,以变量ANGBASE设置的当前角度为零弧度,逆时针方向为正。用户可以键盘输入角度。也可以指定屏幕上两个点的方式输入角度,此时两点间连线与零度基准线的夹角就是输入的角度。若指定了“基点”,则可输入一个点来获取角度。后两种方式屏幕上会出现拖动线。8. (getorient 基点 提示) 方位角输入函数。和getangle唯一不同的是getorient的零度基准方向是水平向右的9. (initget 位值 关键字符串)输入控制函数。该函数为其后使用get函数建立各种选项。“位值”控制允许的输入方式可以是以任何组合方式累加成的一个0127之间的整数。其含义见表:位值含义1不允许空输入2不接受零值4不接受负值8不检查屏幕限定范围(即使LIMCHECK为on)16目前未使用32用虚线画拖动线和矩形框64忽略三维点的Z坐标(仅用于getdist)关键字表的目的是使用户可以以缩写的方式输入关键字。关键字的形式必须是“关键字1 关键字2 关键字3,缩写”。每个关键字间用空格分隔,逗号后面是缩写部分。有两种方式定义关键字的缩写:一是把保留的缩写字母大写,其余部分全用小写字母;二是缩写字母放在整个关键字后面(全部用大写字母表示缩写),并用逗号将它们分隔开。注意:iniget建立的控制标记和关键字表只对紧跟其后的get函数产生作用,然后被自动清除。此外,iniget函数不用于getstring和getvar函数。10. (getkword 提示)关键字输入函数。要求用户输入一个关键字 。在调用本函数之前需先用iniget函数设置一个关键字表。Getkword把与用户输入相匹配的关键字作为字符串返回。11. (angle 点1 点2)求方位角函数。返回弧度值。12. (distance 点1 点2)求两点间距离函数。3D的。13. (polar 点 角度 距离)求另一点的坐标函数。角度是以弧度为单位的 。14. (inters 点1 点2 点3 点4 方式)求交点函数。其中点1和点2为第一直线,点3和点4为第二直线。“方式”控制求交点的方式,即若此处有值且为NIL时,该函数允许交点在这两条线段的延长线上;若无方式或不为NIL,则函数只求两线段内的交点。若无交点,返回NIL。与文件有关的函数1. (load 文件名 出错处理)AutoLISP应用程序加载函数。该函数装入一个AutoLISP程序文件,并执行之。2. (ads)ads函数。返回当前装入的ADS应用程序及ARX应用程序的列表。3. (arx) arx函数。返回ARX应用程序的列表4. (arxload 文件名 出错处理)arx程序加载程序。5. (xload 文件名 出错处理)ads程序加载程序。6. (arxunload 文件名 出错处理)arx程序卸载程序。7. (xunload 文件名 出错处理)ads程序卸载程序。8. (unload 文件名 出错处理)AutoLISP应用程序卸载函数。9. (autoarxload 文件名 命令列表) arx程序自动加载程序10. (autoload 应用程序名 命令列表) AutoLISP应用程序自动加载函数。11. (autoxload 应用程序名 命令列表) ADS应用程序自动加载函数。12. (tartapp 应用程序命令 文件)WINDOWS应用程序启动函数。13. (open 文件名 读/写标志)打开文件函数。“r”为读,“w”为写。“a”向旧文件中读写的内容(该文件中应没有以CTRL/Z表示的文件结束符)。“w”和“a”状态下,可新建一个文件。文件名中含路径时,要以“/”代替“”。如:(setq f(open “new.txt” “w”)14. (close 文件描述符)关闭文件函数。如:(close f)15. (read 字符串)读取函数。该函数返回从字符串中取得的第一个表或元素。16. (read-char 文件描述符)读字符函数。该函数从键盘输入缓冲区或从“文件描述符”表示的打开文件中读入一个字符,并返回该字符的ASCII码。17. (read-line 文件描述符)读行函数。和read-char类似。只是返回一行的字符串。每执行一次,指针指向下一行。18. (write-char 整数 文件描述符)写字符函数。整数是要写字符的ASCII码。写到屏幕或“文件描述符”表示的打开的文件中。19. (write-line 字符串 文件描述符)写行函数。字符串要用引号,返回一个字符串。20. (prinl 表达式 文件描述符)prinl函数。该函数可以将“表达式”打印在屏幕上或文件中,返回表达式。表达式可以是含控制字符的字符串。e代表ESCn代表换行r代表回车t代表tabnnn代表八进制码为nnn的字符,例如:(prinl “hello”)打印“hello”(prinl “hello” f)将“hello”写入文件中(prinl (char 2)打印“002”(prinl (char 10)打印“n”21. (princ 表达式 文件描述符) 和prinl基本相同,区别是它能在表达式中实现控制字符的作用。一般的,prinl打印表达式的方法和load相兼容,而princ打印的表达式可以由如read-line这样的函数读出。22. (print 表达式 文件描述符)和prinl基本相同,只是前面换行和打印之后加空格。23. (terpri)在屏幕上打印一个空行。不用于文件的I/O操作。24. (prompt 信息)提示函数。25. (findfile 文件名)文件查找函数。其他函数1. (command AutoCAD命令 参数)注意:(1)一个空字符串(“”)等效从键盘输入一个空格,通常用于结束一个命令。(2)空调用(不加任何参数),即(command),等效在键盘上键入Ctrl+C,它取消AutoCAD大多数命令(3)当AutoCAD命令需要目标选择时,应提供一个包含entsel(实体选择)的表,而不是一个点来选择目标。(4)下列命令不能与AutoLISP的command函数一起使用:dtext,sketch,plot和prplot。(5)用户输入函数get不能在AutoLISP的command函数中使用。此外,command函数还具有暂停功能。当变量中出现PAUSE时,command函数暂停,以便用户进行某些操作。2. (menucmd 字符串)menucmd函数。该函数可以实现AutoCAD菜单中各子菜单之间的转换。格式为:菜单类型名=子菜单名菜单类型名为:S,B,I,P1P10,T1T4,A1等,其含义和菜单文件中的规定相同。如:(command “s=line”)3. (getenv 环境变量名)getenv函数。返回赋给系统环境变量的字符串。环境变量名是要读取的内容,若不存在则返回NIL4. (getvar 系统变量名)getvar 函数。提取AutoCAD系统变量的值。如:最近一次设定的倒角半径为0.25,则:(getvar “FILLETRAD”)返回0.255. (setvar系统变量名 值)设定系统变量的值。CAD命令的setvar在设定ANGBASE时按度为单位,setvar函数按弧度为单位,再设定SNAPANG时setvar函数为相对于屏幕坐标X轴正方向的弧度值,而setvar命令为相对于ANGBASE的度。6. (osnap 点 捕捉方式)按捕捉方式的要求,根据点去寻找所要求的点。如:(setq pt2(osnap pt1 “mid”))表示根据pt1去捕捉目标的中点,并赋值给pt2。7. (vports)返回当前的视窗说明表。这个表由视窗标号及视窗左下角、右上角的位置构成的表。该函数与系统变量TILEMODE的值有关。8. (type项)返回项的类型。类型有:REAL实型数FILE文件描述符STR字符串INT整型数SYM符号LIST表及用户函数SUBRAutoLISP内部函数PICKSETAutoLISP选择集ENAMEAutoLISP实体名PAGETB函数分页表9. (redraw 实体名方式)该函数的操作取决于变量的个数:1. 无变量时相当于AutoCAD的REDRAW命令。2. 有实体变量名时,仅重画该实体。3. 若两个变量都有,方式变量控制重画的方式。方式作用1在屏幕上重画实体2不画实体(隐去)3加亮实体4加亮实体不10. (graphscr)将文本屏幕转换为图形屏幕。11. (textscr)将图形屏幕转换为文本屏幕。12. (textpage)将图形屏幕转换为文本屏幕,并清除该文本屏幕。13. (trace 函数名)该函数为一个辅助调试工具。他为指定的函数设置跟踪标志。14. (untrace 函数名)解除函数的跟踪。15. (eval 表达式)返回表达式的计算结果,其中表达式为任何LISP表达式。16. (ver)返回当前AutoLISP的版本号。17. (*error* 字符串)自定义出错提示。实体和设备访问函数1. (ssget 方式点1 点2)该函数得到一个选择集。方式指定了选择实体的方式,有:W(窗口) C(交叉) L(最新的) P(前一个)等,如:(ssget “W”(0 0)(5 5))选择在角点(0 0),(5 5)窗口内的实体(ssget “C”(0 0)(5 5))选择在角点(0 0),(5 5)窗口内以及与其相交的实体(ssget (2 2))选择通过点(2 2)的实体(ssget “L”)选择最后完成的实体(ssget “P”)选择前一次选过的实体(ssget )要求用交互式选择实体该函数返回(selection set:n)。n为选择集的序号。AutoCAD规定每次构成的选择集的个数不能多于六个。通常将选择集赋值给一个变量。如:(setq s (ssget “p”))函数还有按“过滤表”的要求来构造选择集的方式。形式为(ssget “x” 过滤表)。过滤表为一关联表,它指明要检查的实体特性及匹配值。如:(ssget “x”(list (cons 0 “circle”))将返回由图中所有圆组成的选择集。如果过滤表中含有一个以上的关联表,则选择集中的每个实体必须满足所有的条件。过滤表中可以使用通配符。2. (sslength 选择集)返回选择集的长度。3. (ssname 选择集 索引号)返回选择集中一个实体的名称,该实体在选择集中的序号为其索引号。如:(setq entx (ssname sset 600))取出选择集sset中第601个实体的名称4. (ssadd 实体名 选择集)向选择集中加入新实体。若无选择集,则构成新选择集。若无任何变量,则返回一个新的空选择集。5. (ssdel 实体名 选择集)从选择集中删除指定实体。6. (ssmemb 实体名 选择集)测试给定实体是否在选择集中。若在,则返回实体名,否则返回NIL。7. (entnext 实体名)返回数据库中实体名之后的那个实体。若无变量调用,则返回数据库中第一个实体。用ssget函数构成的选择集中只有主实体名。但一个复杂实体除了主实体外,还有一些子实体。如块的属性及多义线的顶点等。用entnext函数可顺序找出各子实体8. (entlast)返回数据库中最后一个实体的名称。9. (entdel)删除当前图中的指定实体。若在本次编辑中该实体已被删除,则调用本函数可将其恢复。但它只能在删除实体的那次编辑中使实体恢复。块中定义的实体不能被删除。10. (entsel 提示)要求用户以交互的方式选择一个实体。选择实体时只能采用选点的方式,返回一张表:(实体名 选择点)。11. (nentsel 提示)用于存取包含插入的实体(内部块)定义数据。若被选择的实体不是一个复杂实体(多义线和块),nentsel和entsel返回的信息一个。若被选择实体是多义线,则nentsel返回包含子实体(顶点)和选取点的一个表。当被选择目标是一个块时,netsel返回包含描述下一个块的四个元素的一个表。12. (entget 实体名 任选集)根据实体名在数据库中检索实体,返回实体定义数据的一张表,用assoc函数可以从中检索到每一个项。表中的内容是用AutoCAD的 .DXF文件的组码的形式定义的。若提供了记录应用程序名的任选表,则返回上述表的同时返回相关指定应用程序的扩展实体数据。13. (entmake 实体定义数据表)在图中生成一个新的实体:若成功则返回数据表,否则返回NIL。其变量必须是一个实体的定义数据表,该表与entget函数返回的表格式相似,且必须提供实体的所有信息。生成一个实体的一种方法是用entget函数获取一个实体的定义数据,然后对其进行修改后加入图中。如:按圆心坐标(4,4)、半径为1绘制一个红色的圆。层和线型为缺省值:(entmake(0“CIRCLE”);实体类型(62 1);颜色(10 4.0 4.0 0.0);中心点(40 1.0);半径)14. (entmod实体定义数据表)更新实体数据库中的信息。变量为一个修改过的实体定义数据表。如:(setq en (entnext);置en为库中第一个实体的名(setq ed(entget en);置ed为en的实体定义数据表(setq ed(subst(cons 8 “0”) (assoc 8 ed) ed);将ed中图层组设为“0”层)(entmod ed);更新数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论