#ifndef PROMFGOPER_H
#define PROMFGOPER_H

/* ProMfgoper.h: This include file contains the following details of the
                 manufacturing operation feature:

                     * mfg operation definition
                     * some utility functions for the mfg operation feature
*/



#include <ProObjects.h>
#include <ProSelection.h>
#include <ProMfg.h>

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

WARNING: This Feature element tree is deprecated and will be removed in subsequent
releases. Refer to this header for replacement:

ProMfgFeatOperation.h


Feature element tree

   PRO_E_FEATURE_TREE
     |
     |--PRO_E_FEAT_TYPE
     |
     |--PRO_E_FEAT_NAME     Optional element
     |
     |--PRO_E_WCELL
     |
     |--PRO_E_FIXTURE
     |
     |--PRO_E_MACH_CSYS
     |
     |--PRO_E_COMMENTS      Optional element
     |
     |--PRO_E_MFG_PARAMS    Optional element
     |    |
     |    |--PRO_E_MFG_PARAM
     |         | 
     |         |--PRO_E_MFG_PARAM_NAME
     |         | 
     |         |--PRO_E_MFG_PARAMVAL
     |
     |--PRO_E_FROM_POINTS     Optional element, array of PRO_E_FROM_POINT
     |    |
     |    |--PRO_E_FROM_POINT
     |         |
     |         |--PRO_E_MACH_HEAD
     |         |
     |         |--PRO_E_POINT_SEL
     |
     |--PRO_E_HOME_POINTS     Optional element, array of PRO_E_HOME_POINT
          |
          |--PRO_E_HOME_POINT
               |
               |--PRO_E_MACH_HEAD
               |
               |--PRO_E_POINT_SEL



MFG OPERATION ELEMENTS TABLE
--------------------------------------------------------------------------------------------------------
Element Id            Element Name       Data Type                            Valid Values
                                         (PRO_VALUE_TYPE)                     
--------------------------------------------------------------------------------------------------------
PRO_E_FEAT_TYPE       Feature type       PRO_VALUE_TYPE_INT                   PRO_FEAT_OPERATION

PRO_E_FEAT_NAME       Feature Name       PRO_VALUE_TYPE_WSTRING               Feature name

PRO_E_WCELL           Operation's        PRO_VALUE_TYPE_INT                   Workcell feature id
                      workcell                                                  
PRO_E_FIXTURE         Operation's        PRO_VALUE_TYPE_INT                   Fixture feature id
                      default fixture                                         
PRO_E_MACH_CSYS       Operation machine  PRO_VALUE_TYPE_SELECTION             See note 1
                      csys                                                    
PRO_E_COMMENTS        Comments           WSTRING ARRAY                        Paragraph of text

PRO_E_MFG_PARAMS      Parameters         ARRAY

PRO_E_MFG_PARAM       Mfg param          COMPOUND

PRO_E_MFG_PARAM_NAME  Mfg param name     PRO_VALUE_TYPE_STRING                User-visible mfg param names

PRO_E_MFG_PARAMVAL    Mfg param value    PRO_VALUE_TYPE_INT or                See note 2
                                         PRO_VALUE_TYPE_DOUBLE or 
										 PRO_VALUE_TYPE_WSTRING
										 
PRO_E_FROM_POINTS     "From" points      ARRAY                                Array of from points

PRO_E_HOME_POINTS     "Home" points      ARRAY                                Array of home points

PRO_E_FROM_POINT      "From" point       COMPOUND

PRO_E_HOME_POINT      "Home" point       COMPOUND

PRO_E_MACH_HEAD       Machining head     PRO_VALUE_TYPE_INT                   ProMachHead

PRO_E_POINT_SEL       Point selection    PRO_VALUE_TYPE_SELECTION             See note 3
--------------------------------------------------------------------------------------------------------

NOTES:

1. The selection reference should be initialized to the coordinate system's
   identifier (NOT the feature identifier!).

2. This type of element can have an integer value, a double value or a
   wide string value. Please refer to manufacturing user's guide for
   appropriate values.

3. The selection reference should be initialized to the appropriate datum
   point's identifier (NOT the feature identifier!).


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

PRO_BEGIN_C_DECLS


typedef  struct pro_model_item  ProMfgoper;

extern ProError  ProMfgoperToolpathDisplay  ( PRO_CONST_ARG ProMfgoper* oper);
/*
    Purpose: Displays the toolpath of the manufacturing operation on the 
             screen.

    Input Arguments:
        oper - The handle to a manufacturing operation feature

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function successfully retrieved the information.
        PRO_TK_GENERAL_ERROR - The toolpath display failed.
        PRO_TK_BAD_INPUTS - The argument is invalid.

*/

extern ProError  ProMfgoperActiveGet  ( ProSolid mfg_solid,
                                        ProMfgoper *oper_feat);
/*
    Purpose: Retrieves the current manufacturing operation.

    Input Arguments:
        mfg_solid - The handle to the manufacturing solid

    Output Arguments:
        oper_feat - The handle to a manufacturing operation feature

    Return Values:
        PRO_TK_NO_ERROR - The function successfully retrieved the information.
        PRO_TK_E_NOT_FOUND - No active operation feature was found.
        PRO_TK_BAD_INPUTS - The argument is invalid.

*/

PRO_END_C_DECLS


#endif /* PROMFGOPER_H */