装修知识
模具知识|AutoCAD 在有限元前处理中的应用
2016-08-22  浏览:105
模具之家讯:AutoCAD是一种通用的交互式图形软件。对AutoCAD进行二次开发,通过获取AutoCAD系统提供的用于图形信息交换的文件(文件扩展名为“.dxf”),并且编制相应的接口程序,可以方便地进行有限元分析的边界节点的设置,还可利用AutoCAD平台显示已生成的网格,这样大大减轻了有限元分析师的工作量,并能随时控制生成网格的品质。

一、边界节点的自动划分

1.节点的设置

利用AutoCAD为用户提供的“PointStyle”菜单命令,设置节点的显示状态和尺寸大小,设置对话框如图1所示。执行键盘输入命令格式如下:Command:Ddptype(键盘输入)。

图1PointStyle设定对话框

选择点的类型可以通过选择图形菜单中的点,并且在“PointSize”编辑框中设定点的大小。

2.等分对象

使用“Divide”命令实现等分对象。

Command:_divide(或键盘输入Divide命令);

Selectobjecttodivide:(选择等分对象);

Enterthenumberofsegmentsor[block]:(用户输入等分数);

可等分对象包括直线、圆、圆弧、椭圆、椭圆弧、多义线和样条曲线。为了控制网格密度,可以在图形上加入控制点,如图2所示。

图2边界线等分及设置网格密度控制点

3.文件保存

将图形文件保存为DXF文件。

Command:Dxfout(键盘输入)

将弹出“SaveDrawingAs”对话框,输入文件名即可。

二、获取边界节点坐标的接口程序

#include

#include

#include

#include

voidextract(void);

voidextpoint(void);

voidoutput(void);

floatdotx[1000],doty[1000];存储节点坐标的数组

FILE*dxf,*wf;文件指针说明

intnl=0,nd=1;

charvalue[64];

intcode;

main()

{

extract(); 获取节点坐标的子程序 

output(); 输出节点信息的子程序

}

voidoutput()

{inti;

wf=fopen("shuju.dat","w");节点信息保存在文件“shuju.dat”里

fprintf(wf,"floatdotx[1000]={0,"};依照C语言格式输出数据

printf(" thepoints'numberis%d",nd-1);

for(i=1;i<=(nd-1);i++)

{fprintf(wf,"%f",dotx[i]);

if(i<(nd-1))fprintf(wf,",");

}

fprintf(wf,"};");

fprintf(wf," floatdoty[1000]={0,");

for(i=1;i<=(nd-1);i++)

{fprintf(wf,"%f",doty[i]);

if(i<(nd-1))fprintf(wf,",");

}

fprintf(wf,"};");

fclose(wf);

}

voidextract()

{

charfname[24];

printf(" inputthenameofDXF:");输入dxf文件名

scanf("%s",fname);

strcat(fname,".dxf");

if((dxf=fopen(fname,"r"))==NULL)

{printf("fail ");

exit(0);}

printf(" ok! ");

do{

do{

fscanf(dxf,"%d",&code);

fscanf(dxf,"%s",value);

}while((code!=0)||strcmp(value,"SECTION")!=0);说明实体段开始

fscanf(dxf,"%d",&code);

fscanf(dxf,"%s",value);

}while((code!=2)||strcmp(value,"ENTITIES")!=0);

do{

fscanf(dxf,"%d",&code);

fscanf(dxf,"%s",value);

if(code==0&&strcmp(value,"POINT")==0) extpoint();“code”和“POINT”为说明点的组代码及跟随值

}while((code!=0)||(strcmp(value,"ENDSEC")!=0));说明实体段结束

fclose(dxf);

}

voidextpoint(void) 获取节点的坐标

{do{

fscanf(dxf,"%d",&code);

if(code==10)获取X轴坐标

fscanf(dxf,"%f",&dotx[nd]);

else {if(code==20){fscanf(dxf,"%f",&doty[nd]);nd++;}获取Y轴坐标

 elsefscanf(dxf,"%s",value);

}

}while(code!=20);

}

三、在AutoCAD平台上显示网格的接口程序

#include

#include"shuju.h" 

main()

{FILE*fp;

inti1,i2;

fp=fopen("drawout.dxf","w"); 建立一个图形交互文件

fprintf(fp," 0 SECTION  2 ENTITIES ");写入实体开始段

for(i1=1;i1<=nsan;i1++)

{

for(i2=0;i2<=2;i2++)

{fprintf(fp," 0 LINE  8 0 ");

 fprintf(fp,"10 %f ",dotx[sanjiao[i1][i2]-1]);

 fprintf(fp,"20 %f ",doty[sanjiao[i1][i2]-1]);

 fprintf(fp,"11 %f ",dotx[sanjiao[i1][i2+1]-1]);

 fprintf(fp,"21 %f ",doty[sanjiao[i1][i2+1]-1]);

}

}

fprintf(fp," 0 ENDSEC  0 EOF ");写入DXF文件结束段

fclose(fp);

}

四、程序说明

AutoCAD可以接受缺少任意一些表、段的DXF文件,因此,编写只生成“ENTITIES”段和文件结尾的DXF文件,可以方便地写入显示三角形网格的DXF文件。头文件shuju.h里包含有已生成的网格各三角形单元的的顶点编号,它们保存在数组sanjiao[1000][4]以及三角形单元的总数nsan,各节点的坐标dotx[1000],doty[1000]。程序运行后生成AutoCAD能够识别的DXF文件,文件名为”drawout.dxf”。

在AutoCAD的“Command:”提示下,调用DXFIN命令,导入drawout.dxf,即可得到生成网格的图形,如图3所示。

图3在AutoCAD平台上显示生成的网格

五、结论

从实际应用情况看,本文给出的程序能够方便准确地完成有限元网格生成中边界节点的设置以及显示已生成网格的图形。
模具之家为您提供最全面的塑胶,塑料,模具,模具设计,塑胶模具品牌的装修知识点和各种塑胶模具的导购与在线购买服务,拥有最便宜的塑胶模具价格和最优质的售后服务,敬请登陆模具之家:http://www.ju26.com/
更多»您可能感兴趣的文章:
更多»有关 模具之家 的产品:
易博仕铝方通吊顶木纹铝方通厂家直销

易博仕铝方通吊顶木纹铝方通厂家直销

价格:7.50/米

易博仕勾搭式垂帘铝挂片吊顶天花

易博仕勾搭式垂帘铝挂片吊顶天花

价格:8.50/米

供应易博仕氟碳铝单板幕墙铝单板厂家直销

供应易博仕氟碳铝单板幕墙铝单板厂家直销

价格:198.00/平方米

供应易博仕氟碳铝单板幕墙铝单板厂家直销

供应易博仕氟碳铝单板幕墙铝单板厂家直销

价格:198.00/平方米

易博仕铝天花吊顶明架跌级铝扣板600*600厂家直销

易博仕铝天花吊顶明架跌级铝扣板600*600厂家直销

价格:38.00/平方米

供应易博仕c型铝条扣 防风铝条扣天花厂家直销

供应易博仕c型铝条扣 防风铝条扣天花厂家直销

价格:38.00/平方米

  • 行业资讯
  • 发表评论 | 0评
  • 评论登陆
  • 移动社区 天花之家 木门之家 灯具之家 铁艺之家 幕墙之家 五金头条 楼梯头条 墙纸头条 壁纸头条 玻璃头条 老姚之家 灯饰之家 电气之家 全景头条 陶瓷之家 照明之家 防水之家 防盗之家 博一建材 卫浴之家 区快洞察 建材 枣庄建材 临沂建材 南昌建材 上饶建材 抚州建材 宜春建材 吉安建材 赣州建材 鹰潭建材 新余建材 九江建材 萍乡建材 景德镇陶瓷 石家庄建材 衡水建材 廊坊建材 沧州建材 承德建材 建材之家 企业之家 720全景
    (c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved