Imports System.IO
Imports System.Runtime.InteropServices
Module Example
    <STAThread()> _
    Sub Main()
        Dim objApplication As SolidEdgeFramework.Application = Nothing
        Dim objPartDocument As SolidEdgePart.PartDocument = Nothing
        Dim objModels As SolidEdgePart.Models = Nothing
        Dim objModel As SolidEdgePart.Model = Nothing
        Dim objUnions As SolidEdgePart.Unions = Nothing
        Dim objUnion As SolidEdgePart.Union = Nothing
        Dim objTargetBodyunion(5) As Object
        Dim objToolBodyunion(5) As Object
        Dim objTargetBodyunionout(1) As Object
        Dim objToolBodyunionout(3) As Object
        Dim nTargets As Long
        Dim nTools As Long
        Try
            OleMessageFilter.Register()
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            objPartDocument = objApplication.ActiveDocument
            ' get the Model collection
            objModels = objPartDocument.Models
            objTargetBodyunion(0) = objModels.Item(1).Body
            objToolBodyunion(0) = objModels.Item(2).Body
            objToolBodyunion(1) = objModels.Item(3).Body
            objToolBodyunion(2) = objModels.Item(4).Body
            objModel = objModels.Item(1)
            objUnions = objModel.Unions
            objUnion = objUnions.Add(1, objTargetBodyunion, 3, objToolBodyunion,
                                            SolidEdgePart.SETargetDesignBodyOption.igCreateMultipleDesignBodiesOnNonManifoldOption,
                                            SolidEdgePart.SETargetConstructionBodyOption.igCreateMultipleConstructionBodiesOnNonManifoldOption)
            objModel.ExtrudedProtrusions.Item(4).RollToFeature()
            objTargetBodyunion(0) = objModels.Item(1).Body
            objToolBodyunion(0) = objModels.Item(2).Body
            objToolBodyunion(1) = objModels.Item(3).Body
            'objToolBodyunion(2) = objModels.Item(4).Body
            objUnion.Edit(1, objTargetBodyunion, 2, objToolBodyunion,
                                 SolidEdgePart.SETargetDesignBodyOption.igCreateMultipleDesignBodiesOnNonManifoldOption,
                                 SolidEdgePart.SETargetConstructionBodyOption.igCreateMultipleConstructionBodiesOnNonManifoldOption)
            objUnion.RollToFeature()
            objUnion.GetTargets(nTargets, objTargetBodyunionout)
            objUnion.GetTools(nTools, objToolBodyunionout)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module