diff --git a/HLCt/Parts/~$START.SLDPRT b/HLCt/Parts/~$START.SLDPRT index b07f2ee..214926b 100644 Binary files a/HLCt/Parts/~$START.SLDPRT and b/HLCt/Parts/~$START.SLDPRT differ diff --git a/HLCt/pressure_welded.SLDPRT b/HLCt/pressure_welded.SLDPRT index ba8f2bd..b7fe0cb 100644 Binary files a/HLCt/pressure_welded.SLDPRT and b/HLCt/pressure_welded.SLDPRT differ diff --git a/Wardrobe/GUI/Individual.vb b/Wardrobe/GUI/Individual.vb index eec94bd..ae62cfc 100644 --- a/Wardrobe/GUI/Individual.vb +++ b/Wardrobe/GUI/Individual.vb @@ -1,7 +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 @@ -245,6 +245,9 @@ Public Class Individual ' --- When export to SW button is pressed --- Private Sub Button_Export_SW_Click(sender As Object, e As EventArgs) Handles Button_Export_SW.Click If AppForm.fillMode Then + Grating_Fill.Calculate_Grid() + Grating_Fill.Calculate_Recesses() + Model_3D_Fill.BuildGrid() Else Model_3D.BuildGrating() diff --git a/Wardrobe/Gratings Data/Grating_Fill.vb b/Wardrobe/Gratings Data/Grating_Fill.vb index fde2027..e7f01da 100644 --- a/Wardrobe/Gratings Data/Grating_Fill.vb +++ b/Wardrobe/Gratings Data/Grating_Fill.vb @@ -144,12 +144,19 @@ Public Class Grating_Fill Next Dim rowIndex As Integer - For j = 0 To numOfVertical - If pY >= j * maxSingleWidth AndAlso pY <= (j + 1) * maxSingleWidth Then + 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) diff --git a/Wardrobe/SolidWorks/Model_3D_Fill.vb b/Wardrobe/SolidWorks/Model_3D_Fill.vb index 5f51713..6a25c44 100644 --- a/Wardrobe/SolidWorks/Model_3D_Fill.vb +++ b/Wardrobe/SolidWorks/Model_3D_Fill.vb @@ -204,6 +204,7 @@ Public Class Model_3D_Fill Dim components = Assembly.GetComponents(True) + 'Combine For i = 0 To gratingParts.Count - 1 Assembly.ClearSelection2(True) @@ -222,23 +223,190 @@ Public Class Model_3D_Fill Assembly.ClearSelection2(True) For k = 0 To gratingBodies.Length - 1 - 'sldata.Mark = 2 - Dim bodyName As String = gratingBodies(k).Name & "@" & gratingPartName & "-1@" & designName - boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 2, Nothing, 0) - + If gratingBodies(k).Name <> "HorizontalSplitBody" Then + Dim bodyName As String = gratingBodies(k).Name & "@" & gratingPartName & "-1@" & designName + boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 2, Nothing, 0) + End If Next Dim combinedFeature As SldWorks.Feature Dim assemblyFeaMgr As SldWorks.IFeatureManager assemblyFeaMgr = Assembly.FeatureManager combinedFeature = assemblyFeaMgr.InsertCombineFeature(15903, Nothing, Nothing) - 'combinedFeature = Assembly.FeatureManager.InsertCombineFeature(15903, Nothing, Nothing) - 'combinedFeature = assemblyFeaMgr.InsertCombineFeature(15903, Nothing, gratingBodies) + Assembly.EditAssembly Next - 'Indent + Dim recessParentName As String = partDT.Rows(Grating_Fill.numOfHorizontal * (Grating_Fill.numOfVertical - 1))("partName") + Dim recessParts = partDT.Select("parentName = '" & recessParentName & "'") + For i = 0 To recessParts.Count - 1 + Dim tempList As List(Of Integer) = Data.recessData.Rows(i)("GRATINGS") + For j = 0 To tempList.Count - 1 + Assembly.ClearSelection2(True) + + Dim gratingPartName As String = partDT.Rows(Data.recessData.Rows(i)("GRATINGS")(j))("partName") + boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) + Dim gratingPart = SelMgr.GetSelectedObject6(1, -1) + + Assembly.EditPart + + Dim indexGrating As Integer + For k = 0 To components.Length - 1 + If components(k).Name2 = gratingPartName & "-1" Then + indexGrating = k + Exit For + End If + Next + + Dim gratingBodies = components(indexGrating).GetBodies2(0) + Dim gratingBodyIndex As Integer + For k = 0 To gratingBodies.Length - 1 + If gratingBodies(k).Name = "Combine1" Then + gratingBodyIndex = k + Exit For + End If + Next + + + Dim recessPartName As String = recessParts(i)("partName") + boolstatus = AssemblyExtension.SelectByID2(recessPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) + Dim recessPart = SelMgr.GetSelectedObject6(1, -1) + + Dim indexRecess As Integer + For k = 0 To components.Length - 1 + If components(k).Name2 = recessPartName & "-1" Then + indexRecess = k + Exit For + End If + Next + + Dim recessBodies = components(indexRecess).GetBodies2(0) + + sldata.Mark = 1 + + Dim bodyName As String = gratingBodies(gratingBodyIndex).Name & "@" & gratingPartName & "-1@" & designName + boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0) + + sldata.Mark = 4 + + Dim indexBody As Integer + For l = 0 To recessBodies.Length - 1 + If recessBodies(l).Name = "Boss-Extrude1" Then + indexBody = l + Exit For + End If + Next + + Dim recessFace = recessBodies(indexBody).GetFirstFace + recessFace.Select4(True, sldata) + + Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False) + + Assembly.ClearSelection2(True) + + + Assembly.EditAssembly + Next + + For j = 0 To tempList.Count - 2 + Assembly.ClearSelection2(True) + + Dim recessPartName As String = recessParts(i)("partName") + boolstatus = AssemblyExtension.SelectByID2(recessPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) + Dim recessPart = SelMgr.GetSelectedObject6(1, -1) + + Assembly.EditPart + + Dim gratingPartName As String = partDT.Rows(Data.recessData.Rows(i)("GRATINGS")(j))("partName") + Dim indexGrating As Integer + For k = 0 To components.Length - 1 + If components(k).Name2 = gratingPartName & "-1" Then + indexGrating = k + Exit For + End If + Next + + + Dim indexRecess As Integer + For k = 0 To components.Length - 1 + If components(k).Name2 = recessPartName & "-1" Then + indexRecess = k + Exit For + End If + Next + + Dim recessBodies = components(indexRecess).GetBodies2(0) + Dim recessBodyIndex As Integer + For k = 0 To recessBodies.Length - 1 + If recessBodies(k).Name = "Boss-Extrude2" Then + recessBodyIndex = k + Exit For + End If + Next + Dim recessBody = recessBodies(recessBodyIndex) + + If Math.Abs(tempList(0) - tempList(1)) = 1 Then + 'Plane split + Dim planeName As String = "VerticalSplitPlane@" & gratingPartName & "-1@" & designName + boolstatus = AssemblyExtension.SelectByID2(planeName, "PLANE", 0, 0, 0, True, 0, Nothing, 0) + + Dim RefPlane As Object + RefPlane = Assembly.FeatureManager.InsertRefPlane(4, 0, 0, 0, 0, 0) + Assembly.ClearSelection2(True) + + + + Dim vResultingBodies As Object + vResultingBodies = Assembly.FeatureManager.PreSplitBody() + + Dim bodyOrigins As Object + Dim splitFeat As SldWorks.Feature + + splitFeat = Assembly.FeatureManager.PostSplitBody(vResultingBodies, False, bodyOrigins, "") + Assembly.ClearSelection2(True) + + gratingPartName = partDT.Rows(Data.recessData.Rows(i)("GRATINGS")(j + 1))("partName") + planeName = "VerticalSplitPlane@" & gratingPartName & "-1@" & designName + boolstatus = AssemblyExtension.SelectByID2(planeName, "PLANE", 0, 0, 0, True, 0, Nothing, 0) + + Dim RefPlane2 As Object + RefPlane2 = Assembly.FeatureManager.InsertRefPlane(4, 0, 0, 0, 0, 0) + Assembly.ClearSelection2(True) + + vResultingBodies = Assembly.FeatureManager.PreSplitBody() + splitFeat = Assembly.FeatureManager.PostSplitBody(vResultingBodies, False, bodyOrigins, "") + + Else + Dim gratingBodies = components(indexGrating).GetBodies2(0) + Dim cutBodyIndex As Integer + For k = 0 To gratingBodies.Length - 1 + If gratingBodies(k).Name = "HorizontalSplitBody" Then + cutBodyIndex = k + Exit For + End If + Next + Dim cutBody = gratingBodies(cutBodyIndex) + + Assembly.ClearSelection2(True) + + sldata.Mark = 1 + Dim bodyName As String = recessBody.Name & "@" & recessPartName & "-1@" & designName + boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0) + + sldata.Mark = 4 + Dim cutFace = cutBody.GetFirstFace + cutFace.Select4(True, sldata) + + Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False) + End If + + Assembly.ClearSelection2(True) + + Assembly.EditAssembly + Next + + Next @@ -324,6 +492,9 @@ Public Class Model_3D_Fill Assembly.EditAssembly Next + + + Dim interfDectMgr As SldWorks.InterferenceDetectionMgr 'Dim interferences As Object 'Dim interferenceBody As SldWorks.IBody2