#ifndef PRO_VOL_INTF
#define PRO_VOL_INTF
#include <ProSelection.h>
#include <ProObjects.h>
#include <ProToolkit.h>
PRO_BEGIN_C_DECLS
typedef struct volume_intf_data *ProVolumeInterferenceData;
typedef struct ProVolumeIntfInfo
{
ProAsmcomppath comp; /*component interfering with the quilt*/
ProVolumeInterferenceData intf_data; /* Resulting volume interference data */
} ProVolumeInterferenceInfo;
extern ProError ProVolumeInterferenceCompute (ProSelection quilt,
ProVolumeInterferenceInfo **p_intf_infos);
/*
Purpose: This function computes volume interference of the selected closed
quilt with the assembly as it is done in the Volume Interference
UI.
Input Arguments:
quilt - The quilt with which the interefrance should be computed
Output Arguments:
p_intf_infos - pointer to a ProArray (allocated inside) where the
interference results will be stored, users need to free
the allocated array using
ProVolumeInterferenceInfoArrayFree
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - An error is encountered.
PRO_TK_BAD_INPUTS - The input argument is invalid.
See Also:
ProVolumeInterferenceInfoArrayFree()
*/
extern ProError ProVolumeInterferenceBodiesGet (
ProVolumeInterferenceData interf_data,
ProSolidBody **r_bodies);
/*
Purpose: This function should be called after
ProVolumeInterferenceCompute(). Given the interference data of a
component part, it obtains the set of that part's solid bodies
which participate in the interference.
Input Arguments:
interf_data - pointer to the interference data for the corresponding
component that interferes with the quilt
Output Arguments:
r_bodies - pointer to the array of ProSolidBody structures which is
allocated by the function (as ProArray); may not be NULL
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - A general error is encountered.
PRO_TK_BAD_INPUTS - An argument is invalid.
PRO_TK_E_NOT_FOUND - Could not find any valid bodies in the supplied
data
*/
extern ProError ProVolumeInterferenceDisplay (
ProVolumeInterferenceData interf_data,
ProColortype color, ProBool hilite);
/*
Purpose: This function should be called after
ProVolumeInterferenceCompute(). It will display/hide the curves
and surfaces that interfere with the closed quilt that was
selected by user.
Input Arguments:
interf_data - pointer to the interference data for the corresponding
component that interfere with the quilt
color - The preferred color for highlighting the ineterference
hilite - PRO_B_TRUE for displaying or PRO_B_FALSE for hiding the
current component interference data.
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - A general error is encountered.
PRO_TK_BAD_INPUTS - The input argument is invalid.
*/
extern ProError ProVolumeInterferenceDisplayForBody (
ProVolumeInterferenceData interf_data, ProSolidBody *p_body,
ProColortype color, ProBool hilite);
/*
Purpose: This function should be called after
ProVolumeInterferenceCompute(). It will display/hide the given
solid body's curves and surfaces that interfere with the closed
quilt that was selected by user.
Input Arguments:
interf_data - pointer to the interference data for the corresponding
component that interferes with the quilt
p_body - pointer to the desired solid body in that component
color - The preferred color for highlighting the ineterference
hilite - PRO_B_TRUE for displaying or PRO_B_FALSE for hiding the given
body's interference geometry.
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - A general error is encountered.
PRO_TK_BAD_INPUTS - An input argument is invalid.
PRO_TK_E_NOT_FOUND - The given body doesn't interfere with the quilt
*/
extern ProError ProVolumeInterferenceInfoArrayFree (
ProVolumeInterferenceInfo *p_intf_infos);
/*
Purpose: This function frees the memory that was allocated by
ProVolumeInterferenceCompute(). Call this API to remove the
interference highlighted by the function
ProVolumeInterferenceDisplay(). This function also refreshes the
screen. This API is supported in DLL mode only.
Input Arguments:
p_intf_infos - pointer to the interference data array that is no longer
needed and should be freed.
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - The function succeeded.
PRO_TK_GENERAL_ERROR - A general error is encountered.
PRO_TK_BAD_INPUTS - Pointer to the interference data array is invalid.
*/
PRO_END_C_DECLS
#endif