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

@ -207,24 +207,40 @@ StdMeshers_FaceSide::StdMeshers_FaceSide(const TopoDS_Face& theFace,
*/ */
//================================================================================ //================================================================================
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;
std::vector<uvPtStruct>::iterator it = myPoints.begin(); if ( thePnt2d2 )
for(; it!=myPoints.end(); it++) { for ( size_t i = 0; i < myPoints.size(); ++i )
(*it).u = thePnt2d.X(); {
(*it).v = thePnt2d.Y(); double r = i / ( myPoints.size() - 1. );
(*it).y = 0.0; myPoints[i].u = (1-r) * thePnt2d1->X() + r * thePnt2d2->X();
(*it).node = theNode; myPoints[i].v = (1-r) * thePnt2d1->Y() + r * thePnt2d2->Y();
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;
} }
} }