Private Sub Form_Load()
Dim objApp As SolidEdgeFramework.Application
Dim objDoc As SolidEdgePart.PartDocument
Dim objProf1 As SolidEdgePart.Profile
Dim objProf2 As SolidEdgePart.Profile
Dim objProfile(1 To 2) As SolidEdgePart.Profile
Dim objExtProt2 As SolidEdgePart.ExtrudedProtrusion
Dim objExtProt3 As SolidEdgePart.ExtrudedProtrusion
Dim objModel As SolidEdgePart.Model
Dim objLines As SolidEdgeFrameworkSupport.Lines2d
Dim objRelns As SolidEdgeFrameworkSupport.Relations2d
Dim objRefPln1 As SolidEdgePart.RefPlane
Dim objRefPln2 As SolidEdgePart.RefPlane
' 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.06)
Call objLines.AddBy2Points(x1:=0.08, y1:=0.06, x2:=0.064, y2:=0.06)
Call objLines.AddBy2Points(x1:=0.064, y1:=0.06, x2:=0.064, y2:=0.02)
Call objLines.AddBy2Points(x1:=0.064, y1:=0.02, x2:=0.048, y2:=0.02)
Call objLines.AddBy2Points(x1:=0.048, y1:=0.02, x2:=0.048, y2:=0.06)
Call objLines.AddBy2Points(x1:=0.048, y1:=0.06, x2:=0.032, y2:=0.06)
Call objLines.AddBy2Points(x1:=0.032, y1:=0.06, x2:=0.032, y2:=0.02)
Call objLines.AddBy2Points(x1:=0.032, y1:=0.02, x2:=0.016, y2:=0.02)
Call objLines.AddBy2Points(x1:=0.016, y1:=0.02, x2:=0.016, y2:=0.06)
Call objLines.AddBy2Points(x1:=0.016, y1:=0.06, x2:=0, y2:=0.06)
Call objLines.AddBy2Points(x1:=0, y1:=0.06, 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(5), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(5), Index1:=igLineEnd, Object2:=objLines(6), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(6), Index1:=igLineEnd, Object2:=objLines(7), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(7), Index1:=igLineEnd, Object2:=objLines(8), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(8), Index1:=igLineEnd, Object2:=objLines(9), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(9), Index1:=igLineEnd, Object2:=objLines(10), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(10), Index1:=igLineEnd, Object2:=objLines(11), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(11), Index1:=igLineEnd, Object2:=objLines(12), Index2:=igLineStart)
Call objRelns.AddKeypoint(Object1:=objLines(12), Index1:=igLineEnd, Object2:=objLines(1), Index2:=igLineStart)
' Check if the Profile is closed
If objProfile(1).End(ValidationCriteria:=igProfileClosed) <> 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.05)
objProfile(1).Visible = False
' Check the Status of the Base Feature
If objModel.ExtrudedProtrusions(1).Status <> igFeatureOK Then
MsgBox ("Error in the Creation of Base Protrusion Feature object")
End If
'Create another ExtrudedProtrusion Feature
' Create a Circular Profile
Set objRefPln1 = objDoc.RefPlanes.AddParallelByDistance(ParentPlane:=objDoc.RefPlanes(2), _
Distance:=0.05, NormalSide:=igRight)
Set objProf1 = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRefPln1)
Call objProf1.Circles2d.AddByCenterRadius(x:=-0.025, y:=0.035, Radius:=0.005)
' Check if the Profile is closed
If objProf1.End(ValidationCriteria:=igProfileClosed) <> 0 Then
MsgBox ("Profile not closed")
End If
Set objExtProt2 = objModel.ExtrudedProtrusions.AddThroughAll(Profile:=objProf1, _
profileSide:=igLeft, profileplaneSide:=igRight)
objProf1.Visible = False
If objExtProt2.Status <> igFeatureOK Then
MsgBox ("AddThroughAll Method of ExtrudedProtrusions object failed")
End If
'Create 3rd ExtrudedProtrusion Feature object
' Create a Circular Profile
Set objRefPln2 = objDoc.RefPlanes.AddParallelByDistance(ParentPlane:=objDoc.RefPlanes(1), _
Distance:=0, NormalSide:=igRight)
Set objProf2 = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRefPln2)
Call objProf2.Circles2d.AddByCenterRadius(x:=0.25, y:=-0.025, Radius:=0.05)
' Check if the Profile is closed
If objProf2.End(ValidationCriteria:=igProfileClosed) <> 0 Then
MsgBox ("Profile not closed")
End If
Set objExtProt3 = objModel.ExtrudedProtrusions.AddFinite(Profile:=objProf2, _
profileSide:=igLeft, profileplaneSide:=igRight, Depth:=0.1)
objProf2.Visible = False
If objExtProt3.Status <> igFeatureOK Then
MsgBox ("AddFinite Method of ExtrudedProtrusions object failed")
End If
' Reorder the Last Protrusion object before the ThroughAll Protrusion Object
Call objExtProt3.Reorder(TargetFeature:=objModel.ExtrudedProtrusions(1), InsertBefore:=False)
' USER DISPLAY
' Release objects
Set objApp = Nothing
Set objDoc = Nothing
Set objProfile(1) = Nothing
Set objProf1 = Nothing
Set objProf2 = Nothing
Set objExtProt2 = Nothing
Set objExtProt3 = Nothing
Set objLines = Nothing
Set objModel = Nothing
Set objRelns = Nothing
Set objRefPln2 = Nothing
Set objRefPln1 = Nothing
End Sub