X2021/Wardrobe/Gratings Data/Grating_Fill.vb

101 lines
4.1 KiB
VB.net

Public Class Grating_Fill
Public Shared maxSingleWidth, maxSingleLength As Integer
Public Shared numOfHorizontal, numOfVertical As Integer
Public Shared widthRevNeeded, lengthRevNeeded As Boolean
Public Shared revLength, revWidth As Integer
Private Shared gratingDimensions As New DataTable
Public Shared Sub Calculate_Grid()
Get_SingleGratingMaxDimensions()
gratingDimensions.Clear()
gratingDimensions.Columns.Clear()
gratingDimensions.Columns.Add("INDEX")
gratingDimensions.Columns.Add("WIDTH")
gratingDimensions.Columns.Add("LENGTH")
numOfHorizontal = Math.Floor(Data.gratingL / maxSingleLength) + 1
numOfVertical = Math.Floor(Data.gratingW / maxSingleWidth) + 1
Dim endLength As Integer
If Data.gratingL - (numOfHorizontal - 1) * maxSingleLength < 200 Then
endLength = 200
revLength = maxSingleLength - (endLength - (Data.gratingL - (numOfHorizontal - 1) * maxSingleLength))
lengthRevNeeded = True
Else
endLength = Data.gratingL - (numOfHorizontal - 1) * maxSingleLength
lengthRevNeeded = False
End If
Dim endWidth As Integer
If Data.gratingW - (numOfVertical - 1) * maxSingleWidth < 200 Then
Dim neededLoadbars As Integer = Math.Floor((200 - (Data.gratingW - (numOfVertical - 1) * maxSingleWidth)) / User_Input.loadBarSpacing) + 1
endWidth = Data.gratingW - (numOfVertical - 1) * maxSingleWidth + neededLoadbars * User_Input.loadBarSpacing
revWidth = maxSingleWidth - (endWidth - (Data.gratingW - (numOfVertical - 1) * maxSingleWidth))
widthRevNeeded = True
Else
endWidth = Data.gratingW - (numOfVertical - 1) * maxSingleWidth
widthRevNeeded = False
End If
Dim row As Integer = 1
For i = 0 To numOfHorizontal * numOfVertical - 1
Dim tempDR As DataRow = gratingDimensions.NewRow
tempDR("INDEX") = i
If CDbl((i + 1) / numOfHorizontal) = row Then
tempDR("LENGTH") = endLength
row += 1
ElseIf CDbl((i + 2) / numOfHorizontal) = row AndAlso lengthRevNeeded Then
tempDR("LENGTH") = revLength
Else
tempDR("LENGTH") = maxSingleLength
End If
If i > numOfHorizontal * numOfVertical - 1 - numOfHorizontal Then
tempDR("WIDTH") = endWidth
ElseIf i > numOfHorizontal * numOfVertical - 1 - 2 * numOfHorizontal AndAlso widthRevNeeded Then
tempDR("WIDTH") = revWidth
Else
tempDR("WIDTH") = maxSingleWidth
End If
gratingDimensions.Rows.Add(tempDR)
Next
Individual.Panel_Grating.Refresh()
End Sub
Private Shared Sub Get_SingleGratingMaxDimensions()
maxSingleWidth = Database.database.Tables("Whole Meshes").Rows(0)(User_Input.wholeMeshesColumn)
Dim loadDT As DataTable = Database.database.Tables("LOAD")
Dim nameInDT As String = loadDT.Rows(0)("NAME")
Dim LBHeightInDT As Integer = loadDT.Rows(0)("LB-HEIGHT")
Dim LBThicknessInDT As Integer = loadDT.Rows(0)("LB-THICKNESS")
For i = 0 To loadDT.Rows.Count - 1
If User_Input.gratingName.Substring(0, 1) = nameInDT AndAlso User_Input.gratingHeight = LBHeightInDT _
AndAlso User_Input.loadBarThickness = LBThicknessInDT Then
For j = loadDT.Columns.Count - 1 To 0 Step -1
If loadDT.Rows(i)(j) > CInt(Individual.Panel_Data.Controls("TextBox_Max_Load").Text) Then
maxSingleLength = CInt(loadDT.Columns(j).ColumnName)
Exit For
End If
Next
Exit For
End If
Try
nameInDT = loadDT.Rows(i + 1)("NAME")
LBHeightInDT = loadDT.Rows(i + 1)("LB-HEIGHT")
LBThicknessInDT = loadDT.Rows(i + 1)("LB-THICKNESS")
Catch ex As Exception
End Try
Next
End Sub
End Class