229 lines
9.3 KiB
VB.net
229 lines
9.3 KiB
VB.net
|
|
Public Class Grating_Fill2
|
|
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()
|
|
Calculate_Fill_Grid.Calculate_Grid() 'FIXA: TA BORT
|
|
|
|
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
|
|
|
|
If (Data.gratingW / maxSingleWidth) Mod 1 = 0 Then
|
|
numOfVertical = Data.gratingW / maxSingleWidth
|
|
Else
|
|
numOfVertical = Math.Floor(Data.gratingW / maxSingleWidth) + 1
|
|
End If
|
|
|
|
minLength = (Math.Floor((Data.gratingL / 100) / numOfHorizontal) + 1) * 100
|
|
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")
|
|
|
|
Dim loadName As String = User_Input.gratingName.Substring(0, 1)
|
|
If User_Input.gratingName.Substring(User_Input.gratingName.Length - 1, 1) = "T" Then
|
|
loadName += "-T"
|
|
If loadName = "F-T" Then
|
|
loadName = "H-T" ' Fixa: Tillfällig då det inte finns load data för F-T
|
|
End If
|
|
ElseIf loadName = "A" Then
|
|
loadName += User_Input.gratingMesh.Split(" ")(0)
|
|
End If
|
|
|
|
For i = 0 To loadDT.Rows.Count - 1
|
|
If loadName = 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
|
|
|
|
' Not used because of better method found
|
|
Public Shared Sub Calculate_Recesses()
|
|
Dim cornerAngleCounter As Integer = 0
|
|
For k = 0 To Data.recessData.Rows.Count - 1
|
|
If Data.recessData.Rows(k)("RECESS TYPE") = "ANGLE" Then
|
|
cornerAngleCounter += 1
|
|
For i = 1 To 2
|
|
Dim pX, pY As Integer
|
|
For Each gDR As DataRow In Data.gratingPoints.Rows
|
|
If gDR("NAME") = "CA" & cornerAngleCounter & "_" & i Then
|
|
pX = Data.gratingL / 2 + CInt(gDR("X") * 1000)
|
|
pY = Data.gratingW / 2 - CInt(gDR("Y") * 1000)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Dim colIndex As Integer
|
|
For j = 0 To numOfHorizontal - 1
|
|
If pX >= j * minLength AndAlso pX <= (j + 1) * minLength Then
|
|
colIndex = j
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Dim rowIndex As Integer
|
|
For j = 0 To numOfVertical - 1
|
|
If widthRevNeeded AndAlso j = numOfVertical - 2 AndAlso pY >= j * maxSingleWidth AndAlso pY <= j * maxSingleWidth + revWidth Then
|
|
rowIndex = j
|
|
Exit For
|
|
ElseIf widthRevNeeded AndAlso j = numOfVertical - 1 Then
|
|
rowIndex = j
|
|
Exit For
|
|
ElseIf widthRevNeeded = False AndAlso pY >= j * maxSingleWidth AndAlso pY <= (j + 1) * maxSingleWidth Then
|
|
rowIndex = j
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Dim gratingIndex As Integer = rowIndex * numOfHorizontal + colIndex
|
|
|
|
Dim tempList As New List(Of Integer)
|
|
Try
|
|
tempList = Data.recessData.Rows(k)("GRATINGS")
|
|
Catch ex As Exception
|
|
End Try
|
|
|
|
Dim indexNotAdded As Boolean = True
|
|
For j = 0 To tempList.Count - 1
|
|
If gratingIndex = tempList(j) Then
|
|
indexNotAdded = False
|
|
Exit For
|
|
End If
|
|
Next
|
|
If indexNotAdded Then
|
|
tempList.Add(gratingIndex)
|
|
End If
|
|
|
|
Data.recessData.Rows(k)("GRATINGS") = tempList
|
|
Next
|
|
|
|
Dim tempList2 As New List(Of Integer)
|
|
Try
|
|
tempList2 = Data.recessData.Rows(k)("GRATINGS")
|
|
Catch ex As Exception
|
|
End Try
|
|
|
|
Dim gratingIndex2 As Integer
|
|
|
|
If Data.recessData.Rows(k)("CORNER") = 1 Then
|
|
gratingIndex2 = 0
|
|
ElseIf Data.recessData.Rows(k)("CORNER") = 2 Then
|
|
gratingIndex2 = numOfHorizontal - 1
|
|
ElseIf Data.recessData.Rows(k)("CORNER") = 3 Then
|
|
gratingIndex2 = numOfHorizontal * numOfVertical - 1
|
|
Else
|
|
gratingIndex2 = numOfHorizontal * (numOfVertical - 1)
|
|
End If
|
|
|
|
Dim indexNotAdded2 As Boolean = True
|
|
For j = 0 To tempList2.Count - 1
|
|
If gratingIndex2 = tempList2(j) Then
|
|
indexNotAdded2 = False
|
|
Exit For
|
|
End If
|
|
Next
|
|
If indexNotAdded2 Then
|
|
tempList2.Add(gratingIndex2)
|
|
End If
|
|
|
|
Data.recessData.Rows(k)("GRATINGS") = tempList2
|
|
End If
|
|
Next
|
|
End Sub
|
|
End Class
|