diff --git a/Wardrobe/GUI/Individual.vb b/Wardrobe/GUI/Individual.vb index 0f5c4d3..96369a5 100644 --- a/Wardrobe/GUI/Individual.vb +++ b/Wardrobe/GUI/Individual.vb @@ -1,8 +1,7 @@  Public Class Individual - - 'Public Shared filepath As String = "C:\Users\Anton\Documents\Exjobb" - Public Shared filepath As String = "C:\Users\xperd\Documents" + Public Shared filepath As String = "C:\Users\Anton\Documents\Exjobb" + 'Public Shared filepath As String = "C:\Users\xperd\Documents" Sub Load_GUI() ' Initialize GUI diff --git a/Wardrobe/Gratings Data/Data.vb b/Wardrobe/Gratings Data/Data.vb index 4e83321..f33f950 100644 --- a/Wardrobe/Gratings Data/Data.vb +++ b/Wardrobe/Gratings Data/Data.vb @@ -52,7 +52,7 @@ recessData.Columns.Add("WIDTH", GetType(Integer)) recessData.Columns.Add("LENGTH", GetType(Integer)) recessData.Columns.Add("OFFSET", GetType(Integer)) - recessData.Columns.Add("GRATINGS", GetType(Integer())) + recessData.Columns.Add("GRATINGS", GetType(List(Of Integer))) End Sub Public Shared Sub Init_GrossAreaPoints() diff --git a/Wardrobe/Gratings Data/Grating_Fill.vb b/Wardrobe/Gratings Data/Grating_Fill.vb index aa6ad23..20732e1 100644 --- a/Wardrobe/Gratings Data/Grating_Fill.vb +++ b/Wardrobe/Gratings Data/Grating_Fill.vb @@ -123,23 +123,55 @@ Public Class Grating_Fill 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 + 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 p1X, p1Y As Integer + Dim pX, pY As Integer For Each gDR As DataRow In Data.gratingPoints.Rows If gDR("NAME") = "CA" & cornerAngleCounter & "_" & i Then - p1X = gDR("X") - p1Y = gDR("Y") + 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 + If 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 - 'Kolla var de ligger jämfört med gratings - 'Lägg till grating index i "GRATINGS" - - End If Next End Sub diff --git a/Wardrobe/Recess Functions/Corner_Rectangle.vb b/Wardrobe/Recess Functions/Corner_Rectangle.vb index aec7911..c482daf 100644 --- a/Wardrobe/Recess Functions/Corner_Rectangle.vb +++ b/Wardrobe/Recess Functions/Corner_Rectangle.vb @@ -185,7 +185,7 @@ pointRow1("NAME") = "CR" & cornerRectangleCounter & "_" & 1 pointRow1("QUADRANT") = pointQuadrant - pointRow1("RECESS OK") = True + pointRow1("RECESS OK") = False ' Can be True (implemented in GUI but not for SW) pointRow2("NAME") = "CR" & cornerRectangleCounter & "_" & 2 pointRow2("QUADRANT") = pointQuadrant @@ -193,7 +193,7 @@ pointRow3("NAME") = "CR" & cornerRectangleCounter & "_" & 3 pointRow3("QUADRANT") = pointQuadrant - pointRow3("RECESS OK") = True + pointRow3("RECESS OK") = False ' Can be True (implemented in GUI but not for SW) If pointQuadrant = 1 Then ' Add the new points diff --git a/Wardrobe/SolidWorks/Model_3D.vb b/Wardrobe/SolidWorks/Model_3D.vb index 396b941..c908eb3 100644 --- a/Wardrobe/SolidWorks/Model_3D.vb +++ b/Wardrobe/SolidWorks/Model_3D.vb @@ -30,7 +30,6 @@ Public Class Model_3D ExternalClass.modify_parameter_value("DP_OFFSET_X", inst_, 0) ExternalClass.modify_parameter_value("DP_OFFSET_Y", inst_, 0) - 'Instantiate recess rectangle parentID = inst_ For Each recessDR As DataRow In Data.recessData.Rows Inst_Recesses(parentID, gratingParameters, recessDR) diff --git a/Wardrobe/SolidWorks/Model_3D_Fill.vb b/Wardrobe/SolidWorks/Model_3D_Fill.vb index d1ad595..c874de8 100644 --- a/Wardrobe/SolidWorks/Model_3D_Fill.vb +++ b/Wardrobe/SolidWorks/Model_3D_Fill.vb @@ -9,8 +9,6 @@ Public Class Model_3D_Fill XCCBaseClass.newDesign() ExternalClass.PopulateTamplateXMLGroup() - - Dim inst_ As Integer Dim parentID As Integer = 0 Dim gratingParameters As DataRow = exportTable.Rows(0) @@ -48,6 +46,11 @@ Public Class Model_3D_Fill ExternalClass.modify_parameter_value("DP_OFFSET_Y", inst_, (Grating_Fill.gratingDimensions.Rows(i)("WIDTH") / 2) + offsetY) Next + parentID = Grating_Fill.numOfHorizontal * (Grating_Fill.numOfVertical - 1) + 1 + For Each recessDR As DataRow In Data.recessData.Rows + Inst_Recesses(parentID, gratingParameters, recessDR) + Next + importClass.copyGroupsByDataSet(ExternalClass.groupds_new) Dim grNr = groupClass.NewGroupID Dim designTable = designModel.selectDesign("*") @@ -55,4 +58,128 @@ Public Class Model_3D_Fill groupClass.InstantiateGroup(designName, grNr, "START") End Sub + Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) + Dim inst_ As Integer + + If recessDR("RECESS TYPE") = "SQUARE" Then + Dim squareL As Integer = recessDR("LENGTH") + gratingParameters("LOADBAR_THICKNESS") + Dim squareW As Integer = recessDR("WIDTH") + gratingParameters("LOADBAR_THICKNESS") + + inst_ = ExternalClass.instantiate_parts(parentID, "recess_rectangle", "") + + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, squareL + gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, squareW) + ExternalClass.modify_parameter_value("DP_EDGEBAR_HEIGHT", inst_, gratingParameters("LOADBAR_HEIGHT")) + ExternalClass.modify_parameter_value("DP_EDGEBAR_THICKNESS", inst_, gratingParameters("LOADBAR_THICKNESS")) + + If recessDR("CORNER") = 1 Then + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW - squareW) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) + + 'Position + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, 0) + + ElseIf recessDR("CORNER") = 2 Then + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW - squareW) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL - squareL - gratingParameters("LOADBAR_THICKNESS")) + + 'Position + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, 0) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, gratingParameters("LOADBAR_THICKNESS")) + ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, 0) + + ElseIf recessDR("CORNER") = 3 Then + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL - squareL - gratingParameters("LOADBAR_THICKNESS")) + + 'Position + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, 0) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, 0) + ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, squareW - gratingParameters("LOADBAR_THICKNESS")) + Else + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) + + 'Position + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_POS", inst_, squareL) + ExternalClass.modify_parameter_value("DP_V_EDGEBAR_BOTTOM", inst_, 0) + ExternalClass.modify_parameter_value("DP_H_EDGEBAR_POS", inst_, squareW - gratingParameters("LOADBAR_THICKNESS")) + End If + + ElseIf recessDR("RECESS TYPE") = "ANGLE" Then + inst_ = ExternalClass.instantiate_parts(parentID, "recess_angle", "") + + ExternalClass.modify_parameter_value("DP_EDGEBAR_HEIGHT", inst_, gratingParameters("LOADBAR_HEIGHT")) + ExternalClass.modify_parameter_value("DP_EDGEBAR_THICKNESS", inst_, gratingParameters("LOADBAR_THICKNESS")) + + If recessDR("CORNER") = 1 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 90) + + ElseIf recessDR("CORNER") = 2 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 180) + + ElseIf recessDR("CORNER") = 3 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 270) + + Else + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 0) + + End If + + ElseIf recessDR("RECESS TYPE") = "SIDE SQUARE" Then + inst_ = ExternalClass.instantiate_parts(parentID, "recess_side_square", "") + + ExternalClass.modify_parameter_value("DP_EDGEBAR_HEIGHT", inst_, gratingParameters("LOADBAR_HEIGHT")) + ExternalClass.modify_parameter_value("DP_EDGEBAR_THICKNESS", inst_, gratingParameters("LOADBAR_THICKNESS")) + + If recessDR("SIDE") = 1 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, recessDR("OFFSET")) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 90) + + ElseIf recessDR("SIDE") = 2 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Data.gratingW - recessDR("OFFSET")) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 180) + + ElseIf recessDR("SIDE") = 3 Then + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Data.gratingL - recessDR("OFFSET")) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 270) + + Else + ExternalClass.modify_parameter_value("DP_LENGTH", inst_, recessDR("LENGTH")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, recessDR("WIDTH")) + ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, recessDR("OFFSET")) + ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0) + ExternalClass.modify_parameter_value("DP_ROTATION", inst_, 0) + + End If + End If + End Sub + End Class