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
        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)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module