matlab与UG数据交换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab与UG/Pro E 之间的数据交换方法
为了充分利用各种软件的优点,经常需要在不同软件之间进行数据传递。由于NURBS曲线已成为CAD领域的标准,而MATLAB具有强大的数值计算功能。如果数据能在MATLAB与常见的CAD软件传递,可以很大程度提高设计、计算效率。在经过尝试后,实现了MATLAB与UG\Proe之间数据的双向传递,在此分享出来,供有需要的参考。
一三维模型导入到MATLAB
不同的三维模型软件之间为了交换数据,美国某协会规定了目前三维软件之间一种通用的数据存储格式STL ,对各种三维软件,生成STL文件是很简单的,现以UG和ProE分别说明。
对UG
这里输出类型选择文本,因为后面MATLAB读取数据的程序是按照文本形式读取的。其余选项可以自己设置。
注意!!UG的文件保存路径不能含有中文!!!!!
对ProE
Step1 :点文件——保存副本
Step2 :在类型中,选择stl
Step 3 在导出STL对话框中选择ASCII导出格式,其他诸如弦高好像是越大越好
2 MATLAB读取STL数据
STL格式规定模型由三个顶点组成的小三角形面片,多个面片构成了各种形状的曲面。
因此数据格式如下:
首先给出的是一个三角形面片的法向量(x,y,z):facet normal。然后给出三个顶点vertex。一个面片就确定了。读取程序就是要读取facet normal和vertex的内容。
具体见附件中的ReadSTL.m文件。
facet normal +0.0000000E+00 +0.0000000E+00 +1.0000000E+00
outer loop
vertex -1.7387080E+02 -1.7447189E+02 +2.5000000E+01
vertex -2.2559979E+00 -1.2384968E+02 +2.5000000E+01
vertex +6.1819200E+00 -1.1596921E+02 +2.5000000E+01
endloop
endfacet
二MATLAB输出数据到UG
UG可以根据外部点来画出图像。对数据点的要求是这样的:
X1 y1 z1
X2 y2 z2
……
Xn yn zn
即:先输入一组坐标,回车,再输入下一组,如此操作。
具体操作如下:
0 首先在MATLAB中生成数据点,这里生成的是一个螺旋线。代码在此贴出:
%% test file write
clc
clear
%% Éú³ÉÒ»¸öÂÝÐý
format short g
t=0:0.1:100;
x=(15+10*cos(t));
y=(15+10*sin(t));
z=(20*t);
data=[x;y;z];
data1=data';
[m,n]=size(data1);
fid=fopen('A9.txt','w');
for i=1:m
for j=1:n
fprintf(fid,'%f\t',data1(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
附件matlab_to_ug.txt中也有源代码。
1 在UG中使用外部数据点作图:插入——曲线——样条
如果在曲线中没有样条命令,可以在工具——定制里找到
将样条命令拖到插入——曲线中即可。
2 选择通过点——文件中的点
3 找到目标的数据(1 一定是dat格式2 文件路径不能含有中文)
4 点确定就实现了导入
1 本文给出的实现方法仅是最简单的方法,有诸多细节并未深入考虑,如果您看完,觉得有所帮助,请将您认为对本方法改进的地方指出来,让我们一起来完善。
2 软件版本:MATLAB2009 UG Nx8 Proe 4