Top Up Prev Next Bottom Contents Index Search

19.5 Selection

The selection commands described below are used to manipulate object arguments on the argument list.

select-layer			.	[objs] [pnts] [lines] [boxes] "layer"
The select-layer command is similar to the select-objects command but allows the user to select only the geometries on a particular layer. This layer can be specified in two ways: the layer name can be typed in as the last argument or the command will try to determine the layer by looking at the geometry under the cursor when the command is invoked. If the spot for the layer is ambiguous, vem will post a dialog presenting a choice between the layers.

select-objects			s	[objs] [pnts] [lines] [boxes] "layer"
The select-objects command is used for placing collections of objects on the argument list for further processing by other commands. It takes as arguments any number of points, lines, or boxes. Points select items under the point, lines select objects which cross the line, and boxes select objects inside the box. If select-objects is not given any point, line, or box arguments, it will try to select items under the cursor where the command was invoked. These semantics are described in detail below.

For each point, the command adds zero or more of the objects under the point to the list. If there is more than one object under the point, a dialog will be posted with buttons representing each of the objects under the point. Clicking the mouse in one of the buttons highlights the object. Once the user has clicked on the desired objects, the Ok button is used to actually select the items.

For each line argument, the command adds all objects which intersect the line. This is useful for schematic drawings where paths (wires) are zero width. Selection using lines works best if the entered lines are Manhattan. Non-Manhattan lines may select more objects than intended.

For each box, the command adds all objects completely contained in the box to the list. Note that an object is considered contained if and only if its bounding box is completely inside the given box. The select-objects command is incremental; i.e. it may be called many times, each time adding to the selected set. All items selected are highlighted in the vem highlight color.

select-terms			^T		[objs][points][lines][boxes]
This command selects all terminals (both actual and formal) whose implementations intersect the objects found by examining the argument list. The semantics for specifying the objects is identical to that described for select-objects. The items on the argument list will be replaced with the set of terminals found by examining the items. This command is useful for deleting formal terminals, specifying actual terminals for use by edit-property or select-bag, or creating new symbolic formal terminals using promote. As such, it is extremely dangerous in Ptolemy.

transform			t		[objs]
This command takes a selected set of objects built by selection commands and transforms them. The objects remain on the selected set. It is important to note that the actual objects in the database are not affected by this command. The transformation is associated with the object set not with the objects themselves.

The command takes (up to) three arguments: a set of objects to work on, a text rotation specification, and two points indicating a relative translation. The object set must be supplied. The rotation specification is a list of keywords, enclosed in quotation marks, separated by colons:

"mx"
Mirror around the Y axis.
"my"
Mirror around the X axis
"90"
Rotate counter-clockwise 90 degrees.
"180"
Rotate counter-clockwise 180 degrees.
"270"
Rotate counter-clockwise 270 degrees. If both a rotation and a translation are given, the rotation specification should come first. If no rotation and translation are given, the command rotates the items 90 degrees counter-clockwise.

The transform command is incremental. This means it can be applied many times with each command having a relative effect on the current selected set. For example, invoking transform without arguments twice is the same as invoking it once and specifying the rotation string "180".

Once the command completes, the highlighted form of the objects will reflect the specified transformation. This can be used as a reference for further rotations or translations.

Translations are specified by two points. A relative translation is applied to the current transformation based on the vector formed by the two points. It is also possible to interactively specify the translation of a selected set. This is done by moving the cursor to a reference point and pressing, dragging, and releasing the right mouse button. While the right button is depressed, the selected objects will track the cursor motion. This can be used to drag items around interactively.

After completing a transformation with transform, the objects are not actually changed until a command that manipulates objects is invoked (e.g. move-objects, copy-objects, etc.). See the move-objects and copy-objects commands below for more information.

unselect-objects				u	[objs] [pnts] [lines] [boxes]
The unselect-objects command is used to remove items from a previously created object argument (select-objects operation). Any number of points, lines, and boxes may be specified. The semantics for mapping these arguments to objects is the same as select-objects. For each point, zero or more items beneath the point that are part of the selected set are removed. For each line, all items in the selected set intersecting the line are removed from the set. For each box, all items completely contained in the box that are part of the selected set are removed from the set.

It is important to note that this command is intended to be used to unselect small sets of already selected objects. To unselect all items on the argument list, use control-W or control-U.



Top Up Prev Next Bottom Contents Index Search

Copyright © 1990-1997, University of California. All rights reserved.