A list of trim boundaries defining a trim region.
#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 );
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
statusCode AlTrimRegion::CVsWorldPosition(double CVList[], int uMultiplicity[], int vMultiplicity[] ) const
statusCode AlTrimRegion::CVsAffectedPosition( const AlTM& tm, double CVList[],int uMultiplicity[],int vMultiplicity[] ) const
statusCode AlTrimRegion::CVsUnaffectedPosition( double CVList[],int uMultiplicity[],int vMultiplicity[] ) const
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
statusCode AlTrimRegion::applyIteratorToBoundaries(AlIterator* iter, int& rc ) const
statusCode AlTrimRegion::periodicToNonPeriodic( int u, int v )
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.
statusCode AlTrimRegion::persistentID( AlPersistentID *&id, int userType )
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.
statusCode AlTrimRegion::setPersistentID( AlPersistentID &id, int userType )
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.