#ifndef PRO_EXTOBJ_H #define PRO_EXTOBJ_H /* Creo Parametric TOOLKIT declarations for Pro<object> related data structures */ #include <ProToolkit.h> #include <ProObjects.h> #include <ProGeomitem.h> PRO_BEGIN_C_DECLS /* Data definitions */ typedef enum { PRO_EXTOBJDAT_DISPLAY = 1, PRO_EXTOBJDAT_SELBOX = 2 } ProExtobjdataType; typedef enum { PRO_EO_ALT_DISPLAY = (1 << 6), /* alternate display */ PRO_EO_ALT_SELECT = (1 << 7), /* alternate selection */ PRO_EO_ACT_OWN_MODIF = (1 << 9), PRO_EO_ACT_OWN_SUPPR = (1 << 10), PRO_EO_ACT_OWN_DELETE = (1 << 11), PRO_EO_ACT_REF_MODIF = (1 << 13), PRO_EO_ACT_REF_SUPPR = (1 << 14), PRO_EO_ACT_REF_DELETE = (1 << 15) } ProExtobjAction; /* ATTENTION: Adding a new action to be supported by the warning mechanism, it must be also added to PRO_EO_ALL_ACTIONS mask */ #define PRO_EO_ALL_ACTIONS (PRO_EO_ACT_OWN_MODIF | PRO_EO_ACT_OWN_SUPPR | \ PRO_EO_ACT_OWN_DELETE | PRO_EO_ACT_REF_MODIF | \ PRO_EO_ACT_REF_SUPPR | PRO_EO_ACT_REF_DELETE) /*===========================================================================*/ typedef struct Pro_Extobjdata *ProWExtobjdata; /* Generic functions */ extern ProError ProExtobjClassCreate (ProExtobjClass *extobjclass); /* Purpose: Registers a new external object class. Input Arguments: extobjclass - The handle to the external object class Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully registered the external object class. PRO_TK_E_FOUND - The external object class already exists. PRO_TK_BAD_INPUTS - There was an empty name or a negative type in the handle. PRO_TK_GENERAL_ERROR - The registration of the external object class was aborted. */ extern ProError ProExtobjClassDelete (ProExtobjClass *extobjclass); /* Purpose: Deletes the specified external object class. Input Arguments: extobjclass - The handle to the external object class. If <i>extobjclass->type</i> == PRO_VALUE_UNUSED, the function deletes all the classes that have <i>extobjclass->name</i>. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the external object class. PRO_TK_E_NOT_FOUND - The external object class was not found. PRO_TK_BAD_INPUTS - There was an empty name in the class handle. PRO_TK_GENERAL_ERROR - The registration of the external object class was aborted. */ extern ProError ProExtobjCreate (ProExtobjClass *extobjclass, ProModelitem *owner, ProExtobj *result_obj); /* Purpose: Creates a new external object. Input Arguments: extobjclass - The handle to the external object class. owner - The handle to the owner solid or item. Output Arguments: result_obj - The handle to the newly created external object. You must have previously allocated the memory for this argument. Return Values: PRO_TK_NO_ERROR - The function successfully created the external object. PRO_TK_E_NOT_FOUND - The external object class is not registered, or the owner was not found. PRO_TK_GENERAL_ERROR - The external object creation was aborted. */ extern ProError ProExtobjDelete (ProExtobj *object, ProExtobjClass *extobjclass); /* Purpose: Deletes the specified external object. Input Arguments: object - The handle of the external object to delete extobjclass - The handle to the external object class Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the external object. PRO_TK_E_NOT_FOUND - The owner was not found. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not delete the object. */ typedef ProError (*ProExtobjVisitAction) ( ProExtobj *p_extobj, ProError status, ProAppData app_data ); /* Purpose: This is the user function prototype called for visiting external objects. Input Arguments: p_extobj - The handle to the model status - The status app_data - The application data passed from the function <b>ProExtobjVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue. */ typedef ProError (*ProExtobjFilterAction) ( ProExtobj *p_extobj, ProError status, ProAppData app_data ); /* Purpose: This is the user function prototype called for visiting external objects. Input Arguments: p_extobj - The handle to the model status - The status app_data - The application data passed from the function <b>ProExtobjVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue. */ extern ProError ProExtobjVisit (ProMdl model, ProExtobjClass *extobjclass, ProExtobjVisitAction visit_action, ProExtobjFilterAction filter_action, ProAppData app_data); /* Purpose: Performs an action on several external objects. Input Arguments: model - The handle to the model. extobjclass - The handle to the external object class. visit_action - The action to perform on each external object. If the function returns anything other than PRO_TK_NO_ERROR, visiting ends. filter_action - The filter function. If NULL, all external objects are visited using the action function. app_data - The application data passed to the visiting and action functions. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully visited all the parameters. PRO_TK_E_NOT_FOUND - The function could not find the needed objects. PRO_TK_BAD_INPUTS - One or more of the input arguments are invalid. PRO_TK_BAD_CONTEXT - The owner was not found. Other - The action function returned an error. */ /* Owner object (local) - related functions */ extern ProError ProExtobjOwnerobjGet (ProExtobj *object, ProExtobjClass *extobjclass, ProModelitem *owner); /* Purpose: Retrieves the owner of an existing external object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class Output Arguments: owner - The handle to the owner Return Values: PRO_TK_NO_ERROR - The function successfully retrieved the information. PRO_TK_E_NOT_FOUND - The owner was not found. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve the information. */ extern ProError ProExtobjOwnerobjSet (ProExtobj *object, ProExtobjClass *extobjclass, ProModelitem *owner); /* Purpose: Sets the owner of an existing external object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class owner - The handle to the owner solid or item Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully set the owner. PRO_TK_E_NOT_FOUND - The owner was not found. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not set the owner. */ extern ProError ProExtobjReusableSet (ProExtobj *object); /* Purpose: Sets the reuse attribute for the specified external object. Input Arguments: object - The handle to the external object Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully set the attribute. PRO_TK_BAD_INPUTS - The specified handle was incorrect. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not set the attribute. */ extern ProError ProExtobjReusableGet (ProExtobj *object); /* Purpose: Checks for the existence of the reuse attribute of the specified external object. Input Arguments: object - The handle to the external object Output Arguments: none Return Values: PRO_TK_NO_ERROR - The reuse attribute is set. PRO_TK_NOT_FOUND - The reuse attribute is not set. PRO_TK_BAD_INPUTS - The specified handle was incorrect. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve information. */ extern ProError ProExtobjReusableClear (ProExtobj *object); /* Purpose: Clears the reuse attribute from the specified external object. Input Arguments: object - The handle to the external object Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully cleared the attribute. PRO_TK_BAD_INPUTS - The specified handle was incorrect. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not clear the attribute. */ /* Generic data-related functions */ extern ProError ProExtobjdataAdd (ProExtobj *object, ProExtobjClass *extobjclass, ProWExtobjdata obj_data); /* Purpose: Adds data to an existing external object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class obj_data - The data to add Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully added the data. PRO_TK_BAD_INPUTS - One or more of the input arguments are invalid. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not add the data. */ extern ProError ProExtobjdataSet (ProExtobj *object, ProExtobjClass *extobjclass, ProWExtobjdata obj_data); /* Purpose: Modifies the existing data in the specified object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class obj_data - The data pointer to add Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully set the data. PRO_TK_BAD_INPUTS - The data was incorrect. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not set the data. */ extern ProError ProExtobjdataRemove (ProExtobj *object, ProExtobjClass *extobjclass, ProExtobjdataType type); /* Purpose: Removes object data from an existing external object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class type - The data type to be removed Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the data. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not delete the data. */ extern ProError ProExtobjdataGet (ProExtobj *object, ProExtobjClass *extobjclass, ProExtobjdataType type, ProWExtobjdata *obj_data); /* Purpose: Retrieves the object data from an existing external object. Input Arguments: object - The handle to the external object extobjclass - The handle to the external object class type - The data type Output Arguments: obj_data - The pointer to the object data. Free this data using ProExtobjdataFree(). Return Values: PRO_TK_NO_ERROR - The function successfully retrieved the data. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve the data. */ extern ProError ProExtobjdataFree (ProWExtobjdata *disp_data); /* Purpose: Clears the display data for the specified external object. Input Arguments: disp_data - The pointer to the object data Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully cleared the data. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not clear the data. */ /* Class of External object */ extern ProError ProExtobjClassGet (ProExtobj *object, ProExtobjClass *extobjclass); /* Purpose: Retrieves the handle to the object class of the specified external object. Input Arguments: object - The handle to the external object. Output Arguments: extobjclass - The handle to the object class. You must allocate the memory for this argument. Return Values: PRO_TK_NO_ERROR - The function successfully retrieved the handle. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve the handle. */ /* External owner identifier and type */ extern ProError ProExtobjExtidSet (ProExtobj *object, int external_id); /* Purpose: Sets the external owner identifier of the specified external object. Input Arguments: object - The handle to the external object external_id - The external owner identifier Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully set the identifier. PRO_TK_BAD_INPUTS - The identifier was incorrect. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not set the identifier. */ extern ProError ProExtobjExtidGet (ProExtobj *object, int *p_external_id); /* Purpose: Retrieves the external owner identifier for the specified external object. Input Arguments: object - The handle to the external object Output Arguments: p_external_id - The external owner identifier Return Values: PRO_TK_NO_ERROR - The function successfully retrieved the information. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve the information. */ extern ProError ProExtobjExttypeSet (ProExtobj *object, int external_type); /* Purpose: Sets the external owner type for the specified external object. Input Arguments: object - The handle to the external object external_type - The type of external owner Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully set the type. PRO_TK_BAD_INPUTS - One or more of the arguments are invalid. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not set the type. */ extern ProError ProExtobjExttypeGet (ProExtobj *object, int *p_external_type); /* Purpose: Retrieves the owner type of the specified external object. Input Arguments: object - The handle to the external object Output Arguments: p_external_type - The type of the external owner Return Values: PRO_TK_NO_ERROR - The function successfully retrieved the information. PRO_TK_GENERAL_ERROR - The external object was not found, or the function could not retrieve the information. */ /* External Object Warnings */ /* Enabling warnings upon actions with owner/reference of Extobj (In Release 19.0, only warnings for PRO_EO_ACT_REF_SUPPR and PRO_EO_ACT_REF_DELETE actions are supported.) */ extern ProError ProExtobjClassWarningEnable (ProExtobjClass *extobjclass, ProExtobjAction extobjaction); /* Purpose: Enables warnings upon the specified action for the external object class (so any objects of this class that are subsequently created will inherit the enabled warning). Input Arguments: extobjclass - The handle to the external object class extobjaction - The action type for which the warning is enabled Output Arguments: none Return Values: PRO_TK_NO_ERROR - The warning is enabled for the specified external object class. PRO_TK_BAD_INPUTS - You specified an invalid class handle or an unsupported action. PRO_TK_GENERAL_ERROR - The external object class was not found, or another problem occurred. */ extern ProError ProExtobjClassWarningDisable (ProExtobjClass *extobjclass, ProExtobjAction extobjaction); /* Purpose: Disables warnings upon the specified action for the external object class (so created objects of this class that are subsequently created will inherit the disabled warning). Input Arguments: extobjclass - The handle to the external object class extobjaction - The action type for which the warning is disabled Output Arguments: none Return Values: PRO_TK_NO_ERROR - The warning is disabled for the specified external object class. PRO_TK_BAD_INPUTS - You specified an invalid class handle or an unsupported action. PRO_TK_GENERAL_ERROR - The external object class was not found, or another problem occurred. */ extern ProError ProExtobjWarningEnable (ProExtobj *object, ProExtobjAction extobjaction); /* Purpose: Enables warnings upon the specified action for the specified external object. Input Arguments: object - The handle to the external object extobjaction - The action type for which the warning is enabled Output Arguments: none Return Values: PRO_TK_NO_ERROR - The warning is enabled for the specified external object. PRO_TK_BAD_INPUTS - You specified an invalid external object handle or an unsupported action. PRO_TK_GENERAL_ERROR - The external object was not found, or another problem occurred. */ extern ProError ProExtobjWarningDisable (ProExtobj *object, ProExtobjAction extobjaction); /* Purpose: Disables warnings upon the specified action for the specified external object. Input Arguments: object - The handle to the external object extobjaction - The action type for which the warning is disabled Output Arguments: none Return Values: PRO_TK_NO_ERROR - The warning is disabled for the specified external object. PRO_TK_BAD_INPUTS - You specified an invalid external object handle or an unsupported action. PRO_TK_GENERAL_ERROR - The external object was not found, or another problem occurred. */ PRO_END_C_DECLS #endif /* PRO_EXTOBJ_H */