温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
模具设计
概述
第二章 模具CAD/CAM系统的构成
第一节 模具CAD/CAM 系统的硬件
一、模具CAD/CAM 系统的硬件构成
(一)计算机主机
(二)外部存储器
常用的外部存储器有磁盘、磁带、光盘。
(三)输入、输出设备
1. 输入设备
模具CAD/CAM系统使用的输入设备主要包括:键盘、鼠标(图形板)、激光扫描机等。
2. 输出设备
模具CAD/CAM系统使用的输出设备主要包括:图形显示器、绘图设备、快速成形机。
二、CAD/CAM硬件系统的配置
(一)大型机系统(Mainframe Based System )
(二)小型机成套系统(Turn Key System)
(三)图形工作站(Workstation)
(四)个人计算机(Personal Computer)
第二节 模具CAD/CAM系统的软件
模具CAD/CAM系统除必要的硬件设备外,还必须配备相应的软件。模具CAD/CAM的软件可分为系统软件、支撑软件和应用软件三个层面。
一、系统软件
系统软件(System Software)指的是在计算机运行状态下,保证用户正确而方便的工作的那一部分软件,包括操作系统、汇编系统、编译系统和诊断系统等。 操作系统是用户和计算机之间的接口,使用户能够有效的使用计算机。操作系统全面管理计算机资源,合理的组织计算机的工作流程。操作系统是每一计算机系统都具有的系统软件,如DOS、UNIX、LINUX、WINDOWS等。
二、支撑软件
模具CAD/CAM系统的支撑软件主要包括图形处理软件、几何造型软件、有限元分析软件、数据库管理软件、优化设计软件、计算机仿真分析应用软件、数控加工软件、检测与质量控制软件等。
(一)图形处理软件
图形处理包括对图形的定义、图形的生成、表示、变换、修改等一系列操作。图形处理软件是进行图形处理的专用软件,它是计算机与图形输出装置的中间连接者,其功能是实现图形与数据之间的 转换。图形处理软件就是常说的图形支撑软件它是一种通用的基础软件,在此基础上,可进行第二次开发,研制适合用于各专业的应用软件。图形处理软件是模具CAD/CAM系统中的重要支撑软件。
1. 图形处理软件的类型
图形处理软件可分为绘图子程序库、绘图语言和专用语言系统三种类型。这些软件都应具有人机交互处理图形的功能。
(1)绘图子程序库 绘图子程序库又称图形软件包。它是一系列与图形有关的子程序的集合。利用这种图形软件包,可大大提高编程的效率。在编写复杂图形的绘图软件时,只要编写一个主程序来调用软件包中的程序就行了。
图形软件包,一般包括基本子程序和功能子程序,也有的包括应用子程序。
基本子程序包括绘图所必须的最基本的功能。如绘图初始化、启动图形输出设备、几何计算、几何变化、画直线、圆、注写字符等应用子程序。
功能子程序包括画各种图线、各种轴线、各种基本的直线图形、曲线图形等子程序。
应用子程序是在上述两种子程序的基础上开发的专用程序,如画轴测图、透视图、机械图、等值线图、标高投影、电路图、管道图等子程序。
(2)绘图语言 绘图语言是在一种高级语言的基础上,经过修改、添加图形功能而成。这种绘图语言不需要独立的编译系统,但由于要改动、扩充高级语言的编译系统,因此要求研制人员对该高级语言的编译系统要比较熟悉,故研制这种图形处理软件比研究制图子程序库要复杂些,而且不可移植,其优点是执行速度较快。
(3)专用的图形设计语言 这种专用的语言系统,独立于其他高级语言,有自己单独的编译系统。因此研制相当困难。工作量大。且难以移植到其他机器上。其优点是直观易懂、使用灵活、功能强、执行速度快、效率高。
2. 对图形处理软件的要求
(1)实用性
(2)功能强
(3)执行速度快、效率高
(4)容错性
3. 图形处理软件的标准化
标准化了的图形包又称为图形标准,它必须作到:
①设备无关性。即与系统内所配置的图形设备的种类、数量、性能、参数等无关;
②与应用软件无关,即通用性,可用于开发各种应用软件,各种图形应用软件可用同一方式调用图形标准;
③与语言无关,即可被各种程序设计语言调用;
④具有较完整的图形处理功能,如图形的生成、表示、变换、分段、输入等。
1977年,美国计算机协会(ACM)的图示学专业组(SIG-GRAPH)“图示学标准起草委员会”(GSPC)提出了图形标准GSPC77(即CORE系统),1979年进行了修订扩充。
1979年提出了一个二维图形GKS(Graphical Kernel System),与繁杂庞大的CORE不同,GKS使用了工作站的概念,清晰简洁,小巧玲珑,经过多次修改。
1983年,修改后的GKS7.2版被国际标准化组织(ISO)定为国际图形标准。
GKS标准图形软件包,为图形应用软件和图形输入输出设备提供了一个功能接口,它包括各种交互的或者非交互的基本功能,适用于各种设备。
(二)数据库系统
在模具CAD/CAM系统中,几乎所有应用软件都离不开数据库。提高模具CAD/CAM系统的集成化程度主要取决于数据库的水平。
数据库主要是收集有关产品外形结构定义(如造型、绘图、加工、有限元分析等)和相应的有关信息。
传统的数据库管理系统运用于CAD/CAM系统有许多缺陷:
1)基于文件系统的数据库系统。它的特点是根据设计需要编制数据库管理程序,不具备理论化的设计模型和数据库语言,缺乏通用性。
2)不能完全满足工程环境中信息表达的要求,如表达复杂实体中各元素的联系非常困难、缺乏动态模式修改能力等。
3)不能支持整个工程应用过程,对不同阶段要求不同方面信息这一特点缺乏支持,对过程性信息的支持较弱。
4)存取的效率很低。
随着CAD/CAM/CAE/CAPP集成化软件系统的发展,为了解决传统数据库的缺陷继而出现了工程数据库,它具有以下主要功能:
1)支持复杂对象及其语义关系的描述与处理。复杂对象和存在于复杂对象之间语义关系的复杂性是工程的特点之一。
2)支持文字、图形、图像、动画等多媒体数据的管理。
3)是动态数据库,不仅能对静态数据建模,而且能对动态数据建模,允许动态地对数据库进行修改或扩充。
4)支持快速查询,有良好的查询接口。
5)支持不同设计版本的存储与管理,支持多方案设计和回溯的功能,具有良好的多级版本管理功能。
第三节 模具CAD/CAM系统的网络配置
利用通信系统将计算机与计算机以及相关的外部设备相连即可构成网络。
局域网(Local Area Network,简称LAN)能够以最高效率、最低成本在本地区范围内将计算机、终端、工作站以及常用的计算机外部设备连接成一个网络系统。
通过国际互联网(Internet)非常方便地实现全球资源共享,可以通过网络电子商务完成从采购至销售的一系列环节。
一、模具CAD/CAM系统常用的局域网络系统形式:
(一)集中式CAD/CAM系统
(二)分布式CAD/CAM系统
局域网特点是传输速度高、组网灵活,成本低。连网以后,可以实现数据、信息、软件、硬件资源的共享。更为有效的利用现有资源和提高工作效率。
广域网的典型代表是Internet网。
组织局域网的方式很多,但采用最多的是总线形、环形和星形网络结构。
1. 总线形网络结构
2. 环形网络结构
3. 星形网络结构
二、CAD/CAM网络系统硬件设备
网卡插在计算机或服务器扩展槽中,通过网络线(如双绞线、同轴电缆或光纤)与网络交换数据、共享资源。
集线器(HUB)是局域网的星型连接点,每个工作站是用双绞线连接到集线器上,由集线器对工作站进行集中管理。
网络传输介质是网络中传输数据、连接各网络站点的实体,如双绞线、同轴电缆、光纤,网络信息还可以利用无线电系统、微波无线系统和红外技术传输。
常用局域网互连设备还有中继器、网桥、路由器以及网关等。
三、网络协议
(一)NETBEUI协议
NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信。NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快且很有效,适用于只有单个网络的小工作组环境。。
(二)IPX/SPX协议
IPX是NOVELL用于NETWARE客户端/服务器的协议群组,避免了NETBEUI的弱点。但是,带来了新的不同弱点。
(三)TCP/IP协议
每种网络协议都有自己的优点,但是只有TCP/IP允许与Internet完全的连接。TCP/IP同时具备了可扩展性和可靠性的需求,不幸的是牺牲了速度和效率,TCP/IP的开发荣幸地受到了政府的资助,因此得到了迅速的推广。
Internet公用化以后,人们开始发现全球网的强大功能。Internet的普遍性是TCP/IP至今仍然使用的原因。常常在没有意识到的情况下,用户就在自己的PC上安装了TCP/IP栈,从而使该网络协议在全球应用最广。
由于TCP/IP的32位寻址功能方案不足以支持即将加入Internet的主机和网络数,因而新的IPv6标准可能代替当前实现的标准。
第三章 模具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),线切割加工(wire EDM)等主要模块,适用于机械设计与制造的各个领域。
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. 1. 点的输入
在各项CAD操作中,点的输入是最基本的操作,AutoCAD共有四种点的输入方式。
(1) (1) 通过键盘输入点 通过键盘输入点的坐标值是一种精确的点输入方式,点的坐标值输入有三种坐标方式:绝对直角坐标(输入x,y)、相对直角坐标(输入@x,y)和相对极坐标(输入@r<a),可根据需要任意选取。
(2) (2) 通过光标输入设备输入点 通过光标输入设备输入点的优点是方便和快捷。一般情况下,用光标输入设备输入点的坐标值是不精确的,通过AutoCAD的Snap功能,可以使输入点达到一定的精度。
(3) (3) 利用目标捕捉功能输入点 这是利用光标输入设备精确输入点的一种方式,根据AutoCAD的Osnap功能,它可以精确捕捉到图形的特定点位置,例如线段的端点、中点,圆和圆弧的圆心及象限点,切点和垂足等等。
(4) (4) 利用LISP函数输入点 利用LISP语言中的函数功能也可以输入点,这是自动绘制图形的基础,在AutoCAD二次开发中经常使用这种方式完成点的输入。
2. 2. 直线的绘制
绘制直线的命令是LINE。一般只要输入直线的两个端点,即可生成直线。绘制好圆弧后,在LINE命令后直接键入回车,然后输入直线长度,可以在圆弧终点处绘制圆弧的切线。
3. 3. 圆的绘制
绘制圆的命令是CIRCLE。圆的绘制参数是圆心和半径(或直径)。也可以根据需要绘制与其他图线相切的圆。
4. 4. 圆弧的绘制
绘制圆弧的命令是ARC。与直线和圆相比,圆弧的绘制比较复杂,考虑到圆弧具有顺时针和逆时针两种方向,AutoCAD共安排了7种绘制圆弧的方法,其绘制参数分别为圆弧的①起点、中点、终点;②起点、圆心、终点;③起点、圆心、角度; ④起点、圆心、弧长;⑤起点、终点、角度;⑥起点、终点、半径;⑦起点、终点、起始方向。绘制与刚绘制的直线或圆弧相切的圆弧时,可以直接键入回车,然后输入圆弧终点,此时圆弧的起点即为前绘线段的终点,圆弧的起始方向即为前绘线段的终止方向。
5. 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 菜单文件类型
菜单文件类型
类型说明
.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-2 ACAD.MNU文件的菜单区域及其功能
主菜单名称
区数N
功能用途
***MENUGROUP
菜单组
***BUTTONSn
1~4
定点设备按钮菜单
***AUXn
1~4
系统定点设备菜单
***POPn
0~999
0 对象捕捉快捷菜单
1~16 基本型下拉菜单
17~499 将menuload加入下拉菜单中
500~999 快捷菜单区域
***TOOLBARS
工具栏定义
***IMAGE
图像菜单
***SCREEN
屏幕菜单
***TABLETn
1~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 (null c: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 (null c:mb) (load "dcad-pt")) mb
[橡皮](if (null C:XP) (load "dcad-pt")) XP
[导柱](IF (NULL C:DZ) (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:DT) (LOAD "DCAD-PT")) YTM
[装配示意图]^C^C(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版本中又推出了具有高运行效率的编译型LISP语言——Visual LISP。Visual LISP在AutoLISP的基础上增加了源程序编辑环境、编译器以及一些增强函数。实际上,过去编写的AutoLISP程序都可以在Visual LISP中编译和运行,即Visual LISP能够完全兼容AutoLISP。
(一)LISP语言简介
LISP是英语LISt Processing 的缩写,意思是一种编制计算机程序的表处理语言。
LISP语言1960年起源于美国麻省理工学院(MIT),是一种著名的人工智能计算机语言。与BASIC等其他计算机语言一样,LISP语言也有许多版本,现在使用最多的是COMMON LISP。AutoCAD软件中镶嵌的AutoLISP与COMMON LISP很接近,它增加了调用AutoCAD命令的功能和一些几何函数,并削减了COMMON LISP中一些不常用的函数。
作为一种高级语言,LISP可以完成其他许多高级语言(如FORTRAN、BASIC、PASCAL、C等)能够完成的工作,诸如计算、逻辑判断、循环运算等等。LISP语言具有一些独特的优点,使它特别适用于人工智能和CAD领域,这也是AutoCAD在众多计算机语言中首先选择其作为开发工具的主要理由。
表(List)在LISP语言中具有极其重要的意义。表是LISP语言的重要成份,它由若干个元素(Element)和一对圆括号组成。元素则包括表和原子(Atom)两种类型。原子指常数(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)可以表示一个六维向量,与其他计算机语言中的一维数组相当,但是表中元素的数据类型可以各不相同,而同一数组中各个数据的类型都必须相同。
利用表的嵌套结构,容易获得类似的多维数组,但是其中各维的长度可以不相等,并且表中元素的数据类型可以各不相同,所以在表示数据时,表比其他计算机语言中的多维数组更显优越性。AutoCAD中的图形数据(包括类型、图层、颜色、线型、特征、坐标值等)都可采用表的形式表达。如AutoCAD中表达一根直线所用的表为((-1 . <Entity name: 24082f8>) (0 . "LINE") (330 . <Entity name: 2406cf0>) (5 . "2F7") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (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 . "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语言拥有的功能是通过其函数表现出来的。
(二)LISP函数
LISP函数具有返回值和特定的功能。如上例中,函数返回值为3,函数+的特定功能是求和。各种类型的LISP函数用来完成LISP语言所有的功能,下面将一些最基本的LISP函数进行分类,以便大家能够对LISP语言及其在CAD中的应用有所了解。
1. 1.代数运算函数
代数运算函数用于完成代数运算,包括赋值函数(SETQ),四则运算函数(+、-、*、/),三角函数(SIN、COS、ATAN)以及其他代数函数(ABS、EXP、EXPT、SQRT)。代数运算函数的使用方法很容易掌握,唯一要注意的是LISP程序具有前缀结构的特点,各种函数运算都必须将函数名作为LISP表达式中最前面的元素。
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])。其功能是对函数变量求差。当m=1,函数只有一个变量n1时,函数返回值为0-n1,即-n1;当m≥2时,函数返回值为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的正弦值。变量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) 返回值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.14
9) ABS函数的格式为(ABS n)。其功能是求绝对值,函数返回n的绝对值。
10) EXP函数的格式为(EXP n)。其功能是求e的指数,函数返回en。
11) EXPT函数的格式为(ESPT m n)。其功能是求m的指数,函数返回mn。
12) SQRT函数的格式为(SQRT n)。其功能是求 平方根,函数返回n的平方根。
2. 2.自定义函数
LISP语言提供了许多基本函数,称为内部函数或系统函数(如前述函数),利用这些函数可以直接编写LISP程序,例如tanα的LISP程序可编写为(/ (SIN x) (COS x))。对于复杂的程序,直接利用基本函数编写程序并不是一个好方法,编写LISP程序更多是利用自定义函数来编写程序,反之,大多数LISP程序也都编写成为自定义函数的形式。自定义函数与其他语言中的子程序或函数最接近。自定义函数是用户自己定义的函数,又被称为用户函数或外部函数。自定义函数的使用和系统函数的使用方法是一致的,用户在使用方面不会感觉到两者的差异。
自定义函数的格式为
(DEFUN name ([A1 A2 … AL] [/ V1 V2 … VM]) e1 e2 … en)
上表中第0个元素DEFUN是自定义函数的函数名,第1个元素name是符号变量,为自定义函数所定义的用户函数的名称。用户函数名称后是用户函数的变量表,变量表中的元素都是所定义的用户函数的局部变量,可分成以“/”分隔的两个部分,方括号表示可选项,表中“/”前的可选项[A1 A2 … AL]为新设立的用户函数name的函数变量,表中另一可选项[/ V1 V2 … VM]中的元素不是用户函数的函数变量,它们仅仅是用户函数name的局部变量。所谓局部变量是指仅仅在定义函数内部存在并起作用的变量,它对定义函数以外的程序无任何干扰。变量表可以是空表(即表中不包含任何元素)。变量表后面是函数定义体,决定了函数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都是AutoLISP的基本函数。
调用正切函数(tan 0),返还的正切函数值为0.0。可以看到,用户