Run Interference Detection Example (VBA)
This example shows how to run interference detection on an assembly.
'---------------------------------------------------------------------------
' Preconditions:
' 1. Open install_dir\samples\tutorial\advdrawings\bowl
and chute.sldasm.
' 2. Open the Immediate window.
'
' Postconditions:
' 1. Gets interfering components and transforms.
' 2. Gets interfering information.
' 3. Inspect the Immediate window.
'
' NOTE: Because the assembly is used elsewhere, do not save changes.
'---------------------------------------------------------------------------
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
Dim i As Long
Dim j As Long
Dim interference As IInterference
Dim vComps As Variant
Dim comp As Component2
Dim vol As Double
Dim vTrans As Variant
Dim ret As Boolean
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
pIntMgr.UseTransform = True
' Specify how to display non-interfering
components
pIntMgr.NonInterferingComponentDisplay =
swNonInterferingComponentDisplay_Wireframe
' Run interference detection
vInts = pIntMgr.GetInterferences
Debug.Print "Number of interferences: " & pIntMgr.GetInterferenceCount
' Get interfering components and
transforms
ret = pIntMgr.GetComponentsAndTransforms(vComps, vTrans)
' Get interference information
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