




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE85/NUMPAGES86模具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是Autodesk公司在PC平台上开发的三维机械CAD系统。它以三维设计为基础,集设计、分析、制造以及文档治理等多种功能为一体;为用户提供了从设计到制造一体化的解决方案。Pro/Engineer简称Pro/E,是一个面向机械工程的CAD系统。PTC公司提出的单一数据库、参数化、基于特征、全相关的概念改变了机械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的基础部分。不管二维图形如何复杂,差不多上由点、线、圆、圆弧等最差不多的图形要素组成。点的输入在各项CAD操作中,点的输入是最差不多的操作,AutoCAD共有四种点的输入方式。通过键盘输入点通过键盘输入点的坐标值是一种精确的点输入方式,点的坐标值输入有三种坐标方式:绝对直角坐标(输入x,y)、相对直角坐标(输入@x,y)和相对极坐标(输入@r<a),可依照需要任意选取。通过光标输入设备输入点通过光标输入设备输入点的优点是方便和快捷。一般情况下,用光标输入设备输入点的坐标值是不精确的,通过AutoCAD的Snap功能,能够使输入点达到一定的精度。利用目标捕捉功能输入点这是利用光标输入设备精确输入点的一种方式,依照AutoCAD的Osnap功能,它能够精确捕捉到图形的特定点位置,例如线段的端点、中点,圆和圆弧的圆心及象限点,切点和垂足等等。利用LISP函数输入点利用LISP语言中的函数功能也能够输入点,这是自动绘制图形的基础,在AutoCAD二次开发中经常使用这种方式完成点的输入。直线的绘制绘制直线的命令是LINE。一般只要输入直线的两个端点,即可生成直线。绘制好圆弧后,在LINE命令后直接键入回车,然后输入直线长度,能够在圆弧终点处绘制圆弧的切线。圆的绘制绘制圆的命令是CIRCLE。圆的绘制参数是圆心和半径(或直径)。也能够依照需要绘制与其他图线相切的圆。圆弧的绘制绘制圆弧的命令是ARC。与直线和圆相比,圆弧的绘制比较复杂,考虑到圆弧具有顺时针和逆时针两种方向,AutoCAD共安排了7种绘制圆弧的方法,其绘制参数分不为圆弧的①起点、中点、终点;②起点、圆心、终点;③起点、圆心、角度;④起点、圆心、弧长;⑤起点、终点、角度;⑥起点、终点、半径;⑦起点、终点、起始方向。绘制与刚绘制的直线或圆弧相切的圆弧时,能够直接键入回车,然后输入圆弧终点,现在圆弧的起点即为前绘线段的终点,圆弧的起始方向即为前绘线段的终止方向。多段连线多段连线(POLYLINE)是由直线和圆弧首尾相连组合成的复合线段,绘制多段连线采纳PLINE命令,类同于绘制直线和圆弧。实践中常用PEDIT命令编辑直线和圆弧来得到多段连线。二、图形编辑AutoCAD提供的图形编辑方法能够有效地修改图形,并能够显著提高绘图效率。常用的图形编辑命令有删除(ERASE)、复制(COPY)、镜面对称复制(MIRROR)、阵列复制(ARRAY)、等距偏移复制(OFFSET)、移动(MOVE)、转动(ROTATE)、缩放(SCALE)、修剪(TRIM)、延伸(EXTEND)、倒角(CHAMFER)、倒圆角(FILLET)、分解(EXPLODE)和多段连线编辑(PEDIT)。熟练掌握这些图形编辑命令能够有效地提高AutoCAD应用水平。三、其他功能AutoCAD的其他功能还有图形显示、文字、剖面线、尺寸标注、图层治理、图块定义及调用、动画、三维图形、二次开发工具等。AutoCAD的二次开发工具AutoCAD定制菜单表3-1菜单文件类型菜单文件类型类型讲明.MNU原始ASCII菜单文件,即用户通常编辑或创建的文件。.MNC已编译的菜单文件;一种二进制文件,包含用于定义菜单或其他界面元素的功能及外观的命令字符串和菜单语法。首次加载MNU文件时,AutoCAD将编译此文件。.MNR菜单资源文件;一种二进制文件,包含由菜单或其他界面元素使用的位图。AutoCAD每次编译MNC文件时,均生成菜单资源文件。.MNS源菜单文件;一种与MNU文件相同的ASCII文件,然而不包含注释或专门格式。每次菜单文件的内容被更改时,AutoCAD将修改源菜单文件。.MNT菜单资源文件。仅在MNR文件无效(例如,只读)时生成该文件。.MNL菜单LISP文件;包含菜单文件使用的AutoLISP表达式。当加载与菜单LISP文件具有相同文件名的菜单文件时,AutoCAD会将菜单LISP文件加载至内存。用文本编辑器打开ACAD.MNU文件观看菜单文件的结构,能够看到其内容包含如表3-2所示的几个区域。其中***POP1至***POP11定义了下拉菜单。菜单文件中包含的一些专门字符的讲明见表3-3。表3-2ACAD.MNU文件的菜单区域及其功能主菜单名称区数N功能用途***MENUGROUP菜单组***BUTTONSn1~4定点设备按钮菜单***AUXn1~4系统定点设备菜单***POPn0~9990对象捕捉快捷菜单1~16差不多型下拉菜单17~499将menuload加入下拉菜单中500~999快捷菜单区域***TOOLBARS工具栏定义***IMAGE图像菜单***SCREEN屏幕菜单***TABLETn1~4数字化仪菜单***HELPSTRINGS辅助功能讲明区(显示于状态区)***ACCELERATORS加速键定义注意事项假如没有定义POP1~POP16,AutoCAD会自动插入2个预设的下拉菜单(File和Edit)表3-3菜单字符讲明字符讲明**子菜单--菜单项分隔符->引出子菜单<-子菜单结束~禁用菜单项的前缀符!.给菜单项打上复选标记的前缀符&指定菜单快速键,如S&le显示为Sample,快捷键为a/指定菜单快速键,如/aSample显示为Sample,快捷键为a=*显示当前顶层的图像、下拉或快捷菜单*^C^C重复项的前缀$宏表达式的专门字符^CTRL\暂停等候用户输入(不能用于加速键)_转换AutoCAD命令及其后的关键字+连续宏到下一行;RETURN//注释行,不限行数,用作版权声明或注释[]方括号内为菜单项名称用文本编辑器打开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")DCADBK [孔距]^C^C(load"dcad-b-2000-jb")(load"DCAD")(load"Dcad-b")DCADBJB [凸臂]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")DCADBTZ [窄槽]^C^C(load"dcad-b-2000-tz")(load"DCAD")(load"Dcad-b")DCADBTZ [圆弧]^C^C(load"dcad-b-2000-y")(load"DCAD")(load"Dcad-b")DCADBY [孔间壁厚]^C^C(load"dcad-b-2000-b")(load"DCAD")(load"Dcad-b")DCADBB [<-复合模]^C^C(load"dcad-b-2000-f")(load"DCAD")(load"Dcad-b"))DCADBF[->排样] [定搭边值]^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:2406cf0>)(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:7ef50cf8>)(5."88")(100."AcDbEntity")(67.0)(410."Model")(8."0")(100."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中的应用有所了解。代数运算函数代数运算函数用于完成代数运算,包括赋值函数(SETQ),四则运算函数(+、-、*、/),三角函数(SIN、COS、ATAN)以及其他代数函数(ABS、EXP、EXPT、SQRT)。代数运算函数的使用方法专门容易掌握,唯一要注意的是LISP程序具有前缀结构的特点,各种函数运算都必须将函数名作为LISP表达式中最前面的元素。1)SETQ函数的格式为(SETQv1e1[v2e2…vnen])。其功能是将ei的计算值给予变量vi,函数返回值为en的计算值。(注:方括号部分是可选项,以下同。)例如,(SETQx1y(+12))将常数1的计算值1给予变量x,LISP表达式(+12)的计算值3给予变量y,函数返回值为3。2)+函数的格式为(+n1n2[n3…nm])。其功能是对函数变量求和,函数返回值为变量之和:n1+n2+n3+…+nm。3)-函数的格式为(-n1[n2n3…nm])。其功能是对函数变量求差。当m=1,函数只有一个变量n1时,函数返回值为0-n1,即-n1;当m≥2时,函数返回值为n1-(n2+n3+…+nm)。4)*函数的格式为(*n1n2[n3…nm])。其功能是对函数变量求积,函数返回值为变量的乘积:n1·n2·n3·…·nm。5)/函数的格式为(/n1n2[n3…nm])。其功能是求函数变量的商,函数返回值为n1/(n2·n3·…·nm)。当/函数变量均为整型数时,函数返回值也为整型数;当函数变量中至少有一个为实型数时,函数返回值为实型数。例如,(/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.149)ABS函数的格式为(ABSn)。其功能是求绝对值,函数返回n的绝对值。10)EXP函数的格式为(EXPn)。其功能是求e的指数,函数返回en。11)EXPT函数的格式为(ESPTmn)。其功能是求m的指数,函数返回mn。12)SQRT函数的格式为(SQRTn)。其功能是求平方根,函数返回n的平方根。自定义函数LISP语言提供了许多差不多函数,称为内部函数或系统函数(如前述函数),利用这些函数能够直接编写LISP程序,例如tanα的LISP程序可编写为(/(SINx)(COSx))。关于复杂的程序,直接利用差不多函数编写程序并不是一个好方法,编写LISP程序更多是利用自定义函数来编写程序,反之,大多数LISP程序也都编写成为自定义函数的形式。自定义函数与其他语言中的子程序或函数最接近。自定义函数是用户自己定义的函数,又被称为用户函数或外部函数。自定义函数的使用和系统函数的使用方法是一致的,用户在使用方面可不能感受到两者的差异。自定义函数的格式为(DEFUNname([A1A2…AL][/V1V2…VM])e1e2…en上表中第0个元素DEFUN是自定义函数的函数名,第1个元素name是符号变量,为自定义函数所定义的用户函数的名称。用户函数名称后是用户函数的变量表,变量表中的元素差不多上所定义的用户函数的局部变量,可分成以“/”分隔的两个部分,方括号表示可选项,表中“/”前的可选项[A1A2…AL]为新设立的用户函数name的函数变量,表中另一可选项[/V1V2…VM]中的元素不是用户函数的函数变量,它们仅仅是用户函数name的局部变量。所谓局部变量是指仅仅在定义函数内部存在并起作用的变量,它对定义函数以外的程序无任何干扰。变量表能够是空表(即表中不包含任何元素)。变量表后面是函数定义体,决定了函数name的功能和返回值。函数name的返回值是en例如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语言的过程中,用自定义函数的方法能够逐渐积存自己的函数,从而使编程越来越方便。分支结构分支结构在LISP语言中有二分支结构和多分支结构两种,与此相关的函数有:关系运算函数(=、/=、>、>=、<、<=、EQUAL),逻辑运算函数(AND、OR、NOT),二分支函数(IF)和归并(PROGN)函数以及多分支函数(COND)。关系运算函数推断函数变量相互间是否符合函数所定义的相等或不等关系。=函数的格式为(=e1e2…en)。当函数变量e1、e2、…、en全部相等时,函数返回T,否则返回NIL。/=、>、>=、<和<=函数的用法也是相同的,其功能如同其函数名所示。EQUAL函数的格式为(EQUALe1e2[e3])。EQUAL用来比较两个实型数或表是否相等,相等时函数返回T,否则返回NIL。比较两个实型数e1和e2时,取一个专门小的正数e3,其推断准则是当|e1-e2|≤e3时函数返回T,否则返回NIL。AND函数的格式为(ANDe1e2…en)。当函数变量e1、e2、…、en中全部有值时,函数返回T,否则返回NIL。OR函数的格式为(ORe1e2…en)。当函数变量e1、e2、…、en中至少有一个有值时,函数返回T,否则返回NIL。NOT格式为(NOTe)。当函数变量e有值时,函数返回NIL,否则返回T。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)))PROGN函数的格式为(PROGNe1e2…en),它的功能是将若干个LISP表达式归并为一个LISP表达式,常用于IF函数内,以便使IF函数能够在e1和e2的格式规定中作更多的情况。COND函数的格式为(COND (〈测试式1〉e11e12…e1i)(〈测试式2〉e21e22…e2j) …… (〈测试式m〉em1em2…emk))函数功能是实现多分支结构。COND函数的变量都为表,变量表中的第一个元素是测试式,其余元素是当测试结果为非NIL时顺序执行的LISP表达式。COND函数依次对测试式进行测试,当测试结果为非NIL时,顺序执行其后的LISP表达式。函数返回值为最后执行的表达式计算结果。变量表中能够只有一个元素,即能够只有测试式,现在的函数返回值为测试结果。编写下列分段函数的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。交互式输入函数交互式输入函数提供操纵台输入,包括键盘输入和光标设备输入。交互式输入函数又称为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操纵位和输入函数的关系函数关键字操纵位非空(1)(bit0)非0(2)(bit1)非负(4)(bit2)非限制(8)(bit3)用虚线(32)(bit5)二维距离(64)(bit6)任意输入(128)(bit7)GETINT√√√√√GETREAL√√√√√GETDIST√√√√√√√GETANGLE√√√√√GETPOINT√√√√√GETKWORD√√√INITGET函数只对其后的GET×××函数起一次作用。关于程序段(INITGET7“AbcDef”)(SETQA(GETINT“A=”))运行时,输入空回车、0或负数,系统都会要求重新输入,只有在输入正数时程序才会将整型数给予变量A。当输入a或abc时,程序会将关键字“Abc”作为字符串给予变量A。而输入d或def时,程序则将“Def”给予变量A。输入其他字母,程序也会要求重新输入,直至符合输入要求。例如,在AutoCAD绘圆命令CIRCLE执行时,有如下提示Command:circleSpecifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:Specifyradiusofcircleor[Diameter]:首先能够输入点或关键字,然后能够输入点、数值或关键字。同样的输入效果能够用以下LISP程序达到:(INITGET1“3P2PTtr”)(SETQp(GETPOINT“Specifycenterpointforcircleor[3P/2P/Ttr(tantanradius)]:”))(INITGET7“Diameter”)(SETQr(GETDISTp“Specifyradiusofcircleor[Diameter]:”))字符串函数字符串函数专门用于处理字符串,包括字符串长度函数(STRLEN)、字符串链接函数(STRCAT)和子字符串函数(SUBSTR)。1)STRLEN函数的格式是(STRLENs)。函数变量是字符串,STRLEN函数的功能是求出字符串s的长度,即组成字符串s的字符个数,函数返回整型数。如(STRLEN“abc”)返回3。2)STRCAT函数的格式是(STRCATs1s2…sn)。它的功能是按变量顺序合并字符串s1、s2、…、sn,函数返回合并后的字符串。如(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”。表处理函数表处理函数是LISP语言中最具特色的一类函数,用来生成表(LIST函数)或对表进行各种操作,如往表中添加元素(CONS函数)、从表中删除元素(CDR函数和MEMBER函数)、提取表中元素(函数CAR、CADR函数、CADDR函数和NTH函数)、检索表中元素(ASSOC函数)、替换表中元素(SUBST函数)、合并表(APPEND函数)、颠倒表中元素顺序(REVERSE函数)等等,其他的表处理函数还有LENGTH、APPLY、MAPCAR、FOREACH等等。其中的APPLY函数和MAPCAR函数又被称为泛函数,即在原来函数自变量位置上出现了函数,这就大大增加了程序的适用性。LIST函数的格式是(LISTe1e2…en)。它的功能是把e1、e2、…、en的计算值组成一个表。如(LIST1(+12)“A”)返回表(13“A”)。CONS函数的格式是(CONSeL),它的功能是把e的计算值加入表L中。如(CONS(+12)(LIST12))返回表(312)CDR函数的格式是(CDRL),它的功能是去除表L中为首的元素,函数返回剩余的表。如(CDR(LIST12))返回表(2)。MEMBER函数的格式是(MENBEReL),它的功能是提取表L中e及其后面元素组成的表。如(MENBER3(LIST12345))返回表(345)。CAR函数的格式是(CARL),它的功能是提取表L中第0个元素,函数返回该元素。如(CAR(LIST123))返回1。在CAD中常被用来提取点中的X坐标值。CADR函数的格式是(CADRL),它的功能是提取表L中第1个元素,函数返回该元素。如(CADR(LIST123))返回2。在CAD中常被用来提取点中的Y坐标值。CADDR函数的格式是(CADDRL),它的功能是提取表L中第2个元素,函数返回该元素。如(CADDR(LIST123))返回3。在CAD中常被用来提取点中的Z坐标值。NTH函数的格式是(NTHnL),它的功能是提取表L中第n个元素,函数返回该元素。表中元素的排列顺序是从左到右,为首元素序号为0。如(NTH2(LIST1234))返回3。ASSOC函数的格式是(ASSOCeL),它的功能是检索表L中包含以e值为起始元素的嵌套子表,函数返回检索到的子表。如(ASSOC2‘((12)(23)(34)))返回以2为起始元素的嵌套子表(23)。SUBST函数的格式是(SUBSTmnL),它的功能是用m取代表L中的n,函数返回更换后的表。如(SUBST“QQ”“B”(LIST“A”“B”“AB”“B”))返回表(“A”“QQ”“AB”“QQ”)。APPEND函数的格式是(APPENDmn),它的功能是合并表m和n,函数返回合并后的表。如(APPEND(LIST12)(LIST34))返回表(1234)。REVERSE函数的格式是(REVERSEL),它的功能是颠倒表中元素的顺序,函数返回颠倒元素顺序后的表。如(REVERSE(LIST1234))返回表(4321)。LENGTH函数的格式是(LENGTHL),它的功能是求出表的长度(即表中元素的个数),函数返回表示元素数目的整型数。如(LENGTH(LIST1234))返回整型数4。类型转换函数类型转换函数提供了变量和数据类型的相互转换,包括整型数和实型数互相转换函数(FIX和FLOAT)以及涉及字符串的转换函数(RTOS和READ)。FIX函数用于将实型数转换成整型数,它的格式为(FIXn)。FLOAT函数用于将整型数转换成实型数,它的格式为(FLOATn)。RTOS函数用于将数转换成一定格式的字符串,它的格式为(RTOSn[mode[precision]])。可选项mode和precision差不多上整型数。mode表示转换格式,precision表示转换精度(小数点后的位数),mode含义如表3-5所示。当可选项缺省时,RTOS函数按照AutoCAD的缺省格式进行转换。表3-5mode取值与转换格式的关系mode转换格式1科学计数制2十进制3英制工程制4英制建筑制5分数4)READ函数的格式是(READs),其中s是能够包含空格的字符串。READ函数去除字符串s的双引号,并返回从中获得的第一个表或原子。如(READ“HELLO”)返回符号变量HELLO(READ“HELLO”)返回符号变量HE(READ“123”)返回常数123(READ“123456789”(READ“(123)”)返回表(123)(READ“(123)(456)”)返回表(123)循环运算函数循环运算函数用于循环运算,包括无条件循环函数(REPEAT)和有条件循环函数(WHILE)。无条件循环是按照确定的循环次数进行循环运算,而有条件循环则是在每次运算前进行推断,依照推断结果确定是否进行循环运算。1)REPEAT函数的格式为(REAPEATne1e2…em)其中n为整型数,e1、e2、…、em为LISP表达式。REPEAT函数的功能是无条件地按顺序对e1、e2、…、em进行n次循环运算,函数返回值为em最后一次的计算结果。2)WHILE函数的格式为(WHILE<测试式>e1e2…em)WHILE函数首先对测试式进行测试,当测试结果为非NIL时,顺序执行e1、e2、…、em,然后再对测试式进行测试,直至测试结果为NIL时才停止循环运算,函数返回值为em最后一次的计算结果。例3-2编写LISP程序求1+2+…+100解1:采纳REPEAT函数编写程序A)编写程序(DEFUNL3-2-1(/Is)(SETQi0s0)(REPEAT100 (SETQi(+I1)s(+si))))B)调用函数(L3-2-1),函数返回5050。解2:采纳WHILE函数编写程序A)编写程序(DEFUNL3-2-2(/Is)(SETQI0s0)(WHILE(<I100) (SETQ I(+I1) s(+sI) )))B)调用函数(L3-2-2),函数返回5050。例3-3求定积分:解:采纳矩形法求解定积分。将定积分区域视为由n个等宽度小矩形组成,n个小矩形的面积之和为定积分值的近似值,小矩形的高度为sinx,宽度dx=1/n。A)编写程序(DEFUNL3-3(n/dxsxy) (SETQ dx(/1.0n) x0s0 ) (REPEATn (SETQ y(*x(SINx)) x(+xdx) s(+s(*ydx)) ) ))B)设n为100,调用函数(L3-3100),函数返回定积分的近似值0.296973。输入输出和文件处理函数除了前面提及的交互式输入函数外,AutoLISP语言还提供了输入大量数据的方式,即利用磁盘文件输入数据,输入函数为READ-LINE和READ-CHAR。输出函数能够将数据输出到显示屏幕或磁盘文件。常用的输出函数有PRINC。在处理磁盘文件时,需要先用OPEN函数打开文件,文件处理完毕后,再用CLOSE函数关闭文件。1)OPEN函数的功能是打开文件,对文件进行操作,函数返回文件指针。函数格式为(OPENnamemode),name是表示操作文件名的字符串,mode是表示文件操作方式的字符串,其定义如表3-6所示。表3-6mode取值与文件操作方式的关系mode状态“r”读文件“w”写文件“a”添加数据例如,程序段(setqf(open“try.dat”“r”))打开文件try.dat,并将其设为读状态,变量f为文件指针,开始时指向文件try.dat的头部,以后用输入函数读取数据时,文件指针随读取数据移动位置。2)CLOSE函数的格式为(CLOSEf),其中f是表示文件指针的符号变量。它的功能是关闭打开的文件,函数返回NIL。使用CLOSE函数后,系统将缓冲区内的数据全部处理完毕后关闭文件,幸免数据丢失。3)READ-LINE函数的格式为(READ-LINE[f]),其中f是表示文件指针的符号变量。它的功能是从文件指针指向的文件中顺序读取一行数据。缺省项文件指针f不存在时,则从键盘输入读取数据。READ-LINE函数的返回值是字符串,读到文件底部时函数返回NIL。例3-4设当前目录下有两个数据文件A.DAT和B.DAT,试编写程序,把B.DAT文件中的数据尾接到A.DAT文件之后。解:A)编写程序如下:(DEFUNL3-4()(SETQ fr(OPEN“B.DAT”“r”) fw(OPEN“A.DAT”“a”) s(READ-LINEfr))(WHILEs (PRINCsfw) (PRINC“\n”fw) (SETQs(READ-LINEfr)))(CLOSEfr)(CLOSEfw))B)调用程序:函数(L3-4)执行后,B.DAT文件中的数据就尾接到A.DAT文件原先数据的后面。程序运行时首先打开文件B.DAT和A.DAT,读取B.DAT文件中首行数据后进入循环,将读取数据和回车换行符添加写入A.DAT文件,然后再从B.DAT文件中接着读取数据,循环往复,一直到READ-LINE函数读取到B.DAT文件底部时,函数返回NIL并将其给予变量s,则WHILE函数退出循环,关闭文件B.DAT和A.DAT后程序运行结束。4)PRINC函数格式为(PRINC[e[f]]),其中e是LISP表达式,f是表示文件指针的符号变量,用于输出至文件。F不存在,则输出至显示器。PRINC函数的功能是输出e的计算值。PRINC函数返回值为e的计算值。当函数没有变量时,即(PRINC)表示不显示函数返回值。PRINC函数输出字符串时不带双引号。能够用专门字符进行操纵,实现格式输出。专门字符以\开始,后跟ASCII码,常用的专门字符如表3-7所示。例如程序段(PRINC“ABC”)向显示屏幕输出ABC,同时函数的返回值为“ABC”。(PRINC“\nABC”)先向显示屏幕输出回车换行符,然后输出ABC,函数的返回值为“\nABC”。表3-7专门字符专门字符\n\r\t\007\”\\输出结果回车换行回车不换行TAB响铃“\AutoCAD接口函数COMMAND函数的功能是在AutoLISP程序中执行AutoCAD命令。由于存在COMMAND函数,AutoLISP和VisualLISP程序能够调用几乎所有的AutoCAD命令,使得LISP灵活的程序功能和AutoCAD强大的图形功能得到完美的结合,专业计算和AutoCAD图形相得益彰,不仅能够大大提高AutoCAD的绘图效率,而且进一步拓展了AutoCAD的应用范围。COMMAND函数的格式为(COMMAND[e1e2…en])执行COMMAND函数时,按顺序把函数变量送出,作为AutoCAD命令及对命令提示的回答。因此,COMMAND函数变量的个数、顺序和类型必须与所调用的命令严格一致。函数变量能够是常数、变量及LISP表达式。不带变量的COMMAND函数,即(COMMAND),相当于在AutoCAD中使用CTRL-C。空字符串“”则相当于在AutoCAD中使用回车。一个COMMAND函数能够执行多项AutoCAD命令,一项AutoCAD命令也能够用多个COMMAND函数完成。在COMMAND函数变量中不同意出现GET族函数。例如输入圆心和直径绘制圆。程序1在一个COMMAND函数中执行CIRCLE和ZOOM两项AutoCAD命令,程序2则用两个COMMAND函数完成一项CIRCLE命令。程序1:(SETQ p(GETPOINT“Centerpoint:““) d(GETDISTp“Diameter:“))(COMMAND “CIRCLE”p“D”d “ZOOM”“E”)程序2:(SETQp(GETPOINT“Centerpoint:““)(COMMAND“CIRCLE”p)(SETQd(GETDISTp“Diameter:“))(COMMAND“D”d)(COMMAND“ZOOM”“E”)例3-5在区间0~2π内绘制y=sinα的函数曲线。解:编写程序如下:(DEFUNpsin(x)(LISTx(SINx)) ;定义函数psin,返回表示sin函数曲线上一点的表。(DEFUNNIHE(senf/dvp) ;定义绘制任意函数曲线的函数NIHE (SETQ d(/(-es)n) ;s为初值,e为终值,n为逼近函数曲线所用的直线段数 vs ;f为定义曲线的函数,d为增量,v从初值变化到终值 p(fv) ;p为表示点的表 )(COMMAND“PLINE”p) ;调用PLINE命令绘制多段连线 (REPEATn ;进入循环 (SETQv(+vd)p(fv))(COMMANDp) ;绘制一个直线段 ) ;循环结束 (COMMAND) ;退出PLINE命令)调用程序:调用函数(NIHE0(*2PI)1000psin),函数执行后,能够看到AutoCAD自动绘制出由1000根直线逼近的0至2π区间的sin函数曲线。图形数据处理函数1986年,AutoCADv2.52版本开放了图形数据库,使得CAD用户能够从CAD图形中提取与图形相关的数据。如此,表示切削加工的刀具运动轨迹图形能够轻易地用LISP程序转换成NC加工代码,也能够用LISP程序依照毛坯图形和零件轮廓图形自动产生刀具行走轨迹线,有限元网格划分的前处理也不再存在障碍。图形数据处理函数包括SSGET、SSNAME、SSLENGTH、ENTGET等函数。QUOTE函数QUOTE函数是应用最广泛的LISP函数之一,它的格式为(QUOTEe),功能是阻止对函数变量e进行求值计算。在LISP程序中常见的是QUOTE函数的简写格式’e。假如用赋值函数对变量a赋值:(SETQa(+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度汽车美容店技师专业用工合同示范文本
- 二零二五年度户外广告牌租赁与广告效果评估协议
- 2025年度林业砍树与生态保护基金管理协议
- 二零二五年度5G通信设备合作诚意金合同
- 2025年度码头港口集装箱拼箱与拆箱服务合同
- 二零二五年度房屋租赁合同租赁期限终止协议
- 二零二五年度农村土地租赁与农业废弃物资源化利用合作合同
- 2025年度高端商务区临时保安服务合同
- 二零二五年度文化创意产品开发合同自行解除的创意保护与知识产权
- 2025年江西货运从业资格证模拟版本
- 护理技术操作考核评分标准患者约束法
- 教师教学质量评估表(自评互评生评表)
- 重庆自然博物馆
- 外科护理(高职护理专业)PPT完整全套教学课件
- 输血与创伤性凝血病
- 消化科临床重点专科
- 人工挖孔桩爆破技术方案
- 2023年牡丹江大学单招面试题库及答案解析
- 手机号码归属地
- 运行程序etops二放手册b787qrh快速检查单
- MT 220-1990煤矿用防爆柴油机械排气中一氧化碳、氮氧化物检验规范
评论
0/150
提交评论