X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDRO_tests%2FTestShape.cxx;h=70ce0866aca0b77dbe89918a6da28062b0225556;hb=15aed67b5f26dad1f17035be35bcd570e947158c;hp=3cf4ea201cb6c14099f32aba13c8102ea212c56d;hpb=6527cd5d3063b2724b60b3f87ed1105244b74cb3;p=modules%2Fhydro.git diff --git a/src/HYDRO_tests/TestShape.cxx b/src/HYDRO_tests/TestShape.cxx index 3cf4ea20..70ce0866 100644 --- a/src/HYDRO_tests/TestShape.cxx +++ b/src/HYDRO_tests/TestShape.cxx @@ -27,7 +27,7 @@ #include #include -TopoDS_Edge Edge( const QList& theXYList, bool isClosed ) +TopoDS_Edge Edge2d( const QList& theXYList, bool isClosed ) { int n = theXYList.size()/2; Handle(TColgp_HArray1OfPnt) aPointsArray = new TColgp_HArray1OfPnt( 1, n ); @@ -50,14 +50,48 @@ TopoDS_Edge Edge( const QList& theXYList, bool isClosed ) return TopoDS_Edge(); } -TopoDS_Wire Wire( const QList& theXYList, bool isClosed ) +TopoDS_Wire Wire2d( const QList& theXYList, bool isClosed ) { - return BRepBuilderAPI_MakeWire( Edge( theXYList, isClosed ) ).Wire(); + return BRepBuilderAPI_MakeWire( Edge2d( theXYList, isClosed ) ).Wire(); } -TopoDS_Face Face( const QList& theXYList ) +TopoDS_Edge Edge3d( const QList& theXYZList, bool isClosed ) { - return BRepBuilderAPI_MakeFace( Wire( theXYList, true ), Standard_True ).Face(); + int n = theXYZList.size()/3; + Handle(TColgp_HArray1OfPnt) aPointsArray = new TColgp_HArray1OfPnt( 1, n ); + for( int i=1; i<=n; i++ ) + { + double x = theXYZList[3*i-3]; + double y = theXYZList[3*i-2]; + double z = theXYZList[3*i-1]; + gp_Pnt aPnt( x, y, z ); + aPointsArray->SetValue( i, aPnt ); + } + GeomAPI_Interpolate anInterpolator( aPointsArray, isClosed, 1E-3 ); + anInterpolator.Perform(); + bool aResult = anInterpolator.IsDone() == Standard_True; + if( aResult ) + { + Handle( Geom_BSplineCurve ) aCurve = anInterpolator.Curve(); + return BRepBuilderAPI_MakeEdge( aCurve ).Edge(); + } + else + return TopoDS_Edge(); +} + +TopoDS_Wire Wire3d( const QList& theXYZList, bool isClosed ) +{ + return BRepBuilderAPI_MakeWire( Edge3d( theXYZList, isClosed ) ).Wire(); +} + +TopoDS_Face Face2d( const QList& theXYList ) +{ + return BRepBuilderAPI_MakeFace( Wire2d( theXYList, true ), Standard_True ).Face(); +} + +TopoDS_Face Face3d( const QList& theXYZList ) +{ + return BRepBuilderAPI_MakeFace( Wire3d( theXYZList, true ), Standard_True ).Face(); } TopoDS_Wire WireCirc( const gp_Pnt& theCenter, double theRadius )