📄 输出图形截面.frm
字号:
Private Sub Command_Click()
If Command.Caption = "计算内力" Then
Call 计算内力
Command.Enabled = False
Form1.Opt(1).Value = True
Else
Form1.Opt(0).Enabled = False
Form1.Opt(1).Enabled = False
Form1.Opt(2).Enabled = False
Form1.Opt(3).Enabled = False
Form1.Picture1.Cls
End If
End Sub
Public Sub Form_Load()
Show
Picture1.Cls
Selectedoption = 0
If 图 = "内力" Then
Form1.Opt(0).Enabled = False
Form1.Opt(1).Enabled = True
Form1.Opt(2).Enabled = True
Form1.Opt(3).Enabled = True
ElseIf 图 = "荷载" Then
Form1.Opt(0).Enabled = True
Form1.Opt(1).Enabled = False
Form1.Opt(2).Enabled = False
Form1.Opt(3).Enabled = False
Else
Form1.Opt(0).Enabled = False
Form1.Opt(1).Enabled = False
Form1.Opt(2).Enabled = False
Form1.Opt(3).Enabled = False
End If
End Sub
Private Sub Opt_Click(Index As Integer)
Selectedoption = Index
End Sub
Sub 弯矩图()
Dim M1 As Single, M2 As Single, Mmax As Single
Dim Q1 As Single, Q2 As Single, qmax As Single
Dim Ne, nn, c As Single, L As Single, X, i
Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
Dim M(200) As Single, Q(200) As Single
ReDim V(Nodg) As Integer
For Ne = 1 To Ncell
M1 = 杆端力(Ne).M1
M2 = 杆端力(Ne).M2
If Abs(M1) > Mmax Then Mmax = Abs(M1)
If Abs(M2) > Mmax Then Mmax = Abs(M2)
Next Ne
nn = 100
If Mmax > 0 Then
c = Lmax * 0.25 / Mmax
Else
Mmax = 1
End If
For Ne = 1 To Ncell
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
M1 = 杆端力(Ne).M1
M2 = 杆端力(Ne).M2
Q1 = 杆端力(Ne).Q1
For i = 1 To nn + 1
X = (i - 1) * L / nn
M(i) = M1 - Q1 * X
Next i
Call 荷载下简支梁内力(Ne, nn, L, M(), Q()) '输出迭加后值
Picture1.PSet (X1, Y1)
For i = 1 To nn + 1
X = (i - 1) * L / nn
Xm = X1 + X * cosA - M(i) * sinA * c
Ym = Y1 + X * sinA + M(i) * cosA * c
Picture1.Line -(Xm, Ym), vbBlue
Next i
Picture1.Line -(x2, y2), vbBlue
Call 标内力(NGN(Ne, 1), M1, X1, Y1)
Call 标内力(NGN(Ne, 2), M2, x2, y2)
Next Ne
End Sub
Sub 剪力图()
Dim M1 As Single, M2 As Single, Mmax As Single
Dim Q1 As Single, Q2 As Single, qmax As Single
Dim Ne, nn, c As Single, L As Single, X, i
Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
Dim Q(200) As Single, M(200) As Single
ReDim V(Nodg) As Integer
For Ne = 1 To Ncell
Q1 = 杆端力(Ne).Q1
Q2 = 杆端力(Ne).Q2
If Abs(Q1) > qmax Then qmax = Abs(Q1)
If Abs(Q2) > qmax Then qmax = Abs(Q2)
Next Ne
nn = 150
If qmax > 0 Then
c = Lmax * 0.25 / qmax
Else
qmax = 1
End If
For Ne = 1 To Ncell
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
Q1 = 杆端力(Ne).Q1
Q2 = 杆端力(Ne).Q2
For i = 1 To nn + 1
X = (i - 1) * L / nn
Q(i) = Q1
Next i
Call 荷载下简支梁内力(Ne, nn, L, M(), Q()) '输出迭加后值
Picture1.PSet (X1, Y1)
For i = 1 To nn + 1
X = (i - 1) * L / nn
Xm = X1 + X * cosA - Q(i) * sinA * c
Ym = Y1 + X * sinA + Q(i) * cosA * c
Picture1.Line -(Xm, Ym), vbBlue
Next i
Picture1.Line -(x2, y2), vbBlue
Call 标内力(NGN(Ne, 1), Q1, X1, Y1)
Call 标内力(NGN(Ne, 2), Q2, x2, y2)
Next Ne
End Sub
Sub 轴力图()
Dim N1 As Single, N2 As Single, Nmax As Single
Dim Ne, nn, c As Single, L As Single, X, i
Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
Dim n(200) As Single
ReDim V(Nodg) As Integer
For Ne = 1 To Ncell
N1 = 杆端力(Ne).N1
N2 = 杆端力(Ne).N2
If Abs(N1) > Nmax Then Nmax = Abs(N1)
If Abs(N2) > Nmax Then Nmax = Abs(N2)
Next Ne
nn = 150
If Nmax > 0 Then
c = Lmax * 0.25 / Nmax
Else
c = 1
End If
For Ne = 1 To Ncell
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
N1 = 杆端力(Ne).N1
N2 = 杆端力(Ne).N2
For i = 1 To nn + 1
X = (i - 1) * L / nn
n(i) = N1
Next i
Picture1.PSet (X1, Y1)
For i = 1 To nn + 1
X = (i - 1) * L / nn
Xm = X1 + X * cosA - n(i) * sinA * c
Ym = Y1 + X * sinA + n(i) * cosA * c
Picture1.Line -(Xm, Ym), vbBlue
Next i
Picture1.Line -(x2, y2), vbBlue
Call 标内力(NGN(Ne, 1), N1, X1, Y1)
Call 标内力(NGN(Ne, 2), N2, x2, y2)
Next Ne
End Sub
Sub 标内力(ByVal Nd As Integer, F As Single, ByVal X As Single, ByVal Y As Single)
Nd = Abs(Nd)
If Check3.Value = 1 Then
V(Nd) = V(Nd) + 1
If X < Xmax / 2 Then X = X - Lmax / 10 Else X = X + Lmax / 10
Y = Y + (V(Nd) - 1) * Lmax / 15
With Picture1
.ForeColor = vbBlack
.CurrentX = X
.CurrentY = Y
End With
Picture1.Print Format(Abs(F), "###.##")
End If
End Sub
Sub 荷载下简支梁内力(Ne As Integer, nn As Integer, L As Single, M() As Single, Q() As Single)
Dim aaa As Single, dx As Single, X As Single, i
Select Case Ld(Ne).Pq
Case "Q", "q"
aaa = Ld(Ne).Po
For i = 1 To nn + 1
X = (i - 1) * L / nn
If X <= aaa Then
M(i) = M(i) + Ld(Ne).s * X * X / 2
Q(i) = Q(i) - Ld(Ne).s * X
Else
M(i) = M(i) + Ld(Ne).s * aaa * (X - aaa / 2)
Q(i) = Q(i) - Ld(Ne).s * aaa
End If
Next i
Case "t", "T"
aaa = Ld(Ne).Po
For i = 1 To nn + 1
X = (i - 1) * L / nn
If X <= aaa Then
M(i) = M(i) + Ld(Ne).s * X ^ 3 / aaa / 6
Q(i) = Q(i) - Ld(Ne).s * X * X / 2 / aaa
ElseIf X >= L - aaa Then
M(i) = M(i) + Ld(Ne).s * aaa * (X / 2 - aaa / 3) + Ld(Ne).s * (X - aaa) ^ 2 / 2
dx = X + aaa - L
M(i) = M(i) - Ld(Ne).s * dx ^ 3 / aaa / 6
Q(i) = Q(i) - Ld(Ne).s * (X - aaa / 2 - dx ^ 2 / aaa / 2)
Else
M(i) = M(i) + Ld(Ne).s * aaa * (X / 2 - aaa / 3) + Ld(Ne).s * (X - aaa) ^ 2 / 2
Q(i) = Q(i) - Ld(Ne).s * (X - aaa / 2)
End If
Next i
Case "P", "p"
aaa = Ld(Ne).Po
For i = 1 To nn + 1
X = (i - 1) * L / nn
If X >= aaa Then
M(i) = M(i) + (X - aaa) * Ld(Ne).s
Q(i) = Q(i) - Ld(Ne).s
End If
Next i
Case Else
End Select
End Sub
Sub 初始图()
Picture1.Cls
Call 杆件图(Form1.Picture1)
If 图 = "荷载" Then
Form1.Opt(0).Enabled = True
ElseIf 图 = "内力" Then
Form1.Opt(0).Enabled = False
Form1.Opt(1).Enabled = True
Form1.Opt(2).Enabled = True
Form1.Opt(3).Enabled = True
Form1.Command.Caption = "退出"
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -