Private Sub Form_Load()
Dim objApp As SolidEdgeFramework.Application
Dim objDoc As SolidEdgePart.PartDocument
Dim objProf As SolidEdgePart.Profile
Dim objProfile(1 To 2) As SolidEdgePart.Profile
Dim objExtCut As SolidEdgePart.ExtrudedCutout
Dim objModel As SolidEdgePart.Model
Dim objLines As SolidEdgeFrameworkSupport.Lines2d
Dim objLines1 As SolidEdgeFrameworkSupport.Lines2d
Dim objRelns As SolidEdgeFrameworkSupport.Relations2d
Dim objRelns1 As SolidEdgeFrameworkSupport.Relations2d
Dim objRefPln As SolidEdgePart.RefPlane
Dim objProfCollection As SolidEdgePart.Profiles
Dim objSetProfCollection As SolidEdgePart.Profiles
Dim objProfArray(1 To 2) As SolidEdgePart.Profile
Dim objSetProfArray(1 To 3) As SolidEdgePart.Profile
Dim objGetProfArray(1 To 3) As SolidEdgePart.Profile
Dim objSetProf As SolidEdgePart.Profile
Dim objSetProfile(1 To 3) As SolidEdgePart.Profile
Dim lngStatus As Long
Dim lngNoOfProfiles As Long
Dim i As Integer
' Report errors
Const PI = 3.14159265358979
' Create/get the application with specific settings
On Error Resume Next
Set objApp = GetObject(, "SolidEdge.Application")
If Err Then
Err.Clear
Set objApp = CreateObject("SolidEdge.Application")
Set objDoc = objApp.Documents.Add("SolidEdge.PartDocument")
objApp.Visible = True
Else
Set objDoc = objApp.ActiveDocument
End If
'Draw the Base Profile
Set objProfile(1) = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objDoc.RefPlanes(3))
Set objLines = objProfile(1).Lines2d
Call objLines.AddBy2Points(x1:=0, y1:=0, x2:=0.08, y2:=0)
Call objLines.AddBy2Points(x1:=0.08, y1:=0, x2:=0.08, y2:=0.08)
Call objLines.AddBy2Points(x1:=0.08, y1:=0.08, x2:=0, y2:=0.08)
Call objLines.AddBy2Points(x1:=0, y1:=0.08, x2:=0, y2:=0)
' Define Relations among the Line objects to make the Profile closed
Set objRelns = objProfile(1).Relations2d
Call objRelns.AddKeypoint(Object1:=objLines(1), Index1:=igLineEnd, Object2:=objLines(2), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(2), Index1:=igLineEnd, Object2:=objLines(3), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(3), Index1:=igLineEnd, Object2:=objLines(4), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(4), Index1:=igLineEnd, Object2:=objLines(1), Index2:=igLineStart)
' Check for Profile validity
lngStatus = objProfile(1).End(ValidationCriteria:=igProfileClosed)
If lngStatus <> 0 Then
MsgBox ("Profile not closed")
End If
'Create the Base Extruded Protrusion Feature
Set objModel = objDoc.Models.AddFiniteExtrudedProtrusion(NumberOfProfiles:=1, _
ProfileArray:=objProfile, ProfilePlaneSide:= _
igRight, ExtrusionDistance:=0.1)
objProfile(1).Visible = False
' Check the status of Base Feature
If objModel.ExtrudedProtrusions(1).Status <> igFeatureOK Then
MsgBox ("Error in the Creation of Base Protrusion Feature object")
End If
'***** Create a Cutout object with 2 closed profiles
'***** ProfileSide set to igLeft and ProfilePlaneSide set to igRight
' Create a Circular Profile
Set objRefPln = objDoc.RefPlanes.AddParallelByDistance(ParentPlane:=objDoc.RefPlanes(2), _
Distance:=0.05, NormalSide:=igRight)
Set objProf = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRefPln)
Call objProf.Circles2d.AddByCenterRadius(x:=-0.02, y:=0.05, Radius:=0.005)
Set objLines1 = objProf.Lines2d
Call objLines1.AddBy2Points(x1:=-0.015, y1:=0.015, x2:=-0.015, y2:=0.02)
Call objLines1.AddBy2Points(x1:=-0.015, y1:=0.02, x2:=-0.02, y2:=0.02)
Call objLines1.AddBy2Points(x1:=-0.02, y1:=0.02, x2:=-0.02, y2:=0.015)
Call objLines1.AddBy2Points(x1:=-0.02, y1:=0.015, x2:=-0.015, y2:=0.015)
' Define Relations among the Line objects to make the Profile closed
Set objRelns1 = objProf.Relations2d
Call objRelns1.AddKeypoint(Object1:=objLines1(1), Index1:=igLineEnd, Object2:=objLines1(2), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(2), Index1:=igLineEnd, Object2:=objLines1(3), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(3), Index1:=igLineEnd, Object2:=objLines1(4), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(4), Index1:=igLineEnd, Object2:=objLines1(1), Index2:=igLineStart)
' Check if the Profile is closed
lngStatus = objProf.End(ValidationCriteria:=igProfileClosed)
If lngStatus <> 0 Then
MsgBox ("Profile not closed")
End If
'get profiles collection into an array
Set objProfCollection = objProf.Parent.Profiles
For i = 1 To objProfCollection.Count
Set objProfArray(i) = objProfCollection(i)
objProfArray(i).Visible = False
Next i
'Create the ExtrudedCutout feature
Set objExtCut = objModel.ExtrudedCutouts.AddFiniteMulti _
(NumberOfProfiles:=2, ProfileArray:=objProfArray, _
ProfilePlaneSide:=igRight, Depth:=0.1)
If objExtCut.Status <> igFeatureOK Then
MsgBox ("AddFiniteMulti Method with ProfileSide set to igLeft and ProfilePlaneSide set to igRight failed")
End If
' Create a Circular Profile
Set objRefPln = objDoc.RefPlanes.AddParallelByDistance(ParentPlane:=objDoc.RefPlanes(2), _
Distance:=0.01, NormalSide:=igRight)
Set objSetProf = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRefPln)
Call objSetProf.Circles2d.AddByCenterRadius(x:=-0.05, y:=0.05, Radius:=0.005)
Call objSetProf.Circles2d.AddByCenterRadius(x:=-0.07, y:=0.07, Radius:=0.005)
Set objLines1 = objSetProf.Lines2d
Call objLines1.AddBy2Points(x1:=-0.015, y1:=0.015, x2:=-0.015, y2:=0.03)
Call objLines1.AddBy2Points(x1:=-0.015, y1:=0.03, x2:=-0.03, y2:=0.03)
Call objLines1.AddBy2Points(x1:=-0.03, y1:=0.03, x2:=-0.03, y2:=0.015)
Call objLines1.AddBy2Points(x1:=-0.03, y1:=0.015, x2:=-0.015, y2:=0.015)
' Define Relations among the Line objects to make the Profile closed
Set objRelns1 = objProf.Relations2d
Call objRelns1.AddKeypoint(Object1:=objLines1(1), Index1:=igLineEnd, Object2:=objLines1(2), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(2), Index1:=igLineEnd, Object2:=objLines1(3), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(3), Index1:=igLineEnd, Object2:=objLines1(4), Index2:=igLineStart)
Call objRelns1.AddKeypoint(Object1:=objLines1(4), Index1:=igLineEnd, Object2:=objLines1(1), Index2:=igLineStart)
' Check if the Profile is closed
lngStatus = objSetProf.End(ValidationCriteria:=igProfileClosed)
If lngStatus <> 0 Then
MsgBox ("Profile not closed")
End If
'get profiles collection into an array
Set objSetProfCollection = objSetProf.Parent.Profiles
For i = 1 To objSetProfCollection.Count
Set objSetProfArray(i) = objSetProfCollection(i)
objSetProfArray(i).Visible = False
Next i
'set profiles
Call objExtCut.SetProfiles(NumProfiles:=3, Profiles:=objSetProfArray)
' USER DISPLAY
' Release objects
Set objApp = Nothing
Set objDoc = Nothing
Set objProf = Nothing
Set objProfile(1) = Nothing
Set objProfile(2) = Nothing
Set objExtCut = Nothing
Set objModel = Nothing
Set objLines = Nothing
Set objLines1 = Nothing
Set objRelns = Nothing
Set objRelns1 = Nothing
Set objRefPln = Nothing
Set objProfCollection = Nothing
Set objProfArray(1) = Nothing
Set objProfArray(2) = Nothing
Set objGetProfArray(1) = Nothing
Set objGetProfArray(2) = Nothing
Set objGetProfArray(3) = Nothing
Set objSetProfCollection = Nothing
Set objSetProfArray(1) = Nothing
Set objSetProfArray(2) = Nothing
Set objSetProfArray(3) = Nothing
Set objSetProf = Nothing
Set objSetProfile(1) = Nothing
Set objSetProfile(2) = Nothing
Set objSetProfile(3) = Nothing
End Sub