lisp功能函数

lisp功能函数
lisp功能函数

一、数学运算功能函数

1.l(十数值数值…)返回:累计实数或整数数值

1.2(一数值数值…)返回:差值

1.3(* 数值数值…)返回:所有数值乘积

1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商

1.5(l十数值)返回:数值十l

l. 6(1—数值)返回:数值一l

l.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.1415926

1.19(rem 数值1数值2)返回:M数值的相除的余数

l.20(sin 角度)返回:角度的正旋值,角度值为弧度

1.21(sqrt 数值)返回:数值的平方根

二、检验与逻辑运算功能函数

2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式2

2.3(<表达式1 表达式2) 比较表达式1是否<小于表达式2

2.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式2

2.5(>表达式1 表达式2)比较表达式1是否>大于表达式2

2.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式2

2.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(get var ”系统变量”)取得该系统变量的设定值,以字符串表示

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,否则为nil

14.2(atoms-family格式闲号列表])返回:一组己定义函数的符号列表14.3(boundp表达式)返回:T或nil,响应表达式是否有值存在

14.4(minusp元素)返回:T或n儿元素是否为负值

14.5(not元素)返回:T或n儿判定元素是否为ni1

14.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命令并产生一定域Polyline

17.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程序

超经典CAD lisp程序集锦、CAD快捷键大全

超经典CAD lisp程序集锦 如果您使用 AutoCAD,下面的内容对您一定有帮助。在某些方面能大大提高 您的工作效率。下面的程序均以源程序方式给出,您可以使用、参考、修改它。 bg.lsp --- 表格自动生成 asc.lsp --- 将文本文件内容写入图中,字符是单个的 wf.lsp --- 将图中字符写入磁盘 exstr.lsp --- 将字符串分解成单字 pgtxt.lsp --- 将字符合成字符串 pb.lsp --- 通过给出长度将字符串分成两个串 cht.lsp --- 直接修改文字内容或块属性 ct.lsp --- 对数字串进行加减 chh.lsp --- 直接修改文字高度 chhw.lsp --- 直接修改文字高宽比(针对PKPM软件将字符定位点改为左下角) chst.lsp --- 直接修改文字字体 txt.shx --- 修改后的标准txt.shx文件。(kuozhan.sld为增强的内容幻灯片) tiao.lsp --- 配合修改过的标准字体文件,将中文字符调大 tiao1.lsp --- 配合修改过的标准字体文件,将英文字符调小 untiao.lsp --- 上两个程序的复原 sht.lsp --- 在图中查找字符串 zhuang.lsp --- 桩点及钎探号绘制(勘测图) dim.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:1) dimm.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:100)

di1.lsp~di8.lsp --- 直接连续标注尺寸(用于1:1的图) di100.lsp~di800.lsp --- 直接连续标注尺寸(用于1:100的图) 详细内容及附件下载请浏览北纬服务论坛 https://www.360docs.net/doc/3811910716.html,/thread-2724-1-1.html

CADLISP程序

1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL () (setvar "cmdecho" 1) (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0) (setq ll 0) (repeat (sslength en) ? (setq ss (ssname en i)) ? (setq endata (entget ss)) ? (command "lengthen" ss "") ? (setq dd (getvar "perimeter")) (setq ll (+ dd ll)) ? (setq i (1+ i)) ) ? (princ "所选线条总长为:")(princ ll)(princ) ) 2.标注所有线段(加载后只需框选所有线段便可得标注这些线段) (defun c:LLL () (COMMAND "UCS" "") (setvar "cmdecho" 1) (SETVAR "OSMODE" 0) (setq ? ?AcadObject ? (vlax-get-acad-object) ? ?AcadDocument (vla-get-ActiveDocument Acadobject) ? ?mSpace ? ? ? (vla-get-ModelSpace Acaddocument) ) ;;选取需要测量的样条曲线、圆弧、直线、椭圆 (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0)

LISP函数大全

AutoLisp函数 一、数学运算功能函数 1.l(十数值数值…)返回:累计实数或整数数值 1.2(一数值数值…)返回:差值 1.3(* 数值数值…)返回:所有数值乘积 1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十数值)返回:数值十l l、 6(1—数值)返回:数值一l l.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.1415926 1.19(rem 数值 1数值 2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt 数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1就是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1就是否大于等于表达式2 2.3(<表达式1 表达式2) 比较表达式1就是否<小于表达式2 2.4(<= 表达式1 表达式2)比较表达式1就是否<一小于等于表达式2 2.5(>表达式1 表达式2) 比较表达式1就是否>大于表达式2 2.6(>= 表达式1 表达式2) 比较表达式1就是否大于等于表达式2 2.7 (~数值)返回:数值的位 not值,(1的补码) 2.8 (and 表达式1 表达式2…)返回:逻辑and的结果 2.9(boole 函数整数整数…)返回:位式布尔运算AutoLisp函数2/8 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 字符串)返回:字符串转成整数值

坐标提取lisp程序

坐标提取lisp程序 2010-05-17 20:50:07| 分类:工程| 标签:|字号大中小订阅 ;该程序主要用于CAD点(point)三维坐标提取,并将数据输出为CASS软件中使用的数据格式;输出格式:点号,,测量Y值,测量X值,测量Z值例:1,,100.3244,1232,433,25 ;2010-05-17 ;命令:plzbsc (defun c:plzbsc() (princ "\n选择所需输出的点(point):") (setq ss (ssget ));;选取坐标点 (setq n (sslength ss ));计算坐标点数量 (setq ff (open (getfiled "文件保存为" "f:/" "dat" 1) "w"));保存路径 (setq i 0) (repeat n (setq spt (ssname ss i )) (setq ept (entget spt)) (if (= (cdr (assoc 0 ept)) "POINT") (progn (setq lxyz (cdr (assoc 10 ept))) (setq sx (rtos (nth 1 lxyz)));将坐标值实数转换成字符 (setq sy (rtos (nth 0 lxyz))) (setq sz (rtos (nth 2 lxyz))) (setq i1 (+ i 1));计算点序号 (setq sn (rtos i1 2 0));将序号实数转换成字符 (setq sxyz (strcat sn",," sy "," sx "," sz)) (write-line sxyz ff) ) ) (setq i (+ i 1)) );repeat ) (prompt "* << 命令:plzbsc >> *输出格式(点号,, Y,X,Z)**") (prin1) 地形图上提取碎步点(高程点)坐标并输出到文本 2010-05-18 08:50:38| 分类:工程| 标签:|字号大中小订阅 利用程序提取地形图上碎步点的三维坐标。并输出到记事本中,

AutoLISP 基础——认识自定义函数

AutoLISP基础——认识自定义函数 (本文由LL_J?认识自定义函数?和?Autolisp编程心得?两篇巨著合成,并融入了其他人的一些经验,以快速打通你的任督二脉——自贡黄明儒注) 一、初识Lisp 在AutoCad命令输入(+ 1 2 3),回车返回6,如下 命令: (+ 1 2 3) 6 恭喜你,你已经会写Lisp程序了。这里,我们用到了一个系统定义的函数+,这个函数的作用就是对后面的数字求和。 上式一对英文括号组成的表达式,称之为表,Lisp语言也称为表的语言。表有两种形式,一种是?口袋式?表;一种是?函数式?表。前者如’(0 0)表示一个2维点,前面加’表示此表不求值。如果不加‘,则通常是认为是?函数式?表。?函数式?表如下: ①结构特点:左括号(紧跟函数,函数所需要的参数,右括号)结束。 ②函数是指:系统定义的函数、自定义的函数、匿名函数lambda。如 ((lambda(x y z) (* x y z)) 3 4 5)是合理的。 ③参数可以是:数字(整数、实数)、字符串、T、nil、表(如果此 表是表、函数,就构成了复杂表,这就是lisp程序)、函数。 ④表可以作为函数的参数。如(+ 1 (- 5 2) 3)中,表(- 5 2)就作为+函数 的参数。 ⑤表的返回值也可以传递给其它变量,如(setq x (+ 1 2 3)) ⑥接受输入参数,如(- 5 2)中,-函数接受5和2两个参数。 二、什么是函数 函数一词最早来源于数学,维基百科这样说:函数是将唯一的输出值赋予每一输入的"法则"以及该输出值与对应输入值的集合。 在计算机领域,对函数并没有一个完整的定义,百度百科有这样一句话:"许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,所以,函数也可以说是许多代码的集合,这就是程序中的函数。 综合以上描述,我们可以看到"函数"的基本组成: 输入值:一般称为参数; 表达式:函数体,是代码的集合,共同组成上面所说的"法则";

AUTO LISP函数参考5

AUTO LISP函数参考 4实体数据函数 下列函数可让用户检索和修改定义实体的数据,所有函数都用实体名指定要操作的实体. 4.1(entdel<实体名>) 如果由<实体名>指定的实体在当前图中,它就被删掉,如果在这次编辑中该实体已被删除,那么它将被重新恢复出来(从当前图中).退出图形编辑程序时,被删除的实体便从图中 彻底清除掉了,所以ENTDEL只能在删除实体的那次编辑过程中使实体再恢复.ENTDEL只对 主实体进行操作.对属性和多义线的顶点是不能脱离其双亲实体而予删除的(可使用COMM AND函数执行ATTEDIT或PEDIT命令来达到这一目的). 例如: (setq e1(entnext));置E1为图中第一个实体的名 (entdel e1);删去实体E1 (entdel e1);不删除(恢复)已被删去的实体E1 4.2(entget<实体名>) 从数据库中检索到名为<实体名>的实体,并以表形式返回,此表包含实体的定义数据表的结果以LISP的关联表形式编制,用ASSOC函数可以容易地从中检索每一项.表中的对象是用AutoCAD的DXF组码形式定义的,它们是为实体数据的每个部分准备的.例如,用下列命令序列画线,然后再检索此线: 对下面的例子,我们假定: .当前层是"0", .当前线型是"CONTINUOUS"(缺省值), .当前Z向高度是零(缺省值), .实体标号功能被关闭,而且 .FLATLAND系统变量值为零. 假设用下列命令画一条线: Command:LINE From point:1,2 To point:6,6 To point:RETURN 然后可以用下述命令为线检索实体数据: Command:(setq a(entget(entlast))) 假定系统变量FLATLAND为零(即要求3D点).这样,将把A置为下表(为了可读,作了缩进排列): ((-1.) (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不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的

lisp功能函数

一、数学运算功能函数 1.l(十数值数值…)返回:累计实数或整数数值 1.2(一数值数值…)返回:差值 1.3(* 数值数值…)返回:所有数值乘积 1.4(/ 数值数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十数值)返回:数值十l l. 6(1—数值)返回:数值一l l.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.1415926 1.19(rem 数值1数值2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt 数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.3(<表达式1 表达式2) 比较表达式1是否<小于表达式2

2.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式2 2.5(>表达式1 表达式2)比较表达式1是否>大于表达式2 2.6(>= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.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坐标

AutoLISP详细讲解

AutoLISP详细讲解 关于AutoLISP AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。 除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。 AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。 现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。 在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk 公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编辑器进行编制。 数学运算 任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。这一节主要讨论AutoLISP程序语言支持的常用数学函数。 1.加法 格式(+ num1 num2 num3…) 此函数(+)计算加号(+)右边所有数字的和(+ num1 num2 num3…)。这些数字可以是整数或实数。如果均为整数,则和为整数;如果均为实数,则和为实数。但是如果既有整数又有实数,则和为实数。如下所示,在前两个例子中,所有数字均为整数,所以结果是

AutoCAD二次开发所用的autolisp函数

AutoCAD二次开发所用的autolisp函数。 一、数学运算功能函数 1.l(十数值数值…)返回:累计实数或整数数值 1.2(一数值数值…)返回:差值 1.3(*数值数值…)返回:所有数值乘积 1.4(/数值数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十数值)返回:数值十l l. 6(1—数值)返回:数值一l l.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.1415926 1.19(rem 数值1数值2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.3(<表达式1 表达式2) 比较表达式1是否<小于表达式2 2.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式2 2.5(>表达式1 表达式2) 比较表达式1是否>大于表达式2 2.6(>= 表达式1 表达式2) 比较表达式1是否大于等于表达式2 2.7 (~数值)返回:数值的位not值,(1的补码)

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

autolisp多段线处理函数集

;;164.1 [功能] 曲线是否封闭 ;;164.2 [功能]使多段线封闭 ;;164.3 [功能] 多段线端点列表 ;;164.4 [功能] 矩形中点坐标 ;;164.5 [功能] 参数param处的切线方向的角度;;164.6 [功能] 参数param处的法线方向的角度;;164.7 [功能] 曲线一点的切线方向的角度;;164.8 [功能] 曲线一点的法线方向的角度;;164.9 [功能] 去除多段线重点 ;;164.10 [功能] 判断点是否在曲线上 ;;164.11 [功能] 曲线长度 ;;164.12 [功能] 多段线子段数量 ;;164.13 [功能] 曲线中点 ;;164.14 [功能] 曲线一点的参数param ;;164.15 [功能] 参数param处的坐标 ;;164.16 [功能] 多段线第n子段的起点坐标;;164.17 [功能] 多段线第n子段的终点坐标;;164.18 [功能] 多段线所点击子段的两端点列表;;164.19 [功能] 多段线所点击点最近的一个顶点;;164.20 [功能] 多段线所点击子段param(索引) ;;164.21 [功能] 多段线所点击子段的起点坐标;;164.22 [功能] 多段线所点击子段的终点坐标

;;164.23 [功能] 多段线所击点离起点近 ;;164.24 [功能] 多段线所点击子段否是直线(返回nil是弧) ;;164.25 [功能] 求多段线上的弧段(圆或圆弧也有效)的圆心by caoyin ;;164.26 [功能] 求多段线上的弧段(圆或圆弧也有效)的圆心 ;;164.27 [功能] 判断多段线是否有圆弧(凸度/=0)的子段 ;;164.28 [功能] 判断多段线是否有圆弧(凸度/=0)的子段 ;;164.29 [功能] 连接线、弧成多段线 ;;164.30 [功能] 构造矩形by highflybird ;;164.31 [功能] 点表生成多段线 ;;164.32 [功能] 3D多段线 ;;164.33 [功能] 多段线反向(起点反成终点) byzml84 ;;164.34 [功能] 多段线删除顶点 ;;164.35 [功能] 多段线增加顶点 ;;164.36 [功能] 多段线修改顶点 ;;164.37 [功能] 多段线拷贝子段 ;;164.38 [功能] 修改多段线子段 ;;164.39 [功能] 修改多段线子段为直线 ;;164.40 [功能] 点在封闭多段线内返回T,其余nil By 狂刀 ;;164.41 [功能] 点在封闭多段线内返回T,其余nil By SmcTools ;;164.42 [功能] 判断点在封闭曲线内外,自交曲线不适用By Gu_xl ;;164.43 [功能] 点在封闭多段线内返回T;线上0;外nil ;;164.44 [功能] 多段线弧段全改为直线段

Autolisp编程心得

Autolisp编程心得 1.养成良好的书写习惯 众所周知,Lisp是一种表结构语言,括号必须成对出现,在调试时往往为遗漏了一个括号大 费周折,所以,养成一个好的编程习惯是学好Lisp所必须的。 ⑴选择一个较好的编辑器,这是一个基本条件,建议使用Visual Lisp编辑器或Lisplink 等 专用编辑器,此类编辑器可以对函数突出显示。 ⑵按Lisp(DCL)专有格式书写,并经常对程序进行“格式化”,及时发现语法错误,并有利于调试是查找错误。 ⑶使用自定义函数,并辅助以适当得注释,在较大程序中按功能使用自定义函数可以使得程序条理化。 2.函数中循环与转移的使用 在高级语言中一般有类似“goto”的语句实现转移,在AutoLisp中没有转移的函数。我们可 以使用自定义函数实现转移,用if及cond辅助实现条件转移。 当我们需要实现在满足一定条件时进行循环的功能,一般使用while函数,但有时需要判断的条件较复杂时,使用while函数往往不能实现或使得程序不够简洁。这时我们可以使用“转移”, 将需要实现的功能作为(子)函数,使用恰当,可以在程序中任意“转移”。 一般认为,当一段代码在不同处重复使用时,我们才会使用子函数定义,其实,利用函数的更大的优点是使得程序更加结构化。这就使得我们不必拘泥于程序中的循环语句,而使用函数的循环调用,辅助适当的判断,实现“转移”,如A->B->A。当然也可以进行自身调用,构成一个“标准的”循环。 如例一中,“程序执行完毕返回”与“空选返回”两种情况如果使用循环语句,其条件是完全不同的,而将函数本身作为子函数调用,程序简洁明了。 3.initget函数中关键字“ ”(空格)的使用 空格可以被用作关键字,一般多用来定义鼠标右键退出。 ⑴当用户输入函数不支持控制位(如entsel、nentsel、nentselp)时,可直接使用“(initget " ")”。 ⑵当用户输入函数支持控制位(如getpoint等)时,可使用“(initget 1 " ")”禁止空输入,而将回车等空输入作为关键字使用。 ⑶当同时使用其它关键字时,应该将空格作为一系列关键字的最后一个,用 “(initget "C ")”(两个空格)调用,否则无效。 见例一。 ************************************************ ;;例一 (defun ett_ct()

lisp函数

函数大全 一、数学运算功能函数 1.l(十 数值 数值…)返回:累计实数或整数数值 1.2(一 数值 数值…)返回:差值 1.3(* 数值 数值…)返回:所有数值乘积 1.4(/ 数值 数值…)返回:第一个数值除以第二个以后数值的商 1.5(l十 数值)返回:数值十l l. 6(1— 数值)返回:数值一l l.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.1415926 1.19(rem 数值 1数值 2)返回:M数值的相除的余数 l.20(sin 角度)返回:角度的正旋值,角度值为弧度 1.21(sqrt 数值)返回:数值的平方根 二、检验与逻辑运算功能函数 2.l(= 表达式1 表达式2)比较表达式1是否等于式2,适用数值及字符串 2.2 (/= 表达式1 表达式2)比较表达式1是否大于等于表达式2 2.3(< 表达式1 表达式2) 比较表达式1是否<小于表达式2 2.4(<= 表达式1 表达式2)比较表达式1是否<一小于等于表达式2 2.5(> 表达式1 表达式2) 比较表达式1是否>大于表达式2 2.6(>= 表达式1 表达式2) 比较表达式1是否大于等于表达式2 2.7 (~ 数值)返回:数值的位 not值,(1的补码) 2.8 (and 表达式1 表达式2…)返回:逻辑and的结果 2.9(boole 函数 整数 整数…)返回:位式布尔运算

autolisp教程

第十四章 AutoLISP 14.1 关于AutoLISP AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。 除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。 AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。 现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。 在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk 公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编辑器进行编制。 14.2 数学运算 任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。这一节主要讨论AutoLISP程序语言支持的常用数学函数。 269

AUTOLISP实用编程四例

autolisp实用编程四例 江苏崔华明 autocad是一个功能强大的通用图形设计软件,其内嵌的autolisp语言为用户进行二次开发提供了方便。下面就介绍几则用autolisp编写的实用程序,这些程序相当于新增的autocad命令,可以弥补autocad本身的一些不足,为日常使用带来方便。 1.快速更改文本的大小 在标准的autocad中,要更改已有文本的大小,需要使用change命令。该命令的缺陷是:即使只更改文本的大小,也要重新确认文本的插入点、字型、倾斜角等一系列参数。也就是说,除输入文本的新高度值外,还需要按5次回车键才能完成一个文本的更改!而且每次只能修改一个文本。这对于同时更改多个文本的大小非常不便。本文的autolisp程序使这一工作变得十分方便和快捷。使用方法如下: 在autocad的command提示下,打入命令: cth autocad将提示“selectobjects:”,这时可以使用autocad允许的任意方式选择目标。对于有多个文本需要更改的情况,使用窗口选择比较方便,而且你不用担心选择窗口中包含了非文本目标,程序能够自动在选择的目标中查找出文本实体,并只对文本进行更改。 选择目标后,autocad提示“newtextheight:”,这时输入一个新的文本高度值然后回车,则所有选中的文本被更改成新设定的高度。 2.延伸直线的长度 在实际使用中,常常要将一条直线延伸指定的长度。通常的做法是:在需要延伸的直线的端点画一个辅助圆,圆的半径等于直线要延伸的长度,然后使用extend命令将直线延伸到与圆相交,最后删除辅助圆。 本文的autolisp程序将使你非常容易地实现这一点。你只需选择要延伸的直线并输入要延伸的长度即可,其余的工作由程序自动完成。使用方法如下: 在autocad的command提示下,打入命令: stl 然后根据提示选择要延伸的直线(选择点要靠近直线需要延伸的端点),并输入延伸的长度。该程序将自动在离选择点较近的直线端点,按指定的长度延伸直线。 3.快速画直线 在画给定坐标点的直线时,需要通过键盘输入坐标值。这样的情况下当然是利用右边的数字键盘输入

CAD创建Lisp程序步骤

使用Visual LISP创建简单的LISP应用程序 作者:佚名点击数:1523 更新:2007-2-2 7:08:10 热★★★ 【字体:小大】 a> 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCA D中的加载和运行的方法。首先来创建一个最简单的LISP程序—-―Hello.lsp‖,在AutoCAD 2002中加载并运行该程序,将会在命令行出现-―Hello, Visual LISP!‖。 36.2.1 Visual LISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 36.2.2 实例1 最简单的LISP程序——―Hello.lsp‖ Step 1 创建新文件 (1) 运行AutoCAD 2002系统,以―acadiso.dwt‖为样板创建图形文件,并调用―vlisp‖命令进入Visual LISP环境。 (2) 单击―Standard(标准)‖工具栏中的按钮,新建一个LISP文件。 Step 2 输入代码并保存文件 (1) 在编辑窗口中输入源文件―Hello.lsp‖的代码,如图36-3所示。程序清单如下: ;;;* Hello.lsp –Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量―ipt‖ (setq hgt 15) ;给变量―hgt‖赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!") ;调用―Commnad‖函数与AutoCAD进行通信

Lisp常用函数

Lisp常用函数 Lisp 语法及变量皆不分大小写(case insensitive)。 NIL 空串行,相当于'() 。另外真伪值表示时,T 表真,NIL 表伪。只要是任何不是NIL (空串行) 的值,真伪值都表示真。 QUOTE CODE: (QUOTE 参数) 将参数直接传回,不做任何评估动作。可用' (单引号)取代 SETQ, SETF, LET CODE: (SETQ 参数1 参数2) (SETF 参数1 参数2) (LET ((变量1名称变量1的值) (变量2名称变量2的值) ........ ) 变数1,2...的作用范围,既程序执行叙述 ) SETQ, SETF 将参数1的值连结至参数2。LET 只有在作用范围内有效。 注:SetQ => set quote; SetF => set form 注:全域变数习惯用两个* 把变量名称包起来,例如*globe-variable* CAR, CDR CODE: (CAR 串行参数) (CDR 串行参数) CAR 取得参数串行的第一个元素;CDR 取得扣掉第一个元素之后的新串行。

CONS CODE: (CONS 参数1 参数串行2) 把参数1 加到参数串行2 的第一个元素,产生出新的串行。 对任一串行A 而言,(CONS (CAR A) (CDR A)) 即为 A 。 注:如果第二个参数不是串行,则会产生出点对,故少用。 APPEND CODE: (APPEND 参数串行1 参数串行2 ........ ) 合并若干参数串行,形成新的串行。 注:如果最后一个参数不是串行,也会形成尾巴是带点的串行,故少用。LIST CODE: (LIST 参数1 ........ ) 将若干参数,当作是新串行的元素,形成新串行。 注:APPEND 除了最后一个之外的参数皆需为串行,而LIST 不用。NULL CODE: (NULL 参数) 判断参数是否为空串行(NIL)。 ATOM, LISTP, NUMBERP, ZEROP CODE: (ATOM 参数) (LISTP 参数) (NUMBERP 参数) (ZEROP 参数)

CAD-LISP-程序

CAD-LISP-程序

1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defun c:LL () (setvar "cmdecho" 1) (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0) (setq ll 0) (repeat (sslength en) (setq ss (ssname en i)) (setq endata (entget ss)) (command "lengthen" ss "") (setq dd (getvar "perimeter")) (setq ll (+ dd ll)) (setq i (1+ i)) ) (princ "所选线条总长为:")(princ ll)(princ) ) 2.标注所有线段(加载后只需框选所有线段便可得标注这些线段) (defun c:LLL () (COMMAND "UCS" "") (setvar "cmdecho" 1) (SETVAR "OSMODE" 0) (setq AcadObject (vlax-get-acad-object) AcadDocument (vla-get-ActiveDocument Acadobject) mSpace (vla-get-ModelSpace Acaddocument) ) ;;选取需要测量的样条曲线、圆弧、直线、椭圆 (setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0)

相关文档
最新文档