Hide Table of Contents

Create PropertyManager Page and Selectable Triad Manipulator Example (VBA)

This example shows how to create a PropertyManager page and a triad manipulator that can be selected.

 

Main module

 

Dim swApp                   As SldWorks.SldWorks

Dim swPart                  As SldWorks.PartDoc

 

' Application's PropertyManager page

Dim swPage                  As PropMgr

 

Sub main()

 

    Dim nRetVal             As Long

    Set swApp = CreateObject("SldWorks.Application")

 

    ' Make sure that there is a model open to which to add the

    ' PropertyManager page; if there is no model, then get rid

    ' of references to any previous pages

    If swApp.ActiveDoc Is Nothing Then

        Set swPart = swApp.NewPart

        Set swPage = Nothing

    End If

    

    ' If there is no PropertyManager page, then create a new one and show it,

    ' or if there is a PropertyManager page, then show it

    If swPage Is Nothing Then

        Set swPage = New PropMgr

        swPage.Show 'Display it

    Else

        swPage.Show

    End If

End Sub

 

PropMgr class module

 

' This class defines the PropertyManager page and its controls

 

Option Explicit

 

' PropertyManager page

Private m_Page                  As SldWorks.PropertyManagerPage2

 

' Two groups will contain the controls

Private m_Group                As SldWorks.PropertyManagerPageGroup

 

' Controls on the page

Private m_Text                 As SldWorks.PropertyManagerPageTextbox

Private m_Check                As SldWorks.PropertyManagerPageCheckbox

Private m_Selection            As SldWorks.PropertyManagerPageSelectionbox

Private m_ClearSelection       As SldWorks.PropertyManagerPageCheckbox

Private m_Button               As SldWorks.PropertyManagerPageButton

Private m_Button1              As SldWorks.PropertyManagerPageButton

Private m_Label                As SldWorks.PropertyManagerPageLabel

 

' To determine whether the second group is active

Private m_bGroup               As Boolean

 

' IDs for all of the controls

Const ID_GROUP                 As Long = 1

Const ID_SELECTION             As Long = 2

Const ID_BUTTON                As Long = 3

Const ID_BUTTON1               As Long = 4

Const ID_LABEL                 As Long = 5

 

' Generate the PropertyManager page and its controls

    Dim swManip                As SldWorks.Manipulator

    Dim swDrag                 As SldWorks.DragArrowManipulator

    Dim swTriad                As SldWorks.TriadManipulator

    

    Dim swDragHdlr             As swDragManipHdlr

    

    Public swFace              As SldWorks.Face2

 

' Create the page and place all of the controls on it

Private Sub Layout()

    Dim swApp           As SldWorks.SldWorks

 

    ' Objects needed to create the PropertyManager page

    Dim pageHdlr        As New PropMgrHdlr

    Dim swPage          As SldWorks.PropertyManagerPage2

    Dim swControl       As SldWorks.PropertyManagerPageControl

    

    Dim title           As String

    Dim message         As String

    Dim caption         As String

    Dim tip             As String

    Dim listItems(3)    As String

    

    Dim buttonTypes     As Long

    Dim Id              As Long

    Dim options         As Long

    Dim filterArray(2)  As Long

    Dim errors          As Long

    

    Dim controlType     As Integer

    Dim alignment       As Integer

    

    Dim bRet            As Boolean

    

    ' Access SolidWorks

    Set swApp = GetObject(, "SldWorks.Application")

    

    ' Initialize the Property page handler

    ' Pass a reference to this PropertyManager page

    pageHdlr.Init Me

    

    ' Set some variables for the PropertyManager page

    title = "Sample PropertyManager"

    buttonTypes = swPropertyManager_OkayButton + swPropertyManager_CancelButton

   

   ' Create the PropertyManager page

    Set m_Page = swApp.CreatePropertyManagerPage(title, buttonTypes, pageHdlr, errors)

    

       

    ' Make sure that the PropertyManger page was correctly created

    If errors = swPropertyManagerPage_Okay Then

        

        ' Initial setup of the dialog

        message = "Information message that can be displayed as necessary."

        m_Page.SetMessage message, swImportantMessageBox

 

        ' Begin adding the required controls to the dialog

        'GROUP Box ------------------------------------------------------------------

        Id = ID_GROUP

        caption = "Group &1"

        options = swGroupBoxOptions_Visible + swGroupBoxOptions_Checkbox + swGroupBoxOptions_Expanded + swGroupBoxOptions_Checked

        m_bGroup = False  ' Mark that the second group is disabled

        Set m_Group = m_Page.AddGroupBox(Id, caption, options)

        If Not m_Group Is Nothing Then

            ' Place these controls in the second group

            'CONTROL Label --------------------------------------------------------------------

            Id = ID_LABEL

            controlType = swControlType_Label

            caption = "Selection box"

            alignment = swControlAlign_Indent

            options = swControlOptions_Visible + swControlOptions_Enabled

 

            tip = "Label"

            Set swControl = m_Group.AddControl(Id, controlType, caption, alignment, options, tip)

            If Not swControl Is Nothing Then

                Set m_Label = swControl

            End If

            'CONTROL Selection box  ------------------------------------------------------------------

            Id = ID_SELECTION

 

            controlType = swControlType_Selectionbox

            caption = "Sample selection box"

            alignment = swControlAlign_Indent

            options = swControlOptions_Visible + swControlOptions_Enabled

            tip = "Select faces and vertices"

            Set swControl = m_Group.AddControl(Id, controlType, caption, alignment, options, tip)

            If Not swControl Is Nothing Then

                Set m_Selection = swControl

                

                filterArray(0) = swSelFACES

                filterArray(1) = swSelVERTICES

                filterArray(2) = swSelMANIPULATORS

                m_Selection.SetSelectionFilters (filterArray)

                m_Selection.AllowMultipleSelectOfSameEntity = True

                                

                m_Selection.Height = 50

                m_Selection.mark = 1

            End If

            'CONTROL Button --------------------------------------------------------------------

            Id = ID_BUTTON

            controlType = swControlType_Button

            caption = "Create triad manipulator"

            alignment = swControlAlign_Indent

            options = swControlOptions_Visible + swControlOptions_Enabled

            tip = "Button"

            Set swControl = m_Group.AddControl(Id, controlType, caption, alignment, options, tip)

            If Not swControl Is Nothing Then

                Set m_Button = swControl

            End If

            

            'CONTROL Button --------------------------------------------------------------------

            Id = ID_BUTTON1

            controlType = swControlType_Button

            caption = "Select Entity"

 

            alignment = swControlAlign_Indent

            options = swControlOptions_Visible + swControlOptions_Enabled

            tip = "Button"

            Set swControl = m_Group.AddControl(Id, controlType, caption, alignment, options, tip)

            If Not swControl Is Nothing Then

                Set m_Button1 = swControl

            End If

            

        End If

    Else

        swApp.SendMsgToUser2 "There was an error creating the PropertyManager page.", swMbInformation, swMbOk

    End If

End Sub

 

' Display the Property Manager page

Public Sub Show()

    Dim nRetVal             As Long

    Dim bRet                As Boolean

    

    nRetVal = m_Page.Show

    

    bRet = m_Page.SetMessage("Some message string.", swAnnotationVisible)

    Debug.Assert bRet

End Sub

 

Private Sub Class_Initialize()

    Layout

End Sub

 

Private Sub Class_Terminate()

    '

End Sub

  

' Callback called by PropertyManagerPage2Handler_OnButtonPress

' in the PropertyManager page handler class

' This implementation just clears the selections

Public Sub OnButtonPressed(ByVal Id As Long)

    Dim swApp                       As SldWorks.SldWorks

    Dim swMathUtil                  As SldWorks.MathUtility

    Dim swModel                     As SldWorks.ModelDoc2

    Dim swModViewMgr                As SldWorks.ModelViewManager

    Dim swSelMgr                    As SldWorks.SelectionMgr

    Dim vPickPt                     As Variant

    Dim swPickPt                    As SldWorks.MathPoint

    Dim origin                      As SldWorks.MathPoint

    Dim pt                          As Variant

    Dim obj                         As Object

    Dim boolstatus                  As Boolean

    Dim nVector(2)                  As Double

    Dim vVector                     As Variant

    Dim swN                         As SldWorks.MathVector

    

    Set swDragHdlr = New swDragManipHdlr

    Set swApp = Application.SldWorks

    Set swMathUtil = swApp.GetMathUtility

    Set swModel = swApp.ActiveDoc

    

    If Id = ID_BUTTON1 Then

         Set swSelMgr = swModel.SelectionManager

 

         Id = swSelMgr.GetSelectedObjectCount2(-1)

         Set obj = swSelMgr.GetSelectedObject6(1, -1)

         If obj Is Nothing Then

            swApp.SendMsgToUser2 "Not selected.", swMbWarning, swMbOk

         Else

            swApp.SendMsgToUser2 "Selected, ID = " & swSelMgr.GetSelectedObjectType2(1), swMbWarning, swMbOk

            Debug.Print "SelType      = " & swSelMgr.GetSelectedObjectType2(1)

         End If

         Exit Sub

    End If

  

    boolstatus = swModel.Extension.SelectByID2("", "FACE", 0.02011923036576, 0.07115313043471, 0.04505361318712, False, 0, Nothing, 0)

    Set swSelMgr = swModel.SelectionManager

    Set swFace = swSelMgr.GetSelectedObject6(1, -1)

    nVector(0) = 0:     nVector(1) = 1:     nVector(2) = 0

    vVector = nVector

    

    Set swN = swMathUtil.CreateVector((vVector))

    vPickPt = swSelMgr.GetSelectionPoint(1)

    Set swPickPt = swMathUtil.CreatePoint((vPickPt))

    Set swModViewMgr = swModel.ModelViewManager

    

     If Id = ID_BUTTON Then

        Set swManip = swModViewMgr.CreateManipulator(SwManipulatorType_e.swTriadManipulator, swDragHdlr)

        Set swTriad = swManip.GetSpecificManipulator

        swTriad.origin = swPickPt

        swManip.Show swModel

        swManip.Selectable = True

        

        Set origin = swTriad.origin

        pt = origin.ArrayData

        Stop

        'swManip.Remove

   End If

   

 End Sub

 

PropMgrHdlr

 

' This file is the implementation of the PropertyManagerPage2Handler5

' interface

' Each of these methods is called when its corresponding

' notification is fired from within SolidWorks

' It is customary to have notifications use callback

' functions defined within the main application to perform

' any desired actions

 

Option Explicit

 

Implements PropertyManagerPage2Handler5

' Variable that provides access to the PropertyManager page

Dim m_PageObj                   As PropMgr

 

' This method is called to initialize the handler

Public Sub Init(pageObj As PropMgr)

    Set m_PageObj = pageObj

End Sub

 

Private Sub Class_Initialize()

    Debug.Print "Class_Initialize"

End Sub

 

Private Sub Class_Terminate()

    Debug.Print "Class_Terminate"

End Sub

'******************************************************************************'

'These methods are the implementations of the SolidWorks notifications

 

Private Sub PropertyManagerPage2Handler5_AfterClose()

    Debug.Print "PropertyManagerPage2Handler5_AfterClose"

End Sub

 

Private Function PropertyManagerPage2Handler5_OnActiveXControlCreated(ByVal Id As Long, ByVal Status As Boolean) As Long

    Debug.Print "PropertyManagerPage2Handler5_OnActiveXControlCreated"

End Function

 

Private Sub PropertyManagerPage2Handler5_OnButtonPress(ByVal Id As Long)

    m_PageObj.OnButtonPressed (Id)

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnCancel()

    Debug.Print "PropertyManagerPage2Handler5_OnCancel"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnCheckboxCheck(ByVal Id As Long, ByVal Checked As Boolean)

    Debug.Print "PropertyManagerPage2Handler5_OnCheckboxCheck"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnClose(ByVal Reason As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnClose"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnComboboxEditChanged(ByVal Id As Long, ByVal Text As String)

    Debug.Print "PropertyManagerPage2Handler5_OnComboboxEditChanged"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnComboboxSelectionChanged(ByVal Id As Long, ByVal Item As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnComboboxSelectionChanged"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnGroupCheck(ByVal Id As Long, ByVal Checked As Boolean)

    Debug.Print "PropertyManagerPage2Handler5_OnGroupCheck"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnGroupExpand(ByVal Id As Long, ByVal Expanded As Boolean)

    Debug.Print "PropertyManagerPage2Handler5_OnGroupExpand"

End Sub

 

Private Function PropertyManagerPage2Handler5_OnHelp() As Boolean

    Debug.Print "PropertyManagerPage2Handler5_OnHelp"

End Function

 

Private Sub PropertyManagerPage2Handler5_OnListboxSelectionChanged(ByVal Id As Long, ByVal Item As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnListboxSelectionChanged"

End Sub

 

Private Function PropertyManagerPage2Handler5_OnNextPage() As Boolean

    Debug.Print "PropertyManagerPage2Handler5_OnNextPage"

End Function

 

Private Sub PropertyManagerPage2Handler5_OnNumberboxChanged(ByVal Id As Long, ByVal Value As Double)

    Debug.Print "PropertyManagerPage2Handler5_OnNumberboxChanged"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnOK()

    Debug.Print "PropertyManagerPage2Handler5_OnOK"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnOptionCheck(ByVal Id As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnOptionCheck"

End Sub

 

Private Function PropertyManagerPage2Handler5_OnPreviousPage() As Boolean

    Debug.Print "PropertyManagerPage2Handler5_OnPreviousPage"

End Function

 

Private Sub PropertyManagerPage2Handler5_OnSelectionboxCalloutCreated(ByVal Id As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnSelectionboxCalloutCreated"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnSelectionboxCalloutDestroyed(ByVal Id As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnSelectionboxCalloutDestroyed"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnSelectionboxFocusChanged(ByVal Id As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnSelectionboxFocusChanged"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnSelectionboxListChanged(ByVal Id As Long, ByVal Count As Long)

    Debug.Print "PropertyManagerPage2Handler5_OnSelectionboxListChanged"

End Sub

 

Private Sub PropertyManagerPage2Handler5_OnTextboxChanged(ByVal Id As Long, ByVal Text As String)

    Debug.Print "PropertyManagerPage2Handler5_OnTextboxChanged"

End Sub

 

swDragManipHdlr

 

Option Explicit

 

Implements SwManipulatorHandler2

 

Private Sub Class_Initialize()

End Sub

 

Private Function SwManipulatorHandler2_OnDelete(ByVal pManipulator As Object) As Boolean

    Debug.Print "SwManipulatorHandler2_OnDelete"

End Function

 

Private Sub SwManipulatorHandler2_OnDirectionFlipped(ByVal pManipulator As Object)

    Debug.Assert False

    Debug.Print "SwManipulatorHandler2_OnDirectionFlipped"

End Sub

 

Private Function SwManipulatorHandler2_OnDoubleValueChanged(ByVal pManipulator As Object, ByVal Id As Long, Value As Double) As Boolean

    'Debug.Assert False

    Debug.Print "SwManipulatorHandler2_OnDoubleValueChanged"

    Debug.Print "  ID               = " & Id

    Debug.Print "  Value            = " & Value

End Function

 

Private Sub SwManipulatorHandler2_OnEndDrag(ByVal pManipulator As Object, ByVal handleIndex As Long)

    Debug.Print "SwManipulatorHandler2_OnEndDrag"

    Debug.Print "  HandleIndex      = " & handleIndex

    

    If (handleIndex = swDragArrowManipulatorOptions_e.swDragArrowManipulatorDirection1) Then

        Debug.Print " Forward"

    Else

        Debug.Print " Backward"

    End If

End Sub

 

Private Sub SwManipulatorHandler2_OnEndNoDrag(ByVal pManipulator As Object, ByVal handleIndex As Long)

    Debug.Print "SwManipulatorHandler2_OnEndNoDrag"

    Debug.Print "  HandleIndex      = " & handleIndex

End Sub

 

Private Function SwManipulatorHandler2_OnHandleLmbSelected(ByVal pManipulator As Object) As Boolean

End Function

 

Private Sub SwManipulatorHandler2_OnHandleRmbSelected(ByVal pManipulator As Object, ByVal handleIndex As Long)

    Debug.Print "SwManipulatorHandler2_OnHandleRmbSelected"

    Debug.Print "  handleIndex      = " & handleIndex

End Sub

 

Private Sub SwManipulatorHandler2_OnHandleSelected(ByVal pManipulator As Object, ByVal handleIndex As Long)  

    Debug.Print "SwManipulatorHandler2_OnHandleSelected"

    Debug.Print "  HandleIndex      = " & handleIndex

End Sub

 

Private Sub SwManipulatorHandler2_OnItemSetFocus(ByVal pManipulator As Object, ByVal Id As Long)

    Debug.Assert False

    Debug.Print "SwManipulatorHandler2_OnItemSetFocus"

    Debug.Print "  ID               = " & Id

End Sub

 

Private Function SwManipulatorHandler2_OnStringValueChanged(ByVal pManipulator As Object, ByVal Id As Long, Value As String) As Boolean

    Debug.Assert False

    Debug.Print "SwManipulatorHandler2_OnStringValueChanged"

    Debug.Print "  ID               = " & Id

    Debug.Print "  Value            = " & Value

End Function

 

Private Sub SwManipulatorHandler2_OnUpdateDrag(ByVal pManipulator As Object, ByVal handleIndex As Long, ByVal newPosMathPt As Object)

    Debug.Print "SwManipulatorHandler2_OnUpdateDrag"

    Debug.Print "  HandleIndex      = " & handleIndex

   

End Sub



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Create PropertyManager Page and Selectable Triad Manipulator Example (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2013 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.