GMModelInterfaces Interface 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 method, and deleted with the 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 GetNeighborCells(CATCell*,CATBody*,CATLISTP(CATCell)&,CATListOfLong*)
Retrieves the adjacent cells 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 RemoveBoundingCell(CATCell*,CATBoolean)
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 AddBoundingCell( iBoundingCell,
iSideOrientation,
iDomain=NULL,
iWithGeometry=NULL )
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 AddDomain( iDomain,
iLocation= CATLocationUnknown )
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 CreateBoundaryIterator()
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 CreateBoundedCellsIterator( iInBody)
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 EstimateCenter( ioResult)
Retrieves a point belonging to this CATCell.
Parameters:
ioResult
The estimated center of this CATCell.
o GetCommonBorderCells
public virtual GetCommonBorderCells( iCell,
iMaxDepthSearch,
ioResultCells,
iResultCellsDimension= -1)
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 GetDimension()
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 GetGeometry( ioOrientation=NULL)
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 GetGeometryOnCell( iBoundedCell,
iSide,
ioOrientation=NULL )
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 GetGeometryOrientation()
Returns the orientation of this CATCell with regards to its geometry.
Returns:
The relative orientation between this and its geometry.
o GetInfinite
public virtual GetInfinite()
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 GetLyingGeometryOn( iSupport)
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 GetLyingOn( ioSupports,
iInBody)
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 GetMatterSide( iUpperDimCell)
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 GetNbBoundedCells( inBody,
iDifferentiateMatterSide= FALSE)
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 GetNbInternalDomains()
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 GetNeighborCell( iBorderCell,
iInBody,
ioRelativeOrientation=NULL)
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 GetNeighborCells
public virtual GetNeighborCells( iBorderCell,
iInBody,
ioNeighborCells,
ioRelativeOrientations=NULL )
Retrieves the adjacent cells 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.
ioNeighborCells
The pointer to the other bounded cell, Empty if iBorderCell only bounds this.
ioRelativeOrientations
The relative orientation of the found cells with regards to this. If NULL, this argument is not output.
Returns:
An HRESULT value.
Legal values:
S_OK
The query succeeds.
E_FAIL
The inBody is not valid, or this CATCell does not belongs to iInBody
o IsLyingOn
public virtual IsLyingOn( iContainerOfSupportingCell,
ioSupports= NULL,
ioGeomSupports= NULL)
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 IsOnBorder( iUpperDimCell,
ioSide=NULL)
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 RemoveBoundingCell( iCellToRemove)
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 RemoveBoundingCell
public virtual RemoveBoundingCell( iCellToRemove,
iRemoveFromFactory= FALSE )
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.
iRemoveFromFactory
The action on the detached cell iDomainToDetach. Dedicated to the case where no more CATDomain refers to iCellToDetach.
Legal values:
FALSE
the iCellToDetach remains in the factory
TRUE
the iCellToDetach is removed from the factory with RemoveDependancies management
o SetGeometry
public virtual SetGeometry( iGeometry,
iOrientation=CATOrientationPositive )
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 SetGeometryOnCell( iBoundedCell,
iSide,
iGeomOnSupport)
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 SetGeometryOrientation( iNewOrientation)
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 SetInfinite( iYesOrNo)
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: CATGMModelInterfaces

Copyright © 1999-2015, Dassault Systèmes. All rights reserved.