#ifndef PROFEATINTR_H
#define PROFEATINTR_H



#include <ProToolkit.h>

PRO_BEGIN_C_DECLS
 
/*****************************************************************************\
 
Feature element tree
 
   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEATURE_TYPE
     |
     |
     |
     |
     |
     |
     |
     |
     |--PRO_E_INT_PARTS
	  |--PRO_E_FEATURE_INTERSECTION
	       |--PRO_E_FEATURE_INTERSECT_PART
               |--PRO_E_FEATURE_INTERSECT_LEVEL


3. Feature elements table
 
--------------------------------------------------------------------------------------------
Element Id                       Element Name   Data Type			Valid Values
-----------------------------------------------------------------------------------------
PRO_E_INT_PARTS	 		 Intersections  Array 
PRO_E_FEATURE_INTERSECTION	 Intersections  Compound
PRO_E_FEATURE_INTERSECT_PART     Intersect Part	PRO_VALUE_TYPE_SELECTION  	See Note 1
PRO_E_FEATURE_INTERSECT_LEVEL    Visib level	PRO_VALUE_TYPE_INT        	See Note 2


\*****************************************************************************/

/*===========================================================================*/

/* Note 1.   Intersect Part Values */

/* The selection should be to the part which is to be intersected by
 * the assembly feature.  The selection must include the path from the 
 * owner assembly to the intersected part.  The actual selection can be to any
 * item in the part or to the entire part itself.
 *
 * Special Values:::
 * 
 *   If the Selection refers to the top level assembly (any object in the
 *   top level assembly is acceptable) or if the value is NULL, then 
 *   intersected parts will be selected automatically based on the value
 *   of Visib level.  If the visibility level is 0, then parts will be 
 *   automaticaly selected and the intersection will be visible in the
 *   top level assembly only.  If the visibility level is -1, then the
 *   intersections will be visible in the parts themselves.  Any other
 *   value for visiblity level with this special selection is invalid.
 */


/*===========================================================================*/

/*===========================================================================*/

/* Note 2.   Visib Level Values */

/* This integer value sets where the assembly feature is visible.  If the
 * value is 0, then the feature is only visible in the top level assembly.
 * That is, if you retrieve the part or any sub-assembly containing that part
 * the intersection is not visible.   If the value is the same as the depth to
 * the part (1 if part is directly assembled, 2 if it is contained in a 
 * sub-assembly of the top level assembly, etc.) the intersection is visible
 * in the part itself.  Any other value will make the intersection visible in
 * the corresponding sub-assembly and above.
 *
 * Special Values:::
 * 
 *   If the value of Visib level is -1 and the intersect part references
 *   a part which is currently intersected by the feature, then the
 *   intersection with this part is removed (this works for ProFeatureWithoptionsRedefine
 *   only).  If the Intersect Part is either NULL or refers to the top level
 *   assembly, then the value of -1 indicates that parts should be 
 *   automatically selected with the intersection visible in the part.  Any
 *   other values for Intersect Part selection are invalid when visibility
 *   level is -1.
 */

/*===========================================================================*/


PRO_END_C_DECLS

#endif /* PROFEATINTR_H */