Interface to Alias NURBS surface geometry.
Synopsis
#include <AlShell.h>
class AlShell : public AlObject
AlShell();
virtual ~AlShell();
virtual AlObject* copyWrapper() const;
virtual AlObjectType type() const;
AlShellNode* shellNode() const;
statusCode create( AlTrimRegion*, boolean );
statusCode addToShell( AlTrimRegion*, boolean );
boolean isInShell( AlTrimRegion* );
AlTrimRegion* firstTrimRegion() const;
AlGroupNode* unstitchShell( void );
AlShader* firstShader() const;
AlShader* nextShader( const AlShader* ) const;
statusCode nextShaderD( AlShader* ) const;
statusCode assignShader( AlShader* );
statusCode layerShader( AlShader* );
statusCode renderInfo( AlRenderInfo& ) const;
statusCode setRenderInfo( const AlRenderInfo& ) const;
boolean isDisplayModeSet( AlDisplayModeType ) const;
statusCode setDisplayMode( AlDisplayModeType, boolean );
statusCode area( double &, boolean = TRUE, double tolerance=0.001 );
statusCode circumference( double &, boolean = TRUE, double tolerance=0.001 );
Description
A shell is a collection of surfaces that behaves as a single object. Each surface can have its own set of trim curves. A cube
with six square sides is a shell. The cube can be assigned a single shader and rendering formation. The cube is made of a
collection of 6 spline surfaces.
The AlTrimRegions are inaccurately named. They actually represent the surfaces in the shell.
AlShell::AlShell()
Description
Constructs an AlShell wrapper object.
AlShell::~AlShell()
Description
Deletes an AlShell wrapper object.
AlObject *AlShell::copyWrapper() const
Description
Returns an exact duplicate of this AlShell wrapper.
AlObjectType AlShell::type() const
Description
Returns the class identifier kShellType.
AlShell* AlShell::asShellPtr()
Description
This virtual function returns a non-null pointer to itself, indicating that it is safe to cast to an object of this class.
AlShellNode* AlShell::shellNode() const
Description
Returns a pointer to the AlShellNode for this surface.
statusCode AlShell::create( AlTrimRegion * region, boolean shrink_surface )
Description
Creates a shell by transforming the given trim region. A new shell is created in Alias, which matches the trim region. A DagNode is also constructed above the shell.
Arguments
region - an AlTrimRegion which serves as a base for the shell
shrink_surface - if this flag is set, the surface underlying the given trim region will be reparameterized if the amount thrown
away is great enough
Return Codes
sSuccess - a shell was constructed
sInvalidArgument - the given region was not valid
sFailure - the shell could not be constructed
statusCode AlShell::addToShell( AlTrimRegion * region, boolean shrink_surface )
Description
Adds trim region to the shell. Note that only adjacent surfaces can be added to a shell. This may require that the user try
this method for all of the remaining shells to see if it fails for each one.
Arguments
region - an AlTrimRegion which is added to the shell
shrink_surface - if this flag is set, the surface underlying the given trim region will be reparameterized if the amount thrown
away is great enough
Return Codes
sSuccess - the trim region was added
sInvalidArgument - the given region was not valid
sFailure - the trim region could not be added
boolean AlShell::isInShell( AlTrimRegion * region )
Description
Returns TRUE if the trim region is in the shell.
Arguments
region - an AlTrimRegion to check
AlTrimRegion* AlShell::firstTrimRegion() const
Description
Returns the first trim region of a list if the surface has been trimmed. Returns NULL if there is no such trim region. Use
the methods in the AlNewTrimRegion class to get trim region information.
AlGroupNode *AlShell::unstitchShell( void )
Description
Unstitches the shell into a collection of objects.
AlShader* AlShell::firstShader() const
Description
Returns the first shader that this surface object references. Returns NULL if there are no shaders.
AlShader* AlShell::nextShader( const AlShader* last_shader ) const
Description
Returns the shader after the given shader in the object’s shader list. Returns NULL if there isn’t a next shader. Specifying
NULL as parameter will return the first shader.
Arguments
< last_shader - shader from which to walk forward
statusCode AlShell::nextShaderD( AlShader* last_shader ) const
Description
Destructively points ’last_shader’ to the shader after the given shader in the object’s shader list.
Arguments
< last_shader - shader from which to walk forward
Return Codes
sSuccess - last_shader now points to the next shader
sFailure - there isn’t a next shader
sInvalidArgument - last_shader is invalid
sInvalidObject - the surface is invalid
statusCode AlShell::assignShader( AlShader* shader )
Description
Assigns the given shader to the surface. If the surface already has shaders, they will be removed from the surface. The surface
must have a surface node for this method to succeed.
Arguments
< shader - the shader which will be assigned to the surface
Return Codes
sSuccess - the shader was successfully assigned to the surface
sInvalidArgument - ’shader’ was invalid
sFailure - the shader was not created
sInvalidObject - the surface is invalid
statusCode AlShell::layerShader( AlShader* shader )
Description
Layers the given shader on the surface. The surface must have a surface node for this method to succeed.
Arguments
< shader - the shader that will be layered on the surface
Return Codes
sSuccess - the shader was successfully layered on the surface
sInvalidArgument - ’shader’ was invalid
sFailure - the shader was not created
sInvalidObject - the surface is invalid
statusCode AlShell::renderInfo( AlRenderInfo &renderInfo ) const
Description
Fills in the renderInfo structure with the render info for this surface.
Arguments
> renderInfo - the structure to fill in
Return Codes
sSuccess - getting the render information was successful
sInvalidArgument - ’renderInfo’ is NULL
sFailure - there wasn’t any render information (renderInfo is unchanged)
sInvalidObject - the surface is invalid
statusCode AlShell::setRenderInfo( const AlRenderInfo &renderInfo ) const
Description
Sets the render info for this surface to the contents of the renderInfo structure.
Arguments
< renderInfo - the structure to take the render information from
Return Codes
sSuccess - setting the render information was successful
sInvalidArgument - ’renderInfo’ was NULL or a parameter in ’renderInfo’ was out of range
sFailure - setting the render information failed
sInvalidObject - the surface is invalid
boolean AlShell::isDisplayModeSet( AlDisplayModeType mode ) const
Description
Returns TRUE if the specified display mode is toggled on for the surface. Returns FALSE otherwise.
The only valid AlDisplayModeTypes for an AlSurface are
kDisplayGeomHull
kDisplayGeomEditPoints
kDisplayGeomKeyPoints
kDisplayGeomCVs
Arguments
< mode - display mode of interest
statusCode AlShell::setDisplayMode( AlDisplayModeType mode, boolean on_or_off )
Description
For the given display mode, if the flag is TRUE then the display mode for the surface is set, otherwise it is unset.
The only valid AlDisplayModeTypes for an AlSurface are
kDisplayGeomHull
kDisplayGeomEditPoints
kDisplayGeomKeyPoints
kDisplayGeomCVs
Arguments
< mode - display mode of interest
< on_or_off - TRUE means that this surface will have the display mode set. FALSE means it will be unset.
Return values
sSuccess - operation was successful
sFailure - unable to complete this operation
sInvalidArgument - invalid display type
sInvalidObject - the surface is invalid
statusCode AlShell::area( double& area, boolean worldCoordinates, double tolerance )
Description
Determines the area of the shell. This is the area of all of the members of the shell summed.
Arguments
< worldCoordinates - TRUE to get the world space area
> area - the returned value
> tolerance - the error tolerance
Return Codes
sSuccess - the coordinate was successfully determined
sFailure - the evaluation failed
sInvalidObject - the shell is invalid
statusCode AlShell::circumference( double& circ, boolean worldCoordinates, double tolerance )
Description
Determines the area of the shell. This will be the area of all of the members of the shell summed.
Arguments
< worldCoordinates - TRUE to get the world space area
> area - the returned value
> tolerance - the error tolerance
Return Codes
sSuccess - the coordinate was successfully determined
sFailure - the evaluation failed
sInvalidObject - the shell is invalid