Autolisp开发课件
第五章第二节AUTOLISP程序设计简介
§5.2 AutoLISP程序设计一、概述LISP语言(List Processing Language的缩写)是一种表处理语言。
因为LISP在描述表方面有独到之处,且本身灵活而精巧,自创立以来,在人工智能的程序设计中得到广泛应用。
在英、美等国应用尤为普遍。
AutoLISP是LISP语言的一个版本,其独特性在于专门为AutoCAD开发的。
所以AutoLISP仅能运行于AutoCAD软件包环境里。
同样,也正是在AutoCAD内置AutoLISP这样一种灵活、精巧的开发语言,使得AutoCAD得到进一步广泛使用。
1. AutoLISP特点:(1)AutoLISP语言是一种仅能以解释方式运行于AutoCAD内的程序设计语言。
即:脱离AutoCAD环境,它就不能运行。
(2)AutoLISP语言是函数型语言,其函数和数据形式是一致的,即(function argument)·function(函数名):内建函数或用户自定义函数名;·argument(参数):参数种类:①变量(Varibles)②常量(Constants)③其他函数(function)所以表达式可以嵌套.④标志数(flag)⑤可选性参数(optional parameters)因此,表达式的形式是:“先说做什麽,再说对谁做”。
(3)可以在AutoLISP程序中引用AutoCAD的几乎所有功能进行图形处理的自动化,尤其是较深层的应用——对象数据库的操作。
在Visual LISP的协助下,对于AutoCAD进行操作功能上的讨论,LISP仅比ARX少一个功能。
在AutoCAD R14已经不再使用ADS程序设计,取而代之的是ARX 程序设计模式。
ARX一般是在AutoCAD和开发商中使用。
使用Visual C++作为基本程序设计语言,其效率、数据处理和软硬件的控制能力都是相当好的。
但是,要想真正发挥这种开发模式的作用,对于程序设计者的要求也较高。
AutoLISP开发方法
AutoLISP开发方法第一节AutoLISP基本知识一、AutoLISP概论AutoLISP属LISP程序设计语言的扩充。
二、AutoL LISP数据类型1.表表是AutoLISP的基本语法单元,也是最有特色、最灵活的数据类型。
AutoLISP中表的作用同C语言中的数组一样重要。
表是用圆括号“()”括起来的一组数据,可表示为:(元素1 元素2 …)例:三维点(100.O 23.5 11.3)2.符号与其它程序语言一样,AutoLISP也是用符号来代表函数名、常量或变量。
3.字符串字符串可以是任意长的。
4.整数整数即不带小数点的数。
5.实数实数是带有小数点的数,在?到十1之间的小数必须用零作为开始。
6.文件描述等文件描述等用来指定AutoLISP要打开的文件,当AutoLISP函数需要读或写一个文件时,可引用该文件描述符。
7.实体名实体名是分配给一个图中实体的数字标号。
8.选择集选择集是包含一个或多个实体的组。
9.程序和外部子程序在本章中叙述的AutoLISP函数都是子程序,且都是内部子程序。
子程序可以由defun函数重新定义。
10.标点符号(1)单引号单引号(’)表示AutoLIsP的Quote函数,例’ABC苟(Quote ABC)相同。
(2)括号数据表及函数通过括号而被定义并使彼此相隔开。
例如:(十1 2) (一12 4)(3)句号句号被AutoLISP解释器使用的方式有两种。
椫直硎臼凳 惺 菩∈ 悖?/P>另一种被用来将所谓点对这种特殊类型的数据表中的数据项分隔开。
(4)双引号AutoLISP将双引号括起的部分理解成字符串。
(5)分号用以说明AutoLISP程序中的注释行。
(6)空格及换行空格使表中各数据项彼此分开。
换行符也视为空格。
(7)大写和小写在AutoLISP程序中,大写字符和小写字符可被互换使用。
11.弧度AutoLISP使用弧度来度量角度。
许多AutoCAD开发者都用度数来度量角度,所以必要转换。
3-1AutoLISP程序设计(v)
嵌套很多层,从外层向里依次称为0层,1层,2层……
2016/6/28
18
AutoLISP程序设计
5)表中的元素是有顺序的,为便于对表中元素进行存取,
每个元素都有一个序号。从左向右,第一个元素序号为0,
第2个元素序号是1,„„,第n个元素序号是n-1。 6)表的大小为表的长度,即表中顶层元素的个数。没有 任 何 元 素 的 表 称 为 空 表 。 空 表 用 ( ) 或 nil 表 示 。 在 AutoLISP中,nil是一个特殊的符号原子,它既是原子又是
1. 表达式
• 表达式含义:AutoLISP处理的对象是符号 表达式(简称表达式)。它相当于其它编 程语言中的程序语句。 • 表达式的构成:表达式由原子或表构成。 多数情况下以表的形式存在,例如 : (函数 名 [变元]…)。
AutoLISP程序设计
• 表达式前缀表示法:即把运算符放在操作
数之前,用圆括号括起来,以表的形式表 示。如:(setq X 210.0)。 • 表达式的求值规则:整型数、实型数和字 符串以其本身的值作为求值结果;符号以
2016/6/28
12
AutoLISP程序设计
(6)点对
点对也是一种表,表中有两个元素,两个元 素中间有圆点“ .” ,圆点与前后元素之间必 须各有一个空格,例如(A . B)
就是一个点对, A 和 B 与圆点之间用空格分 开, A 和 B均为 S 表达式, A 称为点对的左元 素, B称为点对的右元素。点对也可以嵌套。
AutoLISP程序设计
• 变量的数据类型不需要事先说明,变量被 赋予值的类型就为变量的类型。 • 不能使用内部函数名和关键字作变量名。
• 变量赋值:(setq 变量1 值1 [变量2 值 2...]) • 显示变量的值:!变量名(同时将值传递 给autocad)。
第11章 设计Auto_LISP程序
AutoLISP的语法结构 AutoLISP的功能函数 Visual LISP编写环境 AutoLISP程序设计与应用 实例练习 习题
11.1 AutoLISP的语法结构
图11-1 AutoLISP语法结构示例
11.2 AutoLISP的功能函数
1.数学运算功能函数 2.逻辑运算功能函数 3.转换运算功能函数 4.列表处理功能函数 5.字符串、字符、文 件处理函数 6.等待输入功能函数 7.几何运算功能函数 8.对象处理函数功能
其函数书写格式和返回值如下: (1)(APPEND 列表 列表 …) 返回:结合所有列表成一个列表。 (2)(ASSOC 关键元素 联合列表) 返回:根据关键元素找寻列表中的关键信息。 (3)(CAR 列表) 返回:列表中的第一个元素,通常用来求X坐标。 (4)(CADR 列表) 返回:列表中的第二个元素,通常用来求Y坐标。 (5)(CADDR 列表) 返回:列表中的第三个元素,通常用来求Z坐标。
(6)(READ_LINE[文件代码]) 返回:经由键盘或文件中读取一行字符串。 (7)(READ_CHAR[文件代码]) 返回:经由键盘或文件中读取单一字符。 (8)(STRCASE 字符串[字样]) 返回:转换字符串大小写。 (9)(STRCAT 字符串1 字符串2 …) 返回:将各字符串合并为一个字符串。 (10)(STRLEN 字符串) 返回:字符串构成的字符数(字符串长度)。 (11)(WCMATCH 字符串 格式) 返回:T或nil,将字符串与通用字符串比较。
(6)(GETORIENT[基点] [提示]) 返回:请求输入角度数值,响应一个弧度值不受 ANGBASE,ANGDIR的影响。 (7)(GETPOINT[基点] [提示]) 返回:请求输入一个点的坐标。 (8)(GETREAL[提示]) 返回:请求输入一个实数值。 (9)(GETSTRONG[提示]) 返回:请求输入一个字符串。 (10)(INITGET [位] 字符串) 返回:设定下次GET*** 函数的有效输入。
AutoLISP
AutoLISP语言第一节概述1.1简介AutoLISP是一种嵌入AutoCAD内部的LISP语言。
它可让用户和AUTOCAD 开发者以非常强大的高级语言编写出宏语言程序和函数,它非常适合于图形的应用,LISP很易于学习和使用,它也非常灵活多变。
1.2AUTOLIAP中的数据类型.表.符号.字符串.实型数.整型数.文件指针.AUTOCAD实体名.AUTOCAD选择集.子程序整型数是16位带符号的数,因此,它的范围是在—32768和+32767之间。
实型数是以双精度的浮点数表示。
字符串可以是任意长度,它们的存贮空间是动态分配的。
1.3AUTOLISP的求值程序、词汇约定每一个LISP解释程序的核心就是求值程序。
求值程序装入用户的输入行,对它进行计算,并返回一些结果。
AUTOLISP的输入可以采用好几种形式。
它们可以在运行AUTOCAD时从键盘输入,也可以从ASCII文件读入,或者可以从字符串变量读入。
在所有这些形式中,必须要遵守上定的约定:1.符号名称可以由除下列字符之外的所有可打印字符序列组成:().’”;2.符号和函数名称(子程序)在AUTOLISP中大小写等效。
符号名称不能以数字开头。
3.实型数由一个或多个数字组成,后面跟着小数点,再就是一个或多个数字;如:“.4”并不被认作为实型数,“0.4”才是正确的写法。
4.文字字符串是一个由双引号引起来的字符序列。
在引起来的字符串中,可以使用反斜号,使得其中包括的控制字符可被正确识别,规定:\\ 表示字符“\”\n 表示换行\e 表示ESC\r 表示回车\t 表示光标\nnn 表示其八进制码为nnn的字符第二节AUTOLISP函数AUTOLISP提供了大量的预定义函数,本节介绍一些主要的函数。
需要说明的是,逻辑常数T与NIL这两个值相当于逻辑上的真与假。
是两个特殊原子。
这两个原子的值预先设置为T和NIL;常数PI表示数学上的π,它不是一个函数。
2.1数值运算函数1.(+ 〈数〉〈数〉…)函数返回所有数的总和2.(—〈数〉〈数〉…)函数返回所有数的差3.(* 〈数〉〈数〉…)函数返回所有数的积4.(/ 〈数〉〈数〉…)函数返回所有数的商其中的〈数〉可以是整型的,也可以是实型的。
CAD课件 第14章 AutoLISP语言初步
10. (exp 数值)返回:数值的指数 10. 11. (log 数值)返回:数值的自然对数值 11. 12. (max 数值 数值…)返回:数值中的最大值 12. 数值… 13. (min 数值 数值…)返回:数值中的最小值 13. 数值… 14. pi 常数∏,其值约为3.1415926 14. 常数∏,其值约为3.1415926 15. (sin 角度)返回:角度的正弦值,角度值为弧 15. 度 16. (sqrt 数值)返回:数值的平方根 16.
示例2 示例2: (if (> yl 0.0) ;绘制封头与槽本体间的预留值 (progn (command "line" p1 py1 "") (command "line" p2 py2 "") (command "line" p3 py3 "") (command "line" p4 py4 "") ) )
14.3 AutoLISP 函数
14.3.1 数学运算功能函数 1. (十 数值 数值…)返回:累计实数或整数数值 数值… 2.(一 数值 数值…)返回:差值 2.(一 数值… 3.(* 数值 数值…)返回:所有数值乘积 3.( 数值… 4.(/ 数值 数值…)返回:第一个数值除以第二个以 4.( 数值… 后数值的商 5.(1+ 数值)返回:数值+1 5.( 数值)返回:数值+1 6.(1- 数值)返回:数值-1 6.( 数值)返回:数值7.(abs 数值)返回:数值的绝对值 7.( 8.(atan 数值)返回:反正切值 8.( 9.(cos 角度)返回:角度的余弦值,角度值为弧度 9.(
AutoLISP绘图程序设计PPT优秀课件
18.10.2020
6
例: (setq P(list 12.36 -26.58)) 结果是:(12.36 -26.58) 例:(setq P '(12.36 -26.58)) 结果是:(12.36 -26.58)
提示: (1)表的嵌套时一定要注意括号“(”、“)”
匹 配。 (2)西文状态下输入!!!
❖以表形式描述数据处理过程,程序执行过 程就是函数求值过程;
❖每段程序都是一个函数; ❖具有交互处理功能,边解释边执行; ❖采用模块化设计方法。
18.10.2020
4
2.AutoLISP的数据类型
(1)整型数(INT):是由0、1、2…9、+、-组成的。
(2)实型数(REAL):如0.4(0不能少)、-1.23、 0.526E9(0.526×109)。
8
二、几个基本概念
1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。
NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
(while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a))
) )
18.10.2020
3
(4)AutoLISP语言中使用大量的函数(有 200多个函数),进行各种运算;
(5)AutoLISP编写的程序特点(学习中注 意):
(5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n)
AutoCADAutoLISP基本函数 ppt课件 (2)
mode值 线性单位格式
示例
1
科学
2
十进制小数
1.75E+04 23.75
3
工程(英尺 + 十进制英寸)5'-4.25"
4
建筑(英尺 + 分数英寸) 1'-5 1/2\"
5
分数
17 1/2
• 参数precision指定数值的显示精度,对于表5-4中前3种格式,该参数 用来指定小数点后的小数位数。对于后两种格式,用来设定最小分数 的分母。如果没有指定precision的值,将采用系统变量LUPREC来设 定当前精度的值。
• ·(fix x)
• 实型转换为整型,x为实型或整型数,返回x的整型数。取整过程是直 接截断x的小数部分,而非四舍五入。例如:(fix 3.7) 返回3。
• ·(rtos number [ mode [ precision ] ] )
• 实型格式化函数rtos,该函数把实型数number(也可为整型数)按照 指定的模式mode和精度precision转换成字符串。中括号“[ ]”内的参 数可以不写。
• "45.0000" • 命令: (angtos -0.785398 0 4)
• "315.0000" • 命令: (angtos -0.785398 4)
• "S 45d E"
• ·(atoi string)
• 字符串转换为整型,string为字符串。例如: (atoi "80") 返回80。
AutoCADAutoLISP基本函数
第三部分 AutoLISP基本函数
AutoCADAutoLISP基本函数
CAD二次开发教程AUTOLISP
)
;;;退出循环
)
更高一层:图元组码
一、 组码概述: 组码也就是DXF码,是以数据形式标记
CAD图形的一种形式。任何CAD图元都由 特定的组码来标记。 对组码的详细说明CAD《开发者帮助》有 详细的说明
二、常用图元组码:
0 图元类型
该函数(<=)检查第一个元素(atom1)是否小于等于第二个元素
(atom2),若是,函数返回T,否则返回nil。
5.大于
格式(> atom1 atom2…)
该函数(>)检查第一个元素(atom1)
是否大于第二个元素(atom2)。若是,函数 返回T,否则返回nil。
6.大于等于
格式(>= atom1 atom2…)
并将其作为一个整数返回 格式:(sslength ss) 格式说明:ss,选择集名称
Ssname
用法:提取选择集
中指定图元的图元名
格式:(ssname ss index)
格式说明:ss 选择集名,index:整数,表示选择集 的第几个图元,第一个是(ssname ss 0),以此类推
Repeat
(defun ADNUM(/a
b),定义了一个含有两个局部变量a和b的函数ADNUM。局部 变量在程序的执行期间保留其值,而且只能在它所在的程序中使用。
(defun C:ADNUM(),在函数名前加上C:后,此函数就可以通 过在AutoCAD的Command:提示符后输入其函数名来执行。如果没有
value…………………赋予变量的值
赋予变量的值可以是任何表达式(数字表达式,字符串表达式或既
含有字母又含有数字的表达式)。若该值为字符串,其长度不可超过
100个字符。
Command:(setq x 12)
AutoLISP绘图程序设计ppt课件
;;在屏幕上显示 ASCII码为(65-90)的字符
(defun C:zm(/ as)
;自定义命令
(setq as 65 n 100)
(while (<= as 90)
(command "text" (list n 100) 15 "" (chr as))
(setq as (+ as 1) n (+ n 20))
16.07.2021
整理ppt
8
二、几个基本概念
1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。
NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
(5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n)
如:(2 4 f)
◇元素的个数叫表的长度。
◇元素也可以是表,如(45 (3 6) 7),这 叫嵌套。
◇元素之间必须用“空格” 隔开。
◇表的定义方式:(LIST 5 6);’(5 6); 还可以用defun定义(后面讲)。
(while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a))
) )
16.07.2021
整理ppt
3
(4)AutoLISP语言中使用大量的函数(有 200多个函数),进行各种运算;
(5)AutoLISP编写的程序特点(学习中注 意):
第二章AutoLISP概述
AutoCAD 命令行提示符 VLISP 控制窗口提示符
command _$
:
• • • • • • • • • • • • • • •
例如,如下代码样例调用了三个函数: (fun1 (fun2 参数)(fun3 参数)) 例如: _$ (* 2 27 2) 108 例如: _$ (* 2 (+ 5 10)) 30 如果输入的闭(右)括号数量不对,AutoLISP 将显示如下提示: (_> 此提示中开括号的数目表明有多少层开括号没有闭合。如果出现此 提示,用户必须输入所需数目的闭括号后才能对表达式求值。 _$ (* 2 (+ 5 10 ((_> ) ) 30 常见错误是忽略了文本字符串中的双引号 (")。在这种情况下,右括 号被解释为字符串的一部分,而不会被用来和开括号配对。要改正 此错误,可按 SHIFT+ESC 键取消该函数,:
• _$ -2147483648 • -2.14748e+009 • 下面样例可以成功算出结果,因为 AutoLISP 先将溢出的负整数转换 为一个有效的实数: • _$ (- -2147483648 1) • -2.14748e+009
• •
• •
2.1.2实数 实数是带有小数点的数。在 -1 和 1 之间的实数必须以零开始。实数是以双精 度浮点格式存储的,可以提供至少 14 位精度。注意 Visual LISP 不显示所有 有效位。 实数可以用科学记数法表示,科学记数法格式中包括可选的 e 或 E 及其后面 的指数(例如,0.0000041 与 4.1e-6 相同)。数字 3.1、0.23、 -56.123 和 21,000,000.0 都是有效的 AutoLISP 实数。
Autolisp(2)
AutoLisp
20
(2)半径型尺寸标注 以下每个表 式都能 成下图所示的半径 尺寸标注 以下每个表达式都能生成下图所示的半径型尺寸标注。 (command "dimradius" p2 p4) ( (command d "dimradius" "di di " p2 2 "105,105") "105 105") (command "dimradius" p2 "@-7.5,5") • p2是圆弧的选择点, • p4点确定了尺寸线的位置和方向, p4点确定了尺寸线的位置和方向 字符串"105,105"是当前坐标系下的坐 标 字符串 标,字符串"@-7.5,5"是相对于选择点 , 是相对于 择点 p2的X方向的增量和Y方向的增量。由于 默认尺寸的测量值,所以尺寸文本的第 一个字符为半径符号"R"。 个字符为半径符号"R"
;逆时针方向为正
AutoLisp
9
二、设置图层、颜色、线型和线宽
10 11 9
1
12
2 4 8
2d
3 7
0.8d 0 d
2d
0
5 6
0.7d
ld
AutoLisp
10
二、设置图层、颜色、线型和线宽
1 创建一个当前图层 1. 创建 个当前图层
假定图层的名字是“zhongxin”、颜色为红色、线型为center、线宽为 0 2,通过 0.2 通过command函数创建一个当前图层表达式如下: ( (command "layer" y "Make" "zhongxin" g "Color" 1 "zhongxin" g "Ltype" "Center" "zhongxin" "LWeight" 0.2 "zhongxin" "") 因为 Make 、 Color 、 Ltype 、 LWeight 等选项可以简写为 等 简 M 、 C 、 L 、 LW ,所以上式可改为: (command "layer" "M" "zhongxin" "C" 1 "zhongxin" "L" "Center" "zhongxin" "LW" 0.2 "zhongxin" "")
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 AutoLISP的程序控制
基本逻辑函数: a)AND函数 b)OR函数 c) NOT函数 d)NULL函数 关系函数 a)=函数 b)/=函数 c) <及<=函数 d)>及>=函数 e) eq函数 d) equal函数
条件与循环函数 ①if函数 ②progn函数 ③cond函数 ④while函数(例题:求解百元买百鸡问题) ⑤repeat函数
2.4、AutoLisp语言基本系统内部函数介绍
1、赋值函数SETQ 2、禁止求值函数QUOTE或 ’ 3、算术运算函数 + ﹑- ﹑ ﹡ ﹑ / 4、增量、减量和绝对值函数(1+ number)、(1- number)、 abs 5、三角函数 sin cos atan 6、表构造函数 list和表处理函数car cdr 及它们的组合函数, nth last函数。 7、基本输出函数 prompt prin1 princ print
'e 12 'e 15 'e 20 'e 25.5 'e 37 'e 44.5 'e 58
'f 8 'f 10 'f 12.5 'f 17 'f 24 'f 29 'f 38
'h1 5.5 'h1 6 'h1 7.5 'h1 10 'h1 12 'h1 15 'h1 18
'b0 10.2) 'b0 13.4) 'b0 17.4) 'b0 22.6) 'b0 32.9) 'b0 38.9) 'b0 50.6)
练习
1.已知长方体的长、宽、高,编程求其体积. 2.对下面的S-表达式求值: (1) (/ (1- 3) (1+ 3) 2.0) (2) (/ (1- 3.0) (1+ 3) 2.0) (3) (* (max 3 4 5) (min 3 4 5)) (4) (min (max 3 1 4) (max 2 7 1)) (5) (+ (* 45 2) (/ 45 2) 2.0)
数据库处理2
(setq aO (list "O" 2.5 9.5 12 8 5.5 10.2)) (setq aA (list "A" 3.5 12 15 10 6 13.4)) (setq aB (list "B" 5 15 20 12.5 7.5 17.4)) (setq aC (list "C" 6 20 25.5 17 10 22.6)) (setq aD (list "D" 8.5 28 37 24 12 32.9)) (setq aE (list "E" 10 33 44.5 29 15 38.9)) (setq aF (list "F" 12.5 42 58 38 18 50.6)) (setq a (list aO aA aB aC aD aE aF)) (setq pe (getstring "pe (O,A,B,C,D,E,F)=?"));;;用户输入带轮型号 (setq pe (strcase pe)) (setq lis (assoc pe a)) (setq he (nth 1 lis)) (setq H (nth 2 lis)) : :
一种仅能以解释方式运行于AutoCAD内部 的解释型程序设计语言. AutoLISP语言中一切成分都是以函数的形 式给出的,没有语句、过程和其他语法概念. AutoLISP把数据和程序统一表达为表结构, 既S-表达式,可把程序当数据处理,也可把数 据当程序来执行. 程序的运行过程就是对函数求值的过程. 该语言主要控制结构是采用递归方式.
二、 数据类型、运算符与表达式
2.1数据类型:整型、实型、符号型、字符串 、表、文件描述、选择集、实体名等。 1.整型 2.实型(浮点数) 3.字符串 4.表 5.文件描述 6.实体名 7.选择集
2.2 AutoLISP变量
变量的命名 变量数据类型 变量赋值 预定义变量(nil、T、PI、PAUSE)
1.3 Visual LISP开发环境
控制台窗口和文本编辑器窗口是最重要的 两个部分
1.控制台窗口可以输入和运行AutoLISP命令并看到 其结果.与AutoCAD的命令窗口提供了相似功能。 2.控制台窗口和文本编辑器窗口之间复制和传递文 本. 3.文本编辑器不仅仅是一个书写工具,也是开发环境 的一个重要组成部分. 4.控制台窗口仅可以输入函数,不可输入命令. 5.颜色表示不同语法,内部函数为蓝色;用户定义变量 和无法识别的内容为黑色;字符串为粉红色.
三角皮带轮的尺寸存储与读取
型 号 O A B C D E F he 2.5 3.5 5 6 8.5 10 12.5 H 9.5 12 15 20 28 33 42 e 12 15 20 25.5 37 44.5 58 f 8 10 12.5 17 24 29 38 h1 5.5 6 7.5 10 12 15 18 b0 10.2 13.4 17.4 22.6 32.9 38.9 50.6
练习
用CAR和CDR编程从下列表中取出字符 ATOM. 1.(ONE TWO THREE ATOM) cdddr 2.((ONE TWO) (THREE ATOM)) cddr 3.((((ONE ATOM) THREE)) TWO) cdaar 4.((((ONE TWO) THREE) ATOM)) cdar
3 对下列的S-表达式求值: (1) (car „(A B C)) (2) (car „((A B C))) (3) (cdr „((A B C))) (4) (car (cdr (car „((A B) (C D))))) (5) (car (cdr (car (cdr „((A B) (C D) (E F)))))) (6) (cadar „((A B) (C D) (E F)))
例题:修剪成半个圆
1.绘制一个圆,圆心在(5,5),半径为2. 2.从(3,5)到(7,5)绘制一条线。 3.设置变量e1为数据库中最新增加的图元名 称。 4.设置变量pt为图上的一个点(5,7)(该点 决定了圆被修剪的部分)。 5.选择对象e1和pt指定的点,执行trim命令。
代码如下
(command "circle" "5,5" "2") (command "line" "3,5" "7,5" "") (setq e1 (entlast)) (setq pt '(5 7)) (command "trim" e1 "" pt "")
数据库处理1
(setq ww (getstring "\n型号为:")) (setq af (list (list "O" 'he 2.5 'h 9.5 (list "A" 'he 3.5 'h 12 (list "B" 'he 5 'h 15 (list "C" 'he 6 'h 20 (list "D" 'he 8.5 'h 28 (list "E" 'he 10 'h 33 (list "F" 'he 12.5 'h 42 ) ) (setq wa (cdr (assoc ww af))) (setq he (cadr (member 'he wa))) (setq h (cadr (member 'h wa))) (setq e (cadr (member 'e wa))) . .
AutoLISP元素(颜色)
内部函数和受保护符号 字符串 整数 实型数 注释 圆括号 蓝色 紫色 绿色 暗绿色 ;灰底紫色 红色其源自元素(例如,用户变量)黑色
调试应用程序
1.匹配词组Ctrl+shift+spacebar 2.检查括号匹配Ctrl+] 3.用颜色和check命令检查语法错误. 4.设置断点和逐步执行程序 5.监视表达式的计算结果(添加监视)
实现直接增加和修改AutoCAD命令,随意扩大图形 编辑功能,建立图形数据库并对当前图形进行直接 访问和修改,开发CAD软件包等. AutoLISP语言最典型的应用之一就是实现参数化 绘图的程序设计。可以实现尺寸驱动、鼠标拖动、 3维立体参数化、创建自己的对话框。
1.2、 AutoLISP具有如下特点
控制函数
7 、command函数 该函数直接将一个AutoCAD命令送到AutoCAD命令行中, 在command函数中有一个变量长度参数列表,这些参数必 须和预计的命令提示系列的类型和值相对应. 函数的调用格式:(command <参数1> <参数2>…) 参数的数据类型有一下规定: 1)AutoCAD的命令及其子命令和选择项用字符串表示; 2)数值常数(整型或实型)可以写为数的本身,也可写成字 符串。 3)点常数有两种表示法:一是用Lisp表的形式;二是表示 为字符串形式。 4)参数中一个空字符串("")等效于在键盘上按一次回车键。 例如:text命令
8、交互式输入函数 getreal getdist getpoint getangle getstring..(p84) 以上函数执行时使程序暂停,等待用户输入. 9 、图形处理函数distance polar (p124) 10 、判断从属关系函数member (p165) 该函数测试表达式是否是表中的元素。 调用格式:(member <expr> <list>) 如: (setq s „(a 2 4 5 b 3 5 9)) (member „b s)返回(b 3 5 9)