| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1334 人关注过本帖
标题:vb过程太大,高手们能否简化此程序,希望高手帮忙,万分感激
只看楼主 加入收藏
向光前进
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2011-11-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
vb过程太大,高手们能否简化此程序,希望高手帮忙,万分感激
Private Sub 坐标系1(轴长, 最大值, 弯矩最大处)
    Pic1.Scale (-轴长 / 5, 最大值 * 2)-(轴长 * 1.4, -(最大值 * 2))
    Pic1.Line (0, -(最大值 * 1.5))-(0, 最大值 * 1.5)
    Pic1.Line -(-轴长 / 100, 最大值 * 1.3), vbBlue
    Pic1.Line (轴长 / 100, 最大值 * 1.3)-(0, 最大值 * 1.5), vbBlue
   
    Pic1.Line (0, 0)-(轴长 * 1.25, 0)
    Pic1.Line -(轴长 * 1.22, 最大值 / 16), vbBlue
    Pic1.Line (轴长 * 1.22, -最大值 / 16)-(轴长 * 1.25, 0), vbBlue
   
    Pic1.CurrentX = -轴长 / 100
    Pic1.CurrentY = 0
    Pic1.Print 0
   
    Pic1.CurrentX = 轴长
    Pic1.CurrentY = 0
    Pic1.Print 轴长
   
    Pic1.CurrentX = 弯矩最大处
    Pic1.CurrentY = 0
    Pic1.Print 弯矩最大处
   
    Pic1.CurrentX = 轴长 * 1.25
    Pic1.CurrentY = 0
    Pic1.Print "X"
   
    Pic1.CurrentX = 轴长 / 50
    Pic1.CurrentY = 最大值 * 1.5
    Pic1.Print "Y"
   
   
    Pic1.CurrentX = 弯矩最大处 * 0.99
    Pic1.CurrentY = 最大值 * 1.32
    Pic1.Print Round(最大值)
   
    'Pic1.Circle (弯矩最大处, 最大值), 0.1, vbRed
End Sub
Private Sub 坐标系2(轴长, 最小值, 弯矩最小处)
    Pic1.Scale (-轴长 / 5, Abs(最小值) * 2)-(轴长 * 1.4, -(Abs(最小值) * 2))
    Pic1.Line (0, -(Abs(最小值) * 1.5))-(0, Abs(最小值) * 1.5)
    Pic1.Line -(-轴长 / 100, Abs(最小值) * 1.3), vbBlue
    Pic1.Line (轴长 / 100, Abs(最小值) * 1.3)-(0, Abs(最小值) * 1.5), vbBlue
   
    Pic1.Line (0, 0)-(轴长 * 1.25, 0)
    Pic1.Line -(轴长 * 1.22, Abs(最小值) / 16), vbBlue
    Pic1.Line (轴长 * 1.22, Abs(最小值) / 16)-(轴长 * 1.25, 0), vbBlue
   
    Pic1.CurrentX = -轴长 / 100
    Pic1.CurrentY = 0
    Pic1.Print 0
   
    Pic1.CurrentX = 轴长
    Pic1.CurrentY = 0
    Pic1.Print 轴长
   
    Pic1.CurrentX = 弯矩最小处
    Pic1.CurrentY = 0
    Pic1.Print 弯矩最小处
   
    Pic1.CurrentX = 轴长 * 1.25
    Pic1.CurrentY = 0
    Pic1.Print "X"
   
    Pic1.CurrentX = 轴长 / 50
    Pic1.CurrentY = 最小值 * 1.5
    Pic1.Print "Y"
   
   
    Pic1.CurrentX = 弯矩最小处 * 0.99
    Pic1.CurrentY = 最小值 * 1.32
    Pic1.Print Round(最小值)
   
   
    'Pic1.Circle (弯矩最大处, 最大值), 0.1, vbRed
End Sub
Private Sub 坐标系3(轴长, 最大值, 弯矩最大处)
    Pic2.Scale (-轴长 / 5, 最大值 * 2)-(轴长 * 1.4, -(最大值 * 2))
    Pic2.Line (0, -(最大值 * 1.5))-(0, 最大值 * 1.5)
    Pic2.Line -(-轴长 / 100, 最大值 * 1.3), vbBlue
    Pic2.Line (轴长 / 100, 最大值 * 1.3)-(0, 最大值 * 1.5), vbBlue
   
    Pic2.Line (0, 0)-(轴长 * 1.25, 0)
    Pic2.Line -(轴长 * 1.22, 最大值 / 16), vbBlue
    Pic2.Line (轴长 * 1.22, -最大值 / 16)-(轴长 * 1.25, 0), vbBlue
   
    Pic2.CurrentX = -轴长 / 100
    Pic2.CurrentY = 0
    Pic2.Print 0
   
    Pic2.CurrentX = 轴长
    Pic2.CurrentY = 0
    Pic2.Print 轴长
   
    Pic2.CurrentX = 弯矩最大处
    Pic2.CurrentY = 0
    Pic2.Print 弯矩最大处
   
    Pic2.CurrentX = 轴长 * 1.25
    Pic2.CurrentY = 0
    Pic2.Print "X"
   
    Pic2.CurrentX = 轴长 / 50
    Pic2.CurrentY = 最大值 * 1.5
    Pic2.Print "Y"
   
   
    Pic2.CurrentX = 弯矩最大处 * 0.99
    Pic2.CurrentY = 最大值 * 1.32
    Pic2.Print Round(最大值)
End Sub
Private Sub 坐标系4(轴长, 最小值, 弯矩最小处)
    Pic2.Scale (-轴长 / 5, Abs(最小值) * 2)-(轴长 * 1.4, -(Abs(最小值) * 2))
    Pic2.Line (0, -(Abs(最小值) * 1.5))-(0, Abs(最小值) * 1.5)
    Pic2.Line -(-轴长 / 100, Abs(最小值) * 1.3), vbBlue
    Pic2.Line (轴长 / 100, Abs(最小值) * 1.3)-(0, Abs(最小值) * 1.5), vbBlue
   
    Pic2.Line (0, 0)-(轴长 * 1.25, 0)
    Pic2.Line -(轴长 * 1.22, Abs(最小值) / 16), vbBlue
    Pic2.Line (轴长 * 1.22, Abs(最小值) / 16)-(轴长 * 1.25, 0), vbBlue
   
    Pic2.CurrentX = -轴长 / 100
    Pic2.CurrentY = 0
    Pic2.Print 0
   
    Pic2.CurrentX = 轴长
    Pic2.CurrentY = 0
    Pic2.Print 轴长
   
    Pic2.CurrentX = 弯矩最小处
    Pic2.CurrentY = 0
    Pic2.Print 弯矩最小处
   
    Pic2.CurrentX = 轴长 * 1.25
    Pic2.CurrentY = 0
    Pic2.Print "X"
   
    Pic2.CurrentX = 轴长 / 50
    Pic2.CurrentY = 最小值 * 1.5
    Pic2.Print "Y"
   
   
    Pic2.CurrentX = 弯矩最小处 * 0.99
    Pic2.CurrentY = 最小值 * 1.32
    Pic2.Print Round(最小值)
End Sub

Private Function Fp11(l, xp1, p1, x)
    Fp11 = (1 - xp1 / l) * p1
End Function
Private Function Fp12(l, xp1, p1, x)
    Fp12 = -xp1 * p1 / l
End Function
Private Function Mp11(l, xp1, p1, x)
    Mp11 = (1 - xp1 / l) * p1 * x
End Function
Private Function Mp12(l, xp1, p1, x)
    Mp12 = (1 - xp1 / l) * p1 * x - p1 * (x - xp1)
End Function



Private Sub Command2_Click()
    Pic1.Cls
    Dim y()
    l = Val(Text3.Text)
    ReDim y(l * 1000)
    Max = 0
    Maxx = 0
    Min = 0
    Minx1 = 0
 If Combo1.Text = "简支梁" Then
    If Val(Text1.Text) = 1 Then
        If Val(Text2.Text) = 0 And Val(Text11.Text) = 0 Then
            p1 = Arr(1)
            xp1 = Brr(1)
            For i = 0 To l * 1000
                x = i / 1000
                If x < xp1 Then
                    y(i) = Mp11(l, xp1, p1, x)
                Else
                    y(i) = Mp12(l, xp1, p1, x)
                End If
                If y(i) > Max Then
                    Max = y(i)
                    Maxx = x
                End If
            Next i
  'frm扭转计算.Print Max
            坐标系1 l, Max, Maxx  '调用的上面的建坐标系的函数,很好
            For i = 0 To l * 1000
                x = i / 1000
                Pic1.PSet (x, y(i))
                If i Mod (50 * l) = 0 Then Pic1.Line (x, y(i))-(x, 0), vbBlack
            Next i
                Max = 0
                Maxx = 0
                Min = 0
                Minx1 = 0
                For i = 0 To l * 1000
                x = i / 1000
                Select Case x
                    Case Is <= xp1
                        y(i) = Fp11(l, xp1, p1, x)
                    Case Else
                        y(i) = Fp12(l, xp1, p1, x)
                End Select
                 If y(i) > Max Then
                    Max = y(i)
                    Maxx = x
                ElseIf y(i) < Min Then
                    Min = y(i)
                    Minx1 = x
                End If
            Next i
                 If Abs(Max) > Abs(Min) Then
                    坐标系3 l, Max, Maxx
                 Else
                    坐标系4 l, Min, Minx1
                 End If
               For i = 0 To l * 1000
                x = i / 1000
                 If i = 0 Then
                    Pic2.PSet (x, y(i))
                Else
                    Pic2.Line (x, y(i))-(x - 1 / 1000, y(i - 1)), vbBlack
                    If i = l * 1000 Then Pic2.Line (x, y(i))-(x, 0), vbBlack
                End If
                If i Mod (50 * l) = 0 Then
                    Pic2.Line (x, y(i))-(x, 0), vbBlue
                End If
            Next i
        End If
     End If
     End If
End Sub
搜索更多相关主题的帖子: 最大值 坐标系 
2011-11-25 12:00
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
sub viewX(obj as obj, CX as long,CY as long , T)
    obj.CurrentX = CX
    obj.CurrentY = CY
    obj.Print T
end sub

'--------------------------
'    Pic1.CurrentX = -轴长 / 100
'    Pic1.CurrentY = 0
'    Pic1.Print 0
call viewx(pic1,-轴长/100,0,0)

   
'    Pic1.CurrentX = 轴长
'    Pic1.CurrentY = 0
'    Pic1.Print 轴长
call viewx(pic1,轴长,0,轴长)
   
----------------------------------------
'    Pic2.CurrentX = -轴长 / 100
'    Pic2.CurrentY = 0
'    Pic2.Print 0
call viewx(pic2,-轴长/100,0,0)
   
'    Pic2.CurrentX = 轴长
'    Pic2.CurrentY = 0
'    Pic2.Print 轴长
call viewx(pic2,轴长,0,轴长)
----------------------------------------

授人于鱼,不如授人于渔
早已停用QQ了
2011-11-25 14:30
向光前进
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2011-11-10
收藏
得分:0 
高手,这和程序中过程太大有关系吗?我是每当执行Private Sub Command2_Click()就会出现过程太大的错误
2011-11-25 20:14
向光前进
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2011-11-10
收藏
得分:0 
回复 2楼 风吹过b
高手您好,谢谢您的指点,但是我简化后,他老是出现用户未定义,您能否具体说明一下呢,这个问题搞了很长时间了,学习vb时间也不长,不知道如何简化,求求高手能够再指点一下,谢谢您了
2011-11-27 16:44
快速回复:vb过程太大,高手们能否简化此程序,希望高手帮忙,万分感激
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050556 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved