AlTrimRegion
 
 
 

A list of trim boundaries defining a trim region.

Synopsis

#include <AlTrimRegion.h>
class AlTrimRegion : public AlObject
virtual	~AlTrimRegion();
virtual AlObject*	copyWrapper() const;
virtual AlObjectType	type() const;
AlDagNode*	parentDagNode() const;
AlTrimBoundary*	firstBoundary() const;
statusCode	applyIteratorToBoundaries( AlIterator*, int& ) const;
AlTrimRegion*	nextRegion() const;
statusCode	nextRegionD();
AlTrimRegion*	prevRegion() const;
statusCode	prevRegionD();
// Stuff to get surface information
curveFormType	uForm() const;
curveFormType	vForm() const;
int	uDegree() const;
int	vDegree() const;
int	uNumberOfSpans() const;
int	vNumberOfSpans() const;
int	uNumberOfCVs() const;
int	vNumberOfCVs() const;
statusCode	periodicToNonPeriodic( int, int );
statusCode	periodicToNonPeriodic() const;
statusCode	CVsWorldPosition( double[], int[], int[])const;
statusCode	CVsAffectedPosition( const AlTM&, double[], int[], int[]) const;
statusCode	CVsUnaffectedPosition( double[], int[], int[])const;
int	uNumberOfKnots() const;
int	vNumberOfKnots() const;
statusCode	uKnotVector( double[] ) const;
statusCode	vKnotVector( double[] ) const;
int	uNumberOfCVsInclMultiples() const;
int	vNumberOfCVsInclMultiples() const;
statusCode	CVsWorldPositionInclMultiples( double[] ) const;
statusCode	CVsAffectedPositionInclMultiples( const AlTM&, double[] ) const;
statusCode	CVsUnaffectedPositionInclMultiples( double[] )const;
int	realuNumberOfKnots() const;
int	realvNumberOfKnots() const;
statusCode	realuKnotVector( double[] ) const;
statusCode	realvKnotVector( double[] ) const;
statusCode	eval(double,double,boolean,double P[3]=NULL, double Pu[3]=NULL, double Pv[3]=NULL, double n[3]=NULL,boolean=FALSE,boolean=FALSE ) const;
statusCode	persistentID( AlPersistentID *&id, int ut = 1 );
statusCode	hasPersistentID( int ut = 1 );
statusCode	setPersistentID( AlPersistentID &id, int ut );

Description

This class defines a region of a surface’s parametric space that identifies an area of interest on a surface. It holds at least one AlTrimBoundary object. The first boundary on the list represents the outermost boundary of a trim region, and the rest represent the inner boundaries (holes) if there are any.

For each trim boundary, the surface is to the left of the boundary when viewed from above (hence a hole is to the right of the boundary).

For example, in this diagram we have a surface represented by As. Each additional letter is an island trimmed out of A and each would be a separate AlTrimRegion. The AlTrimRegion for A would have two AlTrimBoundaries, B would have three, and C, D, and E would have one each.

AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA                        AA
AA BBBBBBBBBBB CCCCCCCCCC AA
AA BBBBBBBBBBB CCCCCCCCCC AA
AA BB     BBBB            AA
AA BB EEE BBBBBBBBBBBBBBB AA
AA BB EEE BBBB         BB AA
AA BB     BBBB DDDDDDD BB AA
AA BBBBBBBBBBB DDDDDDD BB AA
AA BBBBBBBBBBB         BB AA
AA BBBBBBBBBBBBBBBBBBBBBB AA
AA                        AA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA

AlTrimRegion::~AlTrimRegion()

Description

Deletes an AlTrimRegion wrapper object.

AlObject *AlTrimRegion::copyWrapper() const

Description

Returns an exact duplicate of this AlTrimRegion wrapper.

AlObjectType AlTrimRegion::type() const

Description

Returns the class identifier kTrimRegionType.

AlDagNode * AlTrimRegion::parentDagNode() const

Description

Gets the parent DagNode above this trim region. NULL is returned if there is no parent.

AlTrimBoundary* AlTrimRegion::firstBoundary() const

Description

Returns the first trim boundary of a list of trim boundaries or NULL if this region has no boundaries.

AlTrimRegion* AlTrimRegion::nextRegion() const

Description

Returns the next trim region. Returns NULL if there is no such trim region.

statusCode AlTrimRegion::nextRegionD()

Description

Destructively points this wrapper object to the next trim region. If there is no next trim region, then the object is left unchanged.

Return Codes

sSuccess - the wrapper now points to the next trim region

sFailure - there is no next trim region

sInvalidObject - the region is invalid

AlTrimRegion* AlTrimRegion::prevRegion() const

Description

Returns the previous trim region. Returns NULL if there is no such trim region.

statusCode AlTrimRegion::prevRegionD()

Description

Destructively points this wrapper object to the previous trim region. If there is no previous trim region, then the object is left unchanged.

Return Codes

sSuccess - the wrapper now points to the previous trim region

sFailure - there is no previous trim region

sInvalidObject - the region is invalid

curveFormType AlTrimRegion::uForm() const

Description

See the documentation for this function in AlSurface.

curveFormType AlTrimRegion::vForm() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::uDegree() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::vDegree() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::uNumberOfSpans() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::vNumberOfSpans() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::uNumberOfCVs() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::vNumberOfCVs() const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsWorldPosition(double CVList[], int uMultiplicity[], int vMultiplicity[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsAffectedPosition( const AlTM& tm, double CVList[],int uMultiplicity[],int vMultiplicity[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsUnaffectedPosition( double CVList[],int uMultiplicity[],int vMultiplicity[] ) const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::uNumberOfKnots() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::vNumberOfKnots() const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::uKnotVector( double knotVector[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::vKnotVector( double knotVector[] ) const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::uNumberOfCVsInclMultiples() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::vNumberOfCVsInclMultiples() const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsWorldPositionInclMultiples( double CVList[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsAffectedPositionInclMultiples( const AlTM& tm, double CVList[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::CVsUnaffectedPositionInclMultiples( double CVList[] ) const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::realuNumberOfKnots() const

Description

See the documentation for this function in AlSurface.

int AlTrimRegion::realvNumberOfKnots() const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::realuKnotVector( double knotVector[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::realvKnotVector( double knotVector[] ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::eval(double u, double v, boolean worldCoordinates, double P[3], double Pu[3], double Pv[3], double n[3], boolean uLimitFromBelow, boolean vLimitFromBelow ) const

Description

See the documentation for this function in AlSurface.

statusCode AlTrimRegion::applyIteratorToBoundaries(AlIterator* iter, int& rc ) const

Description

Applies an iterator to each trim region boundary.

Arguments

< iter - the iterator to apply

> rc - the return value of the last application of the iterator

Return Codes

sSuccess - the iterator was successfully applied to each trim region boundary

sInvalidArgument - 'iter' was NULL

statusCode AlTrimRegion::periodicToNonPeriodic( int u, int v )

Description

If an underlaying surface of the trim region is periodic, converts it to a non-periodic surface (closed surface) by making it have multiple end knots in the selected direction (u/v).

Note: this method modifies the underlaying surface of the trim region.

Arguments

> u - change in u direction if u has the following value:

-1 make left (u0) end multiple

0 make both (u) ends multiple

1 make right(un) end multiple

> v - change in v direction if v has the following value:

-1 make left (v0) end multiple

0 make both (v) ends multiple

1 make right(vn) end multiple

Return Codes

sInvalidObject - the underlaying surface was invalid.

sFailure - the method did not succeed

sSuccess - the underlaying surface was converted to a non-periodic one in the u/v direction

statusCode AlTrimRegion::periodicToNonPeriodic( ) const

Description

If an underlying surface of the trim region is periodic, converts it to a non-periodic surface (closed surface) by making it have multiple end knots at both endpoints in u/v directions.

Note: this method modifies the underlying surface of the trim region.

Return Codes

sInvalidObject - the underlaying surface was invalid

sFailure - the method did not succeed

sSuccess - the underlaying surface was converted to a non-periodic one in both u and v directions

statusCode AlTrimRegion::persistentID( AlPersistentID *&id, int userType )

Description

Returns a copy of the AlPersistentID associated with this face. For user type 1, persistent IDs are created if they do not exist already. For all other user types, persistent IDs are not created if they do not exist already, and the method fails. User types between 0 and 9999 are reserved. If you would like to reserve a block of user types please contact us.

Arguments

< type - user type of the persistent ID desired

> id - a copy of the AlPersistentID

Return Codes

sSuccess - normal completion

sInvalidObject - the given object is not valid

statusCode AlTrimRegion::setPersistentID( AlPersistentID &id, int userType )

Description

Sets the values of the AlPersistentID associated with this node. This method only allows you to create persistent IDs with user types other than 1. If the persistent ID does not exist, it will be created.

User types between 0 and 9999 are reserved. If you would like to reserve a block of user types please contact us.

Arguments

< type - user type of the persistent ID desired

> id - a copy of the AlPersistentID

Return Codes

sSuccess - normal completion

sInvalidObject - the given object is not valid

sInvalidArgument - the given userType is not valid

sFailure - the id did not exist or could not be created

statusCode AlTrimRegion::hasPersistentID( int user_type )

Description

Checks that the AlTrimRegion has a persistent ID associated with it.

Arguments

< type - user type of the persistent ID desired

Return Codes

sSuccess - node has a persistent ID

sFailure - node does not have a persistent ID

sInvalidObject - the given object is not valid