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 objExtProt As SolidEdgePart.ExtrudedProtrusion
Dim objModel As SolidEdgePart.Model
Dim objLines As SolidEdgeFrameworkSupport.Lines2d
Dim objRelns As SolidEdgeFrameworkSupport.Relations2d
Dim objRefPln As SolidEdgePart.RefPlane
Dim lngStatus As Long
Dim cProfSide As FeaturePropertyConstants
' 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(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 for the 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.05)
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 Protrusion object with an open profile
'***** ProfileSide set to igLeft and ProfilePlaneSide set to igLeft
' Create an open Profile
Set objRefPln = objDoc.RefPlanes.AddParallelByDistance(ParentPlane:=objDoc.RefPlanes(2), _
Distance:=0, NormalSide:=igRight)
Set objProf = objDoc.ProfileSets.Add.Profiles.Add(pRefPlaneDisp:=objRefPln)
Set objLines = objProf.Lines2d
Call objProf.Lines2d.AddBy2Points(x1:=0, y1:=0.02, x2:=-0.02, y2:=0.02)
Call objProf.Lines2d.AddBy2Points(x1:=-0.02, y1:=0.02, x2:=-0.02, y2:=0.04)
Call objProf.Lines2d.AddBy2Points(x1:=-0.02, y1:=0.04, x2:=0, y2:=0.04)
Set objLines = objProf.Lines2d
Set objRelns = objProf.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)
' Check for Profile validity
lngStatus = objProf.End(ValidationCriteria:=igProfileSingle)
If lngStatus <> 0 Then
MsgBox ("Profile not closed")
End If
' Create the ExtrudedProtrusion feature
Set objExtProt = objModel.ExtrudedProtrusions.AddFinite(Profile:=objProf, _
profileSide:=igLeft, profileplaneSide:= _
igLeft, Depth:=0.1)
objProf.Visible = False
If objExtProt.Status <> igFeatureOK Then
MsgBox ("AddFinite Method with Profileside set to igLeft and ProfilePlaneSide set to igLeft failed")
End If
' Get the Profileside property
cProfSide = objExtProt.profileSide
objExtProt.profileSide = igRight
' USER DISPLAY
' Release objects
Set objApp = Nothing
Set objDoc = Nothing
Set objProfile(1) = Nothing
Set objProfile(2) = Nothing
Set objProf = Nothing
Set objExtProt = Nothing
Set objLines = Nothing
Set objModel = Nothing
Set objRelns = Nothing
Set objRefPln = Nothing
End Sub