第4章计算机辅助设计主要内容:了解计算机辅助设计;了解工程数据的处理方法;掌握计算机图形处理与三维造型;了解CAD系统的二次开发。4.1概述4.1.1计算机辅助设计的发展计算机辅助设计(ComputerAidedDesign,简称CAD)技术是电子信息技术和设计技术紧密结合的技术。4.1.1计算机辅助设计的发展CAD其概念和内涵正在不断地发展中。1972年10月,国际信息处理联合会(IFIP)在荷兰召开“关于CAD原理的工作会议”上给出如下定义:CAD是一种技术,其中人与计算机结合为一个问题求解组,紧密配合,发挥各自所长,从而使其工作优于每一方,并为应用多学科方法的综合性协作提供了可能。CAD是工程技术人员以计算机为工具,对产品和工程进行设计、绘图、分析和编写技术文档等设计活动的总称。4.1.1计算机辅助设计的发展它把计算机所具有的运算快、计算精度高、有记忆、逻辑判断、图形显示以及绘图等特殊功能与人们的经验、智慧和创造力结合起来,从而减轻设计人员的体力劳动,提高设计质量,缩短设计周期。4.1.1计算机辅助设计的发展1.计算机的发展1642年,法国数学家帕斯卡成功地制造了第一台钟表齿轮式机械计算机,但仅能做加减法运算。在此基础上,德国数学家莱布尼兹于1678年发明了可做乘除运算的计算机。4.1.1计算机辅助设计的发展二次世界大战,随着火炮的发展,弹道计算日益复杂,原有的一些计算机已不能满足使用要求,迫切需要有一种新的快速的计算工具。这样,在一些科学家、工程师的努力下,在当时电子技术已显示出具有记数、计算、传输、存储控制等功能的基础上,1946年美国宾夕法尼亚大学埃克特等人研制成功世界上第一台电子计算机“埃尼阿克”。他的计算速度是手工计算的20万倍。它计算炮弹弹道只需要3秒钟,而在此之前,则需要200人手工计算两个月。4.1.1计算机辅助设计的发展2.计算机技术的发展20世纪50年代在美国诞生第一台计算机绘图系统,开始出现具有简单绘图输出功能的计算机辅助设计技术。60年代初期出现了cad的曲面片技术,中期推出商品化的计算机绘图设备。70年代,完整的cad系统开始形成,后期出现了能产生逼真图形的光栅扫描显示器,推出了手动游标、图形输入板等多种形式的图形输入设备,促进了cad技术的发展。4.1.1计算机辅助设计的发展80年代中期以来,cad技术向标准化、集成化、智能化方向发展。一些标准的图形接口软件和图形功能相继推出,为cad技术的推广、软件的移植和数据共享起了重要的促进作用;系统构造由过去的单一功能变成综合功能,出现了计算机辅助设计与辅助制造联成一体的计算机集成制造系统;网络技术、多处理机和并行处理技术在cad中的应用,极大地提高了cad系统的性能;人工智能和专家系统技术引入cad。4.1.1计算机辅助设计的发展CAD/CAM技术的发展•50年代-萌芽期:•图形显示器(50),NC机床(52),绘图仪(58)•60年代-成长期:•CAD(63),GRAPHI等大型CAD/CAM系统问世•70年代-发展期:•CAD/CAM软硬件系统商品化4.1.1计算机辅助设计的发展CAD/CAM技术的发展•80年代-普及期:•PC微机和工作站系统广泛使用,从大型企业向中小企业扩展,从发达国家向发展中国家扩展•90年代-集成期:•CAD/CAM集成,CIMS集成4.1.2计算机辅助设计的基本功能几何造型工程分析仿真模拟图形处理计算机辅助设计的基本功能4.2CAD系统软件核心人关键硬件基础CAD系统组成人:有着不可替代主导作用硬件:是基础,包括主机、计算机外部设备以及网络通讯设备等软件:是核心,决定系统性能的优劣,包括操作系统、应用软件等;4.2.1CAD系统的硬件CAD系统的硬件一般由计算机主机、常用外围设备、图形输入设备和图形输出设备组成。图形输入和输出设备种类很多,可根据需要进行选配。存贮器计算机主机输入装置输出装置CAD系统硬件组成4.2.1CAD系统的硬件4.2.2CAD系统的软件应用软件支撑软件系统软件CAD系统的软件组成4.2.2CAD系统的软件系统软件:对计算机资源进行自动管理和控制,它处于整个软件的核心内层,主要包括操作系统和数据通信系统等。操作系统:计算机软件核心,有CPU管理、内存管理、I/O管理、文件管理等功能,常用操作系统有DOS、Windows、Unix等。语言编译系统:如Basic、C/C++、LISP等编译系统,将高级语言转换为计算机机器语言。图形接口标准:如GL/OpenGL等图形接口标准,独立于硬件设备和各种不同的计算机语言。4.2.2CAD系统的软件支撑软件:是帮助人们高效率开发应用软件的软件工具系统,亦称为软件开发工具。交互绘图软件:主要完成二维工程图样的绘制,如AutoCAD、CAXA等。三维造型软件:如Solidworks、Solidedge等。工程分析软件:如ANSYS、ADINA等。综合集成支撑软件:如UG、PRO/E、CATIA等,具有CAD、CAE、CAM等综合功能。4.2.2CAD系统的软件应用软件:在系统软件和支撑软件基础上,针对某一具体应用开发的软件,如机床设计、夹具设计、汽车车身设计等CAD或CAE软件系统。4.2.3CAD硬件系统的形式1.主机分时系统这种系统一般以小型机以上的计算机为主机,集中配备某些公司的外部设备,如绘图机、打印机、磁带机等,以分时的方式接出许多用户工作站及字符终端。2.小型机成套系统4.2.3CAD硬件系统的形式3.工作站系统摒弃了多用户分时系统的结构,采用网络技术,由于系统的单用户性质,保证了优良的时间响应,提高了用户的工作效率。工作站本身具有强大的分布式计算功能,能够支持复杂的CAD作业和多任务进程。但由于硬件技术的飞速发展,使工作站与微型机系统的界限变得模糊了。4.微型机系统一个微型机系统的构成,一般每台微型机只配一个图形终端,以保证对操作命令的快速响应。设计数据数表线图常数数表普通线图列表函数程序化(数组)单个编程处理文件化数据库离散为数组插值计算函数拟合直接应用公式折线图带有公式处理方法数据类型4.3工程数据的处理方法及程序编制4.3.1数表的分类及存取α90100110120130140150160kα0.680.740.790.830.860.890.920.95一维数表例:由带包角α查取修正系数kα二维数表:例:齿轮传动工况系数KA工况系数KA[j][l]工作平稳中等冲击较大冲击j=0j=1j=2工作平稳I=01.001.251.75轻度冲击I=11.251.503.00中等冲击I=21.501.753.254.3.1数表的分类及存取多维数表例:齿形公差一维数表例:由带包角α查取修正系数kα用2个一维数组进行程序化。floatalfa[8]={90.0,100.0,110.0,120.0,130.0,140.0,150.0,160.0};floatkalfa[8]={0.68,0.74,0.79,0.83,0.86,0.89,0.92,0.95};α90100110120130140150160kα0.680.740.790.830.860.890.920.954.3.1数表的分类及存取4.3.1数表的分类及存取二维数表:例:齿轮传动工况系数KA工况系数KA[i][j]单班双班三班j=0j=1j=2工作平稳i=01.001.251.75轻度冲击i=11.251.503.00中等冲击i=21.501.753.25用二维数组进行程序化floata[3][3]={{1.0,1.25,1.75},{1.25,1.5,3.0},{1.5,1.75,3.25}};4.3.1数表的分类及存取多维数表例:齿形公差用三维数组进行程序化floatff[3][6][12]={{{2.1,2.6,…,90},{2.4,3.0,…,125},{2.5,3.4,…,140}},{{2.4,3.0,…,112},{2.5,3.2,…,140},{…},{…},{3.4,…,280}},{{2.6,3.4,…,160},{2.8,3.8,…,180},{…},{…},{…},{4.5,…,450}},{{3.0,4.2,…,224},{3.2,4.5,…,250},{…},{…},{…},{5.0,…,500}}…….};4.3.1数表的分类及存取多维数表例:齿形公差4.3.1数表的分类及存取二维数表:例:齿轮传动工况系数KA工况系数KA[i][j]单班双班三班j=0j=1j=2工作平稳i=01.001.251.75轻度冲击i=11.251.503.00中等冲击i=21.501.753.25检索齿轮传动工况系数C语言程序:#includestdio.hmain(){inti,j;floatka[3][3]={{1.0,1.25,1.50},{1.25,1.5,3.0},{1.5,1.75,3.25}};while(1){printf(“输入载荷特性(0,1,2):”);scanf(“%d”,&i);if(i=0&&i=2)break;}while(1){printf(“输入工作班数(0,1,2):”);scanf(“%d”,&j);if(j=0&&j=2)break;}printf(“得到的齿轮工况系数为%f,”,ka[i][j]);}4.3.1数表的分类及存取数表数组化表示存在的不足:1)使程序膨胀、累赘,仅适合于小型数表;2)数据的独立性较差数表文件化:–可使程序简练;–使数表与应用程序分离;–一个数表文件可供多个应用程序使用;–提高数据系统的可维护性。4.3.1数表的分类及存取平键数表文件化4.3.1数表的分类及存取建立数表文件C语言程序:#includestdio.h#definenum=12structkey_GB{floatd1,d2,b,h,t,t1;}key;voidmain(){inti;FILE*fp;If((fp=fopen(“key.dat”,”w”))==NULL){printf(“Cannotopenthedatafile”);exit();}for(i=0;inum;i++){printf(“record%d:d1,d2,b,h,t,t1=”,i;scanf(“%f,%f,%f,%f,%f,%f”,&key.d1,&key.d2,&key.b,&key.h,&key.t,&key.t1);fwrite(&key,sizeof(structkey_GB),1,fp);}fclose(fp);}4.3.1数表的分类及存取给定轴径d尺寸,从“key.dat”文件检索键槽尺寸,#includestdio.h#definenum=12structkey_GB{floatd1,d2,b,h,t,t1;}key;voidmain(){inti;FILE*fp;while(1){printf(“Inputtheshaftdiameterd=”);scanf(“%f”,&d);if(d8&&d=130)break;elseprintf(“Thediameterdisnotinrange,inputagain!”);}for(i=0;inum;i++){fseek(fp,i*sizeof(structkey_GB),0);fread(&key,sizeof(structkey_GB),1,fp);if(dkey.d1&&d=key.d2){printf(“Thekey:b=%f,h=%f,t=%f,t1=%f”,key.b,key.h,key.t,key.t1);break;}}fclose(fp);}4.3.1数表的分类及存取线图一般处理方法:•附有公式的线图:将公式直接编写到程序中;•一般线图:先将线图离散为数表,进行程序化处理;•复杂线图:分别编程处理。4.3.2线图的分类及处理一般线图的处理当量齿数Zv121416182226304050齿形系数Y3.483.223.033.913.733.603.523.403.32