Run Interference Detection Example (VB.NET)
This example shows how to perform 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.
'-----------------------------------------------------------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
System
Imports
System.Diagnostics
Partial
Class
SolidWorksMacro
Sub
main()
Dim
swModelDoc As
ModelDoc2
Dim
swAssemblyDoc As
AssemblyDoc
Dim
pIntMgr As
InterferenceDetectionMgr
Dim
vInts As
Object
swModelDoc = swApp.ActiveDoc
swAssemblyDoc = swModelDoc
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_e.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
Object
Dim
comp As
Component2
Dim
vol As
Double
For
i = 0 To
UBound(vInts)
Debug.Print("Interference "
& (i + 1))
interference = vInts(i)
Debug.Print("Number of
components in this interference: " &
interference.GetComponentCount)
vComps = interference.Components
For
j = 0 To
UBound(vComps)
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
Public
swApp As
SldWorks
End
Class