Three Entity Blends


For three entity blend, the radius of the blend is not specified explicitly, but calculated implicitly during the blend surface construction such that the blend surface meets the three support faces tangentially. The center face is discarded. The generated blend may be a variable radius blend. This functionality is supported by api_blend_three_ent.

The following two figures illustrate the initial supporting faces: the magenta face (the center face), the cyan face, and the face (not seen) parallel to the cyan face.

Figure. Supporting Faces for Three Entity Blends

Figure. Conical Three Face Blend

C++ Example

#include "ckoutcom.hxx"
#include "cstrapi.hxx"
#include "intrapi.hxx"
#include "ablapi.hxx"

{
BODY *b1 = NULL;
ENTITY_LIST left_face_list, right_face_list, center_face_list, tmp;
double* ray_params = NULL;
outcome result;

// build a flat block, 50 x 50 x 5

check_outcome(result = api_make_cuboid(50, 50, 5, b1));

// select the "left" (50 x 50) face

check_outcome(result = api_get_ents(SPAposition(0, 0, 5), SPAunit_vector(0, 0, -1), 0.01, FACE_TYPE, b1, tmp, ray_params));

// Make the list of left faces (just one in this case).

left_face_list.add(tmp.next());
tmp.clear();
	
// select the "right" (50 x 50) face

check_outcome(result = api_get_ents(SPAposition(0, 0, -5), SPAunit_vector(0, 0, 1), 0.01, FACE_TYPE, b1, tmp, ray_params));

// Make a list containing the right face

right_face_list.add(tmp.next());
tmp.clear();

// select one of the narrow faces to be the center face

check_outcome(result = api_get_ents(SPAposition(50, 0, 0), SPAunit_vector(-1, 0, 0), 0.01, FACE_TYPE, b1, tmp, ray_params));

// Make the list containing the center face

center_face_list.add(tmp.next());
tmp.clear();

// Call the three entity blend api

check_outcome(result = api_blend_three_ent(left_face_list, right_face_list, center_face_list));
}

[Top]