X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FGeometryTest%2FGeometryTest_API2dCommands.cxx;h=45fd7d72adf3ca8c3447e9f8681d146486367039;hb=98ae54f728a7ed99c2b4e4d5fc06488a3ccb2ddd;hpb=c1197a157530359ec94443c53bcd32a48b3e0b18 diff --git a/src/GeometryTest/GeometryTest_API2dCommands.cxx b/src/GeometryTest/GeometryTest_API2dCommands.cxx deleted file mode 100644 index 45fd7d72ad..0000000000 --- a/src/GeometryTest/GeometryTest_API2dCommands.cxx +++ /dev/null @@ -1,287 +0,0 @@ -// Created on: 1995-01-11 -// Created by: Remi LEQUETTE -// Copyright (c) 1995-1999 Matra Datavision -// Copyright (c) 1999-2014 OPEN CASCADE SAS -// -// This file is part of Open CASCADE Technology software library. -// -// This library is free software; you can redistribute it and/or modify it under -// the terms of the GNU Lesser General Public License version 2.1 as published -// by the Free Software Foundation, with special exception defined in the file -// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT -// distribution for complete text of the license and disclaimer of any warranty. -// -// Alternatively, this file may be used under the terms of Open CASCADE -// commercial license or contractual agreement. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#ifdef _WIN32 -Standard_IMPORT Draw_Viewer dout; -#endif - -//======================================================================= -//function : proj -//purpose : -//======================================================================= - -static Standard_Integer proj (Draw_Interpretor& di, Standard_Integer n, const char** a) -{ - if ( n < 4) return 1; - - gp_Pnt2d P(Draw::Atof(a[2]),Draw::Atof(a[3])); - - char name[100]; - - Handle(Geom2d_Curve) GC = DrawTrSurf::GetCurve2d(a[1]); - - if (GC.IsNull()) - return 1; - - Geom2dAPI_ProjectPointOnCurve proj(P,GC,GC->FirstParameter(), - GC->LastParameter()); - - for ( Standard_Integer i = 1; i <= proj.NbPoints(); i++) { - gp_Pnt2d P1 = proj.Point(i); - Handle(Geom2d_Line) L = new Geom2d_Line(P,gp_Vec2d(P,P1)); - Handle(Geom2d_TrimmedCurve) CT = - new Geom2d_TrimmedCurve(L, 0., P.Distance(P1)); - Sprintf(name,"%s%d","ext_",i); - char* temp = name; // portage WNT - DrawTrSurf::Set(temp, CT); - di << name << " "; - } - - return 0; -} - -//======================================================================= -//function : appro -//purpose : -//======================================================================= - -static Standard_Integer appro(Draw_Interpretor& di, Standard_Integer n, const char** a) -{ - // Approximation et interpolation 2d - - // 2dappro - // - affiche la tolerance - // 2dappro tol - // - change la tolerance - // 2dappro result nbpoint - // - saisie interactive - // 2dappro result nbpoint curve - // - calcule des points sur la courbe - // 2dappro result nbpoint x1 y1 x2 y2 .. - // - tableau de points - // 2dappro result nbpoint x1 dx y1 y2 .. - // - tableau de points (x1,y1) (x1+dx,y2) ... avec x = t - - - static Standard_Real Tol2d = 1.e-6; - - if (n < 3) { - if (n == 2) - Tol2d = Draw::Atof(a[1]); - - di << "Tolerance for 2d approx : "<< Tol2d << "\n"; - return 0; - } - - - Standard_Integer i, Nb = Draw::Atoi(a[2]); - - Standard_Boolean hasPoints = Standard_True; - TColgp_Array1OfPnt2d Points(1, Nb); - TColStd_Array1OfReal YValues(1,Nb); - Standard_Real X0=0,DX=0; - - Handle(Draw_Marker2D) mark; - - if (n == 3) { - // saisie interactive - Standard_Integer id,XX,YY,b; - dout.Select(id,XX,YY,b); - Standard_Real zoom = dout.Zoom(id); - - Points(1) = gp_Pnt2d( ((Standard_Real)XX)/zoom, - ((Standard_Real)YY)/zoom ); - - mark = new Draw_Marker2D( Points(1), Draw_X, Draw_vert); - - dout << mark; - - for (Standard_Integer j = 2; j<=Nb; j++) { - dout.Select(id,XX,YY,b); - Points(j) = gp_Pnt2d( ((Standard_Real)XX)/zoom, - ((Standard_Real)YY)/zoom ); - mark = new Draw_Marker2D( Points(j), Draw_X, Draw_vert); - dout << mark; - } - } - else { - if ( n == 4) { - // points sur courbe - Handle(Geom2d_Curve) GC = DrawTrSurf::GetCurve2d(a[3]); - if ( GC.IsNull()) - return 1; - - Standard_Real U, U1, U2; - U1 = GC->FirstParameter(); - U2 = GC->LastParameter(); - Standard_Real Delta = ( U2 - U1) / (Nb-1); - for ( i = 1 ; i <= Nb; i++) { - U = U1 + (i-1) * Delta; - Points(i) = GC->Value(U); - } - } - - else { - // test points ou ordonnees - hasPoints = Standard_False; - Standard_Integer nc = n - 3; - if (nc == 2 * Nb) { - // points - nc = 3; - for (i = 1; i <= Nb; i++) { - Points(i).SetCoord(Draw::Atof(a[nc]),Draw::Atof(a[nc+1])); - nc += 2; - } - } - else if (nc - 2 == Nb) { - // YValues - nc = 5; - X0 = Draw::Atof(a[3]); - DX = Draw::Atof(a[4]); - for (i = 1; i <= Nb; i++) { - YValues(i) = Draw::Atof(a[nc]); - Points(i).SetCoord(X0+(i-1)*DX,YValues(i)); - nc++; - } - } - else - return 1; - } - // display the points - for ( i = 1 ; i <= Nb; i++) { - mark = new Draw_Marker2D( Points(i), Draw_X, Draw_vert); - dout << mark; - } - } - dout.Flush(); - Standard_Integer Dmin = 3; - Standard_Integer Dmax = 8; - - Handle(Geom2d_BSplineCurve) TheCurve; - if (hasPoints) - TheCurve = Geom2dAPI_PointsToBSpline(Points,Dmin,Dmax,GeomAbs_C2,Tol2d); - else - TheCurve = Geom2dAPI_PointsToBSpline(YValues,X0,DX,Dmin,Dmax,GeomAbs_C2,Tol2d); - - DrawTrSurf::Set(a[1], TheCurve); - di << a[1]; - - return 0; - -} - -//======================================================================= -//function : intersect -//purpose : -//======================================================================= - -static Standard_Integer intersect(Draw_Interpretor& /*di*/, Standard_Integer n, const char** a) -{ - if( n < 2) - return 1; - - Handle(Geom2d_Curve) C1 = DrawTrSurf::GetCurve2d(a[1]); - if ( C1.IsNull()) - return 1; - - Standard_Real Tol = 0.001; - Geom2dAPI_InterCurveCurve Intersector; - - Handle(Geom2d_Curve) C2; - if ( n == 3) { - C2 = DrawTrSurf::GetCurve2d(a[2]); - if ( C2.IsNull()) - return 1; - Intersector.Init(C1,C2,Tol); - } - else { - Intersector.Init(C1, Tol); - } - - Standard_Integer i; - - for ( i = 1; i <= Intersector.NbPoints(); i++) { - gp_Pnt2d P = Intersector.Point(i); - Handle(Draw_Marker2D) mark = new Draw_Marker2D( P, Draw_X, Draw_vert); - dout << mark; - } - dout.Flush(); - - Handle(Geom2d_Curve) S1,S2; - Handle(DrawTrSurf_Curve2d) CD; - if ( n == 3) { - for ( i = 1; i <= Intersector.NbSegments(); i++) { - Intersector.Segment(i,S1,S2); - CD = new DrawTrSurf_Curve2d(S1, Draw_bleu, 30); - dout << CD; - CD = new DrawTrSurf_Curve2d(S2, Draw_violet, 30); - dout << CD; - } - } - dout.Flush(); - - return 0; -} - - -void GeometryTest::API2dCommands(Draw_Interpretor& theCommands) -{ - static Standard_Boolean done = Standard_False; - if (done) return; - - const char *g; - - done = Standard_True; - g = "GEOMETRY curves and surfaces analysis"; - - theCommands.Add("2dproj", "proj curve x y",__FILE__, proj,g); - - g = "GEOMETRY approximations"; - - theCommands.Add("2dapprox", "2dapprox result nbpoint [curve] [[x] y [x] y...]",__FILE__, - appro,g); - theCommands.Add("2dinterpole", "2dinterpole result nbpoint [curve] [[x] y [x] y ...]",__FILE__, - appro,g); - - g = "GEOMETRY curves and surfaces analysis"; - - g = "GEOMETRY intersections"; - - theCommands.Add("2dintersect", "intersect curve curve",__FILE__, - intersect,g); -}