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 objConstructions As SolidEdgePart.Constructions = Nothing
        Dim objSurfaceByBoundaries As SolidEdgePart.SurfaceByBoundaries = Nothing
        Dim objSurfaceByBoundary As SolidEdgePart.SurfaceByBoundary = Nothing
        Dim objProfile As SolidEdgePart.Profile = Nothing
        Dim objCurveBody As SolidEdgeGeometry.CurveBody = Nothing
        Dim objCurves As SolidEdgeGeometry.Curves = Nothing
        Dim objSketchs As SolidEdgePart.Sketchs = Nothing
        Dim objSketch As SolidEdgePart.Sketch = Nothing
        Dim arrInEdges(3) As Object
        Dim arrGuideWire(1) As Object
        Dim arrOutGuide(0) As Object
        Dim nGuideWire As Long
        Dim nPatch As SolidEdgePart.SurfaceByBoundaryPatchTopology
        Dim nFill As SolidEdgePart.SurfaceByBoundaryFillPreference
        Dim nSmoothness As SolidEdgePart.SurfaceByBoundaryInternalSmoothness
        Try
            OleMessageFilter.Register()
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            objPartDocument = objApplication.ActiveDocument
            ' get the constructions collection
            objConstructions = objPartDocument.Constructions
            objSurfaceByBoundaries = objConstructions.SurfaceByBoundaries
            objSketchs = objPartDocument.Sketches
            ' input edges
            objSketch = objSketchs.Item(1)
            objProfile = objSketch.Profile
            objCurveBody = objProfile.CurveBody
            objCurves = objCurveBody.Curves
            ' get input edges to create bounded surface
            arrInEdges(0) = objCurves.Item(1)
            arrInEdges(1) = objCurves.Item(2)
            arrInEdges(2) = objCurves.Item(3)
            arrInEdges(3) = objCurves.Item(4)
            ' guide wires
            arrGuideWire(0) = objPartDocument.Sketches.Item(2).Profile.CurveBody.Curves.Item(1)
            arrGuideWire(1) = objPartDocument.Sketches.Item(3).Profile.CurveBody.Curves.Item(1)
            ' Create the SurfaceByBoundary
            objSurfaceByBoundary = objSurfaceByBoundaries.AddEx(4, arrInEdges, 0, Nothing, False, 2, arrGuideWire,
                                                                SolidEdgePart.SurfaceByBoundaryPatchTopology.igSurfaceByBoundaryMultiple,
                                                                SolidEdgePart.SurfaceByBoundaryFillPreference.igSurfaceByBoundaryFillSmooth,
                                                                SolidEdgePart.SurfaceByBoundaryInternalSmoothness.igSurfaceByBoundarySharp)
            objSurfaceByBoundary.get_SBBOptions(nFill, nSmoothness, nPatch, nGuideWire, arrOutGuide)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module