Run Interference Detection Example (VB.NET)
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 the interfering components.
' 2. Gets interfering information.
' 3. Inspect the Immediate window.
'
' NOTE: Because the assembly is used elsewhere, do not
save changes.
'---------------------------------------------------------------------------
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