Local Ops: Double-Sided Tapering   

<<< Local Ops: Adding Draft Chapters Local Ops: Adding a Vertex to Topology >>>

Contents

[back to top]


21.1 Introduction

The function PK_BODY_taper provides functionality to make it easy to design parted molds.The parting line that separates the two halves of the mold is represented by a sheet body, and is referred to as the parting body. PK_BODY_taper also provides support for the process of adding additional material to faces on the opposing side of the parting line to ensure that they meet with tapered faces at the parting surface. This process is referred to as mitering.

This process is illustrated in Figure 21-1, which shows, in cross-section, a cylinder with an intersecting parting body. In order to be able to draw the cylinder from the mold, only some parts of the cylinder need to be tapered. However, additional material must also be added to those parts that do not require taper, in order to ensure that the faces meet at the parting line.

 

Figure 21-1 Mitering a cylinder that is not perpendicular to the parting body

You can use PK_BODY_taper to automate the creation of tapered surfaces, allowing you to provide "wizard-level" interfaces in your application.

[back to top]


21.2 Specifying tapering information

In order to define how to perform double-sided tapering on a body, you need to specify the following tapering information:

Each reference entity identifies an edge in the original body from which the taper will grow. The taper angles and taper methods specify what changes need to be made to each face in order to taper it. This section explains how to use this information to create the taper you require. The reference entities supplied to PK_BODY_taper are preserved during the operation, and are not altered in any way.

A complete list of the parameters and options available in PK_BODY_taper is given in Section 21.4, "Calling PK_BODY_taper".

[back to top]

21.2.1 Specifying a parting body

You can use any sheet body as the parting body in a double-sided taper. It must be large enough to intersect the tapered faces in the final tapered body, though it need not slice through the tapered body completely. The parting body divides the original body into halves "above" and "below" where it intersects the parting body, with respect to the draw direction, as shown in Figure 21-2.

 

Figure 21-2 Dividing the original body in halves "above" and "below" the parting body

[back to top]

21.2.2 Specifying reference entities and taper angles

You need to specify a chain of reference entities and an accompanying taper angle for either the side of the body above the parting body, or the side below it, or both.

The reference entities supplied must be edges on the body to be tapered.

The effect of double-sided tapering on a body depends not only on which reference entities you supply, but on whether you miter the taper so that the tapered faces meet at the parting body. Figure 21-3, shows the different effects that you can achieve by tapering a block, and specifying reference edges on either both sides of the parting body, or one side.

 

Figure 21-3 The effect of different reference entities and mitering on a body

[back to top]

21.2.3 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.

For more information about the differences between isocline, curve, and surface tapering, see Chapter 20, "Local Ops: Adding Draft".

[back to top]


21.3 Performing single-sided taper

You can use PK_BODY_taper to taper a body from just one direction in a single operation, as shown in Figure 21-4. To do this, you supply the original body as the parting body, and a single set of references and a taper angle. You can supply either references and angles above or references and angles below, and tapering is performed in the appropriate direction.

 

Figure 21-4 Performing single-sided tapering

[back to top]


21.4 Calling PK_BODY_taper

PK_BODY_taper receives and returns the following arguments:

 

Received Description
body

The body to taper.

n_refs_above
refs_above

The number of reference entities above the parting body, and the reference entities themselves.

n_refs_below
refs_below

The number of reference entities below the parting body, and the reference entities themselves.

parting_body

The parting body. This body is destroyed by the operation, so long as it is not the same as the body being tapered.

direction

The draw direction.

angle_above
angle_below

The taper angles above and below the parting body, respectively.

options

A set of options. See Section 21.4.1, "Taper options".

Returned Description
tracking

Tracking information.

results

Status information.

[back to top]

21.4.1 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 miter halves at the parting body. Default: PK_LOGICAL_true.

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 . 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 method 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.

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.

[back to top]

<<< Local Ops: Adding Draft Chapters Local Ops: Adding a Vertex to Topology >>>