I have found the following solution courtesy of Brian Eakin's "API 2011 What's New" .ivb example modules
Clearly it is only valid for 2011 onwards.
' The following sample demonstrates associatively copying bodies across parts
' in an assembly. Before running this sample open the sample assembly called
' CutExample.iam. It can be run on any assembly that contains two parts, but
' the sample demonstrates a common use of the functionality. The use in this
' case is to use one part to cut another one, where the positions of the parts
' are the defined in the assembly but the cut is performed within the part and
' not as an assembly feature.
Sub AssociativeBodyCopy()
' Open the existing sample assembly.
Dim assemblyDoc As AssemblyDocument
Set assemblyDoc = ThisApplication.ActiveDocument
Dim assemblyDef As AssemblyComponentDefinition
Set assemblyDef = assemblyDoc.ComponentDefinition
' Get the first occurrence, which will be treated as the base part.
Dim baseOcc As ComponentOccurrence
Set baseOcc = assemblyDef.Occurrences.Item(1)
' Get the second occurrence, which will be used as the cut tool.
Dim toolOcc As ComponentOccurrence
Set toolOcc = assemblyDef.Occurrences.Item(2)
' Get the component definition of the base part.
Dim baseDef As PartComponentDefinition
Set baseDef = baseOcc.Definition
'** Create an associative surface base feature in the second part.
' Create a definition object in the context of the first part.
Dim baseFeatureDef As NonParametricBaseFeatureDefinition
Set baseFeatureDef = baseDef.Features.NonParametricBaseFeatures.CreateDefinition
' Add the body of the second part to the list of items to be copied. Since this
' is getting the body from the occurrence it is actually a SurfaceBodyProxy
' object in the context of the assembly.
Dim bodyColl As ObjectCollection
Set bodyColl = ThisApplication.TransientObjects.CreateObjectCollection
bodyColl.Add toolOcc.SurfaceBodies.Item(1)
' Set up the definition object. When setting the IsAssociative flag to True, the
' Output type must be either a Surface or Composite. A solid is not valid in that case.
baseFeatureDef.BRepEntities = bodyColl
baseFeatureDef.OutputType = kSurfaceOutputType
baseFeatureDef.TargetOccurrence = baseOcc
baseFeatureDef.IsAssociative = True
' Create the associative copy.
Dim baseFeature As NonParametricBaseFeature
Set baseFeature = baseDef.Features.NonParametricBaseFeatures.AddByDefinition(baseFeatureDef)
assemblyDoc.Update
' Get the WorkSurface that was created as a result of the import.
Dim surface As WorkSurface
Set surface = baseFeature.SurfaceBody.Parent
' Split the base part using the new surface.
Call baseDef.Features.SplitFeatures.TrimSolid(surface, baseDef.SurfaceBodies.Item(1), False)
' Turn off the visibilty of the work surface.
surface.Visible = False
ThisApplication.ActiveView.Update
End Sub