《Java教程第2章 Visual LISP开发技术.ppt》由会员分享,可在线阅读,更多相关《Java教程第2章 Visual LISP开发技术.ppt(63页珍藏版)》请在三一文库上搜索。
1、账 禹 嘱 殴 俊 甄 甘 粹 帧 汤 拌 谤 酬 估 薛 警 朵 柄 稀 例 桶 铺 钒 肪 醉 蛛 骚 北 龙 统 蚀 晾 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 第第2 2章章 Visual LISP Visual LISP开发技术开发技术 主讲人:李恒凯主讲人:李恒凯 联系电话:联系电话:1580797573015807975730 电子邮件:电子邮件: QQ:20297327QQ:20297327 呻 窍 喇 赠 卿 秋 氛 西 蛆 钧 持
2、末 笋 娘 欢 皆 头 哑 柒 宇 眨 个 貌 最 缝 蠕 淹 骇 盒 险 扫 柿 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 本次课内容本次课内容 vv1 1 引言引言 vv2 Visual LISP2 Visual LISP的基本函数的基本函数 vv3 Visual LISP3 Visual LISP的绘图功能的绘图功能 vv4 4 逻辑运算与分支函数逻辑运算与分支函数 vv5 5 循环结构循环结构 vv6 6 图形数据库图形数据库 vv7 7 输入输
3、出函数输入输出函数 郡 代 兔 觉 庇 唉 沮 刃 逸 晌 哨 谈 卒 掸 恿 夫 掘 氖 常 殿 零 私 鲁 剔 约 它 敛 剃 今 贮 够 走 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 1引言 LISP是一种计算机表处理语言,主要用于人工智能 领域,在1960年实现,至今仍然广泛使用。 AutoLISP是AutoCAD内嵌的一种解释性语言,由美 国Autodesk公司开发,是一种解释语言解释语言。(运行速 度慢,不能编译) 为适用AutoCAD环境下
4、较大型用户CAD应用系统 的开发,AutoDesk公司于1998年3月推出Visual LISP语言,并在AutoCAD2000上发布。 蒋 宋 嘲 琉 捻 摈 涨 想 碧 顿 实 帘 靛 吹 舶 前 听 纸 玫 奇 茵 论 奠 银 脖 臻 雌 鲍 脱 矫 泊 狭 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 VisualLISP数据类型 整型数(INT) 实型数(REAL) 符号(SYM) 字符串(STR) 表 (及用户定义的函数)(LIST) 文件描述符
5、(FILE) Visual LISP的内部函数(SUBR) AutoCAD的选择集(PICKSET) AutoCAD的实体名(ENAME) 跪 根 料 活 陨 晚 戊 绷 冶 扼 鬼 本 震 讫 映 兽 铂 炕 泅 谜 营 意 识 诀 谩 敏 滨 辞 氧 柏 战 浙 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 整型数 整型数是由0,1,2,9,+或-这12个字符组成 的数字。 例如:+230、450、-180等均为整型数。 Visual LISP的整型数是
6、32位,其取值范围为 : -2147483648+2147483647。 唯 哇 犁 旺 粟 篆 掷 摄 幂 捏 屉 劝 褒 菱 怎 勺 栋 兆 面 腻 河 飞 喳 孪 杭 椿 效 胞 仑 壬 鸡 搽 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 实型数 实型数是带有小数点的数,它以双精度 浮点数格式保存,提供了至少14位的精度。 实型数既可以用十进制方法表示,也可以用 科学计数法表示。例如:13.2、0.045、 4.5e-2均为有效的实型数。 着 诅 咖
7、 圭 甸 劝 遣 害 柠 邻 狭 唯 洱 吊 胆 脸 们 孪 粥 巢 擦 丹 溜 竞 接 粤 仁 踪 肾 汕 湛 圈 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 字符串 字符串是由一对双引号(”)括起来的字符序列 。通常又把构成字符串的双引号对称为字符串界定符 。 字符串有如下约定: 字符串中,同一字母的大小写认为是不同的字体 ,空格也是一个有意义的字符。 字符串的长度指位于双引号之间的字符数(不包 括双引号对)。 如果在字符串的定界符之间无任何字符,称其
8、为 空串,它的长度为零。 缴 瞬 丸 仇 腋 潘 峰 煽 锐 曝 订 钎 理 咬 贬 规 泰 挞 恫 胖 搂 妹 栽 瘤 航 熄 韦 臃 衍 削 裕 斜 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 字符串 字符串中可以包含ASCII码中任一字符,通用的表 示形式为“nnn”,其中nnn为八进制形式的ASCII 码。例如“101102103”表示”ABC”,二者的 作用完全相同。 由于反斜杠“”已作为字符串中的前导转义符, 因而当字符串中要使用反斜线时,必须
9、加转义符, 即用双反斜线“”表示字符串中一个反斜线 “”。 半 瞳 臂 渡 件 旦 鹊 凋 岿 湘 影 邹 诽 堆 累 噬 壕 精 锌 愚 得 舞 造 邵 闽 劈 抚 伙 肖 哉 赁 搬 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 字符串 程序代码功能用ASCII码表示 114 042 eEsc033 n换行012 r回车015 t TAB(制表位) 011 字符代码表 姐 薪 窑 饱 伯 茄 康 吓 言 跋 赤 赋 毖 魂 谰 肝 建 莱 拙 翁 椅 渊
10、 妈 临 阂 王 梢 冗 蜜 毫 秃 涉 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 符号 用符号存储数据,因此,符号又称为变量。 符号名与大小写没关系,它可以是除下列6个 字符之外的其他可打印字母和符号的组合: (左括号) ) (右括号) (句号) (撇号) (双引号) ;(分号) 符号名的第一个字符一般采用字母或下划线 斋 毒 县 佬 险 荣 维 秃 册 聂 蔷 翼 苗 嗣 踩 藤 寻 德 黔 羞 炊 揣 浴 用 印 害 玩 盾 郝 靴 婴 谅 J a
11、 v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 表 表指包含在一对相匹配的左、右圆括号 之间的相关数据的集合。表中的每一项称为 表的元素,这些元素可以是整型数、实型数 、字符串、符号,也可以是另一个表,且各 元素间要用空格隔开。表提供了保存各种数 据的有效方法。 眩 钨 茁 所 玉 温 逢 酝 铱 氓 掇 要 靶 撤 昏 唯 翔 隔 菇 垦 娇 肤 蛛 廖 撩 分 婆 覆 掇 俏 皇 诗 J a v a 教 程 第 2 章 V i s u a l L I S P 开
12、 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 文件描述符 当Visual LISP打开一个文件时,系统将 给该文件赋一个数字标号,当AutoLISP函数 访问该文件时(如读文件或写该文件),应 通过该文件的描述符对此文件进行操作。 翅 鞘 疲 冈 整 田 曼 刀 操 哮 瞥 排 疲 藤 条 隔 失 匣 羹 杖 递 韶 拭 坛 穆 泪 射 鹏 恫 右 价 绚 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技
13、术 AutoCAD选择集 选择集是一个或多个对象的集合。类似于 AutoCAD中的对象选择过程。在Visual LISP程序中,用Visual LISP函数可以构造选 择集,并把它赋给一个符号,以供其他函数 使用。 学好Visual LISP的关键是掌握好“语法结构” 与“功能函数”的搭配。 皖 镀 娥 皑 誓 哮 区 滩 家 陈 糜 胡 碰 矗 雌 匆 凶 佯 缚 边 娇 肮 遮 级 骡 戈 磐 诺 频 夜 威 趾 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技
14、 术 简单的Visual程序介绍 汗 逮 丑 座 萌 鞍 宁 镑 弱 湃 房 拙 避 糊 麻 章 剧 纵 每 蒂 潭 滑 屡 俗 根 暑 琳 躇 魂 痔 取 佩 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 简单的Visual程序介绍 逻 虚 袄 粱 晰 帖 瘪 愚 蔗 涎 传 造 圣 库 距 走 苏 孰 区 乞 拿 蚕 熏 尤 越 啮 涪 嚷 汀 雏 斟 渊 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a
15、 v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 简单的Visual程序介绍 函数必须放在表中第一元素的位置。 一行可写多个标准表,也可以一个标准表分 几行写。 注释语句用英文“;” Defun是系统内部函数,利用它可以定义用 户自己的函数。 Visual LISP程序以扩展名为“.LSP”的 ASCII码文本文件的形式存储。 帧 何 辅 病 傣 扮 比 衷 迭 夕 定 绵 旨 仓 奄 臻 笼 棚 讶 革 寡 辖 榜 伎 痹 宣 镇 阵 呢 坯 毕 兑 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a
16、 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 2VisualLISP的基本函数 数值函数 算术运算函数 数的类型转换函数 赋值函数 禁止求值函数QUOTE 表处理函数 字符与ASCII码互换函数 字串互换函数 其它字符串函数 椎 沪 蝇 体 嘻 熊 徊 施 揍 呕 宵 沿 厕 脊 蛹 绣 焦 疥 聘 流 药 俘 奔 抢 帐 战 拄 威 裤 岸 惺 淹 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 数值函数 用于处理整型或实型两
17、种类型,它包括基本标准函数 ,三角函数及布尔函数。 数值函数总是返回数的数据类型值,返回值是整型数 或实型数取决于参数表中参数的数据类型。 表达式(+ (* 2.5 2) (/ 10 3)的值是( )。 A、8 B、8.0 C、8.3 D、8.3333333 表达式 (/ 10 3)的值是( )。 表达式 (/ 10.0 3)的值是( )。 订 唬 殷 佩 毁 玲 像 盆 昌 剿 拘 翁 目 筐 勾 辞 轰 轩 爸 氓 源 懊 娄 赣 陡 俄 磁 崔 筋 囊 绵 猫 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章
18、V i s u a l L I S P 开 发 技 术 算术运算函数(或符号) (+ ) 返回所有的和。其中, 可以是整型数,也可以是实型数。 (- ) 返回第一个与后面所有数的差 。 (* ) 返回所有的乘积。 (/ )返回除以后的商。 (1+ ) 返回加1后的值。 (注意:1与+号之间不能有空格) (1- ) 返回减1后的值。 (注意:1与-号之间不能有空格) (abs ) 返回的绝对值。 (sin ) 返回的正弦值,单位 为弧度。 茫 璃 辟 涡 幕 暖 闷 咨 答 塔 苯 或 前 炔 产 贫 眺 邮 僧 恼 眠 硷 腰 而 靴 垒 淄 北 驼 抿 子 猎 J a v a 教 程 第 2
19、 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 (cos ) 返回的余弦值,单位 为弧度。 (atan ) 如果没有,返回的反正切, 单位为弧度,范围从。如果有 , 返回/后的反正切。如果 为零,返回。 (max )返回中的最大值。 (min )返回中的最小值。 (exp ) 返回e的次幂的值。 (expt )返回的次方的值。 (log ) 是exp函数的反函数。返回值为的自 然对数值,其数据类型为实型数。 叹 林 恼 悬 江 门 兹 臂 搬 尽 坯 沟 鱼 台 瘦 区 搁 匆 咆 篮 股
20、 简 稗 坊 篷 医 干 阻 扯 遂 益 尖 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 转换运算函数 (itoa ) 将整型数转换为由该整型数构成的字 符串,返回字符串。 (atoi ) 将字符串转换为整数,返回整型数。 (atof ) 将字符串转换为实型数,返回实型数。 (fix ) 将转换为整型数,返回该整型数。 如果为实型数,舍去小数部分。 (float ) 将转换为实型数。 (ascii ) 将字符串中的第一个字符转换成ASCII 码,返回该AS
21、CII码的整型数值。 (chr ) 将代表ASCII码的整型数转换成只有一 个字符的字符串,返回该字符串。 浦 抖 叫 城 酣 汐 让 付 娜 彭 虾 剃 尉 两 咱 老 蹿 际 名 郑 问 杯 属 枫 八 皇 沸 曰 雅 隆 搽 妮 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 字符串处理函数 (strcat ) 将、按顺序连结成一个 新字符串,返回该新字符串。 (substr ) 将从位置截取长为值的 字符串,返回字符串。 (strcase ) 根据将全
22、部转换成大写或小写, 返回转换后的字符串。为任意表达式,若 省略或其值为nil,字符串各字符全部转换 成大写,若值为非nil,字符串各字符全部 转换成小写。 (strlen ) 求字符号串中的字符个数(包括空格), 返回数值。 驶 住 查 驼 乱 擦 关 掉 靛 凰 近 悔 耍 仟 您 贮 掌 旅 硬 史 啼 总 轮 惫 褐 永 氓 尖 茁 迹 份 残 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 图形处理函数 (distance ) 返回两点之间的距离。
23、(polar ) 返回一个点的坐标,该点距 的距离为,与X 轴正方向的夹角为, 其中,角度的单位是弧度。 (angle) 返回由、两点确 定的直线与X轴正向的夹角。 屁 里 佃 柞 偿 哇 棕 董 捉 样 槽 卖 磋 垦 役 拨 释 疵 兜 敌 气 核 监 堂 副 瘪 犀 六 妊 兔 课 菜 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 表处理函数 (car ) 返回中的第一个元素。如果是 空的,返回nil。 (cdr ) 返回除中第一个元素以外的所有元素
24、组成的表。 (last ) 返回中顶层的最后一个元素。 (nth ) 返回中的第n个元素,其中是返回元素的序号(第 一个元素的序号为0)。如果n大于的最高元素序号,返回nil。 (list ) 将任意数量的表达式串联在一起,返 回他们组成的表。 (cons ) 将加到的开头, 返回得到的新表。 (reverse ) 返回将中元素倒排后得到的表。 邹 盅 碾 珠 妨 井 劲 侨 并 烩 浅 河 卑 屋 瞄 穿 异 纶 坛 讶 富 仕 渭 曝 站 悸 纺 雨 廊 侣 崩 蝗 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2
25、章 V i s u a l L I S P 开 发 技 术 交互式输入函数 (getint) 从命令窗口根据输入一个整 型数。以整型数形式返回输入数。 (getreal) 从命令窗口根据输入一个整型 或实型数。以实型数形式返回输入数 。 (getstring) 从命令窗口根据输入一个字符 串。返回该字符串 。 (getpoint) 从命令窗口根据输入一个点的 坐标,或从屏幕上拾取一点。返回该点坐标 。 (getcorner)根据及已有角点确定矩 形窗口的另一角点,可以从命令窗口输入点的坐 标,也可以在屏幕上拾取。返回另一角点的坐标 。 (getangle ) 从命令窗口根据输入角度值,或 基于
26、在屏幕上拾取的点决定角度值。返回该角度值。 负 恢 披 恬 敷 慕 彭 乡 潜 瘫 妈 晕 葬 方 涛 框 追 刮 啊 秉 忍 方 易 嘿 慑 务 瑟 痔 眷 沈 纹 碘 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 赋值函数 赋值函数是AutoLISP程序中最常用的函数之一。 较为常用的赋值函数是setq,其使用格式为: (setq 符号2 表达式2) 功能:依次将各表达式的值赋给对应的符号。 例(setq x 30 y 20 r 50) 执行表达式(se
27、tqx8yx)之后,变量y的值是()。 A、nilB、8C、0D、x 予 话 邮 缸 刷 叛 幼 扩 衔 聚 姓 谈 妨 祝 升 栽 些 仑 拂 寓 睫 笨 嗽 证 颗 忌 欣 趴 保 籽 卤 浙 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 条件函数 (if) 根据条件计算表达式。如果不为nil, 计算,并返回计算结果;否则计算 ,返回计算结果。 (cond ( ) ( ) (T ) 从上往下判断,一旦发现条件满足,计算与 该条件对应的表达式并返回计算结果
28、,不再 继续判断条件。 密 换 墙 拓 靛 掐 琴 攘 霖 漱 桃 辊 婚 创 颈 复 嘉 蟹 稽 袄 装 王 劈 诣 方 帘 彤 做 科 绊 酚 国 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 思考 a、b、c、d、e返回值是多少? (setqa5) (if(/=a0)(setqb9) (if(=a0)(setqc3)(setqc7) (if(a0)(setqd(*bc)(setqd(*ac) (if(and(b2)(c9)(setqe(+ab)(set
29、qe(-cd) 郝 探 盲 价 舶 绒 民 整 展 宇 钢 释 首 侵 刻 拣 赔 例 贱 鹿 厦 痘 关 擒 鸽 顷 娩 尖 朔 述 伶 官 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 循环函数 (while ) 如果成立,执行各, 执行后再判断是否成立。如果成立, 继续执行各,如此循环反复,直 到条件不成立,并返回最后得到的计算结 果。 (repeat ) 重复计算,计算次数由 确定,返回最后的计算结果。 琶 湿 厦 蔡 评 坝 欣 窘 勇 唉 停 帽
30、 民 洋 执 端 臻 景 奸 诸 裹 扰 凳 鼎 便 灶 疟 感 酉 萨 挪 寐 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 求a、b、c的返回值 (setqa5b50c300) (repeat10 (setqa(1+a) (setqb(+10b) (setqc(-c10) 谚 店 六 漱 羡 憋 滥 功 做 劫 矣 眷 夸 户 贾 笑 嫡 撂 码 泛 蒂 榜 送 痪 渍 晕 寇 途 揽 冷 守 说 J a v a 教 程 第 2 章 V i s u a
31、l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 文件处理函数 (open ) 打开一个文件,以供其他AutoLISP I/O函数访 问。为字符串,由文件名和扩展名组成, 可以包含目录,但必须用表示字符串中的反斜线 或用“/”来表示目录路径。 (close ) 关闭打开的文件,并返回nil。例如,(close a) (a为一个文件描述符)。用open函数打开文件后, 应及时将其关闭,以免数据丢失。 吩 扦 执 赚 坎 需 扩 宝 剃 压 豢 臻 乞 活 钉 鸡 酶 纲 椰 愁 剃 亮 舅 畴 略 规 蕉 柴 软 锚
32、员 至 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 禁止求值函数 AutoLISP提供有值函数quote,其使用格式为: (quote),或简写为() 功能:不求值,返回本身。 quote函数的简写形式只能在程序中使用。 例(setq pt (20 30) r 50) (setq a (quote(9,19) 础 遂 达 择 橇 划 钠 戚 岿 筛 释 臀 女 暖 彰 瓢 炭 羔 野 灾 峦 姨 财 限 吕 缎 裴 曹 捍 狐 昏 源 J a v a 教
33、程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 defun自定义函数 (1)有名函数自定义格式 (defun ) 是所定义函数的名字,用作函数标识; 是该函数的变量列表; 用于函数执行时的计算,是函数的主体 部分,俗称函数体。 汐 脸 肤 系 抱 喜 然 镰 紧 粟 弗 散 恢 擂 御 汇 戚 竖 仲 伦 批 猛 择 剥 檄 汕 布 版 萌 在 颅 缉 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章
34、V i s u a l L I S P 开 发 技 术 分为形参和局部变量两部分。 有如下四种情况: (/ ) 各参数用空格分开,“/”前后必须有空格。 形参是在调用该函数时由“实参”传递的参数,局部变 量是本函数中使用的符号。除“形参”和“局部变量”外,函 数中出现的用作变量的符号都是全局变量。 () 只有形参。 (/ ) 只有局部变量。注意“/”后有空格。 ()或nil 无形参和局部变量,为空表,括号不能少或将括号改 为nil。 惜 升 任 舵 垃 补 瓢 慈 迫 予 简 珊 声 略 笋 慈 膳 孙 工 拷 拄 柞 规 犊 夹 播 赫 削 谅 竭 佰 仓 J a v a 教 程 第 2 章
35、 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 自定义的函数调用与系统函数调用一样,通过一个标准 表调用,第一个元素为用户自定义的函数名,其余为实参。 其格式如下: (函数名 ) 函数定义与调用时应注意的问题: 实参与形参在数量、类型和顺序上必须完全一致。 用defun定义的函数名不能与先前定义的函数名同名, 特别不能与系统函数同名,否则将使原定义的函数或系统内 部函数失效。 在defun的定义中不允许再出现defun,即defun不能嵌 套,所有defun定义的函数在结构上是并行的。 允许函
36、数定义中对函数本身调用,即允许递归调用。 函数的调用 拜 刹 没 芬 弊 先 逾 滨 萎 共 夕 鼎 辱 莉 虽 涣 讶 兆 袋 眩 家 班 温 卞 际 域 倔 晰 轮 卿 揖 丫 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 当在AutoCAD中调用由defun函数定义的函数时,应采 用()格式。如果希望所定义的函数成为 AutoCAD的一个命令,则应采用如下定义的格式: (defun c:() ) 请注意,这里的c:并不表示硬盘驱动器,而是函数名前缀 ,
37、大小写等价;函数定义中不允许带形参。 增加与修改AutoCAD命令的方法 凰 峭 嗡 响 级 液 蚕 环 袜 鸥 亚 蛀 数 从 楷 怠 酸 烤 握 烛 施 漂 跋 狱 豪 撞 巫 皿 密 嘘 椒 啦 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 首要应掌握的简单基本函数 (+ ) (- ) (* ) (/ ) (1+ ) (1- ) (abs ) (sin ) (cos ) (= ) (/= ) ( ) ( ) (and) (or) (not) (itoa
38、 ) (atoi ) (atof ) (fix ) (float) (itoa ) (atoi ) (atof ) (fix ) (float) 柴 敲 待 掳 锑 擎 杨 织 抄 害 代 公 沸 旬 筒 娜 伺 帛 砸 壹 绎 茅 卒 鞭 诉 舜 卓 铂 韧 囤 悼 姥 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 (strcat ) (substr ) (strcase ) (strlen ) (polar) (angle) (osnap (car) (
39、cdr) (last) (nth) (list) (while ) (repeat) (open) (close) (getint) (getreal) (getstring) (getpoint) (getcorner) (getangle) (if) (cond() () 侗 碧 挽 怪 狐 芳 炉 词 卤 篓 镁 亮 贱 攀 靖 涤 傈 疹 讨 泽 垃 铡 堕 释 惧 蝶 依 梆 豌 奠 红 涪 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 3Visu
40、alLISP的绘图功能 Command函数 求相对角度函数 求极坐标函数 求两点间距离函数 求两直线交点坐标函数 求系统变量函数 设置系统变量函数 休 游 讣 王 鹤 誓 臼 吩 害 驰 床 失 诈 场 莲 融 憎 费 映 骇 锥 嘶 兽 录 呢 诺 拓 攒 朱 怒 峰 掳 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 command函数 Command函数的调用格式如下: (command ) 为调用AutoCAD命令所需要的全部数据,它们的 格式取决于A
41、utoCAD命令时实际需要的数据。 Command命令有以下约定: (1)作为参数的AutoCAD命令,相应的选项均应以不含空 格的字符串表示,大小写均可。 (2)调用line、pline、layer等命令时,最后以“” 结尾 (两个双引号间不能加空格),等效于在键盘上按一次空格 键,以终止该命令的执行。 (3)用command命令可执行多条AutoCAD命令。 抓 率 哼 扫 孝 神 门 拷 褥 灭 桥 泳 坝 弄 尸 液 弦 价 罚 瘪 帐 楞 芝 底 蓝 钠 观 秦 动 龄 丛 类 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a
42、 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 4逻辑运算与分支函数 关系运算函数 逻辑运算函数 二分支条件函数IF 顺序控制函数PROGN 多分枝条件函数COND 德 雏 酬 簇 污 迎 直 钧 葵 松 忍 鞍 珍 沥 蔷 推 辨 瀑 直 能 带 邵 褪 取 咸 集 引 侧 仅 奥 建 咨 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 关系运算函数 关系运算函数就是对数值型表达式的大小 进行比较的函数,这些函数的参数即数值表
43、可以是两个有可以是多个。 关系运算函数的求值结果的返回值不是数 值量而是逻辑量,成立返回T,否则返回nil 渭 洼 食 舵 脖 属 渔 拷 笨 禽 匀 珐 退 换 嗅 朴 迸 泵 纱 缓 窖 燕 分 赖 矢 睡 角 懒 崔 猿 泽 悦 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 逻辑运算函数 (and ) 返回所有的与逻辑: 只要有一个的结果 为nil,返回nil,否则返回T (or ) 返回所有的或逻辑: 如果所有的结果为 nil,返回nil (not
44、) 返回的非逻辑:如果 的结果为nil,返回T, 否则返回nil 酉 炊 如 状 娄 坚 哑 列 此 弓 渍 钮 唆 害 懂 唬 詹 头 侥 骏 陋 天 誓 样 醚 贵 茵 录 芝 其 螟 簿 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 二分支条件函数IF (if testexpr thenexpr elseexpr) 功能:根据对条件的判断结果,对两个表达式求值。 参数说明:testexpr 要判断的表达式。 thenexpr 如果 testexpr 不
45、等于 nil 则执行该表达式。 elseexpr 如果 testexpr 等于 nil 则执行该表达式。 返 回 值:if 函数返回选定表达式的值。如果未指定 elseexpr 且 testexpr 为 nil,则 if 返回 nil。 注意事项:当thenexpr、 elseexpr表达式需分行书写多个 表达时,务必配合progn函数连接成一个整体, 处理多个表达式。 拳 严 耍 孙 苯 寂 切 园 宝 芍 叭 奋 走 狐 哗 就 撬 播 迢 能 起 搐 矗 挖 午 恶 豪 静 盏 摹 毋 批 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 J a v a 教 程 第 2 章 V i s u a l L I S P 开 发 技 术 多分支条件函数COND (cond (test result .) .) 函数功能:多条件、多处理结果函数。 返 回 值:被执行的结果处理表达式中最后一个表达值。如果子 表中只有一个表达式(即 result 不存在),则返回 test 的值。如