X2021/Wardrobe/Gratings Data/Grating_Fill.vb

147 lines
5.7 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
Public Shared minLength As Integer
Public Shared gratingDimensions As New DataTable
Public Shared Sub Calculate_Grid()
Get_SingleGratingMaxDimensions()
gratingDimensions.Clear()
gratingDimensions.Columns.Clear()
gratingDimensions.Columns.Add("INDEX", GetType(Integer))
gratingDimensions.Columns.Add("ROW", GetType(Integer))
gratingDimensions.Columns.Add("COLUMN", GetType(Integer))
gratingDimensions.Columns.Add("WIDTH", GetType(Integer))
gratingDimensions.Columns.Add("LENGTH", GetType(Integer))
If (Data.gratingL / maxSingleLength) Mod 1 = 0 Then
numOfHorizontal = Data.gratingL / maxSingleLength
Else
numOfHorizontal = Math.Floor(Data.gratingL / maxSingleLength) + 1
End If
numOfVertical = Math.Floor(Data.gratingW / maxSingleWidth) + 1
minLength = (Math.Floor((Data.gratingL / 100) / numOfHorizontal) + 1) * 100 'Hantera längder med mer än 100mm mellan typ 1600-1800
If minLength > 1600 AndAlso (minLength / 100) Mod 2 = 1 Then
minLength += 100
End If
If minLength > maxSingleLength Then
minLength = maxSingleLength
End If
Dim endLength As Integer = Data.gratingL - (numOfHorizontal - 1) * minLength
'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
tempDR("ROW") = row - 1
tempDR("COLUMN") = i - numOfHorizontal * (row - 1)
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") = minLength
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
Public Shared Sub Calculate_Recesses()
Dim cornerAngleCounter As Integer = 0
For Each DR As DataRow In Data.recessData.Rows
If DR("RECESS TYPE") = "ANGLE" Then
cornerAngleCounter += 1
For i = 1 To 2
Dim p1X, p1Y As Integer
For Each gDR As DataRow In Data.gratingPoints.Rows
If gDR("NAME") = "CA" & cornerAngleCounter & "_" & i Then
p1X = gDR("X")
p1Y = gDR("Y")
End If
Next
Next
'Kolla var de ligger jämfört med gratings
'Lägg till grating index i "GRATINGS"
End If
Next
End Sub
End Class