none
Problema con codigo que hace un loop RRS feed

  • Pregunta

  • Hola, soy nuevo en visual studio, llevo un mes conociendo el programa y tengo el siguiente problema, al momento de inciar el código, este no me grafica el par x e y que yo calculé con las operaciones antes escritas, las que se encuentran dentro del loop, por lo que en la tabla datagridview en los puntos del eje x marca NaN y en los del eje Y marca un valor fijo, cualquier ayuda se agradece.
        Private Sub cmdLDR_Click(sender As Object, e As EventArgs) Handles cmdLDR.Click
            
            TabControl1.SelectTab(1)
            'Hognestad Fluencia
    
            Dim C As Single = 0
            Dim Es As Single = 0
            Dim Ec As Single = 0
            Dim T As Single = 0
            Dim F As Single = 100
            Dim alf As Single = 0
            Dim gam As Single = 0
            Dim Esc As Single = 0
            Dim Cc As Single = 0
            Dim Cs As Single = 0
            Dim My As Single = 0
            Dim Fiy As Single = 0
    
            Do While Es <= 0.0021
                T = 0.001 * Val(txtAs.Text) * Es * Val(txtEs.Text)
                Do While F > 10 And F < -10
                    Ec = (Es * C) / ((Val(txtlargo.Text) - Val(txtR.Text)) - C)
                    If Ec <= 0.002 And Ec >= 0 Then
                        alf = (Ec * (3 * 0.002 ^ 2 - Ec)) / (3 * 0.002 ^ 2)
                    ElseIf Ec >= 0.002 And Ec <= Val(txtem.Text) Then
                        alf = (40 * 0.002 * Val(txtem.Text) - 31 * 0.002 ^ 2 - 120 * Ec * Val(txtem.Text) * +102 * Ec * 0.002 + 9 * Ec ^ 2) / (120 * Ec * (0.002 - Val(txtem.Text)))
                    Else
                        Beep()
                        MsgBox("Ec negativo o superior a Em")
                    End If
                    Esc = (Ec * (C - Val(txtlargo.Text) - Val(txtR.Text))) / (C)
                    Cc = alf * Val(txtEs.Text) * Esc * 0.001
                    If Esc < 0.0021 Then
                        Cs = Val(txtAss.Text) * Val(txtEs.Text) * Esc * 0.001
                    Else
                        Cs = Val(txtfy.Text) * Val(txtAss.Text) * 0.001
                    End If
                    F = Cc + Cs - T - Val(txtp.Text)
                    C = C + 1
                Loop
                If Ec <= 0.002 And Ec >= 0 Then
                    gam = (8 * 0.002 - 3 * Ec) / (4 * (3 * 0.002 - Ec))
                Else
                    gam = (51 * Ec * 0.002 - 60 * Ec ^ 2 * Val(txtem.Text) + 6 * Ec ^ 3 + 10 * 0.002 ^ 2 * Val(txtem.Text) - 3 * Ec ^ 3) / (Ec * (40 * 0.002 * Val(txtem.Text) - 31 * Ec ^ 2 - 120 * Ec * Val(txtem.Text) + 102 * Ec * 0.002 + 9 * Ec ^ 2))
                End If
                My = Cc * (Val(txtlargo.Text) - Val(txtR.Text)) * gam * 0.001 + Cs * (Val(txtlargo.Text) - 2 * Val(txtR.Text)) * 0.001 - Val(txtp.Text) * (Val(txtlargo.Text) / 2 - Val(txtR.Text)) * 0.001
                Fiy = 1000 * Ec / C
                Chart1.Series(0).Points.AddXY(Fiy, My)
                Es = Es + 0.000042
            Loop
    
    
            Dim desde As Double = 0
            Dim hasta As Double = 0.005
            Dim intervalo As Double = 10
    
            Chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.FastLine
            Chart1.ChartAreas(0).AxisX.Minimum = desde
            Chart1.ChartAreas(0).AxisX.Maximum = hasta
            Chart1.ChartAreas(0).AxisX.Interval = intervalo
        End Sub
     Private Sub cmdPLDR_Click(sender As Object, e As EventArgs) Handles cmdPLDR.Click
            Form11.Show()
            Form11.DataGridView1.DataSource = Chart1.Series(0).Points.Select(Function(dp) New With {.Curvatura = dp.XValue, .Momento = dp.YValues(0)}).ToArray()
        End Sub

    miércoles, 12 de septiembre de 2018 14:49

Respuestas

Todas las respuestas