VB.NET: measure the selected cylinder surface?

Hi everyone,

I would like to ask, how to measure the selected cylinder surface.

What I have been doing so far...

I was using the VB.NET standard Addin templete and have added a selection control in the UserPMPage.vb. This selection control was so defined, that it can only select the surfaces. Till this step the code works fine. The code for selection1:

selection1 = group1.AddControl(selection1ID, controlType, "selection", leftAlign, options, "Select a cylinder.")

Then I wrote a Function in SwAddin.vb, in order to measure the selected cylinder surface and return its value. Here is the codes...

Public Function GetDiameter(ByVal selection As Object) As Double

     Dim surfaceDiameter As Double

     Dim sWMeasure As IMeasure

     Dim swModel As IModelDoc2

     Dim swModelDocExt As IModelDocExtension

     Dim status As Boolean

     Dim errors As Integer

     Dim warnings As Integer

     Dim fileName As String

     swModel = iSwApp.ActiveDoc

     swModelDocExt = swModel.Extension

     status = swModelDocExt.SelectByID2("selection", "FACE", 0, 0, 0, False, 0, Nothing, 0)

     sWMeasure = swModelDocExt.CreateMeasure

     Debug.Print(status)

     Debug.Print("Diameter: " & sWMeasure.Diameter)

     Return surfaceDiameter

End Function

The Visual Studio Output: Debug.Print(status) gives me False. And Debug.Print("Diameter: " & sWMeasure.Diameter) gives me -1. It means nothing was selected.

My question: I have transfered the selection to the function then to the SelectByID2. What have I done wrong?

Thanks for your help!

SolidworksApi macros