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 an Immediate window.
'
' Postconditions: Inspect the Immediate window for
interference information.
'
' NOTE: Because the assembly is used elsewhere, do not
save changes to it.
'---------------------------------------------------------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
System.Runtime.InteropServices
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
Dim
i As
Long
Dim
j As
Long
Dim
interference As
IInterference
Dim
vComps As
Object =
Nothing
Dim
comp As
Component2
Dim
vol As
Double
Dim
vTrans As
Object =
Nothing
Dim
ret As
Boolean
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
pIntMgr.UseTransform =
True
' Specify
how to display non-interfering components
pIntMgr.NonInterferingComponentDisplay =
swNonInterferingComponentDisplay_e.swNonInterferingComponentDisplay_Wireframe
' Run
interference detection
vInts = pIntMgr.GetInterferences
Debug.Print(
"#
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))
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