中南大学CAD/CAM技术及应用试题及答案
中南大学网络教育课程考试
《CAD/CAM技术及应用》试题
考试说明:
1.首先下载试题及《标准答卷模版》,完成答题后,答卷从网上提交。
2.答卷电子稿命名原则:学号.doc。如:11031020512002.doc。
3.网上提交截止时间:2014年12月17日18:00。
试题:(注:一、二、三、四题为必做题,五、六题选做其中一题,在答题纸中写清题号即可。)
一、简要叙述产品数据管理(PDM)的基本概念、基本功能、体系结构,并分析在企业实施产品数据管理
(PDM)的意义。(20分)
二、简要叙述有限元分析的基本原理、主要步骤和能够完成的主要任务。(20分)
三、某零件的三维图如下所示(从清晰性考虑,给出了两种三维图,尺寸自定)。
(1)分析指出该零件由哪些形状特征组成(绘简图说明)。(10分)
(2)简述用UG实现下图所示零件三维造型的步骤(分步骤进行文字说明,并配适当的简图说明)。(10分)
四、采用立式数控铣床在一长方形毛坯工件上铣削如下图所示凸模(尺寸自定),工件材料为铸铁,先使
用Φ20mm圆柱平底立铣刀进行底面和侧面加工,再使用Φ12mm球头铣刀进行上表面加工。如采用UG 软件进行数控加工编程,简要说明在UG软件环境下编制该凸模数控加工程序的步骤(分步骤进行文字说明,并配适当的简图说明)。(20分)
五、下图所示机构由如下七个零件组成。在UG中已完成七个零件的三维建模,如需继续在UG中对其进行
装配建模,得到如下图所示的三维装配模型。试给出建立该机构三维装配模型的主要步骤(分步骤进行文字说明,并配适当的简图说明)。(20分)
六、某线图的五个点如下左图所示,各点坐标如右表所示。(20分)
(1)采用最小二乘法进行线性拟合,方程形式为y=ax+b,试绘出求线性方程系数a、b的计算机程序流程图。
(2)采用某种计算机编程语言(如C、Basic),编写求线性系数方程a、b的源程序。
中南大学网络教育课程考试
《CAD/CAM技术及应用》答卷
本人承诺:本试卷确为本人独立完成,若有违反愿意接受处理。签名________________学号______________________专业____________________学习中心___________________
一、简要叙述产品数据管理(PDM)的基本概念、基本功能、体系结构,并分析在企业实施产品数据管理(PDM)的意义。
答:
1.产品数据管理(PDM)概念:
是一门用来管理所有与产品相关的信息和所有与产品相关的过程的技术”。这个定义从广义的角度解释了PDM技术。但就现阶段PDM的发展情况而言,给出一个较为具体的定义:“PDM技术以软件技术为基础,是一门管理所有与产品相关的信息(包括电子文档、数字化文档数据库记录等)和所有与产品相关的过程(包括审批/发放、工程更改、一般流程、配置管理等)的技术。提供产品全生命周期的信息管理,并可以在企业范围内为产品设计与制造建立一个并行化的协作环境。”
2.PDM的主要功能:
PDM为企业提供了一种宏观管理和控制所有与产品相关信息以及与产品相关的机制和技术。PDM系统包含多项功能,从面向应用与系统支持的功能来看,包括电子仓库(电子数据存储、电子保险箱、电子资料室)、面向应用的使用功能,如文档控制、变更控制、配置管理、设计检索与零件库、项目管理等实用化支持功能。从软件功能模块组成来看,包括电子数据存储和文档管理、工作流程管理、产品结构管理、分类与检索管理、项目管理、集成接口、用户化工具等。
3.PDM系统的体系结构:
可以分解为以下四个层次的内容:
第一层是支持层。目前流行的商业化的关系型数据库是PDM系统的支持平台。关系型数据库提供了数据管理的最基本的功能。如存、取、删、改、查等操作。
第二层是面向对象层(产品主题化层)。由于商用关系型数据库侧重管理事务性数据,不能满足产品数据动态变化的管理要求。因此,在PDM系统中,采用若干个二维关系表格来描述产品数据的动态变化。PDM系统将其管理的动态变化数据的功能转换成几个,甚至几百个二维关系型表格,实现面向产品对象管理的要求。
第三层是功能层。面向对象层提供了描述产品数据动态变化的数学模型。在此基础上,根据PDM系统的管理目标,在PDM系统中建立相应的功能模块。一类是基本功能模块,包括文档管理、产品配置管理、工作流程管理、零件分类和检索及项目管理等;另一类是系统管理模块,包括系统管理和工作环境。系统管理主要是针对系统管理员如何维护系统,确保数据安全与正常运行的功能模块。工作环境主要保证各类不同的用户能够正常、安全、可靠地使用PDM系统,既要求方便、快捷,又要求安全、可靠。
第四层是用户层,包括开发工具层和界面层。不同的用户在不同的计算机上操作PDM系统都要提供友好的人机交互界面。根据各自的经营目标,不同企业对人机界面会有不同的要求。因此,在PDM系统中,通常除了提供标准的、不同硬件平台上的人机界面外,还要提供开发用户化人机界面的工具,以满足各类用户不同的特殊要求。
整个PDM系统和相应的关系型数据库(如 Oracle都建立在计算机的操作系统和网络系统的平台上。同时,还有各式各样的应用软件,如CAD、CAPP、CAM、CAE、CAT、文字处理、表格生成、图象显示和音像转换等等。在计算机硬件平台上,构成了一个大型的信息管理系统,PDM将有效地对各类信息进行合理、正确和安全的管理。
4. 在企业实施产品数据管理(PDM)的意义:以往计算机技术在工程领域的广泛应用主要表现在工具的自动化方面。例如在工程部门普遍使用计算机辅助计算、设计、分析、仿真、加工和工艺规划等技术,明显提高了产品的设计和制造水平;在管理部门广泛使用计算机办公自动化技术,大大提高了各职能部门的劳动生产率;在生产制造部门积极推广计算机实时测量和控制技术,在保证产品质量方面取得显著的效果。计算机作为工程自动化技术的工具,在各行各业中所起的重要作用已经是无可质疑。根据一分为二的观点,计算机变手工作业为自动化操作,无疑提高了生产力,同时对原来手工管理体系也带来巨大的冲击。无论是制造业,还是各种各样的设计院,现有的面向纸介质的信息管理体系无法适应电子信息时代的要求。因此,人们迫切需要一种电子化的管理手段,改变现行的落后的生产关系,进一步解放计算机技术创造的前所未有的生产力,巩固和加强企业的竞争能力。PDM就是一门计算机管理产品整个生命周期内全部信息的电子化的管理技术。它对产品开发过程的TQCS指标将产生巨大影响,彻底改变历来作坊式的产品开发模式和知识私有的状况,快速形成团队式的产品开发队伍,成倍提高现有的劳动生产率,为整个企业的信息集成和迈向国际先进行列打下坚实的基础
二、简要叙述有限元分析的基本原理、主要步骤和能够完成的主要任务。
答:
1.有限元分析的基本原理
有限元分析是用较简单的问题代替复杂问题后再求解。它将求解域看成是由许多称为有限元的小的互连子域组成,对每一单元假定一个合适的(较简单的)近似解,然后推导求解这个域总的满足条件(如结构的平衡条件),从而得到问题的解。这个解不是准确解,而是近似解,因为实际问题被较简单的问题所代替。由于大多数实际问题难以得到准确解,而有限元不仅计算精度高,而且能适应各种复杂形状,因而成为行之有效的工程分析手段。
2. 有限元分析的主要步骤
有限元求解问题的基本步骤通常为:
第一步:问题及求解域定义:根据实际问题近似确定求解域的物理性质和几何区域。
第二步:求解域离散化:将求解域近似为具有不同有限大小和形状且彼此相连的有限个单元组成的离散域,习惯上称为有限元网络划分。显然单元越小(网格越细)则离散域的近似程度越好,计算结果也越精确,但计算量及误差都将增大,因此求解域的离散化是有限元法的核心技术之一。
第三步:确定状态变量及控制方法:一个具体的物理问题通常可以用一组包含问题状态变量边界条件的微分方程式表示,为适合有限元求解,通常将微分方程化为等价的泛函形式。
第四步:单元推导:对单元构造一个适合的近似解,即推导有限单元的列式,其中包括选择合理的单元坐标系,建立单元试函数,以某种方法给出单元各状态变量的离散关系,从而形成单元矩阵(结构力学中称刚度阵或柔度阵)。
第五步:总装求解:将单元总装形成离散域的总矩阵方程(联合方程组),反映对近似求解域的离散域的要求,即单元函数的连续性要满足一定的连续条件。总装是在相邻单元结点进行,状态变量及其导数(可能的话)连续性建立在结点处。
第六步:联立方程组求解和结果解释:有限元法最终导致联立方程组。联立方程组的求解可用直接法、迭代法和随机法。求解结果是单元结点处状态变量的近似值。对于计算结果的质量,将通过与设计准则提供的允许值比较来评价并确定是否需要重复计算。
3.有限元分析的能够完成的主要任务:
最早应用于航空航天领域,主要用来求解线性结构问题,实践证明这是一种非常有效的数值分析方法。而且从理论上也已经证明,只要用于离散求解对象的单元足够小,所得的解就可足够毕竟于精确值。现在用于求解结构线性问题的有限元方法和软件已经比较成熟,发展方向是结构线性、流体动力学和耦合场问题的求解。例如由于摩擦接触而产生的热问题,金属成形时由于塑性功而产生的热问题,需要结构场和温度场的有限元分析结果交叉迭代求解,即“热力耦合”的问题。当流体在弯管中
流动时,流体压力会使弯管产生变形,而管的变形又反过来影响到流体的流动。这就需要对结构场和流场的有限元分析结果交叉迭代求解,即所谓“流固耦合”的问题。
三、某零件的三维图(1)分析指出该零件由哪些形状特征组成。(2)简述用UG实现下图所示零件三维造
型的步骤。
答:
1.形状特征:底座圆盘,凸台,加强筋,沉头孔,倒角,圆角
2.步骤如下:
1)用回转实体做出圆盘
2)拉伸实体做出加强筋
3)使用圆形阵列,步骤2的加强筋
4)用孔工具做出沉头孔
5)方法同步骤3,圆形阵列沉头孔
6)圆角,倒角修饰下即可
四、采用立式数控铣床在一长方形毛坯工件上铣削如下图所示凸模(尺寸自定),工件材料为铸铁,先使用Φ20mm圆柱平底立铣刀进行底面和侧面加工,再使用Φ12mm球头铣刀进行上表面加工。如采用UG 软件进行数控加工编程,简要说明在UG软件环境下编制该凸模数控加工程序的步骤
答:
1.创建程序并命名。
2.创建刀具直径12和直径6,指定加工几何体和毛坯。
3.创建粗加工方法,用型腔铣(mill—contour—CAVITY—mill)刀具直径12,余量留0.5mm。
4.创建精加工方法,铣凸台,用曲面铣(mill—contour—fixed—contour)刀具直径6。
5.创建精加工方法,使凹面,使用深度加工轮廓(mill—contour—ZLEVEL—profile)刀具直径12mm。
6.最后光底面,采用挖槽,刀具D10,因为这样可以节约换刀时间,这里需要在切削层里面选择仅在范围底部。
六、某线图的五个点如下左图所示,各点坐标如右表所示。
(1)采用最小二乘法进行线性拟合,方程形式为y=ax+b,试绘出求线性方程系数a、b的计算机程序流程图。
(2)采用某种计算机编程语言(如C、Basic),编写求线性系数方程a、b的源程序。
答:
1.由定义x=[1 2 3 4 5],y=[1.4 1.5 1.7
2.2 3]得到插补值函数
P(x)=y1l0(x)+y2l1(x)+y3l2(x)+y4l3(x)+y5l4(x)即所求流程图。
2.编程:
xOffset = 1;
if (nargin==2) || ...
(nargin==3 && ischar(varargin{3})) || ...
(nargin==4 && (~ischar(varargin{4}) || strcmp(varargin{4}, 'extrap'))); xOffset = 0;
end
ppOutput = false;
% PP = INTERP1(X,Y,METHOD,'pp')
if nargin>=4 && ischar(varargin{3}) && isequal('pp',varargin{4})
ppOutput = true;
if (nargin > 4)
error('MATLAB:interp1:ppOutput', ...
'Use 4 inputs for PP=INTERP1(X,Y,METHOD,''pp'').')
end
end
% Process Y in INTERP1(Y,...) and INTERP1(X,Y,...)
y = varargin{1+xOffset};
siz_y = size(y);
% y may be an ND array, but collapse it down to a 2D yMat. If yMat is
% a vector, it is a column vector.
if isvector(y)
if size(y,1) == 1
% Prefer column vectors for y
yMat = y.';
n = siz_y(2);
else
yMat = y;
n = siz_y(1);
end
ds = 1;
prodDs = 1;
else
n = siz_y(1);
ds = siz_y(2:end);
prodDs = prod(ds);
yMat = reshape(y,[n prodDs]);
end
% Process X in INTERP1(X,Y,...), or supply default for INTERP1(Y,...) if xOffset
x = varargin{xOffset};
if ~isvector(x)
error('MATLAB:interp1:Xvector','X must be a vector.');
end
if length(x) ~= n
if isvector(y)
error('MATLAB:interp1:YInvalidNumRows', ...
'X and Y must be of the same length.')
else
error('MATLAB:interp1:YInvalidNumRows', ...
'LENGTH(X) and SIZE(Y,1) must be the same.');
end
end
% Prefer column vectors for x
xCol = x(:);
else
xCol = (1:n)';
end
% Process XI in INTERP1(Y,XI,...) and INTERP1(X,Y,XI,...)
% Avoid syntax PP = INTERP1(X,Y,METHOD,'pp')
if ~ppOutput
xi = varargin{2+xOffset};
siz_xi = size(xi);
% xi may be an ND array, but flatten it to a column vector xiCol xiCol = xi(:);
% The size of the output YI
if isvector(y)
% Y is a vector so size(YI) == size(XI)
siz_yi = siz_xi;
else
if isvector(xi)
% Y is not a vector but XI is
siz_yi = [length(xi) ds];
else
% Both Y and XI are non-vectors
siz_yi = [siz_xi ds];
end
end
end
if xOffset && ~isreal(x)
error('MATLAB:interp1:ComplexX','X should be a real vector.')
if ~ppOutput && ~isreal(xi)
error('MATLAB:interp1:ComplexInterpPts', ...
'The interpolation points XI should be real.')
end
% Error check for NaN values in X and Y
% check for NaN's
if xOffset && (any(isnan(xCol)))
error('MATLAB:interp1:NaNinX','NaN is not an appropriate value for X.'); end
% NANS are allowed as a value for F(X), since a function may be undefined
% for a given value.
if any(isnan(yMat(:)))
warning('MATLAB:interp1:NaNinY', ...
['NaN found in Y, interpolation at undefined values \n\t',...
' will result in undefined values.']);
end
if (n < 2)
if ppOutput || ~isempty(xi)
error('MATLAB:interp1:NotEnoughPts', ...
'There should be at least two data points.')
else
yi = zeros(siz_yi,superiorfloat(x,y,xi));
varargout{1} = yi;
return
end
end
% Process METHOD in
% PP = INTERP1(X,Y,METHOD,'pp')
% YI = INTERP1(Y,XI,METHOD,...)
% YI = INTERP1(X,Y,XI,METHOD,...)
% including explicit specification of the default by an empty input.
if ppOutput
if isempty(varargin{3})
method = 'linear';
else
method = varargin{3};
end
else
if nargin >= 3+xOffset && ~isempty(varargin{3+xOffset})
method = varargin{3+xOffset};
else
method = 'linear';
end
end
% The v5 option, '*method', asserts that x is equally spaced.
eqsp = (method(1) == '*');
if eqsp
method(1) = [];
end
% INTERP1([X,]Y,XI,METHOD,'extrap') and INTERP1([X,]Y,Xi,METHOD,EXTRAPVAL) if ~ppOutput
if nargin >= 4+xOffset
extrapval = varargin{4+xOffset};
else
switch method(1)
case {'s','p','c'}
extrapval = 'extrap';
otherwise
extrapval = NaN;
end
end
end
% Start the algorithm
% We now have column vector xCol, column vector or 2D matrix yMat and
% column vector xiCol.
if xOffset
if ~eqsp
h = diff(xCol);
eqsp = (norm(diff(h),Inf) <= eps(norm(xCol,Inf)));
if any(~isfinite(xCol))
eqsp = 0; % if an INF in x, x is not equally spaced
end
end
if eqsp
h = (xCol(n)-xCol(1))/(n-1);
end
else
h = 1;
eqsp = 1;
end
if any(h < 0)
[xCol,p] = sort(xCol);
yMat = yMat(p,:);
if eqsp
h = -h;
else
h = diff(xCol);
end
end
if any(h == 0)
error('MATLAB:interp1:RepeatedValuesX', ...
'The values of X should be distinct.');
end
% PP = INTERP1(X,Y,METHOD,'pp')
if nargin==4 && ischar(varargin{3}) && isequal('pp',varargin{4})
% obtain pp form of output
pp = ppinterp;
varargout{1} = pp;
return
end
% Interpolate
numelXi = length(xiCol);
p = [];
switch method(1)
case 's' % 'spline'
% spline is oriented opposite to interp1
yiMat = spline(xCol.',yMat.',xiCol.').';
case {'c','p'} % 'cubic' or 'pchip'
% pchip is oriented opposite to interp1
yiMat = pchip(xCol.',yMat.',xiCol.').';
otherwise % 'nearest', 'linear', 'v5cubic'
yiMat = zeros(numelXi,prodDs,superiorfloat(xCol,yMat,xiCol)); if ~eqsp && any(diff(xiCol) < 0)
[xiCol,p] = sort(xiCol);
else
p = 1:numelXi;
end
% Find indices of subintervals, x(k) <= u < x(k+1),
% or u < x(1) or u >= x(m-1).
if isempty(xiCol)
k = xiCol;
elseif eqsp
k = min(max(1+floor((xiCol-xCol(1))/h),1),n-1);
else
[ignore,k] = histc(xiCol,xCol);
k(xiCol k(xiCol>=xCol(n)) = n-1; end switch method(1) case 'n' % 'nearest' i = find(xiCol >= (xCol(k)+xCol(k+1))/2); k(i) = k(i)+1; yiMat(p,:) = yMat(k,:); case 'l' % 'linear' if eqsp s = (xiCol - xCol(k))/h; else s = (xiCol - xCol(k))./h(k); end for j = 1:prodDs yiMat(p,j) = yMat(k,j) + s.*(yMat(k+1,j)-yMat(k,j)); end case 'v' % 'v5cubic' extrapval = NaN; if eqsp % Data are equally spaced s = (xiCol - xCol(k))/h; s2 = s.*s; s3 = s.*s2; % Add extra points for first and last interval yMat = [3*yMat(1,:)-3*yMat(2,:)+yMat(3,:); ... yMat; ... 3*yMat(n,:)-3*yMat(n-1,:)+yMat(n-2,:)]; for j = 1:prodDs yiMat(p,j) = (yMat(k,j).*(-s3+2*s2-s) + ... yMat(k+1,j).*(3*s3-5*s2+2) + ... yMat(k+2,j).*(-3*s3+4*s2+s) + ... yMat(k+3,j).*(s3-s2))/2; end else % Data are not equally spaced % spline is oriented opposite to interp1 yiMat = spline(xCol.',yMat.',xiCol.').'; end otherwise error('MATLAB:interp1:InvalidMethod','Invalid method.') end end % Override extrapolation if ~isequal(extrapval,'extrap') if ischar(extrapval) error('MATLAB:interp1:InvalidExtrap', 'Invalid extrap option.') elseif ~isscalar(extrapval) error('MATLAB:interp1:NonScalarExtrapValue',... 'EXTRAP option must be a scalar.') end if isempty(p) p = 1 : numelXi; end outOfBounds = xiCol yiMat(p(outOfBounds),:) = extrapval; end % Reshape result, possibly to an ND array yi = reshape(yiMat,siz_yi); varargout{1} = yi; %-------------------------------------------------------------------------% function pp = ppinterp %PPINTERP ppform interpretation. switch method(1) case 'n' % nearest breaks = [xCol(1); ... (xCol(1:end-1)+xCol(2:end))/2; ... xCol(end)].'; coefs = yMat.'; pp = mkpp(breaks,coefs,ds); case 'l' % linear breaks = xCol.'; page1 = (diff(yMat)./repmat(diff(xCol),[1, prodDs])).'; page2 = (reshape(yMat(1:end-1,:),[n-1, prodDs])).'; coefs = cat(3,page1,page2); pp = mkpp(breaks,coefs,ds); case {'p', 'c'} % pchip and cubic pp = pchip(xCol.',reshape(yMat.',[ds, n])); case 's' % spline pp = spline(xCol.',reshape(yMat.',[ds, n])); case 'v' % v5cubic b = diff(xCol); if norm(diff(b),Inf) <= eps(norm(xCol,Inf)) % data are equally spaced a = repmat(b,[1 prodDs]).'; yReorg = [3*yMat(1,:)-3*yMat(2,:)+yMat(3,:); ... yMat; ... 3*yMat(n,:)-3*yMat(n-1,:)+yMat(n-2,:)]; y1 = yReorg(1:end-3,:).'; y2 = yReorg(2:end-2,:).'; y3 = yReorg(3:end-1,:).'; y4 = yReorg(4:end,:).'; breaks = xCol.'; page1 = (-y1+3*y2-3*y3+y4)./(2*a.^3); page2 = (2*y1-5*y2+4*y3-y4)./(2*a.^2); page3 = (-y1+y3)./(2*a); page4 = y2; coefs = cat(3,page1,page2,page3,page4); pp = mkpp(breaks,coefs,ds); else % data are not equally spaced pp = spline(xCol.',reshape(yMat.',[ds, n])); end otherwise error('MATLAB:interp1:ppinterp:UnknownMethod', ... 'Unrecognized method.'); end % Even if method is 'spline' or 'pchip', we still need to record that the % input data Y was oriented according to INTERP1's rules. % Thus PPVAL will return YI oriented according to INTERP1's rules and % YI = INTERP1(X,Y,XI,METHOD) will be the same as % YI = PPVAL(INTERP1(X,Y,METHOD,'pp'),XI) pp.orient = 'first'; end % PPINTERP end % INTERP1 x=[1 2 3 4 5]; y=[1.4 1.5 1.7 2.2 3]; x1=1:0.1:5; y1=interp1(x,y,x1,'spline'); plot(x,y,'o',x1,y1,'r:'); grid on 生成后的图像为: