AnsweredAssumed Answered

VB.NET: measure the selected cylinder surface?

Question asked by Ross John on Apr 6, 2017
Latest reply on Apr 6, 2017 by Amen Allah Jlili

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("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!