/*============================================================================== Copyright (c) 2003-2005 UGS Corporation Unpublished - All Rights Reserved ==============================================================================*/ /** @file This file contains the ANSI C interface to Teamcenter Engineering properties */ /* */ #ifndef PROP_H #define PROP_H #include #include #include #include #include /** @defgroup PROP Properties A property is a piece of information kept about an object of a particular type. @{ */ #define PROP_NAME_DISPLAY_PREF "PROP_Show_Actual_Names" #define PROP_DISPLAY_PRESENTATION_NAMES 1 #define PROP_DISPLAY_ACTUAL_NAMES 2 #ifdef __cplusplus extern "C"{ #endif /** @name Property functions that get their value from the Property Descriptor There is a duplicate PROPDESC_ function for each of these. @{ */ /** Ask the type that the property defines. */ extern PROPERTY_API int PROP_ask_object_type( tag_t prop_tag, /**< (I) The tag of the property */ tag_t* type_tag /**< (O) The tag of the type */ ); /** @} */ /** @name Properties User Interface This section defines ITK to support specifically to support User Interface (UIF) functionality on properties. @{ */ extern PROPERTY_API int PROP_UIF_is_enabled( tag_t prop_tag, /**< (I) */ logical* is_enabled /**< (O) */ ); extern PROPERTY_API int PROP_UIF_list_displayable_properties( tag_t object_tag, /**< (I) */ int* num, /**< (O) */ tag_t** prop_tags /**< (OF) num */ ); extern PROPERTY_API int PROP_list_common_modifiable_properties( int object_count, /**< (I) */ tag_t* object_tags, /**< (I) */ int* prop_count, /**< (O) */ char*** prop_names /**< (OF) prop_count */ ); extern PROPERTY_API int PROP_is_property_localizable( tag_t object_tag, /**< (I) */ char* prop_name, /**< (I) */ logical* is_localizable /**< (O) */ ); /** This call returns the Composite Property value for an Teamcenter Engineering component. A Composite Property of an object defines a path to associated objects, with potentially multiple levels of indirection, resulting in an evaluation of a regular property on that or these associated object(s). The syntax of a composite property is: [objectTypeName.][referenceProperty[(criteriaProperty=criteriaValue[,criteriaProperty=criteriaValue]):][referenceProperty[(criteriaProperty=criteriaValue[,criteriaProperty=criteriaValue])]:]]property where:
  • objectTypeName is a regular Teamcenter Engineering object type name (e.g. UGMASTER).
  • referenceProperty is either a typed_reference, untyped_reference, typed_relation, or an untyped_relation.
  • criteriaProperty can be any valid Composite Property (recursion). If specified it is taken as a criteria list in case the above referenceProperty is ambiguous.
  • property is any regular Teamcenter Engineering property name.
  • the notation "[" indicates optional elements, and is not part of Composite Property itself.
Examples:
  • object_type evaluates the regular property 'object_type'. This illustrates that each regular property is also a perfectly valid Composite Property.
  • item_master_tag:product_year evaluates the property 'product_year' on the ItemRevision Master of an Item Revision.
  • item_tag:item_master_tag:Project_ID evaluates the property Project_ID on the Item Master of the Item of an Item Revision.
  • item_tag:IMAN_master_form(object_type=MyCustomItemForm):MyCustomProperty evaluates the property MyCustomProperty of all objects in the IMAN_master_form pseudo folder of the Item of an Item Revision, that have the object type "MyCustomItemForm", returning all values in a comma separated list.
  • ItemRevision Master.revision_list:item_master_tag:Project_ID evaluates the property Project_ID on each Item Revision of a given Item. In case 3 Item Revision share the same Project ID 3200, these duplicated values are shown as '3200 (x3)'. A list of values is separated by a comma and a blank character. The prefix ItemRevision Master indicates that the ultimate physical property is actually on an object of type ItemRevision Master.
Restrictions: Each intermediate step in the chain of properties references the next related object(s) in the path. Except for the last property, they must by specified by either a:
  • typed_reference
  • untyped_reference
  • typed_relation
  • untyped_relation
*/ extern PROPERTY_API int PROP_ask_composite_property( tag_t component, /**< (I) Component for which the Composite Property is to be evaluated */ const char* composite_property, /**< (I) Composite Property to evaluate */ char** value /**< (OF) Returned property value */ ); /** This call returns an array of related Teamcenter Engineering components pointed to be a Composite Property value for a given Teamcenter Engineering component. See also PROP_ask_composite_property(). Restrictions: Each intermediate step in the chain of properties references the next related object(s) in the path. Except for the last property, they must by specified by either a
  • typed_reference
  • untyped_reference
  • typed_relation
  • untyped_relation
*/ extern PROPERTY_API int PROP_ask_composite_property_objs( tag_t component, /**< (I) Component for which the Composite Property is to be evaluated */ const char* composite_property, /**< (I) Composite Property to evaluate */ int* n_related_components, /**< (O) The number of returned components in related_components */ tag_t** related_components /**< (OF) n_related_components The array of components pointed to by the Composite Property */ ); /** @} */ /** @} */ #ifdef __cplusplus } #endif #include #endif