Obtain the PickFirst Selection Set
 
 
 

The PickFirst selection set is created when you select objects prior to starting a command. Several conditions must be present in order to obtain the objects of a PickFirst selection set, these conditions are:

The SetImpliedSelection method is used to clear the current PickFirst selection set.

Get the Pickfirst selection set

This example displays the number of objects in the PickFirst selection set and then requests the user to select additional objects. Before requesting the user to select objects, the current PickFirst selection set is cleared with the SetImpliedSelection method.

VB.NET

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
 
<CommandMethod("CheckForPickfirstSelection", CommandFlags.UsePickSet)> _
Public Sub CheckForPickfirstSelection()
  '' Get the current document
  Dim acDocEd As Editor = Application.DocumentManager.MdiActiveDocument.Editor
 
  '' Get the PickFirst selection set
  Dim acSSPrompt As PromptSelectionResult
  acSSPrompt = acDocEd.SelectImplied()
 
  Dim acSSet As SelectionSet
 
  '' If the prompt status is OK, objects were selected before
  '' the command was started
  If acSSPrompt.Status = PromptStatus.OK Then
      acSSet = acSSPrompt.Value
 
      Application.ShowAlertDialog("Number of objects in Pickfirst selection: " & _
                                  acSSet.Count.ToString())
  Else
      Application.ShowAlertDialog("Number of objects in Pickfirst selection: 0")
  End If
 
  '' Clear the PickFirst selection set
  Dim idarrayEmpty() As ObjectId
  acDocEd.SetImpliedSelection(idarrayEmpty)
 
  '' Request for objects to be selected in the drawing area
  acSSPrompt = acDocEd.GetSelection()
 
  '' If the prompt status is OK, objects were selected
  If acSSPrompt.Status = PromptStatus.OK Then
      acSSet = acSSPrompt.Value
 
      Application.ShowAlertDialog("Number of objects selected: " & _
                                  acSSet.Count.ToString())
  Else
      Application.ShowAlertDialog("Number of objects selected: 0")
  End If
End Sub

C#

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
 
[CommandMethod("CheckForPickfirstSelection", CommandFlags.UsePickSet)]
public static void CheckForPickfirstSelection()
{
  // Get the current document
  Editor acDocEd = Application.DocumentManager.MdiActiveDocument.Editor;
 
  // Get the PickFirst selection set
  PromptSelectionResult acSSPrompt;
  acSSPrompt = acDocEd.SelectImplied();
 
  SelectionSet acSSet;
 
  // If the prompt status is OK, objects were selected before
  // the command was started
  if (acSSPrompt.Status == PromptStatus.OK)
  {
      acSSet = acSSPrompt.Value;
 
      Application.ShowAlertDialog("Number of objects in Pickfirst selection: " +
                                  acSSet.Count.ToString());
  }
  else
  {
      Application.ShowAlertDialog("Number of objects in Pickfirst selection: 0");
  }
 
  // Clear the PickFirst selection set
  ObjectId[] idarrayEmpty = new ObjectId[0];
  acDocEd.SetImpliedSelection(idarrayEmpty);
 
  // Request for objects to be selected in the drawing area
  acSSPrompt = acDocEd.GetSelection();
 
  // If the prompt status is OK, objects were selected
  if (acSSPrompt.Status == PromptStatus.OK)
  {
      acSSet = acSSPrompt.Value;
 
      Application.ShowAlertDialog("Number of objects selected: " +
                                  acSSet.Count.ToString());
  }
  else
  {
      Application.ShowAlertDialog("Number of objects selected: 0");
  }
}
VBA/ActiveX Code Reference