《毕业设计(论文)-用VB开发交互式cad系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-用VB开发交互式cad系统设计.doc(20页珍藏版)》请在三一文库上搜索。
1、VB开发交互式cad系统用VB开发交互式cad系统摘 要本次毕业设计的任务是利用VB开发交互式cad系统中的图形的编辑部分。设计具有交互绘图的功能。能实现鼠标绘图、图元选择和编辑,具备图形输出功能。实现交互式绘图过程涉及到图元的数学模型,数据管理、数据编辑等方面的知识和技巧。图元的选择编辑的重点放在了图元的平移和旋转。此外还设计了的启动窗口和窗口的显示。交互式cad技术在办公、绘图平面设计、工业设计等方面都有很多应用。关键字: 交互式cad 图形的编辑 窗口 AbstractThis graduation project duty is develops in the interactive
2、cad system the graph edition part. The design has the alternately cartography the function. Can realize the mouse cartography, a chart Yuan choice and the edition, has the graphical output function. Realizes the interactive cartography process to involve to the chart Yuan mathematical model, aspect
3、the and so on data management, data edition knowledge and the skill. The chart Yuan choice edition key point has placed a chart Yuan translation and revolves. In addition also has designed start window and window demonstration. The interactive cad technology in aspect and so on work, cartography pla
4、ne design, industrial design all has applies very much.Key words: Interactive cad graph edition Window目 录第1章 绪论 5第2章 可行性研究 6 2.1 问题定义 2.2 可行性分析第3章 总体设计 73.1 总体规划 3.2 开发环境和工具3.3 软件介绍3.4系统实现和设计主要分以下几个步骤第4章 具体设计 8 4.1具体设计的详细说明图 9 4.2 图元的编辑10 4.3 图元的拾取与选择 154.4 窗体的显示控制19第5章 心得体会 20参考资料 21 第一章 绪论 对于大多数人而
5、言,“交互式cad技术”是一个熟悉而陌生的概念,为什么这么说呢?因为您可能经常在使用这种技术,却没有意识到。什么是交互式cad技术呢?打一个比方说;用鼠标在屏幕上画一条直线,选中它后,可以改变直线段的方位和长度。这种技术绘图具有方便、直观、高效率等特点,在各种专业软件、数据处理软件、AutoCAD、Flash、PowerPoint、Word等很很多软件里面都有广泛的应用。 在交互式系统中,不仅可以实现用鼠标绘图,还可以选择图元,并对选中的图元进行修改、几何变换和删除等操作。为了实现这些功能,交互式CAD系统不仅需要考虑图形的数学模型,还要在数据结构、内存管理等方面做出筹划。) 可行性研究 2.
6、1 问题定义本系统是一个关于交互式CAD的应用系统。(1) 该系统应该在整体上实现绘制各种图元、编辑图元和显示编辑好的窗体等模块。(2)该系统中,图元数据需要保存起来,以便进行编辑操作。以合理的数据结构进行保存,可以在内存、系统安全性方面得到好处,从而提高程序的整体性能。 2.2 可行性分析技术可行性:根据新系统目标来衡量所需的技术是否具备,一般可以从硬件、软件的性能要求、环境条件、技术人员水平和数量等方面去考虑和分析。这次设计的系统采用Visual basic 6.0系统开发的。 硬件要求:486以上CPU, 64MB以上内存,2G以上硬盘。 第三章 总体设计交互式CAD系统要涉及到大量的数
7、据处理,如何描述、输入、管理、编辑和输出它们,在开发以前需要进行详细的规划。3.1 总体规划1. 数据的组织和描述(1) 数据结构(2) 数学模型2. 数据的输入实现鼠标交互式输入数据3. 数据的管理1.0.0.0.0 type结构2.0.0.0.0 VB类4. 数据编辑) 图元的拾取和选择) 图元的几何变化平移和旋转。5. 数据的输出(1) 文本输出(2) 以DXF格式输出6. UML类图7. 界面交互3.2 开发环境和工具windows平台Visual basic 6.03.3 软件介绍Visual basic 6.0为开发工具。VB6.0是微软公司推出的可视化编程工具MSDN之一, Vi
8、sual basic 6.0是一门功能强大的计算机语言,为用户提供了一系列的属性、方法和控件。采用了面向对象的编程技术进行编程。3.4系统实现和设计主要分以下几个步骤1. 在windows平台下安装Visual basic 6.0软件。2. 创建主窗体和显示控制窗体。3. 用Visual basic 6.0语言来编写程序。 第四章 具体设计 设计图元编辑的流程图开始结束移动图元=0移动图元x,y=0x=x cosy siny= x sin+ y cosx=x +x y=y+y输入x,y 3. 具体设计的详细说明图本次设计包括三个部分;图元的拾取、图元的编辑和窗体的制作。 0. 总体设计过程说明
9、图图元绘制的具体代码实现图元的编辑和变换图元的拾取和选择具体图元编辑的代码实现显示控制的代码具体实现显示窗体的制作0. 图元编辑说明图直线多义线圆圆弧文本图元的平移图元编辑图元的旋转0. 图元拾取的功能分析图直线多义线圆圆弧文本逐步选取图元拾取 分类选取全删除全选4.2图元的编辑在设计过程中图元编辑部分是具体设计的核心部分。一. 二维图形变换的基本原理、算法和具体实现用计算机进行辅助设计时,复制、移动、旋转已有图元可以提高绘图效率,对图形元素进行集合变换可以实现这些操作。图元的基本形状和位置由它们的控制点唯一确定,比如直线段由直线段的起点和终点确定,圆弧由圆弧的圆心、起点和终点确定等。所以对图
10、元的旋转、平移等集合变换可以归结为对图元控制点的几何变换。控制点的几何变换完成以后,根据变换后的控制点绘图,就可得到变换后的图元。二维空间中一点变换前后的关系可用下式表示: t11 t12 x y 1 = x y 1 t21 t22 x y其中, x y 为变换前点的坐标,x y 为变换后的坐标。 t11 t12 T = t21 t22 变换矩阵。 x y用齐次坐标表示,上式可以写成: x=x t11+y t21+x y=y t12+y t22+y(1) 平移变换平移变换是把选中的图元平移到另一位置,如图2-1所示。 Y P (x, y) p(x,y) X 图 2-1平移变换图示平移变换的变换
11、矩阵为 1 0 0 T = 0 1 0 x y 1所以有 1 0 0 x y 1 = x y 1 0 1 0 x y 1 既 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 0 0 1 所以有 cos sin 0 x y 1 = x y 1 T = -sin cos 0
12、0 0 1即 x=x cosy siny= x sin+ y cos一. 点的变换图元的变换可以归结为点的变换,首先在position类中添加点的变换函数。) 平移变换移动后点的坐标值等于移动前点的坐标值与位移矢量的和。在position类中添加pntmove函数,该函数有两个参数xx和yy,分别定义移动矢量的水平向分量和垂直向分量。在直角坐标系中,当xx或yy为正时,点向右、向上移动;当xx或yy为负时,点向左、向下移动。函数返回一个position类实例,为移动后的点。(2) 旋转变换旋转一个点需要确定两个参数,既旋转的参照点和旋转的角度。参照点指的是饶哪个点旋转。在position类中添
13、加pntrotate函数,定义点的旋转行为。Pntrotate函数有两个参数,即basepos和angle分别定义旋转参照点和旋转角度。旋转后点的坐标可以根据原理部分的计算公式获得。,二. 图元的变换1. 直线段的几何变换(1) 直线段的平移变换直线段的平移变换实际上是对直线段的起点和终点作平移变换,然后将变换后的起点和终点用直线段相连接。在cline类模块中添加CGElement_Move过程,定义直线段的平移变换。该函数有两个参数,即basepos和despos,分别定义平移前后的相对位置。平移前直线段上任一点到basepos点的距离和方向与平移后直线段上对应点到despos点的距离和方向
14、是相同的。两个点横坐标之间和纵坐标之间的差异分别表示横向和纵向移动的距离和方向。(2)直线段的旋转变换通过旋转直线段的起点和终点,可以实现直线段的旋转。在cline类模块中添加CGElement_Rotate过程,该过程的两个参数basepos和angle分别定义旋转的基点和角度。2. 多义线的几何变换(1)多义线的平移变换多义线的平移变换可通过平移多义线的顶点来实现。在cpolyline类模块中添加CGElement_Move过程,以描述多义线的平移变换。(2)多义线的旋转变换在cpolyline类模块中添加CGElement_Rotate过程,通过对多义线的顶点进行旋转变换来实现多义线的旋
15、转变换。3. 圆的几何变换(1)圆的平移变换 圆的平移动变换通过对圆的圆心和圆上一点进行平移变换类实现。在ccircle类模块中添加CGElement_Move函数,描述圆的平移变换。(2)圆的旋转变换在ccircle类模块中添加CGElement_Rotate过程,通过对圆心和圆上一点进行旋转变换来实现圆的旋转变换。4. 圆弧的几何变换1. 圆弧的平移变换在carc类模块中添加CGElement_Move过程,实现圆弧的平移变换。(2)圆弧的旋转变换在carc类模块中添加CGElement_Rotate过程,对圆弧的圆心、起点和终点进行旋转变换。2.3 图形变换交互功能的实现2.3.1 平移
16、变换CMOVE类平移变换的交互过程通过CMOVE类来实现。该类利用鼠标单击和移动事件代码来描述各种图元进行平移变换时的交互过程。该类实现了Ccommand接口。2.3.2旋转变换通过创建CRotate类来进行描述。通过响应鼠标单击和移动事件来用图形显示图元旋转的基点和角度。2.4 删除图元包括内存删除和屏幕删除两部分。4.3图元的拾取与选择要实现上面的图元的编辑首先要实现图元的拾取功能。图元的拾取是指计算机识别图元的方法。图元的选择是把已经识别的图元单独保存,以备修改和编辑。一.包围矩形的计算包围矩形指能包围图元的最小矩形。(1)直线段的包围矩形直线段的包围矩形是以直线段的起点和终点为对角顶点
17、的矩形。为了提高拾取效率,通常要将直线段的包围矩形向外扩展一定的距离如上图。(2)多义线的包围矩形多义线的包围矩形由多义线的顶点坐标决定。以所有顶点中最小的横坐标和最小的纵坐标所确定的点与最大的横坐标与最大的纵坐标所确定的点为对角顶点的矩形为多义线的包围矩形。(3)圆的包围矩形圆的包围矩形为正方形,是圆的外切矩形。包围矩形的左下角坐标和右上角坐标由圆心坐标和圆的半径确定。左下角坐标为圆心坐标减去圆半径,右上角坐标为圆心坐标加上圆半径。 (4)圆弧的包围矩形圆弧的包围矩形是包围圆弧的最小矩阵。计算圆弧的包围矩形,需要计算圆弧与过圆心的坐标轴4个方向上的相交关系。因为圆弧与坐标轴正向或负向的交点坐
18、标在数值上代表了这个方向上的最大值。如果相交,则包围矩形在这个方向上的值便是该值。如果不相交,包围矩形在这个方向上的最大值就是圆弧起点和终点x、y坐标的最大值。圆弧与4个轴的相交关系可以通过比较可能的交点与圆弧之间的关系得到。如果圆弧所在的圆与4个坐标轴的交点在圆弧内,则对应的交点便是圆弧与4个坐标轴的交点,否则不是。 (5)文本的包围矩形 要获取文本的包围矩形,需要知道文本的宽度和高度,以及文本插入点的位置。包围矩形左下角的横坐标为插入点的横坐标,纵坐标为插入点的纵坐标减去文本的高度;右上角的横坐标为插入点的横坐标加上文本的宽度,纵坐标为插入点的纵坐标。I am the first 二.图元
19、的拾取(1)直线段的拾取如果拾取点落在直线段的包围矩形内,则进一步判断拾取点与直线段之间的距离。如果小于指定的容限值,则该直线段被拾取。(2)多义线的拾取如果组成对义线的任何一条直线段被拾取到,则多义线被拾取到。在Cline类中添加CGElement_pick方法。(3)圆的拾取以圆的圆心为圆心,以圆的半径加减R长度为半径,得到一个包围圆的环带。如果鼠标点落在该环内,则圆被拾取。圆拾取的实质是计算拾取点到圆心的距离。(4)圆弧的拾取圆弧的拾取分两步。首先判断圆弧所在的圆是否被拾取。如果没有被拾取,则圆弧不被拾取;如果圆已经被拾取,则继续判断拾取点是否落在圆弧的范围内。如果落在圆弧范围内,则圆弧
20、被拾取,否则不被拾取。(5)文本的拾取拾取标注文本,首先要判断拾取点是否落在文本的包围矩形中,如果在,则文本拾取。4.3 图元的选择一. 添加选择集 为了存储选中的图元,需要添加图元的选择集。二. 逐个选择图元单击某图元时,如果该图元被拾取,把它添加到相应的集合类进行保存,则该图元被选择。在绘图环境中可以连续选择多个图元,并把它们放到选择集中。 与图元有关的菜单资源菜单项标题名称逐类选择SelOnebyOne分类选择SelbyClass选择直线段SelLine选择多义线SelPlines选择圆SelCircles选择SelArcs选择标注文本SelTexts全选SelAll放弃全选SelNon
21、e三. 分类选择 一个图形往往由多种不同的图元组成,如果对某一类图元感兴趣,可以直接选择该类图元,并进行编辑。可通过SelectGEs函数来实现。四. 全选全部选择图元,需要将全部图元集合类中的图元以选择模式重绘,并放入选择集。4.4 窗体的显示控制(1)创建工程和窗体1frmlash窗体设计2. 启动frmmain窗体时显示frmflash窗体Private Sub Form_Load()Frmflash.showEnd sub(4)把frmflash窗体显示在最前面利用api函数setwindowpos把frmflash窗体显示在最前面。(5)确定frmflash窗体的显示时间确定启动窗口
22、的显示时间为3秒Private Sub Form_Load() Timer1.Interval = 3000End Sub超过时间间隔时卸载窗体Private Sub Timer1_Timer() Unload frmFlashEnd Sub第五章 心得体会在老师的指导下,终于完成了交互式CAD系统的设计。这次的设计给了我很多宝贵的经验,通过交互式CAD系统的设计,使我对CAD系统的应用、vb语言有了更加深刻的了解和认识。这次设计使在大学学堂里学到的理论能够应用到实践总来,而且更加巩固了已学到的理论知识。但是本次设计还存在着很多问题,比如具体主窗口的应用设计、图元编辑中比例变换和镜像变换、图元的逐步选取等等。在设计过程中因为初次接触这些图象理论上的东西,所以在应用上出现了很多问题,这时张云秋老师给予了充分的指导,在老师的指导和同组学生的团结合作下,终于能及时完成本次毕业设计。对老师表示忠心的感谢! 参考文献 1计算机图形学 魏海涛编著. 电子工业出版社2.计算几何算法分析与设计 周培德著 清华大学出版社3计算机辅助设计与绘图 李学志编著 清华大学出版社4计算机图形学 吴良芝编著 北京大学出版社5.vb6.0入门与技巧 土林森编著 清华大学出版社6线性代数 叶家琛等著 同济大学出版社