X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_VectorDriver.cxx;h=f123e4fefc208c772bd2bc01c3325aa208146ba0;hb=ed87a1f7c81ec39992aff1f463d73dc81e5791e0;hp=f691fdfa391501a90963930afa39b0ff634f0852;hpb=5b3622aa2363853841fd5b4205c78a715bfee4a4;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx b/src/GEOMImpl/GEOMImpl_VectorDriver.cxx index f691fdfa3..f123e4fef 100644 --- a/src/GEOMImpl/GEOMImpl_VectorDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_VectorDriver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,28 +20,27 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include +#include "GEOMImpl_VectorDriver.hxx" -#include -#include -#include -#include +#include "GEOMImpl_IVector.hxx" +#include "GEOMImpl_Types.hxx" +#include "GEOM_Function.hxx" +#include "GEOM_Object.hxx" -#include #include - +#include +#include +#include +#include #include #include #include #include #include #include - #include -#include -#include #include -#include + #include //======================================================================= @@ -156,46 +155,55 @@ Standard_Integer GEOMImpl_VectorDriver::Execute(TFunction_Logbook& log) const return 1; } +//================================================================================ +/*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ +//================================================================================ -//======================================================================= -//function : GEOMImpl_VectorDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_VectorDriver_Type_() +bool GEOMImpl_VectorDriver:: +GetCreationInformation(std::string& theOperationName, + std::vector& theParams) { - - static Handle_Standard_Type aType1 = STANDARD_TYPE(TFunction_Driver); - if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TFunction_Driver); - static Handle_Standard_Type aType2 = STANDARD_TYPE(MMgt_TShared); - if ( aType2.IsNull()) aType2 = STANDARD_TYPE(MMgt_TShared); - static Handle_Standard_Type aType3 = STANDARD_TYPE(Standard_Transient); - if ( aType3.IsNull()) aType3 = STANDARD_TYPE(Standard_Transient); - - - static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL}; - static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_VectorDriver", - sizeof(GEOMImpl_VectorDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_VectorDriver) Handle(GEOMImpl_VectorDriver)::DownCast - (const Handle(Standard_Transient)& AnObject) -{ - Handle(GEOMImpl_VectorDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_VectorDriver))) { - _anOtherObject = Handle(GEOMImpl_VectorDriver)((Handle(GEOMImpl_VectorDriver)&)AnObject); - } + if (Label().IsNull()) return 0; + Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label()); + + GEOMImpl_IVector aCI( function ); + Standard_Integer aType = function->GetType(); + + switch ( aType ) { + case VECTOR_DX_DY_DZ: + theOperationName = "VECTOR"; + AddParam( theParams, "Dx", aCI.GetDX() ); + AddParam( theParams, "Dy", aCI.GetDY() ); + AddParam( theParams, "Dz", aCI.GetDZ() ); + break; + case VECTOR_TWO_PNT: { + TDF_Label label = Label(); + Handle(GEOM_Object) obj = GEOM_Object::GetObject( label ); + if ( !obj.IsNull() && obj->GetType() == GEOM_EDGE ) + theOperationName = "EDGE"; + else + theOperationName = "VECTOR"; + AddParam( theParams, "Point 1", aCI.GetPoint1() ); + AddParam( theParams, "Point 2", aCI.GetPoint2() ); + break; + } + case VECTOR_TANGENT_CURVE_PAR: + theOperationName = "MakeTangentOnCurve"; + AddParam( theParams, "Curve", aCI.GetCurve() ); + AddParam( theParams, "Parameter", aCI.GetParameter() ); + break; + case VECTOR_REVERSE: + theOperationName = "CHANGE_ORIENTATION"; + AddParam( theParams, "Vector", aCI.GetCurve() ); + break; + default: + return false; } - return _anOtherObject; + return true; } + +IMPLEMENT_STANDARD_HANDLE (GEOMImpl_VectorDriver,GEOM_BaseDriver); +IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_VectorDriver,GEOM_BaseDriver);