Share

Associative body copy

Description

The following sample demonstrates copying bodies (associatively and non-associatively) across parts in an assembly.

Code Samples

Before running the sample, create an assembly with two parts in it. The sample copies the body from the first part into the second part.
Sub AssociativeBodyCopy()
    ' Set a reference to the active assembly document.
    Dim oAssemblyDoc As AssemblyDocument
    Set oAssemblyDoc = ThisApplication.ActiveDocument

    Dim oAssemblyDef As AssemblyComponentDefinition
    Set oAssemblyDef = oAssemblyDoc.ComponentDefinition

    Dim oOccurrence1 As ComponentOccurrence
    Set oOccurrence1 = oAssemblyDef.Occurrences.Item(1)

    Dim oPartDef1 As PartComponentDefinition
    Set oPartDef1 = oOccurrence1.Definition

    Dim oOccurrence2 As ComponentOccurrence
    Set oOccurrence2 = oAssemblyDef.Occurrences.Item(2)

    Dim oPartDef2 As PartComponentDefinition
    Set oPartDef2 = oOccurrence2.Definition

    ' Get the source solid body from the first part.
    Dim oSourceBody As SurfaceBody
    Set oSourceBody = oPartDef1.SurfaceBodies.Item(1)

    Dim oSourceBodyProxy As SurfaceBodyProxy
    Call oOccurrence1.CreateGeometryProxy(oSourceBody, oSourceBodyProxy)

    ' Create an associative surface base feature in the second part.
    Dim oFeatureDef1 As NonParametricBaseFeatureDefinition
    Set oFeatureDef1 = oPartDef2.Features.NonParametricBaseFeatures.CreateDefinition

    Dim oCollection As ObjectCollection
    Set oCollection = ThisApplication.TransientObjects.CreateObjectCollection

    oCollection.Add oSourceBodyProxy

    oFeatureDef1.BRepEntities = oCollection
    oFeatureDef1.OutputType = kSurfaceOutputType
    oFeatureDef1.TargetOccurrence = oOccurrence2
    oFeatureDef1.IsAssociative = True

    Dim oBaseFeature1 As NonParametricBaseFeature
    Set oBaseFeature1 = oPartDef2.Features.NonParametricBaseFeatures.AddByDefinition(oFeatureDef1)

    ' Create a non-associative solid base feature in the second part.
    Dim oFeatureDef2 As NonParametricBaseFeatureDefinition
    Set oFeatureDef2 = oPartDef2.Features.NonParametricBaseFeatures.CreateDefinition

    oFeatureDef2.BRepEntities = oCollection
    oFeatureDef2.OutputType = kSolidOutputType
    oFeatureDef2.TargetOccurrence = oOccurrence2

    Dim oBaseFeature2 As NonParametricBaseFeature
    Set oBaseFeature2 = oPartDef2.Features.NonParametricBaseFeatures.AddByDefinition(oFeatureDef2)

    oAssemblyDoc.Update
End Sub


Was this information helpful?