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 objModelBody As SolidEdgeGeometry.Body = Nothing
Dim objFaces As SolidEdgeGeometry.Faces = Nothing
Dim objFaceOrBody(1) As Object
Dim NumBodies As Integer
Dim NumHoles As Integer
Dim NumFaces As Integer
Dim objRecognizedHoles(9) As Object
Try
OleMessageFilter.Register()
objApplication = Marshal.GetActiveObject("SolidEdge.Application")
objPartDocument = objApplication.ActiveDocument
objPartDocument.ModelingMode = SolidEdgePart.ModelingModeConstants.seModelingModeSynchronous
objModels = objPartDocument.Models
objModel = objModels.Item(1)
objModelBody = objModel.Body
'We can have three ways of recognition
'1 - Body Base Recognition
objFaceOrBody(0) = objModelBody
NumBodies = 1
objModel.Holes.RecognizeAndCreateHoleGroups(NumBodies, objFaceOrBody, NumHoles, objRecognizedHoles)
'2 - Active Working Body Case
objModel.Holes.RecognizeAndCreateHoleGroups(0, objFaceOrBody, NumHoles, objRecognizedHoles)
'3 - Face Base Recognition
objFaces = objModelBody.Faces(SolidEdgeGeometry.FeatureTopologyQueryTypeConstants.igQueryAll)
objFaceOrBody(0) = objFaces.Item(5)
objFaceOrBody(1) = objFaces.Item(6)
NumFaces = 2
objModel.Holes.RecognizeAndCreateHoleGroups(NumFaces, objFaceOrBody, NumHoles, objRecognizedHoles)
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
OleMessageFilter.Revoke()
End Try
End Sub
End Module