All Frameworks  Class Hierarchy  This Framework  Previous  Next  Indexes

NewTopologicalObjects Interface CATCell

System.IUnknown
  |
  +---System.IDispatch
    |
    +---System.CATBaseUnknown
      |
      +---GeometricObjects.CATICGMUnknown
        |
        +---GeometricObjects.CATICGMObject
          |
          +---GeometricObjects.CATGeometry
            |
            +---NewTopologicalObjects.CATTopology
              |
              +---NewTopologicalObjects.CATTopObject
                |
                +---CATCell
 

Usage: an implementation of this interface is supplied and you must use it as is. You should not reimplement it.


interface CATCell

Interface representing a topological cell.

A cell represents a geometry of a given dimension bounded by cells of lower dimension. A cell is oriented with regards to an underlying geometry:

CATOrientationNegative
the cell orientation is reversed with regards to the standard orientation.
CATOrientationPositive
the cell orientation is the standard orientation.
CATOrientationUnknown
the cell orientation is not defined.
The cell CATSide defines the matter side on a bounding cell of a cell:
CATFaceCATEdgeCATVertex
CATVolume CATSideLeft: the face normal points inside the volume
CATSideRight: the face normal points outside the volume
CATSideFull: the face is immersed into the volume
CATSideFull: the edge is immersed into the volume CATSideFull: the vertex is immersed into the volume
CATFace CATSideleft: when the observation direction is opposite to the face normal and the edge is run with its own orientation, the matter is on the edge left
CATSideRight: when the observation direction is opposite to the face normal and the edge is run with its own orientation, the matter is on the edge right
CATSideFull: the edge is immersed into the face
CATSideFull: the vertex is immersed into the face
CATEdge CATSideLeft: the vertex is at the edge beginning
CATSideRight: the vertex is at the edge end
CATSideFull: impossible
If the cell bounds the domain twice, it is set to CATSideUnknown.
A CATCell is created with the CATBody.CreateCell method, and deleted with the CATICGMContainer.Remove method. By default, this deletion is not recursive at the topological level: the domains of the cells are not deleted. However, the geometry of the cell, if not used by another object, is also deleted.


Method Index


o AddBoundingCell(CATCell*,CATSide,CATDomain*,CATGeometry*)
Adds a CATCell to the boundary of this CATCell.
o AddDomain(CATDomain*,CATLocation)
Adds a CATDomain to this CATCell.
o CreateBoundaryIterator()
Creates an iterator on the boundary of this CATCell.
o CreateBoundedCellsIterator(CATBody*)
Creates an iterator on the CATCells bounded by this CATCell.
o EstimateCenter(CATMathPoint&)
Retrieves a point belonging to this CATCell.
o GetCommonBorderCells(CATCell*,short,CATLISTP(CATCell)&,short)
Retrieves the cells of a given dimension bounding this and an another cell.
o GetDimension()
Returns the dimension of this CATCell.
o GetGeometry(CATOrientation*)
Returns the geometry of this CATCell.
o GetGeometryOnCell(CATCell*,CATSide,CATOrientation*)
Returns the geometry of this CATCell with respect to a bounded cell.
o GetGeometryOrientation()
Returns the orientation of this CATCell with regards to its geometry.
o GetInfinite()
Returns the infinite property of this CATCell.
o GetLyingGeometryOn(CATCell*)
Returns the geometry of this as a geometry lying on the geometry of another cell.
o GetLyingOn(CATLISTP(CATCell)&,CATBody*)
Retrieves the CATCells on which this is directly lying on.
o GetMatterSide(CATCell*)
Returns the matter side of this CATCell with regards to a bounding cell of upper dimension.
o GetNbBoundedCells(CATBody*,CATBoolean)
Returns the number of cells bounded by this cell.
o GetNbInternalDomains()
Returns the number of internal CATDomains of this CATCell.
o GetNeighborCell(CATCell*,CATBody*,short*)
Retrieves the adjacent cell of this on the other side of a border cell.
o IsLyingOn(CATTopology*,CATLISTP(CATCell)*,CATLISTP(CATGeometry)*)
Tests whether this CATCell is lying (directly or indirectly) on another topological object.
o IsOnBorder(CATCell*,CATSide*)
Tests whether this CATCell bounds a given cell of upper dimension.
o RemoveBoundingCell(CATCell*)
Removes a CATCell from the boundary of this CATCell.
o SetGeometry(CATGeometry*,CATOrientation)
Defines the geometry of this CATCell.
o SetGeometryOnCell(CATCell*,CATSide,CATGeometry*)
Sets the geometry of this CATCell with respect to a bounded cell.
o SetGeometryOrientation(CATOrientation)
Modifies the orientation of this CATCell with regards to its geometry.
o SetInfinite(CATBoolean)
Defines this CATCell as infinite.

Methods


o AddBoundingCell
public virtual void AddBoundingCell(CATCell* iBoundingCell,
CATSide iSideOrientation,
CATDomain* iDomain=NULL,
CATGeometry* iWithGeometry=NULL )=0
Adds a CATCell to the boundary of this CATCell.
The cells dimensions must match the domain low and high dimensions.
Parameters:
iBoundingCell
The pointer to the cell to add to the boundary of this.
iSideOrientation
The side of the matter when walking along the natural orientation of iBoundingCell.
iDomain
The pointer to the domain that will contain the added cell.
If not NULL, the bounding cell is also added to the domain.
iWithGeometry
The pointer to the underlying geometry ( a CATPCurve for an Edge-Bounding-Face, a CATPointOnEdgeCurve for a Vertex-Bounding-Edge, ..)
If not NULL at the method call, the geometry is associated with iBoundingCell.
o AddDomain
public virtual void AddDomain(CATDomain* iDomain,
CATLocation iLocation= CATLocationUnknown )=0
Adds a CATDomain to this CATCell.
For volumes and faces only.
Parameters:
iDomain
The pointer to the domain to add.
iLocation
The location of the domain to bound this.
o CreateBoundaryIterator
public virtual CATBoundaryIterator * CreateBoundaryIterator()=0
Creates an iterator on the boundary of this CATCell.
Returns:
The pointer to the created iterator. You must delete this operator after use.
o CreateBoundedCellsIterator
public virtual CATBoundedCellsIterator * CreateBoundedCellsIterator(CATBody* iInBody)=0
Creates an iterator on the CATCells bounded by this CATCell.
Parameters:
iInBody
The pointer to the body in which the bounded cells are searched. Recall that a same CATCell can be used by several bodies.
Returns:
The pointer to the created iterator. If not NULL, you must delete this operator after use.
  • If this CATCell is inside iInBody, iterator is created.
  • If this CATCell does not belongs to iInBody, NULL is output.
o EstimateCenter
public virtual void EstimateCenter(CATMathPoint& ioResult) const = 0
Retrieves a point belonging to this CATCell.
Parameters:
ioResult
The estimated center of this CATCell.
o GetCommonBorderCells
public virtual void GetCommonBorderCells(CATCell* iCell,
short iMaxDepthSearch,
CATLISTP(CATCell)& ioResultCells,
short iResultCellsDimension= -1) = 0
Retrieves the cells of a given dimension bounding this and an another cell.
Parameters:
iCell
The pointer to the other cell, of same dimension as this.
iMaxDepthSearch
The range of dimensions between the this and iCell. For example, if this and iCell are faces, specifying 1 returns the common edges, specifying 2 returns the common edges plus the common vertices. Current limitation: this and iCell must have the same dimension.
ioResultCells
The list of pointers to the found cells.
iResultCellsDimension
The dimension (0,1,2,3) of the searched cells, -1 for all the dimensions.
o GetDimension
public virtual short GetDimension()=0
Returns the dimension of this CATCell.
Returns:
The dimension.
Legal values:
0
for a vertex.
1
for an edge.
2
for a face.
3
for a volume.
o GetGeometry
public virtual CATGeometry * GetGeometry(CATOrientation* ioOrientation=NULL)=0
Returns the geometry of this CATCell.
Parameters:
ioOrientation
The relative orientation between this and its geometry. If NULL, the orientation is not filled out.
Returns:
The pointer to the geometry of this.
o GetGeometryOnCell
public virtual CATGeometry * GetGeometryOnCell(CATCell* iBoundedCell,
CATSide iSide,
CATOrientation* ioOrientation=NULL )=0
Returns the geometry of this CATCell with respect to a bounded cell.
Parameters:
iBoundedCell
The pointer to the cell bounded by this.
iSide
The matter side attribute of this, as bounding iBoundedCell.
ioOrientation
A pointer to the cell orientation with regards to the geometry. If NULL, the orientation is not filled out.
Returns:
The pointer to the geometry of this.
  • If this is a CATEdge, iBoundedCell is a CATFace, and iGeomOnSupport is a CATPCurve.
  • If this is a CATVertex, iBoundedCell is a CATEdge, and iGeomOnSupport is a CATPointOnEdgeCurve.
o GetGeometryOrientation
public virtual CATOrientation GetGeometryOrientation()= 0
Returns the orientation of this CATCell with regards to its geometry.
Returns:
The relative orientation between this and its geometry.
o GetInfinite
public virtual CATBoolean GetInfinite()const =0
Returns the infinite property of this CATCell.
Returns:
The infinity mode of this.
Legal values: TRUE, if this must be considered as infinite, FALSE if it is finite (default mode).
o GetLyingGeometryOn
public virtual CATGeometry* GetLyingGeometryOn(CATCell* iSupport) = 0
Returns the geometry of this as a geometry lying on the geometry of another cell.
Parameters:
iSupport
The pointer to the supporting cell.
Returns:
The pointer to the geometry of this lying on iSupport.
o GetLyingOn
public virtual void GetLyingOn(CATLISTP(CATCell)& ioSupports,
CATBody* iInBody) = 0
Retrieves the CATCells on which this is directly lying on.
Parameters:
ioSupports
The list of the pointers to the supporting cells.
iInBody
The pointer to the body in which the cells are searched. Recall that a same CATCell can be used by several bodies. If NULL, the search is done among all the bodies.
o GetMatterSide
public virtual CATSide GetMatterSide(CATCell* iUpperDimCell) = 0
Returns the matter side of this CATCell with regards to a bounding cell of upper dimension.
Parameters:
iUpperDimCell
The pointer to the cell of higher dimension.
Returns:
The side attribute.
Throws:
If the difference of dimensions is greater than 1, or if this does not bound iUpperDimCell.
o GetNbBoundedCells
public virtual CATULONG32 GetNbBoundedCells(CATBody* inBody,
CATBoolean iDifferentiateMatterSide= FALSE) = 0
Returns the number of cells bounded by this cell.
Parameters:
iInBody
The pointer to the body in which the bounded cells are searched. Recall that a same CATCell can be used by several bodies.
iDifferentiateMatterSide
Defines whether a cell that is many times bounded by the same cell with different matter sides must be counted once or twice. Notice that this configuration remains unsual.
Legal values:
FALSE
if each cell only occurs once in the result (default mode)
TRUE
each distinct matter side for the same bounding cell occurs in the result
Returns:
The number of bounded cells.
o GetNbInternalDomains
public virtual CATLONG32 GetNbInternalDomains()=0
Returns the number of internal CATDomains of this CATCell.
This method performs a recursive scan.
Returns:
The number of internal domains.
o GetNeighborCell
public virtual CATCell* GetNeighborCell(CATCell* iBorderCell,
CATBody* iInBody,
short* ioRelativeOrientation=NULL) = 0
Retrieves the adjacent cell of this on the other side of a border cell.
Parameters:
iBorderCell
The pointer to the bounding cell.
iInBody
The pointer to the body in which the bounded cells are searched. Recall that a same CATCell can be used by several bodies.
ioRelativeOrientation
The relative orientation of the found cell with regards to this. If NULL, this argument is not output.
Returns:
The pointer to the other bounded cell, NULL if iBorderCell only bounds this.
Throws:
If the result is not unique.
o IsLyingOn
public virtual CATBoolean IsLyingOn(CATTopology* iContainerOfSupportingCell,
CATLISTP(CATCell)* ioSupports= NULL,
CATLISTP(CATGeometry)* ioGeomSupports= NULL) = 0
Tests whether this CATCell is lying (directly or indirectly) on another topological object.
Parameters:
iContainerOfSupportingCell
The pointer to another topological object.
ioSupports
The pointer to the list of supporting cells.
ioGeomSupports
The pointer to the list of the geometry of supporting cells.
Returns:
The result of the test.
o IsOnBorder
public virtual CATBoolean IsOnBorder(CATCell* iUpperDimCell,
CATSide* ioSide=NULL) = 0
Tests whether this CATCell bounds a given cell of upper dimension.
Parameters:
iUpperDimCell
The pointer to the cell of upper dimension.
ioSide
A pointer to the matter side of the bouding cell. If NULL, the side is not filled out.
Warning: ioSide=CATSideUnknown:
  • either if the difference of dimensions is greater than 1
  • or if this bounds UpperDimCell twice (Left and Right)
Returns:
The result of the test.
Legal values:
0
if this does not bound iUpperDimCell
1
if this bounds iUpperDimCell
o RemoveBoundingCell
public virtual void RemoveBoundingCell(CATCell* iCellToRemove)=0
Removes a CATCell from the boundary of this CATCell.
Parameters:
iCellToRemove
The pointer to the cell to remove. The cell is detached from the boundary, but still exists in the CATGeoFactory.
o SetGeometry
public virtual void SetGeometry(CATGeometry* iGeometry,
CATOrientation iOrientation=CATOrientationPositive )=0
Defines the geometry of this CATCell.
Parameters:
iGeometry
The pointer to the geometry to associate with this.
  • The geometry of a CATFace is a CATSurface.
  • The geometry of a CATEdge is a CATEdgeCurve.
  • The geometry of a CATVertex is a CATMacroPoint.
  • SetGeometry is not used in case of a CATVolume, as the geometry of a CATVolume always is the 3D space.
iOrientation
The relative orientation of the cell with regards to the geometry.
o SetGeometryOnCell
public virtual void SetGeometryOnCell(CATCell* iBoundedCell,
CATSide iSide,
CATGeometry* iGeomOnSupport)=0
Sets the geometry of this CATCell with respect to a bounded cell.
Parameters:
iBoundedCell
The pointer to the cell bounded by this.
iSide
The matter side attribute of this, as bounding iBoundedCell.
iGeomOnSupport
The pointer to the geometry of this.
  • If this is a CATEdge, iBoundedCell is a CATFace, and iGeomOnSupport is a CATPCurve.
  • If this is a CATVertex, iBoundedCell is a CATEdge, and iGeomOnSupport is a CATPointOnEdgeCurve.
o SetGeometryOrientation
public virtual void SetGeometryOrientation(CATOrientation iNewOrientation)=0
Modifies the orientation of this CATCell with regards to its geometry.
For faces and edges.
Parameters:
iNewOrientation
The new relative orientation.
o SetInfinite
public virtual void SetInfinite(CATBoolean iYesOrNo)=0
Defines this CATCell as infinite.
All the cells are bordered, but one can consider a cell as infinite by applying this method.
Parameters:
iYesOrNo
The infinity mode of this.
Legal values: TRUE, if this must be considered as infinite, FALSE if it is finite (default mode).

This object is included in the file: CATCell.h
If needed, your Imakefile.mk should include the module: CATTopologicalObjects

Copyright © 2003, Dassault Systèmes. All rights reserved.