#ifndef PROFAMTABLE_H #define PROFAMTABLE_H /* Creo Parametric TOOLKIT declarations of ProFamtable related data structures */ #include <ProObjects.h> PRO_BEGIN_C_DECLS typedef enum pro_famtab_types { PRO_FAM_TYPE_UNUSED = PRO_VALUE_UNUSED, PRO_FAM_USER_PARAM = 1 , PRO_FAM_DIMENSION = 2 , PRO_FAM_IPAR_NOTE = 3 , PRO_FAM_FEATURE = 4 , PRO_FAM_ASMCOMP = 5 , PRO_FAM_UDF = 6 , PRO_FAM_ASMCOMP_MODEL = 8 , PRO_FAM_GTOL = 9 , PRO_FAM_TOL_PLUS = 10, PRO_FAM_TOL_MINUS = 11, PRO_FAM_TOL_PLUSMINUS = 12, PRO_FAM_SYSTEM_PARAM = 13, PRO_FAM_EXTERNAL_REFERENCE = 14, PRO_FAM_MERGE_PART_REF = 19, PRO_FAM_MP_USER_PARAM = 20, PRO_FAM_MP_SOURCE = 22, PRO_FAM_INH_PART_REF = 23, PRO_FAM_SIM_OBJ = 24, PRO_FAM_FEATURE_PARAM = 25, PRO_FAM_EDGE_PARAM = 26, PRO_FAM_SURFACE_PARAM = 27, PRO_FAM_CURVE_PARAM = 28, PRO_FAM_COMP_CURVE_PARAM = 29, PRO_FAM_QUILT_PARAM = 30, PRO_FAM_ANNOT_ELEM_PARAM = 31, PRO_FAM_CONNECTION_PARAM = 32, PRO_FAM_BODY_PARAM = 35, PRO_FAM_BODY_MP_PARAM = 36, PRO_FAM_BODY_MP_SOURCE = 37 } ProFamtabType; typedef struct pro_model_item ProFamtable; typedef struct profamtabitem { ProFamtabType type; ProFamtabClmDesc string; ProMdl owner; } ProFamtableItem; /* The field "string" above should contain a family table column name for this item (e.g., F27, M5, PARM, $d2). This name must be consistent with the type field. To construct it automatically for some types ProModelitemToFamtableItem() and ProParameterToFamtableItem() can be used; in case when type is PRO_FAM_EXTERNAL_REFERENCE the "string" field should contain a reference assembly name */ typedef struct profamtabitem *ProFamtableitemList; /* Data definitions */ /* Visit function prototype */ typedef ProError (*ProFamtableItemAction) (ProFamtableItem *famtable_item, ProError status, ProAppData app_data ); /* Purpose: This is the generic function for visiting family tables. Input Arguments: famtable_item - The family table item status - The status from <i>filter_action</i> app_data - The application data passed to <b>ProFamtableItemVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue visiting table table items. Other ProError - Stop visiting -- <b>ProFamtableItemVisit()</b> returns with the status. */ /* Filter function prototype */ typedef ProError (*ProFamtableItemFilter) (ProFamtableItem *famtable_item, ProAppData app_data ); /* Purpose: This is the generic function for filtering family table items. Input Arguments: famtable_item - The family table item app_data - The application data passed to <b>ProFamtableItemVisit()</b> Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue visiting table table items. PRO_TK_CONTINUE - Skip to the next item. Other values - The status is passed to the visit function. */ /* Generic functions */ extern ProError ProFamtableInit (ProMdl model, ProFamtable *p_famtab); /* Purpose: Initializes the family table of the specified model. Input Arguments: model - The model handle. Output Arguments: p_famtab - The handle to the family table. Return Values: PRO_TK_NO_ERROR - The function successfully initialized the handle. PRO_TK_BAD_INPUTS - The input argument is invalid. PRO_TK_UNSUPPORTED - Family table can't be created in the model. */ extern ProError ProFamtableCheck (ProFamtable *p_famtab); /* Purpose: Determines whether the family table is valid and/or empty, given its handle. Input Arguments: p_famtab - The handle to the family table Output Arguments: none Return Values: PRO_TK_NO_ERROR - The family table is found and is not empty. PRO_TK_BAD_INPUTS - The input argument is invalid (for example, the owner was not found). PRO_TK_E_NOT_FOUND - The family table was not found for the specified owner. PRO_TK_EMPTY - The family table is found and is empty. */ extern ProError ProFamtableErase (ProFamtable *p_famtab); /* Purpose: Clears the specified family table. Input Arguments: p_famtab - The handle to the family table. If the function is successful, the new values for the fields are as follows: <ul> <li>type -- PRO_TYPE_UNUSED <li>id -- PRO_VALUE_UNUSED <li>owner -- NULL </ul> Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully cleared the family table. PRO_TK_E_NOT_FOUND - The family table was not found. PRO_TK_GENERAL_ERROR - There was a general error (for example, the owner was not found). */ extern ProError ProFamtableShow (ProFamtable *p_famtab); /* Purpose: Displays the specified family table using Pro/TABLE or another text editor. Input Arguments: p_famtab - The handle to the family table Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully displayed the family table. PRO_TK_GENERAL_ERROR - The family table was not found. */ extern ProError ProFamtableEdit (ProFamtable *p_famtab); /* Purpose: Edits the specified family table using Pro/TABLE or another text editor. Input Arguments: p_famtab - The handle to the family table Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully edited the family table. PRO_TK_GENERAL_ERROR - There was a general error (for example, the owner was not found). */ /* Generic functions to deal with family table items */ extern ProError ProFamtableItemAdd (ProFamtable *p_famtab, ProFamtableItem *item); /* Purpose: Adds the specified item to the family table of the model. Input Arguments: p_famtab - The handle to the family table item - The item to add to the table Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully added the item to the family table. PRO_TK_NO_CHANGE - The specified item already exists in the family table. PRO_TK_GENERAL_ERROR - There was a general error (for example, the owner of the item is not in session, or the family table was not found). */ extern ProError ProFamtableItemRemove (ProFamtable *p_famtab, ProFamtableItem *item); /* Purpose: Deletes the specified item from the family table. Input Arguments: p_famtab - The handle to the family table item - The item to remove Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully deleted the item from the family table. PRO_TK_E_NOT_FOUND - The specified item was not found in the family table. PRO_TK_GENERAL_ERROR - There was a general error (for example, the model is not in session). */ extern ProError ProFamtableItemVisit ( ProFamtable *p_famtab, ProFamtableItemAction visit_action, ProFamtableItemFilter filter_action, ProAppData app_data); /* Purpose: Visits all the items in a family table. Input Arguments: p_famtab - The handle to the family table. visit_action - The action to perform on each item. If it returns anything other than PRO_TK_NO_ERROR, visiting stops. filter_action - The filter function. If NULL, all items are visited using the action function. app_data - The application data passed to the visiting and filter functions. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully visited all the items. PRO_TK_BAD_INPUTS - One or more inputs was invalid. Other - Any other value is the value returned by the action function (visiting stopped). */ extern ProError ProModelitemToFamtableItem ( ProModelitem *p_item, ProFamtableItem *r_fam_item); /* Purpose: Converts a <i>ProModelitem</i> to a <i>ProFamtableItem</i>. <P>Types supported for conversion here: <table> <tr><td><b>ProType</b></td><td><b>ProFamtabType</b></td></tr> <tr><td>PRO_FEATURE</td><td>PRO_FAM_FEATURE</td></tr> <tr><td>PRO_DIMENSION</td><td>PRO_FAM_DIMENSION</td></tr> <tr><td>PRO_IPAR_NOTE</td><td>PRO_FAM_IPAR_NOTE</td></tr> <tr><td>PRO_UDF</td><td>PRO_FAM_UDF</td></tr> <tr><td>PRO_SUB_ASSEMBLY</td><td>PRO_FAM_ASMCOMP</td></tr> <tr><td>PRO_GTOL</td><td>PRO_FAM_GTOL</td></tr> </table> Input Arguments: p_item - The model item Output Arguments: r_fam_item - The family table item Return Values: PRO_TK_NO_ERROR - The family table item handler is successfully initiated. Other - The conversion failed. */ extern ProError ProFamtableItemToModelitem ( ProFamtableItem *p_fam_item, ProModelitem *r_item); /* Purpose: Converts a <i>ProFamtableItem</i> to a <i>ProModelitem</i>. <P>Types supported for conversion here: <table> <tr><td><b>ProType</b></td><td><b>ProFamtabType</b></td></tr> <tr><td>PRO_FEATURE</td><td>PRO_FAM_FEATURE</td></tr> <tr><td>PRO_DIMENSION</td><td>PRO_FAM_DIMENSION</td></tr> <tr><td>PRO_IPAR_NOTE</td><td>PRO_FAM_IPAR_NOTE</td></tr> <tr><td>PRO_UDF</td><td>PRO_FAM_UDF</td></tr> <tr><td>PRO_SUB_ASSEMBLY</td><td>PRO_FAM_ASMCOMP</td></tr> <tr><td>PRO_GTOL</td><td>PRO_FAM_GTOL</td></tr> </table> Input Arguments: p_fam_item - The family table item Output Arguments: r_item - The model item Return Values: PRO_TK_NO_ERROR - The model item is successfully initiated. Other - The conversion failed. */ extern ProError ProFamtableItemToParameter ( ProFamtableItem *p_item, ProParameter *r_parameter); /* Purpose: Converts a <i>ProFamtableItem</i> to a <i>ProParameter</i>. <P>Types supported for conversion here: <ul> <li>PRO_FAM_USER_PARAM <li>PRO_FAM_SYSTEM_PARAM <li>PRO_FAM_MP_USER_PARAM <li>PRO_FAM_MP_SOURCE <li>PRO_FAM_FEATURE_PARAM <li>PRO_FAM_EDGE_PARAM <li>PRO_FAM_SURFACE_PARAM <li>PRO_FAM_CURVE_PARAM <li>PRO_FAM_COMP_CURVE_PARAM <li>PRO_FAM_QUILT_PARAM <li>PRO_FAM_ANNOT_ELEM_PARAM <li>PRO_FAM_CONNECTION_PARAM </ul> Input Arguments: p_item - The family table item Output Arguments: r_parameter - The parameter Return Values: PRO_TK_NO_ERROR - The function successfully converted the family table item. Other - The conversion failed. */ extern ProError ProParameterToFamtableItem ( ProParameter *p_parameter, ProFamtableItem *r_item); /* Purpose: Converts a <i>ProParameter</i> to a <i>ProFamtableItem</i>. <P>Types supported for conversion here: <ul> <li>PRO_FAM_USER_PARAM <li>PRO_FAM_SYSTEM_PARAM <li>PRO_FAM_MP_USER_PARAM <li>PRO_FAM_MP_SOURCE <li>PRO_FAM_FEATURE_PARAM <li>PRO_FAM_EDGE_PARAM <li>PRO_FAM_SURFACE_PARAM <li>PRO_FAM_CURVE_PARAM <li>PRO_FAM_COMP_CURVE_PARAM <li>PRO_FAM_QUILT_PARAM <li>PRO_FAM_ANNOT_ELEM_PARAM <li>PRO_FAM_CONNECTION_PARAM </ul> Input Arguments: p_parameter - The parameter Output Arguments: r_item - The family table item Return Values: PRO_TK_NO_ERROR - The function successfully converted the parameter. Other - The conversion failed. */ extern ProError ProFamtableIsModifiable (ProFamtable* p_famtab, ProBoolean show_ui, ProBoolean* can_modify); /* Purpose: Check if a given Family table is modifiable. Input Arguments: p_famtab - Family table to check access to. show_ui - Indicates whether the Conflicts dialog should be shown to user to resolve conflicts (if they are detected); when set to PRO_B_FALSE no UI is enabled and the Family table is considered as modifiable if there are no conflicts that could not be overridden or resolved by default resolution actions. Output Arguments: can_modify - The access status. If it is PRO_B_TRUE, the family table is modifiable. Return Values: PRO_TK_NO_ERROR - The function successfully retieved the information. PRO_TK_BAD_INPUTS - One or more arguments are invalid. PRO_TK_GENERAL_ERROR - The function could not check access to the Family table. */ PRO_END_C_DECLS #endif /* PROFAMTABLE_H */