用VB开发交互式CAD系统设计.docx
《用VB开发交互式CAD系统设计.docx》由会员分享,可在线阅读,更多相关《用VB开发交互式CAD系统设计.docx(33页珍藏版)》请在冰豆网上搜索。
用VB开发交互式CAD系统设计
摘要
本次毕业设计的任务是利用VB开发交互式cad系统中的图形的编辑部分。
设计具有交互绘图的功能。
能实现鼠标绘图、图元选择和编辑,具备图形输出功能。
实现交互式绘图过程涉及到图元的数学模型,数据管理、数据编辑等方面的知识和技巧。
图元的选择编辑的重点放在了图元的平移和旋转。
此外还设计了的启动窗口和窗口的显示。
交互式cad技术在办公、绘图平面设计、工业设计等方面都有很多应用。
关键字:
交互式cad图形的编辑窗口
Abstract
Thisgraduationprojectdutyisdevelopsintheinteractivecadsystemthegrapheditionpart.Thedesignhasthealternatelycartographythefunction.Canrealizethemousecartography,achartYuanchoiceandtheedition,hasthegraphicaloutputfunction.RealizestheinteractivecartographyprocesstoinvolvetothechartYuanmathematicalmodel,aspecttheandsoondatamanagement,dataeditionknowledgeandtheskill.ThechartYuanchoiceeditionkeypointhasplacedachartYuantranslationandrevolves.Inadditionalsohasdesignedstartwindowandwindowdemonstration.Theinteractivecadtechnologyinaspectandsoonwork,cartographyplanedesign,industrialdesignallhasappliesverymuch.
Keywords:
InteractivecadgrapheditionWindow
目录
第1章绪论……………………………………………………5
第2章可行性研究……………………………………………………6
2.1问题定义
2.2可行性分析
第3章总体设计……………………………………………………7
3.1总体规划
3.2开发环境和工具
3.3软件介绍
3.4系统实现和设计主要分以下几个步骤
第4章具体设计……………………………………………………8
4.1具体设计的详细说明图………………………………………………9
4.2图元的编辑……………………………………………………………10
4.3图元的拾取与选择…………………………………………………15
4.4窗体的显示控制………………………………………………………19
第5章心得体会……………………………………………………20
参考资料……………………………………………………21
第一章绪论
对于大多数人而言,“交互式cad技术”是一个熟悉而陌生的概念,为什么
这么说呢?
因为您可能经常在使用这种技术,却没有意识到。
什么是交互式cad
技术呢?
打一个比方说;用鼠标在屏幕上画一条直线,选中它后,可以改变直线
段的方位和长度。
这种技术绘图具有方便、直观、高效率等特点,在各种专业软
件、数据处理软件、AutoCAD、Flash、PowerPoint、Word等很很多软件里面都
有广泛的应用。
在交互式系统中,不仅可以实现用鼠标绘图,还可以选择图元,并对选中的
图元进行修改、几何变换和删除等操作。
为了实现这些功能,交互式CAD系统不
仅需要考虑图形的数学模型,还要在数据结构、内存管理等方面做出筹划。
可行性研究
2.1问题定义
本系统是一个关于交互式CAD的应用系统。
(1)该系统应该在整体上实现绘制各种图元、编辑图元和显示编辑好的窗体
等模块。
(2)该系统中,图元数据需要保存起来,以便进行编辑操作。
以合理的数据结构进行保存,可以在内存、系统安全性方面得到好处,从而提高程序的整体性能。
2.2可行性分析
技术可行性:
根据新系统目标来衡量所需的技术是否具备,一般可以从
硬件、软件的性能要求、环境条件、技术人员水平和数量等方面去考虑和分析。
这次设计的系统采用Visualbasic6.0系统开发的。
硬件要求:
486以上CPU,
64MB以上内存,2G以上硬盘。
第三章总体设计
交互式CAD系统要涉及到大量的数据处理,如何描述、输入、管理、编辑
和输出它们,在开发以前需要进行详细的规划。
3.1总体规划
1.数据的组织和描述
(1)数据结构
(2)数学模型
2.数据的输入
实现鼠标交互式输入数据
3.数据的管理
type结构
VB类
4.数据编辑
图元的拾取和选择
图元的几何变化-平移和旋转。
5.数据的输出
(1)文本输出
(2)以DXF格式输出
6.UML类图
7.界面交互
3.2开发环境和工具
windows平台
Visualbasic6.0
3.3软件介绍
Visualbasic6.0为开发工具。
VB6.0是微软公司推出的可视化编程工具MSDN之一,Visualbasic6.0是一门功能强大的计算机语言,为用户提供了一系列的属性、方法和控件。
采用了面向对象的编程技术进行编程。
3.4系统实现和设计主要分以下几个步骤
1.在windows平台下安装Visualbasic6.0软件。
2.创建主窗体和显示控制窗体。
3.用Visualbasic6.0语言来编写程序。
第四章具体设计
设计图元编辑的流程图
具体设计的详细说明图
本次设计包括三个部分;图元的拾取、图元的编辑和窗体的制作。
总体设计过程说明图
图元编辑说明图
图元拾取的功能分析图
4.2图元的编辑
在设计过程中图元编辑部分是具体设计的核心部分。
一.二维图形变换的基本原理、算法和具体实现
用计算机进行辅助设计时,复制、移动、旋转已有图元可以提高绘图效率,对图形元素进行集合变换可以实现这些操作。
图元的基本形状和位置由它们的控制点唯一确定,比如直线段由直线段的起点和终点确定,圆弧由圆弧的圆心、起点和终点确定等。
所以对图元的旋转、平移等集合变换可以归结为对图元控制点的几何变换。
控制点的几何变换完成以后,根据变换后的控制点绘图,就可得到变换后的图元。
二维空间中一点变换前后的关系可用下式表示:
t11t12
[x´y´1]=[xy1]t21t22
ΔxΔy
其中,[xy]为变换前点的坐标,[x´y´]为变换后的坐标。
t11t12
T=t21t22变换矩阵。
ΔxΔy
用齐次坐标表示,上式可以写成:
x´=xt11+yt21+Δx
y´=yt12+yt22+Δy
(1)平移变换
平移变换是把选中的图元平移到另一位置,如图2-1所示。
Y
P(x,y)
○
○p′(x′,y′)
X
图2-1平移变换图示
平移变换的变换矩阵为100
T=010
ΔxΔy1
所以有
100
[x´y´1]=[xy1]010
ΔxΔy1
既x´=x+Δx
y´=y+Δy
其中,x,y为评议前点的坐标;x´,y´为平移后点的坐标,Δx和Δy为点在x方向和y方向上平移的距离。
(2)旋转变换
旋转变换使图元绕某点旋转一定角度后,到达新位置,如图2-2所示。
逆时针旋转时,旋转角度为正,反之为负。
Y
P(x,y)
○
○p′(x′,y′)
θ
X
图2-2旋转变换
cosθsinθ0
饶原点旋转的变换矩阵为T=-sinθcosθ0
001
所以有
cosθsinθ0
[x´y´1]=[xy1]T=-sinθcosθ0
001
即x´=xcosθ-ysinθ
y´=xsinθ+ycosθ
一.点的变换
图元的变换可以归结为点的变换,首先在position类中添加点的变换函数。
平移变换
移动后点的坐标值等于移动前点的坐标值与位移矢量的和。
在position类中添加pntmove函数,该函数有两个参数xx和yy,分别定义移动矢量的水平向分量和垂直向分量。
在直角坐标系中,当xx或yy为正时,点向右、向上移动;当xx或yy为负时,点向左、向下移动。
函数返回一个position类实例,为移动后的点。
(2)旋转变换
旋转一个点需要确定两个参数,既旋转的参照点和旋转的角度。
参照点指的是饶哪个点旋转。
在position类中添加pntrotate函数,定义点的旋转行为。
Pntrotate函数有两个参数,即basepos和angle分别定义旋转参照点和旋转角度。
旋转后点的坐标可以根据原理部分的计算公式获得。
二.图元的变换
1.直线段的几何变换
(1)直线段的平移变换
直线段的平移变换实际上是对直线段的起点和终点作平移变换,然后将变换后的起点和终点用直线段相连接。
在cline类模块中添加CGElement_Move过程,定义直线段的平移变换。
该函数有两个参数,即basepos和despos,分别定义平移前后的相对位置。
平移前直线段上任一点到basepos点的距离和方向与平移后直线段上对应点到despos点的距离和方向是相同的。
两个点横坐标之间和纵坐标之间的差异分别表示横向和纵向移动的距离和方向。
'
(2)直线段的旋转变换
通过旋转直线段的起点和终点,可以实现直线段的旋转。
在cline类模块中添加CGElement_Rotate过程,该过程的两个参数basepos和angle分别定义旋转的基点和角度。
2.多义线的几何变换
(1)多义线的平移变换
多义线的平移变换可通过平移多义线的顶点来实现。
在cpolyline类模块中添加CGElement_Move过程,以描述多义线的平移变换。
(2)多义线的旋转变换
在cpolyline类模块中添加CGElement_Rotate过程,通过对多义线的顶点进行旋转变换来实现多义线的旋转变换。
3.圆的几何变换
(1)圆的平移变换
圆的平移动变换通过对圆的圆心和圆上一点进行平移变换类实现。
在ccircle类模块中添加CGElement_Move函数,描述圆的平移变换。
(2)圆的旋转变换
在ccircle类模块中添加CGElement_Rotate过程,通过对圆心和圆上一点进行旋转变换来实现圆的旋转变换。
4.圆弧的几何变换
1.圆弧的平移变换
在carc类模块中添加CGElement_Move过程,实现圆弧的平移变换。
(2)圆弧的旋转变换
在carc类模块中添加CGElement_Rotate过程,对圆弧的圆心、起点