#ifndef PROANNOTATIONELEM_H #define PROANNOTATIONELEM_H #include <ProObjects.h> #include <ProSelection.h> #include <ProAsmcomppath.h> #include <ProReference.h> #include <ProCollect.h> PRO_BEGIN_C_DECLS typedef enum { PRO_ANNOT_REF_SINGLE, PRO_ANNOT_REF_CRV_COLLECTION, PRO_ANNOT_REF_SRF_COLLECTION } ProAnnotationRefType; typedef struct pro_annot_reference { ProAnnotationRefType type; union { ProReference reference; ProCollection collection; } object; } ProAnnotationReference; typedef enum { PRO_ANNOT_TYPE_NONE = 0, PRO_ANNOT_TYPE_NOTE = PRO_NOTE, PRO_ANNOT_TYPE_GTOL = PRO_GTOL, PRO_ANNOT_TYPE_SRFFIN = PRO_SURF_FIN, PRO_ANNOT_TYPE_SYMBOL = PRO_SYMBOL_INSTANCE, PRO_ANNOT_TYPE_DRVDIM = PRO_DIMENSION, PRO_ANNOT_TYPE_REFDIM = PRO_REF_DIMENSION, PRO_ANNOT_TYPE_SET_DATUM_TAG = PRO_SET_DATUM_TAG, PRO_ANNOT_TYPE_CUSTOM = PRO_CUSTOM_ANNOTATION, PRO_ANNOT_TYPE_DRIVINGDIM = PRO_ANNOT_ELEM_DRIVING_DIM } ProAnnotationType; typedef enum { PRO_ANNOTATION_REF_ALL, PRO_ANNOTATION_REF_WEAK, PRO_ANNOTATION_REF_STRONG } ProAnnotationRefFilter; typedef enum { PRO_ANNOT_REF_FROM_ALL, PRO_ANNOT_REF_FROM_ANNOTATION, PRO_ANNOT_REF_FROM_USER } ProAnnotationRefFromType; typedef ProError (*ProAnnotationelemVisitAction) (ProAnnotationElem *element, ProError filter_status, ProAppData data); /* Purpose: This is the generic function for visiting an annotation element. Input Arguments: element - The annotation element filter_status - The filter function status data - The application data passed to the calling function Output Arguments: none Return Values: PRO_TK_NO_ERROR - Continue visiting. Other - Stop visiting and pass this error status to the calling function. */ typedef ProError (*ProAnnotationelemFilterAction) (ProAnnotationElem *element, ProAppData data); /* Purpose: This is the generic function for filtering an annotation element. Input Arguments: element - The annotation element data - The application data passed to the calling function Output Arguments: none Return Values: PRO_TK_CONTINUE - Skip visiting this element and go to the next. Other - Call the visit action for this element. The return value is passed as input to the visit action. */ extern ProError ProFeatureAnnotationelemsVisit (ProFeature* feat, ProAnnotationelemVisitAction visit_action, ProAnnotationelemFilterAction filter_action, ProAppData data); /* Purpose: Visits the annotation elements in a given feature. Licensing Requirement: UNRECOGNIZED Input Arguments: feat - The feature. visit_action - The visit function for the annotation elements. filter_action - The filter function for the annotation elements. Can be NULL. data - Application data passed to the visit and filter actions. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - No annotation elements were found in the feature. Other - Error returned by the visit action. */ extern ProError ProSolidAnnotationelemsVisit (ProSolid solid, ProAnnotationelemVisitAction visit_action, ProAnnotationelemFilterAction filter_action, ProAppData data); /* Purpose: Visits the annotation elements in a given model. Licensing Requirement: UNRECOGNIZED Input Arguments: solid - The solid model. visit_action - The visit function for the annotation elements. filter_action - The filter function for the annotation elements. Can be NULL. data - Application data passed to the visit and filter actions. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - No annotation elements were found in the model. Other - Error returned by the visit action. */ extern ProError ProAnnotationelemFeatureGet (ProAnnotationElem *element, ProFeature *feat); /* Purpose: Gets the feature that owns an annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: feat - The feature that owns the element. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. */ extern ProError ProAnnotationelemTypeGet( ProAnnotationElem *element, ProAnnotationType *type); /* Purpose: Gets the type of annotation contained in an annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: type - The annotation type. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. */ extern ProError ProAnnotationelemAnnotationGet( ProAnnotationElem *element, ProAnnotation *annotation); /* Purpose: Gets the annotation contained in an annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: annotation - The annotation. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element does not contain an annotation. */ extern ProError ProAnnotationelemAnnotationSet (ProSelection element, ProAnnotation *annotation); /* Purpose: Sets the annotation contained in an annotation element. <B>Note:</B>If the annotation element already had an annotation assigned to it, that annotation will be detached from the element and owned at the model level. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. annotation - The annotation. Pass NULL to set the element to be general. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_NO_CHANGE - The annotation is already contained in this element. PRO_TK_UNATTACHED_FEATS - Modification was aborted due to regeneration failure. PRO_TK_INVALID_TYPE - You cannot assign this type of annotation to the annotation element PRO_TK_CANT_MODIFY - datum target annotation element or annotation are not permitted for this function */ extern ProError ProAnnotationelemReferencesCollect( ProAnnotationElem *element, ProAnnotationRefFilter ref_type, ProAnnotationRefFromType source, ProAnnotationReference **references); /* Purpose: Gets the references contained in an annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. ref_type - The type of references to collect (weak, strong, or all). source - The source of the references (from the annotation, from the user, or all). Output Arguments: references - The annotation references. Free this using ProAnnotationreferencearrayFree(). Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element does not contain any references of the indicated type. PRO_TK_INVALID_TYPE - References from driving dimension annotation elements cannot be accessed. */ extern ProError ProAnnotationreferencearrayFree (ProAnnotationReference* reference_array); /* Purpose: Frees all memory owned by the annotation reference array. Licensing Requirement: UNRECOGNIZED Input Arguments: reference_array - The reference array. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. */ extern ProError ProAnnotationelemReferenceAdd( ProSelection element, ProBoolean allow_fix_ui, ProAnnotationReference *reference); /* Purpose: Adds a strong reference to the annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference adding. reference - The item to use as a strong reference. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_FOUND - The annotation element already has a reference to this item. PRO_TK_CANT_MODIFY - User defined references are not permitted for driving dimension annotation elements. */ extern ProError ProAnnotationelemReferenceRemove( ProSelection element, ProBoolean allow_fix_ui, ProAnnotationReference *reference); /* Purpose: Removes a user-added reference from the annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference removal. reference - The reference to remove. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element does not contain this reference. PRO_TK_BAD_CONTEXT - This reference is provided from the annotation and cannot be removed. PRO_TK_UNATTACHED_FEATS - Removal was aborted due to regeneration failure. */ extern ProError ProAnnotationelemReferencesSet( ProSelection element, ProBoolean allow_fix_ui, ProAnnotationReference *references); /* Purpose: Replaces all of the annotation element's user-defined references with the indicated sets. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference setting. references - ProArray of annotation references. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_BAD_CONTEXT - The reference array contains the same reference more than once. PRO_TK_UNATTACHED_FEATS - Reference modification was aborted due to regeneration failure. PRO_TK_CANT_MODIFY - User defined references are not permitted for driving dimension annotation elements. */ extern ProError ProAnnotationelemReferenceStrengthen( ProSelection element, ProBoolean allow_fix_ui, ProAnnotationReference *reference); /* Purpose: Converts a weak reference to a strong reference. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference's attribute changing. reference - The item to use as a strong reference. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this weak reference. PRO_TK_CANT_WRITE - This weak reference may not be strengthened due to the rules for the individual annotation. */ extern ProError ProAnnotationelemReferenceWeaken( ProSelection element, ProBoolean allow_fix_ui, ProAnnotationReference *reference); /* Purpose: Converts a strong reference to a weak reference. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference's attribute changing. reference - The item to use as a weak reference. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this strong reference. PRO_TK_CANT_WRITE - This strong reference may not be weakened due to the rules for the individual annotation. */ extern ProError ProAnnotationelemIsDependent (ProAnnotationElem *element, ProBoolean *dependent); /* Purpose: Gets the dependency flag of the specified annotation element. Applicable only for annotation elements owned by data sharing features. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: dependent - PRO_B_TRUE if the annotation element is dependent on its parent, PRO_B_FALSE if not. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_CANT_ACCESS - The element is not owned by a data sharing feature. */ extern ProError ProAnnotationelemDependencySet( ProSelection element, ProBoolean allow_fix_ui, ProBoolean dependent); /* Purpose: Sets the dependency flag of the specified annotation element. Applicable only for annotation elements owned by data sharing features. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference's attribute changing. dependent - PRO_B_TRUE if the annotation element is dependent on its parent, PRO_B_FALSE if not. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_NO_CHANGE - The input flag is the same as the current value. PRO_TK_CANT_ACCESS - The element is not owned by a data sharing feature. PRO_TK_E_NOT_FOUND - The data sharing feature's parent model is not in memory. PRO_TK_NOT_VALID - The element is owned by an independent feature. */ extern ProError ProAnnotationelemCopyGet (ProAnnotationElem *element, ProBoolean *copy); /* Purpose: Gets the copy flag of the specified annotation element (determines if references will be copied into the element). Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: copy - PRO_B_TRUE if the annotation element contains copies of its references, PRO_B_FALSE if not. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. */ extern ProError ProAnnotationelemCopySet ( ProSelection element, ProBoolean allow_fix_ui, ProBoolean copy); /* Purpose: Sets the copy flag of the specified annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference's attribute changing. copy - PRO_B_TRUE if the annotation element is dependent on its parent, PRO_B_FALSE if not. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_NO_CHANGE - The input flag is the same as the current value. PRO_TK_UNATTACHED_FEATS - Reference modification was aborted due to regeneration failure. */ extern ProError ProAnnotationelemIsIncomplete( ProAnnotationElem *element, ProBoolean *is_incomplete); /* Purpose: Identifies if the annotation element is incomplete due to missing strong references. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. Output Arguments: is_incomplete - PRO_B_TRUE if the annotation element has missing strong references, PRO_B_FALSE overvise. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. */ extern ProError ProAnnotationelemReferenceIsStrong( ProAnnotationElem *element, ProAnnotationReference *reference, ProBoolean *is_strong); /* Purpose: Identifies if a reference is weak or strong in a given annotation element. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. reference - The reference item. Output Arguments: is_strong - PRO_B_TRUE if the reference is strong, PRO_B_FALSE if it is weak. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this reference. */ extern ProError ProAnnotationelemReferenceDescriptionSet( ProAnnotationElem* element, ProAnnotationReference *reference, ProLine description); /* Purpose: Sets the description property for a given annotation element reference. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. If the annotation element belongs to an assembly, component path must be specified. reference - The reference. description - The description for the annotation element. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this reference. */ extern ProError ProAnnotationelemReferenceDescriptionGet( ProAnnotationElem* element, ProAnnotationReference* reference, ProLine description); /* Purpose: Gets the description property for a given annotation element reference. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. reference - The reference. Output Arguments: description - The description for the annotation element. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this reference. */ extern ProError ProAnnotationelemReferenceAutopropagateGet( ProSelection element, ProAnnotationReference *reference, ProBoolean *autopropagate); /* Purpose: Gets the autopropagate flag of the specified annotation element reference.Applicable only for annotation elements owned in annotation features. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. reference - The annotation element reference. Output Arguments: autopropagate - PRO_B_TRUE if the annotation element reference will be automatically propagated when data sharing features are created, PRO_B_FALSE if not. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_BAD_CONTEXT - The element is not owned by an annotation feature. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this reference PRO_TK_INVALID_TYPE - This type of reference does not have an autopropagate flag. PRO_TK_NO_LICENSE - License check failure. */ extern ProError ProAnnotationelemReferenceAutopropagateSet( ProSelection element, ProAnnotationReference *reference, ProBoolean autopropagate); /* Purpose: Sets the autopropagate flag of the specified annotation element reference. Applicable only for annotation elements owned in annotation features. Licensing Requirement: UNRECOGNIZED Input Arguments: element - The annotation element. reference - The annotation element reference. autopropagate - PRO_B_TRUE if the annotation element reference will be automatically propagated when data sharing features are created, PRO_B_FALSE if not. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_BAD_CONTEXT - The element is not owned by an annotation feature. PRO_TK_E_NOT_FOUND - The annotation element doesn't contain this reference PRO_TK_NO_CHANGE - Reference autopropagate flag is already set to the input value. PRO_TK_INVALID_TYPE - This type of reference does not have an autopropagate flag. PRO_TK_NO_LICENSE - License check failure. */ extern ProError ProAnnotationelemAutopropagate ( void ); /* Purpose: Automatically propagates annotation elements within the current model to the currently selected feature based on the standard Creo Parametric algorithm. The behavior is based on the current contents of the selection buffer. Licensing Requirement: UNRECOGNIZED Input Arguments: none Output Arguments: none Return Values: PRO_TK_NO_ERROR - Annotation elements were successfully propagated to the selected feature. PRO_TK_BAD_CONTEXT - The current selections do not allow propagation of annotation elements. PRO_TK_NO_LICENSE - No license is available for this function. See Also: ProSelbufferSelectionsGet() */ extern ProError ProAnnotationelemQuiltreferenceSurfacesCollect( ProAnnotationElem* elem, ProAnnotationReference* reference, ProSelection** surfaces); /* Purpose: Returns the surfaces which make up a quilt surface collection reference for the annotation element. This will even return the surfaces for a quilt which has been made inactive by features occurring after the annotation element in the model regeneration. Input Arguments: elem - The annotation element. reference - The reference (obtained from ProAnnotationelemReferencesCollect(), which must contain a surface collection of type PRO_SURFCOLL_QUILT_SRFS. Output Arguments: surfaces - ProArray of selections of surface references, suitable for use for highlighting. Free this using ProSelectionarrayFree(). Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. PRO_TK_INVALID_TYPE - The input reference type was not valid. */ typedef ProAppData ProAnnotationReferenceSet; extern ProError ProAnnotationelemArrayReferencesSet(ProSelection feature, ProAnnotationElem *element, ProBoolean allow_fix_ui, ProAnnotationReferenceSet *reference_set); /* Purpose: Replaces all of the each of the annotation elements' user-defined references with the indicated sets. Licensing Requirement: UNRECOGNIZED Input Arguments: feature - The feature which owns all of the annotation elements. If the feature's references are to other members of an assembly, the component path must be specified. element - ProArray of annotation elements. All of these elements must belong to the same feature. allow_fix_ui - PRO_B_TRUE to bring up the Fix Model UI in the event of regeneration failure; PRO_B_FALSE to abort the reference setting. reference_set - ProArray of annotation reference sets. The number of sets should match the number of elements to be modified. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more inputs was invalid. PRO_TK_BAD_CONTEXT - The reference array contains the same reference more than once. PRO_TK_UNATTACHED_FEATS - Reference modification was aborted due to regeneration failure. PRO_TK_CANT_MODIFY - User defined references are not permitted for driving dimension annotation elements. PRO_TK_E_AMBIGUOUS - The number of reference sets does not match the number of elements supplied. PRO_TK_INVALID_ITEM - One or more annotation elements do not belong to the owner feature. */ extern ProError ProAnnotationreferencesetAlloc( ProAnnotationReferenceSet* reference_set); /* Purpose: Allocates a set of references to be assigned to an annotation element. Input Arguments: none Output Arguments: reference_set - The handle. Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. */ extern ProError ProAnnotationreferencesetFree( ProAnnotationReferenceSet reference_set); /* Purpose: Frees a set of references to be assigned to an annotation element. Input Arguments: reference_set - The handle. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. */ extern ProError ProAnnotationreferencesetProarrayFree( ProAnnotationReferenceSet* reference_set); /* Purpose: Frees an array of a set of references to be assigned to an annotation element. Input Arguments: reference_set - The handle. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. */ extern ProError ProAnnotationreferencesetReferenceAdd( ProAnnotationReferenceSet reference_set, ProAnnotationReference *reference, ProBoolean strong, ProLine description, ProBoolean autopropagate); /* Purpose: Adds a reference to the annotation set. Input Arguments: reference_set - The annotation reference set. reference - The reference to add. strong - PRO_B_TRUE if the reference is to be strong; PRO_B_FALSE if it is to be weak. description - The reference description. Can be NULL. autopropagate - PRO_B_TRUE if the reference will be autopropagated into data sharing features, PRO_B_FALSE otherwise. Output Arguments: none Return Values: PRO_TK_NO_ERROR - The function succeeded. PRO_TK_BAD_INPUTS - One or more input arguments was invalid. */ PRO_END_C_DECLS #endif /* PROANNOTATIONELEM_H */