CAD实验--图形软件的二次开发
- 格式:doc
- 大小:195.50 KB
- 文档页数:11
学生学号 实验课成绩
学 生 实 验 报 告 书
实验课程名称 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)了解Auto CAD图形交换文件(DXF文件)的结构和格式;
(2)熟悉图形交换文件的程序生成方法;
(3)编辑生成Auto CAD图形交换文件的高级语言程序,实现标准零件图的自动生成和绘制。
二、实验要求
(1)编写含有生成直线、圆弧、圆的DXF文件的接口程序;
(2)编写生成某一标准零件DXF文件的主程序,经调试、编译、执行,生成该图形的DXF文件;
(3)进入Auto CAD软件,生成该图形。
注:实验用零件图形由实验者自行准备。
三、实验原理
1)DXF文件(图形变换文件)与DWG文件(图形文件)的转换
(1)由DWG文件生成DXF文件
在Auto CAD软件的命令(Command)状态下,执行DXFOUT命令,输入DXF文件名,即可生成当前图形文件的图形交换文件(DXF文件)。
(2)由DXF文件生成DWG文件
在Auto CAD软件的命令(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文件的函数
○1直线段的结构
0
LINE
8
层号
10
Xs
20
Ys
11
Xe
21
Ye
○2写直线段的DXF文件的函数
(3)圆弧段的结构及写圆弧段的DXF文件的函数
○1圆弧段的结构
0
ARC
8
层号
10
X0
20
Y0
30
Z0
40
R
50 A1
51
a2
○2写圆弧段的DXF文件的函数
(4)圆实体段的结构及写圆实体段的DXF文件的函数
○1圆实体段的结构
0
CIRCLE
8
层号
10
X0
20
Y0
30
Z0
40
R
○2写圆实体段的DXF文件的函数
(5)写文件结束段DXF文件的函数
注:原理中的函数略 在第二部分的编程中有。
第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
所编程序:
#include"stdio.h"
FILE*knm;
void dxfhead();
float line(char ceng,float x1,float y1,float x2,float y2);
float arc(char ceng,float x0,float y0,float r,float stang,float endang);
float circle(char ceng,float x0,float y0,float r);
void dxfend();
void main()
{
float l,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();
}
void dxfhead()
{
char mydxf[10];
printf("\ninput dxffile name:");
scanf("%s",mydxf);
knm=fopen(mydxf,"w");
fputs("0\n",knm);
fputs("SECTION\n",knm);
fputs("2\n",knm);
fputs("ENTITIES\n",knm);
return ;
}
float line(char ceng,float x1,float y1,float x2,float y2)
{
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);
return 0;
}
float arc(char ceng,float x0,float y0,float r,float stang,float endang)
{
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);
return 0;
}
float circle(char ceng,float x0,float y0,float r)
{
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);
return 0;
}