This example shows how to insert a sheet metal gusset feature and modify its data.
'----------------------------------------------------------------------------
' Preconditions: Open:
' install_dir\samples\tutorial\api\SMGussetAPI.sldprt
'
' Postconditions:
' 1. Five gussets are inserted in the sheet metal.
' 2. Press F5 repeatedly and observe the gusset modifications.
'
' NOTE: Because the model is used elsewhere, do not save changes.
'
---------------------------------------------------------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
System.Runtime.InteropServices
Imports
System
Partial
Class
SolidWorksMacro
Dim
Part As
ModelDoc2
Dim
myFeature As
Feature
Dim
myFeature1 As
Feature
Dim
myFeature2 As
Feature
Dim
myFeature3 As
Feature
Dim
myFeature4 As
Feature
Dim
swFeat As
Feature
Dim
swFeatData As
SMGussetFeatureData
Dim
boolstatus As
Boolean
Sub
main()
Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0538403893476698, 0.0036701308754914, 0.05530817474488,
False, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0177780871801474, -0.0307393226379986, 0.0341128529187245,
True, 0,
Nothing, 0)
' Gusset #1 insertion parameters
'1. bOffset =
True
'2. dOffset =
50 mm
'3. bFlipOffsetSide =
False
'4. profDimType =
0 (indent depth dimensioning scheme)
'5. dIndentDepth, =
10 mm
'6. dLength =
0
'7. bUseAngle,
= False
'8. dHeight =
0
'9
dAngle = 0
'10.
bFlipSides = False
'11.
dWidth = 10 mm
'12.
dThickness = 3 mm
'13.
bDraft = True
'14.
dDraftAngle = 3 degrees
'15.
bInnerCornerFillet, = True
'16.
dInnerCornerFilletRadius = 2 mm
'17.
bOuterCornerFillet = True
'18.
dOuterCornerFilletRadius = 1 mm
'19.
gussetType = 0 (rounded back)
'20 bEdgeFillet =
False
'21.
dEdgeFilletRadius = 0 mm
myFeature = Part.FeatureManager.InsertSheetMetalGussetFeature(True,
0.05, False,
swSheetMetalGussetProfileDimType_e.swSheetMetalGussetProfileDimType_IndentDepth, 0.01, 0, False,
0, 0, True,
0.01, 0.003, True,
3 * 0.0175, True,
0.002, True,
0.001,
swSheetMetalRibGussetType_e.swSheetMetalRibGussetType_Rounded, False,
0)
Part.ClearSelection2(True)
' Gusset #2 insertion parameters
'2. dOffset =
30 mm
'19.
gussetType = 1 (flat back)
'20 bEdgeFillet =
True
'21.
dEdgeFilletRadius = 1 mm
'Select
faces
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0538403893476698, 0.0036701308754914, 0.05530817474488,
False, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0177780871801474, -0.0307393226379986, 0.0341128529187245,
True, 0,
Nothing, 0)
myFeature1 = Part.FeatureManager.InsertSheetMetalGussetFeature(True,
0.03, False,
swSheetMetalGussetProfileDimType_e.swSheetMetalGussetProfileDimType_IndentDepth, 0.01, 0, False,
0, 0, False,
0.01, 0.003, True,
3 * 0.0175, True,
0.002, True,
0.001, swSheetMetalRibGussetType_e.swSheetMetalRibGussetType_Flat, True,
0.001)
Part.ClearSelection2(True)
' Gusset #3 insertion parameters
'2. dOffset =
30 mm
'4. profDimType =
1 (length + height dimensioning scheme)
'5. dIndentDepth, =
0 mm
'6. dLength =
25 mm
'7. bUseAngle,
= False
'8. dHeight =
15 mm
'9
dAngle = 0
'10.
bFlipSides = False
'19.
gussetType = 1 (flat back)
'20 bEdgeFillet =
True
'21.
dEdgeFilletRadius = 1 mm
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0538403893476698, 0.0036701308754914, 0.05530817474488,
False, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0177780871801474, -0.0307393226379986, 0.0341128529187245,
True, 0,
Nothing, 0)
myFeature2 = Part.FeatureManager.InsertSheetMetalGussetFeature(True,
0.03, False,
swSheetMetalGussetProfileDimType_e.swSheetMetalGussetProfileDimType_ProfileDimensions, 0, 0.025, False,
0.015, 0, False,
0.02, 0.003, True,
3 * 0.0175, True,
0.002, True,
0.001,
swSheetMetalRibGussetType_e.swSheetMetalRibGussetType_Flat, True,
0.001)
Part.ClearSelection2(True)
' Gusset #4
'Select
orientation and position references
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0538403893476129, -0.00224553153327633, 0.087801420904043,
True, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0235965800548001, -0.0307393226379986, 0.0897844682415894,
True, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1@Sketch6",
"EXTSKETCHSEGMENT",
-0.00609049483400968, -0.0895139047397037, 0,
True, 0,
Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Point1@Sketch7",
"EXTSKETCHPOINT",
0.0180407947995604, -0.0762728416981986, 0,
True, 0,
Nothing, 0)
myFeature3 = Part.FeatureManager.InsertSheetMetalGussetFeature(True,
0.03, False,
swSheetMetalGussetProfileDimType_e.swSheetMetalGussetProfileDimType_IndentDepth, 0.01, 0, False,
0, 0, False,
0.01, 0.003, True,
3 * 0.0175, True,
0.002, True,
0.001,
swSheetMetalRibGussetType_e.swSheetMetalRibGussetType_Rounded, True,
0.001)
Part.ClearSelection2(True)
' Gusset #5
'Pass
support, orientation, and position references in the insertion method
Dim
arrayOfFaces(0 To
1) As Face2
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0538403893476129, 0.0215261807674665, 0.127524627462805,
True, 0,
Nothing, 0)
arrayOfFaces(0) = Part.SelectionManager.GetSelectedObject6(1,
-1)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
0.0129199133115776, -0.0307393226378281, 0.0673442494212964,
True, 0,
Nothing, 0)
arrayOfFaces(1) = Part.SelectionManager.GetSelectedObject6(1,
-1)
Part.ClearSelection2(True)
Dim
arrayOfRefLines(0) As
Edge
boolstatus = Part.Extension.SelectByID2("",
"EDGE",
-0.0538278103537095, -0.0123578076746185, 0.214291961345026,
True, 0,
Nothing, 0)
arrayOfRefLines(0) = Part.SelectionManager.GetSelectedObject6(1,
-1)
Part.ClearSelection2(True)
Dim
arrayRefPoints(0) As
Vertex
boolstatus = Part.Extension.SelectByID2("",
"VERTEX",
-0.0538403893475499, 0.0116094138400761, 0.200245910723487,
True, 0,
Nothing, 0)
arrayRefPoints(0) = Part.SelectionManager.GetSelectedObject6(1,
-1)
myFeature4 = Part.FeatureManager.InsertSheetMetalGussetFeature2(True,
0.15, False,
1,
swSheetMetalGussetProfileDimType_e.swSheetMetalGussetProfileDimType_IndentDepth, 0.025, True,
0, 60 * 0.0175, True,
0.02, 0.003, True,
3 * 0.0175, True,
0.002, True,
0.001,
swSheetMetalRibGussetType_e.swSheetMetalRibGussetType_Flat, True,
0.001, ((arrayOfFaces)), ((arrayOfRefLines)), ((arrayRefPoints)))
Part.ClearSelection2(True)
Stop
'Six
examples of modifying gusset feature data
'a.
Modify type, draft, and outer corner fillet options for gusset #4
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset4",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
swFeatData.GussetType = 1
'flat back
swFeatData.DraftSideFaces =
False
swFeatData.FilletOuterCorners
= False
'no outer corner fillet
swFeat.ModifyDefinition(swFeatData,
Part, Nothing)
swFeatData.ReleaseSelectionAccess()
Stop
'b.
Modify type and inner corner fillet options for gusset #5
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset5",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
swFeatData.GussetType = 0
'rounded back
swFeatData.FilletInnerCorners
= False
'no inner corner fillet
swFeat.ModifyDefinition(swFeatData,
Part, Nothing)
swFeatData.ReleaseSelectionAccess()
Stop
'c.
Modify legs of gusset #5: select one bend face instead of two flat faces
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset5",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
-0.0532822252084202, -0.0287774016125013, 0.0300897654936705,
False, 0,
Nothing, 0)
Dim
faces(0 To
1) As
Object
Dim
ii As
Integer
For
ii = 0 To 1
faces(ii) = Part.SelectionManager.GetSelectedObject6(ii
+ 1, -1)
Next
ii
Dim
facesVar As
Object
facesVar = faces
swFeatData.SupportingFaces = facesVar
swFeat.ModifyDefinition(swFeatData, Part,
Nothing)
Stop
'd.
Modify orientation reference of gusset #3
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset3",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
boolstatus = Part.Extension.SelectByID2("Line1@Sketch6",
"EXTSKETCHSEGMENT",
-0.00609049483400968, -0.0895139047397037, 0,
True, 0,
Nothing, 0)
Dim
refLine As
Object
refLine = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData.referenceline = refLine
swFeat.ModifyDefinition(swFeatData, Part,
Nothing)
Stop
'e.
Modify legs of gusset #2: gusset moved to bend of edge flange
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset2",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
boolstatus = Part.Extension.SelectByID2("",
"FACE",
0.03831148650454, -0.0327672470662037, 0.147978181958194,
False, 0,
Nothing, 0)
Dim
newBendFace As
Object
Dim
bendfaces(0 To
1) As
Object
Dim
jj As
Integer
For
jj = 0 To 1
bendfaces(jj) = Part.SelectionManager.GetSelectedObject6(jj
+ 1, -1)
Next
jj
newBendFace = bendfaces
swFeatData.SupportingFaces = newBendFace
swFeat.ModifyDefinition(swFeatData, Part,
Nothing)
Stop
'f.
Modify reference position of gusset #3 - 3 mm away from vertex of hexagonal
cut
boolstatus = Part.Extension.SelectByID2("Sheet
Metal Gusset3",
"BODYFEATURE",
0, 0, 0, False,
0, Nothing,
0)
swFeat = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData = swFeat.GetDefinition
swFeatData.AccessSelections(Part,
Nothing)
boolstatus = Part.Extension.SelectByID2("",
"VERTEX",
-0.0538403893475499, -0.0100654290631334, 0.205954465964501,
False, 0,
Nothing, 0)
Dim
refPoint As
Object
refPoint = Part.SelectionManager.GetSelectedObject6(1,
-1)
swFeatData.ReferencePoint = refPoint
swFeat.ModifyDefinition(swFeatData, Part,
Nothing)
End
Sub
Public
swApp As
SldWorks
End
Class