cadcam标准实验报告.doc_第1页
cadcam标准实验报告.doc_第2页
cadcam标准实验报告.doc_第3页
cadcam标准实验报告.doc_第4页
cadcam标准实验报告.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 年 月 日目 录一、 实验一 二维图形复合变换编程 二、 实验二 三次B样条曲线生成三、 实验三 CAD/CAM集成 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验一 二维图形复合变换编程一、实验目的:1 掌握CAD图形处理的原理和方法。2 理解CAD对图形进行复合变换的过程。二、实验要求在二维模式下,将三角形绕任意点旋转角。三角形三点的坐标、旋转点坐标和旋转角度可由用户任意输入。原图形和变换后的图形必须同时显示在显示器上。三、实验设备1 计算机系统2 安装Turbo C或其他C语言集成开发工具四、实验原理1、变换原理基本旋转矩阵是相对坐标原点的,为了满足这一要求,必须先将旋转点和需要处理的图形向原点平移,使旋转点与原点重合,然后对图形进行旋转变换。旋转变换后,再将旋转点和旋转后的图形平移到旋转点。基本变换矩阵如下: cos sin 0-sin cos 00 0 1 1 0 00 1 0l m 1 平移T=旋转T=根据上述图形变换原理,对二维图形绕任意点(旋转点)旋转的复合变换矩阵M为1 0 00 1 0-x -y 1 M=cos sin 0-sin cos 00 0 1 1 0 00 1 0x y 1 2、编程基本要领1)、将显卡设置为图形模式函数为 #include(graphics.h) #include(conio.h)main( ) int driver,mode; driver=VGA; mode=VGAMED; initgraph(&driver,& mode,”);2) 画直线函数为 line(x1,y1, x2,y2)3) 4*4界矩阵相乘函数 float py44,xz44;m44 float xc(a,b) float a44,b44; int i , j,k;for(i=0;i=3;i+) for (j=0;j=3;j+) for(k=0;k=3;k+) mij= mij+ aik* bkj;五、实验步骤1、在C语言集成开发工具的编辑器中输入源程序2、利用编译器编译源程序3、连接生成执行文件4、运行程序六、实验数据及处理结果#include#include#include#include#include#include#include#include#include/*aa*/float x1,x2,x3,y1,y2,y3,x,y,cn;int menu_select();int input_data();int output_data();int output_photo();main() closegraph(); /*aa*/ clrscr(); for(;) switch(menu_select() case 1: input_data();break; case 2: output_data();break; case 3: output_photo();break; case 4: exit(0);break; /*aa*/int menu_select() char *menu=*menu*, 1.please input 3 point, 2.display 3 points, 3.display graphic, 4.exit, programmer:hfr, 2006.5.1 ; int i,num; clrscr(); gotoxy(1,1); textbackground(9); /*set color*/ textcolor(14); gotoxy(10,2); putch(201); gotoxy(10,22); putch(200); gotoxy(65,2); putch(187); gotoxy(65,22); putch(188); for(i=1;i55;i+) gotoxy(10+i,2);putch(205); gotoxy(10+i,22);putch(205); for(i=1;i20;i+) gotoxy(10,2+i);putch(186); gotoxy(65,2+i);putch(186); window(11,3,64,21); clrscr(); for(i=0;i7;i+) gotoxy(5,i+1); cprintf(%s,menui); cprintf(rnnnnnnnnnnn); do printf(select (number:14):); scanf(%d,&num); while(num4); return num;/*aaa*/int input_data() int i,xz; clrscr(); cprintf(please 3 points:rn); cprintf(eg:A(x,y):10,12rn); cprintf(A(x1,y1):); scanf(%f,%f,&x1,&y1); gotoxy(1,4); cprintf(B(x2,y2):); scanf(%f,%f,&x2,&y2); gotoxy(1,5); cprintf(C(x3,y3):); scanf(%f,%f,&x3,&y3); gotoxy(1,6); cprintf(please rotate point m(x,y):); scanf(%f,%f,&x,&y); gotoxy(1,7); cprintf(please angle:); scanf(%f,&cn); printf(nn); gotoxy(1,9); cprintf(rn); cprintf(1.main menurn); cprintf(2.repeat input pointsrn); cprintf(select:); scanf(%d,&xz); switch(xz) case 1:main();break; case 2:input_data();break; printf(nnnnnnnnnnnnn);/*aaa*/int output_data() int i,j,k; char xz; clrscr(); textbackground(9); /*aaa*/ textcolor(14); gotoxy(10,2); putch(201); gotoxy(10,22); putch(200); gotoxy(65,2); putch(187); gotoxy(65,22); putch(188); for(i=1;i55;i+) gotoxy(10+i,2);putch(205); gotoxy(10+i,22);putch(205); for(i=1;i20;i+) gotoxy(10,2+i);putch(186); gotoxy(65,2+i);putch(186); window(11,3,64,21); clrscr(); gotoxy(10,3);putch(218); gotoxy(10,13);putch(192); gotoxy(44,3);putch(191); gotoxy(44,13);putch(217); for(i=0;i33;i+) gotoxy(11+i,3);putch(196); gotoxy(11+i,5);putch(196); gotoxy(11+i,7);putch(196); gotoxy(11+i,9);putch(196); gotoxy(11+i,11);putch(196); gotoxy(11+i,13);putch(196); for(j=0;j9;j+) gotoxy(10,4+j);putch(179); gotoxy(21,4+j);putch(179); gotoxy(32,4+j);putch(179); gotoxy(44,4+j);putch(179); gotoxy(15,4);cprintf(points); gotoxy(24,4);cprintf(X axis); gotoxy(35,4);cprintf(Y axis); gotoxy(15,6);cprintf(A point); gotoxy(15,8);cprintf(B point); gotoxy(15,10);cprintf(C point); gotoxy(12,12);cprintf(rotate point m); gotoxy(24,6);cprintf(%0.2f,x1); gotoxy(35,6);cprintf(%0.2f,y1); gotoxy(24,8);cprintf(%0.2f,x2); gotoxy(35,8);cprintf(%0.2f,y2); gotoxy(24,10);cprintf(%0.2f,x3); gotoxy(35,10);cprintf(%0.2f,y3); gotoxy(24,12);cprintf(%0.2f,x); gotoxy(35,12);cprintf(%0.2f,y); gotoxy(10,14);cprintf(旋转角度cn:%0.2f(弧度),cn); gotoxy(10,18); cprintf(return main menu y/n?); scanf(%s,&xz); switch(xz) case y:main();break; case n:output_data();break; printf(nnnnnn);/*aa*/int output_photo() int driver,mode; int i,j,k; int midx,midy,xmax,ymax; /*aa*/ float ax,ay,bx,by,cx,cy; /*aa*/ float Ax,Ay,Bx,By,Cx,Cy; /*aa*/ float A33; /*aa*/ float P33=0,0,0; /*aa*/ float M33; /*aa*/ char xz; driver=VGA;mode=VGAMED; initgraph(&driver,&mode,); setgraphmode(mode) /*a*/ cleardevice(); /*a*/ midx=getmaxx()/2; midy=getmaxy()/2; xmax=getmaxx(); ymax=getmaxy(); /*aa*/ ax=x1+midx;ay=-y1+midy; bx=x2+midx;by=-y2+midy; cx=x3+midx;cy=-y3+midy; /*aa*/ A00=x1;A01=y1;A02=1; A10=x2;A11=y2;A12=1; A20=x3;A21=y3;A22=1; M00=cos(cn);M01=sin(cn);M02=0; M10=-sin(cn);M11=cos(cn);M12=0; M20=-x*cos(cn)+y*sin(cn)+x;M21=-x*sin(cn)-y*cos(cn)+y;M22=1; for(i=0;i3;i+) for(j=0;j3;j+) for(k=0;k3;k+) Pij+=Aik*Mkj; Ax=P00+midx;Ay=-P01+midy; Bx=P10+midx;By=-P11+midy; Cx=P20+midx;Cy=-P21+midy; setcolor(14); line(0,midy,xmax,midy); /*aa*/ line(midx,0,midx,ymax); setcolor(5); line(ax,ay,bx,by); /*aa*/ line(bx,by,cx,cy); line(cx,cy,ax,ay); setcolor(6); line(Ax,Ay,Bx,By); line(Bx,By,Cx,Cy); line(Cx,Cy,Ax,Ay); settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(midx, midy,o); /*aa*/ printf(return main menu y/n?); scanf(%s,&xz); switch(xz) case y:main();break; case n:output_photo();break; R(2,3)旋转30C(4,3)A(2,4)B(4,5)R(2,3)A(3,4.5)B(5,4)C(3,2) 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验二 B样条曲线的生成一、实验目的:1、掌握参数化曲线曲面的原理和方法。2、理解参数化曲线曲面的基本性质,特别是B样条曲线的基本性质。3、掌握型值点和控制顶点以及控制多边形的概念,理解控制点对曲线的控制作用。二、实验要求在二维模式下,用自编程序生成三次B样条曲线。四个控制顶点的坐标可由用户任意输入。三次B样条曲线和控制多边形必须同时显示在显示器上。用户改变控制点后,曲线应同时得到调整。三、实验设备1、计算机系统2、安装Turbo C或其他C语言集成开发工具四、实验原理1、B样条曲线原理B样条曲线是一种基函数为B样条基函数的参数曲线,三次B样条参数方程如下: P(t)=( )=(t3 t2 t 1)其中参数t0,1P0、P1、P2、P3为四个控制顶点。B样条曲线是一种逼近曲线,曲线并不过任一个控制顶点。2、编程基本要领1)、将显卡设置为图形模式函数为 #include(graphics.h) #include(conio.h)main( ) int driver,mode; driver=VGA; mode=VGAMED; initgraph(&driver,& mode,”);2) 画直线函数为 line(x1,y1, x2,y2)3) 1*4界矩阵相乘函数 float py 4,xz44;m 4 float xc(a,b) float a 4,b44; int i , j,k;for(i=0;i=3;i+) for (j=0;j=3;j+) mi = mi + aj * bji;4)参数取值参数步长一般采用等步长,取1/n ,n为正整数。N的大小与显卡和显示精度有关。一般可取50。五、实验步骤1、在C语言集成开发工具的编辑器中输入源程序2、利用编译器编译源程序3、连接生成执行文件4、运行程序六、实验数据及处理结果#include#include#include#include#include#include#include#include#define N 100#define BC 0.01int menu_select();int input();int photo();float x1,x2,x3,x4,y1,y2,y3,y4;main() closegraph(); for(;) switch(menu_select() case 1: input();break; case 2: outdata();break; case 3: photo();break; case 4: exit(0);break; int menu_select() char *menu=*Menu*, 1.please iuput control 4 points, 2.display control 4 points, 3.display graphic, 4.exit, Designer:hfr, 2006.5.1 ; int i,num; clrscr(); gotoxy(1,1); textbackground(9); /*set backgroud*/ textcolor(14); gotoxy(10,2); putch(201); gotoxy(10,22); putch(200); gotoxy(65,2); putch(187); gotoxy(65,22); putch(188); for(i=1;i55;i+) gotoxy(10+i,2);putch(205); gotoxy(10+i,22);putch(205); for(i=1;i20;i+) gotoxy(10,2+i);putch(186); gotoxy(65,2+i);putch(186); window(11,3,64,21); clrscr(); for(i=0;i7;i+) gotoxy(5,i+1); cprintf(%s,menui); cprintf(rnnnnnnnnnnn); do printf(Select (number:14):); scanf(%d,&num); while(num4); return num;int input() int i,xz; clrscr(); cprintf(please input control 4 points :rn); cprintf(eg:P(x,y):10,12rn); cprintf(P1(x1,y1):); scanf(%f,%f,&x1,&y1); gotoxy(1,4); cprintf(P2(x2,y2):); scanf(%f,%f,&x2,&y2); gotoxy(1,5); cprintf(P3(x3,y3):); scanf(%f,%f,&x3,&y3); gotoxy(1,6); cprintf(P4(x4,y4):); scanf(%f,%f,&x4,&y4); gotoxy(1,7); printf(nn); gotoxy(1,9); cprintf(success rn); cprintf(1.return main menurn); cprintf(2.repeat input rn); cprintf(select :); scanf(%d,&xz); switch(xz) case 1:main();break; case 2:input();break; printf(nnnnnnnnnnnnn);int outdata() int i,j,k; char xz; clrscr(); textbackground(9); /*set background*/ textcolor(14); gotoxy(10,2); putch(201); gotoxy(10,22); putch(200); gotoxy(65,2); putch(187); gotoxy(65,22); putch(188); for(i=1;i55;i+) gotoxy(10+i,2);putch(205); gotoxy(10+i,22);putch(205); for(i=1;i20;i+) gotoxy(10,2+i);putch(186); gotoxy(65,2+i);putch(186); window(11,3,64,21); clrscr(); gotoxy(10,3);putch(218); gotoxy(10,13);putch(192); gotoxy(44,3);putch(191); gotoxy(44,13);putch(217); for(i=0;i33;i+) gotoxy(11+i,3);putch(196); gotoxy(11+i,5);putch(196); gotoxy(11+i,7);putch(196); gotoxy(11+i,9);putch(196); gotoxy(11+i,11);putch(196); gotoxy(11+i,13);putch(196); for(j=0;j9;j+) gotoxy(10,4+j);putch(179); gotoxy(21,4+j);putch(179); gotoxy(32,4+j);putch(179); gotoxy(44,4+j);putch(179); gotoxy(15,4);cprintf(point); gotoxy(24,4);cprintf(X axis value ); gotoxy(35,4);cprintf(Y axis value); gotoxy(15,6);cprintf(P1 point); gotoxy(15,8);cprintf(P2 point); gotoxy(15,10);cprintf(P3 point); gotoxy(15,12);cprintf(P4 point); gotoxy(24,6);cprintf(%0.2f,x1); gotoxy(35,6);cprintf(%0.2f,y1); gotoxy(24,8);cprintf(%0.2f,x2); gotoxy(35,8);cprintf(%0.2f,y2); gotoxy(24,10);cprintf(%0.2f,x3); gotoxy(35,10);cprintf(%0.2f,y3); gotoxy(24,12);cprintf(%0.2f,x4); gotoxy(35,12);cprintf(%0.2f,y4); gotoxy(10,18); cprintf(return main menu y/n?); scanf(%s,&xz); switch(xz) case y:main();break; case n:outdata();break; printf(nnnnnnnn);int photo() int driver,mode; int BS44=-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0; float CZP_x41,CZP_y41; double TN+1,PT_xN+1=0,PT_yN+1=0,PX14=0,PY14=0; double TT14,TT214; int i,j,k,l; int xmax,ymax,midx,midy; char xz; CZP_x00=x1;CZP_x10=x2;CZP_x20=x3;CZP_x30=x4; CZP_y00=y1;CZP_y10=y2;CZP_y20=y3;CZP_y30=y4; /*aa*/ for(i=0;i=N;i+) Ti=i*BC; TT00=Ti*Ti*Ti; TT01=Ti*Ti; TT02=Ti; TT03=1; for(j=0;j4;j+) for(k=0;k4;k+) PX0j+=TT0k*BSjk; PY0j+=TT0k*BSjk; for(l=0;l=1;i-) PT_xi-=PT_xi-1; PT_yi-=PT_yi-1; driver=VGA;mode=VGAMED; initgraph(&driver,&mode,); setgraphmode(mode); /*clear */ cleardevice(); xmax=getmaxx(); ymax=getmaxy(); midx=xmax/2; midy=ymax/2; for(i=0;iN;i+) PT_xi=PT_xi+midx; PT_yi=-PT_yi+midy; setcolor(14); line(0,midy,xmax,midy); line(midx,0,midx,ymax); settextjustify(CENTER_TEXT, CENTER_TEXT); outtextxy(midx, midy,o); setcolor(3); /*pl*/ line(x1+midx,-y1+midy,x2+midx,-y2+midy); line(x2+midx,-y2+midy,x3+midx,-y3+midy); line(x3+midx,-y3+midy,x4+midx,-y4+midy); setcolor(5); for(i=0;iN-1;i+) line(PT_xi,PT_yi,PT_xi+1,PT_yi+1); /*aaa*/ gotoxy(0,100); printf(renturn main menu y/n?); scanf(%s,&xz); switch(xz) case y:main();break; case n:photo();break; P3P1P0P2 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 实验三 CAD/CAM集成一、实验目的1、 了解特征设计在CAD/CAM集成中的意义;2、 熟悉特征的种类的划分及特征拼合的基本方法,了解参数化设计方法。3、 了解各种计算机绘图软件的同时,掌握计算机绘图的系统知识,培养独立上机绘制二维、三维图形的能力, 4、熟悉由CAD工程图生成NC数控代码,图像编程的工作过程。即:熟悉标准及代码(ISO、EIA)。主要包括ASC码形成的刀位数据文件、刀具清单、操作报告、中间模型和机床控制文件。二、实验原理应用计算机图形交互技术的数控加工程序自动编程系统,利用计算机键盘、鼠标等输入设备通过交互式操作,建立、编辑零件轮廓的几何模型,选择加工工艺,生成刀具运动轨迹,模拟数控加工过程,最后生成数控加工程序。三、实验设备1、一套三维CAD/CAM集成系统2、数控机床四、实验内容及步骤 一)、简单零件特征造型设计Pro/E有零件设计、加工模拟、装配、工程图、有限元分析等几个功能模块。我们首先设计一个零件,采用逆向设计,生成一个立体零件,也可利用CAD工程图。Pro/E是先设计零件的实体,而后经对应的投影生成对应的三视图、剖面和局部视图等。我们先设计一个实体零件,三维图形状及尺寸如图1所示:Pro/E进行实体设计时先设计2D平面图,然后进行拉伸、挖剪、扫描、旋转、混合等操作而生成三维立体图。那么,我们先进行2D设计,进入二维状态。1 、进入Pro/E系统后,在主菜单的File / NEW 选Part / name 命名 OK2 、建立坐标系 在浮动菜单Menu Manager 中 Feature / Create / Datum / plan / Default 生成三维坐标系。如图所示,首先生成长方体然后再挖剪P字。(一)、拉伸创建实体Create / Solid / Protrusion / Extrude / Solid / Done One side / DoneSetup plan / plan / Pick 选 DTM3(箭头指向外,即要拉伸的方向) / OKTop / 选DTM2(进入2D模式)图 1 加工零件4 、设计平面图Sketch / rectangle (用鼠标左键拖动对角线生成) 标注尺寸:Dimension (用鼠标中键选定放置位置,可用左键+shift键合用代替。)尺寸修改 Modify 选尺寸进行修改。如下图2:Regenerate / DoneBlind / Done 拉伸厚度为 5 OK(二)、挖剪实体 P 字我们要在所设计的立方体的前面挖一个P字,那么要选定前面为基面画一个P字,或写一个P字进行CUT操作。Feature / Create / Solid / Cut / Extrude / Solid / DoneOne side / DonePlane / Pick 选实体的前面,红箭头向内,否则选 Flid / okeyTop 选顶面。Sketch / Line / 2 point (画图直线) / Arc / 3 point (画半圆,选两点,画半圆,系统默认相切,如不相切,可将图缩小比例在分辨率低的时认为相切,其它作图也如此。)标注尺寸:Dimension / (尺寸要标注全)Modify / 选尺寸进行修改。如下图3所示:图2Regeneration / Done / Done (红箭头指向p字的内侧)Blind / Done / 2 / OK选视图的Default 视图保存,或另存, 命名。生成三维实体零件后,进入Drawing模块很容易得到三视图、剖视图、局部视图等。由于是尺寸驱动,修改任意视图的尺寸,其余各视图都对应同时改变。图 3二)、零件数控加工程序编制Pro/NC能生成数控加工的全过程。可生成的文件包括:ASC码形成的刀位数据文件、刀具清单、操作报告、中间模型和机床控制文件。工作过程如下图4所示:由流程图可看出,首先要定义加工模型和参数,然后建立不同的加工工序,最后生成刀位轨迹,并进行后置处理。加工模型工件设计模型建立加工数据库夹具机床刀具建立操作定义NC操作建立刀位数据文件后置处理图 4Pro/NC 工作步骤:1、 创建或检索加工模型2、 建立加工数据库,包括:l 定义NC工序所使用的机床。l 选取创建所使用的刀具。l 定义夹具。l 设置加工参数。l 建立刀位CL数据的输出格式。3、 建立一个操作l 提供操作名。l 指定NC工序所使用的机床。l 选取或创建坐标系。l 指定操作参数。l 定义起始/停止点。4、 定义操作的NC工序,指定NC工序类型后需要做:l 选取或创建所制定的刀具。l 设置加工参数。l 选取或创建坐标,已确定工件在机床上的位置。如果需要,可定义一个退刀面。l 为NC工序指定几何参照对象。l 定义刀具轨迹的起点和终点。5、 模拟去除材料的过程,为NC工序提供基于几何参照对象的自动材料去除过程。6、 对NC工序进行修改;更换刀具、参数、切削运动尺寸等,也可重新定义NC工序的方法或其从属操作。7、 生成并保存刀具文件,并可同时将刀为文件后处理为NC机床控制文件。(一)、 加工模式选主菜单命令File / New选Manufacturing类型,Sub_Type选 NC_Assemble。输入加工文件名 / OK。进入加工模式,该模式下的主要功能有:Mfg Model 生成加工模式Mfg Setup 设置加工环境Machining 定义、验证、处理刀具轨迹。CL date 生成活修改刀位输出。 创建被加工零件(装配件加工)MANUFACTURE / MFG Model / Assemble / Ref Model在弹出的窗口中选取所要加工的零件 / openCreate / Workpiece 输入工件名 / 回车。开始创建工件毛坯,与在零件模式下过程一致。Solid / Protrusion / Extrude / Solide / DoneOne side / Done选择零件的后表面为草图平面。Plane / Query Sel 选零件的右侧,选Next 后面变红,Accept。选File时红箭头向外(向外拉伸) / OKTop 选上表面。进入草图模式。选SKETCHER / Geom Tool / Use Edge依次选取零件的外轮廓四边为工件的截面,变为红色, / DoneBlind / Done 输入厚度值 回车 / OK将视图放置为缺省值Done / Return(二)、 建加工数据库这里我们夹具不定义,取默认设定。定义一个操作。Mfg / Setup / Operation / Done Oper / mill / 3 Axis / Done / Done上述过程定义了一个三坐标的铣床,下一步定义机床坐标。MACH CSYS / Create / Pick 选取零件毛坯,此时零件变为红色。Pnt + 2Axes / Done (一点两边,红箭头为当前坐标轴,选垂直屏幕方向为Z轴。) 如下图5所示:选X_Axis、 Y_Axis图 5Do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论