Body Tapering   

<<< Face Tapering Chapters Patching >>>

Contents

[back to top]


67.1 Introduction

This chapter describes how PK_BODY_taper provides functionality to apply tapering to a solid body, making it particularly easy to design parted molds.

In body tapering, a parting body (usually a sheet) is used to indicate a division in the body to be tapered. When designing molds, the parting body represents the division between the two halves of the mold. Two general tapering operations are possible with PK_BODY_taper:

Examples of both body tapering operations are shown in Figure 67-1.

 

Figure 67-1 Single-sided and double-sided tapering

For double-sided tapering, PK_BODY_taper also provides support for mitering, whereby material is added to the tapered body such that tapered faces in the resulting body meet at the parting sheet.

Figure 67-2 shows, in cross-section, a double-sided taper of a block with an intersecting parting body. In order to be able to draw the block from the mold, only some parts of the block need to be tapered ( Figure 67-2(a)). However, additional material must also be added ( Figure 67-2(b)) in order to ensure that the tapered faces meet at the parting body.

 

Figure 67-2 Mitering a block so that tapered surfaces meet

 

Note: The body tapering process attempts to simplify the resulting body as much as possible. As a result, any features that are completely consumed by a taper face will no longer be present in the tapered body.

For an example of this functionality, see the code example in the C++\Code Examples\Modelling\LOP\Body Taper folder, located in example_applications in your Parasolid installation folder.

 

Note: This functionality does not support facet geometry.

 

Related Topics:

[back to top]


67.2 Calling PK_BODY_taper

In order to perform body tapering, you need to specify the following:

 

Argument

Description

body

A solid body to be tapered.

parting_body

A body that is used to indicate a division in the body to be tapered. See Section 67.2.1, “Specifying a parting body” for more information.

n_refs_above
refs_above

A list of reference entities above the parting body. See Section 67.2.2, “Specifying reference entities and taper angles” for more information.

n_refs_below
refs_below

A list of reference entities below the parting body. See Section 67.2.2, “Specifying reference entities and taper angles” for more information.

angle_below
angle_above

The taper angle above and below the parting body, respectively. See Section 67.2.2, “Specifying reference entities and taper angles” for more information.

direction

The draw direction.

options

A set of options that control the result of the tapering operation. See Section 67.3, “Summary of PK_BODY_taper options” for more information.

67.2.1 Specifying a parting body

The parting_body is used to indicate a division of the original body into halves “above” and “below” where it intersects the parting body, with respect to the draw direction, as shown in Figure 67-3. You can supply any solid or sheet body as the parting_body in a double-sided or single-sided taper so long as the body does not have through holes. The supplied parting_body must:

You need to supply reference entities and taper angles appropriate to either a double- or a single-sided taper, as discussed in Section 67.2.2, “Specifying reference entities and taper angles”.

 

Figure 67-3 Dividing the original body in halves “above” and “below” the parting body

If you use a solid parting body, the tapered body unites the parting body after the tapering operation, as shown in as shown in Figure 67-4

 

Figure 67-4 Specifying a solid parting body

You can specify that the body itself be used as the parting body, for either single-singled (a) or double-sided (b) tapering. This is illustrated in Figure 67-5 where the isocline curves have been generated using PK_FACE_imprint_cus_isoclin as described in Section 66.1, “Introduction”.

 

Figure 67-5 Single-and double-sided tapering using the body itself as the parting body

67.2.2 Specifying reference entities and taper angles

You need to supply a list of reference entities and a taper angle when you are tapering a body. The techniques that you use to create reference entities in face tapering operations can be used for body tapering. See Section 66.1.3, “Reference entities” for more information.

If you choose to taper the half that is above the parting_body you need to supply refs_above and angle_above . If you choose to taper the half that is below the parting_body you need to supply refs_below and angle_below . If you choose to taper both above and below the parting_body, you need to supply information to all four of these options.

The reference entities supplied must be edges on the body to be tapered, with the following constraints:

The reference entities you supply can be connected or unconnected. A sequence of one or more connected reference entities is often called a chain of reference entities.

 

Figure 67-6 -Multiple interacting reference edges

The effect of double-sided tapering on a body not only depends on the reference entities you supply, but also on whether you miter the taper so that the tapered faces meet at the parting body. Figure 67-7, shows the different effects that you can achieve by tapering a block, and specifying reference edges on both sides of the parting body. See Section 67.4, “MiteringDOC2011”, for information on how you miter the taper.

 

Note: The reference entities supplied to PK_BODY_taper are preserved during the operation, but can be split and deleted when mitering in a double-sided taper operation.

 

Figure 67-7 The effect of different reference entities and mitering on a body

67.2.2.1 References edges and draw convexity

If you choose to use isocline curves as reference edges, there may be times when the edge is self-shadowing (ie. casts a shadow on itself). In these cases, PK_BODY_taper returns PK_local_status_self_shadowing_c in the returned status , and the self-shadowing reference edges in the returned error_entities . You can identify the self-shadowing parts of the isocline curves by splitting them at points where the draw convexity changes using the isocline_split option in PK_FACE_imprint_cus_isoclin.

The draw convexity is the convexity of the face in the cross-sectional plane defined by the surface normal and the draw direction. At points where the draw convexity is concave the taper surface cuts into the body being tapered and creates self-shadowing reference edges.

[back to top]


67.3 Summary of PK_BODY_taper options

PK_BODY_taper takes a set of options in PK_BODY_taper_o_t. The available options are as follows:

 

Option

Description

tolerance

Maximum tolerance for the operation.

Default: 1.0e-5.

miter_at_parting

Whether to create miter faces to ensure that taper surfaces meet at the parting body. See Section 67.4.1, “Specifying miter information” for more information.

Default: PK_LOGICAL_true.

miter_type

The method to use when creating miter faces. See Section 67.4.1, “Specifying miter information” for more information.

Default: PK_taper_miter_on_ref_c.

Note: When miter_type is PK_taper_miter_to_face_c, non_miter_edges cannot be supplied.

non_miter_edges
n_non_miter_edges

An array of reference edges on which taper faces should be constructed as if miter_at_parting was set to PK_LOGICAL_false, together with the number of those faces. See Section 67.4.2, “Suppressing mitering information” for more information.

Defaults: NULL, 0.

Note: When miter_type is PK_taper_miter_to_face_c, non_miter_edges cannot be supplied.

merge_face

Whether tapered faces should be merged with their neighbours.

Default: PK_LOGICAL_true.

check_fa_fa

Whether to check for face-face inconsistencies.

Default: PK_check_fa_fa_yes_c.

default_method

Default taper method to use on reference entities not specified in method_refs . See Section 66.3, “Taper methods” for more information.

Default: PK_taper_method_isocline_c.

n_methods

Number of reference entities that do not use the specified default_method . This is the length of the methods and method_refs arrays.

Default: NULL.

methods

An array containing tapering methods to use on reference entities instead of the specified default_method . The reference entities themselves are supplied in method_refs .

Default: NULL.

See Section 67.3.1, “Specifying taper methods” for more information.

method_refs

An array of reference entities for which the default_method should not be used. Instead, the taper method specified in the corresponding element of methods is used.

Default: NULL.

corner_type

How the gap between adjacent taper faces is filled. See Section 67.5, “Tapering sharp cornersDOC0914” for details.

Default: PK_taper_corner_extend_c.

parting_edges
n_parting_edges

An array of all the edges of the body to be tapered that lie on the parting body, together with the number of those edges. See Section 67.6, “Improving performance by specifying parting edges” for more information.

Defaults: NULL, 0.

replace_edges
n_replace_edges

An array of non-reference edges (together with the number of those edges) that can be replaced by the body taper operation, in order to allow adjacent faces to be extended to meet the taper faces. See Section 67.7, “Improving results by modifying the list of reference edgesDOC0981” for more information.

Defaults: NULL, 0.

undercut

What action to take when undercut is detected. See Section 67.8, “Enabling undercut” for more information.

Default: PK_taper_undercut_ref_no_c.

upper_faces
n_upper_faces

An array of faces (together with the number of faces) from whose upper bounds reference edges are calculated for the body taper. See Section 67.9, “Calculating virtual reference edges from bound faces”, for more information.

Defaults: NULL, 0.

lower_faces
n_lower_faces

An array of faces (together with the number of faces) from whose lower bounds reference edges are calculated for the body taper. See Section 67.9, “Calculating virtual reference edges from bound faces”, for more information.

Defaults: NULL, 0.

concave_type

Which method to use when repairing miter at concave corners. See Section 67.4.3, “Repairing concave miter corners”, for more information.

Default: PK_taper_concave_none_c.

concave_radius

The radius of the blend surface that is used to repair miter at concave corners at the point where it intersects the parting body. This option only has an effect if concave_type is either PK_taper_concave_radius_c or PK_taper_concave_mix_c. See Section 67.4.3, “Repairing concave miter corners” for more information.

Default: 0.0.

keep_material

Whether to keep regions of material lying between the reference entities and the parting body that would protrude from the tapered faces. See Section 67.10, “Keeping protruding material” for more information.

Default: PK_taper_keep_material_no_c.

update

Update switch to maintain consistency when rebuilding models built in older versions of Parasolid. See Section 62.5.2, “Update control”, for more information.

Default: PK_local_ops_update_default_c.

67.3.1 Specifying taper methods

PK_BODY_taper supports the isocline, curve, and surface taper methods. It does not support offset tapering. The default method is isocline tapering, but you can specify one of the other tapering methods, either for the entire body, or for individual reference entities within the body. See Section 66.3, “Taper methods”, for information on how you do this.

 

Note: When using the default method for PK_BODY_taper, it is recommended that you imprint the isocline curves using PK_FACE_imprint_cus_isoclin with the isocline_split option set to PK_isocline_split_convexity_c. This ensures that isoclines will be split at the points where the draw convexity changes, thereby creating better quality reference edges. For more information, see Section 67.2.2.1, “References edges and draw convexity”.

[back to top]


67.4 Mitering

PK_BODY_taper provides support for mitering. When mitering, material is added to the tapered body so that tapered faces in the resulting body meet at the parting body. This section describes how to specify or suppress mitering information and how to repair concave corners created from mitering.

 

Note: Mitering can only be used in double-sided tapering. If you are performing a single-sided taper operation, you must set the miter_at_parting option to PK_LOGICAL_false otherwise the taper operation will fail.

67.4.1 Specifying miter information

PK_BODY_taper lets you choose whether or not to add additional material to ensure that each edge created on the parting sheet is shared by two tapered faces. Miter faces ensure that the tapered surfaces added to the body above and below the parting body actually meet at a common edge on the parting body, as shown in Figure 67-2.

PK_BODY_taper also lets you control how those miter faces are created using the miter_type option:

 

Note: When using PK_taper_miter_to_face_c, non_miter_edges cannot be supplied. See Section 67.4.2, “Suppressing mitering information”, for more information on non_miter_edges .

Figure 67-8 shows the difference between the “On ref” and “To face” methods, using a sphere as an example.

 

Figure 67-8 Different methods for creating a mitered effect

Miter faces are bound by reference edges where possible, but in any open parts of the chain of reference edges, the miter face is made tangent to the face that meets the parting body. Figure 67-9 shows a cylinder in which this combination of methods is used. In order to ensure that tapered faces meet at the parting body, miter faces need to be applied above the parting body where the reference edges do not form a complete chain. The non-mitered version of this body is also shown for comparison.

 

Figure 67-9 Combining “On ref” and “To face” mitering

 

Note: Mitering is not possible if you use a solid parting body.It is only supported when supplying a sheet parting body.

67.4.2 Suppressing mitering information

If you have specified miter information, as described in Section 67.4.1, then you can also choose to suppress mitering along certain reference edges using the non_miter_edges option. The taper faces along these reference edges are created as if no miter information had been specified, thus creating a non-mitered solution along those edges, while retaining a mitered solution along the remaining reference edges.

In Figure 67-10, the taper faces above the parting body all require mitering in order to meet the taper faces below the parting body. By specifying that one of these reference edges should be non-mitered, you can suppress the mitering effect on just that taper face, as shown.

 

Figure 67-10 Suppressing miter information along some reference edges

Parasolid creates a triangular side face in cases where there is a shallow angle between a non-mitered edge and a mitered edge, as shown in Figure 67-11

 

Figure 67-11 Creating side faces between mitered and non-mitered edges

67.4.3 Repairing concave miter corners

Sometimes, adding miter information creates concave corners in the resulting body that at best are undesirable, and at worst can prevent the taper operation from completing successfully. Parasolid automatically repairs these concave corners and, in addition, gives you control over the method used to smooth the repair using the concave_type option along with an associated concave_radius .

Figure 67-12 shows a sloping cylinder (and a parting body) together with the body that results from applying a non-mitered double-sided taper to it. The regions that cause concave corners requiring repair during the miter process are indicated.

 

Figure 67-12 Concave corners requiring repair in order to add miter information

The concave_type option has the following values:

 

Value

Description

PK_taper_concave_none_c

No attempt is made to smooth the repair. Default

PK_taper_concave_radius_c

The repair is smoothed by replacing the imprints at the concave corner with the intersection curves between the parting body and a contact cylinder whose radius is specified in concave_radius , and with an axis parallel to the draw direction. The overall appearance of the repair is that the concave corner has been replaced by a blend-like face.

PK_taper_concave_mix_c

The repair is smoothed by combining the other two methods. The imprints at the concave corner are replaced by the intersection curves between the parting body and a combination of contact planes and a contact cylinder, whose radius is given by concave_radius .

Figure 67-13 illustrates the results of applying these values to the tapered body in Figure 67-12. The resulting body produced by each smoothing method is shown on the left of the figure. On the right of the figure is a schematic that illustrates the cross-section of the repaired region with the parting body for that method. In each case, the cross-section of the unmitered solution is also shown for comparison.

 

Figure 67-13 The effect of different types of concave corner repair

[back to top]


67.5 Tapering sharp corners

When you specify adjacent edges as reference edges, you can choose how to fill any gaps that are created in the corners between the resulting adjacent tapered faces using the corner_type option. This takes the following values:

 

Value

Description

PK_taper_corner_extend_c

Extend the surfaces of the adjacent taper faces until they intersect. This is the default.

PK_taper_corner_plane_c

Create a planar face to fill the gap.

These are illustrated in Figure 67-14.

 

Figure 67-14 Different methods of filling the gap between adjacent taper faces

[back to top]


67.6 Improving performance by specifying parting edges

You can improve the performance of body tapering by supplying an array of parting edges that describe where the parting body intersects the body to be tapered. Use PK_BODY_imprint_bodies to create this list, and supply it in parting_edges to improve performance of the subsequent taper operation.

 

Figure 67-15 Specifying an array of parting edges to improve performance

[back to top]


67.7 Improving results by modifying the list of reference edges

Sometimes you may not get the result you want by supplying all of the edges in a chain as reference edges. Parasolid lets you supply some of those edges as replace_edges rather than as reference edges. Edges supplied as replace_edges are not used to generate tapered surfaces, producing an improved result. This is illustrated in Figure 67-16 where (a) shows the result of a body taper where all the edges above the parting body are supplied as reference edges, and (b) shows the result when some of the edges are supplied as reference edges and some are supplied as replace edges.

 

Note: Edges supplied as replace_edges cannot be supplied as reference edges.

 

Figure 67-16 Specifying replace_edges so that adjacent faces can be extended to meet taper faces

 

Related Topics:

[back to top]


67.8 Enabling undercut

In some cases, material needs to be removed from some parts of a body, in order for body tapering to succeed. In tapering this is referred to as undercut and is illustrated in Figure 67-17.

To enable undercut, use the undercut option, which takes the following values:

 

Value

Description

PK_taper_undercut_ref_no_c

Do nothing (Default).

PK_taper_undercut_ref_yes_c

Attempt to remove the undercut and proceed with the taper operation.

 

Figure 67-17 Undercut in single-sided body tapering

[back to top]


67.9 Calculating virtual reference edges from bound faces

If a body to be tapered does not contain suitable reference edges you can specify a set of faces from which Parasolid determines suitable virtual reference edges. This can happen when a suitable edge doesn’t exist, or where an edge is available but its curve contains a section that is deemed too steep for tapering. To specify a set of faces, you use either the upper_faces or lower_faces option (or both if you are doing a double-taper operation). These will specify a set of faces above ( upper_faces ) or below ( lower_faces ) the parting body using upper and lower bounds respectively. This is illustrated in Figure 67-18.

 

Figure 67-18 Calculating virtual reference edges from the upper or lower bounds of faces

When determining virtual reference edges from upper or lower bounds, Parasolid can determine different sets of upper or lower edges that are local to each set of adjacent bound faces. For example, Figure 67-19 shows a body for which two sets of local upper and lower virtual reference edges have been determined, based on the two sets of adjacent bound faces in the body to be tapered.

 

Figure 67-19 Local virtual reference edges for different sets of adjacent bound faces

[back to top]


67.10 Keeping protruding material

By default, PK_BODY_taper will remove faces and edges of the body that are "between" the reference entities and the parting sheet and replace them with the tapered faces. In cases where portions of the body would protrude from the tapered faces, this is not always desirable. The keep_material option allows you to keep these portions of the body if you choose; it takes the following values:

 

Values

Description

PK_taper_keep_material_no_c

Do not attempt to keep the material. (Default)

PK_taper_keep_material_yes_c

Attempt to keep the material

 

Figure 67-20 Effects of the keep_material option: retaining material

Figure 67-20 shows an example where the effect of PK_taper_keep_material_yes_c is to ensure the faces of the original body are united with the newly created taper faces to create a result that retains the extra material.

 

Figure 67-21 Effects of the keep_material option: retaining protruding features

In Figure 67-21, the effect of PK_taper_keep_material_yes_c is to keep the protruding features of the original body; the hole on the original body is removed in both cases. This example illustrates how the value of keep_material only affects protruding material; interior features such as holes are never kept.

 

[back to top]

<<< Face Tapering Chapters Patching >>>