147 lines
5.7 KiB
VB.net
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
|