实验报告
实验课程:模具CAD/CAM
学生姓名:
学号:
专业班级:
目录
实验一基于UG的铸造模具设计 (3)
实验二数据资料的程序化处理 (5)
实验三图形变换程序设计 (13)
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验一基于UG的铸造模具设计
一、实验项目名称
基于UG的铸造模具设计
二、实验目的
学习掌握UG在模具设计中的运用,让学生能熟练的运用UG的基本功能建立铸件和模
三、实验步骤
1、绘制轴承座铸件
2、绘制铸件三视图
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:3、绘制型心及浇注系统
4、绘制上模
5、绘制下模
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:6、绘制爆炸图
7、绘制三维装配图
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:
实验二数据资料的程序化处理
一、实验目的:
在进行模具CAD/CAM过程中,常常会遇到数表问题。通常我们都要进行数表程序化操作。数表程序化就是用程序完整、准确的描述不同函数关系的数表,以便在运行过程中迅速、有效的检索和使用数表中的数据。
本实验的目的就是编写一段程序,解决键的查表问题,具体如下:
将平键和键槽与轴径的尺寸关系数表程序化。要求在程序中输入轴径后,能输出相应的键和键槽的剖面尺寸。
注:在满足传递所需要转矩条件下,允许用较小剖面的键,但应使键侧与轴槽及轮槽接触高度各为h/2。
二、实验步骤:
1、问题分析
从上表中可以看出数据有如下特点:
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:
1)项目多、确定而无规律。
2)每组键槽尺寸要适应一定范围尺寸的轴径使用。
3)标准附注功能应在程序中予以体现。为此,编程前需要推导出小一挡键的剖
面尺寸b、h、与轴径d的几何关系,从而计算出t和t1。
根据上图所示的平键和键槽尺寸参数示意图,可以推导出以下关系:
设t'和t1'为满足键侧与轴槽及轮槽接触高度各为h/2条件时键槽的尺寸参数,则有:
其中,t'和t1'为正常档次标准键槽尺寸参数。
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:2、编程思路
根据上述分析,可采用定义多个一维数组或一个二维数组的办法存储数据,程序运行时,判断选取。至于是否选用小档键,应根据传递转矩的大小来决定,下图为程序流程图。
3、编写程序
#include
//#include
//#include
//#include
//#include
//#include
using namespace std;
class Ax_bond //轴键Axletree_bond建立一个轴键参数的类
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:{
int d;
int b;
int h;
double t;
double t1;
double t_next;
double t1_next;
public:
Ax_bond(int D,int B,int H,double T,double T1,double T_n=0,double T1_n=0)
{
d=D;
b=B;
h=H;
t=T;
t1=T1;
t_next=T_n;
t1_next=T1_n;
}
Ax_bond()
{
d=0;
b=0;
h=0;
t=0;
t1=0;
t_next=0;
t1_next=0;
}
void insert(int D,int B,int H,double T,double T1,double T_n=0,double T1_n=0)
{
d=D;
b=B;
h=H;
t=T;
t1=T1;
学生姓名:学号:专业班级:
实验类型:□验证□综合□设计□创新实验日期:实验成绩:t_next=T_n;
t1_next=T1_n;
}
void show()
{
cout<<"d(直径)="< } void next() { t_next=t-(t+t1-h); t1_next=t1+(t+t1-h); } void shown(int dia) { cout<<"d(直径)="< } int dia() { return d; } ~Ax_bond() { } }; //void insertItem(Ax_bond *& head,Ax_bond *& tail,Ax_bond *& temp); //struct node //{ // Ax_bond c; // node *next; // //}; int main(int argc, char*argv[]) { 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩:int d=0; Ax_bond array[12];//存储数据 array[0].insert(22,6,6,3.5,2.8); array[1].insert(30,8,7,4.0,3.3); array[2].insert(38,10,8,5.0,3.3); array[3].insert(44,12,8,5.0,3.3); array[4].insert(50,14,9,5.5,3.8); array[5].insert(58,16,10,6.0,4.3); array[6].insert(65,18,11,7.0,4.4); array[7].insert(75,20,12,7.5,4.9); array[8].insert(85,22,14,9.0,5.4); array[9].insert(95,25,14,9.0,5.4); array[10].insert(110,28,16,10.0,6.4); array[11].insert(130,32,18,11.0,7.4); cout<<"Let's begin!"< cout<<"输入轴径(d):"; cin>>d; while(d>130) { cout<<"轴径过大——d>130"< cout<<"请重新输入:"; cin>>d; } int i; for(i=0;;i++) { if(d<=array[i+1].dia()&&d>array[i].dia()) { array[i+1].show(); bool change=true; cout<<"想减小一档吗:(想——输入1、不想——输入0):"; cin>>change; if(change) { array[i+1].next(); array[i+1].shown(d); break; } else 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩:break; } } } 三、实验结果: 输入轴径(d):120 d(直径)=130 ,b(键宽)=32 ,h(键高)=18 ,t(槽深)=11 ,t1=7.4 想减小一档吗:(想——输入1、不想——输入0):1 d(直径)=120 ,b(键宽)=32 ,h(键高)=18 ,t(槽深)=10.6 ,t1=7.8 南昌大学实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 实验三图形变换程序设计 一.实验目的: 在模具CAD中,经常会遇到非基本变换的情况,需要相对于任意点或任意轴来进行变换。为了做到这一点,可通过计算多个基本变换矩阵的乘积来得到总的变换矩阵或称为复合变换矩阵,从而实现任意顺序的组合变换。 本实验的目的是就是利用课程中所学到的各种基本变换方法,编写一个程序,对一个简单图形进行复合变换,使得大家深入的了解图形变换的方法和技巧。 二.实验任务: 需要变换的图形如下图所示: 图中三角形的三个角点的坐标分别为: 顶点(10,20),左角点(7,10),右角点(13,10),旋转中心点(10,14)要求图中的三角形绕旋转中心点逆时针旋转60°。 三.问题分析: 根据图形复合变换的方法,对整个变换进行基本变换分解,具体步骤如下:步骤1: (将选择中心点通过平移变换移动到坐标原点) 步骤2: 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: (利用旋转变换,将图形绕坐标原点逆时针旋转60°) 步骤3: (利用平移变换,将图形的旋转中心点平移回初始点,变换结束) 用统一的变换矩阵表示如下: 四.实验提示: 程序编写可以采用两种方式来编写: 1.由于是进行同样形式的矩阵乘法,所以在编写程序是可以单独编写一个3x1 矩阵与3x3矩阵相乘的函数,在主程序中调用三次即可。该方法的好处是可以看到每一个变换步骤。 2.直接按照统一变换矩阵进行计算,可以一步到位的进行变换。 五.实验要求: 大家可采用任何语言进行编程,最后运行出结果,计算出变换后的三角形的三个顶点的坐标,并写出实验报告(附上源程序清单)。 六.编写程序: 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: #include #include //#include //#include //#include //#include using namespace std; void matrix(double *,double *,double **);//矩阵(matrix);IER(乘数);被乘数(faciend); void show_dot(double *aim);//声明坐标输出函数 int main(int argc, char*argv[]) { double acme[3]={10,20,1};//acme(顶点); double dot_left[3]={7,10,1};//dot_left(左角点); double dot_right[3]={13,10,1};//dot_right(右角点); cout<<"-------变换前!--------------"< cout<<"左角点:"; show_dot(dot_left); cout<<"右角点:"; show_dot(dot_right); cout<<"顶点:"; show_dot(acme); cout<<"----------------------------"< cout<<".................................."< cout<<"............转换中................."< cout<<".................................."< double Acme[3]={0};//目标顶点); double Dot_left[3]={0};//目标(左角点); double Dot_right[3]={0};//目标(右角点); double tran_matrix[3][3]={{0.5,0.866,0},{-0.866,0.5,0},{17.124,-1.66,1}};//t ransformation matrix(变换矩阵); // double *A=Acme; // double *a=acme; double *t[3]={tran_matrix[0],tran_matrix[1],tran_matrix[2]}; matrix(Acme,acme,t); matrix(Dot_left,dot_left,t); matrix(Dot_right,dot_right,t); 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: cout<<"-------变换后!--------------"< cout<<"左角点:"; show_dot(Dot_left); cout<<"右角点:"; show_dot(Dot_right); cout<<"顶点:"; show_dot(Acme); cout<<"-----------结束!----------\n"; } void matrix(double *aim,double *faciend,double *ier[3])//矩阵乘法{ for(int i=0;i<3;i++) { double temp_sum=0; for(int j=0;j<3;j++) { temp_sum+=faciend[j]*ier[j][i]; } aim[i]=temp_sum; } } void show_dot(double *aim)//坐标输出函数 { cout<<" X="< cout<<" Y="< cout< } 结果: -------变换前!-------------- 左角点: X=7 Y=10 右角点: X=13 Y=10 顶点: X=10 Y=20 ---------------------------- .................................. ............转换中................. 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩:.................................. -------变换后!-------------- 左角点: X=11.964 Y=9.402 右角点: X=14.964 Y=14.598 顶点: X=4.804 Y=17 -----------结束!----------