AUTO LISP函数参考5

合集下载

autolisp函数大全.doc

autolisp函数大全.doc

函数大全一、数学运算功能函数1.l(十数值数值…)返回:累计实数或整数数值1.2(一数值数值…)返回:差值1.3(* 数值数值…)返回:所有数值乘积1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商1.5(l十数值)返回:数值十ll. 6(1—数值)返回:数值一ll.7(abs 数值)返回:数值的绝对值1.8(atan 数值)返回:反正切值1.9(cos 角度)返回:角度的余弦值,角度值为弧度1.10(exp 数值)返回:数值的指数1.11(expt 底数指数)返回:底数的指数值1.12(fix 数值)返回:将数值转换为整数值1.14(gcd 数值1 数值2)返回:两数值的最大公因数1.15(log 数值)返回:数值的自然对数值1.16(max 数值数值…)返回:数值中的最大值1.17(min 数值数值…)返回:数值中的最小值1.18 pi 常数∏,其值约为3.14159261.19(rem 数值 1数值 2)返回:M数值的相除的余数l.20(sin 角度)返回:角度的正旋值,角度值为弧度1.21(sqrt 数值)返回:数值的平方根二、检验与逻辑运算功能函数2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式22.3(<表达式1 表达式2) 比较表达式1是否<小于表达式22.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式22.5(>表达式1 表达式2)比较表达式1是否>大于表达式22.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式22.7 (~数值)返回:数值的位 not值,(1的补码)2.8 (and 表达式1 表达式2…)返回:逻辑and的结果2.9(boole 函数整数整数…)返回:位式布尔运算2.10(eq 表达式1 表达式2)比较表达式1与表达式2是否相同,适用列表比较(实际相同)2.11(equal 表达式 1表达式 2[差量])比较表达式 1与表达式 2是否相同,差量可省略(内容相同)三、转换运算功能函数3.l(angtof 字符串[模式])返回:角度值的字符串转成实数3.2(angtos 角度[模式[精度]])返回:角度转成的字符串值3.3(atof 字符串)返回:字符串转成实数值3.4 (atoi 字符串)返回:字符串转成整数值3.5 (cvunit 数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件3.6(distof 字符串[模式])返回:根据模式将字符串转成实数值3.7(itoa 整数)返回:整数转成字符串3.8(rtos 数值模式[精度])返回:实数转成字符串3.9 (trans 点原位置新位置[位移])返回:转换坐标系统值四、列表处理功能函数4.1 (append 列表列表……)结合所有列表成一个列表4.2(assoc 关键元素联合列表)根据关键元素找寻联合列表中关系信息4.3 (car 列表)返回列表中的第一个元素,通常用来求X坐标4.4(cadr 列表)返回列表中的第二个元素,通常用来求y坐标4.5(caddr 列表)返回列表中的第三个元素,通常用来求Z坐标4.6(cdr 列表)返回:除去第一个元素后的列表4.7(cons 新元素列表)返回:将新元素添加到列表4.8(foreach 名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应4.9(length 列表)返回:列表内的元素数量4.10(list 元素元素…)返回:将所有元素合并为一列表4.11(listp 元素)返回:判断元素是否为一串4.12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表4.13(member 关键元素列表)返回:根据关键元素(含似后的列表4.14(nth n 列表)返回:列表的第n个元素4.15(reverse 列表)返回:将列表元素根据顺序颠倒过来的列表4.16(subst 新项旧项列表)返回:替换新旧列表后的列表五、字符串、字符、文件处理函数5.l(ascii 字符串)返回:字符串第一个字符的“ASCII”码5.2 (chr 整数)返回:整数所对应的ASCII单一字符串5.3(close 文件名称)关闭文件5.4(open 文件名模式)返回:打开文件代码,准备读取或写入信息5.5(read 字符串)返回:列表中的字符串的第一组元素5.6(read-char[文件代码])返回:通过键盘或文件中读取单一字符5.7(read-line [文件代码])返回:经由键盘或文件中读取一行字符串5.8(strcase 字符串[字样])返回:转换字符串大小写5.9(strcat 字符串1字符串2…)返回:将各字符串合并为一个字符串5.10(strlen 字符串)返回:字符串构成的字符数(即字符串长度)5.11(substr 字符串起始长度)返回:取出于字符串‘5.12(wcmatch 字符串格式)返回:T或 nil,将字符串与通用字符进行比较5.13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕15.14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数6.l (getangle [基点] [提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无6.2(getcorner 基点[提示])请求输入另一矩形框对角点坐标6.3(getdist [基点][提示])请求输入一段距离6.4(getint [提示])请求输入一个整数值6.5(getkword [提示]请求输入“关键词”6.6(getorient [基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响6.7(getPoint [基点][提示])请求输入一个点的坐标6.8(getreal [提示]请求输入一个实数6.9(getstring [提示])请求输入一个字符串6.10(initget [位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle 点1 点2)取得两点的角度弧度值7.2(distance 点1 点2)取得两点的距离7.3(inters 点1 点2 点3 点 4[模式])取得两条线的交点7.4(osnap 点模式字符串)按照捕捉模式取得另一坐标点7.5(polar 基点弧度距离)按照极坐标法取得另一坐标点7.6(textbox 对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel 对象名称)删除或取消删除对象8.2(entget 对象名称[应用程序列表])取出对象名称的信息列表8.3 (entlast)取出图形信息中的最后一个对象8.4(entmake 对象列表)建立一个新的对象列表8.5(entmod 对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext [对象名称])找寻图面中的下一个对象8.7(entsel [提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd 对象名称)更新屏幕上复元体图形8.9(handent 图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp [提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd [对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel 对象名称选择集)将对象自选择集中移出9.3(ssget [模式][点 1][点 2]取得一个选择集9.4(ssget ”X” [过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth 选择集)计算选择集的对象个数9.6(ssmemb 对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname 选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext 符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch 符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command ”AutoCAD命令”…)超重量级函数,调用执行 AutoCAD命令10.2(findfile 文件名)返回:该文件名的路径及文件名10.3(getfiled 标题内定档名扩展名旗号)通过标准 AutoCAD文件对话 DCL对话框获得文件10.4(getenv ”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar ”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar ”系统变量”值)设定该系统变量的值10.7(regapp 应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If <比较式><表达式1> [表达式2] 检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2( repeat 次数 [< 表达式><表达式>…])重复执行 N次表达式11.3(While <比较式><表达式>…)当条件成立则执行表达式内容11.4(cond <比较式 1><表达式 1>多条件式的 if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5 ( prong 表达式1 表达式2…)连接其中的表达式为一组,常用于配合if、cond 等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error* 字符串)程序错误时的警示信息12.2(alert 字符串)以对话框式显示出警告字符串12.3(apply 功能函数列表)将功能函数与列表结合后执行12.4(defun 名称自变量列表表达式_.)自定函数或子程序12.5(eval 表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda 自变量表达式)定义未命名的函数12.8(progn 表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond 等函数12.9(quit)强制退出目前的应用程序12.10(tablet 代码 [列1列2列3方向])取用或建立对数字板的校调12.11(trace 函数…)对函数设定追踪标记,辅助检错12.12(untrace 函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数13.l(gfaphscr)作图环境切换到图形画面13.2(grclear)暂时清除模前的屏幕画面13.3(grdraw起点终点颜色[亮显])暂时性的画出一条线13.4(grread[追踪])由输入设备读取追踪值13.5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上13.6(grvecs向量列表[转置矩阵])暂时性的画出多条线13.7(menucmd字符串);提供在 AlltOLISP中调用各菜单13.8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开13.9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl 13.10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl 13.11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息13.12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13.13(terpri)在屏幕上显示新列13.14(textscr)作图环境切换到文字画面13.15(textpage)清除文字画面文字类似 DOS的cls命令13.16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数14.l(atom元素)如果元素不是列表,响应T,否则为nil14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或 nil,响应表达式是否有值存在14.4(minusp元素)返回:T或n儿元素是否为负值14.5(not元素)返回:T或n儿判定元素是否为ni114.6(null元素)返回:T或nil判定元素是否被赋予nil值14.7(numberp元素)返回:T或nil,元素是否为整数或实数14.8(quote表达式)响应表达式未检算前状态,同“‘”功能14.9(set符号表达式)将表达式结果设定给带单引号’符号14.10(setq符号1 表达式1[符号2表达式2]…)设定表达式结果给各符号14.11(type元素)返回:元素的信息型态14.12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载 ARX程序列表15.3(arxload应用程序[出错处理]))返回:加载 ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载 ARX程序15.5(ver)返回:目前 AutoLISP版本字符串15.6(load LSP文件名[加载失败])加载 AutoLISP文件(*.lsp)15.7 (xload应用程序[错处理])加载ADS应用程序15.8 (xunloa应用程序[出错处理])卸载 ADS应用程序十六、内存空间管理函数16.l(alloc数值)以节点数值设定区段大小16.2(expand数值)以区段数值配置节点空间16.3(gc)强制收回废内存16.4(mem)显示目前的内存使用状态16.5(xdroom对象名称)返回对象扩展信息允许使用的内存空间16.6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数17.l(acad_colordlg 颜色码旗号)显示出标准 AutoCAD颜色选择对话框17.2(acad_helpdlg 求助文件名主题)显示出标准 AutoCAD求助对话框17.3(acad_strlsort字符串列表)作字符串列表排序17.4(bherrs)取得 bhatch与 bpcly失败所产生的错误信息17.5(bhatch点[选择集[向量]])根据 Pick point选点方式调用 bhatch命令,绘制选集区域的剖面线17.6(bpoly点[选择集[向量]])根据Pick point选点方式调用bpoly命令并产生一定域Polyline17.7(cal计算式字符串)执行如 CAL计算功能十八、ADS、ARX外部定义的3D函数18.1(align自变量 1 自变量 2....)执行如 ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制18.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d 自变量1 自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1 自变量2 自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF 18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量 1 自变量2…)执行如 ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF 18.21 (c:scene模式 [选项]) SCENE场景管理18.22(C:setuv模式选集自变量1 自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量 1 自变量工..)建立 3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1 自变量2…)管理外部数据库19.2(c:aseexportt自变量1 自变量2…)输出信息19.3 (c:aselinks自变量1 自变量2…)连接对象与信息19.4(c:aserow自变量1 自变量2…)管理外部信息表格19.5(c:aseselect自变量1 自变量2…)建立外部信息与对象选集19.6 (c:asesqled自变量 1 自变量2…)执行SQL程序。

autolisp函数大全

autolisp函数大全

a u t o l i s p函数大全(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--函数大全一、数学运算功能函数1.l(十数值数值…)返回:累计实数或整数数值1.2(一数值数值…)返回:差值1.3(* 数值数值…)返回:所有数值乘积1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商1.5(l十数值)返回:数值十ll. 6(1—数值)返回:数值一ll.7(abs 数值)返回:数值的绝对值1.8(atan 数值)返回:反正切值1.9(cos 角度)返回:角度的余弦值,角度值为弧度1.10(exp 数值)返回:数值的指数1.11(expt 底数指数)返回:底数的指数值1.12(fix 数值)返回:将数值转换为整数值1.14(gcd 数值1 数值2)返回:两数值的最大公因数1.15(log 数值)返回:数值的自然对数值1.16(max 数值数值…)返回:数值中的最大值1.17(min 数值数值…)返回:数值中的最小值1.18 pi 常数∏,其值约为3.14159261.19(rem 数值 1数值 2)返回:M数值的相除的余数l.20(sin 角度)返回:角度的正旋值,角度值为弧度1.21(sqrt 数值)返回:数值的平方根二、检验与逻辑运算功能函数2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式22.3(<表达式1 表达式2) 比较表达式1是否<小于表达式22.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式22.5(>表达式1 表达式2)比较表达式1是否>大于表达式22.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式22.7 (~数值)返回:数值的位 not值,(1的补码)2.8 (and 表达式1 表达式2…)返回:逻辑and的结果2.9(boole 函数整数整数…)返回:位式布尔运算22.10(eq 表达式1 表达式2)比较表达式1与表达式2是否相同,适用列表比较(实际相同)2.11(equal 表达式 1表达式 2[差量])比较表达式 1与表达式 2是否相同,差量可省略(内容相同)三、转换运算功能函数3.l(angtof 字符串[模式])返回:角度值的字符串转成实数3.2(angtos 角度[模式[精度]])返回:角度转成的字符串值3.3(atof 字符串)返回:字符串转成实数值3.4 (atoi 字符串)返回:字符串转成整数值3.5 (cvunit 数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件3.6(distof 字符串[模式])返回:根据模式将字符串转成实数值3.7(itoa 整数)返回:整数转成字符串3.8(rtos 数值模式[精度])返回:实数转成字符串3.9 (trans 点原位置新位置[位移])返回:转换坐标系统值四、列表处理功能函数4.1 (append 列表列表……)结合所有列表成一个列表4.2(assoc 关键元素联合列表)根据关键元素找寻联合列表中关系信息4.3 (car 列表)返回列表中的第一个元素,通常用来求X坐标4.4(cadr 列表)返回列表中的第二个元素,通常用来求y坐标4.5(caddr 列表)返回列表中的第三个元素,通常用来求Z坐标4.6(cdr 列表)返回:除去第一个元素后的列表4.7(cons 新元素列表)返回:将新元素添加到列表4.8(foreach 名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应4.9(length 列表)返回:列表内的元素数量4.10(list 元素元素…)返回:将所有元素合并为一列表4.11(listp 元素)返回:判断元素是否为一串4.12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表4.13(member 关键元素列表)返回:根据关键元素(含似后的列表4.14(nth n 列表)返回:列表的第n个元素4.15(reverse 列表)返回:将列表元素根据顺序颠倒过来的列表4.16(subst 新项旧项列表)返回:替换新旧列表后的列表3五、字符串、字符、文件处理函数5.l(ascii 字符串)返回:字符串第一个字符的“ASCII”码5.2 (chr 整数)返回:整数所对应的ASCII单一字符串5.3(close 文件名称)关闭文件5.4(open 文件名模式)返回:打开文件代码,准备读取或写入信息5.5(read 字符串)返回:列表中的字符串的第一组元素5.6(read-char[文件代码])返回:通过键盘或文件中读取单一字符5.7(read-line [文件代码])返回:经由键盘或文件中读取一行字符串5.8(strcase 字符串[字样])返回:转换字符串大小写5.9(strcat 字符串1字符串2…)返回:将各字符串合并为一个字符串5.10(strlen 字符串)返回:字符串构成的字符数(即字符串长度)5.11(substr 字符串起始长度)返回:取出于字符串‘5.12(wcmatch 字符串格式)返回:T或 nil,将字符串与通用字符进行比较5.13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕15.14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数6.l (getangle [基点] [提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无6.2(getcorner 基点[提示])请求输入另一矩形框对角点坐标6.3(getdist [基点][提示])请求输入一段距离6.4(getint [提示])请求输入一个整数值6.5(getkword [提示]请求输入“关键词”6.6(getorient [基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响6.7(getPoint [基点][提示])请求输入一个点的坐标6.8(getreal [提示]请求输入一个实数6.9(getstring [提示])请求输入一个字符串6.10(initget [位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle 点1 点2)取得两点的角度弧度值7.2(distance 点1 点2)取得两点的距离7.3(inters 点1 点2 点3 点 4[模式])取得两条线的交点47.4(osnap 点模式字符串)按照捕捉模式取得另一坐标点7.5(polar 基点弧度距离)按照极坐标法取得另一坐标点(textbox 对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel 对象名称)删除或取消删除对象8.2(entget 对象名称[应用程序列表])取出对象名称的信息列表8.3 (entlast)取出图形信息中的最后一个对象8.4(entmake 对象列表)建立一个新的对象列表8.5(entmod 对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext [对象名称])找寻图面中的下一个对象8.7(entsel [提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd 对象名称)更新屏幕上复元体图形8.9(handent 图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp [提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd [对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel 对象名称选择集)将对象自选择集中移出9.3(ssget [模式][点 1][点 2]取得一个选择集9.4(ssget ”X” [过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth 选择集)计算选择集的对象个数9.6(ssmemb 对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname 选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext 符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch 符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command ”AutoCAD命令”…)超重量级函数,调用执行 AutoCAD命令10.2(findfile 文件名)返回:该文件名的路径及文件名10.3(getfiled 标题内定档名扩展名旗号)通过标准 AutoCAD文件对话 DCL对5话框获得文件10.4(getenv ”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar ”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar ”系统变量”值)设定该系统变量的值10.7(regapp 应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If <比较式><表达式1> [表达式2] 检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2( repeat 次数 [< 表达式><表达式>…])重复执行 N次表达式11.3(While <比较式><表达式>…)当条件成立则执行表达式内容11.4(cond <比较式 1><表达式 1>多条件式的 if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5 ( prong 表达式1 表达式2…)连接其中的表达式为一组,常用于配合if、cond等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error* 字符串)程序错误时的警示信息12.2(alert 字符串)以对话框式显示出警告字符串12.3(apply 功能函数列表)将功能函数与列表结合后执行12.4(defun 名称自变量列表表达式_.)自定函数或子程序12.5(eval 表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda 自变量表达式)定义未命名的函数12.8(progn 表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond 等函数12.9(quit)强制退出目前的应用程序12.10(tablet 代码 [列1列2列3方向])取用或建立对数字板的校调12.11(trace 函数…)对函数设定追踪标记,辅助检错12.12(untrace 函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数13.l(gfaphscr)作图环境切换到图形画面613.2(grclear)暂时清除模前的屏幕画面13.3(grdraw起点终点颜色[亮显])暂时性的画出一条线13.4(grread[追踪])由输入设备读取追踪值13.5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上13.6(grvecs向量列表[转置矩阵])暂时性的画出多条线13.7(menucmd字符串);提供在 AlltOLISP中调用各菜单13.8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开13.9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl13.10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl13.11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息13.12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13.13(terpri)在屏幕上显示新列13.14(textscr)作图环境切换到文字画面13.15(textpage)清除文字画面文字类似 DOS的cls命令13.16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数14.l(atom元素)如果元素不是列表,响应T,否则为nil14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或 nil,响应表达式是否有值存在14.4(minusp元素)返回:T或n儿元素是否为负值14.5(not元素)返回:T或n儿判定元素是否为ni114.6(null元素)返回:T或nil判定元素是否被赋予nil值14.7(numberp元素)返回:T或nil,元素是否为整数或实数14.8(quote表达式)响应表达式未检算前状态,同“‘”功能14.9(set符号表达式)将表达式结果设定给带单引号’符号14.10(setq符号1 表达式1[符号2表达式2]…)设定表达式结果给各符号14.11(type元素)返回:元素的信息型态14.12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载 ARX程序列表715.3(arxload应用程序[出错处理]))返回:加载 ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载 ARX程序15.5(ver)返回:目前 AutoLISP版本字符串15.6(load LSP文件名[加载失败])加载 AutoLISP文件(*.lsp)15.7 (xload应用程序[错处理])加载ADS应用程序15.8 (xunloa应用程序[出错处理])卸载 ADS应用程序十六、内存空间管理函数16.l(alloc数值)以节点数值设定区段大小16.2(expand数值)以区段数值配置节点空间16.3(gc)强制收回废内存16.4(mem)显示目前的内存使用状态16.5(xdroom对象名称)返回对象扩展信息允许使用的内存空间16.6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数17.l(acad_colordlg 颜色码旗号)显示出标准 AutoCAD颜色选择对话框17.2(acad_helpdlg 求助文件名主题)显示出标准 AutoCAD求助对话框17.3(acad_strlsort字符串列表)作字符串列表排序17.4(bherrs)取得 bhatch与 bpcly失败所产生的错误信息17.5(bhatch点[选择集[向量]])根据 Pick point选点方式调用 bhatch命令,绘制选集区域的剖面线17.6(bpoly点[选择集[向量]])根据Pick point选点方式调用bpoly命令并产生一定域Polyline17.7(cal计算式字符串)执行如 CAL计算功能十八、ADS、ARX外部定义的3D函数(align自变量 1 自变量 2....)执行如 ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制818.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d 自变量1 自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1 自变量2 自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF 18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量 1 自变量2…)执行如 ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF 18.21 (c:scene模式 [选项]) SCENE场景管理18.22(C:setuv模式选集自变量1 自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量 1 自变量工..)建立 3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1 自变量2…)管理外部数据库19.2(c:aseexportt自变量1 自变量2…)输出信息19.3 (c:aselinks自变量1 自变量2…)连接对象与信息19.4(c:aserow自变量1 自变量2…)管理外部信息表格19.5(c:aseselect自变量1 自变量2…)建立外部信息与对象选集19.6 (c:asesqled自变量 1 自变量2…)执行SQL程序9。

autolisp函数大全.doc

autolisp函数大全.doc

函数大全一、数学运算功能函数1.l(十数值数值…)返回:累计实数或整数数值1.2(一数值数值…)返回:差值1.3(* 数值数值…)返回:所有数值乘积1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商1.5(l十数值)返回:数值十ll. 6(1—数值)返回:数值一ll.7(abs 数值)返回:数值的绝对值1.8(atan 数值)返回:反正切值1.9(cos 角度)返回:角度的余弦值,角度值为弧度1.10(exp 数值)返回:数值的指数1.11(expt 底数指数)返回:底数的指数值1.12(fix 数值)返回:将数值转换为整数值1.14(gcd 数值1 数值2)返回:两数值的最大公因数1.15(log 数值)返回:数值的自然对数值1.16(max 数值数值…)返回:数值中的最大值1.17(min 数值数值…)返回:数值中的最小值1.18 pi 常数∏,其值约为3.14159261.19(rem 数值 1数值 2)返回:M数值的相除的余数l.20(sin 角度)返回:角度的正旋值,角度值为弧度1.21(sqrt 数值)返回:数值的平方根二、检验与逻辑运算功能函数2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式22.3(<表达式1 表达式2) 比较表达式1是否<小于表达式22.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式22.5(>表达式1 表达式2)比较表达式1是否>大于表达式22.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式22.7 (~数值)返回:数值的位 not值,(1的补码)2.8 (and 表达式1 表达式2…)返回:逻辑and的结果2.9(boole 函数整数整数…)返回:位式布尔运算2.10(eq 表达式1 表达式2)比较表达式1与表达式2是否相同,适用列表比较(实际相同)2.11(equal 表达式 1表达式 2[差量])比较表达式 1与表达式 2是否相同,差量可省略(内容相同)三、转换运算功能函数3.l(angtof 字符串[模式])返回:角度值的字符串转成实数3.2(angtos 角度[模式[精度]])返回:角度转成的字符串值3.3(atof 字符串)返回:字符串转成实数值3.4 (atoi 字符串)返回:字符串转成整数值3.5 (cvunit 数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件3.6(distof 字符串[模式])返回:根据模式将字符串转成实数值3.7(itoa 整数)返回:整数转成字符串3.8(rtos 数值模式[精度])返回:实数转成字符串3.9 (trans 点原位置新位置[位移])返回:转换坐标系统值四、列表处理功能函数4.1 (append 列表列表……)结合所有列表成一个列表4.2(assoc 关键元素联合列表)根据关键元素找寻联合列表中关系信息4.3 (car 列表)返回列表中的第一个元素,通常用来求X坐标4.4(cadr 列表)返回列表中的第二个元素,通常用来求y坐标4.5(caddr 列表)返回列表中的第三个元素,通常用来求Z坐标4.6(cdr 列表)返回:除去第一个元素后的列表4.7(cons 新元素列表)返回:将新元素添加到列表4.8(foreach 名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应4.9(length 列表)返回:列表内的元素数量4.10(list 元素元素…)返回:将所有元素合并为一列表4.11(listp 元素)返回:判断元素是否为一串4.12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表4.13(member 关键元素列表)返回:根据关键元素(含似后的列表4.14(nth n 列表)返回:列表的第n个元素4.15(reverse 列表)返回:将列表元素根据顺序颠倒过来的列表4.16(subst 新项旧项列表)返回:替换新旧列表后的列表五、字符串、字符、文件处理函数5.l(ascii 字符串)返回:字符串第一个字符的“ASCII”码5.2 (chr 整数)返回:整数所对应的ASCII单一字符串5.3(close 文件名称)关闭文件5.4(open 文件名模式)返回:打开文件代码,准备读取或写入信息5.5(read 字符串)返回:列表中的字符串的第一组元素5.6(read-char[文件代码])返回:通过键盘或文件中读取单一字符5.7(read-line [文件代码])返回:经由键盘或文件中读取一行字符串5.8(strcase 字符串[字样])返回:转换字符串大小写5.9(strcat 字符串1字符串2…)返回:将各字符串合并为一个字符串5.10(strlen 字符串)返回:字符串构成的字符数(即字符串长度)5.11(substr 字符串起始长度)返回:取出于字符串‘5.12(wcmatch 字符串格式)返回:T或 nil,将字符串与通用字符进行比较5.13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕15.14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数6.l (getangle [基点] [提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无6.2(getcorner 基点[提示])请求输入另一矩形框对角点坐标6.3(getdist [基点][提示])请求输入一段距离6.4(getint [提示])请求输入一个整数值6.5(getkword [提示]请求输入“关键词”6.6(getorient [基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响6.7(getPoint [基点][提示])请求输入一个点的坐标6.8(getreal [提示]请求输入一个实数6.9(getstring [提示])请求输入一个字符串6.10(initget [位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle 点1 点2)取得两点的角度弧度值7.2(distance 点1 点2)取得两点的距离7.3(inters 点1 点2 点3 点 4[模式])取得两条线的交点7.4(osnap 点模式字符串)按照捕捉模式取得另一坐标点7.5(polar 基点弧度距离)按照极坐标法取得另一坐标点7.6(textbox 对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel 对象名称)删除或取消删除对象8.2(entget 对象名称[应用程序列表])取出对象名称的信息列表8.3 (entlast)取出图形信息中的最后一个对象8.4(entmake 对象列表)建立一个新的对象列表8.5(entmod 对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext [对象名称])找寻图面中的下一个对象8.7(entsel [提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd 对象名称)更新屏幕上复元体图形8.9(handent 图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp [提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd [对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel 对象名称选择集)将对象自选择集中移出9.3(ssget [模式][点 1][点 2]取得一个选择集9.4(ssget ”X” [过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth 选择集)计算选择集的对象个数9.6(ssmemb 对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname 选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext 符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch 符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command ”AutoCAD命令”…)超重量级函数,调用执行 AutoCAD命令10.2(findfile 文件名)返回:该文件名的路径及文件名10.3(getfiled 标题内定档名扩展名旗号)通过标准 AutoCAD文件对话 DCL对话框获得文件10.4(getenv ”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar ”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar ”系统变量”值)设定该系统变量的值10.7(regapp 应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If <比较式><表达式1> [表达式2] 检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2( repeat 次数 [< 表达式><表达式>…])重复执行 N次表达式11.3(While <比较式><表达式>…)当条件成立则执行表达式内容11.4(cond <比较式 1><表达式 1>多条件式的 if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5 ( prong 表达式1 表达式2…)连接其中的表达式为一组,常用于配合if、cond 等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error* 字符串)程序错误时的警示信息12.2(alert 字符串)以对话框式显示出警告字符串12.3(apply 功能函数列表)将功能函数与列表结合后执行12.4(defun 名称自变量列表表达式_.)自定函数或子程序12.5(eval 表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda 自变量表达式)定义未命名的函数12.8(progn 表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond 等函数12.9(quit)强制退出目前的应用程序12.10(tablet 代码 [列1列2列3方向])取用或建立对数字板的校调12.11(trace 函数…)对函数设定追踪标记,辅助检错12.12(untrace 函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数13.l(gfaphscr)作图环境切换到图形画面13.2(grclear)暂时清除模前的屏幕画面13.3(grdraw起点终点颜色[亮显])暂时性的画出一条线13.4(grread[追踪])由输入设备读取追踪值13.5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上13.6(grvecs向量列表[转置矩阵])暂时性的画出多条线13.7(menucmd字符串);提供在 AlltOLISP中调用各菜单13.8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开13.9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl 13.10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl 13.11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息13.12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13.13(terpri)在屏幕上显示新列13.14(textscr)作图环境切换到文字画面13.15(textpage)清除文字画面文字类似 DOS的cls命令13.16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数14.l(atom元素)如果元素不是列表,响应T,否则为nil14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或 nil,响应表达式是否有值存在14.4(minusp元素)返回:T或n儿元素是否为负值14.5(not元素)返回:T或n儿判定元素是否为ni114.6(null元素)返回:T或nil判定元素是否被赋予nil值14.7(numberp元素)返回:T或nil,元素是否为整数或实数14.8(quote表达式)响应表达式未检算前状态,同“‘”功能14.9(set符号表达式)将表达式结果设定给带单引号’符号14.10(setq符号1 表达式1[符号2表达式2]…)设定表达式结果给各符号14.11(type元素)返回:元素的信息型态14.12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载 ARX程序列表15.3(arxload应用程序[出错处理]))返回:加载 ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载 ARX程序15.5(ver)返回:目前 AutoLISP版本字符串15.6(load LSP文件名[加载失败])加载 AutoLISP文件(*.lsp)15.7 (xload应用程序[错处理])加载ADS应用程序15.8 (xunloa应用程序[出错处理])卸载 ADS应用程序十六、内存空间管理函数16.l(alloc数值)以节点数值设定区段大小16.2(expand数值)以区段数值配置节点空间16.3(gc)强制收回废内存16.4(mem)显示目前的内存使用状态16.5(xdroom对象名称)返回对象扩展信息允许使用的内存空间16.6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数17.l(acad_colordlg 颜色码旗号)显示出标准 AutoCAD颜色选择对话框17.2(acad_helpdlg 求助文件名主题)显示出标准 AutoCAD求助对话框17.3(acad_strlsort字符串列表)作字符串列表排序17.4(bherrs)取得 bhatch与 bpcly失败所产生的错误信息17.5(bhatch点[选择集[向量]])根据 Pick point选点方式调用 bhatch命令,绘制选集区域的剖面线17.6(bpoly点[选择集[向量]])根据Pick point选点方式调用bpoly命令并产生一定域Polyline17.7(cal计算式字符串)执行如 CAL计算功能十八、ADS、ARX外部定义的3D函数18.1(align自变量 1 自变量 2....)执行如 ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制18.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d 自变量1 自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1 自变量2 自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF 18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量 1 自变量2…)执行如 ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF 18.21 (c:scene模式 [选项]) SCENE场景管理18.22(C:setuv模式选集自变量1 自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量 1 自变量工..)建立 3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1 自变量2…)管理外部数据库19.2(c:aseexportt自变量1 自变量2…)输出信息19.3 (c:aselinks自变量1 自变量2…)连接对象与信息19.4(c:aserow自变量1 自变量2…)管理外部信息表格19.5(c:aseselect自变量1 自变量2…)建立外部信息与对象选集19.6 (c:asesqled自变量 1 自变量2…)执行SQL程序。

AUTO LISP函数参考5

AUTO LISP函数参考5

AUTO LISP函数参考4 实体数据函数下列函数可让用户检索和修改定义实体的数据,所有函数都用实体名指定要操作的实体.4.1 (entdel <实体名> )如果由<实体名>指定的实体在当前图中,它就被删掉,如果在这次编辑中该实体已被删除,那么它将被重新恢复出来(从当前图中).退出图形编辑程序时,被删除的实体便从图中彻底清除掉了,所以ENTDEL只能在删除实体的那次编辑过程中使实体再恢复.ENTDEL只对主实体进行操作.对属性和多义线的顶点是不能脱离其双亲实体而予删除的(可使用COMM AND函数执行ATTEDIT或PEDIT命令来达到这一目的).例如:(setq e1 (entnext) ) ;置E1为图中第一个实体的名(entdel e1) ;删去实体E1(entdel e1) ;不删除(恢复)已被删去的实体E14.2 (entget <实体名> )从数据库中检索到名为<实体名>的实体,并以表形式返回,此表包含实体的定义数据表的结果以LISP的关联表形式编制,用ASSOC函数可以容易地从中检索每一项.表中的对象是用AutoCAD的DXF组码形式定义的,它们是为实体数据的每个部分准备的.例如,用下列命令序列画线,然后再检索此线:对下面的例子,我们假定:. 当前层是"0",. 当前线型是"CONTINUOUS"(缺省值),. 当前Z向高度是零(缺省值),. 实体标号功能被关闭,而且. FLATLAND系统变量值为零.假设用下列命令画一条线:Command: LINEFrom point: 1,2To point: 6,6To point: RETURN然后可以用下述命令为线检索实体数据:Command: (setq a (entget (entlast)))假定系统变量FLATLAND为零(即要求3D点).这样,将把A置为下表(为了可读,作了缩进排列):( (-1 . <Entity name: 60000014>)(0 . "LINE") ;Entity type(8 . "0") ;Layer(10 1.0 2.0 0.0) ;Start point(11 6.0 6.0 0.0) ;End point)表的开头-1项包含这个所代表的实体名.下面描述的ENTMOD函数将用这种表来识别要修改的实体.表示某一值的点对表可以很容易地用ASSOC提取,再用CDR分离出它们的值.实体中各部分的编码是DXF所用的那些编码,在AutoCAD参考手册的附录C中有描述.和DXF一样,实体题头项(实体的颜色和线型,属性跟随标志,厚度,及实体标号)只有在不为缺省值时才被输出. 和DXF不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的意图是为了简化处理;对于使用那种操作和处理它们的通用程序,可以总是假设这些字段是存在的.另外与DXF不同的是,三维坐标是被组合成一个点值表,如(10 1.0 2.0 3.0),而不象DXF格式中所出现的三个独立的10,20和30组值.注意,点的子表不同于以上所述的点对型的.我们约定,子表的CDR即为组值,由于点是由两个实数(或三个函数)组成的一个表,所以使得整个组为一个三元素(或四元素)表.这个组的CDR即为代表此点的表.因此,这便保证了CDR总能返回组值的这个约定.当编写函数来处理这些实体表时,必须保证它们与子表的顺序无关.使用ASSOC能保证达到这个要求.包含实体名的-1组使得修改操作只须诉诸于实体表,也避免了在平行(另外的)结构内保持实体名的要求.在多义线或属性集最后的SEQEND实体中包含-2组,它的CDR 是这个实体的排头的实体名.这样,查到SEQEND,就能从子实体序列中找到排头,然后用SEQ END实体中-2组的CDR作为实体名,从而由此获得相关联的主实体.下面的例子表示一个更复杂的实体数据.对此例,我们假定当前的UCS处在WCS中关于Z 轴逆时针旋转40度的位置,实体标号的功能是打开状态和系统变量FLATLAND为零.Command: LINETYPE?/Create/Load/Set: SETNew entity linetype <BYLAYER>: DASHED?/Create/Load/Set: RETURNCommand: COLORNew entity color <BYLAYER>: BLUECommand: LAYER?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw: MAKENew current layer <0>: ANNOTATION?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw: RETURNCommand: TEXTStart point or Align/Center/Fit/Middle/Right/Style: 2,2Height <0.2000>: 0.3Rotation angle <0>: 30Text: So long,and thanks for all the fish!Command: (setq ed (entget (setq e (entlast))))在这种情况下,E将被置为TEXT的实体名,而ED被置为它的实体表(如下示).查找Auto CAD参考手册中的附录C就能知道这个表的具体含意.( (-1 . <Entity name: 6000053c>)(0 . "TEXT") ;Entity type(8 . "ANNOTANTION") ;Layer(6 . "DASHED") ;Linetype(62 . 5) ;Color(5 . "7E") ;Handle(10 2.0 2.0 0.0) ;Start point(40 . 0.3) ;Height(1 . "So long,and thanks for all the fish!")(50 . 0.523599) ;Rotation angle (radians)(41 . 1.0) ;Width factor(51 . 0.0) ;Obliquing angle(7 . "STANDARD") ;Text style(71 . 0) ;Generation flags(72 . 0) ;Justification(11 0.0 0.0 0.0) ;Alignment point(210 0.0 -0.642788 0.766044) ;Extrusion direction vector)所有与实体有关的点均以实体坐标系的形式表达(ECS),对于点(point),线(Line),三维线(3DLine),三维面(3DFace),三维多义线(3DPolyline),三维网格(3DMesh),和标注(D imension)实体,而对于所有其余实体,其实体坐标(ECS)则可从通用坐标系(WCS)和实体本身的延伸方向(组代码为210)中导出.当用非通用坐标系绘制实体时(如上例中的Text),需将点值变换为通用坐标或当前的用户坐标(UCS),这可通过TRANS函数来实现.用上面的Tex t实体为例:(setq p (cdr (assoc 10 ed) ) ) 可能返回 (2.0 2.0 0.0)将文本实体的起点赋给P,即Text实体的实体坐标(ECS),(注意按这种形式返回的点与在用ENTGET时设置的当前用户坐标系无关).现在:(trans p e 0) 可能返回 (2.0 1.53209 1.28558)这里用e作为"from"转换码,将文本实体的起点从其实体坐标形式转换为通用坐标形式.如果系统变量FLATLAND是非零值并且上例中的实体是在与通用坐标系(WCS)等效的用户坐标系<UCS>中绘制的,则ENTGET返回的有关点值将是二维通用坐标(2D WCS)形式,并具有一个组代码为38的组值,该组值用以定义实体的Z向高度(如果为非零值的话),同时210组值(延伸方向)将被取消.4.3 (entmod <实体表> )ENTMOD接受由ENTGET返回的那种格式的表( <实体表> ),为此实体更新其在数据库中信息,该实体名由<实体表>中的-1组指定.因此,AutoLISP更新数据库的基本方法就是用ENTG GET提取实体,修改定义该实体的表(注意,AutoLISP的SUBST函数对这种操作非常有用),而用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) ;修改图中实体EN的图层ENTMOD对它要做的更改加了一此限制.首先,不能更改实体的类型和实体标号(如果要这样做,则先用ENTDEL删除它,再用COMMAND函数建立一个新的实体).实体表引用的所有对象在执行ENTMOD之前必须是AutoCAD已知的.因此文本类型、线型、形状和块名,在ENTMOD 修改实体表之前必须预先定义好.这个规定的一个例外就是层名,如果在实体表中用到还没有定义的层,那么ENTMOD将用"LAYER NEW"命令和层的标准缺省值产生一个新层.对于那些使用浮点值的字段(如厚度thickness),ENTMOD可以接受一个整数,但它会自动将其转变成浮点值.同样;如果为那些整数型实体数据段(如颜色码)指定了一个浮点值,则ENTMOD也会自动将其截断成整数来处理.正如DXFIN对DXF文件中的数据处理一样,ENTMOD对提供给它的表也进行一致性检查.如果检测出严重错误,且严重到数据库已无法更新,则返回nil.否则,ENTMOD将返回作为变元送给它的表.ENTMOD将不会改变内部字段,如:实体中SEQEND实体中的-2组中的实体名--- 对更改这样字段的企图被作为无效处理.更新主实体时,ENTMOD既修改这个实体,又更新它在屏幕上的图象(包括子实体).当使用ENTMOD更新子实体(多义线的顶点或块的属性)时,子实体将只在数据库中被更新,但是屏幕上的图象不会被重新显示.当对给定子实体的所有修改完成后,就可以用下面描述的ENTUPD函数来更新屏幕上的图象.4.4 (entupd <实体名> )如上所述,当使用ENTMOD对多义线顶点或块属性进行修改后,整个复合实体并不在屏幕上更新.例如,如果修改某条复杂多义线上的100个顶点,那么当每个顶点更改时都对多义线进行重新计算和重新显示,这样会使工作速度变得不可接受地缓慢.ENTMOD函数可用于在屏幕上更新经修改的多义线或块.可以用多义线或块中的任何部分的实体名调用ENTUP D.它没有必要是领头实体--ENTMOD将会找到头.虽然ENTUPD是用于多义线和具有属性的块,但实际上也可被其它任何实体调用.它将总是重新生成屏幕上的实体,包括所有的子实体.例如,设图中第一个实体是一条有若干顶点的多义线,那么:(setq e1 (entnext) ) ;置E1为多义线的实体名(setq e2 (entnext e1) ) ;置E2为多义线的第一个顶点(setq ed (entget e2) ) ;置ED为顶点的数据(setq ed(subst '(10 1.0 2.0)(assoc 10 ed) ;改变ED中的顶点位置为1,2ed))(entmod ed) ;移动图中的顶点(entupd e1) ;重新生成多义线实体E14.5 限制实体名和选择集只对图形编辑过程有效,它们是在图形编辑过程中从AutoCAD取得的. 另外在执行PLINE和ATTEDIT命令的过程中企图执行下列操作,则会返回nil,而且不执行所要求的函数.ENTMOD 修改一个现存实体ENTUPD 重新生成一个经修改的复杂实体ENTDEL 恢复和重新生成一个删去的实体5 将实体名和选择集与AutoCAD一起使用对于AutoCAD的实体选择提示,用实体名和选择集输入是有效的.因此,对由AutoLISP命名的实体可以用AutoCAD命令进行操作.在"Select object: "提示下AutoLISP可以提供一个实体名,它指定了单个实体,或者一个选择集,它选择了集中的所有实体.凡在AutoCAD允许使用"Last"选择项的地方,用AutoLISP给出实体名或选择集也是有效的(不管实体是否可见,它们都具有与拾取一个实体相同的效果,但却不必指定一个拾取点).在AutoCAD允许使用指点目标方式进行选择的地方,ENTSEL返回的那种格式的表将被选择过程接收.它们从表中选择实体,指定表中的点作为它们的拾取点.这就允许AutoLISP 将这种形式的实体拾取点传送给如BREAK,FILLET,CHAMFER,TRIM和EXTEND这样的命令.注意,只要命令允许拾取点,ENTSEL型格式的表也可用于其它选择.6 对处理曲线拟合和样条拟合多义线的说明当使用ENTNEXT逐步通过多义线的各顶点时,可能会碰到一些不是有意建立的顶点,这些是辅助顶点,是PEDIT的Fit和Spline选择项自动插入的.用户可能想略去这些辅助顶点,因为在下次对多义线使用PEDIT的Fit和Spline时会取消对这些辅助点作的变动.从多义线实体的组标号70中,用户可看出多义线是曲线拟合(位值为2)的还是样条拟合(位值为4)的.如果未设置这两种位值,则多义线的所有顶点都是正常的.如果设置了曲线拟合位(2),则多义线的辅助顶点将具有其组标号70设置的位值1.以表示这些顶点是在曲线拟合过程中插入的.如果您想使用ENTMOD来移动这种多义线的顶点,并使用PEDIT来重新拟合曲线,那么您应该略去这些辅助的顶点.同样,如果多义线实体的样条拟合标记位值置为4,则会对各顶点进行分类,有些顶点的标记位值为1(在曲线拟合时插入,若系统变量SPLINESEGS为负),有些顶点的位值为8(在样条拟合时插入),所有其他顶点的位值都为16(样条骨架的控制点).同样,如果您使用ENTMOD 来移动顶点,然后想重新拟和样条,那么只应该移动作为控制点的那些顶点.7 符号表访问函数函数,它们能够读取(也只能读取)增加了两个分别由AutoCAD的图层、线型、赋名视图, 字型和块定义所组成的符号表.这两个新函数是TBLENXT和TBLSERCH,它们的描述如下.7.1 (tblnext <表名> [ <第一个> ] )本函数用于扫描整个符号表.第一个变元是一个字符串,它表明你想访问的符号表名.有效的表名包括"LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"、"UCS"和"VPORT".字符串不一定要大写.如果给出第二个变元且求值结果不为nil,则反绕回符号表头且返回表中第一项;否则,返回表中下一项.当到表尾时,则返回nil.被删去的表项不再返回.当找到一项后就返回一个如DXF类型的代码点对表,很像ENTGET函数的返回值.例如, (tblnext "Layer" T) ; 检索第1个图层将返回:( (0 . "LAYER") ; 符号类型(2 . "0") ; 符号名(70 . 0) ; 标志(62 . 7) ; 颜色号,如层被开闭则为负(6 . "CONTINUOUS") ; 线型名)注意,这里没有"-1"组.AutoCAD会记住从每个表中最后返回的项,每次调用TBLNEXT将自动地返回下一项.开始扫描表时,必须保证第二变元为非nil值,这样函数才能绕回表头并返回第一项.在"BLOCK"表中有一个组代码为-2的实体名,它是该块定义中的第一个实体的名.这样,如果已知一个块名叫BOX:(tblnext "block") ; 检索块定义可能返回:( ( 0 . "Block") ; 符号类型(2 . "Box") ; 符号名(70 . 0) ; 标志(10 . 9.000000 2.000000 0.000000) ; X,Y,Z的原点(-2 . <实体名:40000126> ) ; 第一个实体)"-2"组中的实体名只能被ENTGET和ENTNEXT所接受,其它实体访问函数是不能访问的. 这就是说,不允许用ENTMOD修改或用SSADD、ENTSEL将其收进某一选择集.依靠-2组的实体名,可以用ENTNEXT扫描构成块定义的各个实体;ENTNEXT对块定义中的最后一个实体名返回nil.如果系统变量FLATLAND为零,TBLNEZT对三维点将总以四元表的形式返回,如( 10 0.0 2.0 3.0).如果FLATLAND为非零值,则三维点按三元表(二维)形式返回,但这时将有一个组码为30的点对表,用以说明点的Z向高度值.7.2 (tblsearch <表名> <符号> [<顺序状态>] )此函数搜索用<表名>指定的符号表(同TBLNEXT一样),寻找由<符号>指定的符号名.两个名称都能自动转换成大写字母.如果找到了给定的符号名,有关该项的信息用TBLNEXT一样的格式返回.如果找不到该项,则返回nil.例如:(tblsearch "style" "standard") ; 字型检索将返回:( ( 0 . "STYLE" ) ; 符号类型( 2 . "STANDARD") ; 符号名字(70 . 0) ; 标志(40 . 0.000000) ; 固定字高(41 . 1.000000) ; 字宽因子(50 . 0.000000) ; 倾斜角(71 . 0 ) ; 生成标志(3 . "txt") ; 主字体文件(4 . "STYLE") ; 大字体文件)一般TBLSEARCH不影响被TBLNEXT检索的符号表顺序,但若TBLSEARCH操作无误,且可选变元<顺序状态>存在并为非空值,则会调整TBLNEXT的检索顺序,使得下次调用TBLNEXT能返回紧随在这次调用TBLSEARCH之后的表项.变元<顺序状态>的这一功能对于处理VPORT符号表是极有用的,因为在特定的设置情况下,所有的视窗均具有同一名称.例如,要在名为"4VIEW"的设置中寻找并处理每一视窗,可使用如下程序段:(setq V (tblsearch "VPORT" "4VIEW" T) ) ;寻找第一个视窗(while (and V (= (cdr assoc 2 V) ) "4VIEW") )... 处理视窗 ...(setq V (tblnext "VPORT") ) ;取得下一个视窗)如果系统变量FLATLAND为零,TBLNEXT对三维点将总以四元素的形式返回,如( 10 1.0 2.0 3.0),如果FLATLAND为非零值,则三维点按三元表(二维)形式返回,但这时将有一个组码为30的点对表,用以说明点的Z向高度值.8 对图形屏幕的输入设备的访问这一节讲述的AutoLISP函数允许从AutoLISP直接对AutoCAD图形屏幕的输入设备进行访问,使得用AutoLISP完成的命令可以和用户进行交互,就像用户和AutoCAD交互一样.这些命令可能会把屏幕图形搞乱,但用户可用下列命令恢复:(grtext)(redraw)所以没有必要担心.这些函数只提供给有经验的应用程序开发者使用.大多数AutoLISP 应用程序将不必用到这些函数.还需提请这些函数的用户注意,这些函数的操作可能会直接随着AutoCAD的发行版本的变化而更改,因此,AutoDISK公司不能保证使用这些函数的应用程序的向上兼容性.使用GRTEXT和GRREAD函数的应用程序也许不能在所有的硬件配置上以同样效果工作,除非开发者非常认真地遵循下面介绍的有关它们的使用规则.8.1 (grclear)这个函数清空当前视窗(在单屏幕系统中,它先从文字屏幕转换图形屏幕).但命令/提示、状态和菜单区保持不变.图形屏幕的原来内容可以用REDRAW函数恢复.8.2 (grdraw <起点> <终点> <颜色> [<加亮>] )GRDRAW在当前视窗中的两点之间画一条矢量线.<起点>和<终点>是两个二维或三维点( 两个实数或三个实数的表),它们指定当前用户坐标系中矢量的两个端点.若矢量线超出当前显示区,它们将被修剪以适合于屏幕.矢量将以整数<颜色>变元指定的颜色画出,-1指定"XOR涂描"方式,它复盖它画过的地方,当被复盖时就抹掉它自己.如果任选项<加亮>变元(整数)存在并且为非零值,矢量就加以加亮的形式画出,就象显示设备加亮所选择的目标一样(通常以虚线形式).如果省略了<加亮>项,或者提供的值为零,则使用通常的显示方式.8.3 (grtext [ <框区> <文本> [<加亮>] ] )利用GRTEXT,AutoLISP可以将文本写到AutoCAD图形屏幕的文本区上.如果调用它时有<框区>变元,且其范围从0到屏幕菜单框区最大编号减一,那么它将在指定的屏幕菜单框区内显示字符串变元<文本>.如果<文本>太长放不进菜单框区,则将它截尾,如果太短则填加空格.如果提供了任选的整数变元<加亮>,则加亮(若变元为非零值)指定菜单框区内的文字,或去掉(若变元为零值)指定菜单框区内的文字加亮态(注意,加亮另一个菜单框区将自动地去掉已被加亮的框区的加亮显示态).当往菜单框区写东西时,文本须先在无<加亮>方式下写,然后才可做加亮显示.对和原来写到菜单框区的文本相同的字符串,必须提供加亮或去掉加亮的变元.如果不注意这些规则,将会导致AutoLISP程序在不同的显示设备上产生不同的结果操作.注意,这个函数只不过能在屏幕菜单区内显示所提供的文本;它并不改变被其覆盖的屏幕菜单项.另外,某些显示器上采用重新涂覆菜单项来实现加亮菜单框区的操作,故用GRTEXT写字可能会导致将用户加亮菜单框区时的菜单项内容恢复出来.还有一些显示器,当用REDRAW, REGEN等命令或执行屏幕切换时;会自动重写菜单区内容.然而对大部分显示器,用GRTEXT 往屏幕菜单区内写字可保留到直至调用下页屏幕菜单为止.如果调用GRTEXT时其框区编号为-1,文本将被写到屏幕的方式状态行上.方式状态行的长度因显示器的类型而不同(除IBM彩色图形适配器之外,大多数显示器至少允许40个字符).当<文本>太长以致不能容纳在状态行可用空间内,GRTEXT将对它进行截尾.如果使用的框区号为-2,将把文本写到坐标状态行上.注意,如果坐标跟踪处于打开态, 一旦定标器发送新的一组坐标值,写到该处的文本值将被复盖掉.对于-1或-2菜单框区号, <加亮>变元不起作用.最后,如果调用GRTEXT时不加任何变元,就能将屏幕上所有的文本区域恢复到它们的标准数值状态.8.4 (grread [ <跟踪> ] )利用GRREAD,用户可以直接读AutoCAD的输入设备,任选变元<跟踪>指定了是否跟踪定标器的移动.只有非常特殊的命令才会用到这个函数--AutoLISP的大多数输入应该通过各种各样的"GETxxx函数",如GETSTRING,GETREAL等.<跟踪>变元如果存在且不为nil,那么当定标器移动时,就能从它那儿返回坐标值,而不需要按选择按钮.这就是AutoCAD用于实现拖曳的机制.GRREAD返回一个表,它的第一个元素是指定输入类型的编码.第二个元素既可能是一个整数,也可能是一个点表,这取决于输入类型.表中第一个元素编码方式如下:2 键盘字符----第二个元素为ASCII码.3 选择的点----作为表的坐标4 屏幕菜单单元选择----第二个元素作为菜单框区号.5 第二个元素为拖曳方式坐标.只有当第二个变元指定了且不为nil时,才返回.6 BUTTONS(按钮)菜单项选择----第二个元素为按钮号.7 数字化TABLET1菜单项----第二个元素为菜单项编号.8 数字化TABLET2菜单项----第二个元素为菜单项编号.9 数字化TABLET3菜单项----第二个元素为菜单项编号.10 数字化TABLET4菜单项----第二个元素为菜单项编号.11 数字化AUXI菜单项----第二个元素为菜单项编号.12 第二个元素作为与定标器按钮对应的坐标返回.总是跟随类型6的返回表.13 由键盘输入选择加亮屏幕菜单项.返回的第二个元素是菜单项编号.当返回表中的第二项为点值时,系统变量FLATLAND的当前设置状态会自动决定其返回形式.如FLATLAND为零,则返回点值为与当前用户坐标系统对应的三维坐标;否则为二维坐标.当GRREAD正在运行时,若输入了CTRL-C,就能从键盘上中止AutoLISP程序.任何其它输入将直接传送给GRREAD,使得它能完成对输入设备的控制.附录A 错误信息当AutoLISP检测到一个错误时,它就停止执行当前正在执行的函数而去调用用户定义的错误处理函数*ERROR*.如果用户没有定义自己的错误处理函数(即*ERROR*的约束值为nil), 标准的错误处理便以下列格式显示信息:error: message (错误信息)接下来显示函数的历程报告.如果用户定义了自己的错误处理函数*ERROR*,则把message作为仅有的变元传给*ERROR*函数.1. 用户程序错误下面是错误信息表,当编写和调试AutoLISP函数时经常能见到这些信息.大部分信息指出了典型的LISP程序错误,例如:. 函数或符号名拼写错误;. 函数变元的个数或类型错误;. 括号不匹配;. 引号不匹配(字符串没有终止符);. 函数没有执行完就试图使用它的结果.尽管这些信息通常指出的是用户程序的错误,但有时也可能是由于AutoLISP本身的程序产生的错误.如果系统报告了错误而你又在你的程序中没有找到任何错误,请你填写一份错误报告(Bug Report)寄Autodesk公司.atomlist modified after function swap (函数交换后,修改了atomlist表) 一个表达式修改了ATOMLIST表.在VMON函数被激活以后,这是不允许的.AutoCAD rejected function (AutoCAD不接受的函数)传送给AutoCAD函数的变元不合法(如:在函数SETVAR中用了只读的系统变量或在函数TBLNEXT中用了无效的表名),或函数本身在当前的正文中不合法.例如,不能在COMMAND函数中使用用户输入函数GETxxx.bak argument type (变元类型有错)传送给函数的变元类型不正确(例如,不能把一个整型数传给函数STRLEN).bad association list (关联表有错)提供给ASSOC函数的关联表不能由"(key value)"表组成.bad entmod list (entmod表有错)传送给ENTMOD的变元不是一个合适的实体数据表(如同ENTGET返回的那样的表).bad entmod list value (entmod表值有错))传送给ENTMOD的关联表中的一个子表包含错误的值.bad formal argument list (形式变元表有错)当AutoLISP计算函数时,它测到一个非法的形式变元表.也许此函数根本不是一个函数,而是一个数据表.bad function (函数有错)表中的第一个元素不是一个合法的函数名.也许它是一个变量名或一个数.这个信息也可能表明函数的定义有问题,不要忘记所需要的形式变元表.bad list (表有错)一个构造有错的表传给了函数.如果实型数以一个小数点开头,也会产生这种错误;这种情形下必须在小数点前面加一个零.bad node (结点有错)TYPE函数遇到了非法类型的项.bad node type in list (表中出现错误的结点类型)FOREACH函数遇到了非法类型的项.bad point argument (点变元有错)一个定义不合适的点(两个实数的表)被传送给需要点的函数.请注意,实型数不能以小数点开头;在这种情况下必须在小数点前面加一个零.bad point value (点值有错)一个定义不合适的点(两个实数的表)被传送给需要点的函数.请注意,实型数不能以小数点开头;在这种情况下必须在小数点前面加一个零.bad ssget list (ssget表有错)传送给(SSGET"X")的变元不是一个合适的实体数据表(就象ENTGET返回的那样的表).bad ssget list volue (ssget表值有错)传送给(SSGET"X")的关联表中的一个子表有不正确的值.base point is required (需要基点)GETCORNER函数被调用时,没有传给所需要的基点变元.boole arg1 <0 or>15 (boole的第一个变元<0或>15)BOOLE函数的第一个变元必须是从0到15之间的整数.can't evaluate expression (不能计算表达式)这个错误可能是由于小数点位置不合适和表达式的形式不合适而产生的.Can't open (file) for input--LOAD failed (装入失败)LOAD函数中描述的文件没找到,或用户无权访问这个文件.Can't reenter AutoLISP (不能再进入AutoLISP)AutoCAD与AutoLISP的通讯缓冲区正被当前运行的函数使用,直到这个函数执行完, 别的函数才能被调用.console break (控制台中断)当函数正在运行时用户输入了CTRL-C。

AutoCADLISP基本知识及函数

AutoCADLISP基本知识及函数

AutoCADLISP基本知识及函数1.lisp数据类型INT 整型REAL 实数型(最多有6位小数)STR 字符串型2.预定义符号nil 尚无定义或者falseT 常量PAUSE 暂停PI 常量π3.赋值函数(setq x 1.5 y 20 p "center");给x、y、p赋值,返回值center。

4.查询变量的值和数据类型command:!a或者直接输入a;返回a的值command:(type a)或者直接输入(type a);返回a的数据类型5.quote函数(quote(10 20 ...))(quote(10 20))或者'(10 20);表示禁止对表求值,返回(10 20) 定义二维点(setq p '(10 20))6.定义函数(defun 函数名(变元.../局部变量...) 表达式... )7.调用函数(函数名变量)8.调用CAD命令(command "autocad命令" "所需数据" ...)如绘制圆心(2,4),半径为5的圆(command "circle" "2,4" 5)或者(command "circle" '(2 4) 5)9.画矩形(defun c:rect1(/ p1 p2 p3 p4)(setq p1 (getpoint "\n输入矩形的一个角点"))(setq p3 (getcorner p1 "\n输入矩形的另一个角点:"))(setq p2 (list(car p3) (cadr p1)))(setq p4 (list(car p1) (cadr p3)))(command "pline" p1 p2 p3 p4 "c"))10.cond函数多条件判断(cond(测试表达式1 结果表达式1)(测试表达式2 结果表达式2) ...);从第一个子表起,测试每个子表的测试表达式直至有一个子表测试表达式成立,计算该子表的结果表达式并返回这个结果表达式的值。

最新AutoLISP-函数大全资料

最新AutoLISP-函数大全资料

一、数学运算功能函数l(+ 数值数值…) 返回:累计实数或整数数值2(- 数值数值…) 返回:差值3(* 数值数值…) 返回:所有数值乘积4(/ 数值数值…) 返回:第一个数值除以第二个以后数值的商5(l+ 数值) 返回:数值+l6(1- 数值) 返回:数值-l7(abs 数值) 返回:数值的绝对值8(atan 数值) 返回:反正切值9(cos 角度) 返回:角度的余弦值,角度值为弧度10(exp 数值) 返回:数值的指数11(expt 底数指数) 返回:底数的指数值12(fix 数值) 返回:将数值转换为整数值13(float数值) 返回:将数值转换为实数值14(gcd 数值1 数值2) 返回:两数值的最大公因数15(log 数值) 返回:数值的自然对数值16(max 数值数值…) 返回:数值中的最大值17(min 数值数值…) 返回:数值中的最小值18 pi 常数∏,其值约为3.141592619(rem数值1数值2) 返回:M数值的相除的余数20(sin角度) 返回:角度的正旋值,角度值为弧度21(sqrt数值) 返回:数值的平方根二、检验与逻辑运算功能函数l(=表达式1表达式2) 比较表达式1是否等于式2,适用数值及字符串2(/=表达式1表达式2) 比较表达式1是否大于等于表达式23(<表达式1表达式2) 比较表达式1是否<小于表达式24(<=表达式1表达式2) 比较表达式1是否<一小于等于表达式25(>表达式1表达式2) 比较表达式1是否>大于表达式26(>=表达式1表达式2) 比较表达式1是否大于等于表达式27(~数值) 返回:数值的位not值,(1的补码)8(and表达式1表达式2…) 返回:逻辑and的结果9(boole函数整数整数…) 返回:位式布尔运算10(eq表达式1表达式2) 比较表达式1与表达式2是否相同,适用列表比较(实际相同)11(equal表达式1表达式2[差量])比较表达式1与表达式2是否相同,差量可省略(内容相同)三、转换运算功能函数l(angtof字符串[模式])返回:角度值的字符串转成实数2(angtos角度[模式[精度]])返回:角度转成的字符串值3(atof字符串)返回:字符串转成实数值4(atoi字符串)返回:字符串转成整数值5(cvunit数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件6(distof字符串[模式])返回:根据模式将字符串转成实数值7(itoa整数)返回:整数转成字符串8(rtos数值模式[精度])返回:实数转成字符串9(trans点原位置新位置[位移])返回:转换坐标系统值四、列表处理功能函数1(append列表列表……)结合所有列表成一个列表2(assoc关键元素联合列表)根据关键元素找寻联合列表中关系信息3(car列表)返回列表中的第一个元素,通常用来求X坐标4(cadr列表)返回列表中的第二个元素,通常用来求y坐标5(caddr列表)返回列表中的第三个元素,通常用来求Z坐标6(cdr列表)返回:除去第一个元素后的列表7(cons新元素列表)返回:将新元素添加到列表8(foreach名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应9(length列表)返回:列表内的元素数量10(list元素元素…)返回:将所有元素合并为一列表11(listp元素)返回:判断元素是否为一串12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表13(member关键元素列表)返回:根据关键元素(含似后的列表14(nthn列表)返回:列表的第n个元素15(reverse列表)返回:将列表元素根据顺序颠倒过来的列表16(subst新项旧项列表)返回:替换新旧列表后的列表五、字符串、字符、文件处理函数l(ascii字符串)返回:字符串第一个字符的“ASCII”码2(chr整数)返回:整数所对应的ASCII单一字符串3(close文件名称)关闭文件4(open文件名模式)返回:打开文件代码,准备读取或写入信息5(read字符串)返回:列表中的字符串的第一组元素6(read-char[文件代码])返回:通过键盘或文件中读取单一字符7(read-line[文件代码])返回:经由键盘或文件中读取一行字符串8(strcase字符串[字样])返回:转换字符串大小写9(strcat字符串1字符串2…)返回:将各字符串合并为一个字符串10(strlen字符串)返回:字符串构成的字符数(即字符串长度)11(substr字符串起始长度)返回:取出于字符串‘12(wcmatch字符串格式)返回:T或nil,将字符串与通用字符进行比较13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数l(getangle[基点][提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无2(getcorner基点[提示])请求输入另一矩形框对角点坐标3(getdist[基点][提示])请求输入一段距离4(getint[提示])请求输入一个整数值5(getkword[提示]请求输入“关键词”6(getorient[基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响7(getPoint[基点][提示])请求输入一个点的坐标8(getreal[提示]请求输入一个实数9(getstring[提示])请求输入一个字符串10(initget[位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle点1点2)取得两点的角度弧度值7.2(distance点1点2)取得两点的距离7.3(inters点1点2点3点4[模式])取得两条线的交点7.4(osnap点模式字符串)按照捕捉模式取得另一坐标点7.5(polar基点弧度距离)按照极坐标法取得另一坐标点7.6(textbox对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel对象名称)删除或取消删除对象8.2(entget对象名称[应用程序列表])取出对象名称的信息列表8.3(entlast)取出图形信息中的最后一个对象8.4(entmake对象列表)建立一个新的对象列表8.5(entmod对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext[对象名称])找寻图面中的下一个对象8.7(entsel[提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd对象名称)更新屏幕上复元体图形8.9(handent图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp[提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd[对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel对象名称选择集)将对象自选择集中移出9.3(ssget[模式][点1][点2]取得一个选择集9.4(ssget”X”[过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth选择集)计算选择集的对象个数9.6(ssmemb对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command”AutoCAD命令”…)超重量级函数,调用执行AutoCAD命令10.2(findfile文件名)返回:该文件名的路径及文件名10.3(getfiled标题内定档名扩展名旗号)通过标准AutoCAD文件对话DCL 对话框获得文件10.4(getenv”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar”系统变量”值)设定该系统变量的值10.7(regapp应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If<比较式><表达式1>[表达式2]检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2(repeat次数[<表达式><表达式>…])重复执行N次表达式11.3(While<比较式><表达式>…)当条件成立则执行表达式内容11.4(cond<比较式1><表达式1>多条件式的if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5(prong表达式1表达式2…)连接其中的表达式为一组,常用于配合if、cond等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error*字符串)程序错误时的警示信息12.2(alert字符串)以对话框式显示出警告字符串12.3(apply功能函数列表)将功能函数与列表结合后执行12.4(defun名称自变量列表表达式_.)自定函数或子程序12.5(eval表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda自变量表达式)定义未命名的函数12.8(progn表达式1表达式2…)连接其内的表达式为一组,常用于配合if、cond等函数12.9(quit)强制退出目前的应用程序12.10(tablet代码[列1列2列3方向])取用或建立对数字板的校调12.11(trace函数…)对函数设定追踪标记,辅助检错12.12(untrace函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数l(gfaphscr)作图环境切换到图形画面2(grclear)暂时清除模前的屏幕画面3(grdraw起点终点颜色[亮显])暂时性的画出一条线4(grread[追踪])由输入设备读取追踪值5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上6(grvecs向量列表[转置矩阵])暂时性的画出多条线7(menucmd字符串);提供在AlltOLISP中调用各菜单8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13(terpri)在屏幕上显示新列14(textscr)作图环境切换到文字画面15(textpage)清除文字画面文字类似DOS的cls命令16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数l(atom元素)如果元素不是列表,响应T,否则为nil2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表3(boundp表达式)返回:T或nil,响应表达式是否有值存在4(minusp元素)返回:T或n儿元素是否为负值5(not元素)返回:T或n儿判定元素是否为ni16(null元素)返回:T或nil判定元素是否被赋予nil值7(numberp元素)返回:T或nil,元素是否为整数或实数8(quote表达式)响应表达式未检算前状态,同“‘”功能9(set符号表达式)将表达式结果设定给带单引号’符号10(setq符号1表达式1[符号2表达式2]…)设定表达式结果给各符号11(type元素)返回:元素的信息型态12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载ARX程序列表15.3(arxload应用程序[出错处理]))返回:加载ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载ARX程序15.5(ver)返回:目前AutoLISP版本字符串15.6(loadLSP文件名[加载失败])加载AutoLISP文件(*.lsp) 15.7(xload应用程序[错处理])加载ADS应用程序15.8(xunloa应用程序[出错处理])卸载ADS应用程序十六、内存空间管理函数l(alloc数值)以节点数值设定区段大小2(expand数值)以区段数值配置节点空间3(gc)强制收回废内存4(mem)显示目前的内存使用状态5(xdroom对象名称)返回对象扩展信息允许使用的内存空间6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数l(acad_colordlg颜色码旗号)显示出标准AutoCAD颜色选择对话框2(acad_helpdlg求助文件名主题)显示出标准AutoCAD求助对话框3(acad_strlsort字符串列表)作字符串列表排序4(bherrs)取得bhatch与bpcly失败所产生的错误信息5(bhatch点[选择集[向量]])根据Pickpoint选点方式调用bhatch命令,绘制选集区域的剖面线6(bpoly点[选择集[向量]])根据Pickpoint选点方式调用bpoly命令并产生一定域Polyline7(cal计算式字符串)执行如CAL计算功能十八、ADS、ARX外部定义的3D函数18.1(align自变量1自变量2....)执行如ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制18.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d自变量1自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript 图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1自变量2自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量1自变量2…)执行如ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF18.21(c:scene模式[选项])SCENE场景管理18.22(C:setuv模式选集自变量1自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量1自变量工..)建立3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1自变量2…)管理外部数据库19.2(c:aseexportt自变量1自变量2…)输出信息19.3(c:aselinks自变量1自变量2…)连接对象与信息19.4(c:aserow自变量1自变量2…)管理外部信息表格19.5(c:aseselect自变量1自变量2…)建立外部信息与对象选集19.6(c:asesqled自变量1自变量2…)执行SQL程序。

AutoCADLisp之数据类型转换函数详情老伙计

AutoCADLisp之数据类型转换函数详情老伙计

AutoCADLisp之数据类型转换函数详情老伙计刚刚接触Lisp编程的小哥哥小姐姐们不知道如何把变量里面的数字变为字串符,或者把字串符转换成数字,或者数字四舍五入。

下面贴出各个函数的使用和功能。

1、整型转换为字符串的函数 (itoa int)例子: (itoa -2021) 返回“-2021”说明:把整型常数、变量或表达式的值转换为字符串,注意参数必须是整数,函数返回值中不带"+"号。

2、字符串转换为整数的函数 (atoi 字符串)例子:(atof "55.9") 返回 55 ,(atof "1997") 返回 1997说明:把字符串常数、变量或表达式转换为整数。

该函数从头扫描字符串,把前面的整数取出作为函数值返回。

如果字符串不是以数字打头,函数返回值为03、字符串转换为实数的函数 (atof 字符串)例子:(atof "197.1") 返回 197.1 ,(atof "6") 返回 6.0说明:把字符串常数、变量或表达式转换为实数。

该函数从头扫描字符串,把前面的数取出作为函数值返回。

如果字符串不是以数字打头,函数返回值为0.0。

4、整型转换为实型的函数 (float n)例子:(float 6) 返回 6.0(float 6.75) 返回 6.75说明:把整型数据转换为实型。

参数可以为整数或实数,函数返回值为实数。

5、实型转换为整型的函数 (fix n)例子:(fix 6) 返回 6(fix 6.7) 返回 6说明:把常数、变量、表达式的值取整。

(1)参数可以为整数或实数,函数返回值为整数。

(2)取整是截断小数部分,而不是四舍五入。

6、整数和实数格式化函数 (rtos number [mode] [precision])解释说明:此函数将依据所给定的mode、precision、AutoCAD 的UNITMODE 系统变量及DIMZIN尺寸变量来返回一字符串以表示number。

【免费下载】autolisp函数大全

【免费下载】autolisp函数大全

函数大全一、数学运算功能函数1.l(十数值数值…)返回:累计实数或整数数值1.2(一数值数值…)返回:差值1.3(* 数值数值…)返回:所有数值乘积1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商1.5(l十数值)返回:数值十ll. 6(1— 数值)返回:数值一ll.7(abs 数值)返回:数值的绝对值1.8(atan 数值)返回:反正切值1.9(cos 角度)返回:角度的余弦值,角度值为弧度1.10(exp 数值)返回:数值的指数1.11(expt 底数指数)返回:底数的指数值1.12(fix 数值)返回:将数值转换为整数值1.14(gcd 数值1 数值2)返回:两数值的最大公因数1.15(log 数值)返回:数值的自然对数值1.16(max 数值数值…)返回:数值中的最大值1.17(min 数值数值…)返回:数值中的最小值1.18 pi 常数∏,其值约为3.14159261.19(rem 数值 1数值 2)返回:M数值的相除的余数l.20(sin 角度)返回:角度的正旋值,角度值为弧度1.21(sqrt 数值)返回:数值的平方根二、检验与逻辑运算功能函数2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式22.3(<表达式1 表达式2) 比较表达式1是否<小于表达式22.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式22.5(>表达式1 表达式2)比较表达式1是否>大于表达式22.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式22.7 (~数值)返回:数值的位 not值,(1的补码)2.8 (and 表达式1 表达式2…)返回:逻辑and的结果2.9(boole 函数整数整数…)返回:位式布尔运算2.10(eq 表达式1 表达式2)比较表达式1与表达式2是否相同,适用列表比较(实际相同)2.11(equal 表达式 1表达式 2[差量])比较表达式 1与表达式 2是否相同,差量可省略(内容相同)三、转换运算功能函数3.l(angtof 字符串[模式])返回:角度值的字符串转成实数3.2(angtos 角度[模式[精度]])返回:角度转成的字符串值3.3(atof 字符串)返回:字符串转成实数值3.4 (atoi 字符串)返回:字符串转成整数值3.5 (cvunit 数值原始单位转换单位)返回:数值转换单位后的值转换根据acad.nut文件3.6(distof 字符串[模式])返回:根据模式将字符串转成实数值3.7(itoa 整数)返回:整数转成字符串3.8(rtos 数值模式[精度])返回:实数转成字符串3.9 (trans 点原位置新位置[位移])返回:转换坐标系统值四、列表处理功能函数4.1 (append 列表列表……)结合所有列表成一个列表4.2(assoc 关键元素联合列表)根据关键元素找寻联合列表中关系信息4.3 (car 列表)返回列表中的第一个元素,通常用来求X坐标4.4(cadr 列表)返回列表中的第二个元素,通常用来求y坐标4.5(caddr 列表)返回列表中的第三个元素,通常用来求Z坐标4.6(cdr 列表)返回:除去第一个元素后的列表4.7(cons 新元素列表)返回:将新元素添加到列表4.8(foreach 名称列表表达式)返回:将列表的每一元素对应至名称再根据表达式执行响应4.9(length 列表)返回:列表内的元素数量4.10(list 元素元素…)返回:将所有元素合并为一列表4.11(listp 元素)返回:判断元素是否为一串4.12(mapcar函数列表1列表2…)返回:将列表1、列表2列表的元素配合函数,求得新列表4.13(member 关键元素列表)返回:根据关键元素(含似后的列表4.14(nth n 列表)返回:列表的第n个元素4.15(reverse 列表)返回:将列表元素根据顺序颠倒过来的列表4.16(subst 新项旧项列表)返回:替换新旧列表后的列表五、字符串、字符、文件处理函数5.l(ascii 字符串)返回:字符串第一个字符的“ASCII”码5.2 (chr 整数)返回:整数所对应的ASCII单一字符串5.3(close 文件名称)关闭文件5.4(open 文件名模式)返回:打开文件代码,准备读取或写入信息5.5(read 字符串)返回:列表中的字符串的第一组元素5.6(read-char[文件代码])返回:通过键盘或文件中读取单一字符5.7(read-line [文件代码])返回:经由键盘或文件中读取一行字符串5.8(strcase 字符串[字样])返回:转换字符串大小写5.9(strcat 字符串1字符串2…)返回:将各字符串合并为一个字符串5.10(strlen 字符串)返回:字符串构成的字符数(即字符串长度)5.11(substr 字符串起始长度)返回:取出于字符串‘5.12(wcmatch 字符串格式)返回:T或 nil,将字符串与通用字符进行比较5.13(write-char数值[文件代码])返回:将一ASCII字符写到文件或屏幕15.14(write-line字符串[文件代码])返回:将字符串写到文件或屏幕上六、等待输入功能函数6.l (getangle [基点][提示])请求输入十进制角度数值,响应一个弧度值提示及参考点可有可无6.2(getcorner 基点[提示])请求输入另一矩形框对角点坐标6.3(getdist [基点][提示])请求输入一段距离6.4(getint [提示])请求输入一个整数值6.5(getkword [提示]请求输入“关键词”6.6(getorient [基点][提示])请求输入十进制角度,响应一弧度值不受angbase、angdir影响6.7(getPoint [基点][提示])请求输入一个点的坐标6.8(getreal [提示]请求输入一个实数6.9(getstring [提示])请求输入一个字符串6.10(initget [位]字符串)设定下次getxxx函数的有效输入七、几何运算功能函数7.l(angle 点1 点2)取得两点的角度弧度值7.2(distance 点1 点2)取得两点的距离7.3(inters 点1 点2 点3 点 4[模式])取得两条线的交点7.4(osnap 点模式字符串)按照捕捉模式取得另一坐标点7.5(polar 基点弧度距离)按照极坐标法取得另一坐标点7.6(textbox 对象列表)取得文字字符串的两个对角点坐标八、对象处理功能函数8.l(entdel 对象名称)删除或取消删除对象8.2(entget 对象名称[应用程序列表])取出对象名称的信息列表8.3 (entlast)取出图形信息中的最后一个对象8.4(entmake 对象列表)建立一个新的对象列表8.5(entmod 对象列表)根据更新的信息列表更新屏幕上元体8.6(entnext [对象名称])找寻图面中的下一个对象8.7(entsel [提示])请求选取一个对象,响应包含对象名称及选点坐标的列表;8.8(entupd 对象名称)更新屏幕上复元体图形8.9(handent 图码)返回:图码的元体名称8.10(nentsel[提示])返回:BLOCK所含副元体对象信息列表8.11(nentselp [提示][点])返回:BLOCK所含副元体对象信息似4*4矩形表示)九、选择集、符号表处理函数9.l(ssadd [对象名称][选择集])将对象加入选择集或建立一新选择集9.2(ssdel 对象名称选择集)将对象自选择集中移出9.3(ssget [模式][点 1][点 2]取得一个选择集9.4(ssget ”X” [过滤列表])取得根据过滤列表所指定范围的选择集9.5(sslenth 选择集)计算选择集的对象个数9.6(ssmemb 对象名称选择集)响应对象名称是否包含于选择集内9.7(ssname 选择集索引值)根据索引值取出选择集中的对象名称9.8(tblnext 符号表名称[T])检视符号表,有效的符号表:”LAYER”、”LTYPE”、”VIEW”、”STYLE”、”BLOCK”9.9(tblsearch 符号表名称符号)在符号表中搜寻符号十、AutoCAD相关查询、控制功能函数10.l(command ”AutoCAD命令”…)超重量级函数,调用执行 AutoCAD命令10.2(findfile 文件名)返回:该文件名的路径及文件名10.3(getfiled 标题内定档名扩展名旗号)通过标准 AutoCAD文件对话 DCL对话框获得文件10.4(getenv ”环境变量”)取得该环境变量的设定值,以字符串表示10.5(getvar ”系统变量”)取得该系统变量的设定值,以字符串表示10.6(setvar ”系统变量”值)设定该系统变量的值10.7(regapp 应用类项)将目前的AutoCAD图形登记为一个应用程序名称十一、判断式、循环相关功能函数11.1(If <比较式><表达式1>[表达式2] 检算比较式结果,如果为真,执行<表达式1>,否则执行<表达式2>11.2( repeat 次数 [< 表达式><表达式>…])重复执行 N次表达式11.3(While <比较式><表达式>…)当条件成立则执行表达式内容11.4(cond <比较式 1><表达式 1>多条件式的 if整合功能<比较式2><表达式2><比较式3><表达式3>)11.5 (prong 表达式1 表达式2…)连接其中的表达式为一组,常用于配合if、cond等函数十二、函数处理、定义、追踪与错误处理功能函数12.l(*error* 字符串)程序错误时的警示信息12.2(alert 字符串)以对话框式显示出警告字符串12.3(apply 功能函数列表)将功能函数与列表结合后执行12.4(defun 名称自变量列表表达式_.)自定函数或子程序12.5(eval 表达式)返回:表达式的执行结果12.6(exit)强制退出目前的应用程序12.7(lambda 自变量表达式)定义未命名的函数12.8(progn 表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond 等函数12.9(quit)强制退出目前的应用程序12.10(tablet 代码 [列1列2列3方向])取用或建立对数字板的校调12.11(trace 函数…)对函数设定追踪标记,辅助检错12.12(untrace 函数…)对函数设定解除追踪标记十三、显示、打印控制功能函数13.l(gfaphscr)作图环境切换到图形画面13.2(grclear)暂时清除模前的屏幕画面13.3(grdraw起点终点颜色[亮显])暂时性的画出一条线13.4(grread[追踪])由输入设备读取追踪值13.5(grtext位置字符串[亮显])将字符串显示在状态列或屏幕菜单上13.6(grvecs向量列表[转置矩阵])暂时性的画出多条线13.7(menucmd字符串);提供在 AlltOLISP中调用各菜单13.8(Prinl[表达式[文件代码]]将表达式打印于命令区或已打开的文件句柄字符则以“\”为前缀展开13.9(pinc[表达式[文件代码]]除句柄字符则不以”\”为前缀展外开其余同Prinl 13.10(print[表达式[文件代码]]除表达式会往下一新行列出,及空一格外其余同prinl13.11(prompt信息)将信息显示于屏幕的命令区,并随后响应一个nil信息13.12(redraw[对象名称[模式]])重绘整张图或根据对象名称重绘该图形13.13(terpri)在屏幕上显示新列13.14(textscr)作图环境切换到文字画面13.15(textpage)清除文字画面文字类似 DOS的cls命令13.16(vports)返回:窗口组态列表十四、符号、元素、表达式处理功能函数14.l(atom元素)如果元素不是列表,响应T,否则为nil14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或 nil,响应表达式是否有值存在14.4(minusp元素)返回:T或n儿元素是否为负值14.5(not元素)返回:T或n儿判定元素是否为ni114.6(null元素)返回:T或nil判定元素是否被赋予nil值14.7(numberp元素)返回:T或nil,元素是否为整数或实数14.8(quote表达式)响应表达式未检算前状态,同“‘”功能14.9(set符号表达式)将表达式结果设定给带单引号’符号14.10(setq符号1 表达式1[符号2表达式2]…)设定表达式结果给各符号14.11(type元素)返回:元素的信息型态14.12(zerop元素)返回:T或nil,元素是否为0值十五、ADS、ARX、AutoLISP加载与卸载函数15.l(ads)返回:目前加载ADS程序列表15.2(arx)返回:目前加载 ARX程序列表15.3(arxload应用程序[出错处理]))返回:加载 ARX程序15.4(arxunload应用程序[出错处理]))返回:卸载 ARX程序15.5(ver)返回:目前 AutoLISP版本字符串15.6(load LSP文件名[加载失败])加载 AutoLISP文件(*.lsp)15.7 (xload应用程序[错处理])加载ADS应用程序15.8 (xunloa应用程序[出错处理])卸载 ADS应用程序十六、内存空间管理函数16.l(alloc数值)以节点数值设定区段大小16.2(expand数值)以区段数值配置节点空间16.3(gc)强制收回废内存16.4(mem)显示目前的内存使用状态16.5(xdroom对象名称)返回对象扩展信息允许使用的内存空间16.6(xdsize列表)返回对象扩展信息所占用的内存空间十七、其它重要的功能函数17.l(acad_colordlg 颜色码旗号)显示出标准 AutoCAD颜色选择对话框17.2(acad_helpdlg 求助文件名主题)显示出标准 AutoCAD求助对话框17.3(acad_strlsort字符串列表)作字符串列表排序17.4(bherrs)取得 bhatch与 bpcly失败所产生的错误信息17.5(bhatch点[选择集[向量]])根据 Pick point选点方式调用 bhatch命令,绘制选集区域的剖面线17.6(bpoly点[选择集[向量]])根据Pick point选点方式调用bpoly命令并产生一定域Polyline17.7(cal计算式字符串)执行如 CAL计算功能十八、ADS、ARX外部定义的3D函数18.1(align自变量 1 自变量 2....)执行如 ALIGN命令各选项顺序18.2(c:3dsin模式3DS文件名)导入3DS文件18.3(C:3dsout模式3DS文件名)输出3DS文件18.4(c:background模式[选项])设定渲染背景18.5(C:fog模式[选项])设定渲染的雾效果18.6(C:light模式[选项])设定渲染的灯光控制18.7(c:lsedit模式【选项1】设定渲染的景物控制18.8(C:lslib模式[选项])管理景物图库18.9(c:matilb模式材质材质库名)管理材质数据库18.10(c:mirror3d 自变量1 自变量2……)执行如MIRROR3D命令18.11(C:psdrap模式)根据模式设定值(0或1),传唤psdrap命令18.12(C:psfill对象名称图案名称[自变量1[自变量2]])以POStSCript图案填满18.13(c:psin文件名位置比例)插入一个Postscript(*.eps)文件18.14(c:render[渲染文件])执行渲染效果18.15(C:rfileopt格式自变量1 自变量2 自变量3…)设定执行渲染选项18.16(c:replay影像文件名影像类别[选项])展示影像文件TGA、BMP、TIF 18.17(C:rmat模式选项)控管材质建立、贴附、编辑、分离18.18(c:rotate3d自变量 1 自变量2…)执行如 ROTATE3D命令各选项顺序18.19(C:rpref模式选项[设定])渲染环境设定18.20(c:saveimg影像文件名影像类别[选项])储存图像文件TGA、BMP、TIF 18.21 (c:scene模式 [选项]) SCENE场景管理18.22(C:setuv模式选集自变量1 自变量2…)SETUV贴图模式管理18.23(C:showmat自变量1)显示对象的材质贴附信息18.24(C:solprof自变量 1 自变量工..)建立 3D实体的轮廓影像18.25(C:StatS[渲染信息文件])显示渲染信息统计信息十九、ADS、ARX外部定义的数据库相关函数19.l(c:aseadmin自变量1 自变量2…)管理外部数据库19.2(c:aseexportt自变量1 自变量2…)输出信息19.3 (c:aselinks自变量1 自变量2…)连接对象与信息19.4(c:aserow自变量1 自变量2…)管理外部信息表格19.5(c:aseselect自变量1 自变量2…)建立外部信息与对象选集19.6 (c:asesqled自变量 1 自变量2…)执行SQL程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AUTO LISP函数参考4实体数据函数下列函数可让用户检索和修改定义实体的数据,所有函数都用实体名指定要操作的实体.4.1(entdel<实体名>)如果由<实体名>指定的实体在当前图中,它就被删掉,如果在这次编辑中该实体已被删除,那么它将被重新恢复出来(从当前图中).退出图形编辑程序时,被删除的实体便从图中彻底清除掉了,所以ENTDEL只能在删除实体的那次编辑过程中使实体再恢复.ENTDEL只对主实体进行操作.对属性和多义线的顶点是不能脱离其双亲实体而予删除的(可使用COMM AND函数执行ATTEDIT或PEDIT命令来达到这一目的).例如:(setq e1(entnext));置E1为图中第一个实体的名(entdel e1);删去实体E1(entdel e1);不删除(恢复)已被删去的实体E14.2(entget<实体名>)从数据库中检索到名为<实体名>的实体,并以表形式返回,此表包含实体的定义数据表的结果以LISP的关联表形式编制,用ASSOC函数可以容易地从中检索每一项.表中的对象是用AutoCAD的DXF组码形式定义的,它们是为实体数据的每个部分准备的.例如,用下列命令序列画线,然后再检索此线:对下面的例子,我们假定:.当前层是"0",.当前线型是"CONTINUOUS"(缺省值),.当前Z向高度是零(缺省值),.实体标号功能被关闭,而且.FLATLAND系统变量值为零.假设用下列命令画一条线:Command:LINEFrom point:1,2To point:6,6To point:RETURN然后可以用下述命令为线检索实体数据:Command:(setq a(entget(entlast)))假定系统变量FLATLAND为零(即要求3D点).这样,将把A置为下表(为了可读,作了缩进排列):((-1.<Entity name:60000014>)(0."LINE");Entity type(8."0");Layer(101.02.00.0);Start point(116.06.00.0);End point)表的开头-1项包含这个所代表的实体名.下面描述的ENTMOD函数将用这种表来识别要修改的实体.表示某一值的点对表可以很容易地用ASSOC提取,再用CDR分离出它们的值.实体中各部分的编码是DXF所用的那些编码,在AutoCAD参考手册的附录C中有描述.和DXF一样,实体题头项(实体的颜色和线型,属性跟随标志,厚度,及实体标号)只有在不为缺省值时才被输出.和DXF不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的意图是为了简化处理;对于使用那种操作和处理它们的通用程序,可以总是假设这些字段是存在的.另外与DXF不同的是,三维坐标是被组合成一个点值表,如(101.02.03.0),而不象DXF格式中所出现的三个独立的10,20和30组值.注意,点的子表不同于以上所述的点对型的.我们约定,子表的CDR即为组值,由于点是由两个实数(或三个函数)组成的一个表,所以使得整个组为一个三元素(或四元素)表.这个组的CDR即为代表此点的表.因此,这便保证了CDR总能返回组值的这个约定.当编写函数来处理这些实体表时,必须保证它们与子表的顺序无关.使用ASSOC能保证达到这个要求.包含实体名的-1组使得修改操作只须诉诸于实体表,也避免了在平行(另外的)结构内保持实体名的要求.在多义线或属性集最后的SEQEND实体中包含-2组,它的CDR是这个实体的排头的实体名.这样,查到SEQEND,就能从子实体序列中找到排头,然后用SEQ END实体中-2组的CDR作为实体名,从而由此获得相关联的主实体.下面的例子表示一个更复杂的实体数据.对此例,我们假定当前的UCS处在WCS中关于Z 轴逆时针旋转40度的位置,实体标号的功能是打开状态和系统变量FLATLAND为零.Command:LINETYPE?/Create/Load/Set:SETNew entity linetype<BYLAYER>:DASHED?/Create/Load/Set:RETURNCommand:COLORNew entity color<BYLAYER>:BLUECommand:LAYER?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw:MAKENew current layer<0>:ANNOTATION?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw:RETURNCommand:TEXTStart point or Align/Center/Fit/Middle/Right/Style:2,2Height<0.2000>:0.3Rotation angle<0>:30Text:So long,and thanks for all the fish!Command:(setq ed(entget(setq e(entlast))))在这种情况下,E将被置为TEXT的实体名,而ED被置为它的实体表(如下示).查找Auto CAD参考手册中的附录C就能知道这个表的具体含意.((-1.<Entity name:6000053c>)(0."TEXT");Entity type(8."ANNOTANTION");Layer(6."DASHED");Linetype(62.5);Color(5."7E");Handle(102.02.00.0);Start point(40.0.3);Height(1."So long,and thanks for all the fish!")(50.0.523599);Rotation angle(radians)(41.1.0);Width factor(51.0.0);Obliquing angle(7."STANDARD");Text style(71.0);Generation flags(72.0);Justification(110.00.00.0);Alignment point(2100.0-0.6427880.766044);Extrusion direction vector)所有与实体有关的点均以实体坐标系的形式表达(ECS),对于点(point),线(Line),三维线(3DLine),三维面(3DFace),三维多义线(3DPolyline),三维网格(3DMesh),和标注(D imension)实体,而对于所有其余实体,其实体坐标(ECS)则可从通用坐标系(WCS)和实体本身的延伸方向(组代码为210)中导出.当用非通用坐标系绘制实体时(如上例中的Text),需将点值变换为通用坐标或当前的用户坐标(UCS),这可通过TRANS函数来实现.用上面的Tex t实体为例:(setq p(cdr(assoc10ed)))可能返回(2.02.00.0)将文本实体的起点赋给P,即Text实体的实体坐标(ECS),(注意按这种形式返回的点与在用ENTGET时设置的当前用户坐标系无关).现在:(trans p e0)可能返回(2.01.532091.28558)这里用e作为"from"转换码,将文本实体的起点从其实体坐标形式转换为通用坐标形式.如果系统变量FLATLAND是非零值并且上例中的实体是在与通用坐标系(WCS)等效的用户坐标系<UCS>中绘制的,则ENTGET返回的有关点值将是二维通用坐标(2D WCS)形式,并具有一个组代码为38的组值,该组值用以定义实体的Z向高度(如果为非零值的话),同时210组值(延伸方向)将被取消.4.3(entmod<实体表>)ENTMOD接受由ENTGET返回的那种格式的表(<实体表>),为此实体更新其在数据库中信息,该实体名由<实体表>中的-1组指定.因此,AutoLISP更新数据库的基本方法就是用ENTG GET提取实体,修改定义该实体的表(注意,AutoLISP的SUBST函数对这种操作非常有用),而用ENTMOD更新数据库中的实体.例如:(setq en(entnext));置EN为图中第一个实体的名(setq ed(entget en));置ED为实体名为EN的实体数据(setq ed(subst(cons8"0")(assoc8ed);改变ED中的图层组的组值ed;为图层"0"))(entmod ed);修改图中实体EN的图层ENTMOD对它要做的更改加了一此限制.首先,不能更改实体的类型和实体标号(如果要这样做,则先用ENTDEL删除它,再用COMMAND函数建立一个新的实体).实体表引用的所有对象在执行ENTMOD之前必须是AutoCAD已知的.因此文本类型、线型、形状和块名,在ENTMOD 修改实体表之前必须预先定义好.这个规定的一个例外就是层名,如果在实体表中用到还没有定义的层,那么ENTMOD将用"LAYER NEW"命令和层的标准缺省值产生一个新层.对于那些使用浮点值的字段(如厚度thickness),ENTMOD可以接受一个整数,但它会自动将其转变成浮点值.同样;如果为那些整数型实体数据段(如颜色码)指定了一个浮点值,则ENTMOD也会自动将其截断成整数来处理.正如DXFIN对DXF文件中的数据处理一样,ENTMOD对提供给它的表也进行一致性检查.如果检测出严重错误,且严重到数据库已无法更新,则返回nil.否则,ENTMOD将返回作为变元送给它的表.ENTMOD将不会改变内部字段,如:实体中SEQEND实体中的-2组中的实体名---对更改这样字段的企图被作为无效处理.更新主实体时,ENTMOD既修改这个实体,又更新它在屏幕上的图象(包括子实体).当使用ENTMOD更新子实体(多义线的顶点或块的属性)时,子实体将只在数据库中被更新,但是屏幕上的图象不会被重新显示.当对给定子实体的所有修改完成后,就可以用下面描述的ENTUPD函数来更新屏幕上的图象.4.4(entupd<实体名>)如上所述,当使用ENTMOD对多义线顶点或块属性进行修改后,整个复合实体并不在屏幕上更新.例如,如果修改某条复杂多义线上的100个顶点,那么当每个顶点更改时都对多义线进行重新计算和重新显示,这样会使工作速度变得不可接受地缓慢.ENTMOD函数可用于在屏幕上更新经修改的多义线或块.可以用多义线或块中的任何部分的实体名调用ENTUP D.它没有必要是领头实体--ENTMOD将会找到头.虽然ENTUPD是用于多义线和具有属性的块,但实际上也可被其它任何实体调用.它将总是重新生成屏幕上的实体,包括所有的子实体.例如,设图中第一个实体是一条有若干顶点的多义线,那么:(setq e1(entnext));置E1为多义线的实体名(setq e2(entnext e1));置E2为多义线的第一个顶点(setq ed(entget e2));置ED为顶点的数据(setq ed(subst'(101.02.0)(assoc10ed);改变ED中的顶点位置为1,2ed))(entmod ed);移动图中的顶点(entupd e1);重新生成多义线实体E14.5限制实体名和选择集只对图形编辑过程有效,它们是在图形编辑过程中从AutoCAD取得的.另外在执行PLINE和ATTEDIT命令的过程中企图执行下列操作,则会返回nil,而且不执行所要求的函数.ENTMOD修改一个现存实体ENTUPD重新生成一个经修改的复杂实体ENTDEL恢复和重新生成一个删去的实体5将实体名和选择集与AutoCAD一起使用对于AutoCAD的实体选择提示,用实体名和选择集输入是有效的.因此,对由AutoLISP命名的实体可以用AutoCAD命令进行操作.在"Select object:"提示下AutoLISP可以提供一个实体名,它指定了单个实体,或者一个选择集,它选择了集中的所有实体.凡在AutoCAD允许使用"Last"选择项的地方,用AutoLISP给出实体名或选择集也是有效的(不管实体是否可见,它们都具有与拾取一个实体相同的效果,但却不必指定一个拾取点).在AutoCAD允许使用指点目标方式进行选择的地方,ENTSEL返回的那种格式的表将被选择过程接收.它们从表中选择实体,指定表中的点作为它们的拾取点.这就允许AutoLISP将这种形式的实体拾取点传送给如BREAK,FILLET,CHAMFER,TRIM和EXTEND这样的命令.注意,只要命令允许拾取点,ENTSEL型格式的表也可用于其它选择.6对处理曲线拟合和样条拟合多义线的说明当使用ENTNEXT逐步通过多义线的各顶点时,可能会碰到一些不是有意建立的顶点,这些是辅助顶点,是PEDIT的Fit和Spline选择项自动插入的.用户可能想略去这些辅助顶点,因为在下次对多义线使用PEDIT的Fit和Spline时会取消对这些辅助点作的变动.从多义线实体的组标号70中,用户可看出多义线是曲线拟合(位值为2)的还是样条拟合(位值为4)的.如果未设置这两种位值,则多义线的所有顶点都是正常的.如果设置了曲线拟合位(2),则多义线的辅助顶点将具有其组标号70设置的位值1.以表示这些顶点是在曲线拟合过程中插入的.如果您想使用ENTMOD来移动这种多义线的顶点,并使用PEDIT来重新拟合曲线,那么您应该略去这些辅助的顶点.同样,如果多义线实体的样条拟合标记位值置为4,则会对各顶点进行分类,有些顶点的标记位值为1(在曲线拟合时插入,若系统变量SPLINESEGS为负),有些顶点的位值为8(在样条拟合时插入),所有其他顶点的位值都为16(样条骨架的控制点).同样,如果您使用ENTMOD 来移动顶点,然后想重新拟和样条,那么只应该移动作为控制点的那些顶点.7符号表访问函数函数,它们能够读取(也只能读取)增加了两个分别由AutoCAD的图层、线型、赋名视图,字型和块定义所组成的符号表.这两个新函数是TBLENXT和TBLSERCH,它们的描述如下.7.1(tblnext<表名>[<第一个>])本函数用于扫描整个符号表.第一个变元是一个字符串,它表明你想访问的符号表名.有效的表名包括"LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"、"UCS"和"VPORT".字符串不一定要大写.如果给出第二个变元且求值结果不为nil,则反绕回符号表头且返回表中第一项;否则,返回表中下一项.当到表尾时,则返回nil.被删去的表项不再返回.当找到一项后就返回一个如DXF类型的代码点对表,很像ENTGET函数的返回值.例如, (tblnext"Layer"T);检索第1个图层将返回:((0."LAYER");符号类型(2."0");符号名(70.0);标志(62.7);颜色号,如层被开闭则为负(6."CONTINUOUS");线型名)注意,这里没有"-1"组.AutoCAD会记住从每个表中最后返回的项,每次调用TBLNEXT将自动地返回下一项.开始扫描表时,必须保证第二变元为非nil值,这样函数才能绕回表头并返回第一项.在"BLOCK"表中有一个组代码为-2的实体名,它是该块定义中的第一个实体的名.这样,如果已知一个块名叫BOX:(tblnext"block");检索块定义可能返回:((0."Block");符号类型(2."Box");符号名(70.0);标志(10.9.0000002.0000000.000000);X,Y,Z的原点(-2.<实体名:40000126>);第一个实体)"-2"组中的实体名只能被ENTGET和ENTNEXT所接受,其它实体访问函数是不能访问的.这就是说,不允许用ENTMOD修改或用SSADD、ENTSEL将其收进某一选择集.依靠-2组的实体名,可以用ENTNEXT扫描构成块定义的各个实体;ENTNEXT对块定义中的最后一个实体名返回nil.如果系统变量FLATLAND为零,TBLNEZT对三维点将总以四元表的形式返回,如(100.0 2.03.0).如果FLATLAND为非零值,则三维点按三元表(二维)形式返回,但这时将有一个组码为30的点对表,用以说明点的Z向高度值.7.2(tblsearch<表名><符号>[<顺序状态>])此函数搜索用<表名>指定的符号表(同TBLNEXT一样),寻找由<符号>指定的符号名.两个名称都能自动转换成大写字母.如果找到了给定的符号名,有关该项的信息用TBLNEXT一样的格式返回.如果找不到该项,则返回nil.例如:(tblsearch"style""standard");字型检索将返回:((0."STYLE");符号类型(2."STANDARD");符号名字(70.0);标志(40.0.000000);固定字高(41.1.000000);字宽因子(50.0.000000);倾斜角(71.0);生成标志(3."txt");主字体文件(4."STYLE");大字体文件)一般TBLSEARCH不影响被TBLNEXT检索的符号表顺序,但若TBLSEARCH操作无误,且可选变元<顺序状态>存在并为非空值,则会调整TBLNEXT的检索顺序,使得下次调用TBLNEXT能返回紧随在这次调用TBLSEARCH之后的表项.变元<顺序状态>的这一功能对于处理VPORT符号表是极有用的,因为在特定的设置情况下,所有的视窗均具有同一名称.例如,要在名为"4VIEW"的设置中寻找并处理每一视窗,可使用如下程序段:(setq V(tblsearch"VPORT""4VIEW"T));寻找第一个视窗(while(and V(=(cdr assoc2V))"4VIEW"))...处理视窗...(setq V(tblnext"VPORT"));取得下一个视窗)如果系统变量FLATLAND为零,TBLNEXT对三维点将总以四元素的形式返回,如(101.0 2.03.0),如果FLATLAND为非零值,则三维点按三元表(二维)形式返回,但这时将有一个组码为30的点对表,用以说明点的Z向高度值.8对图形屏幕的输入设备的访问这一节讲述的AutoLISP函数允许从AutoLISP直接对AutoCAD图形屏幕的输入设备进行访问,使得用AutoLISP完成的命令可以和用户进行交互,就像用户和AutoCAD交互一样.这些命令可能会把屏幕图形搞乱,但用户可用下列命令恢复:(grtext)(redraw)所以没有必要担心.这些函数只提供给有经验的应用程序开发者使用.大多数AutoLISP 应用程序将不必用到这些函数.还需提请这些函数的用户注意,这些函数的操作可能会直接随着AutoCAD的发行版本的变化而更改,因此,AutoDISK公司不能保证使用这些函数的应用程序的向上兼容性.使用GRTEXT和GRREAD函数的应用程序也许不能在所有的硬件配置上以同样效果工作,除非开发者非常认真地遵循下面介绍的有关它们的使用规则.8.1(grclear)这个函数清空当前视窗(在单屏幕系统中,它先从文字屏幕转换图形屏幕).但命令/提示、状态和菜单区保持不变.图形屏幕的原来内容可以用REDRAW函数恢复.8.2(grdraw<起点><终点><颜色>[<加亮>])GRDRAW在当前视窗中的两点之间画一条矢量线.<起点>和<终点>是两个二维或三维点(两个实数或三个实数的表),它们指定当前用户坐标系中矢量的两个端点.若矢量线超出当前显示区,它们将被修剪以适合于屏幕.矢量将以整数<颜色>变元指定的颜色画出,-1指定"XOR涂描"方式,它复盖它画过的地方,当被复盖时就抹掉它自己.如果任选项<加亮>变元(整数)存在并且为非零值,矢量就加以加亮的形式画出,就象显示设备加亮所选择的目标一样(通常以虚线形式).如果省略了<加亮>项,或者提供的值为零,则使用通常的显示方式.8.3(grtext[<框区><文本>[<加亮>]])利用GRTEXT,AutoLISP可以将文本写到AutoCAD图形屏幕的文本区上.如果调用它时有<框区>变元,且其范围从0到屏幕菜单框区最大编号减一,那么它将在指定的屏幕菜单框区内显示字符串变元<文本>.如果<文本>太长放不进菜单框区,则将它截尾,如果太短则填加空格.如果提供了任选的整数变元<加亮>,则加亮(若变元为非零值)指定菜单框区内的文字,或去掉(若变元为零值)指定菜单框区内的文字加亮态(注意,加亮另一个菜单框区将自动地去掉已被加亮的框区的加亮显示态).当往菜单框区写东西时,文本须先在无<加亮>方式下写,然后才可做加亮显示.对和原来写到菜单框区的文本相同的字符串,必须提供加亮或去掉加亮的变元.如果不注意这些规则,将会导致AutoLISP程序在不同的显示设备上产生不同的结果操作.注意,这个函数只不过能在屏幕菜单区内显示所提供的文本;它并不改变被其覆盖的屏幕菜单项.另外,某些显示器上采用重新涂覆菜单项来实现加亮菜单框区的操作,故用GRTEXT写字可能会导致将用户加亮菜单框区时的菜单项内容恢复出来.还有一些显示器,当用REDRAW, REGEN等命令或执行屏幕切换时;会自动重写菜单区内容.然而对大部分显示器,用GRTEXT往屏幕菜单区内写字可保留到直至调用下页屏幕菜单为止.如果调用GRTEXT时其框区编号为-1,文本将被写到屏幕的方式状态行上.方式状态行的长度因显示器的类型而不同(除IBM彩色图形适配器之外,大多数显示器至少允许40个字符).当<文本>太长以致不能容纳在状态行可用空间内,GRTEXT将对它进行截尾.如果使用的框区号为-2,将把文本写到坐标状态行上.注意,如果坐标跟踪处于打开态,一旦定标器发送新的一组坐标值,写到该处的文本值将被复盖掉.对于-1或-2菜单框区号, <加亮>变元不起作用.最后,如果调用GRTEXT时不加任何变元,就能将屏幕上所有的文本区域恢复到它们的标准数值状态.8.4(grread[<跟踪>])利用GRREAD,用户可以直接读AutoCAD的输入设备,任选变元<跟踪>指定了是否跟踪定标器的移动.只有非常特殊的命令才会用到这个函数--AutoLISP的大多数输入应该通过各种各样的"GETxxx函数",如GETSTRING,GETREAL等.<跟踪>变元如果存在且不为nil,那么当定标器移动时,就能从它那儿返回坐标值,而不需要按选择按钮.这就是AutoCAD用于实现拖曳的机制.GRREAD返回一个表,它的第一个元素是指定输入类型的编码.第二个元素既可能是一个整数,也可能是一个点表,这取决于输入类型.表中第一个元素编码方式如下:2键盘字符----第二个元素为ASCII码.3选择的点----作为表的坐标4屏幕菜单单元选择----第二个元素作为菜单框区号.5第二个元素为拖曳方式坐标.只有当第二个变元指定了且不为nil时,才返回.6BUTTONS(按钮)菜单项选择----第二个元素为按钮号.7数字化TABLET1菜单项----第二个元素为菜单项编号.8数字化TABLET2菜单项----第二个元素为菜单项编号.9数字化TABLET3菜单项----第二个元素为菜单项编号.10数字化TABLET4菜单项----第二个元素为菜单项编号.11数字化AUXI菜单项----第二个元素为菜单项编号.12第二个元素作为与定标器按钮对应的坐标返回.总是跟随类型6的返回表.13由键盘输入选择加亮屏幕菜单项.返回的第二个元素是菜单项编号.当返回表中的第二项为点值时,系统变量FLATLAND的当前设置状态会自动决定其返回形式.如FLATLAND为零,则返回点值为与当前用户坐标系统对应的三维坐标;否则为二维坐标.当GRREAD正在运行时,若输入了CTRL-C,就能从键盘上中止AutoLISP程序.任何其它输入将直接传送给GRREAD,使得它能完成对输入设备的控制.附录A错误信息当AutoLISP检测到一个错误时,它就停止执行当前正在执行的函数而去调用用户定义的错误处理函数*ERROR*.如果用户没有定义自己的错误处理函数(即*ERROR*的约束值为nil),标准的错误处理便以下列格式显示信息:error:message(错误信息)接下来显示函数的历程报告.如果用户定义了自己的错误处理函数*ERROR*,则把message作为仅有的变元传给*ERROR*函数.1.用户程序错误下面是错误信息表,当编写和调试AutoLISP函数时经常能见到这些信息.大部分信息指出了典型的LISP程序错误,例如:.函数或符号名拼写错误;.函数变元的个数或类型错误;.括号不匹配;.引号不匹配(字符串没有终止符);.函数没有执行完就试图使用它的结果.尽管这些信息通常指出的是用户程序的错误,但有时也可能是由于AutoLISP本身的程序产生的错误.如果系统报告了错误而你又在你的程序中没有找到任何错误,请你填写一份错误报告(Bug Report)寄Autodesk公司.atomlist modified after function swap(函数交换后,修改了atomlist表)一个表达式修改了ATOMLIST表.在VMON函数被激活以后,这是不允许的.AutoCAD rejected function(AutoCAD不接受的函数)传送给AutoCAD函数的变元不合法(如:在函数SETVAR中用了只读的系统变量或在函数TBLNEXT中用了无效的表名),或函数本身在当前的正文中不合法.例如,不能在COMMAND函数中使用用户输入函数GETxxx.bak argument type(变元类型有错)传送给函数的变元类型不正确(例如,不能把一个整型数传给函数STRLEN).bad association list(关联表有错)提供给ASSOC函数的关联表不能由"(key value)"表组成.bad entmod list(entmod表有错)传送给ENTMOD的变元不是一个合适的实体数据表(如同ENTGET返回的那样的表).bad entmod list value(entmod表值有错))传送给ENTMOD的关联表中的一个子表包含错误的值.bad formal argument list(形式变元表有错)当AutoLISP计算函数时,它测到一个非法的形式变元表.也许此函数根本不是一个函数,而是一个数据表.bad function(函数有错)表中的第一个元素不是一个合法的函数名.也许它是一个变量名或一个数.这个信息也可能表明函数的定义有问题,不要忘记所需要的形式变元表.bad list(表有错)一个构造有错的表传给了函数.如果实型数以一个小数点开头,也会产生这种错误;这种情形下必须在小数点前面加一个零.bad node(结点有错)TYPE函数遇到了非法类型的项.bad node type in list(表中出现错误的结点类型)FOREACH函数遇到了非法类型的项.bad point argument(点变元有错)一个定义不合适的点(两个实数的表)被传送给需要点的函数.请注意,实型数不能以小数点开头;在这种情况下必须在小数点前面加一个零.bad point value(点值有错)一个定义不合适的点(两个实数的表)被传送给需要点的函数.请注意,实型数不能以小数点开头;在这种情况下必须在小数点前面加一个零.bad ssget list(ssget表有错)传送给(SSGET"X")的变元不是一个合适的实体数据表(就象ENTGET返回的那样的表).bad ssget list volue(ssget表值有错)传送给(SSGET"X")的关联表中的一个子表有不正确的值.。

相关文档
最新文档