![](http://4.bp.blogspot.com/_3Qgnj72kFW8/RhJK-eHG4BI/AAAAAAAAAAo/ZKk6rg-P86I/s320/Matlab_patch.png)
本文的目的是将ANSYS中划分好的单元网格导入到MATLAB中,并显示。
方法很简单(对三维实体单元不适用):
在ANSYS中建立模型,进行网格划分,用命令"cdwrite,geom,filename,ans"将网格划分结果导出,filename是用户指定的文件名。
该命令产生的filename.ans实际上是一个ASCII文本文件,用记事本打开,可以看到其中的数据记录格式,前四行是字符,跳过,紧接着是一个列表,参照ANSYS中的模型数据,很容易看出这是模型中所有节点的坐标表。从第四列开始分别是节点的X、Y、Z坐标(注意其中有省略的项)。
如果X坐标为负,则可能和前面一列的0接在一起,在MATLAB中被认为是一个数,要做适当的处理。
再跳过节点坐标表下的三行字符,下面是一个单元和节点的关系表。表11列是单元的序号,12列之后是该单元包含的节点列表。如果是杆单元则有两个节点,四边形单元则有四个节点。
在MATLAB中读入上述两个列表(fopen打开文件,fgetl按行读入字符串,str2num将读入的字符串转为数据,fclose关闭文件),用patch命令显示面片:
patch('Vertices',节点坐标表,'Faces',构成单元的节点列表,'FaceColor',[.39,.47,.64])
我只用杆单元和简单的四边形单元试了一下,没有问题。对于实体单元,每个单元中仅有各个顶点的列表,不能直接生成实体的各个面。
没有评论:
发表评论