#ifndef PROREFINFO_H #define PROREFINFO_H /* Creo Parametric TOOLKIT declarations for Pro<object> related data structures */ #include <ProToolkit.h> #include <ProObjects.h> #include <ProCopyGeom.h> PRO_BEGIN_C_DECLS typedef enum { PRO_EXT_GEOM_REF = 1, /* all out of solid references, created in assembly context, kept in plins, sections, draft sections */ PRO_LOC_GEOM_REF = 2, /* local for solid references, kept in plins, sections, draft sections */ PRO_MERGE_REF = 3, /* reference models of merge by ref feats */ PRO_EXT_REL_REF = 4, /* out of solid references, , kept in symbols used for relations. Can be "to solid" or feature, geometry references. */ PRO_LOC_REL_REF = 5, /* local for solid references, kept in symbols used for relations. Can be "to solid" or feature, geometry references. */ PRO_PRGM_REF = 6, /* out of solid references, , kept in symbols used in Pro/Program. Always solid references */ PRO_MOVE_COMP_REF = 7, /* Move Components external references. Kept in components and always "to solid". This reference is not present in models created after Creo Elements/Pro 5.0 */ PRO_SUBS_REF = 8, /* Substitute Component references. Kept in components and always "to solid"*/ PRO_MFG_INFO_REF = 9, /* Mfg Info references. Kept in mfg feat, always "to solid" */ PRO_INTRCH_REF = 10, /* Interchange Assembly references. Kept in the solid itself. Always "to solid" */ PRO_HARN_REF = 11, /* Harness references. Kept in the solid itself. Always "to solid" */ PRO_FEAT_PAT_REF = 12, /* Feature pattern references. Does not include pattern relation references. Always "to solid" */ PRO_NON_ASSY_GEOM_REF = 13, /* Out of solid external geometry refs, created not in assembly context, kept in plins. (used in external geom copy feature). */ PRO_DIM_BOUND_REF = 14, /* Dim. bound references. Kept in the solid itself. Always "to solid" */ PRO_HIDDEN_FEM_REFS = 15, /* Hidden Simulate features references. Kept in the solid itself. Always "to solid" */ PRO_ANALYSIS_REF = 16, /* Hidden analysis features references. Kept in the solid itself. Always "to solid" */ PRO_FEAT_PAT_LOC_REF = 17, /* References between pat. leader and member or between pat. group headers */ PRO_DEPENDENCY_REFS = 18, /* All types of references collected via collect dependencies mechanism. This type is not included in COLL_ALL_REFS_TYPE, it should be invoked separately. */ PRO_IN_CIRCLE_REFS = 19, /* References encountered in assembly loops. This is reserved for future use */ PRO_MEMBER_REFS = 20, /* Component models of assembly members. This type is not included in COLL_ALL_REFS_TYPE, it should be invoked separately. */ PRO_LOC_MERGE_REF = 21, /* Merge reference of mirror geom. Always "to solid" */ PRO_ALL_EXT_REF_TYPES = 100, /* Same as PRO_ALL_REF_TYPES except for PRO_LOC_GEOM_REF, PRO_LOC_REL_REF, PRO_LOC_MERGE_REF, PRO_FEAT_PAT_LOC_REF */ PRO_ALL_REF_TYPES = 101 /* All known types of references, except for PRO_DEPENDENCY_REFS,PRO_IN_CIRCLE_REFS and PRO_MEMBER_REFS. */ } ProExtRefType; /* types of references */ /****************************************************************************** ProRefState should be kept fully synchronized with ProCopiedRefStateDetails. *****************************************************************************/ typedef enum { PRO_REF_NOT_FOUND = PRO_COPIED_REF_DETAILS_NOT_FOUND, /* references are not found */ PRO_REF_ACTIVE = PRO_COPIED_REF_DETAILS_ACTIVE, /* referenced entity on the "master" model is up to date */ PRO_REF_EXCLUDED = PRO_COPIED_REF_DETAILS_EXCLUDED, /* "master" model currently is excluded by Simp Rep or by Family Table. */ PRO_REF_FROZEN = PRO_COPIED_REF_DETAILS_FROZEN, /* "master" model currently is not in the session */ PRO_REF_SUPPRESSED = PRO_COPIED_REF_DETAILS_SUPPRESSED, /* referenced entity is suppressed in the "master" model */ PRO_REF_MISSING = PRO_COPIED_REF_DETAILS_MISSING, /* referenced entity is missing in the "master" model */ PRO_REF_FROZEN_PLACE=PRO_COPIED_REF_DETAILS_FROZEN_PLACE, /* referenced entity on the "master" model is up to date but location of "target" model according to "master" model can not be updated */ PRO_REF_INVALID = 8, /* Referenced entity is not valid. For example: - Straight edge becomes non straight; - Planar surface becomes non planar; */ PRO_REF_ALTERNATE = 9, PRO_REF_QUILT = PRO_COPIED_REF_DETAILS_QUILT, PRO_REF_WARNING = 13 /* Referenced entity has warning. */ } ProRefState; /* state of referenced entity in the "master" model */ typedef enum _pro_dep_report_type { PRO_REPORT_TYPE_CSV, PRO_REPORT_TYPE_XML } ProDepReportType; /* NOTE: values 2, 11, 12, 13 are intentionally skipped in ProRefState for consistency sake with ProCopiedRefStateDetail. ProRefState should be synchronized with ProCopiedRefStateDetail */ typedef struct ext_feat_ref *ProExtFeatRef; /* opaque pointer */ typedef struct { ProExtRefType type; ProExtFeatRef *ext_refs; int n_refs; } ProExtRefInfo; extern ProError ProFeatureExternChildrenGet (ProFeature *feature, ProExtRefType child_type, ProExtRefInfo **r_child_infos, int *n_infos); /* Purpose: Collect data on external (and local) children of the specified feature according to the specified reference type. Input Arguments: feature - The handle to a feature to be checked. child_type - The type of required references. PRO_ALL_REF_TYPES means both local and external references will be collected. PRO_LOC_GEOM_REF, PRO_LOC_REL_REF, PRO_FEAT_PAT_LOC_REF and PRO_LOC_MERGE_REF means only local references will be collected. The rest types causes only external references to be collected. Output Arguments: r_child_infos - Array of children found. Allocated inside function when any children are of child_type are found. n_infos - Number of elements in r_child_infos. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - Invalid feature handler or invalid reference type, r_child_infos is NULL, or n_infos is NULL. PRO_TK_NOT_VALID - Required license not found. PRO_TK_E_NOT_FOUND - No children of child_type are found. PRO_TK_E_IN_USE - (*r_infos) is not NULL. PRO_TK_OUT_OF_MEMORY - There are too many references in model to fit them into an array. Some references will be excluded. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProFeatureExternParentsGet (ProFeature *feature, ProExtRefType parent_type, ProExtRefInfo **r_parent_infos, int *n_infos); /* Purpose: Collect data on external (and local) parents of the specified feature according to the specified reference type. Input Arguments: feature - The handle to a feature to be checked. parent_type - The type of required references. PRO_ALL_REF_TYPES means both local and external references will be collected. PRO_LOC_GEOM_REF, PRO_LOC_REL_REF, PRO_FEAT_PAT_LOC_REF and PRO_LOC_MERGE_REF means only local references will be collected. The rest types causes only external references to be collected. Output Arguments: r_parent_infos - Array of parents found. Allocated inside function when any parents are of parent_type are found. n_infos - Number of elements in r_parent_infos. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - Invalid feature handler or invalid reference type, or r_parent_infos is NULL, or n_infos is NULL. PRO_TK_NOT_VALID - Required license not found. PRO_TK_E_NOT_FOUND - No parents of parent_type are found. PRO_TK_E_IN_USE - (*r_infos) is not NULL. PRO_TK_OUT_OF_MEMORY - There are too many references in model to fit them into an array. Some references will be excluded. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProSolidExternChildrenGet (ProSolid solid, ProExtRefType child_type, ProExtRefInfo **r_child_infos, int *n_infos); /* Purpose: Collect data on external children of the features of the specified solid according to the specified reference type. Input Arguments: solid - The handle to a solid to be checked. child_type - The type of required references. PRO_ALL_REF_TYPES means both local and external references will be collected. PRO_LOC_GEOM_REF, PRO_LOC_REL_REF, PRO_FEAT_PAT_LOC_REF and PRO_LOC_MERGE_REF means only local references will be collected. The rest types causes only external references to be collected. Output Arguments: r_child_infos - Array of children found. Allocated inside function when any children are of child_type are found. n_infos - Number of elements in r_child_infos. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - Invalid solid handler or invalid reference type, or r_child_infos is NULL, or n_infos is NULL. PRO_TK_NOT_VALID - Required license not found. PRO_TK_E_NOT_FOUND - No children of child_type are found. PRO_TK_E_IN_USE - (*r_infos) is not NULL. PRO_TK_OUT_OF_MEMORY - There are too many references in model to fit them into an array. Some references will be excluded. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProSolidExternParentsGet (ProSolid solid, ProExtRefType parent_type, ProExtRefInfo **r_parent_infos, int *n_infos); /* Purpose: Collect data on external parents of the features of the specified solid according to the specified reference type. Input Arguments: solid - The handle to a solid to be checked. parent_type - The type of required references. PRO_ALL_REF_TYPES means both local and external references will be collected. PRO_LOC_GEOM_REF, PRO_LOC_REL_REF, PRO_FEAT_PAT_LOC_REF and PRO_LOC_MERGE_REF means only local references will be collected. The rest types causes only external references to be collected. Output Arguments: r_parent_infos - Array of parents found. Allocated inside function when any parents are of parent_type are found. n_infos - Number of elements in r_parent_infos. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - Invalid solid handler or invalid reference type, or r_parent_infos is NULL, or n_infos is NULL. PRO_TK_NOT_VALID - Required license not found. PRO_TK_E_NOT_FOUND - No parents of parent_type are found. PRO_TK_E_IN_USE - (*r_infos) is not NULL. PRO_TK_OUT_OF_MEMORY - There are too many references in model to fit them into an array. Some references will be excluded. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProExtRefInfoFree (ProExtRefInfo **p_ext_feat_ref_arr); /* Purpose: Releases the memory allocated to the specified array of external reference data for a feature or a solid. Input Arguments: p_ext_feat_ref_arr - The pointer to array of external reference data returned by a ProFeature or ProSolid external reference "get" such as ProSolidExternChildrenGet. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully released the specified array. PRO_TK_BAD_INPUTS - p_ext_feat_ref_arr is NULL. */ /* Functions to get data from ProExtFeatRef : */ extern ProError ProExtRefTypeGet (ProExtFeatRef ext_ref, ProType *r_ref_type); /* Purpose: Gets type of the external (or local) reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: r_ref_type - Type of specified reference. Return Values: PRO_TK_NO_ERROR - The function successfully got the reference type. PRO_TK_E_NOT_FOUND - The type of reference is not found. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. */ extern ProError ProExtRefAsmcompsGet (ProExtFeatRef ext_ref, ProAsmcomppath *own_comp, ProAsmcomppath *ref_comp); /* Purpose: Gets from the external reference a path to the component from which the reference was created. Also returns a path to the component that owns the specified external reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: own_comp - Handle to path to model to be initialized that uses the specified reference. Can be NULL. ref_comp - Handle to path to top-level (master) model to be initialized. This is the model in which the specified reference was created. Can be NULL. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - own_comp or ref_comp not found in current session. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProExtRefOwnMdlGet (ProExtFeatRef ext_ref, ProSolid *p_ref_owner); /* Purpose: Gets from the external reference a solid that is active in the current session and that uses the reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_ref_owner - Pointer to the model which uses the reference. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - Required model not found in current session. */ extern ProError ProExtRefMdlGet (ProExtFeatRef ext_ref, ProSolid *p_ref_model); /* Purpose: Gets from the external reference a solid that is active in the current session and that is referred to by the specified reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_ref_model - Pointer to the model which was referenced. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - Required model not found in current session. */ extern ProError ProExtRefOwnFeatGet (ProExtFeatRef ext_ref, ProFeature *p_own_feat); /* Purpose: Gets from the external reference a feature that uses the reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_own_feat - The handle to the feature which uses the reference. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - The reference is used by solid itself and not by some specific feature. */ extern ProError ProExtRefFeatGet (ProExtFeatRef ext_ref, ProFeature *p_ref_feat); /* Purpose: Gets from the external reference a feature that is referred to by the external reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_ref_feat - The referenced feature handle to be initialized. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - The reference does not belong to any existing component in the "master" model feature. */ extern ProError ProExtRefModelitemGet (ProExtFeatRef ext_ref, ProModelitem *p_ref_item); /* Purpose: Gets from the external reference a model item that is referred to by the external reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_ref_item - The item handle to be initialized. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_E_NOT_FOUND - The referenced item is not active. */ extern ProError ProExtRefStateGet (ProExtFeatRef ext_ref, ProRefState *p_ref_state); /* Purpose: Retrieves the external reference status of the referenced item of the specified reference. Input Arguments: ext_ref - The opaque pointer to the feature reference structure. Output Arguments: p_ref_state - The current state of the referenced item in the "master" model. Return Values: PRO_TK_NO_ERROR - The function successfully returned the information. PRO_TK_BAD_INPUTS - ext_ref is NULL or bad pointer. PRO_TK_GENERAL_ERROR - The operation failed. */ extern ProError ProExtRefInfoExport (ProExtRefInfo *info_arr, ProPath w_fname, ProDepReportType n_rep_type); /* Purpose: Prints out dependency report in different formats. Input Arguments: info_arr - Collected references from ProSolidExternParentsGet / ProFeatureExternParentsGet called with PRO_DEPENDENCY_REFS flag (not PRO_ALL_EXT_REF_TYPES/PRO_ALL_REF_TYPES). Array, must be freed by caller. References that are not dependencies will be ignored. w_fname - File name to print report to. n_rep_type - Type of report format. Currently only csv and basic XML are supported. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully performed the operation. PRO_TK_CANT_OPEN - Can not open report file. PRO_TK_E_NOT_FOUND - Unrecognized report type. */ extern ProError ProExtRefIsDependency (ProExtFeatRef p_ext_ref, ProBool *r_status); /* Purpose: Returns indication whether given reference is dependency. Input Arguments: p_ext_ref - The opaque pointer to the feature reference structure, taken from output of ProSolidExternParentsGet / ProFeatureExternParentsGet. Output Arguments: r_status - Pointer to status indicating whether reference is dependency. Return Values: PRO_TK_NO_ERROR - The function successfully performed the operation. PRO_TK_BAD_INPUTS - If no reference was given (NULL pointer). */ extern ProError ProExtRefDependencyIsBreakable (ProExtFeatRef *ext_ref_arr, ProBool *r_status); /* Purpose: Returns indication that some of the given dependencies can be broken. Input Arguments: ext_ref_arr - The array of opaque pointers to the feature reference structure, taken from output of ProSolidExternParentsGet / ProFeatureExternParentsGet. Output Arguments: r_status - Pointer to status indicating whether dependency is breakable. Return Values: PRO_TK_NO_ERROR - The function successfully performed the operation. PRO_TK_BAD_INPUTS - If no references was given (NULL pointer or empty array). */ extern ProError ProExtRefBreakDependency (ProExtFeatRef *ext_ref_arr); /* Purpose: From given proarray of references, break those which are breakable. Input Arguments: ext_ref_arr - The array of opaque pointers to the feature reference structure. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function successfully performed the operation. PRO_TK_BAD_INPUTS - If no references was given (NULL pointer or empty array). */ PRO_END_C_DECLS #endif /* PROREFINFO_H */