#ifndef PRODISPOBJECT_H
#define PRODISPOBJECT_H
#include <ProSurface.h>
typedef void *ProDispObject;
typedef struct _ProTriVertex
{
float pnt[3];
float norm[3];
}ProTriVertex;
#define PRO_DISP_OBJECT_TWO_SIDED (0x1<<0) /* ProDispObject with two sided display */
#define PRO_DISP_OBJECT_DYNAMIC_PREVIEW (0x1<<1) /* ProDispObject is dynamic i.e. will be used for very little
time and deleted. */
PRO_BEGIN_C_DECLS
extern ProError ProDispObjectCreate(ProName object_name, int flag, int num_strips,
int *strip_size, ProTriVertex **strips_array,
ProDispObject *p_disp_obj);
/*
Purpose: Create a Display Object. Display object is used to record
application specific triangle data which is then displayed by Creo
using creo lighting and materials. Display objects are attached to
creo scene graph using ProDispObjectAttach and are rendered along
creo native scene. Display objects will not participate in creo
HLR calculations. They will always be displayed in shaded mode
irrespective of what current view display mode is.
Input Arguments:
object_name - Name of new object. Name must be unique.
flag - Bit encoded flag to set property of display object 0x0 : If no
bit is set display object will behave like a solid
PRO_DISP_OBJECT_TWO_SIDED: When this bit is set object will
behave like quilts PRO_DISP_OBJECT_DYNAMIC_PREVIEW: Object is
temporary and will be deleted/recreated frequently. If this flag
is not set then creo will try to put the data on graphics card
to speed up its display. But if the flag is set this
optimization will not be done because transferring data to
graphics card will take more time than performance gain we will
achieve by such transfer.
num_strips - The number of triangle strips
strip_size - ProArray (of size num_strips) indicating the number of
triangles in each strip
strips_array - An array of num_strips triangle strips.
Output Arguments:
p_disp_obj - a handle to the object that was created
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_E_FOUND - Object with same name already exist. Delete previous
object (or use new name)
PRO_TK_BAD_INPUTS - One or more input arguments was invalid.
*/
extern ProError ProDispObjectDelete(ProDispObject *obj);
/*
Purpose: Delete a display object. Object must be detached before it is
deleted.
Input Arguments:
obj - ProDisplayObject which will be deleted
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - One or more input arguments was invalid.
*/
extern ProError ProDispObjectAttach(int window, ProDispObject obj, int *key_list,
int new_key, ProMatrix transform);
/*
Purpose: Attach a display object to creo scene. Once attached display
object will be rendered along with rest of creo graphics. If scene
is regenerated i.e. creo scene graph is recreated for some reason,
application must reattach them. This API is only for 3d mode
(part/assembly etc) and won't work in 2D (drawings, sketch, CE).
Input Arguments:
window - Identifier of window in which ProDispObject will be attached
to Creo scene.
obj - Display object which will be attached to creo scene
key_list - ProArray containing member identifier table of the component
to which the display object will be attached. If the display
object is to be attached on top level component this should
be NULL.
new_key - a unique(in the scope of key_list) identifier for the new
node which will contain the display object.
transform - transform from the parent(specified by key list) to the new
object node
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded
PRO_TK_E_NOT_FOUND - Parent (attach point) doesn't exist
PRO_TK_NOT_VALID - new_key for ProDispObject is already in use.
PRO_TK_BAD_INPUTS - Invalid input arguments (bad window or NULL display
object)
PRO_TK_GENERAL_ERROR - One or more input arguments was invalid
PRO_TK_UNSUPPORTED - Function is not supported on given window(because
it is 2D window, like drawing or sketcher).
*/
extern ProError ProDispObjectDetach(int window, int *key_list);
/*
Purpose: Detach a display object that was added to creo scene. Object must
be detached before it is deleted. This API is only for 3d mode
(part/assembly etc) and won't work in 2D (drawings, sketch, CE).
Input Arguments:
window - Identifier of window in which ProDispObject will be detached
from Creo scene
key_list - ProArray containing member_identification table of
ProDispObject which will be detached from scene graph. This
is the "key_list" passed to ProDispObjectAttach plus the
"new_key"
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded
PRO_TK_BAD_INPUTS - Invalid window
PRO_TK_E_NOT_FOUND - ProDispObject not found in the scene graph of
window
PRO_TK_GENERAL_ERROR - One or more input arguments was invalid
*/
extern ProError ProDispObjectSetTransform( int window, int *key_list,
ProMatrix trf, ProMatrix old_trf );
/*
Purpose: Sets the transform of an object relative to it's parent in creo
scene. This API is only for 3d mode (part/assembly etc) and won't
work in 2D (drawings, sketch, CE).
Input Arguments:
window - Identifier of window in which ProDispObject will be detached
from Creo scene
key_list - ProArray containing member_identification table of
ProDispObject which will be detached from scene graph. This
is the "key_list" passed to ProDispObjectAttach plus the
"new_key
trf - new transform for this display object relative to its parent.
Output Arguments:
old_trf - old transform for this display object
Return Values:
PRO_TK_NO_ERROR - The function succeeded
PRO_TK_BAD_INPUTS - Invalid window
PRO_TK_E_NOT_FOUND - ProDispObject not found in the scene graph of
window
PRO_TK_GENERAL_ERROR - One or more input arguments was invalid
PRO_TK_UNSUPPORTED - Function is not supported on given window(because
it is 2D window, like drawing or sketcher).
*/
extern ProError ProDispObjectSetSurfaceAppearanceProps( int window, int *key_list,
ProSurfaceAppearanceProps surf_appearance_props );
/*
Purpose: Sets appearance prop of a disp object attached to scene. This API
is only for 3d mode (part/assembly etc) and won't work in 2D
(drawings, sketch, CE).
Input Arguments:
window - Identifier of window in which ProDispObject will be detached
from Creo scene
key_list - ProArray containing member_identification table of
ProDispObject which will be detached from scene graph. This
is the "key_list" passed to ProDispObjectAttach plus the
"new_key
surf_appearance_props - New appearance property for display object.
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded
PRO_TK_BAD_INPUTS - Invalid window
PRO_TK_E_NOT_FOUND - ProDispObject not found in the scene graph of
window
PRO_TK_GENERAL_ERROR - One or more input arguments was invalid
PRO_TK_UNSUPPORTED - Function is not supported on given window(because
it is 2D window, like drawing or sketcher).
*/
PRO_END_C_DECLS
#endif /* PRODISPOBJECT_H */