AutoLISP程序在AutoCAD中的应用实例

AutoLISP程序在AutoCAD中的应用实例
AutoLISP程序在AutoCAD中的应用实例

文章编号:100926825(2002)0320157202

Auto LISP 程序在Auto CAD 中的应用实例

收稿日期:2002201209

作者简介:康保成(19552),男,1987年毕业于广东教育学院工程图学专业,高级讲师,太原理工大学轻纺工程与美术学院,山西晋中 030600

康保成

摘 要:在Auto C AD 绘图环境下,对工程图中圆柱螺旋压缩弹簧的作图方法进行了分析,指出绘制弹簧的关键是绘制拉

伸路径,为了方便、快捷、准确地绘制出弹簧的图形,根据Auto LISP 语言特点编制了一个Auto LISP 程序,解决了拉伸路径的绘制,为Auto C AD 更好地应用于工程实践中提供了方便。关键词:AutoLISP ,AutoC AD ,弹簧中图分类号:TP361文献标识码:A

引言

Auto C AD 是美国Auto desk 公司推出的既能在微机、又能在工

作站上运行的C AD 软件。近20年来,版本不断更新,功能日益增强,Auto C AD 从最初的Auto C AD V1.0版本发展到现今流行的Au 2to C AD2000,成为集平面作图、三维实体、数据库管理、渲染着色、国际互联网等功能于一体的强大辅助设计软件。它的应用与普及覆盖了机械、汽车、造船、家电、工程、建筑、轻工、电气、电力、纺织等许多行业。从最初的甩图板工程到应用C AD 进行三维设计,人们的设计思维也在发生着变化。现就LISP 程序在Auto C AD 中

绘制一圆柱螺旋压缩弹簧的三维图形作一探讨。1 弹簧的绘制

弹簧属于常用件,它主要用于减振、夹紧、储存能量和测力等

方面。弹簧的特点是:去除外力后,弹簧能立即恢复原状。下面

介绍圆柱螺旋压缩弹簧的画法。

111 圆柱螺旋压缩弹簧各部分名称及尺寸关系

1)簧丝直径d :弹簧钢丝直径。2)弹簧外径D :弹簧的最大直径。3)弹簧内径D 1:弹簧的最小直径,D 1=D -2d 。4)弹簧中径D 2:弹簧的内径和外径的平均值,D 2=D +D 1

2

5)节距t :除支承圈外,相邻两圈的轴向距离。

6)有效圈数n :保持相等节距的圈数,称为有效圈数。

7)支承圈数n 2:并紧、磨平的各圈仅起支承作用,称为支承

圈,一般n 2=2.5。

8)总圈数n 1:有效圈数与支承圈数之和,称为总圈数,n 1=n

+n 2。

9)自由高度H 0:弹簧在不受外力作用时的高度,H 0=n ×t +

(n 2-0.5)×d 。

1.2 LISP 程序的编制

绘制弹簧的关键是绘制拉伸路径———螺旋线。

在Auto C AD 中,绘制三维线的命令有Line 、3Dpoly 、S pline 等命令,而作为三维拉伸路径的线只有3Dpoly 命令可以胜任,而且不能使用其中的拟合项。所以,为了保证绘图精度,必须输入大量精确数据,才能一点一点地画出所需的螺旋线,显然这样做非常麻烦。为了解决这个问题,编制一个Lisp 程序,用于绘制弹簧。

(defun c :luowen (/))(setq b1(getpoint ″基点″))(setq r (getreal ″半径R =:″))(setq t1(getreal ″节距″))(setq n (getint ″段数″)(setq delta (/6.28318n ))

(setq j (/t1n ))

(setq bb (caddr b1))

(setq ang 0)(setq jj 0)(command ″UCS ″″O ″b1)

(command ″3dpoly ″(list r 00))(repeat n

(setq jj (+jj 1)

(setq ang (+delta ang ))

(setq pt2(list (3r (cos ang ))(3r (sin ang ))(+0(3j jj ))))

(command pt2)

)

(command ″″))

The laser vertical positioning technique of high 2rise building

WANG Zhi 2sheng ,H AO Zhi 2feng (Luliang College ,Lishi 033000,China )

Abstract :The verticality control of high 2rise building directly in fluence the quality and progress of engineering.In this paper the thing that how to use laser theodolite to control the verticality of high 2rise building is illustrated.The setting up of the drawn point on first floor preenbedded steel board and the placement of the receive target on the measures floor are introduced.s o the vertical controlling method is com pleted.At last the advantages and mat 2ters needing attention of using laser theodolite to conduct axial measurement are summarized.K ey w ords :high 2rise building ,verticality ,laser theodolite ,axes

?

751?

第28卷第3期2002年3月 山西建

筑SHANXI ARCHITECT URE

V ol.28N o.3M ar. 2002

将以上程序存盘为“luowen ”

1.3 螺旋线的绘制

1)设置绘图环境。

2)加载绘制螺旋线的lisp 程序。3)绘制有效范围内的螺旋线。C ommand :luowen

基点 0,0,0半径 R =:20节距 10段数 36

上述操作后,自动生成螺旋线。

4)改变观察方向,使所画螺旋线变为西南等轴测图,见图1。5)储存当前UCS 为U1。6)绘制下支承处螺旋线。C ommand :luowen 基点 0,0,-5半径 R =:20节距 5段数 36

上述操作后,自动生成螺旋线,见图2。

1.4 弹簧截面的绘制

1)改变UCS 。

2)绘制支承段截面

3)以(20,0)为圆心坐标,2.5为半径画圆。

1.5 拉伸,排列生成弹簧

当截面和拉伸路径绘制好后,就可以用拉伸法生成弹簧。

1)拉伸支承段。2)排列支承段。

3)拉伸有效范围内的弹簧。

4)排列有效段。

1.6 绘制上支承圈

1)绘制上支承圈,恢复UCS 到U1。

2)绘制上支承段螺旋线。C ommand :luowen

基点 0,0,80半径 R =:20节距 5段数 363)绘制截面。4)拉伸。5)排列。

6)裁剪上支承段多余部分。7)裁剪下支承段多余部分。

1.7 产生上、下支承面

为保证受力均匀,上下支承面靠紧并磨平。

1)产生上支承面。2)产生下支承面。3)消隐,并完成弹簧。

2 结语

上述弹簧绘制只是利用Auto LISP 程序的一个实例。Auto LISP 是一种内嵌于Auto C AD 中的表处理程序设计语言,具有很强的表处理功能,可以直接被Auto C AD 所接受。因此,人们经常利用Auto LISP 语言对Auto C AD 进行二次开发或进行参数绘图。扩充了Auto C AD 命令的使用范围,使Auto C AD 更好地为用户服务。参考文献:

[1]何铭新,钱可强1机械制图[M]1高等教育出版社,20011

[2]郝玲,张红梅,林建平1计算机辅助制图与设计[M]1北京:清华大学出版社,20001

[3]蔡汉明,陈建国1Auto C AD 三维造型实例详解[M]1人民邮电出版社,19991

[4]康博创作室1Auto C AD2000使用大全[M]1清华大学出版社,20001

The application example of AutoLISP program in AutoCAD

K ANG B ao 2cheng

(Light Textile Engineering and Art Academy o f Taiyuan Univer sity o f Technology ,Jinzhong 030600,China )

Abstract :Under the drawing condition of AutoC AD ,the drawing methods of the cylindrical helical com pression spring are studied in this paper.And the paper points out that drawing spring ’s key point is drawing extension path.In order to draw the spring conveniently ,fast and accurately one AutoLISP program is com piled according to language characteristics of AutoLISP to s olve the drawing of extension path and bring convenience for application of Au 2toLISP in engineering practice.

K ey w ords :AutoLISP ,AutoC AD ,spring

?

851?第28卷第3期2002年3月

山西建筑

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* 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进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

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 字符串)返回:字符串转成整数值

Autolisp基础教程

Autolisp基础教程 单元一:AutoLISP主角潇洒登场 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能! 若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等 直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感! 横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行! 三.撰写AutoLISP 的动机? 1、欲强化AutoCAD 原有指令时. 2、欲创造更有用的AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时. 4、欲处理参数式绘图时. 5、欲做图面资料读文件、写文件. 6、欲做AutoCAD 演示文稿展示时. 7、欲达到真正灵活掌控AutoCAD 时. 8、欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?! C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。

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不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的

用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详细讲解

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多段线处理函数集

;;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()

autolisp函数大全.doc

函数大全 一、数学运算功能函数 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主角潇洒登场 一. AutoLISP 是何方神圣? 1.AutoLISP是AutoCAD的最佳拍檔! 2.AutoLISP内含于AutoCAD软件内,不用另外花钱买! 3.AutoLISP是强化AutoCAD最好、最直接的『程序语言』! 4.AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短 的时间内,写出令人惊讶、赞叹的功能! 5.若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不 为过一点也不夸张! 6.AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅 力无穷! 二. AutoLISP 程序语言的特质分析: 学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序! 三.撰写AutoLISP 的动机? 1.欲强化AutoCAD 原有指令时. 2.欲创造更有用的AutoCAD 新指令. 3.欲简化繁琐的环境设定或绘图步骤时. 4.欲处理参数式绘图时.

5.欲做图面资料读文件、写文件. 6.欲做AutoCAD 简报展示时. 7.欲达到真正灵活掌控AutoCAD 时. 8.欲提升自己跨上AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』! B.若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受 训,学习更好的设计技巧与创意呢?! C.千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍 了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。 2. 对设计人员而言:

AutoLISP程序在AutoCAD中的应用实例

文章编号:100926825(2002)0320157202 Auto LISP 程序在Auto CAD 中的应用实例 收稿日期:2002201209 作者简介:康保成(19552),男,1987年毕业于广东教育学院工程图学专业,高级讲师,太原理工大学轻纺工程与美术学院,山西晋中 030600 康保成 摘 要:在Auto C AD 绘图环境下,对工程图中圆柱螺旋压缩弹簧的作图方法进行了分析,指出绘制弹簧的关键是绘制拉 伸路径,为了方便、快捷、准确地绘制出弹簧的图形,根据Auto LISP 语言特点编制了一个Auto LISP 程序,解决了拉伸路径的绘制,为Auto C AD 更好地应用于工程实践中提供了方便。关键词:AutoLISP ,AutoC AD ,弹簧中图分类号:TP361文献标识码:A 引言 Auto C AD 是美国Auto desk 公司推出的既能在微机、又能在工 作站上运行的C AD 软件。近20年来,版本不断更新,功能日益增强,Auto C AD 从最初的Auto C AD V1.0版本发展到现今流行的Au 2to C AD2000,成为集平面作图、三维实体、数据库管理、渲染着色、国际互联网等功能于一体的强大辅助设计软件。它的应用与普及覆盖了机械、汽车、造船、家电、工程、建筑、轻工、电气、电力、纺织等许多行业。从最初的甩图板工程到应用C AD 进行三维设计,人们的设计思维也在发生着变化。现就LISP 程序在Auto C AD 中 绘制一圆柱螺旋压缩弹簧的三维图形作一探讨。1 弹簧的绘制 弹簧属于常用件,它主要用于减振、夹紧、储存能量和测力等 方面。弹簧的特点是:去除外力后,弹簧能立即恢复原状。下面 介绍圆柱螺旋压缩弹簧的画法。 111 圆柱螺旋压缩弹簧各部分名称及尺寸关系 1)簧丝直径d :弹簧钢丝直径。2)弹簧外径D :弹簧的最大直径。3)弹簧内径D 1:弹簧的最小直径,D 1=D -2d 。4)弹簧中径D 2:弹簧的内径和外径的平均值,D 2=D +D 1 2 。 5)节距t :除支承圈外,相邻两圈的轴向距离。 6)有效圈数n :保持相等节距的圈数,称为有效圈数。 7)支承圈数n 2:并紧、磨平的各圈仅起支承作用,称为支承 圈,一般n 2=2.5。 8)总圈数n 1:有效圈数与支承圈数之和,称为总圈数,n 1=n +n 2。 9)自由高度H 0:弹簧在不受外力作用时的高度,H 0=n ×t + (n 2-0.5)×d 。 1.2 LISP 程序的编制 绘制弹簧的关键是绘制拉伸路径———螺旋线。 在Auto C AD 中,绘制三维线的命令有Line 、3Dpoly 、S pline 等命令,而作为三维拉伸路径的线只有3Dpoly 命令可以胜任,而且不能使用其中的拟合项。所以,为了保证绘图精度,必须输入大量精确数据,才能一点一点地画出所需的螺旋线,显然这样做非常麻烦。为了解决这个问题,编制一个Lisp 程序,用于绘制弹簧。 (defun c :luowen (/))(setq b1(getpoint ″基点″))(setq r (getreal ″半径R =:″))(setq t1(getreal ″节距″))(setq n (getint ″段数″)(setq delta (/6.28318n )) (setq j (/t1n )) (setq bb (caddr b1)) (setq ang 0)(setq jj 0)(command ″UCS ″″O ″b1) (command ″3dpoly ″(list r 00))(repeat n (setq jj (+jj 1) (setq ang (+delta ang )) (setq pt2(list (3r (cos ang ))(3r (sin ang ))(+0(3j jj )))) (command pt2) ) (command ″″)) The laser vertical positioning technique of high 2rise building WANG Zhi 2sheng ,H AO Zhi 2feng (Luliang College ,Lishi 033000,China ) Abstract :The verticality control of high 2rise building directly in fluence the quality and progress of engineering.In this paper the thing that how to use laser theodolite to control the verticality of high 2rise building is illustrated.The setting up of the drawn point on first floor preenbedded steel board and the placement of the receive target on the measures floor are introduced.s o the vertical controlling method is com pleted.At last the advantages and mat 2ters needing attention of using laser theodolite to conduct axial measurement are summarized.K ey w ords :high 2rise building ,verticality ,laser theodolite ,axes ? 751? 第28卷第3期2002年3月 山西建 筑SHANXI ARCHITECT URE V ol.28N o.3M ar. 2002

AutoCAD之AutoLisp入门教程

AutoLisp入门教程 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。首先来创建一个最简单的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进行通信 [img]https://www.360docs.net/doc/6f5026081.html,/Files/AutoCad/146-1.JPG[/img]

CADLISP函数

CADLISP语言 数据类型 1.表 2.文件描述符 3.实体名 4.选择集 5.内部函数(Auto LISP子程序) 赋值与数值计算函数 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.(<= 原子原子)小于等于函数 28.(> 原子原子)大于函数 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) 计算0~100之间所有整数的和。 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组合而成的函数

相关文档
最新文档