声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5046|回复: 7

[共享资源] [转帖]MATLAB中曲面转入ANSYS程序(附程序)

 关闭 [复制链接]
发表于 2005-8-17 19:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
前段时间因课题需要,写了个MATLAB程序,把MATLAB中计算的曲面导入ANSYS,以作进一步处理。

稍作修改,使其更有通用性。因水平有限,程序还有很多不足之处,请大家验证讨论。

例:

t=0:pi/10:2*pi;
[x,y,z]=cylinder(2+cos(t));

mat2ans('cylinder.lgw',x,y,z);

运行ANSYS,在命令窗口输入:/input,cylinder.lgw 得到ansys中的曲面,该过程中ansys提示有几个错误,有些样条线和关键点不能删除,那是需要保留的。
dVcnGG5D.jpg

评分

1

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2005-8-17 19:25 | 显示全部楼层
附源程序:

  1. function mat2ans(filename,x,y,z)
  2. % 把MATLAB计算的曲线曲面导入ANSYS
  3. % author:paradiseboy
  4. % 2004-7-13
  5. % Henan Polytechnic University

  6. % www.dytrol.com

  7. if(ischar(filename)==0)
  8. error('Invalid filename');
  9. end

  10. if(ndims(z)~=2)
  11. error('Variable z must be a 2-dimensional array');
  12. end

  13. if any((size(x)~=size(z))|(size(y)~=size(z))) % size of x or y does not size of z
  14. if((length(x)==1)&(length(y)==1)) % Must be specifying dx and dy, so make vectors
  15. dx=x;
  16. dy=y;
  17. x=((1:size(z,2))-1)*dx;
  18. y=((1:size(z,1))-1)*dy;
  19. end

  20. if((length(x)==size(z,2))&(length(y)==size(z,1))) % Must be specifying vectors
  21. xvec=x;
  22. yvec=y;
  23. [x,y]=meshgrid(xvec,yvec);
  24. else
  25. error('Unable to resolve x and y variables');
  26. end
  27. end

  28. fid=fopen(filename,'w');

  29. if(fid==-1)
  30. error(sprintf('Unable to write to %s',filename));
  31. end

  32. [m,n]=size(z);
  33. x=reshape(x',m*n,1);
  34. y=reshape(y',m*n,1);
  35. z=reshape(z',m*n,1);
  36. fprintf(fid,'/prep7\r\n'); % 进入前处理
  37. % 创建关键点
  38. for i=1:m*n
  39. fprintf(fid,'k,%4.d,%.5f,%.5f,%.5f,\r\n',i,x(i),y(i),z(i));
  40. end
  41. % 创建样条线
  42. for i=1:m
  43. fprintf(fid,'FLST,3,%3.d,3\r\n',n);
  44. for j=1:n
  45. fprintf(fid,'FITEM,3,%4.d,\r\n',j+(i-1)*n);
  46. end
  47. fprintf(fid,'BSPLIN, ,P51X\r\n');
  48. end
  49. % 由蒙皮技术创建面
  50. fprintf(fid,'FLST,2,%2.d,4\r\n',m);
  51. for i=1:m
  52. fprintf(fid,'FITEM,2,%d\r\n',i);
  53. end
  54. fprintf(fid,'ASKIN,P51X\r\n');
  55. fprintf(fid,'ldele,all\r\n');
  56. fprintf(fid,'kdele,all\r\n');
  57. fprintf(fid,'aplot\r\n');
  58. fprintf(fid,'NUMCMP,ALL\r\n');
  59. fprintf(fid,'FINISH\r\n');

  60. fclose(fid);
复制代码
 楼主| 发表于 2005-8-17 19:26 | 显示全部楼层
>> z=x.*exp(-x.^2-y.^2);
>> [u,v,w]=surfnorm(x,y,z);
>> surf(x,y,z); axis equal
>> mat2ans('curve.lgw',x,y,z);
MMZuf2jR.jpg
 楼主| 发表于 2005-8-17 19:27 | 显示全部楼层
>> [x,y]=meshgrid(-3:.5:3,-3:.1:3);
>> z=peaks(x,y);
>> mat2ans('curve.lgw',x,y,z);

这个曲面特性太复杂,在ANSYS中不能由一张曲面构成。
所以导入ansys中会出错,还请高人多指点,谢谢。
cBuj7MWU.jpg
发表于 2005-8-17 21:57 | 显示全部楼层
我个人认为应该是对于复杂图形,matlab输出的时候无法把握住图形的全部特征,把需要的全部数据都属出来,写入到ansys命令流中,造成生成面时的错误。
不知道对不?
发表于 2007-5-30 21:09 | 显示全部楼层
matlab中生成的曲面能不能导入autocad中去呢?
发表于 2007-5-31 09:06 | 显示全部楼层
太好了,非常感谢!!!
发表于 2007-6-8 23:07 | 显示全部楼层
非常感谢。:lol
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 10:59 , Processed in 0.071247 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表