HandlesOperator
-
class
HandlesOperator
: public HPS::Operator The HandlesOperator class defines an operator which allows the user to translate geometry in the view plane or along an axis. This operator works for both mouse- and touch-driven devices.
To use this operator on a mouse-driven device:
- Activate the operator
- Double click on a piece of geometry to activate the handles
- Click and drag the handles to transform the selected geometry
- Click on the background to dismiss the handles
To use this operator on a touch-driven device:
- Activate the operator
- Double tap on a piece of geometry to activate the handles
- Tap and drag the handles to move the selected geometry
- Tap on the background to dismiss the handles
This operator works on the segment containing the geometry selected. An event of type GeometryTransformedEvent is dispatched after the handles are dismissed, containing the information on which segment was affected and what transform was applied to it.
This operator does not work on Exchange models which have a Drawing structure. This includes CATDrawing models and 2D DWG models loaded through Exchange. Any attempt to use this operator on such a model will produce a warning.
Public Types
-
enum class
HandleType
Values:
-
enumerator
Rotation
Represents three all rotation handles.
-
enumerator
RotationX
Represents handle for rotation around the X axis.
-
enumerator
RotationY
Represents handle for rotation around the Y axis.
-
enumerator
RotationZ
Represents handle for rotation around the Z axis.
-
enumerator
AxisTranslation
Represents three all axis translation handles.
-
enumerator
AxisTranslationX
Represents handle for translation along the X axis.
-
enumerator
AxisTranslationY
Represents handle for translation along the Y axis.
-
enumerator
AxisTranslationZ
Represents handle for translation along the Z axis.
-
enumerator
PlaneTranslation
Represents three all plane translation handles.
-
enumerator
PlaneTranslationXY
Represents handle for translation along the XY plane.
-
enumerator
PlaneTranslationYZ
Represents handle for translation along the YZ plane.
-
enumerator
PlaneTranslationZX
Represents handle for translation along the ZX plane.
-
enumerator
CenterPoint
Represents handle for translation along the view plane.
-
enumerator
Public Functions
-
void
AddHandles
(HandleType handle_type) Add a type of handle to those displayed by this operator. Changes take place the next time handles are inserted, by either double clicking or double tapping on geometry.
Parameters: handle_type – The type of handle to be added to those displayed.
-
void
DismissHandles
()
-
inline CADModel
GetCADModel
() const Returns the CADModel associated with this operator. If no CADModel was associated with this operator, the returned object will be invalid and have type HPS::Type::None.
Returns: The CADModel associated with this operator.
-
void
GetHandlesAppearance
(float &out_length, float &out_radius, size_t &out_handles_points) const Returns the parameters used to decide the appearance of the handles.
Parameters: - out_length – The length of the handles, specified as a percentage of the view containing it.
- out_radius – The radius of the handles, specified as a percentage of the view containing it.
- out_handles_points – The number of points used to draw the handles. A higher number will yield a smoother appearance.
-
inline MaterialKitArray
GetHandlesColors
() const This function returns the materials used to color the handles. Only the diffuse color field of the materials is guaranteed to have a value. The materials are used as follows:
Entry 0 - translation handle in the x direction Entry 1 - translation handle in the y direction Entry 2 - translation handle in the z direction Entry 3 - rotation handle in the x direction Entry 4 - rotation handle in the y direction Entry 5 - rotation handle in the z direction Entry 6 - xz plane translation Entry 7 - xy plane translation Entry 8 - yz plane translation Entry 9 - center-sphere
Returns: An array of materials associated with the handles
-
inline RGBAColor
GetHighlightColor
() const Returns the color used to highlight the handles then the user mouses over them.
Returns: the color used to highlight the handles then the user mouses over them.
-
void
GetPlaneTranslationAppearance
(float &out_plane_offset, float &out_plane_length, float &out_center_radius) const Returns the parameters used to decide the appearance of the rotation handles.
Parameters: - out_plane_offset – The distance between the axis translation handle and the start of the plane translation handle, specified as a percentage of handle length.
- out_plane_length – The size of plane translation handles, specified as a percentage of handle length.
- out_center_radius – The radius of the sphere at the center of the handles, specified as a percentage of handle length.
-
void
GetRotationHandleAppearance
(float &out_offset, float &out_angle, float &out_tip_size) const Returns the parameters used to decide the appearance of the rotation handles.
Parameters: - out_offset – The distance between the end of a translation handle and the rotation handle associated with it, specified as a percentage of handle length.
- out_angle – The angle formed by the rotation handles, specified in degrees.
- out_tip_size – The size of the tip at the end of the handles, specified as a percentage of handle length.
-
inline bool
GetTrailingGeometry
() const Whether trailing geometry will be drawn when using the handles. Trailing geometry is geometry which shows you the path of the last movement operation you performed through the handles.
Returns: true if trailing geometry will be drawn, false otherwise.
-
HandlesOperator
(MouseButtons in_mouse_trigger = MouseButtons::ButtonLeft(), ModifierKeys in_modifier_trigger = ModifierKeys())
-
virtual bool
OnMouseDown
(MouseState const &in_state) override This function is called whenever HPS receives a MouseEvent that signals a mouse button was pressed. If the user double clicks on a piece of geometry, handles will be inserted there. If the user clicks on a handle, the segment containing that handle will be translated or rotated appropriately. The user can click on the background to remove the handles.
Parameters: in_state – A MouseState object describing the current mouse state. Returns: true if the input event was handled, false otherwise.
-
virtual bool
OnMouseMove
(MouseState const &in_state) override This function is called whenever HPS receives a MouseEvent that signals the mouse moved When users click and drag a handle, the associated geometry will be translated or rotated as appropriate.
Parameters: in_state – A MouseState object describing the current mouse state. Returns: true if the input event was handled, false otherwise.
-
virtual bool
OnMouseUp
(MouseState const &in_state) override This function is called whenever HPS receives a MouseEvent that signals a mouse button was released
Parameters: in_state – A MouseState object describing the current mouse state. Returns: true if the input event was handled, false otherwise.
-
virtual bool
OnTouchDown
(TouchState const &in_state) override This function is called whenever HPS receives a TouchEvent that signals the device was touched. If the user double taps a piece of geometry, handles will be inserted there. If the user taps on a handle, the segment containing that handle will be translated or rotated appropriately. The user can tap on the background to remove the handles.
Parameters: in_state – A TouchState object describing the current touch state. Returns: true if the input event was handled, false otherwise.
-
virtual bool
OnTouchMove
(TouchState const &in_state) override This function is called whenever HPS receives a TouchEvent that signals a point of contact has moved. When users click and drag a handle, the associated geometry will be translated or rotated as appropriate.
Parameters: in_state – A TouchState object describing the current touch state. Returns: true if the input event was handled, false otherwise.
-
virtual bool
OnTouchUp
(TouchState const &in_state) override This function is called whenever HPS receives a TouchEvent that signals a point of contact has been released.
Parameters: in_state – A TouchState object describing the current touch state. Returns: true if the input event was handled, false otherwise.
-
virtual void
OnViewAttached
(HPS::View const &in_attached_view) override This function is called whenever a view is attached to this operator.
Parameters: in_attached_view – The view attached to this operator.
-
virtual void
OnViewDetached
(HPS::View const &in_detached_view) override This function is called whenever a view is detached from this operator.
Parameters: in_detached_view – The view detached from this operator.
-
void
RemoveHandles
(HandleType handle_type) Remove a type of handle from those displayed by this operator. Changes take place the next time handles are inserted, by either double clicking or double tapping on geometry.
Parameters: handle_type – The type of handle to be removed from those displayed.
-
void
SetCADModel
(CADModel const &in_cad_model) Sets the CADModel associated with this operator. If a CADModel is set, the underlying PRC or Parasolid data associated with any Components moved by the user with the handles operator will be changed to reflect how the CADModel appears on the user’s screen. This function needs to be called before the user starts transforming geometry through the handles operator.
Parameters: in_cad_model – The CADModel associated with this operator.
-
void
SetHandlesAppearance
(float in_length = 0.16f, float in_radius = 0.005f, size_t in_handles_points = 30) This function can be used to modify the appearance of handles. Changes will take effect the next time handles are inserted.
Parameters: - in_length – The length of the handles, specified as a percentage of the view containing it. Valid range is (0, 1].
- in_radius – The radius of the handles, specified as a percentage of the view containing it. Valid range is (0, 1].
- in_handles_points – The number of points used to draw the handles. A higher number will yield a smoother appearance. Valid range is > 0.
-
inline void
SetHandlesColors
(MaterialKitArray const &in_colors) This function is used to provide a set of colors which will be applied to the handles. The changes will take effect the next time the handles are inserted. The materials need to contain a diffuse color, and will be applied as follows: Entry 0 - translation handle in the x direction Entry 1 - translation handle in the y direction Entry 2 - translation handle in the z direction Entry 3 - rotation handle in the x direction Entry 4 - rotation handle in the y direction Entry 5 - rotation handle in the z direction Entry 6 - xz plane translation Entry 7 - xy plane translation Entry 8 - yz plane translation Entry 9 - center-sphere
Parameters: in_colors – An array of materials to be applied to the handles.
-
void
SetHighlightColor
(RGBAColor const &in_highlight_color) Sets the highlight color used when the user mouses over the handles. The default value for the highlight color is RGBAColor(1.0f, 0.55f, 0.0f)
Parameters: in_highlight_color – The color used to highlight handles when the user mouses over them.
-
void
SetPlaneTranslationAppearance
(float in_plane_offset = 0.2f, float in_plane_length = 0.6f, float in_center_radius = 0.2f) This function can be used to modify the appearance of the handles used to perform plane-translation. Changes will take effect the next time handles are inserted.
Parameters: - in_plane_offset – The distance between the axis translation handle and the start of the plane translation handle, specified as a percentage of handle length.
- in_plane_length – The size of plane translation handles, specified as a percentage of handle length.
- in_center_radius – The radius of the sphere at the center of the handles, specified as a percentage of handle length.
-
void
SetRotationHandleAppearance
(float in_offset = 0.045f, float in_angle = 25.0f, float in_tip_size = 0.15f) This function can be used to modify the appearance of handles used to perform rotations. Changes will take effect the next time handles are inserted.
Parameters: - in_offset – The distance between the end of a translation handle and the start of then rotation handle associated with it, specified as a percentage of handle length. Valid range is (0, 1].
- in_angle – The angle formed by the rotation handles, specified in degrees. Valid range is > 0
- in_tip_size – The size of the tip at the end of the handles, specified as a percentage of the handle length. Valid range is [0, 1].
-
inline void
SetTrailingGeometry
(bool in_state) Whether to draw trailing geometry when using the handles. Trailing geometry is geometry which shows you the path of the last movement operation you performed through the handles.
Parameters: in_state – Whether to draw trailing geometry when using the handles.
-
~HandlesOperator
()
-
class
GeometryTransformedEvent
: public HPS::Event Public Functions
-
inline virtual char const *
ClassName
() const override
-
inline virtual Event *
Clone
() const override Allocates and returns a copy of this GeometryTransformedEvent.
Returns: A copy of this GeometryTransformedEvent.
-
inline
GeometryTransformedEvent
() The default constructor creates an empty GeometryTransformedEvent object.
-
inline
GeometryTransformedEvent
(Event const &in_event) This constructor converts an Event Object to a GeometryTransformedEvent object.
Parameters: in_event – The Event Object to be converted.
-
inline
GeometryTransformedEvent
(HPS::View const &in_view, HPS::SegmentKey const &in_segment_key, HPS::MatrixKit const &in_transform)
-
~GeometryTransformedEvent
()
-
inline virtual char const *