UF_MODL_secsrf_data_s (view source)
 
Defined in: uf_modl_types.h
 
Also known as:
 
Overview
Section Surface data Structure

Currently there are 18 different Section surface construction techniques. Each
requiring a different combination of construction geometry and data. Below is
the common data used for all of the section surfaces.

Given:
UF_MODL_secsrf_data_t section_surface;
section_surface.polynomial_status = 0; Conic - since rational B-spline curves
can represent conic curves exactly, this
option produces a true, exact conic shape
with no reversals in curvature. It accepts
rho values between 0.0001 and 0.9999.
Parameterization may be highly nonuniform.
The Conic option does not work for fillet-cubic,
ends-slopes-rho, and ends-slopes-cubic section
features. If you choose Conic when creating one
of these section types, the system ignores your
choice and uses Cubic instead.
section_surface.polynomial_status = 1; Cubic - these curves have roughly the same shape
as their rational counterparts (used in the Conic
option) but produce a surface with a better
parameterization. This option distributes the flow
lines along the entire curve, but does not produce
exact conic shapes. For example, rho values greater
than 0.75 create section curves which are not shaped
like a conic. For this reason, the maximum rho allowed
when creating polynomial cubic sections is 0.75.
section_surface.polynomial_status = 2; Quintic - the surfaces are degree 5, and are C2
(curvature continuous) between patches.
section_surface.tolerance = any valid NX tolerance value;
section_surface.direction_indicator = 1; create surface in the direction of the
face normal
section_surface.direction_indicator = -1; create surface opposite the face normal
(UF_MODL_secsrf_point_radius_angle_arc only)

The following shows the options for section surface that contain rho
data: UF_MODL_secsrf_ends_apex_rho, UF_MODL_secsrf_ends_slopes_rho and
UF_MODL_secsrf_fillet_rho section surfaces. Valid rho values are described in
the "Section" section of the "Free Form Features" chapter of the Modeling User
Manual.

If a section surface has no rho data the rho method should be set to
the following.

section_surface.rho_data.data_method = UF_MODL_secsrf_no_data;

If the rho method is set to a constant rho then a valid rho value must
be placed in data_values structure.

section_surface.rho_data.data_method = UF_MODL_secsrf_constant;
section_surface.rho_data.data_values.data_constant = valid rho value;

If the rho method is set to a linear or cubic rho then a valid rho value
must be placed in data_values structure. The expression tag will take
precedence over the a real value. Both rho values need to be populated.

section_surface.rho_data.data_method = UF_MODL_secsrf_linear or
UF_MODL_secsrf_cubic;
section_surface.rho_data.data_values.data_value[0]=valid rho value;
or section_surface.rho_data.data_values.data_exp[0]=expression tag;
and
section_surface.rho_data.data_values.data_value[1]=valid rho value;
or section_surface.rho_data.data_values.data_exp[1]=expression tag;

If the rho method is set to least tension then the rho_values must be
set to NULL.
section_surface.rho_data.data_method = UF_MODL_secsrf_tension;
section_surface.rho_data.data_values.general_law = NULL;

If the rho value is set to general the user is required NOT to change
the data_values.
section_surface.rho_data.data_method = UF_MODL_secsrf_general;
section_surface.rho_data.data_values.general_law = pointer data to
a law function;

The following shows the options for section surface that contain
radius data: UF_MODL_secsrf_two_points_radius and
UF_MODL_secsrf_point_radius_angle_arc section surfaces. Valid
radius values are described in the Section Surface documentation.

If a section surface has no radius data the data method should be set
to the following.
section_surface.radius_data.data_method = UF_MODL_secsrf_no_data;

If the radius method is set to a constant radius then a valid radius
value must be placed in data_values structure.
section_surface.radius_data.data_method = UF_MODL_secsrf_constant;
section_surface.radius_data.data_values.data_constant = valid radius value;

If the radius method is set to a linear or cubic then a valid radius
value must be placed in data_values structure. The expression tag will
take precedence over the a real value. Both radius values need to be populated.
section_surface.radius_data.data_method = UF_MODL_secsrf_linear or
UF_MODL_secsrf_cubic;
section_surface.radius_data.data_values.data_value[0]=valid radius value; or
section_surface.radius_data.data_values.data_exp[0]=expression tag;
and
section_surface.radius_data.data_values.data_value[1]=valid radius value; or
section_surface.radius_data.data_values.data_exp[1]=expression tag;

If the radius value is set to general the user is required NOT to
change the data_values.
section_surface.radius_data.data_method = UF_MODL_secsrf_general;
section_surface.radius_data.data_values.general_law = pointer data
to a law function;

The following shows the options for a section surface that contain
angle data: UF_MODL_secsrf_point_radius_angle_arc section
surface. Valid angle values are described in the Section Surface
documentation.

If a section surface has no angle data the data method should be set to
the following.
section_surface.angle_data.data_method = UF_MODL_secsrf_no_data;

If the angle method is set to a constant angle then a valid angle value
must be placed in data_values structure.
section_surface.angle_data.data_method = UF_MODL_secsrf_constant;
section_surface.angle_data.data_values.data_constant = valid angle value;

If the angle method is set to a linear or cubic angle then a valid angle
value must be placed in data_values structure. The expression tag will
take precedence over the a real value. Both angle values need to be populated.
section_surface.angle_data.data_method = UF_MODL_secsrf_linear or
UF_MODL_secsrf_cubic;
section_surface.angle_data.data_values.data_value[0]=valid angle value; or
section_surface.angle_data.data_values.data_exp[0]=expression tag;
and
section_surface.angle_data.data_values.data_value[1]=valid angle value; or
section_surface.angle_data.data_values.data_exp[1]=expression tag;

If the angle value is set to general the user is required NOT to change
the data_values.
section_surface.angle_data.data_method = UF_MODL_secsrf_general;
section_surface.angle_data.data_values.general_law = pointer data
to a law function;

Note: The UF_MODL_secsrf_general data method can not be used
directly. It is a place holder for any section surface which contains a
law value that is populated during an UF_MODL_ask_section_surface call. Do
not modify this data.

The following is a list of each type and their required geometry tags and data.

section_surface.create_method = UF_MODL_secsrf_five_points;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = First interior curve tag;
section_surface.control_strings[2] = Second interior curve tag;
section_surface.control_strings[3] = Third interior curve tag;
section_surface.control_strings[4] = End curve tag;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_four_points_slope;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start slope curve tag;
section_surface.control_strings[2] = First interior curve tag;
section_surface.control_strings[3] = Second interior curve tag;
section_surface.control_strings[4] = End curve tag;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_slopes_shoulder;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start slope curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = End slope curve tag;
section_surface.control_strings[4] = Shoulder curve tag;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_apex_shoulder;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Apex curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = Shoulder curve tag;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_apex_rho;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Apex curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = must be populated
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_slopes_rho;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start Slope curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = End Slope curve tag;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = must be populated
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_slope_arc;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start Slope curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_three_points_arc;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = First Interior curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_fillet_shoulder;
section_surface.control_strings[0] = Curve tag on first face;
section_surface.control_strings[1] = Curve tag on second face;
section_surface.control_strings[2] = Shoulder curve tag;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = First face tag;
section_surface.tangent_faces[1] = Second face tag;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_fillet_rho;
section_surface.control_strings[0] = Curve tag on first face;
section_surface.control_strings[1] = Curve tag on second face;
section_surface.control_strings[2] = NULL;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = must be populated with rho data
section_surface.tangent_faces[0] = First face tag;
section_surface.tangent_faces[1] = Second face tag;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_slopes_hilite;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start Slope curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = End Slope curve tag;
section_surface.control_strings[4] = Start highlight curve tag;
section_surface.control_strings[5] = End highlight curve tag;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_apex_hilite;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Apex curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = Start highlight curve tag;
section_surface.control_strings[4] = End highlight curve tag;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_fillet_hilite;
section_surface.control_strings[0] = Curve tag on first face;
section_surface.control_strings[1] = Curve tag on second face;
section_surface.control_strings[3] = Start highlight curve tag;
section_surface.control_strings[4] = End highlight curve tag;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = must be populated with rho data
section_surface.tangent_faces[0] = Face tag one;
section_surface.tangent_faces[1] = Face tag two;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_two_points_radius;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = End curve tag;
section_surface.control_strings[2] = NULL;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = must be populated with radius data
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_ends_slopes_cubic;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = Start Slope curve tag;
section_surface.control_strings[2] = End curve tag;
section_surface.control_strings[3] = End Slope curve tag;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_fillet_cubic;
section_surface.control_strings[0] = Curve tag on first face;
section_surface.control_strings[1] = Curve tag on second face;
section_surface.control_strings[2] = NULL;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = First face tag;
section_surface.tangent_faces[1] = Second face tag;
section_surface.radius_data = NULL;
section_surface.angle_data = NULL;

section_surface.create_method = UF_MODL_secsrf_point_radius_angle_arc;
section_surface.control_strings[0] = Start curve tag;
section_surface.control_strings[1] = NULL;
section_surface.control_strings[2] = NULL;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = First face tag;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = must be populated with radius data
section_surface.angle_data = must be populated with angle data;
section_surface.direction_indicator = must be 1 or -1;

section_surface.create_method = UF_MODL_secsrf_full_circle;
section_surface.control_strings[0] = Guide edge curve tag;
section_surface.control_strings[1] = Orientation edge curve tag;
section_surface.control_strings[2] = NULL;
section_surface.control_strings[3] = NULL;
section_surface.control_strings[4] = NULL;
section_surface.control_strings[5] = NULL;
section_surface.spine_string = Spine curve tag;
section_surface.rho_data = NULL;
section_surface.tangent_faces[0] = NULL;
section_surface.tangent_faces[1] = NULL;
section_surface.radius_data = must be populated with radius data
section_surface.angle_data = NULL;


Data Members

create_method
UF_MODL_secsrf_cre_method_t
Creation Method

polynomial_status
int
Polynomial status

rho_data
UF_MODL_secsrf_param_t
Rho data

tolerance
double
Tolerance used to
create surface

tangent_faces [ 2 ]
tag_t
Face tags of tanget faces

control_strings [ 6 ]
UF_STRING_p_t
Control string Array

spine_string
UF_STRING_p_t
Spine curve string

radius_data
UF_MODL_secsrf_param_t
Radius law data

angle_data
UF_MODL_secsrf_param_t
Angle law data

direction_indicator
int
Surface direction