AlShell
 
 
 

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