C3D Toolkit
Kernel - 117982, Vision - 2.9.2.2
|
Face. More...
#include <topology.h>
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 MbFace * | DataDuplicate (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 MbSurface & | GetSurface () const |
Get a surface of a face. | |
virtual MbSurface & | SetSurface () |
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? | |
MbLoop * | GetLoop (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. | |
MbLoop * | DetachLoop (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 ¬e, 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. | |
MbCurveEdge * | GetEdgeByIndex (size_t loopIndex, size_t edgeIndex) const |
Get an edge by the indices of a face loop and an edge in the loop. | |
const MbOrientedEdge * | GetOrientedEdge (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 MbOrientedEdge * | GetOrientedEdge (const MbCurveEdge &curveEdge) const |
Find an oriented edge by the edge of a face. Don't seek if an edge is a seam. | |
MbOrientedEdge * | SetOrientedEdge (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 MbVertex * | FindVertexByName (const MbName &) const |
Find vertex by name. | |
const MbCurveEdge * | FindEdgeByName (const MbName &) const |
Find edge by name. | |
const MbVertex * | FindVertexByHash (const SimpleName h) const |
Find vertex by hash of a name. | |
const MbCurveEdge * | FindEdgeByHash (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. | |
MbSurface * | GetSurfaceCurvesData (RPArray< MbContour > &contours) const |
Construct copy of surface and two-dimensional contours by loops for operations of extrusion and rotation of curves. | |
MbSurface * | GetSurfaceCurvesData (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 MbName & | GetName () const |
Get name of object. | |
MbName & | SetName () |
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. | |
MbAttribute * | AddAttribute (MbAttribute *attr, bool checkSame=true) |
Add attribute in container. More... | |
MbAttribute * | AddAttribute (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 MbAttribute * | GetSimpleAttribute (MbeAttributeType) const |
Get a simple attribute of a given subtype. | |
MbAttribute * | SetSimpleAttribute (MbeAttributeType) |
Get a simple attribute of a given subtype. | |
MbAttribute * | SetSimpleAttribute (MbAttribute *simpAttr) |
Set a simple attribute of a given subtype. | |
MbAttribute * | SetSimpleAttribute (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. | |
MbAttribute * | DetachSimpleAttribute (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 | |
MbSurface * | surface |
Face surface (always not nullptr). | |
bool | sameSense |
An attribute of coincidence between the face normal direction and the surface normal direction. | |
RPArray< MbLoop > | loops |
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 MbUserAttribute * | ReduceUserAttrib (const MbExternalAttribute &) |
Convert user attribute to "system" one. | |
static MbExternalAttribute * | AdvanceUserAttrib (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. | |
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.
|
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.
[in] | matr | - A transformation matrix. |
[in] | iReg | - Registrator. |
Implements MbTopologyItem.
|
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.
[in] | to | - Translation vector. |
[in] | iReg | - Registrator. |
Implements MbTopologyItem.
|
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.
[in] | axis | - Rotation axis. |
[in] | angle | - The rotation angle. |
[in] | iReg | - Registrator. |
Implements MbTopologyItem.
void MbFace::Normal | ( | double | surfaceU, |
double | surfaceV, | ||
MbVector3D & | normal | ||
) | const |
Get the face normal.
[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. |
void MbFace::PartialReverse | ( | ) |
Change an orientation of a face.
Invert an orientation of edges in loop and invert a flag of face orientation.
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.
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.
ThreeStates MbFace::Salient | ( | ) | const |
Determine whether the face is convex.
Determine whether the face is convex.