Manifold Booleans   

<<< Introduction to Booleans Chapters General Booleans >>>

Contents

[back to top]


52.1 Introduction

Chapter 51, “Introduction to Booleans” provided an overview on boolean operations and explained the different boolean options available in PK_BODY_boolean_2 and PK_FACE_boolean_2. This chapter gives more specific information on performing boolean operations with manifold topology.

 

Note: This functionality offers partial support for facet geometry.

A manifold boolean is a boolean operation that is undertaken when generalised topology is disabled in a session. This type of boolean must be carried out on manifold bodies and all result bodies will be manifold and connected solid or sheet bodies. Both global and local boolean operations may be attempted with manifold topology.

The manifold boolean operations behave as follows:

 

Operation

Description

Union

Extends the target body by gluing to it all face sets of the tool bodies which are outside of the target body.

Subtraction

Modifies the target body by removing all face sets which overlap the tool bodies.

Intersection

Reduces the target body to only those face sets which overlap with the tool bodies

The behaviour of the subtraction operation can be altered for:

 

Target/tool

Behaviour

solid target/sheet tools

The subtraction can be altered to reduce the target to only those face sets in front or behind the sheet tool bodies

sheet target/solid tools

The subtraction can be altered so that the tools punch the target and all faces on the target which overlap with the tools are removed; all face sets which are in front or behind the target body are glued to it

If the model is not exact and a tool that is considered to be exactly the correct size for the operation is used, coincident features can be missed. In subtract cases, this can mean the wrong amount of material is removed. In unite cases, this can mean that the tool is not actually coincident with the face on the target which you are trying to attach the tool to. Therefore, you should use oversize tools when possible for optimising the success of unite and subtract functions.

For information about performing booleans with general bodies, see Chapter 53, “General Booleans”.

 

Related Topics:

[back to top]


52.2 Recommendations for best practices in booleans

When performing boolean operations on manifold booleans, it is strongly recommended that you do the following:

[back to top]


52.3 Limitations on booleans with generalised topology disabled

This section describes some of the limitations of boolean operations when you are dealing exclusively with manifold bodies. When performing general booleans, as described in Chapter 53, “General Booleans”, these limitations do not apply.

If the target and the tool are the same body type (sheet or solid), you can use any of the three boolean operations. For targets and tools of different body types, the operations allowed are described below.

Booleans between sheet bodies cannot result in a sheet body with a ‘T’ or an ‘X’ shaped cross-section. This type of body is invalid and the boolean fails.

Most of the booleans illustrated below have a single tool, but you can supply a list of tool bodies:

 

Figure 52-1 Subtracting multiple solid bodies from a sheet

52.3.1 Unite

You can unite like with like, and you can also unite a solid with a sheet or a sheet with a solid by setting the tool_material_side , target_material_side , and resulting_body_type options appropriately: see Section 51.4.14, “Specifying the body type of tool and target” and Section 51.4.17, “Specifying the body type of the result” respectively. When you are uniting two sheet bodies, they must meet at their edges, unless they have overlapping faces.

52.3.2 Subtract

You can subtract like from like, but you can also subtract solids from sheets, and sheets from solids, so long as the sheet cuts the solid completely. If it doesn’t, PK_ERROR_non_manifold is returned.

 

Figure 52-2 Subtracting a sheet body from a solid body

 

Figure 52-3 Subtracting a solid body from a sheet body

52.3.3 Intersect

You can intersect solids with solids, as illustrated earlier.

When using more than one tool the resulting intersection is:

 

Figure 52-4 Intersecting a solid with more than one tool

You can intersect sheets with sheets, so long as the faces have coincident surfaces. The following rules apply when intersecting sheets with sheets:

 

Figure 52-5 Intersecting sheet bodies that touch but do not overlap

 

Figure 52-6 Intersecting sheet bodies that have a single overlap

 

Figure 52-7 Intersecting sheet bodies that have multiple overlaps

 

Figure 52-8 Intersecting sheet bodies that have opposite face normals

If the faces have crossing surfaces then there is no intersection:

 

Figure 52-9 Intersecting sheet bodies that cross

You can intersect a sheet with a solid, and you can intersect a solid with a sheet by setting the tool_material_side , target_material_side , and resulting_body_type options appropriately: see Section 51.4.14, “Specifying the body type of tool and target” and Section 51.4.17, “Specifying the body type of the result” respectively.

 

Figure 52-10 Intersecting a sheet body with a solid body

52.3.4 Effect of merge options on manifold topology

 

Figure 52-11 Results of merge options during boolean operations on manifold topology

We strongly recommend that selective_merge and merge_imprinted are both switched on when performing manifold boolean operations.

 

Warning: The selective_merge and merge_imprinted options should not be used in general booleans. For information about merging topology during general boolean operations, see Section 53.3, “Merging redundant topology”.

52.3.5 Summary of permitted booleans with generalised topology disabled

Many different combinations of targets, tools, and boolean operations are possible when generalised topology is disabled, based on the configuration of the target and tool. In addition, you can use target_material_side and tool_material_side to temporarily change the body type of either the target or tool during the boolean operation, and resulting_body_type to choose the type of the resulting body you would like, in order to increase the range of booleans that can be performed.

This section summarises what can be attempted, and what should be avoided.

 

Note: Any boolean operation has the potential to fail, depending on the precise configuration of the target and tool and the combination of options chosen. This section does not attempt to describe the outcome of all possible boolean configurations. Instead, it provides a guide as to what is potentially feasible.

If resulting_body_type is left at its default value, then any combination of boolean operation, sheet or solid target, and sheet or solid tool is possible, except for the following:

 

Target

Tool

Boolean

Solution

sheet

solid

unite

To unite a sheet target and a solid tool successfully, set tool_material_side to PK_boolean_material_none_c, to emulate a sheet-sheet unite.

solid

sheet

intersect

To intersect a solid target with a sheet tool, set tool_material_side to PK_boolean_material_inside_c or PK_boolean_material_outside_c, to emulate a solid-solid intersect.

In particular, subtract operations are possible using any combination of tool and target, with no additional option setting required.

 

Note: In many cases, uniting a solid target with a sheet tool leads to failure. In order for this combination to be successful, the sheet tool must enclose a solid region, as described in Section 51.4.11, “Enclosing solid regions with a sheet body”.

If resulting_body_type (see Section 51.4.17, “Specifying the body type of the result”) is set to a non-default value, then any boolean combination is possible. By setting resulting_body_type appropriately, you can use any type of target and tool, combine them using any boolean operation, and use any value of target_material_side and tool_material_side .

[back to top]


52.4 Specialised boolean operations

The following functions provide specialised boolean functionality in Parasolid:

Although most of the functionality offered by these functions is also provided by the other boolean functions described in this chapter, some of these functions also let you perform boolean operations with wire target bodies. Wire tool bodies are not supported, however.

Each function receives a target body and an array of tool bodies, as detailed below.

 

Function

Allowed target

Allowed tools

PK_BODY_unite_bodies

sheet, solid

sheet, solid

PK_BODY_subtract_bodies

wire, sheet, solid

sheet, solid

PK_BODY_intersect_bodies

wire, sheet, solid

sheet, solid

The bodies returned by each function replace the original target. Tool bodies are always deleted after the operation, unless the target is a wire and generalised topology is disabled in the session. In this case, the tools are not modified.

52.4.1 Subtracting sheet tools from wire targets

In the case of PK_BODY_subtract_bodies, if a wire target is partly contained by a sheet tool, it loses that part of the target that is contained. However, if a sheet tool intersects a wire target, the target is split at the point of intersection, and both bodies are returned. This is illustrated in Figure 52-12. Note that the tools would not be modified in either of these examples, though this is not shown for simplicity.

 

Figure 52-12 Subtracting sheet tools from wire bodies

 

Note: Turning generalised topology on has no effect on these functions in cases where the target is a wire body.

 

[back to top]

<<< Introduction to Booleans Chapters General Booleans >>>