{}
//=======================================================================
-//function : AddTriangle
+//function : AddElement
//purpose :
//=======================================================================
-Standard_Integer Poly_Mesh::AddTriangle (const Poly_Triangle& theTriangle)
+Standard_Integer Poly_Mesh::AddElement (const Standard_Integer theN1,
+ const Standard_Integer theN2,
+ const Standard_Integer theN3)
{
- Standard_Integer anIndex = Poly_Triangulation::AddTriangle (theTriangle);
- return AddElement (Poly_Element (anIndex, 0));
+ Standard_Integer anIndex = Poly_Triangulation::AddTriangle ( Poly_Triangle(theN1, theN2, theN3) );
+ return addElement( Poly_Element(anIndex, 0) );
}
//=======================================================================
//purpose :
//=======================================================================
-Standard_Integer Poly_Mesh::AddElement (const Poly_Element& theElement)
+Standard_Integer Poly_Mesh::AddElement (const Standard_Integer theN1,
+ const Standard_Integer theN2,
+ const Standard_Integer theN3,
+ const Standard_Integer theN4)
{
- myElements.Append (theElement);
- if (theElement.Value (2) != 0)
- {
- myNbQuads++;
- }
- return myElements.Size();
+ Standard_Integer anIndex1 = Poly_Triangulation::AddTriangle ( Poly_Triangle(theN1, theN2, theN3) );
+ Standard_Integer anIndex2 = Poly_Triangulation::AddTriangle ( Poly_Triangle(theN1, theN3, theN4) );
+ return addElement( Poly_Element(anIndex1, anIndex2) );
}
//=======================================================================
myElements.SetValue (theIndex - 1, theElement);
}
+
+//=======================================================================
+//function : addElement
+//purpose :
+//=======================================================================
+
+Standard_Integer Poly_Mesh::addElement (const Poly_Element& theElement)
+{
+ myElements.Append (theElement);
+ if (theElement.Value (2) != 0)
+ {
+ myNbQuads++;
+ }
+ return myElements.Size();
+}
//! theHasUVNodes flag indicates whether 2D nodes will be associated with 3D ones, (i.e. to enable a 2D representation).
Standard_EXPORT Poly_Mesh (const Standard_Boolean theHasUVNodes = Standard_False);
- //! Adds triangle to the mesh.
+ //! Adds element to the mesh.
+ //! @param theN1 index of the first node.
+ //! @param theN2 index of the second node.
+ //! @param theN3 index of the third node.
//! @return index of the added element.
- Standard_EXPORT Standard_Integer AddTriangle (const Poly_Triangle& theTriangle) Standard_OVERRIDE;
+ Standard_EXPORT Standard_Integer AddElement (const Standard_Integer theN1,
+ const Standard_Integer theN2,
+ const Standard_Integer theN3);
//! Adds element to the mesh.
+ //! @param theN1 index of the first node.
+ //! @param theN2 index of the second node.
+ //! @param theN3 index of the third node.
+ //! @param theN4 index of the fourth node.
//! @return index of the added element.
- //! Raises exception if at least one of the element indices is less than 1 or greater than NbTriangles.
- Standard_EXPORT Standard_Integer AddElement (const Poly_Element& theElement);
+ Standard_EXPORT Standard_Integer AddElement (const Standard_Integer theN1,
+ const Standard_Integer theN2,
+ const Standard_Integer theN3,
+ const Standard_Integer theN4);
//! @return the number of elements for this mesh.
Standard_Integer NbElements() const { return myElements.Size(); }
//! Raises Standard_OutOfRange exception if theIndex is less than 1 or greater than NbElements.
Standard_EXPORT void SetElement (const Standard_Integer theIndex, const Poly_Element& theElement);
+protected:
+
+ //! Adds element to the mesh.
+ //! @param theElement element to add.
+ //! @return index of the added element.
+ Standard_EXPORT Standard_Integer addElement (const Poly_Element& theElement);
+
private:
NCollection_Vector<Poly_Element> myElements;