Create Highlight Selection Set Example (VB.NET)

This example shows how to create a highlight selection set.

'--------------------------------------------------------------
' Preconditions:
'  1. Create a VB.NET Windows console project.
'  2. Copy and paste this example into the VB.NET IDE.
'  3. Add a reference to:
'     install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
'  4. Add a reference to System.Windows.Forms.
'  5. Start DraftSight.
'  6. Press F5.
'
' Postconditions:
'  1. Connects to DraftSight.
'  2. Gets active document.
'  3. Gets Sketch Manager.
'  4. Inserts a Circle and an Arc.
'  5. Creates an instance of a highlight selection set.
'  6. Adds Arc to the highlight selection set.
'  7. Move the pointer over both the Arc and Circle. Only the Arc
'     is highlighted. Press F5 to continue.
'  8. Removes Arc from highlight selection set.
'  9. Adds Circle to highlight selection set.
' 10. Move the pointer over both the Arc and Circle. Only
'     the Circle is highlighted.
'--------------------------------------------------------------

Imports System
Imports DraftSight.Interop.dsAutomation
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Module Module1

    Sub Main()

        Dim dsApp As DraftSight.Interop.dsAutomation.Application

        'Connect to DraftSight application
        dsApp = DirectCast(Marshal.GetActiveObject("DraftSight.Application"), DraftSight.Interop.dsAutomation.Application)

        If dsApp Is Nothing Then
            Return
        End If

        'Abort any command currently running in DraftSight to avoid nested commands
        dsApp.AbortRunningCommand()

        'Get active document
        Dim dsDoc As Document = dsApp.GetActiveDocument()
        If dsDoc Is Nothing Then
            MessageBox.Show("There are no open documents in DraftSight.")
            Return
        End If

        'Get Sketch Manager
        Dim dsSketchMgr As SketchManager = dsDoc.GetModel().GetSketchManager()

        'Draw a Circle and Arc
        Dim dsCircle As Circle = dsSketchMgr.InsertCircle(5.0, 5.0, 0.0, 10.0)
        Dim dsCircleArc As CircleArc = dsSketchMgr.InsertArc(7.5, 7.5, 0.0, 10.0, 2.5, 5.0)
        dsApp.Zoom(dsZoomRange_e.dsZoomRange_Bounds, NothingNothing)

        'Create highlight selection set
        Dim dsEntities As DispatchWrapper() = New DispatchWrapper(0) {}
        dsEntities(0) = New DispatchWrapper(dsCircleArc)

        Dim dsHighlightSet As HighlightSet = dsDoc.CreateHighlightSet(dsEntities)
        dsHighlightSet.Highlight = True
        dsDoc.Rebuild(dsRebuildType_e.dsRebuildType_AllViewports)


        System.Diagnostics.Debugger.Break()
        'Move pointer over the Arc and Circle
        'Only the Arc is highlighted
        'Press F5 to continue

        'Remove entities from highlight selection set
        dsHighlightSet.RemoveEntities(dsEntities)
        dsDoc.Rebuild(dsRebuildType_e.dsRebuildType_AllViewports)


        'Add Circle to highlight selection set
        dsEntities.Initialize()
        dsEntities(0) = New DispatchWrapper(dsCircle)
        dsHighlightSet.AddEntities(dsEntities)
        dsHighlightSet.Highlight = True
        dsDoc.Rebuild(dsRebuildType_e.dsRebuildType_AllViewports)

        'Move pointer over the Arc and Circle
        'Only the Circle is highlighted

    End Sub
End Module