Run Interference Detection Example (VBA)
This example shows how to run interference detection on an assembly.
'--------------------------------------------------------------------------------------
'
' Preconditions:
' 1. Open <SolidWorks_install_dir>\samples\tutorial\advdrawings\bowl
and chute.sldasm.
' 2. Open an Immediate Window.
'
' Postconditions:
' Inspect the Immediate Window for interference information.
'
' NOTE: Because the assembly is used in SolidWorks tutorials,
do not save any changes to it.
'---------------------------------------------------------------------------------------
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swAssemblyDoc As SldWorks.AssemblyDoc
Dim pIntMgr As SldWorks.InterferenceDetectionMgr
Dim vInts As Variant
Set swApp = Application.SldWorks
Set swModelDoc = swApp.ActiveDoc
Set swAssemblyDoc = swModelDoc
Set pIntMgr = swAssemblyDoc.InterferenceDetectionManager
' Specify the interference detection settings and options
pIntMgr.TreatCoincidenceAsInterference = False
pIntMgr.TreatSubAssembliesAsComponents = True
pIntMgr.IncludeMultibodyPartInterferences = True
pIntMgr.MakeInterferingPartsTransparent = False
pIntMgr.CreateFastenersFolder = True
pIntMgr.IgnoreHiddenBodies = True
pIntMgr.ShowIgnoredInterferences = False
'Specify how to display non-interfering components
pIntMgr.NonInterferingComponentDisplay =
swNonInterferingComponentDisplay_Wireframe
' Run interference detection
vInts = pIntMgr.GetInterferences
Debug.Print "# of interferences in 1st run: " & pIntMgr.GetInterferenceCount
' Ignore an interference
vInts(0).Ignore = True
' Run interference detection again (should detect one less
interference)
vInts = pIntMgr.GetInterferences
Debug.Print "# of interferences after one is ignored: " & pIntMgr.GetInterferenceCount
Debug.Print ""
Dim i As Long
Dim j As Long
Dim interference As IInterference
Dim vComps As Variant
Dim comp As Component2
Dim vol As Double
For i = 0 To UBound(vInts)
Debug.Print "Interference " & (i + 1)
Set interference = vInts(i)
Debug.Print "Number of components in this interference: " &
interference.GetComponentCount
vComps = interference.Components
For j = 0 To UBound(vComps)
Set comp = vComps(j)
Debug.Print " " & comp.Name2
Next j
vol = interference.Volume
Debug.Print "Interference volume is " & (vol * 1000000000) &
" mm^3"
Next i
' Stop interference detection
pIntMgr.Done
End Sub