版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模具CAD/CAM常用软件第一节 各种流行的CADCAM软件AutoCAD是应用最广泛的CAD软件,它优良的二次开发工具使其能够活跃在各类CAD专业领域。CAXA是国产CAD/CAM软件,其初级产品CAXA电子图板具有较广泛的应用,可帮助设计人员进行零件图、装配图、工艺图表、平面包装的设计。PICAD是另一种国产CAD软件产品,是参数化、集成化的计算机辅助设计系统,也是二维CAD支撑平台及交互式工程绘图系统。开目CAD是基于微机平台的CAD和图纸管理软件。开目CAD支持多种几何约束种类及多视图同时驱动,具有局部参数化的功能,能够处理设计中的过约束和欠约束的情况。开目CAD实现了CAD、CAPP
2、、CAM的集成。高华CAD系列产品包括计算机辅助绘图支撑系统GHDrafting、机械设计及绘图系统GHMDS、工艺设计系统GHCAPP、三维几何造型系统GHGEMS、产品数据管理系统GHPDMS及自动数控编程系统GHCAM。大恒通用机械CAD系统最早开发于1991年,是针对机械制造及设计行业的通用机械CAD系统。Solidedge是三维CAD系统,它向用户提供了从三维零件建模,装配设计到最终的二维图制作的一整套完善的CAD工具。SolidWorks是基于Windows的机械设计软件,是以Windows为平台,以SolidWorks为核心的各种应用的集成,包括结构分析、运动分析、工程数据管理和
3、数控加工等。金银花(Lonicera)系统主要应用于机械产品设计和制造中,它可以实现设计制造一体化和自动化。GS-CAD是一个基于微机、中文Windows95/NT平台的三维CAD系统。MDT是Autodesk公司在PC平台上开发的三维机械CAD系统。它以三维设计为基础,集设计、分析、制造以及文档管理等多种功能为一体;为用户提供了从设计到制造一体化的解决方案。Pro/Engineer简称Pro/E,是一个面向机械工程的CAD系统。PTC公司提出的单一数据库、参数化、基于特征、全相关的概念改变了机械CAD/CAE/CAM的传统观念。UG-是一个集CAD、CAE和CAM于一体的机械工程辅助系统,U
4、G-为用户提供了一个全面的产品建模系统。SurfCAM是基于Windows的能够自动生成零件刀具轨迹,以及进行零件加工的NC代码,具有强大的通用后置处理模块的辅助制造软件。Mastercam为PC级CAM软件。 Mastercam包括了铣削加工(milling),车削加工(turning),线切割加工(wire EDM)等主要模块,适用于机械设计与制造的各个领域。Cimatron系统是以色列的CAD/CAM/PDM产品,该系统提供了比较灵活的用户界面,优良的三维造型、工程绘图,全面的数控加工,各种通用、专用数据接口以及集成化的产品数据管理。I-DEAS是全世界制造业用户较广泛应用的大型CAD/
5、CAE/CAM软件。CATIA系统是在起源于航空工业的CADAM系统基础上扩充开发的CAD/CAM/CAE/PDM应用系统。Euclid软件是为英法联合研制协和号超音速客机而开发的CAD软件。DUCT软件是三维复杂形体造型设计与制造CAD/CAM软件。第二节 通用CAD软件AutoCAD一、AutoCAD的二维绘图命令二维绘图命令是AutoCAD的基础部分。无论二维图形如何复杂,都是由点、线、圆、圆弧等最基本的图形要素组成。1. 点的输入在各项CAD操作中,点的输入是最基本的操作,AutoCAD共有四种点的输入方式。(1) 通过键盘输入点 通过键盘输入点的坐标值是一种精确的点输入方式,点的坐标
6、值输入有三种坐标方式:绝对直角坐标(输入x,y)、相对直角坐标(输入x,y)和相对极坐标(输入r<a),可根据需要任意选取。(2) 通过光标输入设备输入点 通过光标输入设备输入点的优点是方便和快捷。一般情况下,用光标输入设备输入点的坐标值是不精确的,通过AutoCAD的Snap功能,可以使输入点达到一定的精度。(3) 利用目标捕捉功能输入点 这是利用光标输入设备精确输入点的一种方式,根据AutoCAD的Osnap功能,它可以精确捕捉到图形的特定点位置,例如线段的端点、中点,圆和圆弧的圆心及象限点,切点和垂足等等。(4) 利用LISP函数输入点 利用LISP语言中的函数功能也可以输入点,这
7、是自动绘制图形的基础,在AutoCAD二次开发中经常使用这种方式完成点的输入。2. 直线的绘制绘制直线的命令是LINE。一般只要输入直线的两个端点,即可生成直线。绘制好圆弧后,在LINE命令后直接键入回车,然后输入直线长度,可以在圆弧终点处绘制圆弧的切线。3. 圆的绘制绘制圆的命令是CIRCLE。圆的绘制参数是圆心和半径(或直径)。也可以根据需要绘制与其他图线相切的圆。4. 圆弧的绘制绘制圆弧的命令是ARC。与直线和圆相比,圆弧的绘制比较复杂,考虑到圆弧具有顺时针和逆时针两种方向,AutoCAD共安排了7种绘制圆弧的方法,其绘制参数分别为圆弧的起点、中点、终点;起点、圆心、终点;起点、圆心、角
8、度; 起点、圆心、弧长;起点、终点、角度;起点、终点、半径;起点、终点、起始方向。绘制与刚绘制的直线或圆弧相切的圆弧时,可以直接键入回车,然后输入圆弧终点,此时圆弧的起点即为前绘线段的终点,圆弧的起始方向即为前绘线段的终止方向。5. 多段连线多段连线(POLYLINE)是由直线和圆弧首尾相连组合成的复合线段,绘制多段连线采用PLINE命令,类同于绘制直线和圆弧。实践中常用PEDIT命令编辑直线和圆弧来得到多段连线。二、图形编辑AutoCAD提供的图形编辑方法能够有效地修改图形,并能够显著提高绘图效率。常用的图形编辑命令有删除(ERASE)、复制(COPY)、镜面对称复制(MIRROR)、阵列复
9、制(ARRAY)、等距偏移复制(OFFSET)、移动(MOVE)、转动(ROTATE)、缩放(SCALE)、修剪(TRIM)、延伸(EXTEND)、倒角(CHAMFER)、倒圆角(FILLET)、分解(EXPLODE)和多段连线编辑(PEDIT)。熟练掌握这些图形编辑命令可以有效地提高AutoCAD应用水平。三、其他功能AutoCAD的其他功能还有图形显示、文字、剖面线、尺寸标注、图层管理、图块定义及调用、动画、三维图形、二次开发工具等。第三节 AutoCAD的二次开发工具一、 AutoCAD定制菜单表3-1 菜单文件类型菜单文件类型类型说明.MNU原始 ASCII 菜单文件,即用户通常编辑或
10、创建的文件。.MNC已编译的菜单文件;一种二进制文件,包含用于定义菜单或其他界面元素的功能及外观的命令字符串和菜单语法。首次加载 MNU 文件时,AutoCAD 将编译此文件。.MNR菜单资源文件;一种二进制文件,包含由菜单或其他界面元素使用的位图。AutoCAD 每次编译 MNC 文件时,均生成菜单资源文件。.MNS源菜单文件;一种与 MNU 文件相同的 ASCII 文件,但是不包含注释或特殊格式。每次菜单文件的内容被更改时,AutoCAD 将修改源菜单文件。.MNT菜单资源文件。仅在 MNR 文件无效(例如,只读)时生成该文件。.MNL菜单 LISP 文件;包含菜单文件使用的 AutoLI
11、SP 表达式。当加载与菜单 LISP 文件具有相同文件名的菜单文件时,AutoCAD 会将菜单 LISP 文件加载至内存。用文本编辑器打开ACAD.MNU文件观察菜单文件的结构,可以看到其内容包含如表3-2所示的几个区域。其中*POP1至*POP11定义了下拉菜单。菜单文件中包含的一些特殊字符的说明见表3-3。表3-2 ACAD.MNU文件的菜单区域及其功能主菜单名称区数N功能用途*MENUGROUP菜单组*BUTTONSn14定点设备按钮菜单*AUXn14系统定点设备菜单*POPn09990 对象捕捉快捷菜单116 基本型下拉菜单17499 将menuload加入下拉菜单中500999 快捷
12、菜单区域*TOOLBARS工具栏定义*IMAGE图像菜单*SCREEN屏幕菜单*TABLETn14数字化仪菜单*HELPSTRINGS辅助功能说明区(显示于状态区)*ACCELERATORS加速键定义注意事项如果没有定义POP1POP16,AutoCAD会自动插入2个预设的下拉菜单(File和Edit)表3-3 菜单字符说明字符说明*子菜单-菜单项分隔符->引出子菜单<-子菜单结束禁用菜单项的前缀符!.给菜单项打上复选标记的前缀符&指定菜单快速键,如S&le显示为Sample,快捷键为a/指定菜单快速键,如/aSample显示为Sample,快捷键为a=*显示
13、当前顶层的图像、下拉或快捷菜单*CC重复项的前缀$宏表达式的特殊字符CTRL暂停等候用户输入(不能用于加速键)_转换AutoCAD命令及其后的关键字+延续宏到下一行;RETURN/注释行,不限行数,用作版权声明或注释方括号内为菜单项名称用文本编辑器打开ACAD.MNU文件,在pop11菜单后面插入图3-1所示的pop12菜单ASCII代码,将其保存在DCAD.MNU文件中,用AutoCAD的MENU命令加载DCAD.MNU后,可以看到下拉菜单在Help菜单项的后面增加了名为DCAD的一列新菜单,其效果如图3-2所示。方括号内的字符串构成了下拉菜单的显示内容,DCAD下拉菜单列中包含了“工艺性分
14、析”、“排样”、“CAM”、“模板”和“模具标准件”5个子菜单。点取“CAM”子菜单中“3B指令”项,其对应的菜单项内容为“3B指令CC(load "dcad-ww") w3b ”。其中“3B指令”规定了菜单项显示文字为“3B指令”;“CC”相当于先从键盘输入两次CTRL-C以终止任何AutoCAD可能正在执行的命令,以便无障碍地执行后面的指令;“(load "dcad-ww")”的作用是加载LISP程序文件“dcad-ww.lsp”;“w3b”表示执行AutoCAD二次开发新建的命令“w3b”从AutoCAD图形产生数控线切割机床3B加工指令程序。菜单
15、项中的空格所起的作用相当于输入回车。*pop12DCAD输入清单CC(load "dcad-i-2000")(if (null c:fdcad) (load "DCAD") input->工艺性分析小孔CC(load "dcad-b-2000-k") (load "DCAD") (load "Dcad-b") DCADBK孔距CC(load "dcad-b-2000-jb") (load "DCAD") (load "Dcad-b"
16、;) DCADBJB凸臂CC(load "dcad-b-2000-tz") (load "DCAD") (load "Dcad-b") DCADBTZ窄槽CC(load "dcad-b-2000-tz") (load "DCAD") (load "Dcad-b") DCADBTZ圆弧CC(load "dcad-b-2000-y") (load "DCAD") (load "Dcad-b") DCADBY孔间壁厚CC(
17、load "dcad-b-2000-b") (load "DCAD") (load "Dcad-b") DCADBB<-复合模CC(load "dcad-b-2000-f") (load "DCAD") (load "Dcad-b") DCADBF->排样定搭边值CC(load "dcad-l-2000-d") (load "DCAD") (load "dcad-l-2000") dbz单排排样CC(lo
18、ad "dcad-l-2000-s") (load "DCAD") (load "dcad-l-2000") lay1<-多排排样CC(load "dcad-l-2000-v") (load "DCAD") (load "dcad-l-2000") LAYN->CAM3B指令CC(load "dcad-ww") w3b穿孔代码CC(load "dcad-ww") punch代码校验CC(load "dcad-ww&
19、quot;) check<-穿孔码转换3B指令CC(load "dcad-ww") p2b设计CCDESIGN->模板上模座CC(load "dcad-mb") (mb) smz垫板CC(load "dcad-mb") (mb) db固定板CC(load "dcad-mb") (mb) gdb卸料板CC(load "dcad-mb") (mb) xlb凹模CC(load "dcad-mb") (mb) am下模座CC(load "dcad-mb"
20、;) (mb) xmz下固定板CC(load "dcad-pt") (mb) xgdb下垫板CC(load "dcad-pt") (mb) xdb空心垫板CC(load "dcad-mb") (mb) kxdb-<-图框CC(load "dcad-mb") tukuang->模具标准件模柄(if (null c:mb) (load "dcad-pt") mb橡皮(if (null C:XP) (load "dcad-pt") XP导柱(IF (NULL C:DZ)
21、 (LOAD "DCAD-PT") DZ导套(IF (NULL C:DT) (LOAD "DCAD-PT") DT导料板(IF (NULL C:DT) (LOAD "DCAD-PT") DLB承料板(IF (NULL C:DT) (LOAD "DCAD-PT") CLB卸料螺钉(if (null c:XLLD) (load "dcad-pt") XLLD固定导销(IF (NULL C:DT) (LOAD "DCAD-PT") GDDLX<-圆凸模(IF (NULL C:
22、DT) (LOAD "DCAD-PT") YTM装配示意图CC(load "dcad-z") zpt图3-1 DCAD子菜单ASCII代码二、LISP语言AutoCAD内嵌的两种LISP语言(AutoLISP和Visual LISP)是与AutoCAD结合最为完美的程序语言。AutoLISP是AutoCAD选用的第一个强有力的开发工具,从1985年问世的AutoCAD V2.18版本开始,一直沿用至今。AutoLISP是解释型语言,它的欠缺之处是运行效率较低,源程序缺乏保密性。针对AutoLISP的弱点,AutoCAD在其2000版本中又推出了具有高运行
23、效率的编译型LISP语言Visual LISP。Visual LISP在AutoLISP的基础上增加了源程序编辑环境、编译器以及一些增强函数。实际上,过去编写的AutoLISP程序都可以在Visual LISP中编译和运行,即Visual LISP能够完全兼容AutoLISP。(一)LISP语言简介LISP是英语LISt Processing 的缩写,意思是一种编制计算机程序的表处理语言。LISP语言1960年起源于美国麻省理工学院(MIT),是一种著名的人工智能计算机语言。与BASIC等其他计算机语言一样,LISP语言也有许多版本,现在使用最多的是COMMON LISP。AutoCAD软件中
24、镶嵌的AutoLISP与COMMON LISP很接近,它增加了调用AutoCAD命令的功能和一些几何函数,并削减了COMMON LISP中一些不常用的函数。作为一种高级语言,LISP可以完成其他许多高级语言(如FORTRAN、BASIC、PASCAL、C等)能够完成的工作,诸如计算、逻辑判断、循环运算等等。LISP语言具有一些独特的优点,使它特别适用于人工智能和CAD领域,这也是AutoCAD在众多计算机语言中首先选择其作为开发工具的主要理由。表(List)在LISP语言中具有极其重要的意义。表是LISP语言的重要成份,它由若干个元素(Element)和一对圆括号组成。元素则包括表和原子(At
25、om)两种类型。原子指常数(Constant)或者符号变量(Variable)。表中的元素可以是表,因此表可具有嵌套结构。在LISP语言中,表既可以构成数据,也可以组成程序。如(0.5 1.2)和(1 5.3 3)都是用表的形式表示的数据。前者可以表示一个二维点,x坐标值为0.5,y坐标值为1.2。后者可以表示一个三维点,x坐标值为1,y坐标值为5.3,z坐标值为3。(1 2 5 8.2 “A” 9)可以表示一个六维向量,与其他计算机语言中的一维数组相当,但是表中元素的数据类型可以各不相同,而同一数组中各个数据的类型都必须相同。利用表的嵌套结构,容易获得类似的多维数组,但是其中各维的长度可以不
26、相等,并且表中元素的数据类型可以各不相同,所以在表示数据时,表比其他计算机语言中的多维数组更显优越性。AutoCAD中的图形数据(包括类型、图层、颜色、线型、特征、坐标值等)都可采用表的形式表达。如AutoCAD中表达一根直线所用的表为(-1 . <Entity name: 24082f8>) (0 . "LINE") (330 . <Entity name: 2406cf0>) (5 . "2F7") (100 . "AcDbEntity") (67 . 0) (410 . "Model"
27、) (8 . "0") (100 . "AcDbLine") (10 187.701 -45.8475 0.0) (11 5.0 -45.8475 0.0) (210 0.0 0.0 1.0);表达一个圆所用的表为(-1 . < Entity name: 7ef50e80>) (0 . "CIRCLE") (330 . < Entity name: 7ef50cf8>) (5 . "88") (100 . "AcDbEntity") (67 . 0) (410 . &qu
28、ot;Model") (8 . "0") (100 . "AcDbCircle") (10 0.0 0.0 0.0) (40 . 10.0) (210 0.0 0.0 1.0)LISP语言的程序结构非常简单,它也是由表组成。LISP程序采用前缀形式:(元素0 元素1 元素2 )构成LISP程序时,表中元素0必为函数名称,其后的各个元素为该函数(元素0)的变量。LISP程序对字母的大小写是不加区分的。例如(+ 1 2)是一个LISP程序的例子,其中为函数名,1和2为函数的变量。LISP语言是一种函数型计算机语言,LISP语言拥有的功能是通过其函数
29、表现出来的。(二)LISP函数LISP函数具有返回值和特定的功能。如上例中,函数返回值为3,函数的特定功能是求和。各种类型的LISP函数用来完成LISP语言所有的功能,下面将一些最基本的LISP函数进行分类,以便大家能够对LISP语言及其在CAD中的应用有所了解。1. 代数运算函数代数运算函数用于完成代数运算,包括赋值函数(SETQ),四则运算函数(+、-、*、/),三角函数(SIN、COS、ATAN)以及其他代数函数(ABS、EXP、EXPT、SQRT)。代数运算函数的使用方法很容易掌握,唯一要注意的是LISP程序具有前缀结构的特点,各种函数运算都必须将函数名作为LISP表达式中最前面的元素
30、。1) SETQ函数的格式为(SETQ v1 e1 v2 e2 vn en)。其功能是将ei的计算值赋予变量vi,函数返回值为en的计算值。(注:方括号部分是可选项,以下同。)例如,(SETQ x 1 y (+ 1 2)将常数1的计算值1赋予变量x,LISP表达式(+ 1 2)的计算值3赋予变量y,函数返回值为3。2) +函数的格式为(+ n1 n2 n3 nm)。其功能是对函数变量求和,函数返回值为变量之和:n1+n2+n3+nm。3) -函数的格式为(- n1 n2 n3 nm)。其功能是对函数变量求差。当m1,函数只有一个变量n1时,函数返回值为0-n1,即-n1;当m2时,函数返回值为
31、n1-(n2+n3+nm)。4) *函数的格式为(* n1 n2 n3 nm)。其功能是对函数变量求积,函数返回值为变量的乘积:n1·n2·n3··nm。5) 函数的格式为(/ n1 n2 n3 nm)。其功能是求函数变量的商,函数返回值为n1 /(n2·n3··nm)。当函数变量均为整型数时,函数返回值也为整型数;当函数变量中至少有一个为实型数时,函数返回值为实型数。例如,(/ 3 2)的返回值为1,而(/ 3 2.0)的返回值则为1.5。6) SIN函数的格式为(SIN n)。其功能是求函数变量n的正弦值,函数返回n的正
32、弦值。变量n的单位为弧度。例如,(SIN (/ PI 2))的返回值为1.0,式中PI为LISP符号变量,表示圆周率值。7) COS函数的格式为(COS n)。其功能是求函数变量n的余弦值,函数返回n的余弦值。变量n的单位为弧度。用法与SIN函数相同。8) ATAN函数的格式为(ATAN n1 n2)。其功能是求反正切值arc tan n1 或 arc tan(n1/n2)。当只有一个函数变量时,函数返回值的范围为(-/2,/2),当存在2个函数变量时,函数返回值的范围为(-,。函数返回值的角度单位为弧度。例如:(ATAN 0)返回值0.0(ATAN 1)返回值0.785(ATAN 1 1)返
33、回值0.785(ATAN 1 1)返回值2.356(ATAN 1 1)返回值-0.785(ATAN 1 1)返回值-2.356(ATAN 1 0)返回值1.5708(ATAN 1 0)返回值-1.5708(ATAN 0 1)返回值-3.14(ATAN 0 1)返回值3.149) ABS函数的格式为(ABS n)。其功能是求绝对值,函数返回n的绝对值。10) EXP函数的格式为(EXP n)。其功能是求e的指数,函数返回en。11) EXPT函数的格式为(ESPT m n)。其功能是求m的指数,函数返回mn。12) SQRT函数的格式为(SQRT n)。其功能是求 平方根,函数返回n的平方根。2
34、. 自定义函数LISP语言提供了许多基本函数,称为内部函数或系统函数(如前述函数),利用这些函数可以直接编写LISP程序,例如tan的LISP程序可编写为(/ (SIN x) (COS x)。对于复杂的程序,直接利用基本函数编写程序并不是一个好方法,编写LISP程序更多是利用自定义函数来编写程序,反之,大多数LISP程序也都编写成为自定义函数的形式。自定义函数与其他语言中的子程序或函数最接近。自定义函数是用户自己定义的函数,又被称为用户函数或外部函数。自定义函数的使用和系统函数的使用方法是一致的,用户在使用方面不会感觉到两者的差异。自定义函数的格式为(DEFUN name (A1 A2 AL
35、/ V1 V2 VM) e1 e2 en)上表中第0个元素DEFUN是自定义函数的函数名,第1个元素name是符号变量,为自定义函数所定义的用户函数的名称。用户函数名称后是用户函数的变量表,变量表中的元素都是所定义的用户函数的局部变量,可分成以“”分隔的两个部分,方括号表示可选项,表中“”前的可选项A1 A2 AL为新设立的用户函数name的函数变量,表中另一可选项/ V1 V2 VM中的元素不是用户函数的函数变量,它们仅仅是用户函数name的局部变量。所谓局部变量是指仅仅在定义函数内部存在并起作用的变量,它对定义函数以外的程序无任何干扰。变量表可以是空表(即表中不包含任何元素)。变量表后面是
36、函数定义体,决定了函数name的功能和返回值。函数name的返回值是en的计算结果。例如AutoLISP没有提供正切函数,用户可以利用自定义函数自行定义正切函数,定义正切函数的程序如下(DEFUN tan (x / y) (SETQ y (COS x)(IF (/= y 0) (/ (SIN x) y)以上程序中tan是用户自行定义的正切函数名。x和y之间的符号“/”分隔开了局部变量中的自变量,“/”前的变量x是用户函数tan的自变量,也是该函数的局部变量,而“/”后的变量y是tan函数的局部变量,但不是tan函数的自变量。程序中的DEFUN、SETQ、IF、/=、/、SIN和COS都是Aut
37、oLISP的基本函数。调用正切函数(tan 0),返还的正切函数值为0.0。可以看到,用户自定义的正切函数的使用方法与LISP系统函数SIN或COS的用法相同。用户函数经一次定义后可无限次使用。用户在使用LISP语言的过程中,用自定义函数的方法可以逐渐积累自己的函数,从而使编程越来越方便。3. 分支结构分支结构在LISP语言中有二分支结构和多分支结构两种,与此相关的函数有:关系运算函数(、/、>、>、<、<、EQUAL),逻辑运算函数(AND、OR、NOT),二分支函数(IF)和归并(PROGN)函数以及多分支函数(COND)。1) 关系运算函数判断函数变量相互间是否符
38、合函数所定义的相等或不等关系。函数的格式为( e1 e2 en)。当函数变量e1、e2、en全部相等时,函数返回T,否则返回NIL。/、>、>、<和<函数的用法也是相同的,其功能如同其函数名所示。EQUAL函数的格式为(EQUAL e1 e2 e3)。EQUAL用来比较两个实型数或表是否相等,相等时函数返回T,否则返回NIL。比较两个实型数e1和e2时,取一个很小的正数e3,其判断准则是当|e1-e2|e3 时函数返回T,否则返回NIL。2) AND函数的格式为(AND e1 e2 en)。当函数变量e1、e2、en中全部有值时,函数返回T,否则返回NIL。3) OR函
39、数的格式为(OR e1 e2 en)。当函数变量e1、e2、en中至少有一个有值时,函数返回T,否则返回NIL。4) NOT格式为(NOT e)。当函数变量e有值时,函数返回NIL,否则返回T。5) IF函数的格式是(IF <判别式> e1 e2),它的功能是实现程序的二分支结构。当判别式的结果为非NIL时,函数执行e1并返回e1的计算值,否则函数执行e2并返回e2的计算值,若可选项e2不存在,则函数结束运行,返回NIL。例如(SETQ a (GETREAL “A”) c (GETREAL “C”)(SETQ x (IF (/= a 0) (/ c a)(SETQ y (IF (&
40、gt; a 0) (+ c a) (- c a)6) PROGN函数的格式为(PROGN e1 e2 en),它的功能是将若干个LISP表达式归并为一个LISP表达式,常用于IF函数内,以便使IF函数能够在e1和e2的格式规定中作更多的事情。7) COND函数的格式为(COND(测试式1 e11 e12 e1i)(测试式2 e21 e22 e2j) (测试式m em1 em2 emk)函数功能是实现多分支结构。COND函数的变量都为表,变量表中的第一个元素是测试式,其余元素是当测试结果为非NIL时顺序执行的LISP表达式。COND函数依次对测试式进行测试,当测试结果为非NIL时,顺序执行其后的
41、LISP表达式。函数返回值为最后执行的表达式计算结果。变量表中可以只有一个元素,即可以只有测试式,此时的函数返回值为测试结果。例3-1 编写下列分段函数的LISP程序。解1:可以利用COND函数处理该分段函数,编写程序如下A)编写程序(DEFUN L3-1-1 (x)(COND (AND (> x 10) (<= x 6) 2) (AND (> x -6) (<= x 2) 1) (AND (> x 2) (<= x 2) 0) (AND (> x 2) (<= x 6) 1) (T 2)B)调用程序(SETQ n (L3-1-1 1))后函数L
42、3-1-1返回0,并将该值赋予变量n。解2:利用COND函数顺序测试的特点,可以编写更简化的程序如下A)编写程序(DEFUN L3-1-2 (x)(COND (<= x 10) 2) (<= x 6) 2) (<= x 2) 1) (<= x 2) 0) (<= x 6) 1) (T 2))B)调用程序(SETQ n (L3-1-2 1))后函数L3-1-2返回0,并将该值赋予变量n。4. 交互式输入函数交互式输入函数提供控制台输入,包括键盘输入和光标设备输入。交互式输入函数又称为GET族输入函数,该族函数均以字符GET开头。交互式输入函数包括整型数输入函数(GE
43、TINT)、实型数输入函数(GETREAL)、字符串输入函数(GETSTRING)、点输入函数(GETPOINT)、角度输入函数(GETANGLE)、距离输入函数(GETDIST)、关键字输入函数(GETKWORD)和初始化输入函数(INITGET)。交互式输入函数为专业软件的二次开发提供了与AutoCAD相同的交互界面,简化了软件的开发过程和推广工作。1) GETINT函数的格式为(GETINT 提示信息)。其功能是输入整型数,函数返回值为从键盘输入的整型数。提示信息为字符串,用于输入时给出提示。2) GETREAL函数的格式为(GETREAL 提示信息)。其功能是输入实型数,函数返回值为从
44、键盘输入的实型数。3) GETSTRING函数的格式为(GETSTRING 开关变量 提示信息)。其功能是输入字符串,函数返回值为从键盘输入的字符串。当不选用开关变量或开关变量无值时,输入字符串可以用空格或RETURN结束,输入字符串中无法包括空格。开关变量存在且有值时,则输入字符串中可以包含空格,但必须用RETURN结束字符串。AuotLISP通过这种方式,使字符串输入和AutoCAD在方式上保持一致。4) GETPOINT函数的格式为(GETPOINT pt 提示信息)。其功能是通过键盘或光标设备输入点。可选项pt是一个表示点的表,当pt存在时,移动光标会出现从pt到光标的连线(皮筋线),
45、此时pt也作为相对坐标系的原点对采用相对坐标输入点产生作用。当pt不存在时,相对坐标系的原点由AutoCAD系统变量LASTPOINT决定。5) GETANGLE函数的格式为(GETANGLE pt 提示信息)。其功能是通过键盘或光标设备输入角度。函数返回值为表示角度的实型数,单位为弧度。Pt的作用同前。AuotLISP通过这种方式,使角度输入和AutoCAD在方式上保持一致。6) GETDIST函数的格式为(GETDIST pt 提示信息)。其功能是通过键盘或光标设备输入长度。函数返回值为表示距离的实型数。Pt的作用同前。AuotLISP通过这种方式,使长度输入和AutoCAD在方式上保持一
46、致。7) GETKWORD函数的格式为(GETKWORD 提示信息)。其功能是通过键盘输入关键字。函数返回值定义为关键字的字符串。关键字由下面的INITGET函数定义。8) INITGET函数的格式为(INITGET bits 关键字)。其功能是控制GET×××函数的输入。bits为二进制概念的控制位,能够最大限度的减少输入错误。表3-4中,十进制数1(bit 0)防止空输入(ENTER);2(bit 1)防止0输入;4(bit 2)防止负数输入;8(bit 3)允许用户输入LIMITS规定界限以外的点;16(bit 4)(尚未使用);32(bit 5)使用虚线作
47、皮筋线;64(bit 6)阻止Z坐标输入;128(bit 7)允许任意输入。关键字除了用于GETKWORD函数,还能够用于其他GET×××函数,扩大它们的使用范围。如关键字用于GETINT函数,能够使该函数根据输入内容返回整型数或关键字。而没有关键字时,GETINT函数只能够返回整型数。关键字是包含在双引号内的字符和数字,关键字之间用空格分隔,例如“Abc Def”定义了Abc和Def两个关键字。关键字中的大写字母在输入时可以作为关键字的缩写。表3-4 控制位和输入函数的关系函数关键字控制位非空(1)(bit 0)非0(2)(bit 1)非负(4)(bit 2)非
48、限制(8)(bit 3)用虚线(32)(bit 5)二维距离(64)(bit 6)任意输入(128)(bit 7)GETINTGETREALGETDISTGETANGLEGETPOINTGETKWORDINITGET函数只对其后的GET×××函数起一次作用。对于程序段(INITGET 7 “Abc Def”)(SETQ A(GETINT “A”)运行时,输入空回车、0或负数,系统都会要求重新输入,只有在输入正数时程序才会将整型数赋予变量A。当输入a或abc时,程序会将关键字“Abc”作为字符串赋予变量A。而输入d或def时,程序则将“Def”赋予变量A。输入其他字
49、母,程序也会要求重新输入,直至符合输入要求。例如,在AutoCAD绘圆命令CIRCLE执行时,有如下提示Command: circleSpecify center point for circle or 3P/2P/Ttr (tan tan radius):Specify radius of circle or Diameter:首先可以输入点或关键字,然后可以输入点、数值或关键字。同样的输入效果可以用以下LISP程序达到:(INITGET 1 “3P 2P Ttr”)(SETQ p(GETPOINT “Specify center point for circle or 3P/2P/Ttr
50、(tan tan radius):”) (INITGET 7 “Diameter”)(SETQ r (GETDIST p “Specify radius of circle or Diameter:”)5. 字符串函数字符串函数专门用于处理字符串,包括字符串长度函数(STRLEN)、字符串链接函数(STRCAT)和子字符串函数(SUBSTR)。1) STRLEN函数的格式是(STRLEN s)。函数变量是字符串,STRLEN函数的功能是求出字符串s的长度,即组成字符串s的字符个数,函数返回整型数。如(STRLEN “abc”)返回3。2) STRCAT函数的格式是(STRCAT s1 s2 s
51、n)。它的功能是按变量顺序合并字符串s1 、s2 、 、sn,函数返回合并后的字符串。如(STRCAT “abc” “def”)返回字符串“abcdef”。3) SUBSTR函数的格式是(SUBSTR s m n),函数变量s为字符串,m和n为整型数。SUBSTR函数从字符串s中取出一部分作为函数的返回值。返回的子字符串从字符串s的第m个字符开始,其长度(字符数)为n 。若n不存在,则返回的子字符串从字符串s的第m个字符开始至字符串末尾。字符串排列顺序为从左到右,起首字符序号为1。如(SUBSTR “Good Morning” 6 3)返回字符串“Mor”,(SUBSTR “Good Morn
52、ing” 6)返回字符串“Morning”。6. 表处理函数表处理函数是LISP语言中最具特色的一类函数,用来生成表(LIST函数)或对表进行各种操作,如往表中添加元素(CONS函数)、从表中删除元素(CDR函数和MEMBER函数)、提取表中元素(函数CAR、CADR函数、CADDR函数和NTH函数)、检索表中元素(ASSOC函数)、替换表中元素(SUBST函数)、合并表(APPEND函数)、颠倒表中元素顺序(REVERSE函数)等等,其他的表处理函数还有LENGTH、APPLY、MAPCAR、FOREACH等等。其中的APPLY函数和MAPCAR函数又被称为泛函数,即在原来函数自变量位置上出
53、现了函数,这就大大增加了程序的适用性。1) LIST函数的格式是(LIST e1 e2 en)。它的功能是把e1、e2、en的计算值组成一个表。如(LIST 1 (+ 1 2) “A”)返回表(1 3 “A”)。2) CONS函数的格式是(CONS e L),它的功能是把e的计算值加入表L中。如(CONS (+ 1 2) (LIST 1 2))返回表(3 1 2)3) CDR函数的格式是(CDR L),它的功能是去除表L中为首的元素,函数返回剩余的表。如(CDR (LIST 1 2)返回表(2)。4) MEMBER函数的格式是(MENBER e L), 它的功能是提取表L中e及其后面元素组成的
54、表。如(MENBER 3 (LIST 1 2 3 4 5)返回表(3 4 5)。5) CAR函数的格式是(CAR L),它的功能是提取表L中第0个元素,函数返回该元素。如(CAR (LIST 1 2 3)返回1。在CAD中常被用来提取点中的X坐标值。6) CADR函数的格式是(CADR L),它的功能是提取表L中第1个元素,函数返回该元素。如(CADR (LIST 1 2 3)返回2。在CAD中常被用来提取点中的Y坐标值。7) CADDR函数的格式是(CADDR L),它的功能是提取表L中第2个元素,函数返回该元素。如(CADDR (LIST 1 2 3)返回3。在CAD中常被用来提取点中的Z
55、坐标值。8) NTH函数的格式是(NTH n L),它的功能是提取表L中第n个元素,函数返回该元素。表中元素的排列顺序是从左到右,为首元素序号为0。如(NTH 2 (LIST 1 2 3 4)返回3。9) ASSOC函数的格式是(ASSOC e L),它的功能是检索表L中包含以e值为起始元素的嵌套子表,函数返回检索到的子表。如(ASSOC 2 (1 2) (2 3) (3 4))返回以2为起始元素的嵌套子表(2 3)。10) SUBST函数的格式是(SUBST m n L),它的功能是用m取代表L中的n,函数返回更换后的表。如(SUBST “QQ” “B” (LIST “A” “B” “AB”
56、 “”)返回表(“A” “QQ” “AB” “QQ”)。11) APPEND函数的格式是(APPEND m n),它的功能是合并表m和n,函数返回合并后的表。如(APPEND (LIST 1 2) (LIST 3 4 )返回表(1 2 3 4)。12) REVERSE函数的格式是(REVERSE L),它的功能是颠倒表中元素的顺序,函数返回颠倒元素顺序后的表。如(REVERSE (LIST 1 2 3 4)返回表(4 3 2 1)。13) LENGTH函数的格式是(LENGTH L),它的功能是求出表的长度(即表中元素的个数),函数返回表示元素数目的整型数。如(LENGTH (LIST 1 2 3 4)返回整型数4。7. 类型转换函数类型转换函数提供了变量和数据类型的相互转换,包括整型数和实型数互相转换函数(FIX和FLOAT)以及涉及字符串的转换函数(RTOS和READ)。1) FIX函数用于将实型数转换成整型数,它的格式为(FIX n)。2) FLOAT函数用于将整型数转换成实型数,它的格式为(FLOAT n)。3) RTOS函数用于将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于2024年度市场预测的购销合同范本
- 2024年度云计算服务平台改造合同2篇
- 罐车租赁合同范文
- 开发保密协议
- 汽车过户完整协议书范本
- 救护车车辆托运协议模板
- 二零二四年度版权许可合同:音乐作品的授权使用2篇
- 1-4-Dihydro-1-2-dimethyl-4-oxo-3-quinolinecarboxylic-acid-生命科学试剂-MCE
- 2024年度火车站保洁服务合同全新版3篇
- 培训机构学生安全协议书
- 跑团年会龙腾运动同乐跑团年会
- 网球运动损伤与防护课件
- 磁现象与磁场课件-高二上学期物理粤教版(2019)必修第三册
- 工程机械售后服务管理细则
- 紧急抢救非同型输注管理制度
- 企业内控体系建设专题培训课件
- TSG-R0005-2022《移动式压力容器安全技术监察规程》(2022版)
- 国有企业管理制度汇编
- 线面平行判定定理
- 运行四值其他制度集控室管理制度
- 高中地理选择性必修1第四章 水的运动 真题演练卷(人教版2019) (原卷版)
评论
0/150
提交评论