当前位置:文档之家› SQLServer2005函数大全

SQLServer2005函数大全

SQLServer2005函数大全
SQLServer2005函数大全

SQL Server 2005 函数大全

字符串函数 (2)

日期和时间函数 (3)

日期部分 (5)

数学函数 (6)

数据类型转换函数 (7)

日期类型数据转换为字符数据类型的日期格式的部分样式表 (8)

系统函数 (11)

排名函数 (11)

聚合函数 (12)

字符串函数

表达式:是常量、变量、列或函数等与运算符的任意组合。以下参数中表达式类型是指表达式经运算后返回的值的类型

函数名称参数示例说明

ascii (字符串表达式) select ascii('abc') 返回 97返回字符串中最左侧的字符的ASCII码。

char(整数表达式) select char(100) 返回 d

把ASCII 码转换为字符。

介于0 和255 之间的整数。如果该整数表达式不在此范围内,将返回NULL 值。

charindex (字符串表达式1,字符串表达式

2[,整数表达式])

select charindex('ab','BCabTabD')返回3

select charindex('ab','BCabTabD',4)返回6

在字符串2中查找字符串1,如果存在返回第一个匹配的

位置,如果不存在返回0。如果字符串1和字符串2中有一个

是null则返回null。

可以指定在字符串2中查找的起始位置。

difference (字符串表达式1,字符串表达式2) select difference('Green','Greene')返回4

返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。0 表示几乎不同或完全不同,4表示几乎相同或完全相同。注意相似并不代表相等

left (字符串表达式,整数表达式) select left('abcdefg',2) 返回 ab返回字符串中从左边开始指定个数的字符。

right (字符串表达式,整数表达式) select right('abcdefg',2) 返回fg返回字符串中从右边开始指定个数的字符。

len(字符串表达式) select len('abcdefg')返回 7

select len('abcdefg ') 返回7

返回指定字符串表达式的字符数,其中不包含尾随空格。lower (字符串表达式) select lower('ABCDEF')返回 abcdef返回大写字符数据转换为小写的字符表达式。

upper (字符串表达式) select upper('abcdef')返回 ABCDEF返回小写字符数据转换为大写的字符表达式。

ltrim (字符串表达式) select ltrim(' abc')返回 abc返回删除了前导空格之后的字符表达式。

rtrim(字符串表达式) select rtrim('abc ')返回 abc返回删除了尾随空格之后的字符表达式。

patindex (字符串表达式1,字符串表达式2) select patindex('%ab%','123ab456')返回4

select patindex('ab%','123ab456')返回0

select patindex('___ab%','123ab456')返回1

select patindex('___ab_','123ab456')返回0

在字符串表达式1中可以使用通配符,此字符串的第一个

字符和最后一个字符通常是%。

%表示任意多个字符,_表示任意字符

返回字符串表达式2中字符串表达式1所指定模式第一次出现

的起始位置。没有找到返回0

reverse (字符串表达式) select reverse('abcde')返回 edcba返回指定字符串反转后的新字符串space (整数表达式) select'a'+space(2)+'b' 返回 a b返回由指定数目的空格组成的字符串。

str (float型小数[,总长度[,小数点

后保留的位数]])

select str(123.451)返回 123(123前面有空格)

select str(123.451,3)返回123

select str(123.451,7,3)返回123.451

select str(123.451,7,1)返回123.5

select str(123.451,5,3)返回123.5

select str(123.651,2)返回**

返回由数字转换成的字符串。返回字符数不到总长度的前面补

空格,超过总长度的截断小数位。如果需要截断整数位则返回

**。

注意在截断时遵循四舍五入

总长度。它包括小数点、符号、数字以及空格。默认值为10。

小数点后最多保留16位。默认不保留小数点后面的数字

stuff (字符串表达式1,开始位置,长度,

字符串表达式2)

select stuff('abcdef',2,2,'123')

返回 a123def

在字符串表达式1中在指定的开始位置删除指定长度的字符,

并在指定的开始位置处插入字符串表达式2。返回新字符串

substring(字符串表达式,开始位置,长度) select substring('abcdef',2,2)返回bc返回子字符串

replace (字符串表达式1,字符串表达式2,

字符串表达式3)

select

replace('abcttabchhabc','abc','123')

返回 123tt123hh123

用字符串表达式3替换字符串表达式1中出现的所有字符串表

达式2的匹配项。返回新的字符串

日期和时间函数

函数名称参数示例说明

dateadd (日期部分,数字,日期) select dateadd(year,45,'1990-12-11')

返回 2035-12-11 00:00:00.000

select dateadd(month,45,'1990-12-11')

返回1994-09-11 00:00:00.000

select dateadd(mm,45,'1990-12-11')

返回1994-09-11 00:00:00.000

select dateadd(qq,12,'1990-12-11')

返回给指定日期加上一个时间间隔后的新的日期值。

数字:用于与指定的日期部分相加的值。如果指定了非整数值,

则将舍弃该值的小数部分,舍弃时不遵循四舍五入。

日期:指定的原日期

在此函数中dw,dy,dd效果一样都表示天

返回1993-12-11 00:00:00.000

select dateadd(hh,12,'1990-12-11') 返回1990-12-11 12:00:00.000

select dateadd(yy,-12,'1990-12-11') 返回1978-12-11 00:00:00.000

datediff (日期部分,开始日期,结束日期) select

datediff(yy,'1990-12-11','2008-9-10')

返回 18

select

datediff(mm,'2007-12-11','2008-9-10')

返回 9

返回两个指定日期的指定日期部分的差的整数值。

在计算时由结束日期减去开始日期

在此函数中dw,dy,dd效果一样都表示天

datename (日期部分,日期) select datename(mm,'2007-12-11')返回12

select datename(dw,'2007-12-11')返回星期二

select datename(dd,'2007-12-11')返回11

返回表示指定日期的指定日期部分的字符串。

dw表示一星期中星期几,wk表示一年中的第几个星期

dy表示一年中的第几天

datepart (日期部分,日期) select datepart(mm,'2007-12-11')返回12

select datepart(dw,'2007-12-11')返回3

select datepart(dd,'2007-12-11')返回11

返回表示指定日期的指定日期部分的整数。

wk表示一年中的第几个星期

dy表示一年中的第几天,

dw表示一星期中星期几,返回整数默认1为星期天

getdate 无参数select getdate()

返回2009-04-28 18:57:24.153

返回当前系统日期和时间。

day (日期) select day('2007-12-11')返回11返回一个整数,表示指定日期的天的部分。等价于datepart(dd, 日期)

month (日期) select month('2007-12-11')返回12返回一个整数,表示指定日期的月的部分。等价于datepart(mm, 日期)

year (日期) select year('2007-12-11')返回2007返回一个整数,表示指定日期的年的部分。等价于datepart(yy, 日期)

getutcdate 无参数select getutcdate()

返回2009-04-28 10:57:24.153

返回表示当前的UTC(世界标准时间)时间。即格林尼治时间

(GMT)

日期部分

(指定要返回新值的日期的组成部分。下表列出了Microsoft SQL Server 2005 可识别的日期部分及其缩写。)日期部分含义缩写

year 年yy, yyyy

quarter 季qq, q

month 月mm, m

dayofyear 天(请看函数中的说明)dy, y

day 天(请看函数中的说明)dd, d

week 星期wk, ww

weekday 天(请看函数中的说明)dw, w

hour 小时hh

minute 分钟mi, n

second 秒ss, s

millisecond 毫秒ms

好用的例子:

6.1计算一个月第一天的SQL 脚本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

6.2一年的第一天的SQL 脚本:SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

6.3本周的星期一的SQL 脚本:SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

6.4 季度的第一天的SQL 脚本:SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

6.5当天的半夜的SQL 脚本:SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

6.6上个月的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

6.7去年的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

6.8本月的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

6.9本年的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

6.10本月的第一个星期一的SQL 脚本:select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

数学函数

函数名称参数示例说明

abs (数值表达式) select abs(-23.4)返回23.4 返回指定数值表达式的绝对值(正值)

pi 无参数select pi()返回3.14159265358979返回π的值

cos (浮点表达式) select cos(pi()/3)返回0.5返回指定弧度的余弦值

sin (浮点表达式) select sin(pi()/6)返回0.5返回指定弧度的正弦值

cot (浮点表达式) select cot(pi()/4)返回1 返回指定弧度的余切值

tan (浮点表达式) select tan(pi()/4)返回1返回指定弧度的正切值

acos (浮点表达式) select acos(0.5)返回1.0471975511966返回其余弦是所指定的数值表达式的弧度,求反余弦asin (浮点表达式) select asin(0.5)返回 0.523598775598299返回其正弦是所指定的数值表达式的弧度,求反正弦atan (浮点表达式) select atan(1)返回0.785398163397448返回其正切是所指定的数值表达式的弧度,求反正切degrees (数值表达式) select degrees(pi()/4) 返回45返回以弧度指定的角的相应角度。

radians (数值表达式) select radians(180.0)

返回3.1415926535897931

返回指定度数的弧度值。注意如果传入整数值则返回的结果将

会省略小数部分

exp (浮点表达式) select exp(4)返回54.5981500331442返回求e的指定次幂,e=2.718281…log (浮点表达式) select log(6)返回1.79175946922805返回以e为底的对数,求自然对数。Log10 (浮点表达式) select log10(100)返回2返回以10为底的对数

ceiling (数值表达式) select ceiling(5.44)返回6

select ceiling(-8.44)返回-8

返回大于或等于指定数值表达式的最小整数。

floor (数值表达式) select floor (5.44)返回5

select floor(-8.44)返回-9

返回小于或等于指定数值表达式的最大整数。

power (数值表达式1,数值表达式2) select power(5,2)返回25返回数值表达式1的数值表达式2次幂sqrt (数值表达式) select sqrt(25)返回5返回数值表达式的平方根

sign (数值表达式) select sign(6)返回1

select sign(-6)返回-1

select sign(0)返回0

表达式为正返回+1

表达式为负返回-1

表达式为零返回0

rand ([整数表达式]) select rand(100)返回0.715436657367485

select rand()返回0.28463380767982

select rand()返回0.0131039082850364

返回从0 到 1 之间的随机float 值。

整数表达式为种子,使用相同的种子产生的随机数相同。

即使用同一个种子值重复调用RAND() 会返回相同的结果。

不指定种子则系统会随机生成种子。

round (数值表达式[,长度[,操作方式]]) select round(1236.555,2)返回1236.560

select round(1236.555,2,1)返回1236.550

select round(1236.555,0)返回1237.000

select round(1236.555,-1)返回1240.000

select round(1236.555,-1,1)返回1230.000

select round(1236.555,-2)返回1200.000

select round(1236.555,-3)返回1000.000

select round(1236.555,-4)返回0.000

select round(5236.555,-4)出现错误

select round(5236.555,-4,1)返回0.000

返回一个数值,舍入到指定的长度。注意返回的数值和原数值

的总位数没有变化。

长度:舍入精度。如果长度为正数,则将数值舍入到长度

指定的小数位数。如果长度为负数,则将数值小数点左边部分

舍入到长度指定的长度。注意如果长度为负数,并且大于小数

点前的数字个数,则将返回0。如果长度为负数并且等于小数

点前的数字个数且操作方式为四舍五入时,最前面的一位小于

5返回0,大于等于5会导致错误出现,如果操作方法不是四

舍五入时则不会出现错误,返回结果一律为0。

操作方式:默认为0遵循四舍五入,指定其他整数值则直

接截断。

数据类型转换函数

(以下两种函数功能类似,但是convert在进行日期转换时还提供了丰富的样式,cast只能进行普通的日期转换)

函数名称参数示例描述

convert (数据类型[(长度)],表达式[,样

式])

select convert(nvarchar,123) 返回123

select N'年龄:'+convert(nvarchar,23)

返回年龄:23(注意:如果想要在结果中正确显示中

文需要在给定的字符串前面加上N,加N是为了使数据

库识别Unicode字符)

select convert(nvarchar,getdate())

返回04 28 2009 10:21PM

select convert(nvarchar,getdate(),101)

返回04/28/2009

select convert(nvarchar,getdate(),120)

返回2009-04-28 12:22:21

select

convert(nvarchar(10),getdate(),120)

返回2009-04-28

将一种数据类型的表达式显式转换为另一种数据类型的表达

式。

长度:如果数据类型允许设置长度,可以设置长度,例如

varchar(10)

样式:用于将日期类型数据转换为字符数据类型的日期格式的

样式。见下表

cast (表达式as 数据类型[(长度)]) select cast(123 as nvarchar)返回123

select N'年龄:'+cast(23 as nvarchar)

返回年龄:23

将一种数据类型的表达式显式转换为另一种数据类型的表达

式。

日期类型数据转换为字符数据类型的日期格式的部分样式表

不带世纪数位 (yy) 带世纪数位 (yyyy) 标准输入/输出- 0 或 100 默认设置mon dd yyyy hh:miAM(或 PM)

1 101 美国mm/dd/yyyy

2 102 ANSI yy.mm.dd

3 103 英国/法国dd/mm/yy

4 104 德国dd.mm.yy

5 105 意大利dd-mm-yy

120 ODBC 规范yyyy-mm-dd hh:mi:ss(24h)

当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型优先转换为优先级较高的数据类型。如果此转换不是所支持的隐式转换,则返回错误。当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。如果需要把优先级高的数据类型转换为优先级低的数据类型时需要使用数据类型转换函数进行显示转换。

SQL Server 2005 对数据类型使用以下优先级顺序(先高后低):

1、用户定义数据类型(最高)

2、sql_variant

3、xml

4、datetime

5、smalldatetime

6、float

7、real

8、decimal

9、money10、smallmoney

11、bigint12、int13、smallint14、tinyint15、bit16、ntext17、text18、image19、timestamp20、uniqueidentifier

21、nvarchar(包括nvarchar(max))22、nchar23、varchar (包括varchar(max))24、char25、varbinary(包括varbinary(max))

26、binary(最低)

下图提供了SQL Server2005中数据类型转换的说明

系统函数

函数名称参数示例描述

newid 无参数select newid()

返回2E6861EF-F4DB-4FFE-85EA-638242F2E5F2

select newid()

返回09BBDE6F-47C2-4E2E-81E8-AFC50592280C

返回一个GUID(全局唯一表示符)值

isnumeric (任意表达式) select isnumeric(1111)返回1

select isnumeric('123rr')返回0

select isnumeric('123')返回1

判断表达式是否为数值类型或者是否可以转换成数值。

是返回1,不是返回0

isnull (任意表达式1,任意表达式2) select isnull(null,N'没有值')返回没有值

select isnull(N'具体的值',N'没有值')

返回具体的值

如果任意表达式1不为NULL,则返回它的值;否则,在将任

意表达式2的类型转换为任意表达式1的类型(如果这两个类

型不同)后,返回任意表达式2的值。

isdate (任意表达式)select isdate(getdate()) 返回1

select isdate('1988-1-1')返回1

select isdate('198')返回0

确定输入表达式是否为有效日期或可转成有效的日期。

是返回1,不是返回0

排名函数

排名函数的常用使用格式:函数名() over (order by 列名 [asc|desc][,列名……])

注意:返回结果集会根据使用排名函数时指定的列进行排序,因此不要在from子句后面再次使用order by,会导致排名混乱。函数名称参数示例描述

row_number 无参数select roductID,[Name],ListPrice,row_number()

over(order by ListPrice desc)as rank

from Production.Product

为结果集内每一行进行编号,从1开始后面行依次加1。

rank 无参数select ProductID,[Name],ListPrice,rank()

over(order by ListPrice desc)as rank

from Production.Product

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连

续。例如,如果有价格最高的两种产品的价格相同,它们将并列第一。由于已有

两行排名在前,所以具有下一个最高价格的产品将排名第三。该排名等于该行之

前的所有行数加一。因此,RANK 函数并不总返回连续整数。

dense_rank 无参数select

ProductID,[Name],ListPrice,dense_rank()

over(order by ListPrice desc)as rank

from Production.Product

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。

例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价

格的产品将排名第二。因此,DENSE_RANK 函数返回的数字没有间断,并且始

终具有连续的排名。

聚合函数

聚合函数对一组值执行计算,并返回单个值。除了COUNT 以外,聚合函数都会忽略空值。聚合函数经常与SELECT 语句的GROUP BY 子句一起使用。

聚合函数的常用使用格式:函数名([all|distinct] 表达式)

all:默认值,对所有的值进行聚合函数运算包含重复值。

distinct: 消除重复值后进行聚合函数运算。

函数名称示例描述

avg SELECT avg(VacationHours)as'平均休假小时数'

FROM HumanResources.Employee

WHERE Title LIKE'Vice President%'

返回25

返回组中各值的平均值。空值将被忽略。表达式为数值表达式。

count SELECT count(*)FROM Production.Product 返回504

SELECT count(Color)FROM Production.Product 返回256

SELECT count(distinct Color)FROM Production.Product

返回9

返回组中的项数。COUNT(*) 返回组中的项数。包括 NULL 值和重复项。如果指定

表达式则忽略空值。表达式为任意表达式。

min select min(ListPrice)from Production.Product返回0 返回组中的最小值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。

max select max(ListPrice)from Production.Product

返回3578.27

返回组中的最大值。空值将被忽略。表达式为数值表达式,字符串表达式,日期。

sum SELECT sum(SickLeaveHours)as'总病假小时数'

FROM HumanResources.Employee

WHERE Title LIKE'Vice President%';

返回97

返回组中所有值的和。空值将被忽略。表达式为数值表达式

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

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. 对设计人员而言:

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组合而成的函数

AutoLisp功能函数大全

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

常用有关对话框-AutoLISP函数

1.装入指定的DCL文件的函数load_dialog 格式:(load_dialogdclfile) 功能:在AutoCAD的搜索路径上寻找指定的DCL 文件并载入文件。与unload_dialog函数相对应。 2.卸载指定的DCL文件的函数unload_dialog 格式:(unload_dialogdcl_id) 功能:根据指定的DCL 文件句柄将相关联的DCL 文件从内存中卸掉。 其中,dcl_id表示的是DCL 文件句柄,用来标识DCL 文件。 3.初始化对话框函数new_dialog 格式:(new_dialogdlgnamedcl_id [action [screen-pt]]) 功能:初始化一个新的对话框并显示它,同时指定一个默认的动作。 其中,dlgname是新对话框名称;dcl_id是用load_dialog所取得的值,用来标识DCL 文件。用户可以为对话框定义一个默认动作,即格式中的action。screen_pt指定的是对话框的左上角在屏幕上的坐标,这也是可选项。用这一项可以使对话框在先前的关闭位置重新打开。 4.启动对话框的函数start_dialog 格式:(load_dialogdclfile) 功能:开始对话框并接受用户输入。 它必须在调用了new_dialog后才能调用,其返回值是一个传递给done_dialog的整数。用户按下了“OK”键,其值为1;按下“CANNEL”键,其值为0;如果所有的对话框都被term_dialog 终止,则返回-1 值。 5.终止显示当前对话框函数done_dialog 格式:(done_dialog [status]) 功能:停止显示对话框,该对话框为前一个new_dialog所指定的对话框。 其中,status 可有可无,有则必为一个正整数,该参数作为函数(start_dialog) 的返回值,以代替按钮的返回值。(done_dialog) 会返回一个表示对话框位置的二维点,可供后续的函数调用。 6.终止当前所有对话框的函数term_dialog 格式:(term_dialog) 功能:用于终止嵌套对话框。 如果应用程序在DCL 文件打开时终止运行,系统会自动调用该函数。 7.动作表达式初始化函数action_tile 格式:(action_tile key action_expression) 功能:使用用户定义的动作代替对话框中的默认动作或代替控件的动作属性。 其中,key 是一个字符串,它用来命名一个控件。action_expression也是一个字符串,用来命名动作表达式。 8.设置指定控件值的函数set_tile

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.18pi常数∏,其值约为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列表)返回:列表内的元素数量

相关主题
文本预览
相关文档 最新文档