Element Trees: Shell
This section introduces and shows how to create, redefine and access Shell features in Creo TOOLKIT.
Introduction to Shell Feature
When Creo Parametric makes a shell, all features that were added to the solid before creating the Shell feature are hollowed. Therefore, the order of feature creation is very important when you use the Shell feature.
The Shell feature hollows the inside of the solid, leaving a shell of a specified wall thickness. It allows you to remove a surface or surfaces from the shell. If you do not select a surface to remove, a “closed shell” is created, with the inside of the part completely hallowed out and no access to the hollow. When defining a shell, you can also select surfaces with different thickness values. On flipping the thickness side, the shell thickness is added to the outside of the part.
You can also shell surfaces that are tangent to their neighbors at one or more boundaries. At the tangent edge where the separation of the shell offset occurs, a normal capping surface is constructed to close the gap.
You can also exclude one or more surfaces from being shelled. This process is called partial shelling. There are two different algorithms for partial shelling – one for concave corner surfaces and the other for convex corner surfaces. These algorithms prevent the shell subtraction volume from penetrating through the solid. In case of a part where both concave and convex corner surfaces are to be excluded, the exclusion can be achieved in multiple partial shells, each using different algorithms.
The following are the restrictions on Shell feature creation:
•  You cannot add shells to any part that has a surface that moves from tangency to a point.
•  You cannot select a surface to be removed that has a vertex created by the intersection of three curved surfaces.
•  The surface to be removed must be surrounded by edges (a fully revolved surface of revolution is not valid) and the surfaces that intersect the edge must form an angle of less than 180 degrees through the solid geometry. As long as this condition is met, you can select any sculpted surface as the surface to be removed.
•  When you select surfaces that have other surfaces tangent to them for independent thickness, all surfaces that are tangent must have the same thickness. Otherwise, the Shell feature fails.
For example, if you shell a part that contains a hole and you want the thickness of the hole wall to be different from the overall thickness, you must select both surfaces (cylinders) that make up the hole and offset them at the same distance.
•  By default, a shell creates geometry with a constant wall thickness. If the system cannot create a constant thickness, the Shell feature fails.
Feature Element Tree for the Shell Feature
The element tree for the Shell feature is documented in the header file ProShell.h, and has a simple structure. The following figure demonstrates the element tree structure:
Feature Element Tree for Shell Feature
Image
The shell element tree contains standard element types. The following list details special information about the elements in this tree:
•  PRO_E_FEATURE_TYPE—Specifies the feature type and should have the value PRO_FEAT_SHELL.
•  PRO_E_STD_FEATURE_NAME—Specifies the name of the Shell feature.
•  PRO_E_BODY—Specifies the body options and is a branch of the general body options elements defined in the ProBodyOpts.h as follows:
  PRO_E_BODY_USE—The valid value is PRO_BODY_USE_SELECTED
  PRO_E_BODY_SELECTED—Must contain a single selected body to shell.
•  PRO_E_SHELL_SRF— Specifies the selected surfaces to be removed from the part to create the Shell feature. This element is optional.
•  PRO_E_SHELL_THICK—Specifies the default thickness for the shell. It must be positive and greater than zero.
•  PRO_E_SHELL_FLIP—Specifies the side of the shell to be flipped and has the following values:
  PRO_SHELL_OUTSIDE
  PRO_SHELL_INSIDE
•  PRO_E_STD_SURF_COLLECTION_APPL—Specifies the surfaces to be excluded during the Shell feature creation.
•  PRO_E_SHELL_LACE_BNDRY—Specifies the lace boundary that forms the closure of excluded surfaces or inner surfaces. It has the following values:
  PRO_SHELL_LACE
  PRO_SHELL_DONT_LACE
•  PRO_E_SHELL_ALT_CUT_METHOD—Specifies the alternate cut method used for partial shell volume subtraction. It has the following values:
  PRO_SHELL_ALT_CUT_METHOD_NO—Specifies the algorithm for concave corner surfaces.
  PRO_SHELL_ALT_CUT_METHOD_YES—Specifies the algorithm for convex corner surfaces.
•  PRO_E_ST_SHELL_LOCL_LIST—Specifies an array of local thickness of the type PRO_E_ST_SHELL_LOCL_CMPD which consists of the following elements:
  PRO_E_ST_SHELL_SPEC_SRF—Specifies the surface selected for specifying the local thickness value. This surface cannot be one of the surfaces selected to be removed.
  PRO_E_ST_SHELL_SPEC_THCK—Specifies the local thickness value of the selected surface (initially equal to default shell thickness). It must be positive and greater than zero.
Creating a Shell Feature
Function Introduced
Use the function ProFeatureCreate() to create a Shell feature based on the element tree input. For more information about ProFeatureCreate(), refer to the section Overview of Feature Creation of section Element Trees: Principles of Feature Creation.
Redefining a Shell Feature
Function Introduced
Use the function ProFeatureRedefine() to redefine a Shell feature based on the changes made in the element tree. For more information about ProFeatureRedefine(), refer to the section Feature Redefine of section Element Trees: Principles of Feature Creation.
Accessing a Shell Feature
Function Introduced
Use the function ProFeatureElemtreeExtract() to create a feature element tree that describes the contents of a Shell feature and to retrieve the element tree description of a Shell feature. For more information about ProFeatureElemtreeExtract() refer to the section Feature Inquiry of section Element Trees: Principles of Feature Creation.