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 objSubtracts As SolidEdgePart.Subtracts = Nothing
        Dim objSubtract As SolidEdgePart.Subtract = Nothing
        Dim objTargetBodySubtract(2) As Object
        Dim objToolBodySubtract(3) As Object
        Dim objToolDirectionArray(3) As SolidEdgePart.SESubtractDirection
        Dim objTargetBodySubtractOut(1) As Object
        Dim nTargets As Long
        Try
            OleMessageFilter.Register()
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            objPartDocument = objApplication.ActiveDocument
            objModels = objPartDocument.Models
            objTargetBodySubtract(0) = objModels.Item(1).Body
            objToolBodySubtract(0) = objModels.Item(2).Body
            objToolBodySubtract(1) = objModels.Item(3).Body
            objToolDirectionArray(0) = SolidEdgePart.SESubtractDirection.igSubtractDirectionNone
            objToolDirectionArray(1) = SolidEdgePart.SESubtractDirection.igSubtractDirectionNone
            objModel = objModels.Item(1)
            objSubtracts = objModel.Subtracts
            objSubtract = objSubtracts.Add(1, objTargetBodySubtract, 2, objToolBodySubtract, objToolDirectionArray,
                                                          SolidEdgePart.SETargetDesignBodyOption.igCreateMultipleDesignBodiesOnNonManifoldOption,
                                                        SolidEdgePart.SETargetConstructionBodyOption.igCreateMultipleConstructionBodiesOnNonManifoldOption)
            objModel.ExtrudedProtrusions.Item(3).RollToFeature()
            objTargetBodySubtract(0) = objModels.Item(1).Body
            objToolBodySubtract(0) = objModels.Item(2).Body
            objToolBodySubtract(1) = objModels.Item(2).Body
            objToolDirectionArray(0) = SolidEdgePart.SESubtractDirection.igSubtractDirectionNone
            objToolDirectionArray(1) = SolidEdgePart.SESubtractDirection.igSubtractDirectionNone
            objSubtract.Edit(1, objTargetBodySubtract, 1, objToolBodySubtract, objToolDirectionArray,
                                                          SolidEdgePart.SETargetDesignBodyOption.igCreateMultipleDesignBodiesOnNonManifoldOption,
                                                        SolidEdgePart.SETargetConstructionBodyOption.igCreateMultipleConstructionBodiesOnNonManifoldOption)
            objSubtract.RollToFeature()
            objSubtract.GetTargets(nTargets, objTargetBodySubtractOut)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module