AutoLisp编程授课讲义2015年 1
AutoLISP详细讲解

AutoLISP详细讲解关于AutoLISPAutoLISP是由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开发课件

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)
CAD二次开发lisp教程《第一章》

集成环境下可以便捷, 程序, 在VLISP集成环境下可以便捷,高效地开发 集成环境下可以便捷 高效地开发AutoLISP程序, 程序 可以经过编译得到运行效率更高,代码更加紧凑, 可以经过编译得到运行效率更高 ,ual LISP是新一代 是新一代AutoLISP语言,它对 语言, 是新一代 语言 它对AutoLISP语言进行 语言进行 了 扩 展 , 可 以 通 过 Microsoft ActiveX Automation 接 口 与 AutoCAD对象交互,可以通过反应器函数扩展 对象交互,可以通过反应器函数扩展AutoLISP响应事 对象交互 响应事 件的能力. 件的能力. 如果使用Visual LISP对AutoLISP扩展功能的部份,必须调用 扩展功能的部份, 如果使用 对 扩展功能的部份 vl-load-com 函 数 , 或 者 将 调 用 该 函 数 的 表 达 式 写 在 acad2006doc.lsp 文件内. 文件内.
第1章 章
AutoLISP和Visual LISP 和
1.1 关于 关于LISP
LISP是人工智能领域中广泛采用的一种程序设计语言.主要用于人工智 是人工智能领域中广泛采用的一种程序设计语言. 是人工智能领域中广泛采用的一种程序设计语言 机器人,专家系统,博奕,定理证明等领域. 能,机器人,专家系统,博奕,定理证明等领域. LISP也被称为符号式语言,因为它处理的对象是符号表达式.LISP语言 也被称为符号式语言,因为它处理的对象是符号表达式. 语言 也被称为符号式语言 的程序和数据都是以符号表达式的形式来表示,因此,一个LISP程序可以把 的程序和数据都是以符号表达式的形式来表示,因此,一个 程序可以把 另一个LISP程序作为它的数据来处理. 程序作为它的数据来处理. 另一个 程序作为它的数据来处理 LISP语言语法简单,编写程序便捷,灵活,数据类型丰富.利用 语言语法简单,编写程序便捷,灵活,数据类型丰富.利用LISP语 语言语法简单 语 言可以很容易地定义或调用新的函数.这就是Autodesk公司早在 公司早在1985年的 年的2.1 言可以很容易地定义或调用新的函数.这就是 公司早在 年的 版本就引用了LISP语言的宏操作, 在 1986年的 版本就推出了比较完整的 版本就引用了 语言的宏操作, 年的2.5版本就推出了比较完整的 语言的宏操作 年的 AutoLISP语言的原因. 语言的原因. 语言的原因 LISP在它几十年的发展过程中产生了多种版本,如MacLISP,InterLISP 在它几十年的发展过程中产生了多种版本, 在它几十年的发展过程中产生了多种版本 , ,ZetaLISP,和CommonLISP等.其中 , 等 其中CommonLISP是近几年美国的几所大 是近几年美国的几所大 如麻省理工,斯坦福等)和工业界( 实验室, 公司, 公司 学(如麻省理工,斯坦福等)和工业界(如Bell实验室,DEC公司,HP公司 实验室 公司 等 ) 的人工智能研究人员协同推出的 , 它概括了MacLISP, InterLISP, 它概括了 , , ZetaLISP等版本的特点,因而功能较强且拥有其它版本的一些优点,是目前 等版本的特点, 等版本的特点 因而功能较强且拥有其它版本的一些优点, LISP语言较完整的版本. 语言较完整的版本. 语言较完整的版本
AutoL教材isp培训课程

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 支持软件。
AutoLISPVisualLISP教程学习教程

第9页/共87页
10.2.2访问其他AutoCAD对象
获取AutoCAD应用程序这个根对象之后,沿着AutoCAD对象模 型图,就可以将其作为起点,逐级访问它的下一级VLA对象。
第5页/共87页
2. 了解AutoCAD应用程序的属性和方法
(vlax-dump-object VLA对象 [T]),该函数的功能是列出指定 VLA对象的属性和方法,参数为VLA对象,如果未设置T,只列出 指定VLA对象的属性。例如
(vlax-dump-object myacad t)返回
; IAcadApplication: An instance of the AutoCAD application
; ZoomCenter (2) ; ZoomExtents () ; ZoomPickWindow () ; ZoomPrevious () ; ZoomScaled (2) ; ZoomWindow (2)
第8页/共87页
在Property values(属性)部份列出了AutoCAD应用程序具 有ActiveDocument(活动的文档)、Application(应用程序的 指针)、Caption(标题)、FullName(可执行文件名)等属性。
第13页/共87页
; Handle (RO) = "81" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 040a53f4> ; Layer = "0" ; Length (RO) = 50.0 ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 2129985160 ; ObjectName (RO) = "AcDbLine" ; OwnerID (RO) = 2129984760 ; PlotStyleName = "ByLayer" ; StartPoint = (10.0 20.0 0.0) ; Thickness = 0.0 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 040a6db0> ; Visible = -1
AutoLISP编程

第4 3章 A u t o L I S P编程为了使用A u t o L I S P,你必须学会如何使用A u t o L I S P中的函数,还必须学习A u t o L I S P编程。
结束这一章之后,你应该会:• 实现基本的A u t o L I S P编程。
• 分析A u t o L I S P程序。
• 在A u t o C A D中使用A u t o L I S P程序。
43.1 AutoLISP基础A u t o L I S P编程可以非常简单,也可以非常复杂。
A u t o L I S P程序由一系列指令构成。
A u t o L I S P编程语言包含许多对你的工作非常有用的函数,并内置于A u t o C A D之中。
让我们先看一看这部分。
43.1.1 算术函数你可以用A u t o L I S P进行算术运算。
启动 A u t o C A D,我们可以在命令行中直接使用A u t o L I S P子程。
在命令行,直接键入以下命令,并确保包括括号和空格。
Command: (+ 5 4)9注意这时A u t o C A D返回了值9。
这是一个简单的5加4的算术运算,并在屏幕上显示出结果。
继续键入以下加、减、乘、除算式并注意结果。
Command: (- 100 40)Command: (* 5 6)Command: (/ 100 20)注意A u t o L I S P子程在命令行中被键入时的括号。
括号告诉A u t o C A D这是一个A u t o L I S P子程。
当A u t o C A D检测到一个左括号时,它就把之后的文本交给A u t o L I S P处理。
右括号表明了语句的结束。
在A u t o C A D提示“1 >”时,你需要键入一个右括号,然后回车。
这一提示说明缺少右括号与左括号相配。
如果想测试这一情况,可以键入前面的语句,并省略右括号。
43.1.2 AutoLISP与A u t o C A D命令A u t o C A D命令可以在A u t o L I S P子程中使用。
AutoLISP详细讲解

AutoLISP详细讲解关于AutoLISPAutoLISP是由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培训教程_4

AUTOLISP培训教程_4在工程设计和绘图领域,AUTOLISP 作为一种强大的编程语言,为我们提供了许多高效和便捷的工具。
接下来,让我们一起深入了解更多关于 AUTolisp 的知识和应用技巧。
首先,我们来谈谈 autolisp 中的数据类型。
AUTOLISP 支持多种数据类型,比如整数、实数、字符串、列表等等。
整数就是我们常见的没有小数部分的数字,实数则包含小数部分。
字符串就是被引号括起来的一系列字符。
而列表则是用括号括起来的一组数据,可以包含不同的数据类型。
理解这些数据类型是编写有效 autolisp 程序的基础。
函数是 autolisp 编程中的重要组成部分。
例如,(setq x 10) 这个语句,其中“setq”就是一个函数,用于给变量 x 赋值为 10 。
再比如,(+ 5 3) 会返回 8 ,这里的“+”就是一个用于加法运算的函数。
在实际编程中,我们经常需要进行条件判断。
比如,(if (> x 5) (princ "x 大于 5")(princ "x 不大于 5"))这个语句,如果变量 x 的值大于 5 ,就会输出“x 大于5”,否则输出“x 不大于5”。
通过合理使用条件判断,我们可以让程序根据不同的情况执行不同的操作。
循环结构在 autolisp 中也非常有用。
像(while (< x 10) (princ x) (setq x (+ x 1))),只要 x 小于 10 ,就会执行循环体中的操作,不断输出 x 的值,并将 x 的值增加 1 。
循环结构能够帮助我们处理需要重复执行的任务,提高编程效率。
接下来,我们说一说 autolisp 与 AutoCAD 的交互。
通过 autolisp ,我们可以获取 AutoCAD 中的图形对象信息,例如点、线、圆等的坐标、长度、半径等属性。
还可以使用 autolisp 来创建、修改和删除这些图形对象。
例如,要创建一个圆,可以使用(command "circle" "0,0" 5) 这个语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
"2,3"
'(2 3) (list 2 3)
(setq pt (list 2 3))正确 (setq pt "2,3")错 误 11、 (command "line" "0,0" "1,1" "")程 序 没 问 题 , 但 记 住 用 "zoom" "e"察 看 一 下 。
12、一些简单 的错误, 说明有些 学生 上课没有认真 听讲
4、 已 知 直 线 L2:2x+3y=2, 求 两 直 线 交 点 (x=0.625,y=0.25)
(defun jd() (setq a1 2.0 b1 -1.0 c1 1.0 a2 2.0 b2 3.0 c2 2.0 ) (setq upx (- (* c1 b2) (* c2 b1)) upy (- (* a1 c2) (* a2 c1)) dw (- (* a1 b2) (* a2 b1)) ) (setq x (/ upx dw) y (/ upy dw) )
四、表的构造与表中元素提取
1、使用 list 函数构造表。(list 1 2 3)
2、 使 用 car/cadr/caddr/cadddr/last 或 nth 函 数 提 取 任 意 位 置 的 元 素 。
五、赋值语句
x=2.4 x=a2 x=a2+b2
(setq x 2.4) (setq x (expt a 2)) (setq x (+ (* a a) (* b b)))
(defun sqtab() (setq a 3.0) (setq b 4.0) (setq c1 (+ (* a a) (* b b))) (setq c (sqrt c1)) (print "c=")(print c)
)
七、程序编写注意事项
1、 左 右 括 号 要 成 对 出 现 (( ()) ) 、 ( ( ))
2、函数必须 放在表中 的第一个 元素 位置,例如 (/ a b)、(sqrt a)等 3、函数运算 符与参数 之间至少 用一 个空格隔开 (/ a b) 4、字符不分 大小写 5、 ";"后 面 为 注 释 , 便 于 程 序 的 理 解 和 调 试 6、 查 看 变 量 值 可 以 在 命 令 行 后 面 输 入 “ !a” 即 可 , 其 中 a 为 变 量 名 。
ቤተ መጻሕፍቲ ባይዱ
2、 实 数 型 ( REAL)
3、 字 符 串 ( STRING)
4、 表
( LIST)
例 1:
(setq a 3)
;a 为整数型
(setq b 3.0) ;b 为实数型
(setq c “3”) ;c 为 字 符 串
计 算 (/ a 2)、(/ a 2.0)、(/ b 2)、(/ c 2)
结果,并分析不同结果产生的原因。
第一讲 AutoLisp 语言概述
一、LISP 语言的产生
1960 年 MIT 的 J.McCarthy 提 出 , 全 称 为 List Processing Language, 即 计 算 机 表 处 理 语 言 。 在 人 工 智 能 领 域 得 到 广 泛 应 用 。 AutoDesk 公 司 将 其 引 入 AutoCAD 中 , 称 为 AutoLisp 语 言 , 由 于 AutoCAD 软 件 的 垄 断 地 位 , 使 得 AutoLisp 成 为 开 发 AutoCAD 的 最主要工具,并且成为当今世界上计算机辅助设计与绘图最广泛采用的语言。
)
利 用 AutoCAD 命 令 ,绘 出 相 关 的 A 点 、直 线 、对 称 点 、投 影 点 ,交 点 等 ,并 验 算编 程结果是否正确。 附上可能使用的公式: 1、 点 ( x1,y1) 关 于 直 线 ax+by+c=0 的 对 称 点 ( x2,y2) 为
x2=x1-2a(a*x1+b*y1+c)/(a^2+b^2) y2=y1-2b(a*x1+b*y1+c)/(a^2+b^2) 2、 点 ( x1,y1) 在 直 线 ax+by+c=0 上 的 投 影 点 ( x0,y0) 为 x0=(b^2*x1-ab*y1-ac)/(a^2+b^2) y0=(a^2*y1-ab*x1-bc)/(a^2+b^2) 3、 点 ( x1,y1) 到 直 线 ax+by+c=0 的 距 离 为 : d=|ax1+by1+c|/(a^2+b^2)
初学者常犯错误集锦
1、将表达式 用一条语 句写完, 正确 方法是采用中 间变量过 度一下 ! 2、 命 令 中 出 现 中 文 符 号 , 特 别 是 “ ” (比 较 "") 和 (( 3、 在 构 造 表 时 , '和 list 的 区 别 , 建 议 初 学 者 一 律 使 用 list 构 造 表 4、 命 令 应 该 写 全 。 例 如 (command "l" "2,3" "0,0" "")是 错 误 的
课后练习题:已知三点坐标 A(0,0)、B(3,5)、C(5,3)
1、绘出过上 述三点的 外接圆
思 路 :第 一 步 求 出 中 垂 线 方 程 ;第 二 步 求 出 任 意 两 条 中 垂 线 的 交 点 即 为 圆 心 ,并 求 出 半径;第三步利用圆心与半径绘出圆。 2、绘出过上 述三点的 内切圆
例 题 1: 已 知点 A( 11, -3) 和 直 线 L1: 2x-y=1, 求
1、 点 A 关 于 直 线 L1 的 对 称 点 ( x=-8.2,y=6.6)
;;点关于直线的 对称点 (defun duichen()
(setq x1 11.0) (setq y1 -3.0) (setq a 2
3、点 A 到直线 的距离 (d=10.7331)
;;点到直线的距 离,答案是 10.7331 (defun juli()
(setq x1 11 y1 -3.0) (setq a 2 b -1 c -1.0) (setq up1 (+ (* a x1) (* b y1) c)) (setq up (abs up1)) (setq dw (sqrt (+ (* a a) (* b b)))) (setq d (/ up dw)) (princ d)(princ) )
六、AutoLisp 程序的加载及运行
两种方式: 1、单行程序,或少数几行程序,直接在命令行下运行即可。在命令行 下 逐行运行某 个 程序是最简单、最有效的调试方式。该方式的缺点是程序不能保存。 2、多行程序 的加载
在任何文 本编辑器 上建立扩 展名 为*.lsp 的文件,输入 源程序后 保存 。然后在命令 行 下使用“appload”加载该 程序即可 。 例 3:一个简单程序的加载及运行
2、 点 A 在 直 线 上 的 投 影 点 (x=1.4,y=1.8)
;;点关于直线的 投影点 (defun tyd()
(setq x1 11.0 y1 -3.0
) (setq a 2.0
b -1.0 c -1.0 ) (setq up1 (+ (* b b x1) (* a b y1 -1) (* a c -1)) up2 (+ (* a a y1) (* a b x1 -1) (* b c -1)) dw (+ (* a a) (* b b)) ) (setq x0 (/ up1 dw) y0 (/ up2 dw) ) )
(\ a b)
反斜杠错误,正确的是(/ a b)
13、养成良好 的编程习 惯:程序 名、 关键变量最好 有意义, 无论英文 或中 文 ;复杂语句
及关键语句应加上注释;养成退格习惯
14、程序没有 问题,但 绘图结果 与实 际不一致 ,有 可能是捕 捉没有关 闭, 最好在程序开 始 时 加 上 (command "osnap" "off")
(command "polygon" "4" "2,3" "i" "5")
(command "polygon" 4 "2,3" "i" 5)
(command "polygon" 4 (list 2 3) "i" 5)
(command "polygon" 4 '(2 3) "i" 5) 都 是 正 确 的 书 写 方 式 9、(defun juli()...)与(defun c:juli()...)的区别 :前者调用 方式是 (juli),后 者 调用方式是在 命令行下直接 输入 juli。 10、构造表的 三种方法,建议初学 者使 用 list 造表
小提示: 当表达式较复杂时,应用中间变 量过度,以便程序的理解及调试。
例 2: 写 出 x ax0 by0 c 的 表 达 式 a2 b2
(setq up (+ (* a x0) (* b y0) c)) (setq dw1 (+ (* a a) (* b b))) (setq dw (sqrt dw1)) (setq x (/ up dw))
小知识: 程序设计语言的两种基本类
型:解释型与编译型。
二、AutoLisp 语言特点
1、 与 AutoCAD 结 合 的 特 别 好 。 2、是函数型 语言,在 程序中可 方便 的定义和调用 函数。 3、执行程序 的过程就 是对函数 求值 的过程。