EQUINOX-3D










Index

 E3dp_PickRequest
 E3dp_PickStop
 E3dp_PickResume
 E3dp_PickEnd


E3dp_PickRequest

Request picking

Syntax
 int E3dp_PickRequest(XeString LMessage, int LWhat, E3dPickCallbackProc LPickCallback, int LTimeOut, EBool LActivateOnMotion)
Arguments
 XeString            LMessage           Message to displayed while waiting for the user to pick an item
 int                 LWhat              Type of Item(s) to be picked (see Item.h)
 E3dPickCallbackProc LPickCallback      Function to call when pick performed or picking aborted
 int                 LTimeOut           Not used at the moment (pass 0)
 EBool               LActivateOnMotion  If TRUE, LPickCallback will be called on pointer motion
Description
Picking lets the user select a required input item for a function. For example, the "Extrude along Spline" tool needs a "profile" Spline (or Face) and a "path" spline.
Both of these are Splines, so it could be impossible to tell which one the user meant to extrude along which one. In this case, the user would select the profile spline, click "Extrude along spline" and the tool would request a Spline pick for the path Spline.
EQUINOX-3D has a very powerful picking mechanism. It allows for complex, context-sensitive tools. One example is the "Edit Polygons" tool. This tool has one mode ("Edit Polygons") and it uses a single Pick callback. As the user "mouses over" components such as Vertices, Edge etc., those components are highlighted and the tool offers only functions that make sense with that particular component.
To keep user interactions simple, if analyzing the selection is sufficient, it should be done instead of picking. For example, the "Add holes to faces" tool collects all selected Splines and adds them as holes to the first selected Face.
It's obvious that the user meant to use the Splines to be holes on a Face and not the other way around, so there is no need to explicitly specify which is which.
LMessage must be a copy of a compound string hat the caller never references after the calling this function.

Example
E3dp_PickRequest(XeCreateSimple("Pick a Model"), E3dITEM_MODEL, _PickCB_Connect, 0, FALSE);

Return value
None.

See also
E3dp_PushCompoundMessage

E3dp_PickStop

Temporarily stop picking

Syntax
 void E3dp_PickStop(void)
Arguments
None.

Description
Before an application changes Geometres/Nodes etc. when picking is active, it must call this function to avoid dangling pointers used by the picking/highlighting mechanism.

Return value
None.

See also
E3dp_PickResume

E3dp_PickResume

Resume picking

Syntax
 void E3dp_PickResume(void)
Arguments
None.

Description
Resumes picking after a call to E3dp_PickStop().

Return value
None.

See also
E3dp_PickStop

E3dp_PickEnd

End picking

Syntax
 void E3dp_PickEnd(void)
Arguments
None.

Description
Ends picking.

Return value
None.