数字测图原理与应用——Lisp语言的学习和使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字测图原理与应用
——Lisp语言的学习和使用
主要内容
AutoLisp语言介绍
AutoLisp语言的基本知识
赋值与数值计算函数
自定义函数
程序分支与循环函数
逻辑运算函数
字符串与类型转换函数
表处理函数
交互数据输入函数及相关的计算函数
与文件有关的函数
实体和设备访问类函数
其它函数
一、AutoLisp语言介绍
LISP(List Processing)是一种计算机的表处理语言。LISP语言是人工智能领域中广泛应用的一种程序语言。
AutoLISP语言是一种运行在AutoCAD环境下的LISP编程语言,或称为AutoCAD的一种嵌入式语言。它采用了与CommandLISP(一种通用的LISP语言版本)相近的语法及习惯约定,并吸收了LISP语言的主要函数,同时增加了针对AutoCAD特点的许多功能,如:可以把AutoLISP和AutoCAD的绘图命令透明地结合起来,使设计和绘图完全融为一体。利用AutoLISP语言编程可以实现对AutoCAD当前图形数据库进行直接访问和修改。
在LISP语言中,最基本的数据类型是符号表达式。LISP语言的特点是程序和数据都采用符号表达式的形式,即一个LISP程序可以把另一个LISP程序作为它的数据进行处理。因此使用LISP语言编程十分灵活,看起来是一个一个的函数调用。支持递归定义也是Auto LISP语言的重要特性。
AutoLISP语言是提供给用户的主要二次开发工具之一。用AutoLISP语言编写应用程序,可以为AutoCAD增加新的命令或修改AutoCAD,以适应用户的特殊需要。AutoCAD软件的开发者——AutoDesk公司许诺,将保证今后AutoCAD 软件对AutoLISP语言的支持。掌握使用和编制AutoLISP应用程序的方法和技术将大大提高用户的工作效率和二次开发水平,增强AutoCAD的灵活性,并将得到长期、稳定的技术支持。
二、AutoLISP语言的基本知识
2.1 AutoLISP语言的特性
AutoLISP语言是一种解释型语言,它的特点如下:
1.解释型语言
编程语言有两种基本类型:解释型和编译型。AutoLISP属于解释型语言。在解释型语言中,用户编写的源程序直接由解释器解释并执行。而在编译型的语言中,源代码首先要编译为一种中间格式(目标文件),然后再与所需的库文件链接,生成机器码可执行文件。AutoCAD本身是用编译型语言写成的。
解释型语言的主要优点是在执行这种语言编写的程序之前不需要中间步骤,用户可以交互、独立于其它部分来试验或验证程序段或程序语句,而不需像编译型语言那样,每当试验程序时,要全部地编译和链接整个程序。
2.平台和操作系统独立
AutoLISP语言的另一个优点是可移植性。AutoLISP程序可以在运行于多种支持平台(如Windows、DOS、UNIX和Macintosh等)上的AutoCAD中执行而与CPU或操作系统无关。
3.AutoCAD的版本独立
AutoLISP程序除平台和操作系统独立外,AutoLISP的设计还考虑了向下的兼容。这样,任一版本AutoCAD编写的AutoLISP程序一般不加修改就可以在以后版本的AutoCAD中运行。
4.AutoLISP与主流编程语言的比较
AutoLISP与目前使用比较多的编程语言(如C/C++,BASIC等)之间有一些明显的差别。具体可体现在下述几个方面:
(1)AutoLISP与其它大多数语言之间最重要的差别是它用表(List)存放
数据。AutoLISP
........没有数组、联合、结构及记录,所有复杂的数据集均由表来表...........................
示和处理
....。
(2)AutoLISP的变量没有明确的类型。LISP变量的类型是在赋值时动态确定的。
(3)AutoLISP不需要预先声明变量或函数。
(4)与C/C++,BASIC等语言不一样,LISP没有语句、关键词及运算符。
它是函数定位的语言,其所有运算都是由函数调用完成。
2.2 AutoLISP语言中的数据类型
AutoLISP支持下述10种数据类型:
●整型数
●实型数
●字符串
●符号
●表
●文件描述符
●AutoCAD实体名
●AutoCAD选择集
●内部函数(AutoLISP子程序)
●外部函数(ADS、ARX函数)
整型数
整型数是一种不带小数点的数字,它可由0,1,2……,9,+,-共12个字符组成,例如:123,-76,+322等。
实型数
实型数是带有小数点的数,它可由0,1,2……,9,+,-,E,e共14个字符组成。实数有两种表示方法,即十进制表示法和科学计数表示法。例如:十进制表示法:12.3,-7.6,+3.22
科学计数表示法:6.1E5(610000),-0.12E2(-12),-0.45E-2(-0.0045)
字符串
字符串(字符串常数)由一对双引号(”)括起来的字符序列组成。这对双引号是字符串的定界符。
字符串常数最大长度为132个字符,但表示字符串的符号名所约束的值可以是任意长度,因而可以利用“STRCAT“(字符串拼接)函数无限制地增加其长度。
字符串中,同一字母的大小写认为是不同的字符,空格是一个有意义的字符。
字符串的长度是指字符串一对双引号之间的字符个数(不包括一对双引号)。如果字符串的定界符之间无任何字符(即””)称为空串,其长度为零。
字符串中可以包含ASCII码中任一字符,通用的表示形式为“\nnn“,nnn 为八进制形式的ASCII码。例如:“\101\102 \103”表示“ABC”,两者的作用完全相同。由于反斜杠“\”已作为字符串中的前导转义符,因而当字符串中要使用反斜杠时,必须加转义符,即用双反斜杠“\\”表示字符串中一个反斜杠“\”,也可以用反斜杠的ASCII码表示(即“\114”)。同样,由于双引号已作为字符串的定界符使用,因而字符串中的双引号可以用“\””或“\042”表示。对于一些常用的控制字符,其ASCII代码见下表。
字符代码表
例如:下面的表达式表示在显示提示内容前先进行换行,然后再显示字符串内容。
(prompt “\nEnter filename:”)
或
(prompt “\012Enter filename:”)