Get the interfering threads in a Assembly via VBA

Get the interfering threads in a Assembly via VBA

hendrik.koopmans
Explorer Explorer
251 Views
0 Replies
Message 1 of 1

Get the interfering threads in a Assembly via VBA

hendrik.koopmans
Explorer
Explorer

Hello All,

 

I trying to get via VBA the interfering threds in a assembly, but I can't find the right way to get it done. The collision detection tool in Autodesk Inventor 23 is able to give you these.

hendrikkoopmans_1-1653475127751.png

So i think it should be possible to get the same information via VBA. To get Interferences in a Assembly there is a API sample, which gives you all interferences:

Public Sub Interference()
Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.ActiveDocument

' Find all selected occurrences and add them to an ObjectCollection.
Dim oSelectedOccs As ObjectCollection
Set oSelectedOccs = ThisApplication.TransientObjects.CreateObjectCollection
Dim i As Long
For i = 1 To oDoc.SelectSet.Count
If oDoc.SelectSet.Item(i).Type = kComponentOccurrenceObject Then
oSelectedOccs.Add oDoc.SelectSet.Item(i)
MsgBox oDoc.SelectSet.Item(i).Name
End If
Next

' If no occurrences are selected check for interference of
' all parts against all parts. If one occurrence is selected, check
' for interference between that occurrence and the rest of the assembly.
' If more than one occurrence is selected let the user decide if it
' should check for interference between the parts in the selection or
' between the selected parts and the rest of the assembly.
Dim oResults As InterferenceResults
Dim oCheckSet As ObjectCollection
Set oCheckSet = ThisApplication.TransientObjects.CreateObjectCollection
If oSelectedOccs.Count = 0 Then
' Add all occurrences to the object collection
Dim oOcc As ComponentOccurrence
For Each oOcc In oDoc.ComponentDefinition.Occurrences
oCheckSet.Add oOcc
Next

' Get the interference between everything.
Set oResults = oDoc.ComponentDefinition.AnalyzeInterference(oCheckSet)
ElseIf oSelectedOccs.Count = 1 Then
' Add all occurrences except the selected occurrence to the object collection.
For Each oOcc In oDoc.ComponentDefinition.Occurrences
If Not oOcc Is oSelectedOccs.Item(1) Then
oCheckSet.Add oOcc
End If
Next

' Get the interference between the selected occurrence everything else.
Set oResults = oDoc.ComponentDefinition.AnalyzeInterference(oSelectedOccs, oCheckSet)
Else
If MsgBox("Check interference between selected occurrences and all other occurrences?", vbYesNo + vbQuestion) = vbYes Then
' Add all occurrences except the selected occurrences to the object collection.
For Each oOcc In oDoc.ComponentDefinition.Occurrences
' Check to see if this occurrences is already selected.
Dim bSelected As Boolean
bSelected = False
For i = 1 To oSelectedOccs.Count
If oSelectedOccs.Item(i) Is oOcc Then
bSelected = True
Exit For
End If
Next

If Not bSelected Then
oCheckSet.Add oOcc
End If
Next

' Check interference between the selected items.
Set oResults = oDoc.ComponentDefinition.AnalyzeInterference(oSelectedOccs, oCheckSet)
Else
' Check interference between the selected items.

Set oResults = oDoc.ComponentDefinition.AnalyzeInterference(oSelectedOccs)
End If
End If


If oResults.Count = 1 Then
MsgBox "There is 1 interference."
ElseIf oResults.Count > 1 Then
MsgBox "There are " & oResults.Count & " interferences."
End If

If oResults.Count > 0 Then
Dim oHS1 As HighlightSet
Set oHS1 = oDoc.HighlightSets.Add
oHS1.Color = ThisApplication.TransientObjects.CreateColor(255, 0, 0)
Dim oHS2 As HighlightSet
Set oHS2 = oDoc.HighlightSets.Add
oHS2.Color = ThisApplication.TransientObjects.CreateColor(0, 255, 0)

For i = 1 To oResults.Count
oHS1.Clear
oHS2.Clear

oHS1.AddItem oResults.Item(i).OccurrenceOne
oHS2.AddItem oResults.Item(i).OccurrenceTwo
MsgBox "Occurrences are highlighted from interference " & i
'MsgBox oResults.Item(i).OccurrenceOne.Name
Next

oHS1.Clear
oHS2.Clear
Else
MsgBox "There is no interference."
End If
End Sub

I tryed to find in the Object oResults the information if the collision is a thred or not but I can't find it. May be it#s the wrong way to to it.

 

I hope someone can helb me with this

Thanks,

 

Hendrik

 

 

0 Likes
252 Views
0 Replies
Replies (0)