Create Linear Pattern Example (VB.NET)
This example shows how to create a linear-pattern feature using preselected
direction features, preselected pattern seed features, and variable spacing
between pattern instances.
'----------------------------------------------------------------------------
' Preconditions: Open install_dir\samples\tutorial\api\varyinstance.sldprt
'
' Postconditions: A linear-pattern feature is created.
'
' NOTE: Because the model is used elsewhere, do not
' save any changes when closing it.
'----------------------------------------------------------------------------
Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
Imports System.Runtime.InteropServices
Imports System
Partial Class SolidWorksMacro
Public Sub Main()
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swFeatureManager As FeatureManager
Dim boolstatus As Boolean
Dim status As Integer
swModel = SwApp.ActivateDoc3("varyInstance.sldprt", False, swRebuildOnActivation_e.swUserDecision, status)
swModelDocExt = swModel.Extension
swModel.ClearSelection2(True)
boolstatus = swModelDocExt.SelectByID2("Cut-Extrude1", "BODYFEATURE", 0.00774979914490359, 0.00364333445241982, -0.0354413541641527, False, 4, Nothing, 0)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to select a seed feature") : GoTo LastLine
boolstatus = swModelDocExt.SelectByID2("", "EDGE", -0.0000599771410065841, 0.0688469352660661, -0.0402202172175059, True, 1, Nothing, 0)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to select an edge for direction 1") : GoTo LastLine
boolstatus = swModelDocExt.SelectByID2("Fillet1", "BODYFEATURE", 0.000829480066556698, 0.0045558314310199, -0.0352439589983078, True, 4, Nothing, 0)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to select a seed feature") : GoTo LastLine
boolstatus = swModelDocExt.SelectByID2("", "EDGE", -0.00000473572225700991, -0.0401494819566892, -0.0490816550993962, True, 2, Nothing, 0)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to select an edge for direction 2") : GoTo LastLine
swFeatureManager = swModel.FeatureManager
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("D1@Sketch2@varyInstance.SLDPRT", 2, 1, 0, 0.003)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to dimension D1@Sketch2@varyInstance.SLDPRT in direction 1") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("D1@Cut-Extrude1@varyInstance.SLDPRT", 2, 1, 0, -0.001)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to dimension D1@Cut-Extrude1@varyInstance.SLDPRT in direction 1") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("Space Increment", 2, 2, 0, 0.01)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to direction 1 spacing") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("D1@Sketch2@varyInstance.SLDPRT", 2, 1, 1, 0.004)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to dimension D1@Sketch2@varyInstance.SLDPRT in direction 2") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("D1@Fillet1@varyInstance.SLDPRT", 2, 1, 1, 0.0001)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to dimension D1@Fillet1@varyInstance.SLDPRT in direction 2") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceIncrement("Space Increment", 2, 2, 1, 0.015)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to add an increment value to direction 2 spacing") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceOverride("D1@Sketch2@varyInstance.SLDPRT", 2, 1, -1, 4, 1, 0.05)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to override value of dimension D1@Sketch2@varyInstance.SLDPRT at instance (4, 1)") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceOverride("D1@Fillet1@varyInstance.SLDPRT", 2, 1, -1, 4, 1, 0.005)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to override value of dimension D1@Fillet1@varyInstance.SLDPRT at instance (4, 1)") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceOverride("D1@Fillet1@varyInstance.SLDPRT", 2, 1, -1, 2, 3, 0.004)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to override value of dimension D1@Fillet1@varyInstance.SLDPRT at instance (2, 3)") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceOverride("Space Increment", 2, 2, 0, 4, 1, 0.13)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to override value of direction 1 spacing increment at instance (4, 1)") : GoTo LastLine
boolstatus = swFeatureManager.InsertVaryInstanceOverride("Space Increment", 2, 2, 1, 2, 3, 0.15)
If boolstatus = False Then ErrorMsg(SwApp, "Failed to override value of direction 2 spacing increment at instance (2, 3)") : GoTo LastLine
Dim swFeature As Feature
swFeature = swFeatureManager.FeatureLinearPattern3(5, 0.02, 4, 0.025, False, True, "NULL", "NULL", False, True)
If swFeature Is Nothing Then ErrorMsg(SwApp, "Failed to create a vary instance linear pattern") : GoTo LastLine
LastLine:
End Sub
Function ErrorMsg(ByVal SwApp As Object, ByVal Message As String) As String
SwApp.SendMsgToUser2(Message, 0, 0)
SwApp.RecordLine("'*** WARNING - General")
SwApp.RecordLine("'*** " & Message)
SwApp.RecordLine("")
Return ""
End Function
''' <summary>
''' The SldWorks swApp variable is pre-assigned for you.
''' </summary>
Public swApp As SldWorks
End Class