' COPYRIGHT DASSAULT SYSTEMES 2001 Option Explicit ' *********************************************************************** ' Purpose : Compute the maximum separation. ' Assumptions : A CATProduct document should be active and some components selected. ' Author : ' Languages : VBScript ' Locales : English ' CATIA Level : V5R6 ' *********************************************************************** Sub CATMain() ' Retrieve the group of all components Dim cGroups As AnyObject Set cGroups = CATIA.ActiveDocument.Product.GetTechnologicalObject("Groups") Dim oGroup1 As Group Set oGroup1 = cGroups.AddFromSel Dim iNumber As Integer iNumber = oGroup1.CountExtract If (iNumber <= 1) Then ' Display the warning MsgBox "At least two products must be selected" Else ' Retrieve the Distances collection Dim cDistances As Distances Set cDistances = CATIA.ActiveDocument.Product.GetTechnologicalObject("Distances") 'Loop on each couple of components Dim dMaximum As Double dMaximum = 0. Dim oDistance As Distance Dim I As Integer Dim J As Integer Dim oGroup2 As Group Set oGroup2 = cGroups.Add Dim oProduct1 As Product Dim oProduct2 As Product For I = 1 To iNumber-1 Set oProduct1 = oGroup1.ItemExtract(I) oGroup2.AddExplicit oProduct1 For J = I+1 To iNumber Set oProduct2 = oGroup1.ItemExtract(J) oGroup2.AddExplicit oProduct2 ' Create the distance and compute it Set oDistance = cDistances.Add oDistance.FirstGroup = oGroup2 oDistance.Compute ' Compare the distance with the maximum value If (oDistance.IsDefined = 1) Then If (oDistance.Value > dMaximum) Then dMaximum = oDistance.Value End If End If cDistances.remove oDistance oGroup2.RemoveExplicit 2 Next oGroup2.RemoveExplicit 1 Next ' Clean cGroups.Remove oGroup2 cGroups.Remove oGroup1 ' Display the results MsgBox "Maximum separation is :" & Cstr(dMaximum) End If End Sub