26 #ifndef _SMESH_Prism_3D_HXX_
27 #define _SMESH_Prism_3D_HXX_
43 #include <Adaptor3d_Curve.hxx>
44 #include <Adaptor3d_Surface.hxx>
45 #include <Adaptor2d_Curve2d.hxx>
46 #include <BRepAdaptor_Surface.hxx>
47 #include <TopTools_IndexedMapOfOrientedShape.hxx>
57 typedef std::vector<const SMDS_MeshNode* >
TNodeColumn;
129 int VerticalSize()
const {
return myParam2ColumnMaps[0].begin()->second.size(); }
149 std::pair< TParam2ColumnMap*, bool > & col_frw =
150 myShapeIndex2ColumnMap[ baseEdgeID ];
151 isReverse = !col_frw.second;
152 return * col_frw.first;
173 {
return Mesh()->GetSubMesh( Shape( shapeID )); }
181 {
return SubMesh(shapeID)->GetSubMeshDS(); }
189 {
return myShapeIDMap( shapeID ); }
197 {
return myShapeIDMap.FindIndex( shape ); }
209 const TopoDS_Edge & bottomEdge,
210 const int sideFaceID);
222 const std::list< TopoDS_Edge >& bottomEdges,
223 std::list< TopoDS_Face >& wallFaces);
244 std::vector< std::pair< double, double> >
myParams;
251 const TopoDS_Face& face,
252 const TopoDS_Edge& baseEdge,
254 const double first = 0.0,
255 const double last = 1.0);
256 TSideFace(
const std::vector< TSideFace* >& components,
257 const std::vector< std::pair< double, double> > & params);
260 bool IsComplex()
const
261 {
return ( NbComponents() > 0 || myParams[0].first != 0. || myParams[0].second != 1. ); }
265 {
return myHelper->GetNodeUV( F, n ); }
266 const TopoDS_Edge &
BaseEdge()
const {
return myBaseEdge; }
268 if ( NbComponents() )
return GetComponent(0)->GetColumns()->begin()->second.size();
269 else return GetColumns()->begin()->second.size(); }
274 {
if ( myComponents[i] )
delete myComponents[i]; myComponents[i]=c; }
275 TSideFace* GetComponent(
const double U,
double& localU)
const;
280 Adaptor2d_Curve2d* HorizPCurve(
const bool isTop,
const TopoDS_Face& horFace)
const;
283 TopoDS_Edge GetEdge(
const int edge )
const;
286 gp_Pnt Value(
const Standard_Real U,
const Standard_Real V)
const;
299 gp_Pnt Value(
const Standard_Real U)
const;
315 :mySide(sideFace), myV( isTop ? 1.0 : 0.0 ) {}
316 gp_Pnt Value(
const Standard_Real U)
const;
334 const TopoDS_Face& horFace)
335 : mySide(sideFace), myFace(horFace), myZ(isTop ? mySide->ColumnHeight() - 1 : 0 ) {}
336 gp_Pnt2d Value(
const Standard_Real U)
const;
359 return myError->IsOK();
400 static void AddPrisms( std::vector<const TNodeColumn*> & nodeColumns,
411 bool assocOrProjBottom2Top();
418 bool projectBottomToTop();
426 bool setFaceAndEdgesXYZ(
const int faceID,
const gp_XYZ& params,
int z );