⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 翼型数据处理程序.frm

📁 一个能将一般图纸(CAD或其他)的弯曲或者其他变形之后的翼型复原成原始翼型
💻 FRM
字号:
VERSION 5.00
Begin VB.Form FrmTRansact 
   Caption         =   "数据处理界面"
   ClientHeight    =   4065
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4845
   LinkTopic       =   "Form1"
   ScaleHeight     =   4044.776
   ScaleMode       =   0  'User
   ScaleWidth      =   4820.896
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox TxtBxy 
      Appearance      =   0  'Flat
      Enabled         =   0   'False
      Height          =   390
      Left            =   3360
      TabIndex        =   15
      Top             =   1200
      Width           =   975
   End
   Begin VB.TextBox TxtXY 
      Height          =   375
      Left            =   2040
      TabIndex        =   9
      Text            =   "1"
      Top             =   1200
      Width           =   495
   End
   Begin VB.TextBox TxtK 
      Height          =   375
      Left            =   5040
      TabIndex        =   12
      Text            =   "40"
      Top             =   480
      Width           =   1215
   End
   Begin VB.CommandButton CmdPlot 
      Height          =   495
      Left            =   3480
      TabIndex        =   10
      Top             =   3000
      Width           =   1335
   End
   Begin VB.TextBox TxtNum 
      Height          =   375
      Left            =   2040
      TabIndex        =   7
      Top             =   240
      Width           =   1335
   End
   Begin VB.ComboBox Combo1 
      Height          =   1080
      Left            =   2040
      Style           =   1  'Simple Combo
      TabIndex        =   5
      Text            =   "Combo1"
      Top             =   1680
      Width           =   1335
   End
   Begin VB.TextBox TxtSym 
      Height          =   375
      Left            =   2040
      TabIndex        =   8
      Top             =   720
      Width           =   1335
   End
   Begin VB.CommandButton CmdSTA 
      Caption         =   "生成通用格式数据"
      Height          =   495
      Left            =   240
      TabIndex        =   2
      Top             =   3000
      Width           =   1695
   End
   Begin VB.CommandButton CmdWrite 
      Caption         =   "写入数据库"
      Height          =   495
      Left            =   2040
      TabIndex        =   1
      Top             =   3000
      Width           =   1335
   End
   Begin VB.CommandButton CmdFinish 
      Caption         =   "完 成"
      Height          =   375
      Left            =   3600
      TabIndex        =   0
      Top             =   3600
      Width           =   1095
   End
   Begin VB.Label Label6 
      Caption         =   " 参考值:"
      Height          =   255
      Left            =   2520
      TabIndex        =   14
      Top             =   1320
      Width           =   855
   End
   Begin VB.Label Label5 
      Caption         =   "  翼型形状修正因子:"
      Height          =   375
      Left            =   0
      TabIndex        =   13
      Top             =   1200
      Width           =   1815
   End
   Begin VB.Label Label4 
      Caption         =   "图象放大系数:"
      Height          =   255
      Left            =   5040
      TabIndex        =   11
      Top             =   120
      Width           =   1455
   End
   Begin VB.Label Label3 
      Caption         =   "采集坐标点对数:    >30&&<150"
      Height          =   375
      Left            =   360
      TabIndex        =   6
      Top             =   240
      Width           =   1455
   End
   Begin VB.Label Label2 
      Caption         =   "已存在的翼型类:"
      Height          =   375
      Left            =   360
      TabIndex        =   4
      Top             =   1680
      Width           =   1455
   End
   Begin VB.Label Label1 
      Caption         =   "  翼型数据类名:"
      Height          =   375
      Left            =   360
      TabIndex        =   3
      Top             =   720
      Width           =   1455
   End
End
Attribute VB_Name = "FrmTRansact"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private strPath, strMDB, strData As String
Private Sym As String
Private T(150) As Single
Private XA(1 To 25), YA(1 To 25), YB(1 To 25) As Single
Private Num As Integer
Private i As Integer
Private SimR, CenAN As Single
Private objFSO As New FileSystemObject
Private objText As TextStream

Private Sub CmdFinish_Click()
Unload Me
End Sub

Private Sub CmdPlot_Click()
FrmTRansact.Width = 13000
FrmTRansact.Visible = False
FrmTRansact.Show

Dim XPOS, YPOS
Dim K As Integer

XPOS = 3.5 * ScaleWidth / 7
YPOS = 1 * ScaleHeight / 2


CurrentX = XPOS
CurrentY = YPOS

   
K = TxtK.Text


For i = 1 To 25
Line -(XA(i) * K + XPOS, YA(i) * K + YPOS)
Next

CurrentX = XPOS
CurrentY = YPOS
   
For i = 1 To 25
Line -(XA(i) * K + XPOS, YB(i) * K + YPOS)
Next
Line (XPOS, YPOS)-(XPOS + (XA(25) + XA(25)) * K / 2, YPOS + (YA(25) + YB(25)) * K / 2)
Const PI = 3.14159265

Circle (XA(25) * K + XPOS, YPOS), YA(25) * K, , PI * 19 / 13, PI * 6 / 13

End Sub

Private Sub CmdSTA_Click()
CmdWrite.Enabled = True

Num = Val(Trim(TxtNum.Text))
Sym = Trim(TxtSym.Text)

Dim strT  As String
Set objText = objFSO.OpenTextFile(strData & "predata.txt", ForReading, False, TristateUseDefault)
    
    SimR = objText.ReadLine
    CenAN = objText.ReadLine
    For i = 0 To Num - 1
        strT = objText.ReadLine
        T(Num - 1 - i) = Val(Trim(strT))
    Next

Call Transact

TxtBxy.Text = Str(50 * 180 / (SimR * CenAN * 4 * Atn(1)))

End Sub



Private Sub CmdWrite_Click()

Dim Conn As New ADODB.Connection
Dim Rs As ADODB.Recordset

Set Conn = New ADODB.Connection
Conn.CursorLocation = adUseClient

Dim strSQL As String
Dim STRS As String

STRS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDB & "aerofoil.mdb"
Conn.Open STRS

Set Rs = New ADODB.Recordset
Rs.Open "select * from aerofoil", Conn, adOpenStatic, adLockOptimistic
Rs.MoveLast
Rs.MoveFirst

Dim strKind As String
Dim symKind As Boolean
Dim nCount As Integer
nCount = Rs.RecordCount
symKind = False
strKind = TxtSym.Text
For i = 0 To nCount - 1
    If strKind = Rs!aerofoilSym Then
       symKind = True
       Exit For
    End If
    Rs.MoveNext
Next

If symKind = False Then
   Rs.MoveLast
   Rs.AddNew
End If

Rs!pointNum = 25
Rs!aerofoilSym = strKind
Rs!t1 = YA(1)
Rs!t3 = YA(2)
Rs!t5 = YA(3)
Rs!t7 = YA(4)
Rs!t9 = YA(5)
Rs!t11 = YA(6)
Rs!t13 = YA(7)
Rs!t15 = YA(8)
Rs!t17 = YA(9)
Rs!t19 = YA(10)
Rs!t21 = YA(11)
Rs!t23 = YA(12)
Rs!t25 = YA(13)
Rs!t27 = YA(14)
Rs!t29 = YA(15)
Rs!t31 = YA(16)
Rs!t33 = YA(17)
Rs!t35 = YA(18)
Rs!t37 = YA(19)
Rs!t39 = YA(20)
Rs!t41 = YA(21)
Rs!t43 = YA(22)
Rs!t45 = YA(23)
Rs!t47 = YA(24)
Rs!t49 = YA(25)
Rs!t2 = YB(1)
Rs!t4 = YB(2)
Rs!t6 = YB(3)
Rs!t8 = YB(4)
Rs!t10 = YB(5)
Rs!t12 = YB(6)
Rs!t14 = YB(7)
Rs!t16 = YB(8)
Rs!t18 = YB(9)
Rs!t20 = YB(10)
Rs!t22 = YB(11)
Rs!t24 = YB(12)
Rs!t26 = YB(13)
Rs!t28 = YB(14)
Rs!t30 = YB(15)
Rs!t32 = YB(16)
Rs!t34 = YB(17)
Rs!t36 = YB(18)
Rs!t38 = YB(19)
Rs!t40 = YB(20)
Rs!t42 = YB(21)
Rs!t44 = YB(22)
Rs!t46 = YB(23)
Rs!t48 = YB(24)
Rs!t50 = YB(25)
Rs!t51 = XA(1)
Rs!t52 = XA(2)
Rs!t53 = XA(3)
Rs!t54 = XA(4)
Rs!t55 = XA(5)
Rs!t56 = XA(6)
Rs!t57 = XA(7)
Rs!t58 = XA(8)
Rs!t59 = XA(9)
Rs!t60 = XA(10)
Rs!t61 = XA(11)
Rs!t62 = XA(12)
Rs!t63 = XA(13)
Rs!t64 = XA(14)
Rs!t65 = XA(15)
Rs!t66 = XA(16)
Rs!t67 = XA(17)
Rs!t68 = XA(18)
Rs!t69 = XA(19)
Rs!t70 = XA(20)
Rs!t71 = XA(21)
Rs!t72 = XA(22)
Rs!t73 = XA(23)
Rs!t74 = XA(24)
Rs!t75 = XA(25)
Rs.Update

Rs.Close
Conn.Close

Dim MyVal
    MyVal = MsgBox("已经更新到数据库!", vbInformation & vbOKOnly, "提示")
End Sub

Private Sub Combo1_Click()
Dim Conn As New ADODB.Connection
Dim Rs As ADODB.Recordset

Set Conn = New ADODB.Connection
Conn.CursorLocation = adUseClient

Dim strSQL As String
Dim strSource As String
strSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDB & "aerofoil.mdb"
Conn.Open strSource
Set Rs = New ADODB.Recordset
Rs.Open "select * from aerofoil", Conn, adOpenStatic, adLockOptimistic
Rs.MoveLast
Rs.MoveFirst

Dim strKind As String
Dim symKind As Boolean
Dim nCount As Integer
nCount = Rs.RecordCount
symKind = False
strKind = Combo1.Text
For i = 0 To nCount - 1
    If strKind = Rs!aerofoilSym And strKind <> "Flat" Then
       symKind = True
       Exit For
    End If
    Rs.MoveNext
Next
    
If symKind Then
   YA(1) = Rs!t1
   YA(2) = Rs!t3
   YA(3) = Rs!t5
   YA(4) = Rs!t7
   YA(5) = Rs!t9
   YA(6) = Rs!t11
   YA(7) = Rs!t13
   YA(8) = Rs!t15
   YA(9) = Rs!t17
   YA(10) = Rs!t19
   YA(11) = Rs!t21
   YA(12) = Rs!t23
   YA(13) = Rs!t25
   YA(14) = Rs!t27
   YA(15) = Rs!t29
   YA(16) = Rs!t31
   YA(17) = Rs!t33
   YA(18) = Rs!t35
   YA(19) = Rs!t37
   YA(20) = Rs!t39
   YA(21) = Rs!t41
   YA(22) = Rs!t43
   YA(23) = Rs!t45
   YA(24) = Rs!t47
   YA(25) = Rs!t49
   YB(1) = Rs!t2
   YB(2) = Rs!t4
   YB(3) = Rs!t6
   YB(4) = Rs!t8
   YB(5) = Rs!t10
   YB(6) = Rs!t12
   YB(7) = Rs!t14
   YB(8) = Rs!t16
   YB(9) = Rs!t18
   YB(10) = Rs!t20
   YB(11) = Rs!t22
   YB(12) = Rs!t24
   YB(13) = Rs!t26
   YB(14) = Rs!t28
   YB(15) = Rs!t30
   YB(16) = Rs!t32
   YB(17) = Rs!t34
   YB(18) = Rs!t36
   YB(19) = Rs!t38
   YB(20) = Rs!t40
   YB(21) = Rs!t42
   YB(22) = Rs!t44
   YB(23) = Rs!t46
   YB(24) = Rs!t48
   YB(25) = Rs!t50
End If

If strKind = "Flat" Then
   
   Dim FT As Single
   Dim J As Integer
   FT = InputBox("请输入平板厚度:", "提示")
   
   XA(1) = 0.5
   XA(2) = 0.75
   XA(3) = 1.25
   XA(4) = 2.5
   XA(5) = 5
   XA(6) = 7.5
   For i = 7 To 25
       XA(i) = 10 + (i - 7) * 5
   Next
   
   For J = 1 To 25
       YA(J) = FT / 2
       YB(J) = -FT / 2
   Next
   
End If

Rs.Close
Conn.Close

End Sub


Private Sub Form_Load()
    strPath = App.Path
    strMDB = strPath & "\DataBase\"
    strData = strPath & "\aerofoil\"

CmdWrite.Enabled = False
CmdPlot.Caption = "查看翼型曲线"
    

Dim Conn As New ADODB.Connection
Dim Rs As ADODB.Recordset

Set Conn = New ADODB.Connection
Conn.CursorLocation = adUseClient

Dim strSQL As String
Dim strSource As String
strSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDB & "aerofoil.mdb"
Conn.Open strSource
Set Rs = New ADODB.Recordset
Rs.Open "select * from aerofoil", Conn, adOpenStatic, adLockOptimistic
Rs.MoveLast
Rs.MoveFirst

Dim nCount As Integer
    nCount = Rs.RecordCount
    For i = 0 To nCount - 1
        Combo1.List(i) = Rs!aerofoilSym
        Rs.MoveNext
    Next
    
Rs.Close
Conn.Close

XA(1) = 0.5
XA(2) = 0.75
XA(3) = 1.25
XA(4) = 2.5
XA(5) = 5
XA(6) = 7.5
For i = 7 To 25
   XA(i) = 10 + (i - 7) * 5
Next


End Sub

Private Sub Transact()
Dim LE As Single
Dim SCA As Single
Dim K, J As Integer
Dim XY As Single
    
    LE = SimR * CenAN * 4 * Atn(1) / 180
    TxtXY.Text = Str(50 * 180 / (SimR * CenAN * 4 * Atn(1)))
    XY = Val(Trim(TxtXY.Text))
    
    For i = 1 To 25
        SCA = Num * XA(i) / 100
        J = Fix(SCA)
        K = Fix(SCA) + 1
        If Abs(SCA - J) < Abs(K - SCA) Then
          J = J
        ElseIf Abs(SCA - J) < Abs(K - SCA) Then
          J = K
        End If
        
        If J = Num Then
           J = Num - 2
           K = J + 1
        End If
        
        YA(i) = (T(J) + (T(K) - T(J)) * (SCA - Fix(SCA))) * XY
        YB(i) = -(T(J) + (T(K) - T(J)) * (SCA - Fix(SCA))) * XY
    Next
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -