(数控模具设计)模具CADCAM常用软件精编

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(数控模具设计)模具CADCAM常用软件
模具CAD/CAM常用软件
第一节各种流行的CAD/CAM软件
AutoCAD是应用最广泛的CAD软件,它优良的二次开发工具使其能够活跃在各类CAD专业领域。

CAXA是国产CAD/CAM软件,其初级产品CAXA电子图板具有较广泛的应用,可帮助设计人员进行零件图、装配图、工艺图表、平面包装的设计。

PICAD是另壹种国产CAD软件产品,是参数化、集成化的计算机辅助设计系统,也是二维CAD支撑平台及交互式工程绘图系统。

开目CAD是基于微机平台的CAD和图纸管理软件。

开目CAD 支持多种几何约束种类及多视图同时驱动,具有局部参数化的功能,能够处理设计中的过约束和欠约束的情况。

开目CAD实现了CAD、CAPP、CAM的集成。

高华CAD系列产品包括计算机辅助绘图支撑系统GHDrafting、机械设计及绘图系统GHMDS、工艺设计系统GHCAPP、三维几何造型系统GHGEMS、产品数据管理系统GHPDMS及自动数控编程系
统GHCAM。

大恒通用机械CAD系统最早开发于1991年,是针对机械制造及设计行业的通用机械CAD系统。

Solidedge是三维CAD系统,它向用户提供了从三维零件建模,装配设计到最终的二维图制作的壹整套完善的CAD工具。

SolidWorks是基于Windows的机械设计软件,是以Windows 为平台,以SolidWorks为核心的各种应用的集成,包括结构分析、运动分析、工程数据管理和数控加工等。

金银花(Lonicera)系统主要应用于机械产品设计和制造中,它能够实现设计/制造壹体化和自动化。

GS-CAD是壹个基于微机、中文Windows95/NT平台的三维CAD系统。

MDT是AutodeskX公司在PC平台上开发的三维机械CAD系统。

它以三维设计为基础,集设计、分析、制造以及文档管理等多种功能为壹体;为用户提供了从设计到制造壹体化的解决方案。

Pro/Engineer简称Pro/E,是壹个面向机械工程的CAD系统。

PTCX公司提出的单壹数据库、参数化、基于特征、全相关的概念改变了机械CAD/CAE/CAM的传统观念。

UG-Ⅱ是壹个集CAD、CAE和CAM于壹体的机械工程辅助系统,
UG-Ⅱ为用户提供了壹个全面的产品建模系统。

SurfCAM是基于Windows的能够自动生成零件刀具轨迹,以及进行零件加工的NC代码,具有强大的通用后置处理模块的辅助制造软件。

Mastercam为PC级CAM软件。

Mastercam包括了铣削加工(milling),车削加工(turning),线切割加工(wireEDM)等主要模块,适用于机械设计和制造的各个领域。

Cimatron系统是以色列的CAD/CAM/PDM产品,该系统提供了比较灵活的用户界面,优良的三维造型、工程绘图,全面的数控加工,各种通用、专用数据接口以及集成化的产品数据管理。

I-DEAS是全世界制造业用户较广泛应用的大型CAD/CAE/CAM 软件。

CATIA系统是在起源于航空工业的CADAM系统基础上扩充开发的CAD/CAM/CAE/PDM应用系统。

Euclid软件是为英法联合研制协和号超音速客机而开发的CAD软件。

DUCT软件是三维复杂形体造型设计和制造CAD/CAM软件。

第二节通用CAD软件——AutoCAD 壹、AutoCAD的二维绘图命令
二维绘图命令是AutoCAD的基础部分。

无论二维图形如何复杂,都是由点、线、圆、圆弧等最基本的图形要素组成。

1.点的输入
在各项CAD操作中,点的输入是最基本的操作,AutoCAD共有四种点的输入方式。

(1)通过键盘输入点通过键盘输入点的坐标值是壹种精确的点输入方式,点的坐标值输入有三种坐标方式:绝对直角坐标(输入x,y)、相对直角坐标(输入@x,y)和相对极坐标(输入@r<a),可根据需要任意选取。

(2)通过光标输入设备输入点通过光标输入设备输入点的优点是方便和快捷。

壹般情况下,用光标输入设备输入点的坐标值是不精确的,通过AutoCAD的Snap功能,能够使输入点达到壹定的精度。

(3)利用目标捕捉功能输入点这是利用光标输入设备精确输入点的壹种方式,根据AutoCAD的Osnap功能,它能够精确捕捉到图形的特定点位置,例如线段的端点、中点,圆和圆弧的圆心及象限点,切点和垂足等等。

(4)利用LISP函数输入点利用LISP语言中的函数功能也能够输入点,这是自动绘制图形的基础,在AutoCAD二次开发中经常使用这种方式完成点的输入。

2.直线的绘制
绘制直线的命令是LINE。

壹般只要输入直线的俩个端点,即可生成直线。

绘制好圆弧后,在LINE命令后直接键入回车,然后输入直线长度,能够在圆弧终点处绘制圆弧的切线。

3.圆的绘制
绘制圆的命令是CIRCLE。

圆的绘制参数是圆心和半径(或直径)。

也能够根据需要绘制和其他图线相切的圆。

4.圆弧的绘制
绘制圆弧的命令是ARC。

和直线和圆相比,圆弧的绘制比较复杂,考虑到圆弧具有顺时针和逆时针俩种方向,AutoCAD共安排了7种绘制圆弧的方法,其绘制参数分别为圆弧的①起点、中点、终点;②起点、圆心、终点;③起点、圆心、角度;④起点、圆心、弧长;⑤起点、终点、角度;⑥起点、终点、半径;⑦起点、终点、起始方向。

绘制和刚绘制的直线或圆弧相切的圆弧时,能够直接键入回车,然后
输入圆弧终点,此时圆弧的起点即为前绘线段的终点,圆弧的起始方向即为前绘线段的终止方向。

5.多段连线
多段连线(POLYLINE)是由直线和圆弧首尾相连组合成的复合线段,绘制多段连线采用PLINE命令,类同于绘制直线和圆弧。

实践中常用PEDIT命令编辑直线和圆弧来得到多段连线。

二、图形编辑
AutoCAD提供的图形编辑方法能够有效地修改图形,且能够显著提高绘图效率。

常用的图形编辑命令有删除(ERASE)、复制(COPY)、镜面对称复制(MIRROR)、阵列复制(ARRAY)、等距偏移复制(OFFSET)、移动(MOVE)、转动(ROTATE)、缩放(SCALE)、修剪(TRIM)、延伸(EXTEND)、倒角(CHAMFER)、倒圆角(FILLET)、分解(EXPLODE)和多段连线编辑(PEDIT)。

熟练掌握这些图形编辑命令能够有效地提高AutoCAD应用水平。

三、其他功能
AutoCAD的其他功能仍有图形显示、文字、剖面线、尺寸标注、图层管理、图块定义及调用、动画、三维图形、二次开发工具等。

第三节AutoCAD的二次开发工具
一、AutoCAD定制菜单
表3-1菜单文件类型
用文本编辑器打开ACAD.MNU文件观察菜单文件的结构,能够见到其内容包含如表3-2所示的几个区域。

其中***POP1至***POP11定义了下拉菜单。

菜单文件中包含的壹些特殊字符的说明见表3-3。

表3-2ACAD.MNU文件的菜单区域及其功能
表3-3菜单字符说明
用文本编辑器打开ACAD.MNU文件,在pop11菜单后面插入图3-1所示的pop12菜单ASCII代码,将其保存在DCAD.MNU文件中,用AutoCAD的MENU命令加载DCAD.MNU后,能够见到下拉菜单在Help菜单项的后面增加了名为DCAD的壹列新菜单,其效果如图3-2所示。

方括号内的字符串构成了下拉菜单的显示内容,DCAD下拉菜单列中包含了“工艺性分析”、“排样”、“CAM”、“模板”和“模具标准件”5个子菜单。

点取“CAM”子菜单中“3B指令”项,其对应的菜单项内容为“[3B指令]^C^C(load"dcad-ww")w3b”。

其中“[3B指令]”规定了菜单项显示文字为“3B指令”;“^C^C”相当于先从键盘输入俩次CTRL-C 以终止任何AutoCAD可能正在执行的命令,以便无障碍地执行后面的指令;“(load"dcad-ww")”的作用是加载LISP程序文件“dcad-ww.lsp”;“w3b”表示执行AutoCAD二次开发新建的命令“w3b”——从AutoCAD图形产生数控线切割机床3B加工指令程序。

菜单项中的空格所起的作用相当于输入回车。

***pop12
[DCAD]
[输入清单]^C^C(load"dcad-i-2000")(if(nullc:fdcad)(load"DCAD"))input [->工艺性分析]
[小孔]^C^C(load"dcad-b-2000-k")(load"DCAD")(load"Dcad-b")D CADBK
[孔距]^C^C(load"dcad-b-2000-jb")(load"DCAD")(load"Dcad-b")D CADBJB
[凸臂]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")D
CADBTZ
[窄槽]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")D CADBTZ
[圆弧]^C^C(load"dcad-b-2000-y")(load"DCAD")(load"Dcad-b")D CADBY
[孔间壁厚]^C^C(load"dcad-b-2000-b")(load"DCAD")(load"Dcad-b")D CADBB
[<-复合模]^C^C(load"dcad-b-2000-f")(load"DCAD")(load"Dcad-b"))D CADBF
[->排样]
[定搭边值]^C^C(load"dcad-l-2000-d")(load"DCAD")(load"dcad-l-2000 ")dbz
[单排排样]^C^C(load"dcad-l-2000-s")(load"DCAD")(load"dcad-l-2000 ")lay1
[<-多排排样]^C^C(load"dcad-l-2000-v")(load"DCAD")(load"dcad-l-2000 "))LAYN
[->CAM]
[3B指令]^C^C(load"dcad-ww")w3b
[穿孔代码]^C^C(load"dcad-ww")punch
[代码校验]^C^C(load"dcad-ww")check
[<-穿孔码转换3B指令]^C^C(load"dcad-ww")p2b
[设计]^C^CDESIGN
[->模板]
[上模座]^C^C(load"dcad-mb")(mb)smz
[垫板]^C^C(load"dcad-mb")(mb)db
[固定板]^C^C(load"dcad-mb")(mb)gdb
[卸料板]^C^C(load"dcad-mb")(mb)xlb
[凹模]^C^C(load"dcad-mb")(mb)am
[下模座]^C^C(load"dcad-mb")(mb)xmz
[下固定板]^C^C(load"dcad-pt")(mb)xgdb
[下垫板]^C^C(load"dcad-pt")(mb)xdb
[空心垫板]^C^C(load"dcad-mb")(mb)kxdb
[--]
[<-图框]^C^C(load"dcad-mb")tukuang
[->模具标准件]
[模柄](if(nullc:mb)(load"dcad-pt"))mb
[橡皮](if(nullC:XP)(load"dcad-pt"))XP
[导柱](IF(NULLC:DZ)(LOAD"DCAD-PT"))DZ
[导套](IF(NULLC:DT)(LOAD"DCAD-PT"))DT
[导料板](IF(NULLC:DT)(LOAD"DCAD-PT"))DLB
[承料板](IF(NULLC:DT)(LOAD"DCAD-PT"))CLB
[卸料螺钉](if(nullc:XLLD)(load"dcad-pt"))XLLD
[固定导销](IF(NULLC:DT)(LOAD"DCAD-PT"))GDDLX
[<-圆凸模](IF(NULLC:DT)(LOAD"DCAD-PT"))YTM
[装配示意图]^C^C(load"dcad-z")zpt
图3-1DCAD子菜单ASCII代码
二、LISP语言
AutoCAD内嵌的俩种LISP语言(AutoLISP和VisualLISP)是和AutoCAD结合最为完美的程序语言。

AutoLISP是AutoCAD选用的第壹个强有力的开发工具,从1985年问世的AutoCADV2.18版本开始,壹直沿用至今。

AutoLISP是解释型语言,它的欠缺之处是运行效率较低,源程序缺乏保密性。

针对AutoLISP的弱点,AutoCAD在其2000版本中又推出了具有高运行效率的编译型LISP语言——VisualLISP。

VisualLISP在AutoLISP的基础上增加了源程序编辑环境、编译器以及壹些增强函数。

实际上,过去编写的AutoLISP程序都能够在VisualLISP中编译和运行,即VisualLISP能够完全兼容AutoLISP。

(壹)LISP语言简介
LISP是英语LIStProcessing的缩写,意思是壹种编制计算机程序的表处理语言。

LISP语言1960年起源于美国麻省理工学院(MIT),是壹种著名的人工智能计算机语言。

和BASIC等其他计算机语言壹样,LISP语言也有许多版本,当下使用最多的是COMMONLISP。

AutoCAD软件中镶嵌的AutoLISP和COMMONLISP很接近,它增加了调用AutoCAD命令的功能和壹些几何函数,且削减了COMMONLISP中壹些不常用的函数。

作为壹种高级语言,LISP能够完成其他许多高级语言(如FORTRAN、BASIC、PASCAL、C等)能够完成的工作,诸如计算、逻辑判断、循环运算等等。

LISP语言具有壹些独特的优点,使它特别适用于人工智能和CAD领域,这也是AutoCAD在众多计算机语言中首先选择其作为开发工具的主要理由。

表(List)在LISP语言中具有极其重要的意义。

表是LISP语言的重要成份,它由若干个元素(Element)和壹对圆括号组成。

元素则包括表和原子(Atom)俩种类型。

原子指常数(Constant)或者符号变量(Variable)。

表中的元素能够是表,因此表可具有嵌套结构。

在LISP语言中,表既能够构成数据,也能够组成程序。

如(0.51.2)和(15.33)都是用表的形式表示的数据。

前者能够表示壹个二维点,x坐标值为0.5,y坐标值为1.2。

后者能够表示壹
个三维点,x坐标值为1,y坐标值为5.3,z坐标值为3。

(1258.2“A”9)能够表示壹个六维向量,和其他计算机语言中的壹维数组相当,可是表中元素的数据类型能够各不相同,而同壹数组中各个数据的类型都必须相同。

利用表的嵌套结构,容易获得类似的多维数组,可是其中各维的长度能够不相等,且且表中元素的数据类型能够各不相同,所以在表示数据时,表比其他计算机语言中的多维数组更显优越性。

AutoCAD 中的图形数据(包括类型、图层、颜色、线型、特征、坐标值等)都可采用表的形式表达。

如AutoCAD中表达壹根直线所用的表为((-1.<Entityname:24082f8>)(0."LINE")(330.<Entityname:2406cf 0>)(5."2F7")(100."AcDbEntity")(67.0)(410."Model")(8."0")(100." AcDbLine")(10187.701-45.84750.0)(115.0-45.84750.0)(2100.00.
01.0));表达壹个圆所用的表为((-1.<Entityname:7ef50e80>)(0."CIRCLE")(330.<Entityname:7ef 50cf8>)(5."88")(100."AcDbEntity")(67.0)(410."Model")(8."0")(10 0."AcDbCircle")(100.00.00.0)(40.10.0)(2100.00.01.0))
LISP语言的程序结构非常简单,它也是由表组成。

LISP程序采用前缀形式:
(元素0元素1元素2…)
构成LISP程序时,表中元素0必为函数名称,其后的各个元素为该函数(元素0)的变量。

LISP程序对字母的大小写是不加区分的。

例如
(+12)
是壹个LISP程序的例子,其中+为函数名,1和2为+函数的变量。

LISP语言是壹种函数型计算机语言,LISP语言拥有的功能是通过其函数表现出来的。

(二)LISP函数
LISP函数具有返回值和特定的功能。

如上例中,函数返回值为3,
函数+的特定功能是求和。

各种类型的LISP函数用来完成LISP语言所有的功能,下面将壹些最基本的LISP函数进行分类,以便大家能够对LISP语言及其在CAD中的应用有所了解。

1.代数运算函数
代数运算函数用于完成代数运算,包括赋值函数(SETQ),四则运算函数(+、-、*、/),三角函数(SIN、COS、ATAN)以及其他代数函数(ABS、EXP、EXPT、SQRT)。

代数运算函数的使用方法很容易掌握,唯壹要注意的是LISP程序具有前缀结构的特点,各种函数运算都必须将函数名作为LISP表达式中最前面的元素。

1)SETQ函数的格式为(SETQv1e1[v2e2…v n e n])。

其功能是将e i 的计算值赋予变量v i,函数返回值为e n的计算值。

(注:方括号部分是可选项,以下同。


例如,(SETQx1y(+12))将常数1的计算值1赋予变量x,LISP 表达式(+12)的计算值3赋予变量y,函数返回值为3。

2)+函数的格式为(+n1n2[n3…n m])。

其功能是对函数变量求和,函数返回值为变量之和:n1+n2+n3+…+n m。

3)-函数的格式为(-n1[n2n3…n m])。

其功能是对函数变量求差。

当m=1,函数只有壹个变量n1时,函数返回值为0-n1,即-n1;当m≥2时,函数返回值为n1-(n2+n3+…+n m)。

4)*函数的格式为(*n1n2[n3…n m])。

其功能是对函数变量求积,函数返回值为变量的乘积:n1·n2·n3·…·n m。

5)/函数的格式为(/n1n2[n3…n m])。

其功能是求函数变量的商,函数返回值为
n1/(n2·n3·…·n m)。

当/函数变量均为整型数时,函数返回值也为整型数;当函数变量中至少有壹个为实型数时,函数返回值为实型数。

例如,(/32)的返回值为1,而(/32.0)的返回值则为1.5。

6)SIN函数的格式为(SINn)。

其功能是求函数变量n的正弦值,函数返回n的正弦值。

变量n的单位为弧度。

例如,(SIN(/PI2))的
返回值为1.0,式中PI为LISP符号变量,表示圆周率π值。

7)COS函数的格式为(COSn)。

其功能是求函数变量n的余弦值,函数返回n的余弦值。

变量n的单位为弧度。

用法和SIN函数相同。

8)ATAN函数的格式为(ATANn1[n2])。

其功能是求反正切值arctann1或arctan(n1/n2)。

当只有壹个函数变量时,函数返回值的范围为(-π/2,π/2),当存在2个函数变量时,函数返回值的范围为(-π,π]。

函数返回值的角度单位为弧度。

例如:
(ATAN0)返回值0.0
(ATAN1)返回值0.785
(ATAN11)返回值0.785
(ATAN1–1)返回值2.356
(ATAN–11)返回值-0.785
(ATAN–1–1)返回值-2.356
(ATAN10)返回值1.5708
(ATAN–10)返回值-1.5708
(ATAN0–1)返回值-3.14
(ATAN01)返回值3.14
9)ABS函数的格式为(ABSn)。

其功能是求绝对值,函数返回n 的绝对值。

10)EXP函数的格式为(EXPn)。

其功能是求e的指数,函数返回
e n。

11)EXPT函数的格式为(ESPTmn)。

其功能是求m的指数,函数返回m n。

12)SQRT函数的格式为(SQRTn)。

其功能是求平方根,函数返回n的平方根。

2.自定义函数
LISP语言提供了许多基本函数,称为内部函数或系统函数(如前述函数),利用这些函数能够直接编写LISP程序,例如tanα的LISP 程序可编写为(/(SINx)(COSx))。

对于复杂的程序,直接利用基
本函数编写程序且不是壹个好方法,编写LISP程序更多是利用自定义函数来编写程序,反之,大多数LISP程序也都编写成为自定义函数的形式。

自定义函数和其他语言中的子程序或函数最接近。

自定义函数是用户自己定义的函数,又被称为用户函数或外部函数。

自定义函数的使用和系统函数的使用方法是壹致的,用户在使用方面不会感觉到俩者的差异。

自定义函数的格式为
(DEFUNname([A1A2…A L][/V1V2…V M])e1e2…e n) 上表中第0个元素DEFUN是自定义函数的函数名,第1个元素name是符号变量,为自定义函数所定义的用户函数的名称。

用户函数名称后是用户函数的变量表,变量表中的元素都是所定义的用户函数的局部变量,可分成以“/”分隔的俩个部分,方括号表示可选项,表中“/”前的可选项[A1A2…A L]为新设立的用户函数name的函数变量,表中另壹可选项[/V1V2…V M]中的元素不是用户函数的函数变量,它们仅仅是用户函数name的局部变量。

所谓局部变量是指仅仅在定义函数内部存在且起作用的变量,它对定义函数以外的程序无任何干扰。

变量表能够是空表(即表中不包含任何元素)。

变量表后面是函数定义体,决定了函数name的功能和返回值。

函数name的返回值是e n的计算结果。

例如AutoLISP没有提供正切函数,用户能够利用自定义函数自行定义正切函数,定义正切函数的程序如下
(DEFUNtan(x/y)
(SETQy(COSx))
(IF(/=y0)(/(SINx)y))
)
之上程序中tan是用户自行定义的正切函数名。

x和y之间的符号“/”分隔开了局部变量中的自变量,“/”前的变量x是用户函数tan 的自变量,也是该函数的局部变量,而“/”后的变量y是tan函数的局部变量,但不是tan函数的自变量。

程序中的DEFUN、SETQ、
IF、/=、/、SIN和COS都是AutoLISP的基本函数。

调用正切函数(tan0),返仍的正切函数值为0.0。

能够见到,用户自定义的正切函数的使用方法和LISP系统函数SIN或COS的用法相同。

用户函数经壹次定义后可无限次使用。

用户在使用LISP语言的过程中,用自定义函数的方法能够逐渐积累自己的函数,从而使编程越来越方便。

3.分支结构
分支结构在LISP语言中有二分支结构和多分支结构俩种,和此相关的函数有:关系运算函数(=、/=、>、>=、<、<=、EQUAL),逻辑运算函数(AND、OR、NOT),二分支函数(IF)和归且(PROGN)函数以及多分支函数(COND)。

1)关系运算函数判断函数变量相互间是否符合函数所定义的相等或不等关系。

=函数的格式为(=e1e2…e n)。

当函数变量e1、e2、…、e n全部相等时,函数返回T,否则返回NIL。

/=、>、>=、<和<=函数的用法也是相同的,其功能如同其函数名所示。

EQUAL函数的格式为(EQUALe1e2[e3])。

EQUAL用来比较俩个实型数或表是否相等,相等时函数返回T,否则返回NIL。

比较俩个实型数e1和e2时,取壹个很小的正数e3,其判断准则是当|e1-e2|≤e3时函数返回T,否则返回NIL。

2)AND函数的格式为(ANDe1e2…e n)。

当函数变量e1、e2、…、
e n中全部有值时,函数返回T,否则返回NIL。

3)OR函数的格式为(ORe1e2…e n)。

当函数变量e1、e2、…、e n 中至少有壹个有值时,函数返回T,否则返回NIL。

4)NOT格式为(NOT e)。

当函数变量e有值时,函数返回NIL,否则返回T。

5)IF函数的格式是(IF<判别式>e1[e2]),它的功能是实现程序的二分支结构。

当判别式的结果为非NIL时,函数执行e1且返回e1的计算值,否则函数执行e2且返回e2的计算值,若可选项e2不存在,
则函数结束运行,返回NIL。

例如
(SETQa(GETREAL“A=”)c(GETREAL“C=”))
(SETQx(IF(/=a0)(/ca)))
(SETQy(IF(>a0)(+ca)(-ca)))
6)PROGN函数的格式为(PROGNe1e2…e n),它的功能是将若干个LISP表达式归且为壹个LISP表达式,常用于IF函数内,以便使IF 函数能够在e1和e2的格式规定中作更多的事情。

7)COND函数的格式为
(COND(〈测试式1〉e11e12 (1i)
(〈测试式2〉e21e22…e2j)
……
(〈测试式m〉e m1e m2…e mk)

函数功能是实现多分支结构。

COND函数的变量都为表,变量表中的第壹个元素是测试式,其余元素是当测试结果为非NIL时顺序执行的LISP表达式。

COND函数依次对测试式进行测试,当测试结果为非NIL时,顺序执行其后的LISP表达式。

函数返回值为最后执行的表达式计算结果。

变量表中能够只有壹个元素,即能够只有测试式,此时的函数返回值为测试结果。

例3-1编写下列分段函数的LISP程序。

解1:能够利用COND函数处理该分段函数,编写程序如下
A)编写程序
(DEFUNL3-1-1(x)
(COND((AND(>x–10)(<=x–6))–2)
((AND(>x-6)(<=x–2))–1)
((AND(>x–2)(<=x2))0)
((AND(>x2)(<=x6))1)
(T2)
)
)
B)调用程序(SETQn(L3-1-11))后函数L3-1-1返回0,且将该值赋予变量n。

解2:利用COND函数顺序测试的特点,能够编写更简化的程序如下
A)编写程序
(DEFUNL3-1-2(x)
(COND((<=x–10)2)
(<=x–6)–2)
((<=x–2)–1)
((<=x2)0)
((<=x6)1)
(T2)
))
B)调用程序(SETQn(L3-1-21))后函数L3-1-2返回0,且将该值赋予变量n。

4.交互式输入函数
交互式输入函数提供控制台输入,包括键盘输入和光标设备输入。

交互式输入函数又称为GET族输入函数,该族函数均以字符GET开头。

交互式输入函数包括整型数输入函数(GETINT)、实型数输入函数(GETREAL)、字符串输入函数(GETSTRING)、点输入函数(GETPOINT)、角度输入函数(GETANGLE)、距离输入函数(GETDIST)、关键字输入函数(GETKWORD)和初始化输入函数(INITGET)。

交互式输入函数为专业软件的二次开发提供了和
AutoCAD相同的交互界面,简化了软件的开发过程和推广工作。

1)GETINT函数的格式为(GETINT[提示信息])。

其功能是输入整型数,函数返回值为从键盘输入的整型数。

提示信息为字符串,用于输入时给出提示。

2)GETREAL函数的格式为(GETREAL[提示信息])。

其功能是输入实型数,函数返回值为从键盘输入的实型数。

3)GETSTRING函数的格式为(GETSTRING[开关变量][提示信息])。

其功能是输入字符串,函数返回值为从键盘输入的字符串。

当不选用开关变量或开关变量无值时,输入字符串能够用空格或RETURN结束,输入字符串中无法包括空格。

开关变量存在且有值时,则输入字符串中能够包含空格,但必须用RETURN结束字符串。

AuotLISP通过这种方式,使字符串输入和AutoCAD在方式上保持壹致。

4)GETPOINT函数的格式为(GETPOINT[pt][提示信息])。

其功能是通过键盘或光标设备输入点。

可选项pt是壹个表示点的表,当pt存在时,移动光标会出现从pt到光标的连线(皮筋线),此时pt 也作为相对坐标系的原点对采用相对坐标输入点产生作用。

当pt不存在时,相对坐标系的原点由AutoCAD系统变量LASTPOINT决定。

5)GETANGLE函数的格式为(GETANGLE[pt][提示信息])。

其功能是通过键盘或光标设备输入角度。

函数返回值为表示角度的实型数,单位为弧度。

Pt的作用同前。

AuotLISP通过这种方式,使角度输入和AutoCAD在方式上保持壹致。

6)GETDIST函数的格式为(GETDIST[pt][提示信息])。

其功能是通过键盘或光标设备输入长度。

函数返回值为表示距离的实型数。

Pt 的作用同前。

AuotLISP通过这种方式,使长度输入和AutoCAD在方式上保持壹致。

7)GETKWORD函数的格式为(GETKWORD[提示信息])。

其功能是通过键盘输入关键字。

函数返回值定义为关键字的字符串。

关键字由下面的INITGET函数定义。

8)INITGET函数的格式为(INITGET[bits][关键字])。

其功能是控制GET×××函数的输入。

bits为二进制概念的控制位,能够最大限度的减少输入错误。

表3-4中,十进制数1(bit0)防止空输入(ENTER);2(bit1)防止0输入;4(bit2)防止负数输入;8(bit3)允许用户输入LIMITS规定界限以外的点;16(bit4)(尚未使用);32(bit5)使用虚线作皮筋线;64(bit6)阻止Z坐标输入;128(bit7)允许任意输入。

关键字除了用于GETKWORD函数,仍能够用于其他GET×××函数,扩大它们的使用范围。

如关键字用于GETINT函数,能够使该函数根据输入内容返回整型数或关键字。

而没有关键字时,GETINT函数只能够返回整型数。

关键字是包含在双引号内的字符和数字,关键字之间用空格分隔,例如“AbcDef”定义了Abc和Def俩个关键字。

关键字中的大写字母在输入时能够作为关键字的缩写。

表3-4控制位和输入函数的关系
INITGET函数只对其后的GET×××函数起壹次作用。

对于程序段
(INITGET7“AbcDef”)
(SETQA(GETINT“A=”))
运行时,输入空回车、0或负数,系统都会要求重新输入,只有在输入正数时程序才会将整型数赋予变量A。

当输入a或abc时,程序会将关键字“Abc”作为字符串赋予变量A。

而输入d或def时,程序则将“Def”赋予变量A。

输入其他字母,程序也会要求重新输入,直至符合输入要求。

例如,在AutoCAD绘圆命令CIRCLE执行时,有如下提示
Command:circle
Specifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:
Specifyradiusofcircleor[Diameter]:
首先能够输入点或关键字,然后能够输入点、数值或关键字。

同样的输入效果能够用以下LISP程序达到:
(INITGET1“3P2PTtr”)
(SETQp(GETPOINT “Specifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:”))(INITGET7“Diameter”)
(SETQr(GETDISTp“Specifyradiusofcircleor[Diameter]:”))
5.字符串函数
字符串函数专门用于处理字符串,包括字符串长度函数(STRLEN)、字符串链接函数(STRCAT)和子字符串函数(SUBSTR)。

1)STRLEN函数的格式是(STRLENs)。

函数变量是字符串,STRLEN函数的功能是求出字符串s的长度,即组成字符串s的字符
个数,函数返回整型数。

如(STRLEN“abc”)返回3。

2)STRCAT函数的格式是(STRCATs1s2…s n)。

它的功能是按变量顺序合且字符串s1、s2、…、s n,函数返回合且后的字符串。

如(STRCAT “abc”“def”)返回字符串“abcdef”。

3)SUBSTR函数的格式是(SUBSTRsm[n]),函数变量s为字符串,m和n为整型数。

SUBSTR函数从字符串s中取出壹部分作为函数的返回值。

返回的子字符串从字符串s的第m个字符开始,其长度(字符数)为n。

若n不存在,则返回的子字符串从字符串s的第m个字符开始至字符串末尾。

字符串排列顺序为从左到右,起首字符序号为1。

如(SUBSTR“GoodMorning”63)返回字符串“Mor”,(SUBSTR“GoodMorning”6)返回字符串“Morning”。

6.表处理函数
表处理函数是LISP语言中最具特色的壹类函数,用来生成表(LIST 函数)或对表进行各种操作,如往表中添加元素(CONS函数)、从表中删除元素(CDR函数和MEMBER函数)、提取表中元素(函数CAR、CADR函数、CADDR函数和NTH函数)、检索表中元素(ASSOC 函数)、替换表中元素(SUBST函数)、合且表(APPEND函数)、颠倒表中元素顺序(REVERSE函数)等等,其他的表处理函数仍有LENGTH、APPLY、MAPCAR、FOREACH等等。

其中的APPLY函数和MAPCAR函数又被称为泛函数,即在原来函数自变量位置上出现了函数,这就大大增加了程序的适用性。

1)LIST函数的格式是(LISTe1e2…e n)。

它的功能是把e1、e2、…、
e n的计算值组成壹个表。

如(LIST1(+12)“A”)返回表(13“A”)。

2)CONS函数的格式是(CONSeL),它的功能是把e的计算值加入表L中。


(CONS(+12)(LIST12))返回表(312)
3)CDR函数的格式是(CDRL),它的功能是去除表L中为首的元素,函数返回剩余的表。


(CDR(LIST12))返回表(2)。

相关文档
最新文档