Fixes to support beams (recesses etc)

This commit is contained in:
Mans 2021-04-29 12:00:54 +02:00
parent 8f1aa2a5c5
commit 9c07c563a8
4 changed files with 357 additions and 160 deletions

Binary file not shown.

BIN
HLCt/Parts/~$START.SLDPRT Normal file

Binary file not shown.

View File

@ -61,6 +61,24 @@ Public Class Multiple_3D
Frame_3D.Build_Frame(gratingParameters, parentID) Frame_3D.Build_Frame(gratingParameters, parentID)
End If End If
If Calculate_Fill_Grid.withSupportBeam = True Then
For i = 0 To Calculate_Fill_Grid.supportBeamsDT.Rows.Count - 1
inst_ = ExternalClass.instantiate_parts(parentID, "support_beam", "")
ExternalClass.modify_parameter_value("DP_HEIGHT_OFFSET", inst_, gratingParameters("LOADBAR_HEIGHT"))
ExternalClass.modify_parameter_value("DP_LENGTH", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("LENGTH"))
ExternalClass.modify_parameter_value("DP_OFFSET_TOP", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("OFFSET_TOP"))
ExternalClass.modify_parameter_value("DP_OFFSET_BOTTOM", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("OFFSET_BOTTOM"))
ExternalClass.modify_parameter_value("DP_ROTATION", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("ROTATION"))
If Calculate_Fill_Grid.supportBeamsDT.Rows(i)("ROTATION") = 0 Then
ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("GLOBAL_OFFSET"))
ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, 0)
Else
ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, 0)
ExternalClass.modify_parameter_value("DP_OFFSET_L", inst_, Calculate_Fill_Grid.supportBeamsDT.Rows(i)("GLOBAL_OFFSET"))
End If
Next
End If
importClass.copyGroupsByDataSet(ExternalClass.groupds_new) importClass.copyGroupsByDataSet(ExternalClass.groupds_new)
Dim grNr = groupClass.NewGroupID Dim grNr = groupClass.NewGroupID
Dim designTable = designModel.selectDesign("*") Dim designTable = designModel.selectDesign("*")
@ -70,6 +88,7 @@ Public Class Multiple_3D
Delete_Obsolete() Delete_Obsolete()
Recess_Indent() Recess_Indent()
SupportBeams_Indent()
Save_Assembly() Save_Assembly()
End Sub End Sub
@ -299,6 +318,15 @@ Public Class Multiple_3D
Dim components = Assembly.GetComponents(True) Dim components = Assembly.GetComponents(True)
'Indent 'Indent
Dim listOfBeams As New List(Of DataRow)
For i = 0 To partDT.Rows.Count - 1
Dim partName As String
partName = partDT.Rows(i)("partName")
If partName.Split("_")(0) = "SUPPORT" Then
listOfBeams.Add(partDT.Rows(i))
End If
Next
Dim recessParentName As String = partDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName") Dim recessParentName As String = partDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName")
Dim recessParts = partDT.Select("parentName = '" & recessParentName & "'") Dim recessParts = partDT.Select("parentName = '" & recessParentName & "'")
For i = 0 To recessParts.Count - 1 For i = 0 To recessParts.Count - 1
@ -326,61 +354,101 @@ Public Class Multiple_3D
Dim recessFace = recessBodies(indexBody).GetFirstFace Dim recessFace = recessBodies(indexBody).GetFirstFace
For j = 0 To Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal - 1 For j = 0 To Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal - 1 + Calculate_Fill_Grid.supportBeamsDT.Rows.Count
Assembly.ClearSelection2(True) Assembly.ClearSelection2(True)
If j < Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal Then
Dim gratingPartName As String = partDT.Rows(j)("partName")
boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
Dim gratingPart = SelMgr.GetSelectedObject6(1, -1)
Dim gratingPartName As String = partDT.Rows(j)("partName") Assembly.EditPart
boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
Dim gratingPart = SelMgr.GetSelectedObject6(1, -1)
Assembly.EditPart boolstatus = AssemblyExtension.SelectByID2("HorizontalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
modelDoc.EditSuppress2()
boolstatus = AssemblyExtension.SelectByID2("VerticalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
modelDoc.EditSuppress2()
boolstatus = AssemblyExtension.SelectByID2("HorizontalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0) Dim indexGrating As Integer
modelDoc.EditSuppress2() For k = 0 To components.Length - 1
boolstatus = AssemblyExtension.SelectByID2("VerticalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0) If components(k).Name2 = gratingPartName & "-1" Then
modelDoc.EditSuppress2() indexGrating = k
Exit For
End If
Next
Dim indexGrating As Integer Dim gratingComponent As SldWorks.Component2 = components(indexGrating)
For k = 0 To components.Length - 1
If components(k).Name2 = gratingPartName & "-1" Then
indexGrating = k
Exit For
End If
Next
Dim gratingComponent As SldWorks.Component2 = components(indexGrating) Dim bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
Dim bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1") sldata.Mark = 1
For k = 0 To bodiesToCut.Length - 1 Dim bodyName As String = bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName
Assembly.ClearSelection2(True) boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 1 sldata.Mark = 4
Dim bodyName As String = bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName recessFace.Select4(True, sldata)
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4 Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
recessFace.Select4(True, sldata) Assembly.ClearSelection2(True)
Next
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False) bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
Assembly.ClearSelection2(True) For k = 0 To bodiesToCut.Length - 1
Next boolstatus = AssemblyExtension.SelectByID2(bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName, "SOLIDBODY", 0, 0, 0, True, 0, Nothing, 0)
Dim myFeature As Object
Dim modelFeat As FeatureManager = modelDoc.FeatureManager
myFeature = modelFeat.InsertDeleteBody2(False)
Dim a = 1
Next
bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1") boolstatus = AssemblyExtension.SelectByID2("HorizontalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
For k = 0 To bodiesToCut.Length - 1 modelDoc.EditUnsuppress2()
boolstatus = AssemblyExtension.SelectByID2(bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName, "SOLIDBODY", 0, 0, 0, True, 0, Nothing, 0) boolstatus = AssemblyExtension.SelectByID2("VerticalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
Dim myFeature As Object modelDoc.EditUnsuppress2()
Dim modelFeat As FeatureManager = modelDoc.FeatureManager Assembly.EditAssembly
myFeature = modelFeat.InsertDeleteBody2(False) End If
Dim a = 1
Next Else
Dim j2 As Integer = j - Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal
Dim beamName As String = listOfBeams(j2)("partName")
boolstatus = AssemblyExtension.SelectByID2(beamName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
Dim gratingPart = SelMgr.GetSelectedObject6(1, -1)
Assembly.EditPart
Dim indexBeam As Integer
For k = 0 To components.Length - 1
If components(k).Name2 = beamName & "-1" Then
indexBeam = k
Exit For
End If
Next
Dim beamComponent As SldWorks.Component2 = components(indexBeam)
Dim bodiesToCut = Check_Interference(beamComponent, recessComponent, beamName & "-1")
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
sldata.Mark = 1
Dim bodyName As String = bodiesToCut(k).Name & "@" & beamName & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4
recessFace.Select4(True, sldata)
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
Assembly.ClearSelection2(True)
Next
Assembly.EditAssembly
End If
boolstatus = AssemblyExtension.SelectByID2("HorizontalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
modelDoc.EditUnsuppress2()
boolstatus = AssemblyExtension.SelectByID2("VerticalSplitBody@" & gratingPartName & "-1@" & designName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
modelDoc.EditUnsuppress2()
Assembly.EditAssembly
End If End If
Next Next
Assembly.ClearSelection2(True) Assembly.ClearSelection2(True)
@ -494,6 +562,99 @@ Public Class Multiple_3D
End Sub End Sub
Private Shared Sub SupportBeams_Indent()
Dim swApp As SldWorks.SldWorks
swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks)
Dim boolstatus As Boolean
Dim AssemblyExtension As SldWorks.ModelDocExtension
Dim Assembly = swApp.ActiveDoc
Dim modelDoc As IModelDoc2
modelDoc = Assembly
Dim SelMgr = Assembly.SelectionManager()
AssemblyExtension = Assembly.Extension
Dim sldata = SelMgr.CreateSelectData
partDT = partModel.selectPart("*")
Dim components = Assembly.GetComponents(True)
'Indent
Dim listOfHorizBeams As New List(Of DataRow)
Dim listOfVertBeams As New List(Of DataRow)
Dim counter As Integer = 1
For i = 0 To partDT.Rows.Count - 1
Dim partName As String
partName = partDT.Rows(i)("partName")
If partName.Split("_")(0) = "SUPPORT" Then
If counter < Calculate_Fill_Grid.numOfVertical Then
listOfHorizBeams.Add(partDT.Rows(i))
counter += 1
Else
listOfVertBeams.Add(partDT.Rows(i))
End If
End If
Next
For i = 0 To listOfHorizBeams.Count - 1
Dim nameOfHorizBeam As String = listOfHorizBeams(i)("partName")
Dim indexBeamHoriz As Integer
For j = 0 To components.Length - 1
If components(j).Name2 = nameOfHorizBeam & "-1" Then
indexBeamHoriz = j
Exit For
End If
Next
Dim horizBeamBodies = components(indexBeamHoriz).GetBodies2(0)
Dim horizBeamComponent As SldWorks.Component2 = components(indexBeamHoriz)
Dim horizBeamFace = horizBeamBodies(0).GetFirstFace
For j = 0 To listOfVertBeams.Count - 1
Dim nameOfVertBeam As String = listOfVertBeams(j)("partName")
Dim indexBeamVert As Integer
For k = 0 To components.Length - 1
If components(k).Name2 = nameOfVertBeam & "-1" Then
indexBeamVert = k
Exit For
End If
Next
Dim vertBeamBodies = components(indexBeamVert).GetBodies2(0)
Dim vertBeamComponent As SldWorks.Component2 = components(indexBeamVert)
Dim bodiesToCut = Check_Interference(vertBeamComponent, horizBeamComponent, nameOfVertBeam & "-1")
If bodiesToCut Is Nothing Then
Assembly.EditAssembly
Continue For
End If
Assembly.ClearSelection2(True)
boolstatus = AssemblyExtension.SelectByID2(nameOfVertBeam & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Assembly.EditPart
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
sldata.Mark = 1
Dim bodyName As String = bodiesToCut(k).Name & "@" & nameOfVertBeam & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4
horizBeamFace.Select4(True, sldata)
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
Assembly.ClearSelection2(True)
Next
Assembly.EditAssembly
Next
Next
Assembly.EditAssembly
boolstatus = modelDoc.EditRebuild3()
End Sub
Private Shared Sub Delete_Obsolete() Private Shared Sub Delete_Obsolete()
Dim listOfObsolete As List(Of Integer) Dim listOfObsolete As List(Of Integer)
@ -746,7 +907,9 @@ Public Class Multiple_3D
vCompArray = CompArray vCompArray = CompArray
swAssy.ToolsCheckInterference2(2, (vCompArray), interfering, vIntCompArray, vIntFaceArray) swAssy.ToolsCheckInterference2(2, (vCompArray), interfering, vIntCompArray, vIntFaceArray)
If vIntFaceArray Is Nothing Then
Return Nothing
End If
Dim Bodies(UBound(vIntFaceArray)) As Object Dim Bodies(UBound(vIntFaceArray)) As Object
Dim BodyNames(UBound(vIntFaceArray)) As String Dim BodyNames(UBound(vIntFaceArray)) As String
Dim CompNames(UBound(vIntFaceArray)) As String Dim CompNames(UBound(vIntFaceArray)) As String

View File

@ -394,6 +394,16 @@ Public Class Multiple_3D_Simplified
Dim components = Assembly.GetComponents(True) Dim components = Assembly.GetComponents(True)
'Indent 'Indent
Dim listOfBeams As New List(Of DataRow)
For i = 0 To partDT.Rows.Count - 1
Dim partName As String
partName = partDT.Rows(i)("partName")
If partName.Split("_")(0) = "SUPPORT" Then
listOfBeams.Add(partDT.Rows(i))
End If
Next
Dim recessParentName As String = partDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName") Dim recessParentName As String = partDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName")
Dim recessParts = partDT.Select("parentName = '" & recessParentName & "'") Dim recessParts = partDT.Select("parentName = '" & recessParentName & "'")
For i = 0 To recessParts.Count - 1 For i = 0 To recessParts.Count - 1
@ -421,52 +431,89 @@ Public Class Multiple_3D_Simplified
Dim recessFace = recessBodies(indexBody).GetFirstFace Dim recessFace = recessBodies(indexBody).GetFirstFace
For j = 0 To Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal - 1 For j = 0 To Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal - 1 + Calculate_Fill_Grid.supportBeamsDT.Rows.Count
Assembly.ClearSelection2(True) Assembly.ClearSelection2(True)
If j < Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal Then
Dim gratingPartName As String = partDT.Rows(j)("partName")
boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
Dim gratingPart = SelMgr.GetSelectedObject6(1, -1)
Dim gratingPartName As String = partDT.Rows(j)("partName") Assembly.EditPart
boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
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 indexGrating As Integer Dim gratingComponent As SldWorks.Component2 = components(indexGrating)
For k = 0 To components.Length - 1
If components(k).Name2 = gratingPartName & "-1" Then
indexGrating = k
Exit For
End If
Next
Dim gratingComponent As SldWorks.Component2 = components(indexGrating) Dim bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
Dim bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1") For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
For k = 0 To bodiesToCut.Length - 1 sldata.Mark = 1
Assembly.ClearSelection2(True) Dim bodyName As String = bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 1 sldata.Mark = 4
Dim bodyName As String = bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName recessFace.Select4(True, sldata)
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4 Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
recessFace.Select4(True, sldata) Assembly.ClearSelection2(True)
Next
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False) bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
Assembly.ClearSelection2(True)
Next
bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1") For k = 0 To bodiesToCut.Length - 1
boolstatus = AssemblyExtension.SelectByID2(bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName, "SOLIDBODY", 0, 0, 0, True, 0, Nothing, 0)
Dim myFeature As Object
Dim modelFeat As FeatureManager = modelDoc.FeatureManager
myFeature = modelFeat.InsertDeleteBody2(False)
Next
For k = 0 To bodiesToCut.Length - 1 Assembly.EditAssembly
boolstatus = AssemblyExtension.SelectByID2(bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName, "SOLIDBODY", 0, 0, 0, True, 0, Nothing, 0) End If
Dim myFeature As Object Else
Dim modelFeat As FeatureManager = modelDoc.FeatureManager Dim j2 As Integer = j - Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal
myFeature = modelFeat.InsertDeleteBody2(False) Dim beamName As String = listOfBeams(j2)("partName")
Next boolstatus = AssemblyExtension.SelectByID2(beamName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
Dim gratingPart = SelMgr.GetSelectedObject6(1, -1)
Assembly.EditAssembly Assembly.EditPart
Dim indexBeam As Integer
For k = 0 To components.Length - 1
If components(k).Name2 = beamName & "-1" Then
indexBeam = k
Exit For
End If
Next
Dim beamComponent As SldWorks.Component2 = components(indexBeam)
Dim bodiesToCut = Check_Interference(beamComponent, recessComponent, beamName & "-1")
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
sldata.Mark = 1
Dim bodyName As String = bodiesToCut(k).Name & "@" & beamName & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4
recessFace.Select4(True, sldata)
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
Assembly.ClearSelection2(True)
Next
Assembly.EditAssembly
End If
End If End If
Next Next
Assembly.ClearSelection2(True) Assembly.ClearSelection2(True)
@ -476,7 +523,6 @@ Public Class Multiple_3D_Simplified
Next Next
End Sub End Sub
'FORTSÄTT HÄR: FIXA ATT SKÄRA VERTICAL MED HORIZONTAL BEAMS
Private Shared Sub SupportBeams_Indent() Private Shared Sub SupportBeams_Indent()
Dim swApp As SldWorks.SldWorks Dim swApp As SldWorks.SldWorks
swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks)
@ -494,94 +540,80 @@ Public Class Multiple_3D_Simplified
partDT = partModel.selectPart("*") partDT = partModel.selectPart("*")
Dim gratingParts = partDT.Select("parentName = 'START'")
Dim components = Assembly.GetComponents(True) Dim components = Assembly.GetComponents(True)
'Indent 'Indent
Dim beamParentName As String = partDT.Rows(Calculate_Fill_Grid.numOfHorizontal * (Calculate_Fill_Grid.numOfVertical - 1))("partName") Dim listOfHorizBeams As New List(Of DataRow)
Dim beamParts = partDT.Select("parentName = '" & beamParentName & "'") Dim listOfVertBeams As New List(Of DataRow)
Dim counter As Integer = 1
For i = 0 To beamParts.Count - 1 For i = 0 To partDT.Rows.Count - 1
Dim beamPartName As String = beamParts(i)("partName") Dim partName As String
If beamPartName.Split("_")(0) = "RECESS" Then partName = partDT.Rows(i)("partName")
If partName.Split("_")(0) = "SUPPORT" Then
Dim indexRecess As Integer If counter < Calculate_Fill_Grid.numOfVertical Then
For k = 0 To components.Length - 1 listOfHorizBeams.Add(partDT.Rows(i))
If components(k).Name2 = beamPartName & "-1" Then counter += 1
indexRecess = k Else
Exit For listOfVertBeams.Add(partDT.Rows(i))
End If End If
Next
Dim recessBodies = components(indexRecess).GetBodies2(0)
Dim recessComponent As SldWorks.Component2 = components(indexRecess)
Dim indexBody As Integer
For l = 0 To recessBodies.Length - 1
If recessBodies(l).Name = "Cut-Body" Then
indexBody = l
Exit For
End If
Next
Dim recessFace = recessBodies(indexBody).GetFirstFace
For j = 0 To Calculate_Fill_Grid.numOfVertical * Calculate_Fill_Grid.numOfHorizontal - 1
Assembly.ClearSelection2(True)
Dim gratingPartName As String = partDT.Rows(j)("partName")
boolstatus = AssemblyExtension.SelectByID2(gratingPartName & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
If boolstatus = True Then
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 gratingComponent As SldWorks.Component2 = components(indexGrating)
Dim bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
sldata.Mark = 1
Dim bodyName As String = bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4
recessFace.Select4(True, sldata)
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
Assembly.ClearSelection2(True)
Next
bodiesToCut = Check_Interference(gratingComponent, recessComponent, gratingPartName & "-1")
For k = 0 To bodiesToCut.Length - 1
boolstatus = AssemblyExtension.SelectByID2(bodiesToCut(k).Name & "@" & gratingPartName & "-1@" & designName, "SOLIDBODY", 0, 0, 0, True, 0, Nothing, 0)
Dim myFeature As Object
Dim modelFeat As FeatureManager = modelDoc.FeatureManager
myFeature = modelFeat.InsertDeleteBody2(False)
Next
Assembly.EditAssembly
End If
Next
Assembly.ClearSelection2(True)
End If End If
Assembly.EditAssembly
boolstatus = modelDoc.EditRebuild3()
Next Next
Dim a = 1 For i = 0 To listOfHorizBeams.Count - 1
Dim nameOfHorizBeam As String = listOfHorizBeams(i)("partName")
Dim indexBeamHoriz As Integer
For j = 0 To components.Length - 1
If components(j).Name2 = nameOfHorizBeam & "-1" Then
indexBeamHoriz = j
Exit For
End If
Next
Dim horizBeamBodies = components(indexBeamHoriz).GetBodies2(0)
Dim horizBeamComponent As SldWorks.Component2 = components(indexBeamHoriz)
Dim horizBeamFace = horizBeamBodies(0).GetFirstFace
For j = 0 To listOfVertBeams.Count - 1
Dim nameOfVertBeam As String = listOfVertBeams(j)("partName")
Dim indexBeamVert As Integer
For k = 0 To components.Length - 1
If components(k).Name2 = nameOfVertBeam & "-1" Then
indexBeamVert = k
Exit For
End If
Next
Dim vertBeamBodies = components(indexBeamVert).GetBodies2(0)
Dim vertBeamComponent As SldWorks.Component2 = components(indexBeamVert)
Dim bodiesToCut = Check_Interference(vertBeamComponent, horizBeamComponent, nameOfVertBeam & "-1")
If bodiesToCut Is Nothing Then
Assembly.EditAssembly
Continue For
End If
Assembly.ClearSelection2(True)
boolstatus = AssemblyExtension.SelectByID2(nameOfVertBeam & "-1@" & designName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Assembly.EditPart
For k = 0 To bodiesToCut.Length - 1
Assembly.ClearSelection2(True)
sldata.Mark = 1
Dim bodyName As String = bodiesToCut(k).Name & "@" & nameOfVertBeam & "-1@" & designName
boolstatus = AssemblyExtension.SelectByID2(bodyName, "SOLIDBODY", 0, 0, 0, True, 1, Nothing, 0)
sldata.Mark = 4
horizBeamFace.Select4(True, sldata)
Assembly.FeatureManager.InsertIndent(0.01, 0, False, True, True, False)
Assembly.ClearSelection2(True)
Next
Assembly.EditAssembly
Next
Next
Assembly.EditAssembly
boolstatus = modelDoc.EditRebuild3()
End Sub End Sub
Private Shared Sub Delete_Obsolete() Private Shared Sub Delete_Obsolete()
@ -834,7 +866,9 @@ Public Class Multiple_3D_Simplified
vCompArray = CompArray vCompArray = CompArray
swAssy.ToolsCheckInterference2(2, (vCompArray), interfering, vIntCompArray, vIntFaceArray) swAssy.ToolsCheckInterference2(2, (vCompArray), interfering, vIntCompArray, vIntFaceArray)
If vIntFaceArray Is Nothing Then
Return Nothing
End If
Dim Bodies(UBound(vIntFaceArray)) As Object Dim Bodies(UBound(vIntFaceArray)) As Object
Dim BodyNames(UBound(vIntFaceArray)) As String Dim BodyNames(UBound(vIntFaceArray)) As String
Dim CompNames(UBound(vIntFaceArray)) As String Dim CompNames(UBound(vIntFaceArray)) As String