ImageVerifierCode 换一换
格式:DOCX , 页数:144 ,大小:101.92KB ,
资源ID:24205480      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24205480.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(autocad lisp教程.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

autocad lisp教程.docx

1、autocad lisp教程 Lisp教程一Lisp基础知识二对话框基础一基本知识 第1节 -基本知识AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50年代末期出现,是一种擅于处理串行文字(List of Processing),属第四代人工智能(Artificial Intelligence)的计算机语言. 目的是令使用者充份利用AutoCAD进行开发,直接增加及修改AutoCAD指令. AutoLisp语言建基于普通的LISP语言上,并扩充了许多适用于CAD的特殊功能而形成. 是一种能以直译方式(不须先行编译)亦可于Auto

2、CAD内部执行的直译性程序语言. 程序容易学习及撰写,程序即使出错亦不会对操作系统(如DOS,WINDOWS)有不良影响. 数据及程序均统一以串行 (List)结构表示. 可直接调用几乎全部的AutoCAD命令. 既具备一般高级语言的基本结构和功能,亦有一般高级语言没有的强大图形处理能力. 内建于AutoCAD应用程序,不须另行购买;亦不须使用特定的编辑器或开发环境. 可配合AutoCAD提供的PDB,建立DCL(Dialog Control Language)文件创建对话框. 缺点 : 执行速度较ObjectArx(旧称ARX,以C或C+程序开发,取代以前的ADS)程序慢;原程序不易保护;对

3、低阶的硬件数据不易存取.第2节 - 函数 (Function)在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下: (函数名称 参数1 参数2.) e.g. (PRINC AutoLISP Programming) 每一个完整的函数必须包在一对小括号( )内,左边为开括号,右边为关括号;如有若干数量的开括号,则一定有同等数量的关括号对应. 左边开括号后紧随函数名称. 函数名称与参数之间,或参数与参数之间须最少留一个空格. 函数可有一个或多个参数(也可能没有参数),视该函数而定.

4、函数名称不分大小写,即大小写字母视为相同. 第3节 - 数据型态 (Data Type)整数 (INT)没有小数字的数值,32位有号数,范围从+2,147,483,647到-2,147,483,648实数 (REAL)带小数字的数值,以倍精度浮点格式储存(最少14位小数) e.g. 12.5 当数值在1与-1之间时,必须加上前导零 e.g. 0.05 可以科学记号表示 : 在E或e后加上次方值 e.g. 4.1e-6 字符串 (STR)一般文字,其前后必须加上双引号 e.g. AutoCAD 控制字符或脱逸码必须为小写,且须在字符前加上反斜线 e.g. AutoCAD 像素名称 (ENAME)

5、是指定给图文件内对象的指针(Pointer,为16进位的数字卷标) e.g. 像素名称在图文件内是唯一的,不会重复对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象档案 (FILE)以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量选集 (PICKSET)用SSGET等函数建立的一个或多个对象的集合或群组转化 (VARIANT)可将像素名称转换为可与ActiveX配搭使用的VLA-Object对象符号 (SYM) 用以储存静态数据的名称;例如内建或使用者定义的函数 符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外: 左括号 ( 右括号

6、) 句点 . 单引号 双引号 分号 ; 表 (LIST) 亦称为串行,是放在一对小括号 ( ) 内,一个或多个元素的有序集合 e.g. (1.0 Lisp ( ) (5.6 7) 元素可以是字符串,符号,整数或实数;也可以是另一个表 元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格 为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为0,依此类推 表的大小即为其顶层元素的数量(内层嵌套式的表,视为单一元素) 点对(Dotted Pair)亦是表的一种;表内有2个元素,中间以一圆点分隔,且元素与圆点之间亦须以空格分开 若表内没有任何元素,称为空串行或空表;以 (

7、 ) 或 (NIL) 表示第4节 - 变数 (Variable)为程序执行中动态储存数据的符号名称;主要分为2类:区域(Local)变量 又称为局部变量;该变量只在该程序段落中有效,不能为其它程序使用全域(Global)变量 又称为整体变量;变量在所有程序段落中均可使用 变量名称与符号的限制相同,使用时宜采用有意义及易于辨别的名称 变量在赋值或使用前无须先行设定 相同的变量可以储存不同型态的数据(但同一时间内只可储存一种型态) 在指定新的数据之前,变量储存的内容会保持不变 赋值 将数据给予指定的变量储存 以内建函数SETQ进行(可用于绘图模式的指令行或AutoLISP程序),其语法如下: (S

8、ETQ 变量名称1 资料1 变量名称2 资料2 . ) e.g. (SETQ NAME David AGE 37 WEIGHT 72.5 POINT (LIST 10 20) 在函数名称之后,各参数以两个一组,每组左边为变量名称,右边为存入变量的数据 亦可将变量名称赋以空值(NIL) : e.g. (SETQ OCCUPATION NIL) 要显示变量所储存的数据,可以使用内建函数PRINC(可用于绘图模式的指令行或AutoLISP程序),其语法如下 : (PRINC 变量名称 ) e.g. COMMAND : (PRINC NAME) Result : DavidDavid 在绘图模式中,亦

9、可于指令行中使用感叹号 ! 来显示变量内容,或作为指令选项的输入值;语法如下 : !变量名称 e.g. COMMAND : !NAME Result : David 在Visual LISP的主控台窗口中,于提示符号 _$ 后键入要显示的变量名称 _$变量名称 e.g. _$NAME 要检查变量所储存的数据型态,可使用内建函数TYPE;语法如下: (TYPE 变量名称) e.g. COMMAND : (TYPE NAME) Result : STR 若检查的变量没有储存数据,则会传回NIL第5节 - 练习 (Exercises) 将四个坐标分别存入四个变量中,并以LINE或PLINE指令,配合

10、四个坐标变量,画出正四边形. COMMAND : (SETQ POINT1 (LIST 0 0) POINT2 (LIST 0 10) POINT3 (LIST 10 10) POINT4 (LIST 10 0) COMMAND : LINE ;直线段指令 COMMAND : !POINT1 ;第一点(左下角起点) COMMAND : !POINT2 ;第二点(左上角) COMMAND : !POINT3 ;第三点(右上角) COMMAND : !POINT4 ;第四点(右下角) COMMAND : C ;自动联机至起点以关闭四边形 画圆 : 将圆心坐标及半径长度分别存入两个变量中(变量名称及

11、数据型态自订) COMMAND : (SETQ CEN (LIST 0 0) RAD 20) ;将圆心点设为坐标0,0;半径为20 COMMAND : CIRCLE ;执行划圆指令 Specify center. : !CEN ;在提示后以变量CEN响应输入 Specify radius. : !RAD ;在提示后以变量RAD响应输入 将不同型态的数据,分多次存入相同的变数内;每次均以PRINC及TYPE函数显示变量内容及其数据型态 COMMAND : (SETQ TEMP 1.2) ;将实数1.2存入变数TEMP COMMAND : !TEMP Result : 1.2 COMMAND :

12、(TYPE TEMP) Result : REAL COMMAND : (SETQ TEMP AutoLISP) ;将字符串存入变量TEMP COMMAND : !TEMP Result : AutoLISP COMMAND : (TYPE TEMP) Result : STR 二数值资料第1节 -基本运算加函数 (+ 数值参数1 数值参数2 . ) e.g. (+ 2.5 4 6) Result : 12.5 函数的结果为各参数之总和 若仅提供一个参数,则以0加上此参数的结果为返回值 若没有提供任何参数则传回0;各参数须为整数或实数型态 若所有参数均为整数,结果亦为整数;若其中一个参数为实数

13、型态,结果会转换为实数 减函数 (- 数值参数1 数值参数2 . ) e.g. (- 10 2 3) Result : 5 结果为第一个(最左边)参数减去其右边各参数的总和 若只提供一个参数,返回值为0减去该参数的结果 若没有提供任何参数则传回0;各参数须为整数或实数型态 若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数 乘函数 (* 数值参数1 数值参数2 . ) e.g. (* 2 3 4) Result : 24 结果为所有参数的乘积 若只提供一个参数,则返回值为该参数乘以1的结果 若没有提供任何参数则传回0;各参数须为整数或实数型态 若所有参数均为整数,结果

14、亦为整数;若其中一个参数为实数型态,结果会转换为实数 除函数 (/ 数值参数1 数值参数2 . ) e.g. (/ 24 2 3) Result : 4 结果为第一个(最左边)参数除以其右边各参数的乘积 若仅提供一个参数,则返回值为该参数除以1的结果 若没有提供任何参数则传回0;各参数须为整数或实数型态 若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数 注意 : 在本篇教程中,各函数的数值参数,均可以变量(储存值只可以是整数或实数,且不可以是空值 nil)取代第2节 -练习 (Exercises)计算式 (2+4)*3 COMMAND : (* 3 (+ 2 4)

15、Result : 18 计算式 (50-8*5)/4 COMMAND : (/ (- 50 (* 8 5) 4) Result : 2 注意 : 上式的正确答案应是2.5,因为函数中的各参数均为整数,所以传回的结果亦为整数递增及递减递增 (1+ 数值参数 ) e.g. (1+ 2) Result : 3 递减 (1- 数值参数 ) e.g. (1- 4) Result : 3 三角函数 (Trinagular Function)正弦值 (SIN 弧度参数) e.g. (SIN 1) Result : 0.841471 余弦值 (COS 弧度参数) e.g. (COS 1) Result : 0

16、.540302 反正切值 (ATAN 弧度参数) e.g. (ATAN 1) Result : 0.785398 第3节 -其它数值处理次方值 (EXPT 数值参数 次方值 ) e.g. (EXPT 2 4) Result : 16 若参数及次方值两个均为整数,返回值亦是整数;若其中一个为实数,结果为实数 开方根 (SQRT 数值参数 ) e.g. (SQRT 30) Result : 5.47723 绝对值 (ABS 数值参数 ) e.g. (ABS -123) Result : 123 余数 (REM 数值参数1 数值参数2 . ) e.g. (REM 50 26 5) = (REM (R

17、EM 50 26) 5) Result : 4 将参数1整除参数2的余数 若参数多于2个时,则会将余数再整除下一个参数,再得出余数;依此类推 若其中一个参数为实数时,则结果为实数;否则为整数 最大公约数 (GCD 数值参数1 数值参数2 ) e.g. (GCD 81 57) Result : 3 两个参数均必须为整数值型态 自然对数 (LOG 数值参数 ) e.g. (LOG 3.5) Result : 1.25276 是EXP函数的反函数;传回值为实数型态 自然反对数 (EXP 数值参数 ) e.g. (EXP 1.25276) Result : 3.49999 是LOG函数的反函数;传回值

18、为实数型态 第4节 -数值资料转型实数转整数 (FIX 数值参数 ) e.g. (FIX 12.56) Result : 12 只会截去小数部份(小数字不会4舍5入) 整数转实数 (FLOAT 数值参数 ) e.g. (FLOAT 12) Result : 12.0 整数转字符串 (ITOA 数值参数 ) e.g. (ITOA -17) Result : -17 数值转字符串 (RTOS 数值参数 模式 小数字 ) e.g. (RTOS 17.23333 2 3) Result : 12.266 若不设定模式,则依系统变量 LUNITS 的设定值转换数值为字符串 若不设定小数字,则依系统变量

19、LUPREC 的设定值转换 模式设定值可以是下列数值之一 : 1 = 科学记号 2 = 十进制 3 = 英呎及十进制英吋 4 = 英呎及分数位英吋 5 = 分数 当选用的模式为3,4或5,则传回的字符串受系统变量UNITMODE影响 弪度转字符串 (ANGTOS 角度参数 模式 小数字 ) e.g. (ANGTOS 0.785398 0) Result : 45 e.g. (ANGTOS 0.785398 4) Result : N 45d E 若不设定模式,则依系统变量AUNITS的设定值转换数值为字符串 若不设定小数字,则依系统变量AUPREC的设定值转换 模式设定值可以是下列数值之一 :

20、 0 = 度 1 = 度/分/秒 2 = 分度量 3 = 弪度 4 = 土地测量单位 当选用的模式为4,则传回的字符串受系统变量UNITMODE影响 反函数为ANGTOF;参阅第5篇教程 第5节 -数值资料检查数值 (NUMBERP 数值参数 ) e.g. (NUMBERP -3.45) Result : T e.g. (NUMBERP AutoLISP) Result : nil 注意 : 在范例的传回值中,T表示函数的结果为真(成立),nil表示结果为假(不成立)负数值 (MINUSP 数值参数 ) e.g. (MINUSP -3.45) Result : T e.g. (MINUSP 0

21、) Result : nil e.g. (MINUSP 3.45) Result : nil 零值 (ZEROP 数值参数 ) e.g. (ZEROP 0) Result : T e.g. (ZEROP 3.45) Result : nil 其它应用最大值 (MAX 数值参数1 数值参数2 . ) e.g. (MAX -88 5 2) Result : 5 若没有提供任何参数,则传回值为0最小值 (MIN 数值参数1 数值参数2 . ) e.g. (MIN -88 5 2) Result : -88 若没有提供任何参数,则传回值为0第6节 -练习 (Exercises)计算下列算式 : (+

22、1234567890 1234567890) Result : -1825831516 上式中两个数值参数均为整数,而结果值大于整数型态所能容许之范围;固导致发生溢位问题,产生无效的结果.修正算式如下 : 只要将其中一个参数改为实数型态即可.(+ 1234567890.0 1234567890) Result : 2.46914e+009 计算下列算式 : (+ 9876543210 1234567890) Result : 1.11111e+010 上式中两个数值参数均为整数,但其中一个(第一个)参数巳大于整数型态所能容许之范围;系统会自动将此参数先行转为实数型态才计算.计算下列算式 : (

23、FIX (SQRT (+ 1 (MAX 20 10 40 30) Result : 6 - 最先执行的是最内层的算式 (MAX 20 10 40 30) ,求出最大值为40- 其次执行加函数,将MAX函数所得的最大值加1,结果为41- 再利函数SQRT,将41开方根,结果为6.4031- 最后使用FIX函数,截去其小数字,得到最后的结果为6 三程序设计第1节 -使用者定义函数 是将一群表示式组合成一个函数或指令 可应用于绘图模式的指令行提示,Visual LISP主控台,或供其它自定义函数内的表示式呼叫使用 AutoLISP原始程序代码均以纯文字格式存盘,扩展名为LSP(2000版可编译成扩展

24、名为FAS的档案 可以一般文字编辑器进行开发,如DOS的EDIT,WINDOWS的WORD或WORDPAD等 一个自定函数内最少要有一个表达式 在原程序文件(LSP)里,自定义函数以DEFUN函数开始;其语法如下 : (DEFUN C: 函数名称 ( 自变量串行 . / 局部变数串行 . ) 表达式 .) 在呼叫带有自变量的自定函数时,必须同时提供与定义函数时,同等数量的参数,使各参数传入自定函数的各自变量中 自变量被视为一种特殊类型的局部变量,无法用于该自定函数以外的其它函数 若自定函数中无须设定任何自变量,亦必须以空串行 ( )加在函数名称之后 若有提供局部变量,必须以斜线 / 加在局部变

25、量的开头(即使前面没有自变量串行) 各自变量,斜线,局部变量之间要以空格分隔;但与左右小括号之间则不须以空格分开 若自变量串行中有相同名称的自变量出现,则会忽略第一个以后的相同自变量;变数亦是一样 若在函数名称前加上C:,表示该函数可以在绘图模式的指令行提示下,其执行方式与内建函数相同;亦可以在任何内建命令(执行中)的提示后,以通透方式执行(但须将函数名称包在一对小括号中) 若在函数名称前没有加上C:,在指令行提示下,必须将函数名称包在一对小括号中才可执行 不可以在执行一自定函数时,以通透方式执行另一自定函数 第2节 -加载程序 自定函数在使用前,都要将其所在的程序文件(扩展名为LSP)加载才

26、可执行 ACAD.LSP程序文件(预设在SUPPORT子目录内)会在启动AutoCAD时自动加载 (LOAD 程序文件名称 加载失败 ) e.g. (LOAD TEST) 若程序文件之文件名为LSP,则在程序文件名称之后,可以不加上扩展名 若有需要,系统会顺序尝试其它的扩展名 : VLX FAS LSP 若程序文件不在系统的支持目录下,则需在文件名前加上目录路径注意 : 必须以正斜线 / 或两个反斜线 作为目录的分隔符 可以在加载失败的参数中提供字符串,以供加载失败时显示;亦可提供有效的自定函数,该函数在加载程序文件失败时会被执行 e.g. (LOAD TEST Load Fail) 或 (LOAD TEST (DOERROR)注意 : 在程序文件加载后,在提示行显示的返回值,一般是该程序文件中,最后被定义的函数名称 或是在程序文件内没有包含在自定函数中,最后一个表达式的执行结果 第3节 -练习 (Exercises) 启动文字编辑器,编写一AutoLISP程序作两个同心圆 (第1个圆半径为50,第

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1