You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
6.5 KiB

/*==============================================================================
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 <unidefs.h>
#include <pom/pom/pom_tokens.h>
#include <property/propdesc.h>
#include <property/prop_msg.h>
#include <property/libproperty_exports.h>
/**
@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:
<UL>
<LI>objectTypeName is a regular Teamcenter Engineering object type name (e.g. UGMASTER).
<LI>referenceProperty is either a typed_reference, untyped_reference, typed_relation, or an untyped_relation.
<LI>criteriaProperty can be any valid Composite Property (recursion).
If specified it is taken as a criteria list in case the above referenceProperty is ambiguous.
<LI>property is any regular Teamcenter Engineering property name.
<LI>the notation "[" indicates optional elements, and is not part of Composite Property itself.
</UL>
Examples:
<UL>
<LI>object_type evaluates the regular property 'object_type'.
This illustrates that each regular property is also a perfectly valid Composite Property.
<LI>item_master_tag:product_year evaluates the property 'product_year' on the ItemRevision Master of an Item Revision.
<LI>item_tag:item_master_tag:Project_ID evaluates the property Project_ID on the Item Master of the Item of an Item Revision.
<LI>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.
<LI>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.
</UL>
<b>Restrictions: </b>
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:
<UL>
<LI>typed_reference
<LI>untyped_reference
<LI>typed_relation
<LI>untyped_relation
</UL>
*/
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().
<b>Restrictions: </b>
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
<UL>
<LI>typed_reference
<LI>untyped_reference
<LI>typed_relation
<LI>untyped_relation
</UL>
*/
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 <property/libproperty_undef.h>
#endif