C3D Toolkit  Kernel - 109696, Vision - 2.4.0.76

Solid solid. More...

#include <solid.h>

+ Inheritance diagram for MbSolid:
+ Collaboration diagram for MbSolid:

Public Types

enum  MultiState { ms_Undefined = 0, ms_Single, ms_Multiple }
 The solid connection type. More...
 

Public Member Functions

 MbSolid (MbFaceShell *shell, MbCreator *creator)
 Constructor by shell and creator.
 
 MbSolid (MbFaceShell &shell, MbCreator &creator)
 Constructor by shell and creator.
 
 MbSolid (MbFaceShell &shell, RPArray< MbCreator > &creators, bool sameCreators, MbRegDuplicate *iReg)
 Constructor by shell and set of creators, flag of creators copying and registrator of objects duplicating.
 
 MbSolid (MbFaceShell &shell, c3d::CreatorsSPtrVector &creators, bool sameCreators, MbRegDuplicate *iReg)
 Constructor by shell and set of creators, flag of creators copying and registrator of objects duplicating.
 
 MbSolid (MbFaceShell &shell, const MbSolid &solid, MbCreator &creator)
 Constructor by shells, creator and solid which has creators.
 
 MbSolid (MbFaceShell &shell, const MbSolid &solid, MbCreator *creator)
 Constructor by shells, creator and solid which has creators.
 
virtual ~MbSolid ()
 Destructor.
 
virtual MbeSpaceType IsA () const
 Get the type of the object.
 
virtual MbSpaceItemDuplicate (MbRegDuplicate *iReg=NULL) const
 Create a copy of the object. More...
 
virtual void Transform (const MbMatrix3D &, MbRegTransform *iReg=NULL)
 Convert the object according to the matrix. More...
 
virtual void Move (const MbVector3D &, MbRegTransform *iReg=NULL)
 Move an object along a vector. More...
 
virtual void Rotate (const MbAxis3D &, double angle, MbRegTransform *iReg=NULL)
 Rotate an object around an axis at a given angle. More...
 
virtual bool IsSame (const MbSpaceItem &, double accuracy=LENGTH_EPSILON) const
 Determine whether an object is equal. More...
 
virtual bool IsSimilar (const MbSpaceItem &) const
 Determine whether an object is similar. More...
 
virtual bool SetEqual (const MbSpaceItem &)
 Make objects equal if they are similar. More...
 
virtual double DistanceToPoint (const MbCartPoint3D &) const
 Determine the distance to the point. More...
 
virtual void AddYourGabaritTo (MbCube &) const
 Expand sent bounding box (a.k.a. gabarit), so that it included the object. More...
 
virtual void Refresh ()
 Translate all the time (mutable) data objects in an inconsistent (initial) state.
 
virtual void CalculateMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const
 Build polygonal copy mesh. More...
 
virtual MbPropertyCreateProperty (MbePrompt) const
 Create your own property with the name.
 
virtual void GetProperties (MbProperties &)
 Outstanding properties of the object. More...
 
virtual void SetProperties (const MbProperties &)
 Change the properties of an object. More...
 
virtual void GetBasisItems (RPArray< MbSpaceItem > &)
 Outstanding reference objects in a container sent.
 
virtual void GetBasisPoints (MbControlData3D &) const
 Get control points of object.
 
virtual void SetBasisPoints (const MbControlData3D &)
 Change the object by control points.
 
virtual bool RebuildItem (MbeCopyMode copyMode, RPArray< MbSpaceItem > *items, IProgressIndicator *progInd)
 Reconstruct object according to the history tree. More...
 
virtual MbItemCreateMesh (const MbStepData &stepData, const MbFormNote &note, MbRegDuplicate *iReg) const
 Create polygonal object. More...
 
Functions of solid.
virtual void CalculateGabarit (MbCube &cube) const
 Calculate bounding box. More...
 
const MbCube GetCube () const
 Get bounding box. More...
 
virtual bool GetCreators (RPArray< MbCreator > &creators) const
 Add your own creators to the given array. More...
 
virtual bool GetCreators (c3d::CreatorsSPtrVector &creators) const
 Add your own creators to the given array. More...
 
void CalculateGrid (const MbStepData &stepData, MbMesh &mesh) const
 Create a polygonal copy of the solid and put its data to the given object. More...
 
void SetShell (MbFaceShell *shell)
 Replace the shell of the solid by the given one.
 
MbFaceShellDetachShell ()
 Detach the shell.
 
MbFaceShellGetShell () const
 Get the shell.
 
bool IsShellBuild () const
 Is there a shell?
 
void MakeRight ()
 Reinstall pointers to mating faces in edges.
 
bool IsRight () const
 Are the pointers in edges to the faces connected by them set correctly?
 
size_t GetFacesCount () const
 Get the count of faces.
 
template<class VerticesVector >
void GetVertices (VerticesVector &vertices) const
 Fill container by solid vertices.
 
template<class EdgesVector >
void GetEdges (EdgesVector &edges) const
 Fill container by oriented edges of the solid.
 
template<class VerticesVector , class EdgesVector >
void GetItems (VerticesVector &vertices, EdgesVector &edges) const
 Fill containers by vertices and edges of the solid.
 
template<class FacesVector >
void GetFaces (FacesVector &faces) const
 Fill container by solid faces.
 
template<class FacesSet >
void GetFacesSet (FacesSet &faces) const
 Fill container by solid faces.
 
void GetItems (RPArray< MbTopologyItem > &) const
 Fill container by vertices, edges and faces of the solid.
 
MbVertexGetVertex (size_t index) const
 Get vertex by its index.
 
MbCurveEdgeGetEdge (size_t index) const
 Get edge by its index.
 
MbFaceGetFace (size_t index) const
 Get face by its index.
 
size_t GetVertexIndex (const MbVertex &) const
 Get the vertex index.
 
size_t GetEdgeIndex (const MbCurveEdge &) const
 Get the edge index.
 
size_t GetFaceIndex (const MbFace &) const
 Get the face index.
 
size_t GetShellCount () const
 Get the count of connected shells of the solid.
 
bool Reverse ()
 Revert the solid - reorientation of the whole set of faces.
 
MbeItemLocation PointClassification (const MbCartPoint3D &p, double epsilon=Math::metricRegion) const
 Classify point. More...
 
MbeItemLocation SolidClassification (const MbSolid &solid, double epsilon=Math::metricRegion) const
 Classify solid. More...
 
bool FindFacesIndexByFaces (RPArray< MbFace > &faces, SArray< size_t > &indices) const
 Find indices of faces. More...
 
bool FindFacesIndexByEdges (RPArray< MbCurveEdge > &edges, SArray< MbEdgeFacesIndexes > &indices) const
 Find indices of edges and faces connected by them. More...
 
const MbVertexFindNearestVertex (const MbCartPoint3D &p) const
 Get the nearest vertex to point.
 
void FindEdgesForVertex (const MbVertex &vertex, RPArray< MbCurveEdge > &findEdges) const
 Find mating edges of the solid at the vertex. More...
 
void FindFacesForVertex (const MbVertex &vertex, RPArray< MbFace > &findFaces) const
 Find mating faces of the solid at the vertex. More...
 
bool FindEdgeNumbers (const MbCurveEdge &edge, size_t &faceN, size_t &loopN, size_t &edgeN) const
 Find a face index for the edge, loop index and edge index in the loop. More...
 
const MbVertexFindVertexByName (const MbName &) const
 Find vertex by name.
 
const MbCurveEdgeFindEdgeByName (const MbName &) const
 Find edge by name.
 
const MbFaceFindFaceByName (const MbName &) const
 Find face by name.
 
MbVertexFindVertexByName (const MbName &)
 Find vertex by name.
 
MbCurveEdgeFindEdgeByName (const MbName &)
 Find edge by name.
 
MbFaceFindFaceByName (const MbName &)
 Find face by name.
 
MbSNameMaker GetYourName () const
 Create name-maker of solid.
 
void SetOwnChangedThrough (MbeChangedType)
 Set flag of changes for all the faces, edges and vertices.
 
bool IsClosed () const
 Is solid closed (it has not boundary)?
 
bool IsMultiSolid () const
 Is a solid composed of several parts (is a multibody solid)?
 
bool SetMultiSolidState (bool ms, bool setDirectly=false) const
 Set flag of multibody with minimal checks. More...
 
void ResetMultiSolidState () const
 Reset flag of multibody solid.
 
MultiState GetMultiSolidState () const
 Get current state of multibody flag.
 
virtual void CalculateLocalGabarit (const MbMatrix3D &into, MbCube &cube) const
 Calculate bounding box relative to the local coordinate system which is given by the matrix 'matrToLocal ' of transformation to it.
 
void CalculateLocalGabarit (const MbPlacement3D &localPlace, MbCube &cube) const
 Calculate bounding box relative to the local coordinate system.
 
void BreakToBasisItem (size_t c, RPArray< MbSpaceItem > &s)
 Get the base objects of history tree.
 
void Math3DSelectSolid () const
 Assign the pointer to global variable Math::selectSolid = this (for debugging).
 
- Public Member Functions inherited from MbItem
 MbItem ()
 Constructor.
 
virtual ~MbItem ()
 Destructor.
 
virtual MbeSpaceType Type () const
 Get the group object type.
 
virtual MbeSpaceType Family () const
 Get family of objects.
 
virtual MbeImplicationType ImplicationType () const
 Get attribute container type.
 
virtual void GetBasisPoints (MbControlData &) const
 
virtual void SetBasisPoints (const MbControlData &)
 
virtual bool GetPlacement (MbPlacement3D &p) const
 Get the coordinate system of an item if it is exist. More...
 
virtual bool SetPlacement (const MbPlacement3D &)
 Set the coordinate system of an item if it is possible.
 
virtual bool AddYourMesh (const MbStepData &stepData, const MbFormNote &note, MbMesh &mesh) const
 Add polygonal object. More...
 
virtual MbItemCutMesh (const MbPlacement3D &cutPlace, double distance) const
 Cut the polygonal object by one or two parallel planes. More...
 
virtual bool NearestMesh (MbeSpaceType sType, MbeTopologyType tType, MbePlaneType pType, const MbAxis3D &axis, double maxDistance, bool gridPriority, double &t, double &dMin, MbItem *&find, SimpleName &findName, MbRefItem *&element, SimpleName &elementName, MbPath &path, MbMatrix3D &from) const
 Find the nearest object or name of the nearest object. More...
 
virtual bool GetItems (MbeSpaceType type, const MbMatrix3D &from, RPArray< MbItem > &items, SArray< MbMatrix3D > &matrs)
 Get all objects by type. More...
 
virtual bool GetUniqItems (MbeSpaceType type, CSSArray< const MbItem *> &items) const
 Get all unique objects by type. More...
 
virtual const MbItemGetItemByPath (const MbPath &path, size_t ind, MbMatrix3D &from, size_t currInd=0) const
 Get the object by its path. More...
 
virtual const MbItemFindItem (const MbSpaceItem *s, MbPath &path, MbMatrix3D &from) const
 Find object by geometric object. More...
 
virtual const MbItemFindItem (const MbPlaneItem *s, MbPath &path, MbMatrix3D &from) const
 Find object by geometric object. More...
 
virtual const MbItemFindItem (const MbItem *s, MbPath &path, MbMatrix3D &from) const
 Find object by object of geometric model. More...
 
virtual const MbItemGetItemByName (SimpleName n, MbPath &path, MbMatrix3D &from) const
 Find object by name. More...
 
virtual void TransformSelected (const MbMatrix3D &matr, MbRegTransform *iReg=NULL)
 Transform selected object according to the matrix. More...
 
virtual void MoveSelected (const MbVector3D &to, MbRegTransform *iReg=NULL)
 Move selected object along a vector. More...
 
virtual void RotateSelected (const MbAxis3D &axis, double angle, MbRegTransform *iReg=NULL)
 Rotate selected object by a given angle about an axis. More...
 
virtual bool GetMatrixFrom (MbMatrix3D &from) const
 Get transform matrix from local coordinate system of object.
 
virtual bool GetMatrixInto (MbMatrix3D &into) const
 Get transform matrix into local coordinate system of object.
 
void Assign (const MbItem &other)
 Copy creators and attributes.
 
void CopyItemName (const MbItem &other)
 Copy the name of an object.
 
SimpleName GetItemName () const
 Get name of object.
 
void SetItemName (SimpleName n)
 Set name of the object.
 
bool IsAttributeEqual (int attribute)
 Whether a sign attribute matches an object?
 
- Public Member Functions inherited from MbSpaceItem
virtual ~MbSpaceItem ()
 Destructor.
 
void PrepareWrite () const
 Register object. More...
 
virtual MbeRefType RefType () const
 Get a registration type (for copying, duplication).
 
virtual bool IsFamilyRegistrable () const
 Whether the object belongs to a registrable family.
 
void CalculateWire (const MbStepData &stepData, MbMesh &mesh) const
 
void CalculateWire (double sag, MbMesh &mesh) const
 
- 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.
 
- Public Member Functions inherited from MbRefItem
 MbRefItem ()
 Constructor without parameters.
 
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 MbTransactions
 MbTransactions ()
 Constructor without parameters.
 
template<class Creators >
 MbTransactions (const Creators &creators)
 Constructor by creators.
 
virtual ~MbTransactions ()
 Destructor.
 
void CreatorsCopy (MbTransactions &other, MbRegDuplicate *iReg=NULL) const
 Clear the given history tree and copy the creators to it.
 
void CreatorsAssign (const MbTransactions &other)
 Clear the history tree and copy the creators from the given history tree to it.
 
bool SetCreatorsEqual (const MbTransactions &other)
 Make the creators equal to the creators from the given history tree if the creators are similar.
 
bool IsCreatorsSimilar (const MbTransactions &other) const
 Check whether the corresponding creators of the given history tree are similar.
 
void CreatorsTransform (const MbMatrix3D &, MbRegTransform *=NULL)
 Transform the creators according to the matrix.
 
void CreatorsMove (const MbVector3D &, MbRegTransform *=NULL)
 Move creators along the vector.
 
void CreatorsRotate (const MbAxis3D &, double angle, MbRegTransform *=NULL)
 Rotate the creators about the axis by the given angle.
 
size_t GetCreatorsCount () const
 Get the creators count.
 
void Reserve (size_t count)
 Reserve space for creators.
 
const MbCreatorGetCreator (size_t ind) const
 Get constructor by its index.
 
MbCreatorSetCreator (size_t ind)
 Get constructor by its index with possibility of editing.
 
bool GetCreatorsCopies (RPArray< MbCreator > &) const
 Add copies of your own creators to the given array.
 
bool GetCreatorsCopies (c3d::CreatorsSPtrVector &) const
 Add copies of your own creators to the given array.
 
size_t FindCreator (const MbCreator *creator)
 Find the number of creators in the history tree or return SYS_MAX_T if it is absent.
 
bool AddCreator (const MbCreator &, bool addSame=false)
 Add the constructor (addSame = false) or its copy (addSame = true) to the history tree.
 
bool AddCreator (const MbCreator *, bool addSame=false)
 Add the constructor (addSame = false) or its copy (addSame = true) to the history tree.
 
void AddCreators (const RPArray< MbCreator > &)
 Add creators to the history tree.
 
MbCreatorDetachCreator (size_t ind)
 Remove the constructor with the specified index from the history tree and return it.
 
bool DeleteCreator (size_t ind)
 Delete the constructor with the specified index and remove it from the history tree.
 
void DeleteCreators ()
 Delete all the creators and clear the history tree.
 
int GetCreatorStatus (size_t ind) const
 Get the status of creator with the specified index.
 
bool SetCreatorStatus (size_t ind, MbeProcessState)
 Set status to creator with the specified index.
 
size_t GetActiveCreatorsCount () const
 Get the active creators count.
 
bool SetActiveCreatorsCount (size_t activeCount)
 Set the count of active creators from the beginning to the given index.
 
void BreakCreatorsToBasisItem (size_t c, RPArray< MbSpaceItem > &)
 Get the object created by the specified number of creators and the basis items of the other creators.
 
void GetCreatorsBasisItems (RPArray< MbSpaceItem > &)
 Get the basis items of the creators.
 
void GetCreatorsBasisPoints (MbControlData3D &) const
 Get the basis points of the creators.
 
void SetCreatorsBasisPoints (const MbControlData3D &)
 Change the object by control points.
 
void GetProperties (MbProperties &, bool sameCreators=false)
 Get properties of the creators (using original creators or their copies).
 
void SetProperties (const MbProperties &)
 Set properties of the creators.
 
void CreatorsRead (reader &in)
 Read creators from the stream.
 
void CreatorsWrite (writer &out) const
 Write creators to the stream.
 
- 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)
 Set visual properties of the object.
 
bool GetVisual (float &a, float &d, float &sp, float &sh, float &t, float &e) 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.
 
void RemoveAttributes ()
 Delete all attributes from container.
 
MbAttributeAddAttribute (MbAttribute *, bool checkSame=true)
 Add attribute in container.
 
MbAttributeAddAttribute (const MbAttribute &, bool checkSame=true)
 Add attribute in container (always copies the attribute).
 
void GetAttributes (c3d::AttrVector &, MbeAttributeType aFamily, MbeAttributeType subType) const
 Get attributes of a given family.
 
void GetAttributes (c3d::AttrVector &, MbeAttributeType aType) const
 Get attributes of a given type.
 
void GetCommonAttributes (c3d::AttrVector &, const c3d::string_t &samplePrompt, MbeAttributeType subType=at_Undefined) 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 *=NULL)
 Perform actions when transforming the attributes.
 
void AttributesMove (const MbVector3D &, MbRegTransform *=NULL)
 Perform actions when moving the attributes.
 
void AttributesRotate (const MbAxis3D &, double angle, MbRegTransform *=NULL)
 Perform actions when rotating the attributes.
 
void AttributesCopy (MbAttributeContainer &other, MbRegDuplicate *=NULL) 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

MbFaceShellouter
 Shell of solid.
 
MultiState multiState
 The solid connection type.
 

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 MbItem
 MbItem (const MbItem &, MbRegDuplicate *)
 Copy-constructor with duplication registrator.
 
void LockItem () const
 Catch object if multithreading mode is on.
 
void UnlockItem () const
 Release object if multithreading mode is on.
 
- Protected Member Functions inherited from MbSpaceItem
 MbSpaceItem ()
 Default constructor.
 
- Protected Member Functions inherited from MbTransactions
 MbTransactions (const MbTransactions &, MbRegDuplicate *iReg)
 Copy-constructor with registrator.
 
- Protected Member Functions inherited from MbAttributeContainer
 MbAttributeContainer (const MbAttributeContainer &, MbRegDuplicate *)
 Copy-constructor with the registrator.
 

Detailed Description

Solid solid.

Solid solid or solid is object of geometric model. Solid consists of face set MbFaceShell.
Data structure of solid contains pointer to face set outer and type of solid connectivity multiState. The solid can describe one or more sets of points. Connection type multiState informs that the solid describes one connected set of points or that the solid describes some connected sets of points and can be split into multiple solids.
Face set of solid outer->faceSet describes one or some homogeneous shells. Depending on the attribute of outer->closed shell closedness the solid can describe two principally different sets of points.
If all the shells of solid are closed, then the solid describes a set of points which are located on
the inside of one external and several internal shells located inside outer shell in combination with points of these shells.
If shells of solid are closed, then the solid describes a set of points belonging to the faces of these shells.
Depending on the closedness of shells the solid is called closed or non-closed. In the special case when all the shells are closed, the solid is closed. In the general case shells of solid can be unclosed, the solid is unclosed.
Closed solid and unclosed solid operate with different sets of points and this difference affects on boolean other operations with solids.
Certain set of actions can be performed with solids. These actions are recorded to history tree of solid, elements of which are creators of shells MbCreator.
Solid can have attributes MbAttribute.

Member Enumeration Documentation

◆ MultiState

The solid connection type.

The solid can consist of one or several connected sets of points.

Enumerator
ms_Undefined 

Connectivity of solid is undefined.

ms_Single 

The solid describes one connected set of points.

ms_Multiple 

The solid describes several connected set of points and can be split into multiple connected parts.

Member Function Documentation

◆ Duplicate()

virtual MbSpaceItem& MbSolid::Duplicate ( MbRegDuplicate iReg = NULL) const
virtual

Create a copy of the object.

Create a copy of an object using the registrator. Registrator is used to prevent multiple copy of the object. If the object contains references to the other objects, then nested objects are copied as well. It is allowed not to pass registrator into the function. Then new copy of object will be created. While copying of single object or set of not connected objects, it is allowed not to use registrator. Registrator should be used if it is required to copy several connected objects. It is possible, that objects connection is based on the references to common objects. Then, while copying without using of registrator, it is possible to obtain set of copies, that contain references to the different copies of the same nested object, that leads to loss of connection between copies.

Parameters
[in]iReg- Registrator.
Returns
A copy of the object.

Implements MbItem.

◆ Transform()

virtual void MbSolid::Transform ( const MbMatrix3D matr,
MbRegTransform iReg = NULL 
)
virtual

Convert the object according to the matrix.

Convert the original object according to the matrix using the registrator. If object contains references to the other geometric objects, then nested objects are transformed according to the matrix. Registrator is needed to prevent multiple object copying. It is allowed to use function without registrator, if it is needed to transform single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be transformed.

Parameters
[in]matr- Transformation matrix.
[in]iReg- Registrator.

Implements MbItem.

◆ Move()

virtual void MbSolid::Move ( const MbVector3D to,
MbRegTransform iReg = NULL 
)
virtual

Move an object along a vector.

Move an object along a geometric vector using the registrator. If object contains references to the other geometric objects then the move operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be moved.

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

Implements MbItem.

◆ Rotate()

virtual void MbSolid::Rotate ( const MbAxis3D axis,
double  angle,
MbRegTransform iReg = NULL 
)
virtual

Rotate an object around an axis at a given angle.

Rotate an object around an axis at a given angle with the registrator. If object contains references to the other geometric objects then the rotation operation is applied to the nested objects. Registrator is needed to prevent multiple copying of the object. It is allowed to use function without registrator, if it is needed to transform a single object. If it is needed to transform a set of connected objects, then one should use registrator to prevent repeating transformation of nested objects, because of the possible situation when several objects contain references to the same common objects, that require to be rotated.

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

Implements MbItem.

◆ IsSame()

virtual bool MbSolid::IsSame ( const MbSpaceItem other,
double  accuracy = LENGTH_EPSILON 
) const
virtual

Determine whether an object is equal.

Still considered objects of the same type, all data is the same (equal).

Parameters
[in]item- The object to compare.
[in]accuracy- The accuracy to compare.
Returns
Whether the objects are equal.

Implements MbItem.

◆ IsSimilar()

virtual bool MbSolid::IsSimilar ( const MbSpaceItem item) const
virtual

Determine whether an object is similar.

Such are considered the same objects whose data are similar.

Parameters
[in]item- The object to compare.
Returns
Whether the objects are similar.

Reimplemented from MbSpaceItem.

◆ SetEqual()

virtual bool MbSolid::SetEqual ( const MbSpaceItem item)
virtual

Make objects equal if they are similar.

You can still make only a similar objects.

Parameters
[in]item- The object to initialize.
Returns
Object is changed.

Implements MbItem.

◆ DistanceToPoint()

virtual double MbSolid::DistanceToPoint ( const MbCartPoint3D point) const
virtual

Determine the distance to the point.

Determine the distance to the point.

Parameters
[in]point- Point.
Returns
Distance to point

Implements MbItem.

◆ AddYourGabaritTo()

virtual void MbSolid::AddYourGabaritTo ( MbCube cube) const
virtual

Expand sent bounding box (a.k.a. gabarit), so that it included the object.

Expand sent bounding box, so that it included the object.

Parameters
[in,out]cube- The bounding box to expand.

Implements MbItem.

◆ CalculateMesh()

virtual void MbSolid::CalculateMesh ( const MbStepData stepData,
const MbFormNote note,
MbMesh mesh 
) const
virtual

Build polygonal copy mesh.

Build a polygonal copy of the object that is represented by polygons or/and fasets.

Parameters
[in]stepData- Data for еру step calculation for polygonal object.
[in]note- Way for polygonal object constructing.
[in,out]mesh- The builded polygonal object.

Implements MbItem.

◆ GetProperties()

virtual void MbSolid::GetProperties ( MbProperties properties)
virtual

Outstanding properties of the object.

Issue internal data (properties) of the object for viewing and modification.

Parameters
[in]properties- Container for the internal data of the object.

Reimplemented from MbItem.

◆ SetProperties()

virtual void MbSolid::SetProperties ( const MbProperties properties)
virtual

Change the properties of an object.

Changing the internal data (properties) of the object you are copying the corresponding values from the sent object.

Parameters
[in]properties- Container for the internal data of the object.

Reimplemented from MbItem.

◆ RebuildItem()

virtual bool MbSolid::RebuildItem ( MbeCopyMode  sameShell,
RPArray< MbSpaceItem > *  items,
IProgressIndicator progInd 
)
virtual

Reconstruct object according to the history tree.

Create object by the history tree.

Parameters
[in]sameShell- Whether to perform complete copying of elements while constructing.
[out]items- Container for the elements of not performed constructions (can be NULL).
Returns
Whether an object is constructed.

Reimplemented from MbItem.

◆ CreateMesh()

virtual MbItem* MbSolid::CreateMesh ( const MbStepData stepData,
const MbFormNote note,
MbRegDuplicate iReg 
) const
virtual

Create polygonal object.

Create a polygonal object - a polygonal copy of the given object.

Parameters
[in]stepData- Data for step calculation during triangulation.
[in]note- Way for polygonal object constructing.
Returns
Created polygonal object.

Implements MbItem.

◆ CalculateGabarit()

virtual void MbSolid::CalculateGabarit ( MbCube cube) const
virtual

Calculate bounding box.

Calculate bounding box of solid.

Parameters
[out]cube- Calculated bounding box.

◆ GetCube()

const MbCube MbSolid::GetCube ( ) const

Get bounding box.

Get bounding box of solid.

Returns
Bounding box.

◆ GetCreators() [1/2]

virtual bool MbSolid::GetCreators ( RPArray< MbCreator > &  creators) const
virtual

Add your own creators to the given array.

If there are no creators, then creates a creator without history and adds it to the given container and to empty history tree.

Parameters
[out]creators- Container for adding of its creators.
Returns
Whether creators are added.

Reimplemented from MbTransactions.

◆ GetCreators() [2/2]

virtual bool MbSolid::GetCreators ( c3d::CreatorsSPtrVector &  creators) const
virtual

Add your own creators to the given array.

If there are no creators, then creates a creator without history and adds it to the given container and to empty history tree.

Parameters
[out]creators- Container for adding of its creators.
Returns
Whether creators are added.

Reimplemented from MbTransactions.

◆ CalculateGrid()

void MbSolid::CalculateGrid ( const MbStepData stepData,
MbMesh mesh 
) const

Create a polygonal copy of the solid and put its data to the given object.

Polygonal copy of the solid is created only by triangulating the faces.

Parameters
[in]stepData- Data for step calculation during triangulation.
[out]mesh- Polygonal copy of the object.

◆ PointClassification()

MbeItemLocation MbSolid::PointClassification ( const MbCartPoint3D p,
double  epsilon = Math::metricRegion 
) const

Classify point.

Classification consists in determining the point position relative to the solid.

Parameters
[in]p- Classified point.
[in]epsilon- Classification tolerance.
Returns
iloc_InItem (+1) - Point is inside the solid.
iloc_OutOfItem (-1) - Point is outside the solid.
iloc_OnItem ( 0) - Point is on the surface of the solid.

◆ SolidClassification()

MbeItemLocation MbSolid::SolidClassification ( const MbSolid solid,
double  epsilon = Math::metricRegion 
) const

Classify solid.

Classification consists in determining a solid position relative to the this solid.

Parameters
[in]solid- Classified solid.
[in]epsilon- Classification tolerance.
Returns
iloc_OutOfItem (-1) - Classified solid is outside the this solid.
iloc_OnItem ( 0) - Classified solid intersects the this solid.
iloc_InItem (+1) - Classified solid is inside the this solid.
iloc_ByItem (+2) - This solid is inside the classified solid.
iloc_Undefined (-3) - Solid is not classified.

◆ FindFacesIndexByFaces()

bool MbSolid::FindFacesIndexByFaces ( RPArray< MbFace > &  faces,
SArray< size_t > &  indices 
) const

Find indices of faces.

Find indices of faces and fill the second container in accordance with the first.

Parameters
[in]faces- A set of faces.
[out]indices- Found set of indices of these faces in the solid.
Returns
Whether all the indices are found?

◆ FindFacesIndexByEdges()

bool MbSolid::FindFacesIndexByEdges ( RPArray< MbCurveEdge > &  edges,
SArray< MbEdgeFacesIndexes > &  indices 
) const

Find indices of edges and faces connected by them.

Find indices of edges and fill the second container in accordance with the first.

Parameters
[in]edges- A set of edges.
[out]indices- Found set of combined indices of edges and faces connected by them.
Returns
Whether indices are found?

◆ FindEdgesForVertex()

void MbSolid::FindEdgesForVertex ( const MbVertex vertex,
RPArray< MbCurveEdge > &  findEdges 
) const

Find mating edges of the solid at the vertex.

Find edges of the solid for which this vertex is start or end.

Parameters
[in]vertex- Vertex.
[out]findEdges- Mating edges at the vertex.

◆ FindFacesForVertex()

void MbSolid::FindFacesForVertex ( const MbVertex vertex,
RPArray< MbFace > &  findFaces 
) const

Find mating faces of the solid at the vertex.

Find edges of the solid for which this vertex is end.

Parameters
[in]vertex- Vertex.
[out]findFaces- Mating faces at the vertex.

◆ FindEdgeNumbers()

bool MbSolid::FindEdgeNumbers ( const MbCurveEdge edge,
size_t &  faceN,
size_t &  loopN,
size_t &  edgeN 
) const

Find a face index for the edge, loop index and edge index in the loop.

Find face index for the edge, loop index and edge index in the loop. If the indices are not found, then indices remain the same.

Parameters
[in]edge- Edge.
[out]faceN- Found face index.
[out]loopN- Found index of face loop.
[out]edgeN- Found index of the edge in the loop.
Returns
Whether indices are found?

◆ SetMultiSolidState()

bool MbSolid::SetMultiSolidState ( bool  ms,
bool  setDirectly = false 
) const

Set flag of multibody with minimal checks.

Set flag of multibody with minimal checks. Improper flag setting can lead to unpredictable results after operations with the solid.

Parameters
[in]ms- Assumed that solid is multibody if ms==true.
[in]setDirectly- Set without any checks.
Returns
Whether flag was set?

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