Selection Set Handling

AutoCAD AutoLISP & Visual LISP

 
Selection Set Handling
 
 
 

AutoLISP provides a number of functions for handling selection sets. For a complete list of selection set functions, see Selection Set Manipulation Functions in AutoLISP Function Synopsis

The ssget function provides the most general means of creating a selection set. It can create a selection set in one of the following ways:

  • Explicitly specifying the objects to select, using the Last, Previous, Window, Implied, WPolygon, Crossing, CPolygon, or Fence options
  • Specifying a single point
  • Selecting the entire database
  • Prompting the user to select objects

With any option, you can use filtering to specify a list of attributes and conditions that the selected objects must match.

NoteSelection set and entity names are volatile. That is, they apply only to the current drawing session.

The first argument to ssget is a string that describes which selection option to use. The next two arguments, pt1 and pt2, specify point values for the relevant options (they should be left out if they don't apply). A point list, pt-list, must be provided as an argument to the selection methods that allow selection by polygons (that is, Fence, Crossing Polygon, and Window Polygon). The last argument, filter-list, is optional. If filter-list is supplied, it specifies the list of entity field values used in filtering. For example, you can obtain a selection set that includes all objects of a given type, on a given layer, or of a given color. Selection filters are described in more detail in Selection Set Filter Lists.

See the ssget entry in the AutoLISP Reference for a list of the available selection methods and the arguments used with each.

The following table shows examples of calls to ssget:

SSGET Examples

Function call

Effect

(setq pt1 '(0.0 0.0 0.0)

pt2 '(5.0 5.0 0.0)

pt3 '(4.0 1.0 0.0)

pt4 '(2.0 6.0 0.0))

Sets pt1, pt2, pt3, and pt4 to point values

(setq ss1 (ssget))

Asks the user for a general object selection and places those items in a selection set

(setq ss1 (ssget "P"))

Creates a selection set from the most recently created selection set

(setq ss1 (ssget "L"))

Creates a selection set of the last object added to the database that is visible on the screen

(setq ss1 (ssget pt2))

Creates a selection set of an object passing through point (5,5)

(setq ss1 (ssget "W" pt1 pt2))

Creates a selection set of the objects inside the window from (0,0) to (5,5)

(setq ss1 (ssget "F"

(list pt2 pt3 pt4)))

Creates a selection set of the objects crossing the fence and defined by the points (5,5), (4,1), and (2,6)

(setq ss1 (ssget "WP"

(list pt1 pt2 pt3)))

Creates a selection set of the objects inside the polygon defined by the points (0,0), (5,5), and (4,1)

(setq ss1 (ssget "X"))

Creates a selection set of all objects in the database

When an application has finished using a selection set, it is important to release it from memory. You can do this by setting it to nil:

(setq ss1 nil)

Attempting to manage a large number of selection sets simultaneously is not recommended. An AutoLISP application cannot have more than 128 selection sets open at once. (The limit may be lower on your system.) When the limit is reached, AutoCAD will not create more selection sets. Keep a minimum number of sets open at a time, and set unneeded selection sets to nil as soon as possible. If the maximum number of selection sets is reached, you must call the gc function to free unused memory before another ssget will work.