资源描述
第3章 V B程序设计
3.1 插补软件设计
系统的公共文件
依据系统模块结构图,抽取系统中多个模块的相同子功能,建立系统公共文件,可以做到减少总代码量,避免重复开发,报纸系统实现风格统一,以及增强可修改性。
a、主体框架
b、添加模块
c、定义用户名、用户类型、职员编号以及登陆成功的标志位系统公共变量定义。
d、Main(系统启动)函数
e、ConnectString函数
f、txtlsNull函数
判断输入到TextBox的内容是否为空。
g、SEquellen函数
判断输入到TextBox的内容长度是否为给定值。
(2)功能设计
a题目模块
数控插补软件的题目是“逐点比较法插补仿真软件”
b个人信息模块
输入自己的信息:专业:机械设计与制造学号:******* 姓名**** 指导老师:****
c直线插补
当单击直线插补时,顺圆插补、逆圆插补、顺时针画圆弧、逆时针画圆弧不可见。
d顺圆插补
当单击顺圆插补时,直线插补、逆圆插补不可见。
e逆圆插补
当单击逆圆插补时,直线插补、顺圆插补不可见。
f起点坐标终点坐标模块
可输入-10到10之间这几个数值
g画直线
在输入数值后,点击画直线,实现执行画直线的命令。
h顺时针画圆弧,逆时针画圆弧
当输入数值后,点击此按钮,实现执行画圆弧命令。
i连续插补、单步插补
在左下框内实现图形,右框内实现插补步骤。
J退出
单击后退出软件。
3.2 插补程序的实现
画直线采用的是Microsoft Visual Basic 6.0 中文版中的Line命令实现的,例如:Picture1.Line (x1, y1)-(x2, y2), RGB(255, 0, 0) ,就是在图片框中从起始坐标 (x1, y1)到终点坐标(x2, y2)画一条红色的直线。再根据上面的插补原理和软件流程图就可以编出插补程序。
画圆弧采用Microsoft Visual Basic 6.0 中文版中的Circle命令实现的,例如:⑴ Picture1.Circle (x1, y1),r, vbRed,就是在图片框坐标中以坐标X1, Y1为圆心画一个半径为r的红色圆。⑵ Picture1.Circle (0, 0), r1, , n, m,就是图片框中以坐标原点为圆心,以r1为半径,以弧度n为起始点,以弧度m为终点画圆弧。再根据上面的插补原理和软件流程图就可以编出插补程序。
插补界面如图2-14,直线和圆弧的走刀轨迹输出在一个图片框中,插补演示的过程,刀具走的方向,偏差结果,输出工步数等,都在一个指定的文本框中输出,插补类型用三个单选按钮实现。只要选择相应的按钮,在文本框中输入相应的坐标就可以看到所输入坐标直线和圆弧的走刀轨迹了。
3.3 Visual Basic语言简介
Visual Basic,简称VB,是Microsoft公司推出的一种Windows应用程序开发工具。是当今世界上使用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程方法。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最简便的方法。
Visual Basic中的“Visual”指的是采用可视化的开发图形用户界面(GUI)的方法,一般不需要编写大量代码去描述界面元素的外观和位置,而只要把需要的控件拖放到屏幕上的相应位置即可;“Basic”指的是BASIC语言,因为VB是在原有的BASIC语言的基础上发展起来的,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。专业人员可以用 Visual Basic 实现其它任何 Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。
3.4 Visual Basic 的特点
1.面向对象
VB采用了面向对象设计思想它基本思路是把复杂设计问题分解为个个能够完成独立功能相对简单对象集合所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等面向对象编程就好像搭积木样员可根据和界面设计要求直接在屏幕上“画\"出窗口、菜单、按钮等区别类型对象并为每个对象设置属性。
2.事件驱动
在Windows环境下是以事件驱动方式运行每个对象都能响应多个区别事件每个事件都能驱动段代码——事件过程该代码决定了对象功能通常称这种机制为事件驱动事件可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)事件该事件中代码就会被执行若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成。
3.软件Software集成式开发
VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便。
4.结构化设计语言
VB具有丰富数据类型是种符合结构化设计思想语言而且简单易学此外作为种设计语言VB还有许多独到的处。
5.强大数据库访问功能
VB利用数据Control控件可以访问多种数据库VB6.O提供ADOControl控件不但可以用最少代码实现数据库操作和控制也可以取代DataControl控件和RDOControl控件。
6.支持对象链接和嵌入技术
VB核心是对对象链接和嵌入(OLE)技术支持它是访问所有对象种思路方法利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于体。
7.网络功能
VB6.O提供了DltTML(Dynamic}tTML)设计工具利用这种技术可以动态创建和编辑Web页面使用户在VB中开发多功能网络应用软件Software.
8.多个应用向导
VB提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速地创建区别类型、区别功能应用。
9.支持动态交换、动态链接技术.
通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API)。
lO.联机帮助功能
在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有关举例代码通过复制、粘贴操作可获取大量举例代码为用户学习和使用提供方便。
第4章 VB插补程序代码
VERSION 5.00
Begin VB.Form 数控插补仿真软件
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "数控插补仿真演示软件"
ClientHeight = 10830
ClientLeft = 165
ClientTop = 555
ClientWidth = 15240
FillColor = &H00C0C0C0&
FillStyle = 0 'Solid
BeginProperty Font
Name = "宋体"
Size = 36
Charset = 134
Weight = 400
Underline = 0 'False
Italic = -1 'True
Strikethrough = 0 'False
EndProperty
ForeColor = &H00C0C0C0&
LinkTopic = "Form1"
Picture = "程序演示2.frx":0000
ScaleHeight = 191.029
ScaleMode = 6 'Millimeter
ScaleWidth = 268.817
StartUpPosition = 3 '窗口缺省
Begin VB.Frame Frame1
BackColor = &H00FFFF00&
Caption = "插补类型"
BeginProperty Font
Name = "黑体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00FF0000&
Height = 1695
Left = 3360
MousePointer = 1 'Arrow
TabIndex = 16
Top = 2280
Width = 1935
Begin VB.OptionButton Option3
BackColor = &H008080FF&
Caption = "直线插补"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Height = 255
Left = 240
MaskColor = &H00FFFFFF&
TabIndex = 19
Top = 360
Width = 1215
End
Begin VB.OptionButton Option2
BackColor = &H008080FF&
Caption = "逆圆插补"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Height = 255
Left = 240
TabIndex = 18
Top = 1320
Width = 1215
End
Begin VB.OptionButton Option1
BackColor = &H008080FF&
Caption = "顺圆插补"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Height = 255
Left = 240
TabIndex = 17
Top = 840
Width = 1215
End
End
Begin VB.CommandButton Command4
Caption = "退出"
BeginProperty Font
Name = "黑体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 720
Left = 13800
TabIndex = 15
Top = 2640
Width = 1335
End
Begin VB.CommandButton Command5
BackColor = &H80000005&
Caption = "画直线"
BeginProperty Font
Name = "黑体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 720
Left = 5670
MaskColor = &H00808080&
TabIndex = 11
Top = 2640
Width = 1320
End
Begin VB.Frame Frame2
BackColor = &H00FFFF00&
Caption = "输入坐标"
BeginProperty Font
Name = "黑体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00FF0000&
Height = 1695
Left = 0
TabIndex = 7
Top = 2280
Width = 3120
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 15.75
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H000000FF&
Height = 435
Index = 3
Left = 2100
TabIndex = 14
Top = 1050
Width = 750
End
Begin VB.TextBox Text1
BeginProperty Font
Name = "宋体"
Size = 15.75
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H000000FF&
Height = 435
Index = 2
Left = 1155
End If
ElseIf r1 = r2 And x1 >= 0 And y1 >= 0 And x2 < 0 And y2 >= 0 Then
a = y2 / r1
b = y1 / r1
m = pi - arcsin(a)
n = arcsin(b)
Picture1.Circle (0, 0), r1, , n, m
ElseIf r1 = r2 And x1 >= 0 And y1 >= 0 And x2 <= 0 And y2 < 0 Then
a = Abs(x2) / r1
b = y1 / r1
m = pi * 3 / 2 - arcsin(a)
n = arcsin(b)
Picture1.Circle (0, 0), r1, , n, m
ElseIf r1 = r2 And x1 >= 0 And y1 >= 0 And x2 > 0 And y2 <= 0 Then
a = Abs(y2) / r1
b = y1 / r1
m = 2 * pi - arcsin(a)
n = arcsin(b)
Picture1.Circle (0, 0), r1, , n, m
' ElseIf r1 = r2 And X1 >= 0 And Y1 >= 0 And X2 >= 0 And Y2 >= 0 And (Y1) >= (Y2) Then
' a = Y2 / r2
'b = Y1 / r1
' m = arcsin(a)
' n = arcsin(b)
' If m > n Then
'Picture1.Circle (0, 0), r1, , n, m
' Else
'Picture1.Circle (0, 0), r1
' Picture1.Circle (0, 0), r1, , m, n
' End If
ElseIf r1 = r2 And x1 < 0 And y1 >= 0 And x2 < 0 And y2 >= 0 Then
a = y2 / r1
b = y1 / r1
m = pi - arcsin(a)
n = pi - arcsin(b)
If m > n Then
Picture1.Circle (0, 0), r1, , m, n
Else
Picture1.Circle (0, 0), r1, , n, m
End If
ElseIf r1 = r2 And x1 < 0 And y1 >= 0 And x2 <= 0 And y2 < 0 Then
a = Abs(x2) / r1
b = y1 / r1
m = pi * 3 / 2 - arcsin(a)
n = pi - arcsin(b)
Picture1.Circle (0, 0), r1, , n, m
ElseIf r1 = r2 And x1 < 0 And y1 >= 0 And x2 > 0 And y2 <= 0 Then
a = Abs(y2) / r1
b = y1 / r1
m = pi * 2 - arcsin(a)
n = pi - arcsin(b)
Picture1.Circle (0, 0), r1, , n, m
ElseIf r1 = r2 And x1 < 0 And y1 >= 0 And x2 >= 0 And y2 >= 0 Then
a = y2 / r1
b = y1 / r1
m = pi - arcsin(b)
n = arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
'ElseIf r1 = r2 And X1 <= 0 And Y1 >= 0 And X2 <= 0 And Y2 >= 0 Then
' a = X2 / r2
' b = Y1 / r1
' m = pi - arcsin(a)
'n = pi - arcsin(b)
' If m > n Then
' Picture1.Circle (0, 0), r1, , m, n
' Else
' Picture1.Circle (0, 0), r1
'End If
ElseIf r1 = r2 And x1 <= 0 And y1 < 0 And x2 <= 0 And y2 < 0 Then
a = Abs(x2) / r1
b = Abs(x1) / r1
m = 3 * pi / 2 - arcsin(a)
n = 3 * pi / 2 - arcsin(b)
If m > n Then
Picture1.Circle (0, 0), r1, , n, m
Else
Picture1.Circle (0, 0), r1, , n, m
End If
ElseIf r1 = r2 And x1 <= 0 And y1 < 0 And x2 > 0 And y2 <= 0 Then
a = Abs(y2) / r1
b = Abs(x1) / r1
m = 3 * pi / 2 - arcsin(a)
n = pi * 2 - arcsin(b)
Picture1.Circle (0, 0), r1, , m, n
ElseIf r1 = r2 And x1 <= 0 And y1 < 0 And x2 >= 0 And y2 >= 0 Then
a = y2 / r1
b = Abs(x1) / r1
m = 3 * pi / 2 - arcsin(b)
n = arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
ElseIf r1 = r2 And x1 <= 0 And y1 < 0 And x2 < 0 And y2 >= 0 Then
a = y2 / r1
b = Abs(x1) / r1
m = 3 * pi / 2 - arcsin(b)
n = pi - arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
' ElseIf r1 = r2 And X1 <= 0 And Y1 <= 0 And X2 <= 0 And Y2 <= 0 Then
' a = Abs(X2) / r2
' b = Abs(X1) / r1
' m = 3 * pi / 2 - arcsin(b)
' n = 3 * pi / 2 - arcsin(a)
' If m > n Then
' Picture1.Circle (0, 0), r1, , n, m
' Else
' Picture1.Circle (0, 0), r1
' End If
ElseIf r1 = r2 And x1 >= 0 And y1 <= 0 And x2 >= 0 And y2 <= 0 Then
a = Abs(y2) / r1
b = Abs(y1) / r1
m = 2 * pi - arcsin(a)
n = 2 * pi - arcsin(b)
If m > n Then
Picture1.Circle (0, 0), r1, , n, m
Else
Picture1.Circle (0, 0), r1, , n, m
End If
ElseIf r1 = r2 And x1 > 0 And y1 <= 0 And x2 >= 0 And y2 >= 0 Then
a = y2 / r1
b = Abs(y1) / r1
m = 2 * pi - arcsin(b)
n = arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
ElseIf r1 = r2 And x1 > 0 And y1 <= 0 And x2 < 0 And y2 >= 0 Then
a = y2 / r1
b = Abs(y1) / r1
m = 2 * pi - arcsin(b)
n = pi - arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
ElseIf r1 = r2 And x1 > 0 And y1 <= 0 And x2 <= 0 And y2 <= 0 Then
a = Abs(x2) / r1
b = Abs(y1) / r1
m = 2 * pi - arcsin(b)
n = 3 * pi / 2 - arcsin(a)
Picture1.Circle (0, 0), r1, , m, n
'Else
' a = Abs(Y2) / r1
' b = Abs(Y1) / r1
' m = 2 * pi - arcsin(a)
' n = 2 * pi - arcsin(b)
' If m > n Then
' Picture1.Circle (0, 0), r1, , n, m
' Else
' Picture1.Circle (0, 0), r1
' End If
End If
End Sub
Function judge(X As Integer, Y As Integer) '象限判断
If Option1.Value = True Then
If X >= 0 And Y > 0 Then
judge = 1
ElseIf X < 0 And Y >= 0 Then
judge = 2
ElseIf X <= 0 And Y < 0 Then
judge = 3
Else
judge = 4
End If
ElseIf Option2.Value = True Then
If X > 0 And Y >= 0 Then
judge = 1
ElseIf X <= 0 And Y > 0 Then
judge = 2
ElseIf X < 0 And Y <= 0 Then
judge = 3
Else
judge = 4
End If
ElseIf Option3.Value = True Then
If X > 0 And Y >= 0 Then
judge = 1
ElseIf X <= 0 And Y > 0 Then
judge = 2
ElseIf X < 0 And Y <= 0 Then
judge = 3
Else
judge = 4
End If
End If
End Function
Private Sub Command2_Click() ' 连续插补程序
Dim n As Integer, X As Integer, c As Integer, Y As Integer, p As Single
Dim f, r1 As Single
f = 0
n = 0
x1 = Int(Val(Text1(0)))
y1 = Int(Val(Text1(1)))
x2 = Int(Val(Text1(2)))
y2 = Int(Val(Text1(3)))
'直线连续插补
If Option3.Value = True Then
Picture1.CurrentX = x1
Picture1.CurrentY = y1
X = Picture1.CurrentX
Y = Picture1.CurrentY
Text2.Text = Text2.Text & Space(1) & "0" & Space(10) & " f = 0" & Space(45) & x1 & "," & y1
Do Until (X - x2) = 0 And (Y - y2) = 0
n = n + 1
If f >= 0 Then
f = f - Abs(y2 - y1)
If x2 > x1 Then
X = X + 1
Picture1.Line -(X, Y), vbRed
Text2.Text = Text2.Text & Chr(13) & Chr(10) & Space(1) & n & Space(11) & "f >= 0" & Space(13) & " +x" & Space(11) & "f=" & Format$(f, "##0.0") & Space(12) & X & "," & Y
Else
X = X - 1
Picture1.Line -(X, Y), vbRed
Text2.Text = Text2.Text & Chr(13) & Chr(10) & Space(1) & n & Space(11) & "f >= 0" & Space(13) & " -x" & Space(11) & "f=" & Format$(f, "##0.0") & Space(12) &
展开阅读全文