Purpose

This module serves the same purpose as SoMouseGrabber, but for the new Managed Interaction scheme, that abstracts from single mouse events and instead works with pointing action objects.

Usage

Usage of this module in most cases requires the use of FieldListeners attached to at least one of Relative Position or Absolute Position and Dragging:

Dragging signals the start and end of a drag operation, while Relative Position or Absolute Position signal changes of the mouse position before and during the drag.

Windows

Default Panel

../../../Modules/Inventor/SoInteractionControllers/mhelp/Images/Screenshots/GenericPointingAction._default.png

The Current State tab shows all the variable state of the pointing action.

The Drag Distance tab shows the value and configuration of the accumulated drag distance.

The Configuration tab shows the static state of the pointing action.

Output Fields

output

name: output, type: SoNode

Simply connect the output of this module into an Inventor scene.

Parameter Fields

Field Index

Absolute Position: Vector2 Description: String Number of Modes: Integer
Action ID: String Dragging: Bool Position Sensitive: Bool
Alt: Enum Dragging Mode: Integer Provider ID: String
Button1: Enum draggingEnded: Trigger Relative Position: Vector2
Button2: Enum draggingStarted: Trigger Sensitive At Current Position: Bool
Button3: Enum Enabled: Bool Sensitivity (sensitivityX): Double
checkPosition: Trigger Icon File: String Sensitivity (sensitivityY): Double
Clamp To Max X: Bool In Viewer: Bool Shift: Enum
Clamp To Max Y: Bool Is Selected: Bool Status Message: String
Clamp To Min X: Bool Max (maxX): Double User Name: String
Clamp To Min Y: Bool Max (maxY): Double Value (offsetX): Double
Ctrl: Enum Min (minX): Double Value (offsetY): Double
Cursor Shape: Enum Min (minY): Double  

Visible Fields

Enabled

name: enabled, type: Bool, default: TRUE

If checked, the action provided by this module is enabled in the scene.

Provider ID

name: providerID, type: String, default: GenericPointingAction

Sets the provider ID of the action.

Normally this would be the instanceName of the module, but it might be useful to assign the same name to several actions in the same macro module.

Action ID

name: actionID, type: String, default: default

Sets the ID for the action.

This ID can be used to override e.g. the mouse button binding of this action from the outside. It should be a unique name that clearly identifies this action.

User Name

name: userName, type: String

Sets a name that is presented to the user in appropriate places (e.g. menus).

How this value is really used depends on the software environment and may be overriden.

Description

name: description, type: String

Sets a description of the action.

How this value is really used depends on the software environment and may be overriden.

Icon File

name: iconFile, type: String

Sets a the path to an image file usable as an icon representing this action.

How this value is really used depends on the software environment and may be overriden.

Button1

name: button1, type: Enum, default: PRESSED

Sets how this action should react on the left mouse button.

This is only a default and may be overriden by the software environment.

Values:

Title Name Description
Ignored IGNORED Ignore if this button is pressed or not.
Pressed PRESSED This button must be pressed.
Released RELEASED This button may not be pressed.

Button2

name: button2, type: Enum, default: RELEASED

Middle mouse button specifier.

For details see Button1

Values:

Title Name
Ignored IGNORED
Pressed PRESSED
Released RELEASED

Button3

name: button3, type: Enum, default: RELEASED

Right mouse button specifier.

For details see Button1

Values:

Title Name
Ignored IGNORED
Pressed PRESSED
Released RELEASED

Shift

name: shift, type: Enum, default: RELEASED

Shift modifier key specifier.

For details see Button1

Values:

Title Name
Ignored IGNORED
Pressed PRESSED
Released RELEASED

Ctrl

name: ctrl, type: Enum, default: RELEASED

Control modifier key specifier.

For details see Button1

Values:

Title Name
Ignored IGNORED
Pressed PRESSED
Released RELEASED

Alt

name: alt, type: Enum, default: RELEASED

Alt modifier key specifier.

For details see Button1

Values:

Title Name
Ignored IGNORED
Pressed PRESSED
Released RELEASED

Relative Position

name: relativePosition, type: Vector2, persistent: no

The position of the mouse pointer in the viewer in relative coordinates ranging from 0 to 1. This is only valid while In Viewer is true.

Absolute Position

name: absolutePosition, type: Vector2, persistent: no

The position of the mouse pointer in the viewer in absolute pixel. This is only valid while In Viewer is true.

In Viewer

name: inViewer, type: Bool, persistent: no

This is true while the mouse pointer is over the/any viewer.

Value (offsetX)

name: offsetX, type: Double, default: 0.5

The horizontal component of the accumulated drag distance

Value (offsetY)

name: offsetY, type: Double, default: 0.5

The vertical component of the accumulated drag distance

Sensitivity (sensitivityX)

name: sensitivityX, type: Double, default: 1

The sensitivity with which to accumulate horizontal drag distance. 1 means that a drag by 400 pixels will amount to an offset of the current range (maxX - minX). Use a negative value to invert the offset.

Sensitivity (sensitivityY)

name: sensitivityY, type: Double, default: 1

Same as Sensitivity for vertical drag distance.

Min (minX)

name: minX, type: Double, default: 0

Sets the minimum value for clamping of the horizontal drag distance.

See also Clamp To Min X.

Max (maxX)

name: maxX, type: Double, default: 1

Sets the maximum value for clamping of the horizontal drag distance.

See also Clamp To Max X.

Min (minY)

name: minY, type: Double, default: 0

Sets the minimum value for clamping of the vertical drag distance.

See also Clamp To Min Y.

Max (maxY)

name: maxY, type: Double, default: 1

Sets the maximum value for clamping of the vertical drag distance.

See also Clamp To Max Y.

Clamp To Min X

name: clampToMinX, type: Bool, default: TRUE

If checked, the horizontal drag distance is clamped to a lowest value.

See also Min.

Clamp To Max X

name: clampToMaxX, type: Bool, default: TRUE

If checked, the horizontal drag distance is clamped to a highest value.

See also Max.

Clamp To Min Y

name: clampToMinY, type: Bool, default: TRUE

If checked, the vertical drag distance is clamped to a lowest value.

See also Min.

Clamp To Max Y

name: clampToMaxY, type: Bool, default: TRUE

If checked, the vertical drag distance is clamped to a highest value.

See also Max.

Position Sensitive

name: positionSensitive, type: Bool, default: TRUE

If checked, the action is position sensitive.

In this case Sensitive At Current Position is checked at each pixel position to see if this action is applicable at the current position - if the action is not position sensitive it is assumed to be applicable everywhere and Sensitive At Current Position is not checked. If the action is not applicable, another action may be triggered for the current position.

Being position sensitive additionally means this action won’t simply switch to another action if the button/modifier combination changes; all mouse buttons have to be released first.

Sensitive At Current Position

name: sensitiveAtCurrentPosition, type: Bool, default: TRUE

If not checked, and if Position Sensitive is true, this action is not applicable at the current pointer position.

You can attach a FieldListener to the checkPosition field to update this field, since that field is notified immediately before Sensitive At Current Position is evaluated.

Is Selected

name: isSelected, type: Bool, persistent: no

This field is set to true when this action is selected for immediate execution on left mouse button click and during dragging.

Use this field if you want to highlight some structures under the mouse pointer.

Number of Modes

name: numberOfModes, type: Integer, default: 1

If during dragging different drag modes are needed (e.g. for different alignment modes), set the number of needed modes in this field.

The different modes can then be selected during dragging by pressing/releasing modifiers keys. (Which keys these are is selected by the interaction controller.)

Dragging Mode

name: draggingMode, type: Integer, persistent: no

Contains the currently selected dragging mode during dragging operations.

See also Number of Modes.

Dragging

name: dragging, type: Bool, persistent: no

This is set to true when a drag operation is started (and set to false when the operation ends).

Normally you would attach a FieldListener to this field.

Cursor Shape

name: cursorShape, type: Enum, default: UNDEFINED_CURSOR

Sets the cursor shape that should be used for this action.

The shape will only be used if Is Selected is true.

Values:

Title Name
Undefined Cursor UNDEFINED_CURSOR
Default Cursor DEFAULT_CURSOR
Forbidden Cursor FORBIDDEN_CURSOR
Pointing Hand Cursor POINTING_HAND_CURSOR
Open Hand Cursor OPEN_HAND_CURSOR
Closed Hand Cursor CLOSED_HAND_CURSOR
Move All Cursor MOVE_ALL_CURSOR
Move Hori Cursor MOVE_HORI_CURSOR
Move Vert Cursor MOVE_VERT_CURSOR
Move Fdiag Cursor MOVE_FDIAG_CURSOR
Move Bdiag Cursor MOVE_BDIAG_CURSOR
Move Inout Cursor MOVE_INOUT_CURSOR
Rotate X Cursor ROTATE_X_CURSOR
Rotate Y Cursor ROTATE_Y_CURSOR
Rotate Z Cursor ROTATE_Z_CURSOR
Rotate Xy Cursor ROTATE_XY_CURSOR
Zoom Cursor ZOOM_CURSOR
Zoom In Cursor ZOOM_IN_CURSOR
Zoom Out Cursor ZOOM_OUT_CURSOR
Cross Cursor CROSS_CURSOR
Cross Plus Cursor CROSS_PLUS_CURSOR
Cross Minus Cursor CROSS_MINUS_CURSOR
Cross Move Cursor CROSS_MOVE_CURSOR
Cross Rotate Cursor CROSS_ROTATE_CURSOR
Cross Rect Cursor CROSS_RECT_CURSOR
Cross Oval Cursor CROSS_OVAL_CURSOR
Cross Vector Cursor CROSS_VECTOR_CURSOR
Cross Freeform Cursor CROSS_FREEFORM_CURSOR
Cross Point Cursor CROSS_POINT_CURSOR
Cross Line Cursor CROSS_LINE_CURSOR
Cross Curve Cursor CROSS_CURVE_CURSOR
Cross Polyline Cursor CROSS_POLYLINE_CURSOR
Cross Polygon Cursor CROSS_POLYGON_CURSOR
Cross Fill Cursor CROSS_FILL_CURSOR
Cross Link Cursor CROSS_LINK_CURSOR
Cross 0 Cursor CROSS_0_CURSOR
Cross 1 Cursor CROSS_1_CURSOR
Cross 2 Cursor CROSS_2_CURSOR
Cross 3 Cursor CROSS_3_CURSOR
Lut Cursor LUT_CURSOR
Slicing Cursor SLICING_CURSOR
Cross 4 Cursor CROSS_4_CURSOR
Cross 5 Cursor CROSS_5_CURSOR
Cross 6 Cursor CROSS_6_CURSOR
Cross 7 Cursor CROSS_7_CURSOR
Cross 8 Cursor CROSS_8_CURSOR
Cross 9 Cursor CROSS_9_CURSOR
Lut 1 Cursor LUT_1_CURSOR
Lut 2 Cursor LUT_2_CURSOR
Lut 3 Cursor LUT_3_CURSOR
Other Cursor 0 OTHER_CURSOR_0
Other Cursor 1 OTHER_CURSOR_1
Other Cursor 2 OTHER_CURSOR_2
Other Cursor 3 OTHER_CURSOR_3
Other Cursor 4 OTHER_CURSOR_4
Other Cursor 5 OTHER_CURSOR_5
Other Cursor 6 OTHER_CURSOR_6
Other Cursor 7 OTHER_CURSOR_7
Other Cursor 8 OTHER_CURSOR_8
Other Cursor 9 OTHER_CURSOR_9
Other Cursor 10 OTHER_CURSOR_10
Other Cursor 11 OTHER_CURSOR_11
Other Cursor 12 OTHER_CURSOR_12
Other Cursor 13 OTHER_CURSOR_13
Other Cursor 14 OTHER_CURSOR_14
Other Cursor 15 OTHER_CURSOR_15
Other Cursor 16 OTHER_CURSOR_16
Other Cursor 17 OTHER_CURSOR_17
Other Cursor 18 OTHER_CURSOR_18
Other Cursor 19 OTHER_CURSOR_19
Other Cursor 20 OTHER_CURSOR_20
Other Cursor 21 OTHER_CURSOR_21
Other Cursor 22 OTHER_CURSOR_22
Other Cursor 23 OTHER_CURSOR_23
Other Cursor 24 OTHER_CURSOR_24
Other Cursor 25 OTHER_CURSOR_25
Other Cursor 26 OTHER_CURSOR_26
Other Cursor 27 OTHER_CURSOR_27
Other Cursor 28 OTHER_CURSOR_28
Other Cursor 29 OTHER_CURSOR_29
Other Cursor 30 OTHER_CURSOR_30
Other Cursor 31 OTHER_CURSOR_31
Other Cursor 32 OTHER_CURSOR_32
Other Cursor 33 OTHER_CURSOR_33
Other Cursor 34 OTHER_CURSOR_34
Other Cursor 35 OTHER_CURSOR_35
Other Cursor 36 OTHER_CURSOR_36
Other Cursor 37 OTHER_CURSOR_37
Other Cursor 38 OTHER_CURSOR_38
Other Cursor 39 OTHER_CURSOR_39
Other Cursor 40 OTHER_CURSOR_40
Other Cursor 41 OTHER_CURSOR_41
Other Cursor 42 OTHER_CURSOR_42
Other Cursor 43 OTHER_CURSOR_43
Other Cursor 44 OTHER_CURSOR_44
Other Cursor 45 OTHER_CURSOR_45
Other Cursor 46 OTHER_CURSOR_46
Other Cursor 47 OTHER_CURSOR_47
Other Cursor 48 OTHER_CURSOR_48
Other Cursor 49 OTHER_CURSOR_49
Other Cursor 50 OTHER_CURSOR_50
Other Cursor 51 OTHER_CURSOR_51
Other Cursor 52 OTHER_CURSOR_52
Other Cursor 53 OTHER_CURSOR_53
Other Cursor 54 OTHER_CURSOR_54
Other Cursor 55 OTHER_CURSOR_55
Other Cursor 56 OTHER_CURSOR_56
Other Cursor 57 OTHER_CURSOR_57
Other Cursor 58 OTHER_CURSOR_58
Other Cursor 59 OTHER_CURSOR_59
Other Cursor 60 OTHER_CURSOR_60
Other Cursor 61 OTHER_CURSOR_61
Other Cursor 62 OTHER_CURSOR_62
Other Cursor 63 OTHER_CURSOR_63
Other Cursor 64 OTHER_CURSOR_64
Other Cursor 65 OTHER_CURSOR_65
Other Cursor 66 OTHER_CURSOR_66
Other Cursor 67 OTHER_CURSOR_67
Other Cursor 68 OTHER_CURSOR_68
Other Cursor 69 OTHER_CURSOR_69
Blank Cursor BLANK_CURSOR

Status Message

name: statusMessage, type: String

Sets a status message that should be displayed for this action, e.g. the name of an object the mouse pointer currently hovers over or some indication about the state of the dragging.

The message will only be used if Is Selected is true. Where this message appears is up to the interaction controller.

Hidden Fields

checkPosition

name: checkPosition, type: Trigger, persistent: no

This is triggered immediately before Sensitive At Current Position is checked. This field is only shown on the automatic panel.

draggingStarted

name: draggingStarted, type: Trigger, persistent: no

draggingEnded

name: draggingEnded, type: Trigger, persistent: no