AnsweredAssumed Answered

Determine if Sketch Contour or Sketch Region

Question asked by Omid Amir on Oct 14, 2016
Latest reply on Oct 18, 2016 by Omid Amir


I got this macro from solidworks api help of the sketch region


Determine if Sketch Contour or Sketch Region Example (VBA)

This example shows how to determine if the object is a sketch contour or a sketch feature. It also shows how to use the TypeOf keyword to determine the type of object in a given position in an array.




' Preconditions:

'          (1) Part document is open.

'          (2) Part contains a base sketch with multiple sketch regions or sketch

'              contours or both.

'          (3) Extrude1 feature was created using sketch regions or

'              sketch contours of base sketch.


' Postconditions: None



Option Explicit


Dim swApp As SldWorks.SldWorks

Dim Part As SldWorks.PartDoc

Dim boolstatus As Boolean


Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("Extrude1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault)

'Extrude3 is an extruded feature that has a combination of multiple

'contours and multiple regions selected in its base sketch.


Dim Extrudefeature As SldWorks.feature

Dim Extrudefeature_DEF As SldWorks.ExtrudeFeatureData2

Dim SelMgr As SldWorks.SelectionMgr

Dim ContourArray As Variant


Set SelMgr = Part.SelectionManager

Set Extrudefeature = SelMgr.GetSelectedObject5(1)

Set Extrudefeature_DEF = Extrudefeature.GetDefinition

Extrudefeature_DEF.AccessSelections Part, Nothing

    ContourArray = Extrudefeature_DEF.Contours



Dim SR As SketchRegion

Dim SC As SketchContour


ContourArray(0).Select False, 0

Debug.Print TypeName(ContourArray(0))

If TypeOf ContourArray(0) Is SketchRegion Then

    Debug.Print "Object is SketchRegion"

    Set SR = ContourArray(0)


    Debug.Print "Object is SketchContour"

    Set SC = ContourArray(0)

End If

End Sub



first question :  Are we able to select variable of varient  ?? ( select that in red line)

second question : when the macro arrives to " typeof  " ( the blue line ) gives Error 13 ( type mismatch) . WHY ?????

thanks .