X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_SketcherDriver.cxx;h=f8f9fb66cf0a24ee67a1b4f6d882b3c4403b39c7;hb=de644ac6fe44325aaa8ce9c1aa729dd9189eea6e;hp=70e627719e87acac900e8cf35147e46c76008d60;hpb=73555c78ebf12a1fdb85157b8e7934ad566ae90a;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx b/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx index 70e627719..f8f9fb66c 100644 --- a/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_SketcherDriver.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 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 @@ -26,8 +26,8 @@ #include #include #include - -#include +#include +#include #include @@ -38,9 +38,6 @@ #include #include #include - -#include - #include //======================================================================= @@ -66,7 +63,7 @@ GEOMImpl_SketcherDriver::GEOMImpl_SketcherDriver() //function : Execute //purpose : //======================================================================= -Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const +Standard_Integer GEOMImpl_SketcherDriver::Execute(Handle(TFunction_Logbook)& log) const { if (Label().IsNull()) return 0; Handle(GEOM_Function) aFunction = GEOM_Function::GetFunction(Label()); @@ -79,19 +76,18 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const if (aCommand.IsEmpty()) return 0; - TopoDS_Shape aShape; - // Set "C" numeric locale to save numbers correctly Kernel_Utils::Localizer loc; // create sketcher - Sketcher_Profile aProfile (aCommand.ToCString()); + Sketcher_Profile aProfile( aCommand.ToCString() ); + bool isDone = false; + TopoDS_Shape aShape = aProfile.GetShape( &isDone ); - if (!aProfile.IsDone()) { + if ( !isDone ) { Standard_ConstructionError::Raise("Sketcher creation failed"); } - aShape = aProfile.GetShape(); if (aShape.IsNull()) return 0; @@ -117,7 +113,7 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const // return 0; //Handle(Geom_Plane) aGPlane = Handle(Geom_Plane)::DownCast( aGS ); //aWPlane = aGPlane->Pln().Position(); - aWPlane = GEOMImpl_IMeasureOperations::GetPosition(aShape); + aWPlane = GEOMUtils::GetPosition(aShape); } gp_Trsf aTrans; aTrans.SetTransformation(aWPlane); @@ -131,50 +127,54 @@ Standard_Integer GEOMImpl_SketcherDriver::Execute(TFunction_Logbook& log) const // set the function result aFunction->SetValue(aShape); - log.SetTouched(Label()); + log->SetTouched(Label()); return 1; } +//================================================================================ +/*! + * \brief Returns a name of creation operation and names and values of creation parameters + */ +//================================================================================ -//======================================================================= -//function : GEOMImpl_SketcherDriver_Type_ -//purpose : -//======================================================================= -Standard_EXPORT Handle_Standard_Type& GEOMImpl_SketcherDriver_Type_() -{ - - 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_SketcherDriver", - sizeof(GEOMImpl_SketcherDriver), - 1, - (Standard_Address)_Ancestors, - (Standard_Address)NULL); - - return _aType; -} - -//======================================================================= -//function : DownCast -//purpose : -//======================================================================= -const Handle(GEOMImpl_SketcherDriver) Handle(GEOMImpl_SketcherDriver)::DownCast(const Handle(Standard_Transient)& AnObject) +bool GEOMImpl_SketcherDriver:: +GetCreationInformation(std::string& theOperationName, + std::vector& theParams) { - Handle(GEOMImpl_SketcherDriver) _anOtherObject; - - if (!AnObject.IsNull()) { - if (AnObject->IsKind(STANDARD_TYPE(GEOMImpl_SketcherDriver))) { - _anOtherObject = Handle(GEOMImpl_SketcherDriver)((Handle(GEOMImpl_SketcherDriver)&)AnObject); - } + if (Label().IsNull()) return 0; + Handle(GEOM_Function) function = GEOM_Function::GetFunction(Label()); + + GEOMImpl_ISketcher aCI( function ); + Standard_Integer aType = function->GetType(); + + theOperationName = "SKETCH"; + + switch ( aType ) { + case SKETCHER_NINE_DOUBLS: + AddParam( theParams, "Command", aCI.GetCommand() ); + AddParam( theParams, "Origin") + << aCI.GetWorkingPlane(1) << " " + << aCI.GetWorkingPlane(2) << " " + << aCI.GetWorkingPlane(3); + AddParam( theParams, "OZ") + << aCI.GetWorkingPlane(4) << " " + << aCI.GetWorkingPlane(5) << " " + << aCI.GetWorkingPlane(6); + AddParam( theParams, "OX") + << aCI.GetWorkingPlane(7) << " " + << aCI.GetWorkingPlane(8) << " " + << aCI.GetWorkingPlane(9); + break; + case SKETCHER_PLANE: + AddParam( theParams, "Command", aCI.GetCommand() ); + AddParam( theParams, "Working plane", aCI.GetWorkingPlane(), "XOY" ); + break; + default: + return false; } - return _anOtherObject ; + return true; } + +IMPLEMENT_STANDARD_RTTIEXT (GEOMImpl_SketcherDriver,GEOM_BaseDriver)