跳到主要内容

Selecting SOLIDWORKS Objects for API only

Extruded sketch arc up to the planar surface following the line direction{ width=500 }

This example shows how to create extrude feature in SOLIDWORKS part by selecting the inputs for API purpose only (without graphics selection) preserving current user selections.

To run the macro

  • Download the example file and open it in SOLIDWORKS Extrude Selection Example
  • Select any objects (e.g. Front and Right plane)
  • Debug the macro step-by-step. The macro pre-selects the required objects for the extrude feature directly in the data base (i.e. it is not visible for the user)

As the result the extrude is created with the specified direction up to specified surface and all the original user selections are preserved.

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

If Not swModel Is Nothing Then

Set swSelMgr = swModel.SelectionManager

Dim swProfileSketch As SldWorks.Feature
Set swProfileSketch = swModel.FeatureByName("Profile")

Dim swBoundarySurface As SldWorks.Feature
Set swBoundarySurface = swModel.FeatureByName("Boundary")

Dim swDirectionSketch As SldWorks.Sketch
Set swDirectionSketch = swModel.FeatureByName("Direction").GetSpecificFeature

Dim swDirectionSeg As SldWorks.SketchSegment
Set swDirectionSeg = swDirectionSketch.GetSketchSegments()(0)

swSelMgr.SuspendSelectionList 'preserving current selections

'selecting objects for extrude features (those selections won't be visible in the graphics view)
AddToCurrentSelectionSet swProfileSketch, 0
AddToCurrentSelectionSet swBoundarySurface, 1
AddToCurrentSelectionSet swDirectionSeg, 16

swModel.FeatureManager.FeatureExtrusion2 True, False, False, swEndConditions_e.swEndCondUpToSurface, 0, 0, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False

'resuming the original selections
swSelMgr.ResumeSelectionList

Else
MsgBox "Please open the sample model"
End If

End Sub

Sub AddToCurrentSelectionSet(obj As Object, selMark As Integer)

Dim swSelData As SldWorks.SelectData

Set swSelData = swSelMgr.CreateSelectData

swSelData.Mark = selMark

swSelMgr.AddSelectionListObject obj, swSelData

End Sub