Face-Face Blending   

<<< Interpreting Edge Blending Error Codes Chapters Interpreting Face-Face Blending Error Codes >>>

Contents

[back to top]


33.1 Introduction

Chapters 29 to 32 described Parasolid's support for creating edge blends. In addition to edge blending, Parasolid provides functionality to create blends between two sets of faces. This operation is known as face-face blending.

Figure 33-1 shows an example where two disjoint sheet bodies have been joined together by creating a face-face blend between them.

 

Figure 33-1 Blending two sets of faces

Face-face blending differs from edge blending as follows:

This chapter provides a complete description of Parasolid's support for face-face blending. Section 33.2, "Face-face blending concepts", explains the main concepts involved in face-face blending, and also provides a starting-point for the material in the rest of this chapter.

[back to top]


33.2 Face-face blending concepts

In a face-face blend, the two sets of faces to blend are known as the left and right walls of the blend. You define a face-face blend between two walls using a combination of the following three independent properties.

 

Property Description

The cross-section planes of the blend.

Cross-section planes can be either:

  • Orthogonal to the walls of the face-face blend (rolling-ball cross-section).
  • Orthogonal to a separate parameter spine (disc cross-section).
  • Derived from a set of isoparameter curves in the left hand wall.

See Section 33.3, "Defining the cross-section plane".

The two contact points in each cross-section plane at which the blend touches the faces being blended.

Contact points can either be defined implicitly - you specify the size of the blend and let Parasolid calculate the exact contact points, or explicitly - you define a curve that must form one of the boundaries of the blend surface. Blends may be either symmetric (defined using a single parameter), or asymmetric (defined using two parameters). See Section 33.4, "Defining contact points".

The cross-section shape of the curve between the two contact points in the cross-section plane .

You can define a range of cross-section shapes in the cross-section plane. These fall into three types:

  • conic blends (such as circular, elliptic, or hyperbolic blends)
  • chamfers
  • curvature continuous blends

See Section 33.5, "Defining the cross-section shape".

These properties are illustrated in Figure 33-2.

 

Figure 33-2 General definition of a face-face blend

In addition to these basic properties of a face-face blend, there are a number of usability factors that determine the final appearance of a blend.

 

Factor Description

Trimming

Once a blend surface has been created, it must be trimmed to the required shape - this involves removing material from the blend surface and the walls. You can control where and how the blend surface should terminate. Often, it is sufficient to trim the blend to existing surrounding geometry, but a number of different options are possible.

See Section 33.6, "Trimming face-face blends".

Propagation

You can control what happens if a blend can be continued in the faces adjacent to those specified as blend walls. In some cases, you might want to propagate the blend as far as possible, and in others, you might want to blend only those walls that you have explicitly specified.

See Section 33.7, "Propagating blends".

Notches

Sometimes, walls of faces may contain small notches. Parasolid can recognize these notches and lets you choose whether to stop the blend at the notch, or whether to continue the blend on the other side of the notch.

See Section 33.8, "Blend notches".

Multiple solutions

Sometimes it is possible to create blends in several places from the same set of walls. Parasolid lets you choose whether to create all of them, or just one of them.

See Section 33.9, "Dealing with multiple solutions".

Blend ribs

Parasolid cannot always create a suitable blend shape for a given set of walls - for instance, if the walls contain areas with a smaller curvature than the blend you want to create. Rather than let the blend operation fail completely, you can opt to generate blend ribs - sets of curves and points that describe the blend shape. You can pass blend ribs to a more general surface-creation package to approximate a blend surface.

See Section 33.10, "Generating blend ribs".

Checking

Parasolid offers support for performing a range of local checks during a blending operation. Such checks minimize the risk of inconsistencies in the resulting blended body.

See Section 33.11, "Checking".

User-supplied surfaces

Rather than have Parasolid generate a blend surface, you can supply a blend surface of your own if you prefer. This is useful if your application provides support for proprietary surface types, and allows you to create specialized blending functionality for your application.

See Section 33.12, "User-supplied surfaces".

[back to top]

33.2.1 General properties of a face-face blend

This section explains some general properties of face-face blends that have not already been mentioned.

Blend sense

When you create face-face blends between face sets from a single solid body, the blend faces can usually only be attached one way round. However, when blending between walls of sheet faces, the orientation of the blend face depends on the direction of the sheet face normals. Depending on those normals (and how you trim the blend - see Section 33.2), you can create very different effects from the same set of walls.

You define the orientation of a face-face blend by specifying a logical sense for both the left and right walls. By convention, if the sense for a given wall is true, then the blend is produced to lie behind the wall, with respect to the normals of the faces in the wall. This is illustrated in Figure 33-3, which shows how four different blends can be created between the same two sets of sheet faces.

 

Figure 33-3 Specifying different blend faces from the same walls using different senses

 

Note: When you create face-face blends in a solid body, always make the left and right senses equal.

Even when blending sheet bodies, there are not usually four possible options for the blend orientation.

Master faces

The first face in the list of faces that defines a given wall is called the master face. A face-face blend must pass through at least one of the two master faces for the blend to succeed.

If a wall consists of a single face, or a set of faces in a single row, this is usually not a problem. However, if a wall has a set of faces in several rows, then the blend may fail, depending on the how big the blend surface is and which faces are the master faces. Figure 33-4 shows the difference between blends that can succeed, and blends which fail because of the position of the master faces.

 

Figure 33-4 The use of master faces in face-face blends

[back to top]

33.2.2 Creating a face-face blend

Face-face blends are created using PK_FACE_make_blend, which takes and returns the following arguments:

 

Received Description
n_left_wall_faces
left_wall_faces

The number of faces in the left wall, and an array of those faces.

n_right_wall_faces
right_wall_faces

The number of faces in the right wall, and an array of those faces.

left_sense
right_sense

The sense of the faces in the left and right walls, respectively.

options

A set of options. These are described throughout the rest of this chapter.

Returned Description
n_sheet_bodies
sheet_bodies

The number of sheet bodies created, and an array of those sheet bodies.

n_blend_faces
blend_faces

The number of blend faces created, and an array of those blend faces.

unders

The underlying topology of each blend face.

ribs

The blend rib information returned, if any.

fault

Fault information, if any.

[back to top]


33.3 Defining the cross-section plane

As described in Section 33.2, the cross-section planes of a face-face blend are the set of notional planes that pass through the blend surface, and contain the contact points and curve shape for the blend. You can create different blend effects by specifying the way the cross-section planes are orientated.

Cross-section planes can be orthogonal to either:

The first two of these options are by far the most common. Figure 33-5 shows the difference between them. Figure 33-6 shows an example of the third option.

 

Figure 33-5 Orientation of cross-section planes in rolling ball blends and disc blends

 

Figure 33-6 Blending faces using an isoparameter cross-section plane

More information about each type of cross-section plane is shown below:

 

Cross-section Description

Rolling ball

A rolling ball blend has cross-section planes that are orthogonal to the walls of the blend.

This is the default type of cross-section plane used for face-face blends.

Disc

A disc blend has cross-section planes that are orthogonal to a specified parameter spine. You must supply a parameter spine.

Isoparameter

Isoparameter blends are blends whose cross-section planes are derived from a set of isoparameter curves in the left-hand wall. The isoparameter is chosen to be the one whose curves are the most orthogonal to the parameter spine. If you use this type of blend, you must supply a parameter spine, and it must lie in the left-hand wall. These are specialized blends that are useful for designing turbines.

[back to top]

33.3.1 Supplying a suitable parameter spine

When specifying a blend, you may need to supply a parameter spine. This is a 3-space curve, which in general terms should follow the path of the blend. Choosing a suitable parameter spine depends on the type of cross-section plane you are using.

 

Blend cross-section Parameter spine details

Rolling ball

Rolling ball blends do not usually need a parameter spine. In cases where one is necessary, it should not be too accurate: a straight line between points near the start and the end of the intended blend is often sufficient. If you attempt to approximate to the path of the blend too accurately, the parameter spine may contain regions of tight curvature and the blend may fail.

Disc

Disc blends do need a parameter spine, since the cross-section planes in the blend are orthogonal to the parameter spine. The absolute position of the parameter spine in 3-space need not be accurate, but its direction should be, since this influences the final shape of the blend, as shown in Figure 33-7.

Isoparameter

For isoparameter blends, the parameter-spine must lie in the left-hand wall.

For all types of cross-section plane, the general shape of the parameter spine is important. For example, if a blend is going to be a periodic, the parameter spine must be periodic.

 

Figure 33-7 Changing a disc blend using different parameter spines

[back to top]

33.3.2 Options for defining cross-section planes

The options used to define cross-section planes are in the shape sub-structure (PK_blend_shape_t) of PK_FACE_make_blends_o_t. They are as follows:

 

Option Description
xsection

The type of cross-section plane to use. This is one of:

  • PK_blend_xs_rolling_ball_c (default)
  • PK_blend_xs_disc_c
  • PK_blend_xs_isoparameter_c
parameter

A 3D parameter curve that defines the parameter spine to use for the blend. Default: PK_ENTITY_null.

[back to top]


33.4 Defining contact points

Each cross-section plane in a blend contains two contact points, where the blend surface touches one of the blend walls. You can define where the contact point lies either

This section explains both these strategies in turn.

[back to top]

33.4.1 Specifying the size of the blend

One way of defining where the contact points lie in a cross-section plane is by specifying how large the blend should be. Based on this information, Parasolid calculates exactly where the boundary of the blend lies, and, hence, the position of the contact points on each cross-section plane.

The size of a blend is specified with reference to the blend spine. For example, in the case of a symmetric rolling ball blend, the blend spine is the path taken by the center of the rolling ball as it moves from one end of the blend walls to the other, as shown in Figure 33-8. In the case of a symmetric disc blend, it is the path taken by the center of the swept circle.

Do not confuse the blend spine, which describes the exact path taken by a blend, with the parameter spine, which is just a guide to the direction of the blend.

 

Figure 33-8 Comparison of blend spine and parameter spine in a rolling ball blend

There are three ways to specify the size of a blend, in terms of the distance between the blend spine and the blend walls:

Constant radius blends

You define a constant radius blend by specifying a single value that represents the distance of the blend spine from both blend walls. Constant radius blends always produce symmetric blends. Figure 33-9 shows the differences between constant radius and variable radius blends.

Constant radius blends can be combined with any kind of cross-section plane.

Variable radius blends

A constant radius blend is defined using a single parameter. By contrast, you can define a variable radius blend by specifying two parameters:

These parameters are themselves not single values, but ranges of values that describe how the distance between the blend spine and the given wall varies along the extent of the blend.

Variable radius blends can be asymmetric (if the ranges are different), or symmetric (if the ranges are the same, or if only a range for the left wall is supplied).

Variable radius blends can be combined with any kind of cross-section plane.

 

Figure 33-9 Constant radius and variable radius blends

 

Note: You can approximate a constant radius blend with a variable radius blend by setting the same, unvarying, range for both walls.

Constant width blends

You can create blends that have a constant chordal width, as shown in Figure 33-10.

 

Figure 33-10 Constant radius vs. constant width blends

This type of blend is particularly useful when the angle between the faces to be blended varies along the extent of the blend, but you want to keep the amount of blend material constant along the whole blend. Figure 33-11 illustrates how the shape of the blend changes with the angle for such faces.

 

Figure 33-11 Blend shape at (a) the start and (b) the end of a constant width blend

In addition to specifying a width, you can specify a ratio of the ranges to use when creating the blend. This creates a constant width blend with an asymmetrical cross-section. The ratio is interpreted with reference to the left and right walls of the blend, as shown in Figure 33-12.

 

Figure 33-12 Creating asssymetric constant width blends using the ratio field

You can only produce constant width blends with a rolling ball cross-section plane. Constant width blends cannot be used in conjunction with cliffedges or holdlines: see Section 33.4.2 and Section 33.4.3, for details about these constraints.

Options

The options used to define the size of a face-face blend are in the shape sub-structure (PK_blend_shape_t) of PK_FACE_make_blends_o_t. They are as follows:

 

Option Description
radius

The radius of a constant radius blend. The blend spine is this distance away from both the left and right walls along the length of the blend. The default radius is 0.0.

range1
range2

The ranges of a variable radius blend. These are 1-D law curves that describe how the distance from the blend spine to one of the blend faces varies along the extent of the blend:

  • range1 describes the distance to the left wall
  • range2 describes the distance to the right wall
width

The width of a constant width blend. The default width is 0.0.

ratio

The ratio of ranges for a constant width blend.

The default value for ratio is 1.0, which ensures that a symmetric blend is created by default whenever a non-zero value is specified for the width field. Specifying a different ratio creates an asymmetric constant width blend.

 

Note: You can only specify these options in the following combinations:

  • radius only
  • range1 , and optionally range2
  • width and ratio

No other combinations are valid.

[back to top]

33.4.2 Specifying the boundary of the blend

As well as defining contact points by specifying the size of the blend, you can specify contact points explicitly, by defining one or both boundaries of the blend.

The boundary of a blend, when specified explicitly, is often referred to as a holdline, because it holds the blend inside the specified line. All holdlines are represented by an array of one or more edges.

You can specify the boundary of a blend using :

Tangent holdlines

You can use tangent holdlines to create symmetric variable radius blends. However, rather than defining how the ranges vary along the extent of the blend, you specify a tangent holdline to use as one of the blend boundaries. Parasolid calculates the blend's range for the wall that the tangent holdline lies on, based on the tangent holdline and the supplied cross-section plane. Parasolid then uses this range to calculate the opposing blend boundary on the other wall, as shown in Figure 33-13.

 

Figure 33-13 Supplying tangent holdlines to create symmetric variable radius blends

You can supply more than one edge as a tangent holdline.

Conic holdlines

Like tangent holdlines, you can use conic holdlines to create variable radius blends. However, a conic holdline only specifies the range of the blend for one wall. The range of the blend for the other wall is specified either:

Whereas tangent holdlines can only be used to create symmetric variable radius blends, conic holdlines can create asymmetric variable radius blends.

 

Figure 33-14 Supplying conic holdlines to create asymmetric variable radius blends

A double conic holdline blend is a blend in which the blend boundaries in both walls are specified using a conic holdline. To define a double conic holdline, you must specify at least two edges to use as blend boundaries.

 

Figure 33-15 Double conic holdline blend

[back to top]

33.4.3 Constraining a blend locally using blend size

Section 33.4.2, "Specifying the boundary of the blend", described how you can use tangent and conic holdlines to define the entire boundary of a blend. You can also use these holdlines to constrain the boundary locally, along just a part of a blend. To do this you specify both:

Wherever the holdline falls inside the boundary of the defined blend (that is, wherever the holdline creates a smaller blend than the specified blend size), Parasolid ensures the blend follows the holdline, rather than the original blend boundary. This is illustrated in Figure 33-16, which shows a constant radius blend that is constrained locally using a curve. In Figure 33-16 (a), this curve is used as a tangent holdline, creating the symmetric variable radius blend shown. By contrast, in Figure 33-16 (b), the same curve is used as a conic holdline, creating an asymmetric variable radius blend.

 

Figure 33-16 Constraining a blend locally using (a) tangent and (b) conic holdlines

Cliffedge blends

A third way of constraining the boundary of a blend locally is to define a cliffedge blend. Cliffedge blends differ from holdlines in one important respect: the blend surface does not have to join the blend wall tangentially along the cliffedge. (Blends with a chamfer cross-section shape are an exception to this, since they never join the blend wall tangentially. Any holdline or cliffedge blend may have a chamfer cross-section. See Section 33.5.2, "Chamfer cross-sections".)

Cliffedge blends do not affect the symmetry of a blend.

 

Figure 33-17 Constraining a blend locally using cliffedges

 

Note: Cliffedge blends can only be used to constrain a blend locally within a specified area. If you want to use a cliffedge along the entire boundary of a blend, you need to specify another size control for the side that has the cliffedge. This can be either a radius, ranges, or a tangent holdline on the opposite side. This additional size control needs to be large enough that the cliffedge constraint is used along the entire extent of the blend. See Figure 33-32 for an example.

[back to top]

33.4.4 Inverting cliffedges and holdlines

By default, the holdlines and cliffedge blends described in Section 33.4.2 and Section 33.4.3 are defined with reference to the part of the wall that lies below the specified holdline or cliffedge. Sometimes, it can be useful to specify a blend that is defined with reference to the part of the wall that lies above the holdline or cliffedge. Such a blend is known as an inverted holdline or cliffedge.

Inverting a holdline blend makes the blend tangent to the face above the holdline rather than the face below, as shown in Figure 33-18.

 

Figure 33-18 Using inverted holdline blends to control the tangency of a blend

Using an inverted holdline lets you create a blend when there is no face below the cliffedge or holdline (for example, on sheet edges), or replace a single face with a blend (for example on the top of a rib), such as the examples shown in Figure 33-19.

 

Figure 33-19 Using inverted blends to (a) create a blend on a sheet edge (b) replace a face with a blend

 

Note: By default, cliffedge blends and globally constrained holdline blends are automatically inverted if this is the only valid solution using that edge. If you switch off this behavior, blends that would have inverted may fail.

Like holdlines, you can use inverted holdlines to constrain the shape of a blend locally. However, whereas a holdline constrains the blend to follow the boundary that produces the smallest blend radius, an inverted holdline constrains the blend to follow the boundary that produces the largest blend radius.

The difference between these two methods is illustrated in Figure 33-20. In general, using an inverted holdline increases the amount of blend surface that is created. In particular, it can be used to maintain the minimum height of the blend along a wall, which improves the overall appearance of the finished blend, and generally creates a more rigid structure. Figure 33-21 shows a good example of this technique in practice, where an inverted holdline has been used to let the blend surface flow smoothly over the drop.

 

Figure 33-20 Constraining the blend radius using inverted holdlines

 

Note: If a normal holdline is used to constrain a blend locally, the holdline is not automatically inverted if this is the only valid solution. In order to constrain locally using an inverted holdline, you must explicitly define the holdline as inverted.

 

Figure 33-21 Using inverted holdlines to improve blend support

[back to top]

33.4.5 Options

The options used to define the boundary of a face-face blend are in the constraints sub-structure (PK_blend_constraint_t) of PK_FACE_make_blends_o_t. They are as follows:

 

Option Description
tangent_edges

An array of edges to use as tangent holdlines.

conic_edges

An array of edges to use as conic holdlines.

cliff_edges

An array of edges to use as cliffedges.

inv_tangent_edges

An array of edges to use as inverted tangent holdlines.

inv_conic_edges

An array of edges to use as inverted conic holdlines.

In addition, the following option is in PK_FACE_make_blends_o_t:

 

Option Description
update

Whether or not to invert cliffedges and holdlines automatically. It has two values:

Tangent and conic holdlines are not inverted automatically if they are used to constrain a blend locally (as described in Section 33.4.3), regardless of this setting.

[back to top]


33.5 Defining the cross-section shape

Section 33.3, "Defining the cross-section plane", explained how you specify the cross-section planes in a face-face blend. Section 33.4, "Defining contact points", explained the different ways that the contact points on those planes can be defined. This section explains how you can specify the shape of the curve that joins the contact points together on the cross-section plane.

There are three general types of cross-section shape that you can specify:

In addition, you can optionally control the precise shape of any conic or curvature continuous cross-section. See Section 33.5.4 for details.

If necessary, you can let Parasolid infer the cross-section shape from other information that you have provided. See Section 33.5.5.

[back to top]

33.5.1 Conic cross-sections

You can create a conic blend between contact points that have been created using any of the methods discussed in Section 33.4, "Defining contact points".

Without extra information, Parasolid always creates a cross-section that is either circular or a least-tension ellipse. In most cases, this is sufficient. However, if you would like to create a different cross-section, such as a hyperbola or a parabola, you need to pass a rho value. See Section 33.5.4 for details.

If you specify a conic cross-section, Parasolid infers the precise nature of the conic based on other information that you specify.

 

If you specify ... Parasolid creates ... More information

radius

a symmetric blend with a circular cross-section.

Section 33.4.1.

range1 only

Section 33.4.1.

range1 = range2

Section 33.4.1.

width , and ratio=1

Section 33.4.1.

Any tangent holdline

Section 33.4.2.

range1 and range2 , not equal

an asymmetric blend with a "least-tension" elliptical cross-section.

Section 33.4.1.

width , and ratio<>1

Section 33.4.1.

Any conic holdline

Section 33.4.2, Section 33.4.3

rho

either a symmetric or an asymmetric blend with a cross-section shape defined by rho .

Section 33.5.4.

[back to top]

33.5.2 Chamfer cross-sections

A chamfer cross-section is perhaps the simplest type of cross-section shape, since it consists of a straight line between the contact points. Chamfer blends are unusual in that the blend is not tangent to the blend walls.

Figure 33-22 shows an example of a variable radius chamfer blend, although you can create a chamfer blend between contact points that have been created using any of the methods discussed in Section 33.4, "Defining contact points".

 

Figure 33-22 Creating a variable radius chamfer blend between two walls

[back to top]

33.5.3 Curvature continuous cross-sections

Curvature continuous blends have a cross-section that has the same curvature as each wall at the contact points.

If you wish, Parasolid can calculate an appropriate curvature continuous blend from the supplied contact point data. You can have more control over the precise shape of the blend by passing a depth curve to PK_FACE_make_blend as well. See Section 33.5.4 for more information.

[back to top]

33.5.4 User-defined conic and curvature continuous cross-sections

You can control the shape of a conic cross-section by supplying a rho value in the call to PK_FACE_make_blend. This is a 1D law curve that defines the positions of the deepest points along the blend, as shown in Figure 33-23.

 

Figure 33-23 Using a rho value to control the curve shape

Each point on the curve is a real number between 0 and 1, that is interpreted as follows:

 

Rho value Description

0 < rho < 0.5

Cross-section is an ellipse. As rho approaches 0, the blend becomes flatter, and closer to a chamfer. The value 0 is not allowed. Use a chamfer blend if you require a true chamfer: see Section 33.5.2.

0.5

Cross-section is a parabola.

0.5 < rho < 1

Cross-section is a hyperbola. As rho approaches 1, the blend becomes more L-shaped. A value of 1 is not allowed.

 

Figure 33-24 Elliptical and hyperbolic cross-section shapes in face-face blends

 

Note: If you supply a rho value, you must also supply a parameter spine. See Section 33.3.1 for details.

You can control the shape of a curvature continuous cross-section by supplying a depth curve in the call to PK_FACE_make_blend. This is a 2D B-curve whose parameter space is that of the portion of the parameter spine in the region of the blend. It is used to determine the point of maximum depth of the blend.

Each point along the supplied depth curve contains two parameters that set the position of the deepest point in the blend (known as the depth point). The parameters represent the following information respectively:

 

Parameter Description

X co-ordinate

The curve skew. This is the distance of the depth point along the chord between the contact points. It is a value between 0 and 1:

  • The depth point approaches the left wall as the value approaches 0
  • The depth point approaches the right wall as the value approaches 1

Y co-ordinate

The curve depth. This is the distance of the depth point between the chord between the contact points and the intersection of the tangents of the walls. It is a value between 0 and 1:

  • The depth point approaches the chord as the value approaches 0
  • The depth point approaches the intersection as the value approaches 1

These parameters are illustrated in Figure 33-25.

 

Figure 33-25 Defining the skew and depth in a curvature continuous blend

 

Note: If you supply a depth curve, you must also supply a parameter spine. See Section 33.3.1 for details.

[back to top]

33.5.5 Implying curve shape from other settings

Generally, you should specify either conic, chamfer, or curvature-continuous cross-section shape explicitly when creating face-face blends. If necessary, however, you can omit this specification, and let Parasolid infer the cross-section shape based on the other information you have provided, such as a rho value, ranges, or depth curve.

If you do this, then a number of restrictions apply to face-face blending, as follows:

 

Note: Before Parasolid V13.0, cross-section shape could only be inferred from the supplied ranges, rho values and depth curves, and all face-face blending was subject to the restrictions above. You are strongly recommended to supply an explicit cross-section shape when defining face-face blends, thereby avoiding all these restrictions.

[back to top]

33.5.6 Options

The options for controlling the cross section shape of a blend are all contained in the shape sub-structure (PK_blend_shape_t) of PK_FACE_make_blend_o_t. They are as follows:

 

Option Description
xs_shape

Specifies the cross-section shape of the blend. This can have one of the following values:

rho

A 1D law curve that describes a general conic cross-section shape. See Section 33.5.4. You can use this to control the shape of a conic cross-section.

If you supply rho , then you must also supply a parameter spine. See Section 33.3.1 for details on parameter spines.

depth

A 2D law curve that describes a curvature continuous cross-section shape. You can use this to control the shape of a curvature continuous cross-section. See Section 33.5.4.

If you supply depth , then you must also supply a parameter spine. See Section 33.3.1 for details on parameter spines.

[back to top]


33.6 Trimming face-face blends

Once a blend has been created, it needs to be trimmed appropriately to any surrounding geometry. Parasolid supports:

 

Figure 33-26 Trimming blend faces and blend walls

[back to top]

33.6.1 Trimming blend faces

You need to specify how blend faces should be trimmed to the boundaries of the blend walls. This is done using the the trim option (PK_blend_trim_t) in PK_FACE_make_blends_o_t, which takes the following values:

 

Value Description

PK_blend_trim_to_walls

Trim blend faces to walls (the default). The blend is terminated by curves chosen such that the side boundaries are the correct lengths for attaching to both walls.

PK_blend_trim_no_c

Do not trim blend faces. The blend faces are created so that they extend beyond the underlying walls.

PK_blend_trim_long_c

Long trim to walls. The ends of the blend are created using constant parameter lines determined by the wall boundaries such that the blend is as long as possible.

PK_blend_trim_short_c

Short trim to walls. The blend is created such that the blend end boundaries are the constant parameter lines determined by the wall boundaries such that the blend is as short as possible.

Short trim blends can be attached internally to multiple face sheet bodies and to solid bodies. Blends are capped using planar capping surfaces as required, as shown in Figure 33-28.

These are illustrated in Figure 33-27.

 

Figure 33-27 Trimming blend faces to walls

 

Figure 33-28 Before (a) and after (b) attaching short trim blends internally

[back to top]

33.6.2 Trimming blend walls and returning the body

You need to specify whether to trim the walls back to where they meet the blend face, as shown in Figure 33-29, and in what form you want the walls and blend returned. You do this using the the walls option (PK_blend_walls_t) in PK_FACE_make_blends_o_t, which takes the following values:

 

Value Description

PK_blend_walls_trim_no_c

Does not trim either of the walls. The blend is not attached to the walls and is returned as a separate body.

PK_blend_walls_trim_both_c

Trims both walls, but does not attach the blend to the walls. The blend is returned as a separate body.

You can only use this token if you are blending between two sheet bodies.

PK_blend_walls_attach_c

Trims both walls and attaches the blend to the walls. If the blend is between two different bodies then they are united into a single body, with the body containing the left wall treated as the target.

This is the default.

PK_blend_walls_solid_c

Trims both walls, attaches the blend to the walls, and creates a solid body if possible. This is the same as PK_blend_walls_attach_c, except that if the result of the blending operation forms a closed volume, a solid body is created.

This token can only be used in conjunction with PK_blend_trim_to_walls_c.

 

Figure 33-29 Trimming walls to blend faces

[back to top]

33.6.3 Trimming blend to a plane

As well as supplying options to trim the blend faces and walls, you can supply a plane to trim the end of a blend. The blend face is trimmed along a constant parameter line that is calculated from the point at which the supplied plane intersects the blend spine, as shown in Figure 33-30. The blend is trimmed to lie on the positive side of the plane.

 

Figure 33-30 Blend trimmed to a limit plane

You can either supply one plane, in the field limit_1 , or two, in limit_1 and limit_2 . If you supply one plane, it can be used to determine the start or end of the blend, and if you supply two they are used to determine both ends.

 

Note: These options can only be used in conjunction with the walls tokens PK_blend_walls_trim_no_c and PK_blend_walls_trim_both_c; the blend faces created cannot be attached to the walls.

[back to top]


33.7 Propagating blends

Parasolid provides functionality for propagating face-face blends between adjoining faces in a body, provided that the faces meet smoothly at any intervening edges. This simplifies face-face blending by allowing you to specify just the master faces you want to blend; Parasolid can then choose which other faces should be included in the walls in order to propagate the blend as far as possible.

For example, Figure 33-31 shows a body in which only two faces were specified as walls. The blend that was created from these walls was then propagated as far as possible, creating the result shown. Notice that the blend has not propagated across the faces on the left, since the intervening edge is sharp.

 

Figure 33-31 Propagating face-face blends

 

Note: You cannot use propagation with face-face blends that have a disc or isoparameter cross-section plane.

Propagation also works in conjunction with holdlines and cliffedges, as described in Section 33.4. Like master faces, this means that you can specify just the first edge in a chain of edges that make up a holdline or cliffedge, provided that the edges in the chain meet smoothly. If you use propagation, and you have specified holdline or cliffedge data, then size constraints are maintained across any faces that are added to the walls as a result of propagation. Inverted cliffedges or holdlines only propagate to other inverted cliffs or holdlines.

In Figure 33-32, by providing the walls and cliffedge shown, and a large radius, propagation creates the face-face blends shown. The cliffedge is maintained along the extent of the blend because of the size of the radius.

 

Figure 33-32 Propagating cliffedges

Propagation is invoked using the propagate option, which takes two values:

You can control the tolerance to within which the edges between faces are considered smooth using the tolerance option in PK_FACE_make_blend_o_t.

 

Note: Parasolid uses both tolerance information on the edges between faces and the tolerance specified in PK_FACE_make_blend_o_t to determine whether faces meet smoothly at intervening edges.

[back to top]


33.8 Blend notches

Sometimes you might want to create a face-face blend that extends past a notch, rather than one that stops as soon as it encounters the notch. You can do this using the notch option in PK_FACE_make_blend_o_t, which blends across any notches found in either the middle or the end of a wall.

Figure 33-33 illustrates a successful notch overflow in the middle of a blend. In this case, if notch is PK_LOGICAL_false, the blend face that is created cannot be successfully attached to the body, and is returned as a separate sheet.

 

Figure 33-33 Notch overflow in the middle of a blend

A notch overflow at the end of a blend occurs when all of one side of a blend face at the end of the blend is trimmed away. This is shown in Figure 33-34. In this example, if notch is PK_LOGICAL_false, then only the first face in the right wall is blended, because the notch occurs while the blend is still in this face. The next face in the right wall is then extended to cap the blend. If notch is PK_LOGICAL_true, the blend is extended along all the faces in the right wall.

 

Figure 33-34 Notch overflow at the end of a blend

[back to top]


33.9 Dealing with multiple solutions

In some cases, the data you pass to PK_FACE_make_blend may contain ambiguous information that could cause blending to fail. For example it may be possible to create more than one set of blends between two walls, or you may have supplied holdline data that describes conflicting sets of holdlines, causing confusion over which of several possible blends should be created. This section describes the options Parasolid provides to help you overcome these ambiguities.

Figure 33-35 shows an example in which there are two possible face-face blends. In order to blend the walls indicated, you must do one of the following:

 

Figure 33-35 Multiple face-face blends

If you do neither of these, Parasolid creates only one blend, but does not guarantee which blend it creates.

A help point is a 3-space vector that is used to distinguish between multiple possible solutions. Parasolid creates whichever blend lies closest to the supplied help point. You should try to make any help points lie as close to the desired blend face as possible; the further away a help point is, the harder it is for Parasolid to identify the correct blend face.

 

Note: You can provide a help point in cases where there is only one solution, if you wish. If the help point is close enough to the blend face, it may help improve performance. However, if the help point is not close to the blend, it will not help, and may even hinder performance.

By default, Parasolid only returns one set of blend faces.

 

    Performance issue: You must be careful when requesting multiple blends, since Parasolid will look for additional blends even in cases where there is only a single solution. This can cause a performance overhead, especially if the supplied walls contain many faces.

In cases where there are conflicting multiple blends, you must supply a help point if you want to have any control over which of the conflicting blends is attached to the body. For example, if you specify several holdlines that lie in the same wall (as shown in Figure 33-36), you must supply a help point if you want to attach one of the blends. If you do not want to attach a blend (i.e., if walls is PK_blend_walls_trim_no_c or PK_blend_walls_trim_both_c), then Parasolid returns all solutions if you do not supply a help point. You cannot attach multiple conflicting blends to a body.

 

Figure 33-36 Resolving conflicting holdline data using help points

[back to top]

33.9.1 Options

The options used to deal with multiple solutions are in PK_FACE_make_blends_o_t. They are as follows:

 

Option Description
multiple

Whether or not to create multiple blend sheets. The default is PK_LOGICAL_false.

have_help_point

Whether or not a help point is supplied in help_point . The default is PK_LOGICAL_false. This must be set to PK_LOGICAL_true for any help point to be used.

help_point

A 3-space vector that represents a help point that PK_FACE_make_blend can use to resolve any ambiguity in the supplied data. If a help point is supplied, you should set have_help_point appropriately.

[back to top]


33.10 Generating blend ribs

Parasolid can also produce blend ribs instead of, or as well as, blend surfaces in face-face blending. Blend ribs are geometric cross-sections of a blend surface, as shown in Figure 33-37. In general blend ribs are curves, though points are returned if the blend surface is degenerate.

By passing blend ribs to a more general-purpose surface creation tool, you can use them to create surfaces in regions where true blend surfaces cannot be produced, such as regions of tight curvature. For example, if an underlying surface has a tight, narrow crease which causes blending to fail, you can generate ribs and use them to create a surface which approximates the blend.

 

Figure 33-37 Producing blend ribs instead of a blend surface

This section explains:

 

Note: You can only produce blend ribs if you also supply a parameter spine. See Section 33.3.1, "Supplying a suitable parameter spine" for more information.

[back to top]

33.10.1 Specifying when to produce ribs

You can choose to produce ribs either:

You can also control how ribs are distributed by grouping them together in a number of ways, and specifying a maximum number of ribs to produce in each group. Ribs are distributed as evenly as possible within each group.

Options

You specify how you want blend ribs to be produced using the rib_control structure (PK_blend_rib_control_t) in PK_FACE_make_blend_o_t. This contains the following options:

 

Option Description
output_rib

Under what conditions to generate blend ribs. This can take the following values:

group_rib

How to group the ribs that are generated. This can take the following values:

  • PK_blend_group_rib_no_c - Do not group the ribs. The total number of ribs produced is no more than max_n_ribs (the default).
  • PK_blend_group_rib_by_face_c - Ribs are grouped according to the blend faces produced. No more than max_n_ribs ribs are produced for each blend face.
  • PK_blend_group_rib_by_parms_c - Ribs are grouped by the parameter intervals specified in interval_parms . No more than max_n_ribs ribs are produced in each interval.
max_n_ribs

The maximum number of ribs to produce in each group. Ribs are distributed across the group as evenly as possible.

n_interval_parms

The size of the interval_parms array.

interval_parms

This allows you to specify groups explicitly by defining intervals along the parameter spine that represent the boundaries of each group. The first member of the array defines the start of the first interval, the second member the end of the first interval and the start of the second, and so on. For example, a set of interval_parms p1, p2, p3, p4 defines 3 intervals: p1-p2, p2-p3, and p3-p4.

The interval_parms should be in order of increasing parameter. For periodic parameter spines the last member may be equal to the first plus the period of the parameterization. Other than this, all members must be distinct.

[back to top]

33.10.2 How ribs are returned

Ribs are returned in the ribs field (PK_blend_rib_r_t) of PK_FACE_make_blend. This contains the following fields:

 

Field Description
n_ribs

The number of ribs that were created.

ribs

The ribs that were created, stored as an array of geometry. These are usually curves, but may be points in areas where the blend is degenerate or has zero radius.

rib_parms

An array of parameters. Each member of the array represents the position of the corresponding rib on the parameter spine you supplied.

rib_indices

An array of indices that uniquely identifies each rib returned.

 

Note: For blends which produce multiple sheets, two ribs may share the same parameter, but will never share the same index.

[back to top]


33.11 Checking

To ensure validity of the resulting body, Parasolid can carry out a series of local checks when creating face-face blends.

You can use the checks structure (PK_blend_local_check_t) in PK_FACE_make_blend_o_t to control which of these checks to perform. The default value for each field in checks ensures that no local checking is performed by default, so as to maximize performance.

PK_FACE_make_blend_o_t also contains a local_checks option that provides a quick way of turning on common checking functionality. If you set local_checks in PK_FACE_make_blend_o_t to PK_LOGICAL _true, the following local checking is performed:

The table below summaries the fields in the checks structure, together with their default values and their values when local_checks is PK_LOGICAL_true.

 

Option Default value local_checks value

check_su_X : Check for self-intersecting surfaces.

PK_blend_check_su_X_no_c

PK_blend_check_su_X_not_bsurf_c

check_fa : Check that individual faces are valid.

PK_blend_check_fa_no_c

PK_blend_check_fa_yes_c

check_fa_fa : Check for face-face inconsistencies.

PK_blend_check_fa_fa_no_c

PK_blend_check_fa_fa_yes_c

For more information on Parasolid's checking capability, see Chapter 8, "Checking".

[back to top]


33.12 User-supplied surfaces

Rather than have Parasolid generate a blend surface, you can supply a surface to use in a blend operation using the user_surface field of PK_FACE_make_blend_o_t. When using this option, you should provide consistent left_sense and right_sense flags. If you don't, then Parasolid attempts to create a valid model, but may fail. See Section 33.2, "Face-face blending concepts", for more information about the sense of a blend.

In order for the blend to succeed, the surface you supply must:

 

Figure 33-38 Blending faces with a user-supplied surface

[back to top]


33.13 Face-face blending summary

In summary, this chapter has given you a complete description of Parasolid's face-face blending functionality.

 

Figure 33-39 Blending two walls of faces

To return to the example used at the very beginning of the chapter, the disjoint bodies shown in Figure 33-39 have been blended as follows:

 

[back to top]

<<< Interpreting Edge Blending Error Codes Chapters Interpreting Face-Face Blending Error Codes >>>