Code:
Sub CATMain() Dim cClashes As Clashes
Dim oClash As Clash
Dim oConflict As Conflict
Dim oProductDocument as ProductDocument
Dim oSel as Selection
Dim cConflicts As Conflicts
Dim I As Integer
Dim sFilter(0) as String
Dim Status as String
Dim aConflictProducts() as Product
' Select the product
Set oProductDocument = CATIA.ActiveDocument
Set oSel = oProductDocument.Selection
sFilter(0) = "Product"
Status = oSel.SelectElement2(sFilter,"Select product",true)
If Status <> "Normal" then Exit Sub
' Retrieve the Clashes collection
Set cClashes = oProductDocument.Product.GetTechnologicalObject("Clashes")
' Create a clash with selected components and compute it
Set oClash = cClashes.AddFromSel
oClash.ComputationType = catClashComputationTypeAgainstAll
oClash.InterferenceType = catClashInterferenceTypeClearance
oClash.Clearance = 10.0
oClash.Compute
' Loop over conflicts and store products in an array
Set cConflicts = oClash.Conflicts
ReDim aConflictProducts(cConflicts.Count)
Set aConflictProducts(0) = cConflicts.Item(1).FirstProduct
For I = 1 To cConflicts.Count
Set oConflict = cConflicts.Item(I)
Set aConflictProducts(I) = oConflict.SecondProduct
Next
' Remove Clash
cClashes.Remove(cClashes.Count)
' Select products from array
oSel.Clear
For I = LBound(aConflictProducts) To UBound(aConflictProducts)
oSel.Add aConflictProducts(I)
Next
End Sub