Mid-Surface Generation   

<<< Sewing and Knitting Chapters Extending Sheets And Surfaces >>>

Contents

[back to top]


47.1 Introduction

In Parasolid, the term mid-surface generation refers to the creation of neutral sheets from faces of a solid body, or faces from sheet bodies and the subsequent trimming of them so as to create a sheet body representation of the original .

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

Neutral sheets are generally used to perform finite element analysis of thin-walled parts. They allow you to represent a solid model containing thin sections as a collection of sheet bodies which can then be discretized and analysed.

 

Note: This functionality does not support facet bodies.

You can think of creating neutral sheets from a solid body as the opposite process to creating a solid body by thickening a series of sheets.

There are two stages involved in creating neutral sheets:

 

Note: The combination of PK_FACE_make_neutral_sheet_2 and PK_BODY_trim_neutral_sheets_2 does not provide a complete solution for generating mid-surfaces.

[back to top]


47.2 Creating neutral sheets

PK_FACE_make_neutral_sheet_2 is one of several tools that you can use to create a set of neutral sheets for a solid body or for sheet bodies. Other methods include:

PK_FACE_make_neutral_sheet_2 creates a neutral sheet between two arrays of faces, left_faces and right_faces . The surfaces of the left_faces may or may not be offsets (to within the specified tolerance) of the corresponding surfaces of the right_faces , (see “Supplying construction methods to create neutral sheets”, for more information). The faceset pairs should be selected such that the resulting neutral sheet is not disjoint.

In addition to the faces themselves, you need to provide a placement parameter that describes the exact position of the resulting neutral sheets between the left_faces and right_faces . The surfaces of the face arrays are then used to create other surfaces (the neutral surfaces) that lie between them at the position defined by the supplied placement . For example, if placement is 0, then the resulting neutral surfaces are halfway between the surfaces on the given face arrays. The neutral surfaces are then attached to a sheet which is then returned.

Figure 47-1 shows a trivial example in which a neutral sheet is created mid-way between two cylindrical surfaces. Since placement is 0, the resulting neutral sheet is halfway between the inside and outside of the cylindrical block.

 

Figure 47-1 Simple single face example

Figure 47-2 shows a slightly more complex example in which a single neutral sheet is created from left_faces and right_faces arrays that both contain two faces. In particular, note that by using PK_FACE_make_neutral_sheet_2, a single neutral sheet is created from four faces. This avoids overlap in the trimming result.

 

Figure 47-2 Creating a neutral sheet from two arrays of faces

If the left and right faces do not all share the same surface, then a neutral sheet that contains multiple faces may be created. Figure 47-3 shows a simple example that demonstrates this.

 

Figure 47-3 Creating a multiple face neutral sheet from two arrays of faces

In practice, however, you will want to create neutral sheets for an entire body or for sheet bodies, rather than just some of it. To do this, you need to make multiple calls to Parasolid functions, and the techniques you use will depend on the nature of the bodies involved. For the body shown in Figure 47-3, because all pairings of left_faces and right_faces are offsets of each other, you can use PK_FACE_make_neutral_sheet_2 to create neutral sheets for the entire body. Figure 47-4 illustrates how to do this.

A total of two calls to PK_FACE_make_neutral_sheet_2 are required, with left_faces and right_faces specified as follows:

 

left_faces 
right_faces 
[ E, F, G ]
[ A, B, C, D ]
[ L, M ]
[ N, O ]

Notice that face F only needs to be specified in the left_faces array once, even though there are two faces in the right_faces array (B and C) that are associated with it.

 

Figure 47-4 Creating neutral sheets for a body

 

Note: Neither the order of the calls to PK_FACE_make_neutral_sheet_2, nor which faces are left_faces and which faces are right_faces is important in order to create these neutral sheets.

The neutral sheets created by PK_FACE_make_neutral_sheet_2 may be untrimmed. You need to use PK_BODY_trim_neutral_sheets_2 to perform this task; see Section 47.3, “Trimming neutral sheets”.

47.2.1 Testing the suitability of faces

The make_sheet option enables you to test the suitability of the supplied pairs of faces for the operation before a sheet is generated. If PK_LOGICAL_true, a neutral sheet is created. If PK_LOGICAL_false, no neutral sheet is created but the construction data is still reported in the Parasolid Report.

The overlap option enables you to control the face pair detection stage of the neutral sheet creation algorithm. It allows you to specify whether the test is based on the extent of the underlying surface of the faces, or on the extent of the faces themselves. It takes the following values:

 

Value

Description

PK_neutral_face_overlap_no_c

Face overlaps are not considered. This is the default.

PK_neutral_face_overlap_yes_c

Face overlaps will be considered. If the faces sets do not overlap then neutral sheets are not created.

Figure 47-5 illustrates this option using a model split with a rib. The upper faces (marked A and B in the image) on each side of the rib share a common planar surface, and the lower faces (marked C and D) on each side of the rib also share a common planar surface.

With the default behaviour, specifying faces A and C would be detected as a pair and if make_sheet is set to PK_LOGICAL_true, a neutral sheet is created. With the option set to PK_neutral_face_overlap_yes_c these faces would be rejected as a pair since they do not overlap and therefore a neutral sheet is not created.

 

Figure 47-5 Detecting overlapping faces

 

Note: If you are supplying left_faces and right_faces from sheet bodies, Parasolid will attempt to determine the correct orientation for both face sets. If the correct orientation for a face set cannot be determined, a Parasolid Report of type PK_REPORT_record_1_t will be returned with a status PK_REPORT_1_fa_unoriented_c indicating which faces Parasolid could not determine an orientation for. In this case Parasolid will attempt to create a neutral sheet using the reported face sets in the orientation they were provided in. See the PK Interface Programming Reference Manual for PK_FACE_make_neutral_sheet_2 for more information on the local statuses returned.

47.2.2 Supplying construction methods to create neutral sheets

You can optionally choose to construct neutral sheets using the n_methods and methods options. The following table provides a brief description of these options.

 

Option

Description

n_methods

The number of construction methods that can be used. If the value is set to 0, then the default PK_neutral_method_mid_offset_c construction method is used.

methods

The array of construction methods that are used to construct neutral sheets. This can be one of:

  • PK_neutral_method_mid_offset_c: verifies that the right_faces are offsets of the left_faces and creates a neutral sheet between them. This sheet is an offset of one of the facesets, This method will fail if the facesets are not offsets of each other.
  • PK_neutral_method_offset_left_c: finds the maximum distance by which the left faces can be offset before it intersects with the right faces and uses this value to create a neutral sheet in the direction of the normal that is offset to the left faces only.
  • PK_neutral_method_medial_c: creates a neutral sheet that is an “average” mid-surface between the left_faces and right_faces . This method does not require that right_faces are offsets of left_faces and does not create neutral sheets that are offsets of the left_faces .

Figure 47-6 illustrates these methods.

 

Figure 47-6 Construction methods for generating neutral sheets

The thickness, placement, tolerance and offset values determined by PK_FACE_make_neutral_sheet_2 are returned in the Parasolid Report with the value PK_REPORT_record_type_3_c. See PK_FACE_make_neutral_sheet_2 for more information.

47.2.3 Extending gaps and filling holes

By default, PK_FACE_make_neutral_sheet_2 fills any holes and extends gaps in the resulting neutral sheets to make them large enough for trimming purposes. However, you can turn this behaviour off using the extend_and_fill_holes option. Using the same example as Figure 47-4, Figure 47-7 shows the differences in the results created when changing this option.

 

Figure 47-7 Choosing whether to extend and fill holes when creating neutral sheets

47.2.4 Supplying tolerance information for the offset between face sets

The have_tolerance and tolerance options can be used to pass in a tolerance value to the left and right faces. If have_tolerance is PK_LOGICAL_true, then tolerance can be used to specify a tolerance value. If have_tolerance is PK_LOGICAL_false, then tolerance is ignored and faces will only be considered offsets of each other if their surfaces are offsets to within Parasolid precision. The have_tolerance option should be used whenever you supply a tolerance .

A tolerant offset should be considered to mean two faces that are offsets of each other to typical modeling tolerances. You should not use this functionality to attempt to create a neutral sheet from two distinctly different faces.

[back to top]


47.3 Trimming neutral sheets

Trimming is performed using PK_BODY_trim_neutral_sheets_2. This takes the original solid body, together with the corresponding neutral sheets you created, and uses the information encoded in the face set pairs to trim the neutral sheets, and scribe edges onto them where required. These edges define either the limits of the neutral sheet or where two neutral sheets meet each other. Once all the edges have been created, any unwanted faces on the sheet are deleted.

An edge can be created on a neutral sheet for one of three reasons:

Figure 47-8 (a) shows a simple swept profile. There are 3 face set pairs in this example, and the corresponding untrimmed neutral sheets are shown, together with the neutral sheets after trimming.

 

Figure 47-8 A simple swept body

Figure 47-9 shows another swept body, this time with a boss added. There are two face set pairs in this example, one for the horizontal plate with the boss and one for the upright. The resulting trimmed neutral sheets are shown in (b). Notice that, in the resulting trimmed sheets, the edge around the boss has been projected onto the corresponding neutral sheet.

 

Figure 47-9 Swept body with a boss added

A final example is shown in Figure 47-10 in which there are two face set pairs, one for the base plate and one for the tab. Notice that the neutral sheet of the base plate has an edge in the middle where two sheets meet.

 

Figure 47-10 Neutral sheets for a solid plate with a tab

47.3.1 Ignoring small faces when trimming neutral sheets

By default, PK_BODY_trim_neutral_sheets_2 ignores small faces that do not come from face set pairs, such as blend faces and sliver faces. The supplied neutral sheets are trimmed so as to maintain the original connectivity of the solid body. In the majority of cases, this produces the result that you are interested in. However, you can use the ignore option to specify that the neutral sheets are trimmed to exactly the limits of the original face set pairs. This ensures that the trimmed neutral sheets are no larger than the face set pairs from which they are derived, but may not maintain the connectivity of the original body.

Figure 47-11 shows an example that contains several blend faces. By default, these blend faces are ignored, and the neutral sheets are trimmed so as to form a closed sheet body as shown. However, if ignore is set to PK_neutral_ignore_fa_no_c, then the resulting trimmed neutral sheets do not form a closed body. This result might be useful if, for example, you wanted to create a closed body by adding face-face blends between each trimmed sheet.

 

Figure 47-11 Ignoring small faces when trimming neutral sheets

For an example of this functionality, see the code example in the C++\Code Examples\Modelling\Midsurface Generation\Ignore Small Faces folder, located in example_applications in your Parasolid installation folder.

47.3.2 Controlling overlapping faces when trimming neutral sheets

Sometimes, creating neutral sheets results in faces that overlap each other in the resulting trimmed sheets. This is particularly true if you are creating neutral sheets from models that do not have a uniform thickness. You can use the overlap option in PK_BODY_trim_neutral_sheets_2 to control how to deal with these overlapping faces to achieve the best result. This option takes the following values:

 

Value

Description

PK_neutral_overlap_no_c

Overlapping faces are ignored in the result body. This is the default.

PK_neutral_overlap_report_c

Detect whether faces in the trimmed sheets are overlapping and create a PK_REPORT_1_fa_overlap_c record in the Parasolid report for each set of overlapping faces.

PK_neutral_overlap_repair_c

Repair overlapping faces by retaining one connected set of overlapping faces and deleting the other. The overlapping faces that remain are noted with a PK_REPORT_1_fa_overlap_c record in the Parasolid report for each set of faces.

Figure 47-12 shows a simple example that shows the effect on the final trimmed sheets of repairing overlapping faces.

 

Figure 47-12 Repairing overlapping faces when trimming neutral sheets

47.3.3 Controlling the method used to trim neutral sheets

By default, when trimming neutral sheets that contain more than one surface, faces are only trimmed against other neutral sheets. However, in some configurations, this means that the resulting neutral sheets are bigger than they should be, extending beyond the faces of the original body. In these cases, you can use the trim_method option to trim to the side faces in the original body as well.

Figure 47-13 shows a simple example in which the default result from PK_BODY_trim_neutral_sheets_2 extends past the original body. By setting trim_method to PK_neutral_trim_method_sides_c, the neutral sheets are trimmed to the side faces of the original body as well, thereby eliminating the unwanted extension.

 

Figure 47-13 Controlling how to trim neutral sheets with more than one surface

47.3.4 Extending gaps and filling holes

Like PK_FACE_make_neutral_sheet_2, you can use the extend_and_fill_holes option to choose whether or not to extend sheets and fill holes when trimming neutral sheets. See Section 47.2, “Creating neutral sheets”, for more information on this option.

 

Note: To preserve behaviour in older models, the default setting for this option is PK_LOGICAL_false. This is not the same as the default setting for the option in PK_FACE_make_neutral_sheets_2. However, we recommend that you set this option to PK_LOGICAL_true when dealing with new models.

[back to top]


47.4 Tracking information

Each face on a neutral sheet has usually arisen from the projection of two faces on the target body (one on each side). For example, in Figure 47-9 the top side of the circular face is the projection of the whole of the circular face on the top of the boss, the underside is part of the projection of the rectangular face on the underside of the target body. Similarly, the surrounding face is part of the projection of the rectangular face around the boss and the face on the underside.

Currently, the trimming function gathers and returns this information. For each side of every face on each neutral sheet it returns a list of faces on the target which project onto this face on the neutral sheet. There is usually one target face for each side. However, sometimes there may be 2 on one side, or there may be none.

[back to top]


47.5 Update control

PK_FACE_make_neutral_sheet_2 and PK_BODY_trim_neutral_sheets_2 contain an update option to maintain consistency when rebuilding models built in older versions of Parasolid. See Section 62.5.2, “Update control”, for information.

[back to top]

<<< Sewing and Knitting Chapters Extending Sheets And Surfaces >>>