' COPYRIGHT DASSAULT SYSTEMES 2001
Option Explicit

' ***********************************************************************
'   Purpose     : Compute clash and filter results.
'   Assumptions : A CATProduct document should be active and some components selected.
'   Author      : 
'   Languages   : VBScript
'   Locales     : English 
'   CATIA Level : V5R6 
' ***********************************************************************

Sub CATMain()

    'Acquire the filtering value
    Dim sFilterValue As String
    sFilterValue = "-1." 'Default value
    sFilterValue = InputBox("What is the filtering value ?", "Filtering value", sFilterValue)
    If (sFilterValue <> "") Then
       Dim dFilterValue As Double
       dFilterValue = Cdbl(sFilterValue)

       ' Retrieve the Clashes collection
       Dim cClashes As Clashes
       Set cClashes = CATIA.ActiveDocument.Product.GetTechnologicalObject("Clashes")

       ' Create a clash with selected components and compute it
       Dim oClash As Clash
       Set oClash = cClashes.AddFromSel
       oClash.ComputationType = catClashComputationTypeInsideOne
       oClash.InterferenceType = catClashInterferenceTypeContact
       oClash.Compute

       ' Filter conflicts
       Dim cConflicts As Conflicts
       Set cConflicts = oClash.Conflicts
       Dim I As Integer
       For I = 1 To cConflicts.Count
           Dim oConflict As Conflict
           Set oConflict = cConflicts.Item(I)
           If (oConflict.Type = catConflictTypeClash) Then
               If (oConflict.Value > dFilterValue) Then
                   oConflict.Status = catConflictStatusIrrelevant
                   oConflict.Comment = "Automatic filter : penetration less than " & dFilterValue
               End If
           ElseIf (oConflict.Type = catConflictTypeContact) Then
               oConflict.Status = catConflictStatusIrrelevant
               oConflict.Comment = "Automatic filter : contact"
           End If
       Next

    End If

End Sub