22361: EDF SMESH: Quadrangle (mapping) algorithm: faces with more than 4 edges

-  StdMeshers_FaceSide(const SMDS_MeshNode*       theNode,
-                      const gp_Pnt2d             thePnt2d,
-                      const StdMeshers_FaceSide* theSide);
+  StdMeshers_FaceSide(const StdMeshers_FaceSide*  theSide,
+                      const SMDS_MeshNode*        theNode,
+                      const gp_Pnt2d*             thePnt2d1,
+                      const gp_Pnt2d*             thePnt2d2=NULL,
+                      const Handle(Geom2d_Curve)& theC2d=NULL,
+                      const double                theUFirst=0.,
+                      const double                theULast=1.);
This commit is contained in:
eap 2013-11-22 13:14:08 +00:00
parent 199de1cfdb
commit 8093357296

View File

@ -202,30 +202,46 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace,
//================================================================================ //================================================================================
/*! /*!
* \brief Constructor of a side for vertex using data from other FaceSide * \brief Constructor of a side for vertex using data from other FaceSide
* \param theVertex - the vertex * \param theVertex - the vertex
* \param theSide - the side * \param theSide - the side
*/ */
//================================================================================ //================================================================================
StdMeshers_FaceSide::StdMeshers_FaceSide(const SMDS_MeshNode* theNode, StdMeshers_FaceSide::StdMeshers_FaceSide(const StdMeshers_FaceSide* theSide,
const gp_Pnt2d thePnt2d, const SMDS_MeshNode* theNode,
const StdMeshers_FaceSide* theSide) const gp_Pnt2d* thePnt2d1,
const gp_Pnt2d* thePnt2d2,
const Handle(Geom2d_Curve)& theC2d,
const double theUFirst,
const double theULast)
{ {
myC2d.resize(1); myC2d.push_back ( theC2d );
myFirst.push_back ( theUFirst );
myLast.push_back ( theULast );
myNormPar.push_back ( 1. );
myIsUniform.push_back( true );
myEdgeID.push_back ( 0 );
myLength = 0; myLength = 0;
myProxyMesh = theSide->myProxyMesh; myProxyMesh = theSide->myProxyMesh;
myDefaultPnt2d = thePnt2d; myDefaultPnt2d = *thePnt2d1;
myPoints = theSide->GetUVPtStruct();
myPoints = theSide->GetUVPtStruct(); myNbPonits = myPoints.size();
myNbPonits = myPoints.size(); myNbSegments = theSide->myNbSegments;
myNbSegments = theSide->myNbSegments; if ( thePnt2d2 )
std::vector<uvPtStruct>::iterator it = myPoints.begin(); for ( size_t i = 0; i < myPoints.size(); ++i )
for(; it!=myPoints.end(); it++) { {
(*it).u = thePnt2d.X(); double r = i / ( myPoints.size() - 1. );
(*it).v = thePnt2d.Y(); myPoints[i].u = (1-r) * thePnt2d1->X() + r * thePnt2d2->X();
(*it).y = 0.0; myPoints[i].v = (1-r) * thePnt2d1->Y() + r * thePnt2d2->Y();
(*it).node = theNode; myPoints[i].node = theNode;
} }
else
for ( size_t i = 0; i < myPoints.size(); ++i )
{
myPoints[i].u = thePnt2d1->X();
myPoints[i].v = thePnt2d1->Y();
myPoints[i].node = theNode;
}
} }
//================================================================================ //================================================================================