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