' Utility function just to check if the collection ' we are using already includes a given object Function IsInCollection( _ o As Object, coll As ObjectCollection) As Boolean Dim o2 As Object For Each o2 In coll If o2 Is o Then IsInCollection = True Exit Function End If Next IsInCollection = False End Function ' Recursively collect all tangent faces Sub GetAllTangentiallyConnectedFaces( _ f As Face, faces As ObjectCollection) Dim f2 As Face For Each f2 In f.TangentiallyConnectedFaces If Not IsInCollection(f2, faces) Then Call faces.Add(f2) Call GetAllTangentiallyConnectedFaces(f2, faces) End If Next End Sub ' Only check outer edges, and also ignore common ' edges with other faces Sub GetOuterEdgesOfFaces( _ faces As ObjectCollection, edges As ObjectCollection, doc As PartDocument) Dim f As Face Dim e As Edge Dim ss As SelectSet Set ss = doc.SelectSet For Each f In faces Dim el As EdgeLoop For Each el In f.EdgeLoops If el.IsOuterEdgeLoop Then For Each e In el.edges Dim f2 As Face For Each f2 In e.faces If (Not f Is f2) And _ (Not IsInCollection(f2, faces)) And _ (Not IsInCollection(e, edges)) Then Call edges.Add(e) End If Next Next End If Next For Each e In f.edges ' ss.Clear ' Call ss.Select(e) ' Debug.Print If Not IsInCollection(e, edges) Then 'Debug.Print e.faces.Item(1).CreatedByFeature.Name 'Debug.Print e.faces.Item(2).CreatedByFeature.Name If e.faces.Item(1).CreatedByFeature.Name <> e.faces.Item(2).CreatedByFeature.Name Then Call edges.Add(e) End If End If ' For i = 1 To 1000 ' DoEvents ' Next i Next e Next End Sub Sub SelectOuterEdgesOfConnectedFaces() Dim doc As PartDocument Dim ThisApplication As Inventor.Application Set ThisApplication = GetObject(, "Inventor.Application") Set doc = ThisApplication.ActiveDocument Dim f As Face Set f = doc.SelectSet(1) Call doc.SelectSet.Clear Dim tro As TransientObjects Set tro = ThisApplication.TransientObjects Dim faces As ObjectCollection Set faces = tro.CreateObjectCollection Call GetAllTangentiallyConnectedFaces(f, faces) Dim edges As ObjectCollection Set edges = tro.CreateObjectCollection Call GetOuterEdgesOfFaces(faces, edges, doc) Call doc.SelectSet.SelectMultiple(edges) 'Call doc.SelectSet.SelectMultiple(faces) End Sub