零件加工方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零件加工方案相关的知识,希望对你有一定的参考价值。
任选一个简单零件,对其进行外圆、内孔或平面加工,为其设定加工方案,包括加工方法,加工阶段,工序顺序,机床和工夹具选择,加工余量(说明工艺制定的原因,分析加工过程中可能发生的问题) 字数500字以上 请各位大虾帮忙哦~
你说的是车削加工,不同零件和不同机床采用的加工工艺也有所不同,
1.一般先粗加工,余量可视机床精度而定,正常情况下先对加工基准进行加工,
因为一般车床加工都采用三爪装夹,如果基准是毛坯面,在粗车工程中受切削力和震动情况下基准是会变的,
粗加工一般都先加工外圆,正常情况下要留一刀到两刀的车削余量,在车削加工中0.7mm左右叫精车一刀量,
2.精加工,通用夹具是软爪,仪表车用夹头(精度不高),
如果是薄壁零件,不管先加工外圆或内孔,最后都无法消除变形,常用的解决办法是采用轴向装夹,要用特殊夹具或用心轴装夹。
3.车内孔时,不管内孔里有什么内容,最大的难题就是震动,越小的孔越难加工,
要尽可能增加孔刀截面积,一般半径方向留1~2mm退刀余量就可以了,刀杆最好是圆形,刀主切削刃处于过刀杆轴线纵剖面内,刀杆长度只要不干涉越短越好,
内孔刀圆弧后刀面刃磨时非常有讲究,是内孔加工中技术含量非常高的地方,也是解决振刀纹的主要方面,我在这方面有一定的研究,如果有需要可以探讨一下
4.其实上面谈的基本是上层方面的,还有非常重要的就是刀具的刃磨,如果刀具刃磨不好,就很难加工出合格的零件,a.首先是刀具的材料,不同零件材料,使用的刀具材料也不一样,不锈钢、紫铜、脆性材料要用钨钴类刀具,一般碳钢等塑性材料用钨钴钛类刀具,硬度很高的材料要用YW系列的刀具,即钨钴钛钽铌类的刀具,b.很重要的一点,砂轮,砂轮自砺性要好,砂轮机刚度要好,砂轮机最好两台,一台安装棕刚玉的砂轮(磨硬质合金),一台装白刚玉砂轮(磨高速钢),
如果在一台砂轮机上同时装上述两种砂轮,很难磨出符合标准的刀具。
5.一般加工零件都是先加工外圆留余量,再加工内孔留余量,精加工时先加工内孔,再加工外圆,因为外圆加工变形相对内孔加工要小一点,
6.零件加工是一种实践性非常强的工作,需要长时间的实际操作,来验证你的想法 参考技术A 机械零件加工工艺制订的方法
1、毛坯的选择
2、加工余量的确定
3、加工阶段的划分
4、定位基准的选择
5、各种表面加工方案的选择
(1)外圆表面的加工方案
(2)内孔的加工方案
(3)平面的加工方案 参考技术B aa
题解 P5663 加工零件民间数据
讲讲我的做法
确定做法
首先,看到这道题,我直接想到的是递归,于是复杂度就上天了,考虑最短路。
如何用最短路
首先,看一张图
我们该如何解决问题?
问题:(3)做(5)阶段的零件(1)要不要做呢?
其实,实质就是看(3)到(1)有没有长度为(5)的路径。
问题:(3)做(7)阶段的零件(1)要不要做呢?
其实,实质就是看(3)到(1)有没有长度为(7)的路径。
问题:(3)做(6)阶段的零件(1)要不要做呢?
其实,实质就是看(3)到(1)有没有长度为(7)的路径。
仔细思考这(3)个问题,我们会发现,如果(3)到(1)有长度为(5)的路径,那么(3)到(1)一定有长度为(7)的路径,但并不一定有长度为(6)的路径。
所以,我们要对每个点求一遍奇数路径,和偶数路径。
实现最短路
最短路的算法有很多,这道题最好用(dijkstra),或(bfs)。
这道题的时限并不紧,并且(dijkstra)细节太多,我就来演示(bfs)实现的最短路
void bfw(){//我有一个好朋友叫bfw,所以我写bfs时,喜欢把函数名起为bfw
memset(ji,0x3f,sizeof(ji));//奇数最短路径
memset(ou,0x3f,sizeof(ou));//偶数最短路径
queue<pair<int,int> >q;
q.push(make_pair(1,0));
ou[1]=0;
while(q.size()){
int x=q.front().first,y=q.front().second;
for(int i=0;i<v[x].size();i++){
if(y%2==1){//奇数+1=偶数
if(y+1<ou[v[x][i]]){
ou[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}else{//偶数+1=奇数
if(y+1<ji[v[x][i]]){
ji[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}
}
q.pop();
}
}
(v)数组是一个动态数组,也就是(vector),曹老师教我们多用(STL)写程序
如果你写这样的(bfs)民间数据会(WA) (1)个点 ,这个点是这样的
(1)号点是一个孤点,没有偶数路径,所以,我们的(bfs)要这么写
void bfw(){//我有一个好朋友叫bfw,所以我写bfs时,喜欢把函数名起为bfw
memset(ji,0x3f,sizeof(ji));//奇数最短路径
memset(ou,0x3f,sizeof(ou));//偶数最短路径
queue<pair<int,int> >q;
for(int i=0;i<v[1].size();i++){
ji[v[1][i]]=1;
q.push(make_pair(v[1][i],1));
}
while(q.size()){
int x=q.front().first,y=q.front().second;
for(int i=0;i<v[x].size();i++){
if(y%2==1){//奇数+1=偶数
if(y+1<ou[v[x][i]]){
ou[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}else{//偶数+1=奇数
if(y+1<ji[v[x][i]]){
ji[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}
}
q.pop();
}
}
简要讲解主程序
有了这些主程序应该是很简单的了
int main(){
int n,m,q;
read(n);read(m);read(q);
for(int i=1;i<=m;i++){
int x,y;
read(x);read(y);//无向边
v[x].push_back(y);//连边
v[y].push_back(x);//连边
}
bfw();//跑最短路
while(q--){
int x,y;
read(x);read(y);
if(y%2==0){
if(ou[x]>y)puts("No");//如果大于就不可能了
else puts("Yes");
}else{
if(ji[x]>y)puts("No");//如果大于就不可能了
else puts("Yes");
}
}
return 0;
}
总结
先来看一看这题完整的代码了
#include <bits/stdc++.h>
using namespace std;
template<typename T>inline void read(T &FF){
T RR=1;FF=0;char CH=getchar();
for(;!isdigit(CH);CH=getchar())if(CH=='-')RR=-1;
for(;isdigit(CH);CH=getchar())FF=(FF<<1)+(FF<<3)+(CH^48);
FF*=RR;
}
template<typename T>void write(T x){
if(x<0)putchar('-'),x*=-1;
if(x>9)write(x/10);
putchar(x%10+48);
}
vector<int>v[100010];
int ji[100010],ou[100010];
void bfw(){//我有一个好朋友叫bfw,所以我写bfs时,喜欢把函数名起为bfw
memset(ji,0x3f,sizeof(ji));//奇数最短路径
memset(ou,0x3f,sizeof(ou));//偶数最短路径
queue<pair<int,int> >q;
for(int i=0;i<v[1].size();i++){
ji[v[1][i]]=1;
q.push(make_pair(v[1][i],1));
}
while(q.size()){
int x=q.front().first,y=q.front().second;
for(int i=0;i<v[x].size();i++){
if(y%2==1){//奇数+1=偶数
if(y+1<ou[v[x][i]]){
ou[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}else{//偶数+1=奇数
if(y+1<ji[v[x][i]]){
ji[v[x][i]]=y+1;//更新答案
q.push(make_pair(v[x][i],y+1));
}
}
}
q.pop();
}
}
int main(){
int n,m,q;
read(n);read(m);read(q);
for(int i=1;i<=m;i++){
int x,y;
read(x);read(y);//无向边
v[x].push_back(y);//连边
v[y].push_back(x);//连边
}
bfw();//跑最短路
while(q--){
int x,y;
read(x);read(y);
if(y%2==0){
if(ou[x]>y)puts("No");//如果大于就不可能了
else puts("Yes");
}else{
if(ji[x]>y)puts("No");//如果大于就不可能了
else puts("Yes");
}
}
return 0;
}
这道题还是比较有思维含量的,民间数据也出的很好,让我们思考全面。
最后,还是希望大家不懂就在评论区问,觉得好就点赞!
以上是关于零件加工方案的主要内容,如果未能解决你的问题,请参考以下文章
怎样备份FANUC 0i零件加工程序、PMC程序、PMC 参数,CNC参数、螺距补偿、宏变量数据需要备份,对于数控机