用Visual Basic 开发交互式CAD系统设计.doc

上传人:土8路 文档编号:10069281 上传时间:2021-04-16 格式:DOC 页数:45 大小:724KB
返回 下载 相关 举报
用Visual Basic 开发交互式CAD系统设计.doc_第1页
第1页 / 共45页
用Visual Basic 开发交互式CAD系统设计.doc_第2页
第2页 / 共45页
用Visual Basic 开发交互式CAD系统设计.doc_第3页
第3页 / 共45页
用Visual Basic 开发交互式CAD系统设计.doc_第4页
第4页 / 共45页
用Visual Basic 开发交互式CAD系统设计.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《用Visual Basic 开发交互式CAD系统设计.doc》由会员分享,可在线阅读,更多相关《用Visual Basic 开发交互式CAD系统设计.doc(45页珍藏版)》请在三一文库上搜索。

1、内 容 提 要在交互式CAD系统中,不仅可以实现用鼠标绘图, 还可以选择图元,并对选中的图元进行缩放、缩小、等操作。在众多的交互式CAD开发工具中,Visual Basic是使用最简单、应用最广泛、使用者最多的一种开发工具,Visual Basic语言具备一定的绘图功能。本设计的主要内容是在学习Visual Basic 语言和交互式CAD技术的基础上,运用Visual Basic语言来开发交互式CAD系统。本系统具有交互绘图功能。能实现鼠标绘图,能对图形进行各种形式的缩放操作。本文中的缩放主要包括图形的放大、缩小和局部放大与全屏显示。关键词: Visual Basic 交互式CAD 缩放A b

2、 s t r a c tIn interactive CAD system, not only may realize with the mouse cartography, but also may choose the chart Yuan, and to the chart Yuan which selects carries on the reproduce by pantograph, reduces, and so on the operation. In the multitudinous interactive CAD development kit, Visual Basic

3、 is the use simple, the application is most widespread, the user most one kind of development kit, Visual Basic language has the certain cartography function. This design main content is in studies Visual the Basic language and in the interactive CAD technology foundation, language develops the inte

4、ractive CAD system using Visual Basic. This system has the alternately cartography function. Can realize the mouse cartography, can carry on each kind of form to the graph the reproduce by pantograph operation. In this article reproduce by pantograph mainly includes the graph the enlargement, reduce

5、s with the fractionated gain and the entire screen demonstration.Key words: Visual Basic interactive CAD zooming 目 录一、绪言 4 二、开发基础5(一) 交互式CAD简介 5 (二) Visual Basic的简介 . 5 三、系统分析6(一) 可行性研究 .6(二) 需求分析 6四、系统总体设计8五、详细设计8(一)界面制作 .8(二)绘图 . 9(三)缩放 . 11六、用户手册16七、结束语 .17八、致谢 18九、参考文献19一、绪 言在众多的交互式CAD开发工具中,Visu

6、al Basic是使用最简单、应用最广泛、使用者最多的一种开发工具。Visual Basic功能强大是毫无疑问的,所以本文采用Visual Basic进行了交互式CAD系统的开发。本文结合Visual Basic 语言介绍了交互式CAD 系统的开发技术,剖析了构造系统的思路和技巧。本文的第一部分为开发基础部分,比较简单的介绍了交互式CAD和Visual Basic语言。第二部分为系统定义时期部分,介绍了系统的可行性研究与系统的硬件需求。第三部分主要分为两部分:一个是总体设计部分,大略的介绍了所要开发的交互式CAD系统的主要组成部分。另一部分是详细设计部分,这也是本文的主要核心部分。详细的介绍了

7、绘图及图形的缩放功能。第四是用户手册。 第五部分为后记部分。最后是第六部分参考文献。二、开发基础(一) 交互式CAD简介对大多数人来说交互式 CAD技术是一个熟悉而又陌生的概念 。那么,什么是交互式CAD技术呢?简单得打个比方来说:用鼠标在屏幕上画一条直线段,选种它时,会在端点处显示方形的手柄,移动手柄,可以改变直线段的方位和长度。由于采用这种技术绘图具有方便、直观、高效等特点,所以在各种专业软件,数据处理软件、AutoCAD、 SolidWork、Flash、Visio、PowerPoint、Word等很多软件里面有着广泛的应用。 交互式CAD技术比一般的计算机绘图技术要复杂一些。 在交互式

8、CAD系统中, 不仅可以实现用鼠标绘图, 还可以选择图元,并对选中的图元进行缩放、缩小、等操作。交互式CAD技术是相对于一般技术而言的。交互设计的任务包括定位、定向、定量和移动等等。交互设计的目的在于尽可能地站在用户的角度考虑问题,解决问题。交互式设计应该遵循的基本原则有以下七种:(1)尽量减少用户输入数据的工作量,尽可能提供缺省值。(2)容错功能要强。(3)数据输入方便,并提供与其他软件的数据交换接口。(4)比较完善的帮助系统,包括联机帮助、上下文帮助等。(5)操作过程记忆,包括恢复操作功能和重复操作功能。(6)绘图过程的可见性。利用橡皮线功能可以显示图元绘制的过程。(7)指令反馈速度快。如

9、图元拾取时,系统必须比较快地做出反应;如果运算比较费时,则可以在一定精度内进行近似计算。交互式CAD技术不仅在办公软件如:Word 、PowerPoint等软件中均有大量的应用而且在绘图软件如:AutoCAD、CoralDraw 等大量使用了交互式CAD技术。(二) Visual Basic的简介Visual Basic是一种功能非常强大的编程语言。一种在计算机技术发展史上应用得最为广泛的语言。自从Basic语言诞生以来,就一直以其简单易学性而闻名于世,因而受到了广大初学者的青睐。然而,由于它是非结构化的编程语言,而且速度慢、灵活性差,为此也受到了许多人的指责。很多人认为,Basic语言是一种

10、游戏语言或数学语言,不能用来开发应用程序。随着Visual Basic 系列开发环境的出现,这一现象已经成为过去。Visual Basic 保留了Basic早期的一些特性。Visual Basic 在原有的BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和Windows GUI 有直接关系。在计算机领域,图形编程是一个很重要的内容。Visual Basic 作为一门功能强大的计算机语言,为用户提供了一系列的属性、方法和控件,利用它们,可以轻松地实现一般的图形绘制。所以对于一般的图形绘制任务而言,Visual Basic是完全可以胜任的。三、系统分析(一) 可行性研

11、究在问题定义阶段的结论进一步复查和确认之后,仔细分析了系统的处理过程,以后, 更进一步的了解到本系统应具体解决的问题。整个系统的流程是在用户的要求下进行的,利用鼠标事件所绘制的图片显示出来。并以用户需求把它们随意放大或缩小。Windows 消息与VB事件的转换:Windows窗口程序事件对象消息Visual Basic对象 VB的模块化结构:资源文件类模块标准模块窗体代码窗体 (二)需求分析 在需求分析的基本任务是准确地回答“系统必须做什么?”这个问题。这一阶段是对系统认识最为全面、准确、清晰、得体的一个比较关键的时期。需求分析的结果是系统开发的基础,也应该是用户基本上确定自己的最终要求阶段,

12、为下一步的总体设计打好基础。一旦结束需求分析,整个系统的框架基本上就不应该改变了,它关系到整个系统的成败。.硬件运行要求:为了让交互式CAD系统能够正常运行,至少要具备以下的硬件要求具有486 66MHz处理器(或更高档处理器)的IBM PC兼容机 一个鼠标 足够的硬盘空间,最好2GB的空间 16MB内存 VGA或更高分辨率的监视器软件运行要求:u Windows98操作系统或Windows 2000 操作系统u Vb6.0系统盘VB系统的工作流程图:获得数据是退出吗 处理信息 启 动退 出 是否 四、系统总体设计交互式CAD系统的总体设计设计交互式CAD系统首先应该具备一个控制系统的主控窗口

13、,就是交互式CAD的界面。主控模块分绘图、编辑、缩放三个子模块。我做的系统虽说主要围绕缩放功能,但也是以绘图模块所绘制的图形来实现,所以也是系统中必不可少的部分。第一个子模块为绘图部分,主要有直线、多义线、圆、圆弧。第二个子模块为编辑部分。第三个子模块为图形的缩放部分,也是本系统所要重点设计的部分。所以在本论文当中主要围绕图元的放大、缩小、 局部放大、全屏显示这四个部分。 系 统 界 面局部放大全屏显示编辑绘图缩放缩小放大直线多义线圆弧 圆图3-1系统的总体设计五、 详细设计(一)界面制作界面制作首先要想一想要设计一个什么样的界面,而且还要遵循很多原则。比如有美学方面的,也有习惯方面的。在总体

14、设计原则的指导下,充分考虑细节问题 。(1)制作启动窗口实现交互绘制图元,首先需要创建图形的界面,然后再窗体模块中添加事件代码。在创建界面之前我在设计里添加了启动窗口。制作启动窗口:单击工程菜单的添加窗体点击添加窗体中的展示屏幕。屏幕上的内容可以在属性窗口中修改。(2)菜单设计我的设计里主要有绘图、编辑、缩放等菜单。如总体设计中所示的这些菜单还有各自的子菜单。制作菜单首先在窗体中添加图片框,在工具栏中打开 “菜单编辑器”,利用 “菜单编辑器”可以很方便的实现菜单的制作。绘图菜单包括:“直线” “多义线” “圆弧” “圆”,它们的标题分别是“Line”“Polyline”“Circle”“Arc

15、”和“Text”。缩放菜单包括:“放大” “缩小”“局部放大” “全屏显示”, 它们的标题为“ZoomOut” “ ZoomIn” “LocalZoomOut”和“Extent”。(3)工具栏的设计工具条不仅使程序界面更加美观,利用工具条上的工具按钮,还能提高工作效率。状态栏可以给出当前命令的状态、操作信息、提示和反馈信息,是计算机与用户交互的一个重要窗口。所以要先创建工具条和状态栏。创建工具条可以利用VB提供的Toolbar控件和ImageList控件,利用Statusbar控件可以创建状态栏。在工具箱中单击ImageList控件,在窗体中添加控件ImageList打开属性页对话框。对话框有

16、三个对象分别是通用,图像,颜色。在图像选项卡中,打开的对话框中选择图片的路径和名称,图片将会显示到图片栏中(就如图3-2所示)。 图3-2图像选项(4) 代码设计制作菜单,工具条,状态栏后,就给VB-CAD程序添加。首先给窗体添加ImageList控件ImageList1,添加Toolbar控件,用自定义属性的“属性页”对话框建立与ImageList1控件的联系。添加这些控件之后,添加控件的事件代码。系统运行后的界面如图3-3和图3-4图3-3主界面 图3-4窗口模板(二)绘图代码设计图3-5 “绘图”菜单绘图在CAD系统是必不可少的。我只做了直线、多义线、圆、圆弧四个选项。绘图离不开坐标系统

17、。因为在VB中,只有缺省坐标和自定义坐标两个概念。其中,缺省坐标的原点在于窗口的左上角,横坐标向右为正; 纵坐标向下为正。交互式CAD系统可以实现用鼠标交互式地输入数据。采用面向对象的编程技术,需要首先创建一个图元系列类和一个命令系列类。定义绘图时的交互过程。定义好类以后,再定义类的属性及调用类的方法就可以进行交互绘图了。交互式鼠标的绘图行为,可以在屏幕上移动鼠标光标,并根据光标处的坐标进行绘图。这样整个绘图过程就简单多了,而且也可以随用户的意愿来决定绘图的大小或长度等。用鼠标事件,单击鼠标左键时,开始绘图:Public Sub LeftButton(X As Single As Single

18、);bolDraw=True单击鼠标右键时,取消绘图:Public Sub LeftButtonDown(X As Single,Y As Single);bolDraw=False(1) 直线用Line 方法绘制语法: Object.LineStep(x1,y1)Step(x2,y2),color,BF其中,object:(可选)对象表达式。如果object省略,具有焦点的窗体作为object。Stept:(可选)是关键字,指定起点坐标,相对于CuttentX和 CurrentY 所提供的的当前图标坐标。x1,y1: (可选)Single,直线的起点坐标。ScaleMode属性决定了使用的度

19、量单位。如果省略,线起始于由CurrentX和CurrentY指定的位置。(2) 多义线是由多条直线组成,所以与绘制直线是同一个道理。多义线用Line 方法将多义线的各个顶点一次连线。(3) 绘制圆形使用Circle函数。语法 :object.CircleStept(x,y),radius,color,start,end,aspect其中,object:(可选)对象表达式。如果object省略,具有焦点的窗体作为object。Stept:(可选)是关键字,指定圆的中心,相对于object的CuttentX和 CurrentY 所提供的坐标。x,y: (必须写)Single 圆的中心坐标。Obj

20、ect的ScaleMode属性决定使用的度量单位。radius:(必须选)Single,圆的半径。Object的ScaleMode属性决定使用的度量单位。Start,end:(可选)SingleAspect: (可选)Single,圆的纵横尺寸比。缺省值为1.0(4) 圆弧绘圆弧比起绘圆要复杂一点,本系统采用圆心起点和终点绘制圆弧,除了需要知道圆心以外,还要知道圆弧的起点的终点的坐标。语法:object.CircleStept(x,y),radius,color,start,end,aspect用Circle 方法绘圆弧时,需要知道圆弧的起点和终点与圆心连接和X轴正向所成的角度。圆弧的半径可以

21、根据圆心与起点的距离得到。Start和end分别指定弧的起点和终点相对于中心点的连线与X轴正向所成的角度,用弧度表示。范围在-2*pi()到2*pi()之间,缺省时为0。返回点pBegin 到点pEnd的连线与X轴正向的夹角,用弧度表示。如果重点坐标大于、等于起点坐标。并且终点坐标大于、等于起点坐标 If pEnd.x=pBegin.x And pEnd.y=pBegin.y ThenGetAngle=sita如果终点横坐标小于、等于起点横坐标,并且终点纵坐标大于、等于起点纵坐标ElseIf pEnd.x=pBegin.y ThenGetAngle=PI-sita如果终点横坐标小于、等于起点横

22、坐标,并且终点纵坐标小于、等于起点纵坐标ElseIf pEnd.x= pBegin.x And pEnd.y=pBegin.y ThenGetAngle=PI+sita如果终点横坐标大于、等于起点横坐标,并且终点纵坐标小于、等于起点纵坐标ElseIf pEnd.x= pBegin.x And pEnd.y=pBegin.y ThenGetAngle=2*PI-sitaEnd if计算圆弧的起始点:Angle1=GetAngle(m_pCenter,m_pBegin)计算圆弧终止角:Angle2=GetAngle(m_pCenter,m_pEnd)(三)缩放代码设计 图3-6 “缩放”菜单在绘图

23、和审图过程中,常常有对图形进行缩小或放大的要求。实现各种方式的缩小和放大功能通过调节绘图环境的ScaleLeft, ScalaTop, ScaleWidth 和ScaleHeight属性或者利用Scale方法可以实现图形画面的缩小、放大。缩放菜单项中各项的标题为“ ZoomOut” ,“ZoomIn”,“ LocalZoomOu”和“ Extent”。(1) 全局缩放通过放大或缩小Scale 方法的参数来实现。原理:就是将视口矩形4个角点的坐标放大一定的倍数,视口内的图形将以相应的倍数缩小。相反,将视口矩形4个角点的坐标缩小一定倍数,视口内的图形以相应的倍数放大。全局图形缩小或放大都由改变坐标

24、系统来实现。 全局缩小图形Private Sub ZoomIn_Click() SLeft=sLeft*1.2 以120%的比例放大sRight=sRight*1.2sTopic=sTopic*.2sBottom=sBottom*1.2修改坐标系统Call CoordinateEnd Sub全局放大图形Private Sub ZoomOut_Click() sLeft=sLeft*0.8 以80%的比例缩小 sRight=sRight*0.8 sTopic=sTopic*0.8 sBottom=sBottom*0.8 改变坐标系统Call CoordinateEnd Sub上面两个过程中都要调

25、用Coordinate过程,该过程利用坐标参数Scale方法修改坐标系统,并通过控制视口范围来实现图形的缩放操作。Coordinate 过程的代码:Public Sub Coordinate()利用Scale方法修改坐标系统DrawMain.picDraw.Scale(sLeft,sTopic)-(sRight,sBottom)更新绘图环境DrawMain.picDraw.RefreshEnd Sub 图3-7原始图形 图3-8全局放大和全局缩小结果(2) 局部放大当希望更清楚地了解图形的某个细节部位时,可以采用局部放大技术,把包含该部位的一个矩形范围放大到整个绘图环境。如图3-9所示,要把E

26、点和G点确定的矩形放大到整个绘图环境,需要把E点与屏幕左上角A点对齐,然后按照一定比例放大图形,使矩形内的图形正好全部显示在视口内。放大的比例包括X方向的比例和Y方向的比例,若不改变图元的形状,并且矩形EFGH内的所有图元能在矩形ABCD中显示,放大比例只能取X方向比例和Y方向比例中的小者。A B A E B F E FG H E F G HC D C G D H 图3-9局部放大的原理图示实现局部放大先选取用户所要放大的部分,那么这个部分就用矩形来选取,用Line 方法绘矩形;而且无论放大或缩小都要计算新坐标系与逻辑坐标系的缩放比例因子;然后重新设置视口范围之后,就是局部放大的效果了;创建C

27、viewLocalZoomOut 类,并添加一些相关的代码。然后像处理前面各绘图类一样,在窗体模块中添加相对应的鼠标事件处理代码。 在该类中主要实现选取局部放大的功能。选取行为在移动鼠标的过程中产生,放大行为在鼠标左键第二次击下的那一时刻才产生。就像图3-10和3-11所示矩形窗口图3-10用矩形窗口选择所要放大的局部范围图3-11 局部放大的效果(3) 全屏显示全屏显示是要在绘图环境中刚好显示所有图元。实际上,它是局部放大的一个特例。就如图(3-12)所示,把矩形EFGH中的图形元素正好全部显示在ABCD矩形区域中。所有图元的包围矩形可以通过比较所有图元各自的包围矩形得到。所有图元包围矩形对

28、角定点的最小横坐标和最小纵坐标可以确定一个点,最大横坐标和最大纵坐标可以确定另一个点,由两点所确定的矩形就是要求的包围矩形。ADCBEHGFEDCAFHGA B图3-12显示全图的原理 图3-13原图 图3-14 全屏显示的结果 六、用户手册运行系统,会出现一个界面就如下面所示的图-用户界面。分别有菜单栏、工具栏、状态栏就是显示窗口。全屏显示菜单放大绘图工具窗口绘图区局部放大缩小工具栏那么这个系统应该如何使用?首先在执行缩放功能之前,要在窗口中利用四个绘图工具中四个工具按钮任意绘制几个图。本系统用的是交互式的绘图技术,所以在窗体中用鼠标绘制图形。而且其他功能都使用的是鼠标事件,所以直接用鼠标点

29、击所需要的工具来执行其功能。若要使用放大工具,就直接点击工具栏中的放大工具按钮。并在窗口中点击,就会把已绘制好的图形放大。缩小工具的使用和放大工具一致。全屏显示的原理虽然和局部放大原理差不多,但是使用方法和放大、缩小是一样的。使用局部放大工具,就在用户想要放大的部位拖动鼠标就会出现矩形,第二次单击鼠标就执行它的功能了。其中矩形里面的部分就是用户所要放大的部分。 七、结 束 语经过大概三个月的时间,我的毕业设计终于完成了。回顾整个设计过程,不论是定义时期还是开发时期都尝到了不少的酸甜苦辣。在这次设计中明显感觉到自己的实践经验不足,因此很多方面都有不足与不便之处,而且遇到问题总是不能得心应手的解决

30、。在设计本系统时,因为本人的知识、技术水平有限,在好多地方都有不足和不便之处敬请您多指教。通过这次设计,我还发现查阅资料的重要性。由于我是VB的新手,所以应用起来不是很顺当,这样,大量的书籍资料给了我很大的帮助。而且每一位出书的作者对语言的人士都有各自不同的角度,所以即使是同一水平的书也会有不同的收获。鉴于此我觉得要学好一门语言,就要做到多查、多看、多练、多用。取人之长,补己之短。这样才能少走弯路。另外,平时就养成良好的学习习惯也是非常重要的。遇到什么自认为比较有价值的东西就应及时地记下来,以免以后遇到同样的问题挠头。总之,一次毕业设计,我的受益匪浅。不论从理论上,技术上还是从经验方法上都使自

31、己有了一定的升华,这在我今后的工作中无不是最宝贵的财富。八、致谢在本次毕业设计中,我从指导老师徐善针老师身上学到了很多东西。徐老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益非浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导, 没有他的悉心帮助和指导就没有这次毕业设计的完成。某医疗部门总务信息管理系统(物品管理)能及时开发完成,还有同组的李国珍同学的热心帮助,再次向尊敬的老师和同学表示深深的谢意.九、参考文献1作者: 周爱武 汪海威 出版社:清华大学出版社 书名:Visual Basic 程序设

32、计 2 作者:叶佳 出版社:中国水利水电出版社 书名:中文Visual Basic60.编程实用教程3 作者:姜晓铭 出版社:北京工业大学出版社 书名: Visual Basic6.0程序设计 应用短期培训教程 4 作者:孙家广 出版社:清华大学出版社 书名:计算机图形学5 作者:魏海涛 出版社:电子工业出版社 书名: 计算机图形学6 作者:周培德 出版社:清华大学出版社 书名: 计算几何-算法分析与设计 附件源代码: Option ExplicitGlobal Const PI = 3.1415926绘图模式Public Enum GEDrawMode edmNormal = 1 edmSe

33、lect = 2 edmDelete = 3End Enum线型Public Enum LineStyle vbSolid = 0 vbDash = 1 vbDot = 2 vbDashDot = 3 vbDashDotDot = 4 vbInvisible = 5 vbInsideSolid = 6End Enum命令类型Public Enum GECommandType ecUnknown = 0 ecCreatePoint = 1 ecCreateLine = 2 ecCreatePolyLine = 3 ecCreateCircle = 4 ecCreateArc = 5 ecCrea

34、teText = 6 ecSelOnebyOne = 11 ecSelLines = 12 ecSelPolylines = 13 ecSelCircles = 14 ecSelArcs = 15 ecSelTexts = 16 ecSelAll = 17 ecSelNone = 18 ecMove = 21 ecRotate = 22 ecMirror = 23 ecviewzoomin = 31 ecViewZoomOut = 32 ecViewLocalZoomOut = 33 ecViewPan = 34 ecViewExtent = 35End EnumPublic Type POI

35、NTAPI x As Long y As LongEnd TypePublic Type rect Left As Long Top As Long Right As Long Bottom As LongEnd TypePublic sLeft As DoublePublic sTopic As DoublePublic sRight As DoublePublic sBottom As DoublePublic Scal As DoublePublic ptLineBegin As New PositionPublic ptLineEnd As New PositionPublic ptP

36、LPoints(1 To 100, 1 To 100) As New PositionPublic PLPoints(1 To 100, 1 To 100) As New PositionPublic intPLPointNum As IntegerPublic ptCircleCenter As New PositionPublic ptCircleR As New PositionPublic ptArcCenter As New PositionPublic ptArcBegin As New PositionPublic ptArcEnd As New PositionPublic C

37、ommand As GECommandTypePublic GElements As New CGElementsPublic lines As New CLinesPublic polylines As New CPolylinesPublic circles As New CCirclesPublic arcs As New CArcsPublic texts As New CTextsPublic SelLines As New CLineSelPublic SelPLines As New CPLineSelPublic SelCircles As New CCircleSelPubl

38、ic SelArcs As New CArcSelPublic SelTexts As New CTextsPublic intmStep As IntegerPublic PickRadius As DoublePublic bolMirror As BooleanPublic intArcMirrorNum As IntegerPublic ptBasePos As New PositionPublic ptDesPos As New PositionPublic pBasePos As New PositionPublic pDesPos As New PositionPublic sc

39、ale1 As DoublePublic sinOriginX As DoublePublic sinOriginY As DoublePublic geNum As IntegerPublic entCount As IntegerPublic Declare Function Rectangle Lib gdi32 (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As LongPublic Declare Function GetClientRect Li

40、b user32 (ByVal hwnd As Long, lpRect As rect) As LongPublic Declare Function GetBkColor Lib gdi32 (ByVal hdc As Long) As LongFunction distPtoP(Pos1 As Position, Pos2 As Position) As Double Dim disx As Double, disy As Double, dist As Double With Pos1 disx = .x - Pos2.x disy = .y - Pos2.y End With dis

41、tPtoP = Sqr(disx * disx + disy * disy) distPtoP = (disx + disy + 2 * max(disx, disy) / 3End Function计算点到直线的距离Function distPtoL(pos As Position, CLine1 As CLine) As Double Dim k As Double Dim C As Double Dim px As Double, py As Double Dim distX As Double, distY As Double With pos px = .x py = .y End

42、With Call CLine1.LineKX(k, C) If k = 0 Then distX = 10000 distY = Abs(py - CLine1.pLineBegin.y) ElseIf k = 10000 Then distX = Abs(px - CLine1.pLineBegin.x) distY = 10000 Else distX = Abs(px - (py - C) / k) distY = Abs(py - (k * px + C) End If distPtoL = min(distX, distY)End FunctionFunction GetAngle(pBegin As Position, pEnd As Position) As Double Dim tansita A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1