/*
uf_sc_types.h
File description:
Smart containers and section builders data structures and types
***************************************************************************************************/
#ifndef UF_SC_TYPES_H_INCLUDED
#define UF_SC_TYPES_H_INCLUDED
#include <uf_defs.h>
#define UF_SC_EDGE_DUMB_EDGES 0
#define UF_SC_EDGE_CHAIN_EDGES 1
#define UF_SC_EDGE_TANGENT_EDGES 2
#define UF_SC_EDGE_FACE_EDGES 3
#define UF_SC_EDGE_BODY_EDGES 4
#define UF_SC_EDGE_FEATURE_EDGES 5
#define UF_SC_EDGE_SHBNDARY_EDGES 6
#define UF_SC_EDGE_BOUNDARY_EDGES 7
#define UF_SC_EDGE_VERTEX_EDGES 8
#define UF_SC_EDGE_VERTEX_TANGENT_EDGES 9
#define UF_SC_EDGE_INTERSECT_EDGES 10
#define UF_SC_EDGE_MSEEDTAN_EDGES 11
#define UF_SC_EDGE_MULTI_SEED_OUTER_FACE_EDGES 12
#define UF_SC_EDGE_FEATURE_INTERSECTION_EDGES 13
#define UF_SC_MAX_EDGES 14
#define UF_SC_FACE_DUMB_FACES (UF_SC_MAX_EDGES + 1)
#define UF_SC_FACE_REGION_FACES (UF_SC_MAX_EDGES + 2)
#define UF_SC_FACE_TANGENT_FACES (UF_SC_MAX_EDGES + 3)
#define UF_SC_FACE_FEATURE_FACES (UF_SC_MAX_EDGES + 4)
#define UF_SC_FACE_BODY_FACES (UF_SC_MAX_EDGES + 5)
#define UF_SC_FACE_ADJACENT_FACES (UF_SC_MAX_EDGES + 6)
#define UF_SC_FACE_CONNECTED_BLEND_FACES (UF_SC_MAX_EDGES + 7)
#define UF_SC_FACE_ALL_BLEND_FACES (UF_SC_MAX_EDGES + 8)
#define UF_SC_FACE_RIB_FACES (UF_SC_MAX_EDGES + 9)
#define UF_SC_FACE_SLOT_FACES (UF_SC_MAX_EDGES + 10)
#define UF_SC_FACE_BOSS_POCKET_FACES (UF_SC_MAX_EDGES + 11)
#define UF_SC_FACE_MERGED_RIB_FACES (UF_SC_MAX_EDGES + 12)
#define UF_SC_FACE_REGION_BOUNDARY_FACES (UF_SC_MAX_EDGES + 13)
#define UF_SC_FACE_FACE_AND_ADJACENT_FACES (UF_SC_MAX_EDGES + 14)
#define UF_SC_MAX_FACES (UF_SC_MAX_EDGES + 15)
#define UF_SC_CURVE_DUMB_CURVES (UF_SC_MAX_FACES + 1)
#define UF_SC_CURVE_FEATURE_CURVES (UF_SC_MAX_FACES + 2)
#define UF_SC_CURVE_FEAT_CHAIN_CURVES (UF_SC_MAX_FACES + 3)
#define UF_SC_CURVE_FEAT_TANGENT_CURVES (UF_SC_MAX_FACES + 4)
#define UF_SC_CURVE_FOLLOW_FILLET_CURVES (UF_SC_MAX_FACES + 5)
#define UF_SC_CURVE_FEAT_POINTS (UF_SC_MAX_FACES + 6)
#define UF_SC_CURVE_GROUP_CURVES (UF_SC_MAX_FACES + 7)
#define UF_SC_CURVE_REGION_BOUNDARY (UF_SC_MAX_FACES + 8)
#define UF_SC_CURVE_APPARENT_CHAINING (UF_SC_MAX_FACES + 9)
#define UF_SC_MAX_CURVES (UF_SC_MAX_FACES + 10)
#define UF_SC_BODY_DUMB_BODIES (UF_SC_MAX_CURVES + 1)
#define UF_SC_BODY_FEATURE_BODIES (UF_SC_MAX_CURVES + 2)
#define UF_SC_BODY_GROUP_BODIES (UF_SC_MAX_CURVES + 3)
#define UF_SC_MAX_BODY (UF_SC_MAX_CURVES + 4)
#define UF_SC_INVALID_TYPE (UF_SC_MAX_BODY)
#define UF_SC_UNINITIALIZED 0
#define UF_SC_ALLOW_CURVES (1 << 1)
#define UF_SC_ALLOW_POINTS (1 << 2)
typedef union UF_SC_input_data_s *UF_SC_input_data_p_t;
struct UF_SC_EDGE_dumb_data_s
{
int num_edges;
tag_t *edges;
};
typedef struct UF_SC_EDGE_dumb_data_s
UF_SC_EDGE_dumb_data_t, *UF_SC_EDGE_dumb_data_p_t;
/*
common_face is to be used in case of chain between edges. In case,
there are 2 edges contained on 2 faces, this tag_t is used to
resolve such ambiguity. It would be only used in case there is ambiguity.
Not otherwise.
*/
struct UF_SC_EDGE_chain_data_s
{
tag_t start_edge;
tag_t end_edge;
logical from_start; /* whether the chain starts from the start
point of the start edge */
tag_t common_face; /* common face on which both edges lie*/
logical laminar_edges_only; /* allow only laminar edges ?? */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_chain_data_s
UF_SC_EDGE_chain_data_t, *UF_SC_EDGE_chain_data_p_t;
struct UF_SC_EDGE_tangent_data_s
{
tag_t start_edge;
tag_t end_edge; /* it is optional */
logical from_start; /* whether the tangent starts from the start
point of the start edge if end edge is provided*/
logical laminar_edges_only; /* allow only laminar edges ?? */
double angle_tol; /* angle tolerance for tangent edges */
logical same_convexity; /* will only find tangnet edges that has the same convexity if true */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_tangent_data_s
UF_SC_EDGE_tangent_data_t, *UF_SC_EDGE_tangent_data_p_t;
struct UF_SC_EDGE_mseedtan_data_s
{
int num_seed_edges;
tag_t *seed_edges;
double angle_tol; /* angle tolerance for tangent edges */
logical same_convexity; /* will only find tangnet edges that has the same convexity if true */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_mseedtan_data_s
UF_SC_EDGE_mseedtan_data_t, *UF_SC_EDGE_mseedtan_data_p_t;
struct UF_SC_EDGE_face_data_s
{
int num_faces;
tag_t *faces;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_face_data_s
UF_SC_EDGE_face_data_t, *UF_SC_EDGE_face_data_p_t;
struct UF_SC_EDGE_body_data_s
{
tag_t body;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_body_data_s
UF_SC_EDGE_body_data_t, *UF_SC_EDGE_body_data_p_t;
struct UF_SC_EDGE_feature_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
tag_t part_occurrence;
};
typedef struct UF_SC_EDGE_feature_data_s
UF_SC_EDGE_feature_data_t, *UF_SC_EDGE_feature_data_p_t;
struct UF_SC_EDGE_shbndary_data_s
{
tag_t sheet;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_shbndary_data_s
UF_SC_EDGE_shbndary_data_t, *UF_SC_EDGE_shbndary_data_p_t;
/* */
struct UF_SC_EDGE_boundary_data_s
{
int num_faces_n_features;
tag_t *faces_n_features;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_boundary_data_s
UF_SC_EDGE_boundary_data_t, *UF_SC_EDGE_boundary_data_p_t;
struct UF_SC_EDGE_multi_seed_outer_face_edges_data_s
{
int num_faces_n_features;
tag_t *faces_n_features;
int n_negated_entities;
tag_t *negated_entities;
logical rib_top_face_edges;
};
typedef struct UF_SC_EDGE_multi_seed_outer_face_edges_data_s
UF_SC_EDGE_multi_seed_outer_face_edges_data_t, *UF_SC_EDGE_multi_seed_outer_face_edges_data_p_t;
struct UF_SC_EDGE_feature_intersection_edges_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
tag_t part_occurrence;
};
typedef struct UF_SC_EDGE_feature_intersection_edges_data_s
UF_SC_EDGE_feature_intersection_edges_data_t, *UF_SC_EDGE_feature_intersection_edges_data_p_t;
/* */
struct UF_SC_EDGE_intersect_data_s
{
int num_faces_n_features1;
tag_t *faces_n_features1;
int num_faces_n_features2;
tag_t *faces_n_features2;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_intersect_data_s
UF_SC_EDGE_intersect_data_t, *UF_SC_EDGE_intersect_data_p_t;
struct UF_SC_EDGE_vertex_data_s
{
tag_t start_edge; /* the seed edge */
logical from_start; /* =true, start vertex of the start_edge,
=false, end vertex of the start_edge */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_vertex_data_s
UF_SC_EDGE_vertex_data_t, *UF_SC_EDGE_vertex_data_p_t;
struct UF_SC_EDGE_vertex_tangent_data_s
{
tag_t start_edge; /* the seed edge */
logical from_start; /* =true, start vertex of the start_edge,
=false, end vertex of the start_edge */
double angle_tol; /* angle tolerance for tangent edges */
logical same_convexity; /* will only find tangnet edges that has the same convexity if true */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_EDGE_vertex_tangent_data_s
UF_SC_EDGE_vertex_tangent_data_t, *UF_SC_EDGE_vertex_tangent_data_p_t;
struct UF_SC_FACE_dumb_data_s
{
int num_faces;
tag_t *faces;
};
typedef struct UF_SC_FACE_dumb_data_s
UF_SC_FACE_dumb_data_t, *UF_SC_FACE_dumb_data_p_t;
/* For the region of faces, we have two ways to allow you input boundary faces.
You can either input the individual boundary faces in bndary_faces array or
you can input boundary faces as rules in bndary_face_data array.
You must input one type of boudnary faces.
The input rule data for boundary faces have to be one of the
UF_SC_FACE_*_data_p_t types.
If bndary_faces is not NULL, bndary_face_data array will be ignored. The
bndary_face_data will take effect only if num_bndary_faces = 0 and
bndary_faces = NULL;
*/
struct UF_SC_FACE_region_data_s
{
tag_t seed_face;
int num_bndary_faces;
tag_t *bndary_faces;
int n_bndary_face_data;
int *bndary_face_types; /* array of int to input rule types */
UF_SC_input_data_p_t bndary_face_data; /* array of input data */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_FACE_region_data_s
UF_SC_FACE_region_data_t, *UF_SC_FACE_region_data_p_t;
/* For the region of faces, we have two ways to allow you input boundary faces.
You can either input the individual boundary faces in bndary_faces array or
you can input boundary faces as rules in bndary_face_data array.
The boundary data is optional. You can leave both type of boundary data to
be NULL.
The input rule data for boundary faces have to be one of the
UF_SC_FACE_*_data_p_t types.
If bndary_faces is not NULL, bndary_face_data array will be ignored. The
bndary_face_data will take effect only if num_bndary_faces = 0 and
bndary_faces = NULL;
*/
struct UF_SC_FACE_tangent_data_s
{
tag_t seed_face;
int num_bndary_faces;
tag_t *bndary_faces; /* This is optional */
double angle_tol; /* Angle tolerance for tangent faces */
int n_bndary_face_data;
int *bndary_face_types; /* array of int to input rule types */
UF_SC_input_data_p_t bndary_face_data; /* array of input data */
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_FACE_tangent_data_s
UF_SC_FACE_tangent_data_t, *UF_SC_FACE_tangent_data_p_t;
struct UF_SC_FACE_body_data_s
{
tag_t body;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_FACE_body_data_s
UF_SC_FACE_body_data_t, *UF_SC_FACE_body_data_p_t;
struct UF_SC_FACE_feature_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
tag_t part_occurrence;
};
typedef struct UF_SC_FACE_feature_data_s
UF_SC_FACE_feature_data_t, *UF_SC_FACE_feature_data_p_t;
struct UF_SC_FACE_adjacent_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_FACE_adjacent_data_s
UF_SC_FACE_adjacent_data_t, *UF_SC_FACE_adjacent_data_p_t;
struct UF_SC_FACE_face_and_adjacent_faces_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
};
typedef struct UF_SC_FACE_face_and_adjacent_faces_data_s
UF_SC_FACE_face_and_adjacent_faces_data_t, *UF_SC_FACE_face_and_adjacent_faces_data_p_t;
struct UF_SC_FACE_connected_blend_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
logical includeBlendLike;
logical includeUnlabeledBlend;
tag_t feature;
};
typedef struct UF_SC_FACE_connected_blend_data_s
UF_SC_FACE_connected_blend_data_t, *UF_SC_FACE_connected_blend_data_p_t;
struct UF_SC_FACE_all_blend_data_s
{
tag_t body;
int n_negated_entities;
tag_t *negated_entities;
tag_t feature;
};
typedef struct UF_SC_FACE_all_blend_data_s
UF_SC_FACE_all_blend_data_t, *UF_SC_FACE_all_blend_data_p_t;
struct UF_SC_FACE_rib_faces_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
logical includeBoundaryBlends;
logical traverseInteriorLoops;
};
typedef struct UF_SC_FACE_rib_faces_data_s UF_SC_FACE_rib_faces_data_t, *UF_SC_FACE_rib_faces_data_p_t;
struct UF_SC_FACE_merged_rib_faces_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
logical includeBoundaryBlends;
void *options;
double ref_pt[3];
};
typedef struct UF_SC_FACE_merged_rib_faces_data_s UF_SC_FACE_merged_rib_faces_data_t, *UF_SC_FACE_merged_rib_faces_data_p_t;
struct UF_SC_FACE_slot_faces_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
logical includeBoundaryBlends;
logical traverseInteriorLoops;
};
typedef struct UF_SC_FACE_slot_faces_data_s
UF_SC_FACE_slot_faces_data_t, *UF_SC_FACE_slot_faces_data_p_t;
struct UF_SC_FACE_boss_pocket_faces_data_s
{
tag_t seed;
int n_negated_entities;
tag_t *negated_entities;
logical includeBoundaryBlends;
};
typedef struct UF_SC_FACE_boss_pocket_faces_data_s
UF_SC_FACE_boss_pocket_faces_data_t, *UF_SC_FACE_boss_pocket_faces_data_p_t;
struct UF_SC_FACE_region_boundary_data_s
{
tag_t source_face;
tag_t seed_obj;
int num_curves;
tag_t *curves;
double seed_point[3]; /* This is the abs pick point on the face */
double distance_tol;
logical allowRefCurves;
void *output; /* Pointer to a structure for holding output data */
};
typedef struct UF_SC_FACE_region_boundary_data_s UF_SC_FACE_region_boundary_data_t, *UF_SC_FACE_region_boundary_data_p_t;
struct UF_SC_CURVE_dumb_data_s
{
int num_curves;
tag_t *curves;
logical allowRefCurves;
byte allowed_entity_types;
};
typedef struct UF_SC_CURVE_dumb_data_s
UF_SC_CURVE_dumb_data_t, *UF_SC_CURVE_dumb_data_p_t;
struct UF_SC_CURVE_feature_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
logical allowRefCurves;
byte allowed_entity_types;
tag_t part_occurrence;
};
typedef struct UF_SC_CURVE_feature_data_s
UF_SC_CURVE_feature_data_t, *UF_SC_CURVE_feature_data_p_t;
struct UF_SC_CURVE_group_data_s
{
int num_groups;
tag_t *groups;
int n_negated_entities;
tag_t *negated_entities;
logical allowRefCurves;
byte allowed_entity_types;
};
typedef struct UF_SC_CURVE_group_data_s
UF_SC_CURVE_group_data_t, *UF_SC_CURVE_group_data_p_t;
struct UF_SC_CURVE_feat_chain_data_s
{
int num_features;
tag_t *features;
tag_t seed_curve;
tag_t end_curve; /* it is optional */
logical from_seed_start; /* whether the chain starts from the start
point of the seed curve */
double gap_tol;
int n_negated_entities;
tag_t *negated_entities;
logical allowRefCurves;
logical optimizeCurves;
double optimizeFactors[2];
};
typedef struct UF_SC_CURVE_feat_chain_data_s
UF_SC_CURVE_feat_chain_data_t, *UF_SC_CURVE_feat_chain_data_p_t;
struct UF_SC_CURVE_feat_tangent_data_s
{
int num_features;
tag_t *features;
tag_t seed_curve;
tag_t end_curve; /* it is optional */
logical from_seed_start; /* whether the tangent starts from the start
point of the start curve if end curve is provided*/
double gap_angle_tols[2];
int n_negated_entities;
tag_t *negated_entities;
logical allowRefCurves;
logical optimizeCurves;
double optimizeFactors[2];
};
typedef struct UF_SC_CURVE_feat_tangent_data_s
UF_SC_CURVE_feat_tangent_data_t, *UF_SC_CURVE_feat_tangent_data_p_t;
/*Do NOT add negated_entities information for Follow Fillet*/
struct UF_SC_CURVE_follow_fillet_data_s
{
int num_features;
tag_t *features;
int num_bodies;
tag_t *bodies;
int num_dumb_curves;
tag_t *dumb_curves;
tag_t seed_wireframe;
tag_t end_wireframe; /* it is optional */
logical from_seed_start; /* whether the chain starts from the start
point of the seed curve */
logical tangent;
double seed_point[3];
double gap_angle_tols[2];
logical allowRefCurves;
logical useStopAtIntersection; /* Whether rules is to be created with stop at intersection or not.*/
logical optimizeCurves;
double optimizeFactors[2];
};
typedef struct UF_SC_CURVE_follow_fillet_data_s
UF_SC_CURVE_follow_fillet_data_t, *UF_SC_CURVE_follow_fillet_data_p_t;
struct UF_SC_CURVE_region_boundary_data_s
{
tag_t seed_obj;
int num_curves;
tag_t *curves;
double seed_point[3]; /* This is the abs pick point on the face */
double distance_tol;
logical allowRefCurves;
};
typedef struct UF_SC_CURVE_region_boundary_data_s
UF_SC_CURVE_region_boundary_data_t, *UF_SC_CURVE_region_boundary_data_p_t;
/* This enum defines the rule for grabbing the next curve for apparent chaining in drafting view */
enum UF_SC_CURVE_apparent_chaining_rule
{
UF_SC_CURVE_apparent_chaining_rule_connected = 0, /* apparently connected curve/edges */
UF_SC_CURVE_apparent_chaining_rule_tangent = 1, /* apparently tangent curve/edges */
UF_SC_CURVE_apparent_chaining_rule_dumb = 2 /* dumb curve */
};
/* This enum defines whether to grab a curve, an edge or both as next entity in apparent chaining in drafting view */
enum UF_SC_CURVE_apparent_chaining_selection
{
UF_SC_CURVE_apparent_chaining_selection_allow_all_types = 0, /* grab both curve and edges for */
UF_SC_CURVE_apparent_chaining_selection_allow_curve = 1, /* grab only curve */
UF_SC_CURVE_apparent_chaining_selection_allow_edge = 2 /* grab only edge */
};
struct UF_SC_CURVE_apparent_chaining_data_s
{
tag_t seedCurve;
tag_t view;
UF_SC_CURVE_apparent_chaining_rule chainingRule;
UF_SC_CURVE_apparent_chaining_selection selectionMask;
double chainingTolerance;
double angleTolerance;
};
typedef struct UF_SC_CURVE_apparent_chaining_data_s
UF_SC_CURVE_apparent_chaining_data_t, *UF_SC_CURVE_apparent_chaining_data_p_t;
struct UF_SC_CURVE_feature_points_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
tag_t part_occurrence;
};
typedef struct UF_SC_CURVE_feature_points_data_s
UF_SC_CURVE_feature_points_data_t, *UF_SC_CURVE_feature_points_data_p_t;
struct UF_SC_BODY_dumb_data_s
{
int num_bodies;
tag_t *bodies;
logical include_sheet_bodies;
};
typedef struct UF_SC_BODY_dumb_data_s
UF_SC_BODY_dumb_data_t, *UF_SC_BODY_dumb_data_p_t;
struct UF_SC_BODY_feature_data_s
{
int num_features;
tag_t *features;
int n_negated_entities;
tag_t *negated_entities;
tag_t part_occurrence;
logical include_sheet_bodies;
};
typedef struct UF_SC_BODY_feature_data_s
UF_SC_BODY_feature_data_t, *UF_SC_BODY_feature_data_p_t;
struct UF_SC_BODY_group_data_s
{
int num_groups;
tag_t *groups;
int n_negated_entities;
tag_t *negated_entities;
logical include_sheet_bodies;
};
typedef struct UF_SC_BODY_group_data_s
UF_SC_BODY_group_data_t, *UF_SC_BODY_group_data_p_t;
union UF_SC_input_data_s
{
UF_SC_EDGE_dumb_data_t edge_dumb_input;
UF_SC_EDGE_chain_data_t edge_chain_input;
UF_SC_EDGE_tangent_data_t edge_tangent_input;
UF_SC_EDGE_mseedtan_data_t edge_mseedtan_input;
UF_SC_EDGE_face_data_t edge_face_input;
UF_SC_EDGE_body_data_t edge_body_input;
UF_SC_EDGE_feature_data_t edge_feature_input;
UF_SC_EDGE_shbndary_data_t edge_shbndary_input;
UF_SC_EDGE_boundary_data_t edge_boundary_input;
UF_SC_EDGE_intersect_data_t edge_intersect_input;
UF_SC_EDGE_vertex_data_t edge_vertex_input;
UF_SC_EDGE_vertex_tangent_data_t edge_vertex_tangent_input;
UF_SC_EDGE_multi_seed_outer_face_edges_data_t edge_outer_face_edge_input;
UF_SC_EDGE_feature_intersection_edges_data_t edge_feature_intersection_edges_input;
UF_SC_FACE_dumb_data_t face_dumb_input;
UF_SC_FACE_region_data_t face_region_input;
UF_SC_FACE_tangent_data_t face_tangent_input;
UF_SC_FACE_body_data_t face_body_input;
UF_SC_FACE_feature_data_t face_feature_input;
UF_SC_FACE_adjacent_data_t face_adjacent_input;
UF_SC_FACE_connected_blend_data_t face_connected_blend_input;
UF_SC_FACE_all_blend_data_t face_all_blend_input;
UF_SC_FACE_rib_faces_data_t face_rib_faces_input;
UF_SC_FACE_slot_faces_data_t face_slot_faces_input;
UF_SC_FACE_boss_pocket_faces_data_t face_boss_pocket_faces_input;
UF_SC_FACE_merged_rib_faces_data_t face_merged_rib_faces_input;
UF_SC_FACE_region_boundary_data_t face_region_boundary_input;
UF_SC_FACE_face_and_adjacent_faces_data_t face_and_adjacent_faces_input;
UF_SC_CURVE_dumb_data_t curve_dumb_input;
UF_SC_CURVE_feature_data_t curve_feature_input;
UF_SC_CURVE_feat_chain_data_t curve_feat_chain_input;
UF_SC_CURVE_feat_tangent_data_t curve_feat_tangent_input;
UF_SC_CURVE_follow_fillet_data_t curve_follow_fillet_input;
UF_SC_CURVE_feature_points_data_t curve_feature_points_input;
UF_SC_CURVE_region_boundary_data_t curve_region_boundary_input;
UF_SC_CURVE_group_data_t curve_group_input;
UF_SC_CURVE_apparent_chaining_data_t curve_apparent_chaining_input;
UF_SC_BODY_dumb_data_t body_dumb_input;
UF_SC_BODY_feature_data_t body_feature_input;
UF_SC_BODY_group_data_t body_group_input;
};
typedef union UF_SC_input_data_s
UF_SC_input_data_t;
struct UF_SC_section_output_data_s
{
tag_t output_object ; /* The tag of the object that constructs the section */
tag_t start_connected_object ; /* The object the connected to the above objects,
at the start_point */
double start_point[3] ;
tag_t end_connected_object ; /* The other object the connected to the above objects,
at the end_point */
double end_point[3] ;
};
typedef struct UF_SC_section_output_data_s
UF_SC_section_output_data_t , * UF_SC_section_output_data_p_t ;
struct UF_SC_section_data_s
{
int n_rules ;
int * rule_types ; /* */
UF_SC_input_data_t * rules ; /* */
double chaining_tolerance ;
double distance_tolerance ;
double angle_tolerance ;
tag_t start_connector ; /* for stop at intersection: define the */
tag_t end_connector ; /* for stop at intersection */
double help_point[3] ; /* for stop at intersection */
double intersection_point_1[3] ;/* for stop at intersection */
double intersection_point_2[3] ;/* for stop at intersection */
int n_output_objects ; /* for UF_MODL_ask_section,
the ouput objects, their start and
end collectors, and the endpoints
of the resulting curves */
UF_SC_section_output_data_t * output_objects ; /* */
};
typedef struct UF_SC_section_data_s
UF_SC_section_data_t , * UF_SC_section_data_p_t ;
#endif /* UF_SC_TYPES_H_INCLUDED */