C3D Toolkit  Kernel - 117982, Vision - 2.9.2.2

Face. More...

#include <topology.h>

+ Inheritance diagram for MbFace:
+ Collaboration diagram for MbFace:

Classes

struct  MbFaceAuxiliaryData
 Auxiliary data for a face. More...
 

Public Member Functions

 MbFace (const MbSurface &, bool sense)
 Constructor by surface and orientation of face normal in relation to surface normal.
 
 MbFace (MbLoop &bnd, const MbSurface &surf, bool sense)
 Constructor by loop, surface and orientation of face normal in relation to surface normal.
 
 MbFace (MbLoop &bnd0, MbLoop &bnd1, const MbSurface &surf, bool sense)
 Constructor by loops, surface and orientation of face normal in relation to surface normal.
 
template<class Loops >
 MbFace (const Loops &bnds, const MbSurface &surf, bool sense)
 Constructor by loops, surface and orientation of face normal in relation to surface normal.
 
 MbFace (const MbFace &other, const MbSurface &newSurface, bool surfaceSense)
 Constructor by other face, new surface and orientation of face normal in relation to normal of this surface.
 
virtual ~MbFace ()
 Destructor.
 
MbeTopologyType IsA () const override
 A type of element.
 
virtual MbFaceDataDuplicate (MbRegDuplicate *=nullptr) const
 Create new face by copying all data of the initial face.
 
void Transform (const MbMatrix3D &, MbRegTransform *=nullptr) override
 Transform according to the matrix. More...
 
void Move (const MbVector3D &, MbRegTransform *=nullptr) override
 Move along a vector. More...
 
void Rotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr) override
 Rotate around an axis. More...
 
double DistanceToPoint (const MbCartPoint3D &) const override
 Calculate the distance to a point.
 
void AddYourGabaritTo (MbCube &) const override
 Add your own bounding box into the sent bounding box.
 
void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const override
 Calculate bounding box in the local coordinate system which is given by the matrix of transformation to this system.
 
virtual const MbSurfaceGetSurface () const
 Get a surface of a face.
 
virtual MbSurfaceSetSurface ()
 Get a surface of a face for modifications.
 
virtual bool IsPlanar (double accuracy=METRIC_EPSILON) const
 Is a face planar?
 
virtual bool GetPlacement (MbPlacement3D *) const
 Get a plane (or only a possibility of getting a plane)
 
bool IsSameSense () const
 Get direction of face normal in relation to the direction of surface normal.
 
void SetSameSense (bool s)
 Set direction of face normal in relation to the direction of surface normal.
 
bool GetCylinderAxis (MbAxis3D &axis) const
 Get a rotation axis of a surface if it is possible.
 
bool GetPlanePlacement (MbPlacement3D &) const
 Get a local coordinate system of a face plane, if it is possible.
 
bool GetSurfacePlacement (MbPlacement3D &) const
 Get a local coordinate system of a surface plane, if it is possible.
 
bool GetControlPlacement (MbPlacement3D &) const
 Get a local coordinate system in a face middle point, if it is possible.
 
bool OrientPlacement (MbPlacement3D &) const
 Orient the axis X of a placement along the line of its intersection with a surface of a face, the axis Y - with a normal.
 
void Normal (double surfaceU, double surfaceV, MbVector3D &normal) const
 Get the face normal. More...
 
bool IsColinear (const MbCurveEdge &) const
 Is an edge parallel to a face?
 
size_t GetLoopsCount () const
 Get the number of loops (boundaries) of face.
 
void SetLabelThrough (MbeLabelState l, void *key=nullptr) const
 Set a label of face to its loops, edges and vertices.
 
void SetLabelThrough (MbeLabelState l, void *key, bool setLock) const
 Set a label of face to its loops, edges and vertices.
 
void RemovePrivateLabelThrough (void *key) const
 Remove a private label of face to its loops, edges and vertices.
 
bool IsOwnChangedItem (bool checkVertices=false) const
 Has been face or it edges modified?
 
template<class VerticesVector >
void GetVertices (VerticesVector &vertices) const
 Get a set of face vertices.
 
template<class VerticesSet >
void GetVerticesSet (VerticesSet &vertices) const
 Get a set of face vertices.
 
template<class EdgesVector >
void GetEdges (EdgesVector &, size_t mapThreshold=50) const
 Get a set of face edges.
 
template<class EdgesSet >
void GetEdgesSet (EdgesSet &edges) const
 Get a set of face edges.
 
template<class EdgesVector , class EdgesSet >
void GetEdges (EdgesVector &edges, EdgesSet &edgesCache) const
 Get a set of face unique edges.
 
template<class EdgesVector >
void GetOuterEdges (EdgesVector &, size_t mapThreshold=50) const
 Get a set of edges in outer loop of face.
 
template<class FacesVector >
void GetNeighborFaces (FacesVector &) const
 Get a set of adjacent faces.
 
bool HasNeighborFace () const
 Is there any neighbor face?
 
MbLoopGetLoop (size_t index) const
 Get a boundary (a loop) with a check of index correctness.
 
MbLoop_GetLoop (size_t index) const
 Get a boundary (a loop) without a check of index correctness.
 
void SetNullLoop (size_t index)
 Set to null the number of edges in loop with the given index.
 
void ExchangeLoops (size_t i1, size_t i2)
 Swap loops.
 
void AddLoop (MbLoop &l)
 Add a new loop to a face.
 
void InsertLoop (size_t index, MbLoop &l)
 Insert a loop by an index.
 
void ChangeLoop (MbLoop &oldLoop, MbLoop &newLoop)
 Replace a loop by other loop.
 
MbLoopDetachLoop (size_t index)
 Detach a loop with the given index.
 
void DeleteLoop (size_t index)
 Delete a loop with the given index.
 
void DeleteLoops ()
 Delete all loops of a face.
 
void AdjustContours ()
 Copy face boundaries from face loops.
 
void SetFaceToLoopEdges (MbLoop &)
 Set the pointers of loop edges to the face.
 
void SetNullToLoopEdges (MbLoop &)
 Set to null the pointers to the face on the left or to the face on the right in edges of loop.
 
void SetNullToLoopsEdges ()
 Set to null the pointers to the face on the left or to the face on the right in edges of loops.
 
bool SetNullToFace (const MbFace *delFace)
 Set to null pointers to the face on the left or to the face on the right which point to the adjacent face delFace in edges of loops.
 
bool SetNullToFace (const MbFace *delFace, bool setEdgeChanged)
 Set to null pointers to the face on the left or to the face on the right which point to the adjacent face delFace in edges of loops.
 
void MakeRight (bool setBounds=false)
 Set the pointers to the face on the left or to the face on the right to the given face in edges of loops and parameters of surface by loops of face (setBounds = true).
 
bool IsVertexOn (const MbVertex *vertex, size_t *indLoop=nullptr, size_t *indEdge=nullptr) const
 Does a vertex belong an edge?
 
void PartialReverse ()
 Change an orientation of a face. More...
 
void TotalReverse ()
 Change an orientation of a face. More...
 
void PartialReverseLoopWithNeighbours (size_t index)
 Invert an orientation of a loop with the given index. More...
 
bool IsSame (const MbTopologyItem &other, double accuracy) const override
 Determine whether objects are equal.
 
void CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const override
 Construct a polygonal copy of an object mesh).
 
bool IsConnectedWith (const MbFace *face, RPArray< const MbCurveEdge > *commonEdges=nullptr) const
 Are faces connected?
 
bool IsSimilarToFace (const MbFace &face, bool &normal, bool &planeType, VERSION version, double precision=METRIC_PRECISION) const
 Are surfaces similar for merge by transformation by the matrix (a primary check)?
 
bool IsSpecialSimilarToFace (const MbFace &face, bool &normal, bool &swap, VERSION version, double precision=METRIC_PRECISION) const
 Are surfaces similar for merge by replacement (a primary check)?
 
bool ChangeCarrier (const MbSurface &item, MbSurface &init)
 Replace the surface 'item' to the similar surface 'init' in the face and all edges.
 
bool ChangeCarrierBorne (const MbSurface &item, MbSurface &init, const MbMatrix &matr)
 Replace the surface 'item' to the similar surface 'init' in the face and all edges and transform by the matrix all two-dimensional curves from the domain of 'item'.
 
bool ChangeCarrierBorneSpecial (const MbFace &face)
 Replace the face surface by the sent face surface.
 
bool IsSimilarExactly (const MbFace &face, MbMatrix &matr, VERSION version, double precision=METRIC_PRECISION) const
 Are surfaces similar for replacement with transformation of two-dimensional curves by the matrix?
 
bool IsSpecialSimilarExactly (const MbFace &face, bool doSwap, double precision=METRIC_PRECISION) const
 Are surfaces similar for replacement with transformation of two-dimensional curves?
 
bool FindNeighbourEdge (const MbCurveEdge &edge, bool orient, bool next, MbCurveEdge *&findEdge, bool &findOrient) const
 Find the next edge after the given one (next==true) or before the given one (next==false).
 
bool FindEdgeIndex (const MbCurveEdge &edge, bool orient, size_t &loopIndex, size_t &edgeIndex) const
 Find the index of a loop in a face and the index of an edge in the found loop.
 
bool FindEdgeIndex (const MbCurveEdge &edge, ThreeStates orient, size_t &loopIndex, size_t &edgeIndex) const
 Find the index of a loop in a face and the index of an edge in the found loop.
 
MbCurveEdgeGetEdgeByIndex (size_t loopIndex, size_t edgeIndex) const
 Get an edge by the indices of a face loop and an edge in the loop.
 
const MbOrientedEdgeGetOrientedEdge (size_t loopIndex, size_t edgeIndex) const
 Find an oriented edge by the indices of a face loop and an edge in the loop.
 
const MbOrientedEdgeGetOrientedEdge (const MbCurveEdge &curveEdge) const
 Find an oriented edge by the edge of a face. Don't seek if an edge is a seam.
 
MbOrientedEdgeSetOrientedEdge (const MbCurveEdge &curveEdge)
 Find an oriented edge by the edge of a face. Don't seek if an edge is a seam.
 
bool DeleteOrientedEdge (MbCurveEdge *curveEdge)
 Remove an oriented edge by the edge of a face.
 
template<class EdgeVector >
bool FindIndexByEdges (const EdgeVector &initEdges, SArray< MbItemIndex > &indexes) const
 Find numbers for the edges.
 
bool FindEdgesByIndex (SArray< MbItemIndex > &indexes, RPArray< MbCurveEdge > &initEdges) const
 Find edges by numbers.
 
const MbVertexFindVertexByName (const MbName &) const
 Find vertex by name.
 
const MbCurveEdgeFindEdgeByName (const MbName &) const
 Find edge by name.
 
const MbVertexFindVertexByHash (const SimpleName h) const
 Find vertex by hash of a name.
 
const MbCurveEdgeFindEdgeByHash (const SimpleName h) const
 Find edge by hash of a name.
 
void SetOrientedLabel (const MbCurveEdge &edge, MbeLabelState n, void *key=nullptr)
 Set a label for an oriented edge.
 
double DistanceToEdge (const MbCurveEdge &edge, MbCartPoint3D &p, MbCartPoint3D &edgeP) const
 Calculate the nearest distance to an edge and the nearest points of an edge.
 
double DistanceToFace (const MbFace &face, MbCartPoint3D &p, MbCartPoint3D &faceP) const
 Calculate the nearest distance to a face and the nearest points of faces.
 
bool AngleWithEdge (const MbEdge &, double &angle) const
 Find an angle between straight edge and planar face.
 
bool AngleWithFace (const MbFace &, double &angle) const
 Find an edge between planar faces.
 
bool GetNearestEdge (const MbCartPoint &pOnSurface, c3d::IndicesPair &edgeIndex, double &tEdgeCurve, bool &orientation, double &distance, double paramEpsilon=Math::paramEpsilon) const
 Find the closest edge in 2d to a specific point via projection. More...
 
bool GetRectIntersectingEdges (const MbRect &rect, std::vector< c3d::IndicesPair > &edgeLocs, double eps) const
 Find edges by intersections of two-dimensional bounding boxes.
 
double DistanceToBorder (const MbCartPoint &point, double &precision) const
 Find a parametric distance to the nearest boundary. More...
 
double DistanceToBorder (const MbCartPoint &point, MbVector &normal, double &precision) const
 Find a parametric distance to the nearest boundary.
 
double DistanceToBorder (const MbCartPoint &point, size_t &loopNumber, size_t &edgeNumber, double &precision) const
 Find a parametric distance to the nearest boundary.
 
double DistanceToBorder (const MbCartPoint &point, MbVector &normal, size_t &loopNumber, size_t &edgeNumber, ptrdiff_t &corner, double &tEdgeCurve, double &precision) const
 Find a parametric distance to the nearest boundary. More...
 
MbeItemLocation NearPointProjection (const MbCartPoint3D &point, double &u, double &v, MbVector3D &normal, c3d::IndicesPair &edgeLoc, ptrdiff_t &corner) const
 Find the nearest projection of the point on face. More...
 
bool CuttingEdges (const MbCartPoint &p, double xEpsilon, double yEpsilon, double paramPrecision)
 Split edges of a face by a point on surface.
 
bool LoopSelfIntersection (std::vector< LoopCrossParam > &siParams1, std::vector< LoopCrossParam > &siParams2, std::vector< bool > *crossCrossings, bool checkInsideEdges, double metricNear, VERSION version) const
 Find self-intersections of loops.
 
bool CreateNormalPlacements (const MbVector3D &axisZ, double angle, SArray< MbPlacement3D > &places, VERSION version=Math::DefaultMathVersion()) const
 Construct normal placements of constructive planes.
 
bool CreateTangentPlacements (const MbVector3D &axisZ, SArray< MbPlacement3D > &places) const
 Construct tangent placements of constructive planes.
 
bool GetAnyPointOn (MbCartPoint3D &pnt, MbVector3D &nor) const
 Get some point and normal on face.
 
void GetProperties (MbProperties &)
 Get properties of the object.
 
void SetProperties (const MbProperties &)
 Set properties of the object.
 
void ChangeSurface (const MbSurface &newSurf)
 Replace the surface by the given one.
 
void GetFaceParam (const double surfaceU, const double surfaceV, double &faceU, double &faceV) const
 Get the face parameters (0 <= faceU <= 1, 0 <= faceV <= 1) for surface parameters surfaceU and surfaceV.
 
void GetSurfaceParam (const double faceU, const double faceV, double &surfaceU, double &surfaceV) const
 Get surface parameters surfaceU and surfaceV for the face parameters (0 <= faceU <= 1, 0 <= faceV <= 1).
 
void Point (double faceU, double faceV, MbCartPoint3D &point) const
 Get a point on a face by abstract parameters (0 <= faceU <= 1, 0 <= faceV <= 1).
 
void PointOn (double surfaceU, double surfaceV, MbCartPoint3D &point) const
 Get a point on a face by surface parameters.
 
bool IsBoundaryFace (double mEps=Math::metricEpsilon) const
 Is a face boundary? (Does it have edges where it is not connected with other faces? )
 
template<class ConstEdgesVector >
void GetBoundaryEdges (ConstEdgesVector &) const
 Get a set of boundary face edges.
 
bool GetTopologyState (ptrdiff_t &cntAdjacentFaces, RPArray< const MbFace > *&adjacentFaces, bool &boundaryFace, ptrdiff_t &cntLoops) const
 Get topological state.
 
void LoopsReserve (size_t additionalSpace)
 Reserve memory for loops.
 
void LoopsAdjust ()
 Free the unnecessary memory.
 
void SurfaceSection (const MbPlacement3D &place, PArray< MbCurve > &pCurve)
 Intersection between face and plane, the result is a set of curves on surface and two-dimensional curves on plane.
 
MbSurfaceGetSurfaceCurvesData (RPArray< MbContour > &contours) const
 Construct copy of surface and two-dimensional contours by loops for operations of extrusion and rotation of curves.
 
MbSurfaceGetSurfaceCurvesData (std::vector< SPtr< MbContour > > &contours) const
 Construct copy of surface and two-dimensional contours by loops for operations of extrusion and rotation of curves.
 
bool UpdateSurfaceBounds (bool curveBoundedOnly=true)
 Update boundaries of a face bounded by curves by face loops.
 
MbCube GetCube () const
 Get bounding box of face.
 
MbRect GetRect () const
 Get bounding box of the space of parameters.
 
bool UpdateLoopRect (size_t loopIndex)
 Update rectangle bound of loop by index.
 
void ResetLoopsRects () const
 Reset rectangle bounds of loops.
 
ThreeStates Salient () const
 Determine whether the face is convex. More...
 
bool IsTemporal () const
 Is a temporary object for the maintenance of a face created?
 
void RemoveTemporal () const
 Delete a temporary maintenance object.
 
const MbFaceTemp * CreateTemporal (bool keepExisting) const
 Create new temporary maintenance object.
 
bool UpdateTemporal () const
 Update temporary maintenance object if it is already created.
 
- Public Member Functions inherited from MbTopologyItem
virtual ~MbTopologyItem ()
 Destructor.
 
MbeImplicationType ImplicationType () const override
 A type of element. More...
 
const MbNameGetName () const
 Get name of object.
 
MbNameSetName ()
 Get name of object for modification.
 
SimpleName GetMainName () const
 Get main name.
 
void SetMainName (SimpleName n)
 Set main name.
 
SimpleName GetFirstName () const
 Get first name.
 
SimpleName GetNameHash () const
 Get hash of name.
 
void SetName (const MbName &n)
 Set name.
 
bool GetOwnChanged () const
 Get flag which indicates that an object has (not) been changed.
 
bool GetOwnChanged (MbeChangedType n) const
 Get flag which indicates that an object has (not) been changed.
 
void SetOwnChanged (MbeChangedType)
 Set flag which indicates that an object has (not) been changed.
 
void CopyOwnChanged (const MbTopologyItem &ti)
 Copy flag which indicates that an object has (not) been changed.
 
uint16 GetOwnChangedFlag () const
 Get flag which indicates that an object has (not) been changed.
 
template<class Uint >
void SetOwnChangedFlag (Uint n)
 Set flag which indicates that an object has (not) been changed.
 
bool IsOwnRenamedOnly () const
 Get flag which indicates that an object has been renamed only.
 
bool IsOwnTransformedOnly () const
 Get flag which indicates that an object has been transformed only.
 
bool IsOwnReorientedOnly () const
 Get flag which indicates that an object has been reoriented only.
 
bool IsOwnChangedWeakly () const
 Get a flag indicating that only “weak” changes were applied: creation, renaming, transformation, reorientation. More...
 
MbeLabelState GetLabel (void *key=nullptr) const
 Get label.
 
void SetOwnLabel (MbeLabelState l, void *key=nullptr) const
 Set a label of the loop.
 
void SetOwnLabel (MbeLabelState l, void *key, bool setLock) const
 Set a label of the loop.
 
bool ToDelete () const
 Is this object intended for deletion? This is defined by labels.
 
void RemovePrivateLabel (void *key=nullptr) const
 Remove private label.
 
void Assign (const MbTopologyItem &)
 Copying of the object data.
 
void RemoveParentNamesAttribute ()
 Delete an attribute of name type with parent names.
 
- Public Member Functions inherited from MbTopItem
MbeRefType RefType () const override
 Registration type (for copying, duplication).
 
void PrepareWrite () const
 Prepare an object for writing.
 
bool IsAVertex () const
 Is it a vertex?
 
bool IsAWireEdge () const
 Is it an edge of wireframe?
 
bool IsAnEdge () const
 Is it an edge?
 
bool IsAFace () const
 Is it a face?
 
bool IsAShell () const
 Is it a shell?
 
bool IsAProxy () const
 Is it a proxy?
 
- Public Member Functions inherited from MbRefItem
refcount_t GetUseCount () const
 Get count of references (get count of owners of an object).
 
refcount_t AddRef () const
 Increase count of references by one.
 
refcount_t DecRef () const
 Decrease count of references by one.
 
refcount_t Release () const
 Decrease count of references by one and if count of references became zero, then remove itself.
 
- Public Member Functions inherited from TapeBase
 TapeBase (RegistrableRec regs=noRegistrable)
 Constructor.
 
 TapeBase (const TapeBase &)
 Copy-constructor.
 
virtual ~TapeBase ()
 Destructor.
 
RegistrableRec GetRegistrable () const
 Whether the stream class is registrable.
 
void SetRegistrable (RegistrableRec regs=registrable) const
 Set the state of registration of the stream class.
 
virtual const char * GetPureName (const VersionContainer &) const
 Get the class name.
 
virtual bool IsFamilyRegistrable () const
 Whether the object belongs to a registrable family.
 
- Public Member Functions inherited from MbAttributeContainer
 MbAttributeContainer ()
 Constructor without parameters.
 
 MbAttributeContainer (MbAttribute &)
 Constructor by attribute.
 
virtual ~MbAttributeContainer ()
 Destructor.
 
void AttributesRead (reader &)
 Read attributes from stream.
 
void AttributesWrite (writer &) const
 Writing attributes to stream.
 
void GetProperties (MbProperties &)
 Get properties of attributes.
 
void SetProperties (const MbProperties &)
 Set properties of attributes.
 
void SetDensity (double)
 Set density of an object.
 
double GetDensity () const
 Get density of an object.
 
void SetVisual (float a, float d, float sp, float sh, float t, float e, uint rgb=0)
 Set visual properties of the object.
 
void SetVisual (const MbRGBA &ambient, const MbRGBA &diffuse, const MbRGBA &specular, const MbRGBA &emission, uint8 shininess, uint8 opacity, uint8 chrom)
 Set visual properties of the object.
 
bool GetVisual (float &a, float &d, float &sp, float &sh, float &t, float &e, uint rgb=0) const
 Get visual properties of the object. More...
 
bool IsColored () const
 
void SetColor (uint32)
 Change color of the object.

 
void SetColor (int R, int G, int B)
 Change color of the object (0-255).
 
uint32 GetColor () const
 Get color of an object.
 
void SetWidth (int)
 Set thickness of lines for object's representation.
 
int GetWidth () const
 Get thickness of lines for object's representation.
 
void SetStyle (int)
 Set style of lines for object's representation.
 
int GetStyle () const
 Get style of lines for object's representation.
 
void SetSelected (bool s=true)
 To allocate or not to allocate an object.
 
bool IsSelected () const
 Is the object selected.
 
bool ReverseSelected ()
 Invert object selection.
 
void SetChanged (bool c=true)
 Set: the object is changed or isn't changed.
 
bool IsChanged () const
 Is the object changed?
 
void SetVisible (bool)
 Set visibility.

 
bool IsVisible () const
 Is the object visible?
 
bool IsInvisible () const
 Is the object invisible?
 
void AttributesAssign (const MbAttributeContainer &)
 Duplicate attributes of a given object, release existing attributes.
 
size_t AttributesCount () const
 Get the number of objects.
 
bool RemoveAttributes (bool onDeleteOwner=false)
 Delete all attributes from container.
 
MbAttributeAddAttribute (MbAttribute *attr, bool checkSame=true)
 Add attribute in container. More...
 
MbAttributeAddAttribute (const MbAttribute &attr, bool checkSame=true)
 Add attribute in container (adds a copy of the attribute if it can be added). More...
 
void GetAttributes (c3d::AttrVector &attrs, MbeAttributeType aFamily, MbeAttributeType subType) const
 Get attributes of a given type or family. More...
 
void GetAttributes (c3d::AttrVector &attrs, MbeAttributeType aType) const
 Get attributes of a given type. More...
 
template<class AttrVector >
void GetAttributes (AttrVector &attrs) const
 Get attributes. More...
 
void GetCommonAttributes (c3d::AttrVector &, const c3d::string_t &samplePrompt, MbeAttributeType subType=at_Undefined, bool firstFound=false) const
 Get attributes using sample of description string.
 
void GetStringAttributes (c3d::AttrVector &, const c3d::string_t &sampleContent) const
 Get string attributes using sample of contents of the string.
 
bool RemoveAttribute (const MbAttribute *, bool checkAccuracySame=false, double accuracy=LENGTH_EPSILON)
 Get an attribute of a given type, the first one is returned if there are many. More...
 
bool RemoveAttributes (MbeAttributeType type, MbeAttributeType subType)
 Delete attributes of a given type.
 
const MbAttributeGetSimpleAttribute (MbeAttributeType) const
 Get a simple attribute of a given subtype.
 
MbAttributeSetSimpleAttribute (MbeAttributeType)
 Get a simple attribute of a given subtype.
 
MbAttributeSetSimpleAttribute (MbAttribute *simpAttr)
 Set a simple attribute of a given subtype.
 
MbAttributeSetSimpleAttribute (const MbAttribute &simpAttr)
 Set a simple attribute of a given subtype (always copies the attribute).
 
void RemoveSimpleAttribute (MbeAttributeType)
 Delete simple attributes (one or more) of a given subtype.
 
MbAttributeDetachSimpleAttribute (MbeAttributeType)
 Detach a simple attribute of a given subtype.
 
void GetUserAttributes (std::vector< MbUserAttribute * > &attrs, const MbUserAttribType &type) const
 Get a user attribute of a given subtype.
 
void RemoveUserAttributes (const MbUserAttribType &type)
 Delete user attributes (one or more) of a given subtype.
 
void DetachUserAttributes (std::vector< MbUserAttribute * > &attrs, const MbUserAttribType &type)
 Detach a user attribute of a given subtype.
 
void AttributesChange ()
 Perform actions when changing the attributes.

 
void AttributesConvert (MbAttributeContainer &other) const
 Perform actions when converting the attributes.

 
void AttributesTransform (const MbMatrix3D &, MbRegTransform *=nullptr)
 Perform actions when transforming the attributes.

 
void AttributesMove (const MbVector3D &, MbRegTransform *=nullptr)
 Perform actions when moving the attributes.

 
void AttributesRotate (const MbAxis3D &, double angle, MbRegTransform *=nullptr)
 Perform actions when rotating the attributes.

 
void AttributesCopy (MbAttributeContainer &other, MbRegDuplicate *=nullptr) const
 Perform actions when copying the attributes.

 
void AttributesMerge (MbAttributeContainer &other)
 Perform actions when merging the attributes.

 
void AttributesReplace (MbAttributeContainer &other)
 Perform actions when replacing the attributes.
 
void AttributesSplit (const std::vector< MbAttributeContainer * > &others)
 Perform actions when splitting the attributes.
 
void AttributesDelete ()
 Perform actions when deleting the attributes.
 
- Public Member Functions inherited from MbSyncItem
void Lock () const
 Switch lock on (locking happens only in parallel region).
 
void Unlock () const
 Switch lock off if locking has been set.
 

Protected Attributes

MbSurfacesurface
 Face surface (always not nullptr).
 
bool sameSense
 An attribute of coincidence between the face normal direction and the surface normal direction.
 
RPArray< MbLooploops
 Face boundaries (the first boundary should be external).
 
CacheManager< MbFaceAuxiliaryData > * cache
 Auxiliary data for the face.
 
- Protected Attributes inherited from MbTopologyItem
MbLabel label
 Temporary label for performing of operations.
 

Additional Inherited Members

- Static Public Member Functions inherited from MbAttributeContainer
static MbUserAttributeReduceUserAttrib (const MbExternalAttribute &)
 Convert user attribute to "system" one.
 
static MbExternalAttributeAdvanceUserAttrib (const MbUserAttribute &)
 Convert "system" attribute to user one.
 
- Protected Member Functions inherited from MbTopologyItem
 MbTopologyItem ()
 Constructor without parameters.
 
 MbTopologyItem (const MbTopologyItem &, MbRegDuplicate *)
 Constructor of duplicating.
 
- Protected Member Functions inherited from MbTopItem
 MbTopItem ()
 Constructor.
 
- Protected Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 
- Protected Member Functions inherited from MbAttributeContainer
 MbAttributeContainer (const MbAttributeContainer &, MbRegDuplicate *)
 Copy-constructor with the registrator.
 

Detailed Description

Face.

A face is connected finite piece of a surface with a normal direction.
A side of a face which is seen when looking towards a normal is called external side, other side is called internal side.
Sides of a surface MbSurface do not have equal rights with respect to normal direction, because one side of surface is always external and other is internal. In contrast to surface, it is possible to assign a normal direction for a face and thereby to assign an external and internal sides.
Face boundaries are described by loops MbLoop. A number of face loops is equal to a number of face boundaries. One loop is external, other loops are internal. Internal loops entirely lie inside the external loop. External loop of a face is oriented counterclockwise, but internal loops are oriented clockwise, when looking towards the chosen normal of a face.
Loops do not intersect each other and themselves.

If two loops of a face have a common point then this point in both loops should be a vertex of an edge.

Member Function Documentation

◆ Transform()

void MbFace::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = nullptr 
)
overridevirtual

Transform according to the matrix.

Transformation of an object according to the matrix. This object can be contained as pointer in several other objects for transformations. Registrar is used to prevent multiple transformation of this object. When transforming the object with registrator, the existence of the object inside the registrator is verified. If such object is absent, it is stored to the registrator and transformed, otherwise, a transformation of the object is not performed.

Parameters
[in]matr- A transformation matrix.
[in]iReg- Registrator.

Implements MbTopologyItem.

◆ Move()

void MbFace::Move ( const MbVector3D to,
MbRegTransform iReg = nullptr 
)
overridevirtual

Move along a vector.

Move an object along a vector. When transforming the object with registrator, the existence of the object inside the registrator is verified. If such object is absent, it is stored to the registrator and transformed, otherwise, a transformation of the object is not performed.

Parameters
[in]to- Translation vector.
[in]iReg- Registrator.

Implements MbTopologyItem.

◆ Rotate()

void MbFace::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = nullptr 
)
overridevirtual

Rotate around an axis.

Rotate an object at a given angle around an axis. When transforming the object with registrator, the existence of the object inside the registrator is verified. If such object is absent, it is stored to the registrator and transformed, otherwise, a transformation of the object is not performed.

Parameters
[in]axis- Rotation axis.
[in]angle- The rotation angle.
[in]iReg- Registrator.

Implements MbTopologyItem.

◆ Normal()

void MbFace::Normal ( double  surfaceU,
double  surfaceV,
MbVector3D normal 
) const

Get the face normal.

Parameters
[in]surfaceU- U-coordinate on the face's surface, in uv-area of the surface.
[in]surfaceV- V-coordinate on the face's surface, in uv-area of the surface.
[out]normal- Calculated face's normal at the given point.

◆ PartialReverse()

void MbFace::PartialReverse ( )

Change an orientation of a face.

Invert an orientation of edges in loop and invert a flag of face orientation.

◆ TotalReverse()

void MbFace::TotalReverse ( )

Change an orientation of a face.

Invert an orientation of edges in loop, swap pointers to a face on the left and to a face on the right in edges of loops, invert a flag of face orientation.

◆ PartialReverseLoopWithNeighbours()

void MbFace::PartialReverseLoopWithNeighbours ( size_t  index)

Invert an orientation of a loop with the given index.

Invert orientation of edges in loop with the given index. invert an orientation of corresponding edges in loops of adjacent faces, set the pointers of loop edges to the required faces.

◆ Salient()

ThreeStates MbFace::Salient ( ) const

Determine whether the face is convex.

Determine whether the face is convex.

Returns
ts_positive - the face is convex, ts_negative - the face is concave, ts_neutral - impossible to determine.

The documentation for this class was generated from the following file: