CAD实验图形软件的二次开发.docx
《CAD实验图形软件的二次开发.docx》由会员分享,可在线阅读,更多相关《CAD实验图形软件的二次开发.docx(14页珍藏版)》请在冰豆网上搜索。
CAD实验图形软件的二次开发
学生学号
实验课成绩
学生实验报告书
实验课程名称
CAD/CAM基础
开课学院
指导教师姓名
学生姓名
学生专业班级
--
学年
第
学期
实验教学管理基本规范
实验是培养学生动手能力、分析解决问题能力的重要环节;实验报告是反映实验教学水平与质量的重要依据。
为加强实验过程管理,改革实验成绩考核方法,改善实验教学效果,提高学生质量,特制定实验教学管理基本规范。
1、本规范适用于理工科类专业实验课程,文、经、管、计算机类实验课程可根据具体情况参照执行或暂不执行。
2、每门实验课程一般会包括许多实验项目,除非常简单的验证演示性实验项目可以不写实验报告外,其他实验项目均应按本格式完成实验报告。
3、实验报告应由实验预习、实验过程、结果分析三大部分组成。
每部分均在实验成绩中占一定比例。
各部分成绩的观测点、考核目标、所占比例可参考附表执行。
各专业也可以根据具体情况,调整考核内容和评分标准。
4、学生必须在完成实验预习内容的前提下进行实验。
教师要在实验过程中抽查学生预习情况,在学生离开实验室前,检查学生实验操作和记录情况,并在实验报告第二部分教师签字栏签名,以确保实验记录的真实性。
5、教师应及时评阅学生的实验报告并给出各实验项目成绩,完整保存实验报告。
在完成所有实验项目后,教师应按学生姓名将批改好的各实验项目实验报告装订成册,构成该实验课程总报告,按班级交课程承担单位(实验中心或实验室)保管存档。
6、实验课程成绩按其类型采取百分制或优、良、中、及格和不及格五级评定。
附表:
实验考核参考内容及标准
观测点
考核目标
成绩组成
实验预习
1.预习报告
2.提问
3.对于设计型实验,着重考查设计方案的科学性、可行性和创新性
对实验目的和基本原理的认识程度,对实验方案的设计能力
20%
实验过程
1.是否按时参加实验
2.对实验过程的熟悉程度
3.对基本操作的规范程度
4.对突发事件的应急处理能力
5.实验原始记录的完整程度
6.同学之间的团结协作精神
着重考查学生的实验态度、基本操作技能;严谨的治学态度、团结协作精神
30%
结果分析
1.所分析结果是否用原始记录数据
2.计算结果是否正确
3.实验结果分析是否合理
4.对于综合实验,各项内容之间是否有分析、比较与判断等
考查学生对实验数据处理和现象分析的能力;对专业知识的综合应用能力;事实求实的精神
50%
实验课程名称:
___CAD/CAM基础____________
实验项目名称
图形软件的二次开发
实验成绩
实验者
专业班级
组别
同组者
实验日期
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
一、实验目的
(1)了解AutoCAD图形交换文件(DXF文件)的结构和格式;
(2)熟悉图形交换文件的程序生成方法;
(3)编辑生成AutoCAD图形交换文件的高级语言程序,实现标准零件图的自动生成和绘制。
二、实验要求
(1)编写含有生成直线、圆弧、圆的DXF文件的接口程序;
(2)编写生成某一标准零件DXF文件的主程序,经调试、编译、执行,生成该图形的DXF文件;
(3)进入AutoCAD软件,生成该图形。
注:
实验用零件图形由实验者自行准备。
三、实验原理
1)DXF文件(图形变换文件)与DWG文件(图形文件)的转换
(1)由DWG文件生成DXF文件
在AutoCAD软件的命令(Command)状态下,执行DXFOUT命令,输入DXF文件名,即可生成当前图形文件的图形交换文件(DXF文件)。
(2)由DXF文件生成DWG文件
在AutoCAD软件的命令(Command)状态下,执行DXFIN命令,输入已有的DXF文件名,即可生成该DXF文件表示的图形。
2)DXF文件的总体结构
DXF文件结构由五段组成:
(1)HEADER段标题段
(2)TABLES段表段
(3)BLOCKS段块段
(4)ENTITIES段实体段
(5)EOF段文件结束段
在DXF文件中,实体信息主要存放在ENTITIES段,而且仅有ENTITIES段和EOF段,DXF文件即可运行,因此,只需重点讨论ENTITIES段和EOF段。
DXF文件ENTITIES段的结构为:
0
SECTION
2
ENTITIES
……
实体信息(直线、圆弧、圆)描述
……
0
ENDSEC
EOF段的结构
0
EOF
3)接口程序设计
在ENTITIES段,其主要由直线段(LINE)、圆弧(ARC)和圆(CIRCLE)组成。
根据直线、圆弧、圆的结构,可编写相应的函数。
(1)写实体段头部的DXF文件的函数(包括文件操作)
(2)直线段的结构及写直线段的DXF文件的函数
直线段的结构
0
LINE
8
层号
10
Xs
20
Ys
11
Xe
21
Ye
写直线段的DXF文件的函数
(3)圆弧段的结构及写圆弧段的DXF文件的函数
圆弧段的结构
0
ARC
8
层号
10
X0
20
Y0
30
Z0
40
R
50
A1
51
a2
写圆弧段的DXF文件的函数
(4)圆实体段的结构及写圆实体段的DXF文件的函数
圆实体段的结构
0
CIRCLE
8
层号
10
X0
20
Y0
30
Z0
40
R
写圆实体段的DXF文件的函数
(5)写文件结束段DXF文件的函数
注:
原理中的函数略在第二部分的编程中有。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
所编程序:
#include"stdio.h"
FILE*knm;
voiddxfhead();
floatline(charceng,floatx1,floaty1,floatx2,floaty2);
floatarc(charceng,floatx0,floaty0,floatr,floatstang,floatendang);
floatcircle(charceng,floatx0,floaty0,floatr);
voiddxfend();
voidmain()
{
floatl,l1,b,b1,r,r1;
scanf("%f%f%f%f%f%f",&l,&l1,&b,&b1,&r,&r1);
printf("%f%f%f%f%f%f\n",l,l1,b,b1,r,r1);
dxfhead();
line('0',0.0,0.0,l,0.0);
line('0',0.0,0.0,0.0,l1);
line('0',l,0.0,l,l1);
line('0',0.0,l1,l,l1);
arc('0',b,l1,r1,0.0,180.0);
circle('0',b,b1,r);
dxfend();
}
voiddxfhead()
{
charmydxf[10];
printf("\ninputdxffilename:
");
scanf("%s",mydxf);
knm=fopen(mydxf,"w");
fputs("0\n",knm);
fputs("SECTION\n",knm);
fputs("2\n",knm);
fputs("ENTITIES\n",knm);
return;
}
floatline(charceng,floatx1,floaty1,floatx2,floaty2)
{
fputs("0\n",knm);
fputs("LINE\n",knm);
fputs("8\n",knm);
fprintf(knm,"%c\n",ceng);
fputs("10\n",knm);
fprintf(knm,"%f\n",x1);
fputs("20\n",knm);fprintf(knm,"%f\n",y1);
fputs("11\n",knm);fprintf(knm,"%f\n",x2);
fputs("21\n",knm);fprintf(knm,"%f\n",y2);
return0;
}
floatarc(charceng,floatx0,floaty0,floatr,floatstang,floatendang)
{
fputs("0\n",knm);
fputs("ARC\n",knm);
fputs("8\n",knm);
fprintf(knm,"%c\n",ceng);
fputs("10\n",knm);
fprintf(knm,"%f\n",x0);
fputs("20\n",knm);
fprintf(knm,"%f\n",y0);
fputs("40\n",knm);
fprintf(knm,"%f\n",r);
fputs("50\n",knm);
fprintf(knm,"%f\n",stang);
fputs("51\n",knm);
fprintf(knm,"%f\n",endang);
return0;
}
floatcircle(charceng,floatx0,floaty0,floatr)
{
fputs("0\n",knm);
fputs("CIRCLE\n",knm);
fputs("8\n",knm);
fprintf(knm,"%c\n",ceng);
fputs("10\n",knm);
fprintf(knm,"%f\n",x0);
fputs("20\n",knm);
fprintf(knm,"%f\n",y0);
fputs("40\n",knm);
fprintf(knm,"%f\n",r);
return0;
}
voiddxfend()
{
fputs("0\n",knm);
fputs("ENDSEC\n",knm);
fputs("0\n",knm);
fputs("EOF\n",knm);
fclose(knm);
return;
}
生成的dxf文件截图:
Ps:
l、l1、b、b1、r、r1分别为50.0、50.0、25.0、25.0、15.0、25.0。
所画图形:
Ps:
打开AutoCAD命令中输入dxfin找到文件导入即可
教师签字__________
第三部分结果与讨论(可加页)
一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
二、小结、建议及体会
三、思考题
一、实验结果分析
编程时可能会因为所应用的软件不同产生多多少少的出入。
turboC和Vc++运行程序时可能有小小的差别,但是最终的结果是一样的。
主要是主函数的编写,调用函数基本都是一样的。
主程序的不同导致了所生成的dxf文件不同,进而导致了所画图形的不同。
二、小结、建议及体会
通过该实验使我们对AutoCAD有了更加深刻的了解,并且熟悉了用编程的方法借助dxf文件来绘制图形的基本操作。
这对我们今后的工作有着莫大的作用。
当然在绘制的过程中不是一帆风顺的,例如在写程序时,忘记了函数的声明等等。
这主要是因为我的c语言不好。
通过这些挫折也让我们更加深刻的了解、应用这些功能。
三、思考题
无