# Create Highlight Selection Set Example (C#)

This example shows how to create a highlight selection set.

    //--------------------------------------------------------------
    // Preconditions:
    //  1. Create a C# Windows console project.
    //  2. Copy and paste this example into the C# 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.
    //--------------------------------------------------------------

    using System;
    using DraftSight.Interop.dsAutomation;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    namespace HighlightSetCSharp
    {
        class Program
        {
            private static DraftSight.Interop.dsAutomation.Application dsApp;

            static void Main(string[] args)
            {
                //Connect to DraftSight application
                dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");

                if (null == dsApp)
                {
                    return;
                }

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

                //Get active document
                Document dsDoc = dsApp.GetActiveDocument();
                if (null == dsDoc)
                {
                    MessageBox.Show("There are no open documents in DraftSight.");
                    return;
                }

                //Get Sketch Manager
                SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager();

                //Draw a Circle and Arc
                Circle dsCircle = dsSketchMgr.InsertCircle(5.0, 5.0, 0.0, 10.0);
                CircleArc dsCircleArc = dsSketchMgr.InsertArc(7.5, 7.5, 0.0, 10.0, 2.5, 5.0);
                dsApp.Zoom(dsZoomRange_e.dsZoomRange_Bounds, null, null);

                //Create highlight selection set
                DispatchWrapper[] dsEntities = new DispatchWrapper[1];
                dsEntities[0] = new DispatchWrapper(dsCircleArc);

                HighlightSet dsHighlightSet = 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

            }
        }
    }