]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Implementation of change orientation in Repair in GEOM.
authorskl <skl@opencascade.com>
Thu, 13 Jul 2006 10:02:45 +0000 (10:02 +0000)
committerskl <skl@opencascade.com>
Thu, 13 Jul 2006 10:02:45 +0000 (10:02 +0000)
src/GEOMImpl/GEOMImpl_HealingDriver.cxx
src/GEOMImpl/GEOMImpl_HealingDriver.hxx
src/GEOMImpl/GEOMImpl_IHealingOperations.cxx
src/GEOMImpl/GEOMImpl_IHealingOperations.hxx
src/GEOMImpl/GEOMImpl_Types.hxx
src/RepairGUI/Makefile.in
src/RepairGUI/RepairGUI.cxx
src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx [new file with mode: 0644]
src/RepairGUI/RepairGUI_ChangeOrientationDlg.h [new file with mode: 0644]

index ffe05748ebe074dcf35834a56800ff4f5a13883f..d4921d6483da67d0f96adb11f2a521ca319f988b 100644 (file)
@@ -32,6 +32,7 @@
 #include <ShHealOper_FillHoles.hxx>
 #include <ShHealOper_Sewing.hxx>
 #include <ShHealOper_EdgeDivide.hxx>
+#include <ShHealOper_ChangeOrientation.hxx>
 
 #include <TopoDS.hxx>
 #include <TopExp.hxx>
@@ -115,6 +116,9 @@ Standard_Integer GEOMImpl_HealingDriver::Execute(TFunction_Logbook& log) const
   case DIVIDE_EDGE:
     AddPointOnEdge(&HI, anOriginalShape, aShape);
     break;
+  case CHANGE_ORIENTATION:
+    ChangeOrientation(&HI, anOriginalShape, aShape);
+    break;
   default:
     return 0;
   }
@@ -379,6 +383,27 @@ Standard_Boolean GEOMImpl_HealingDriver::AddPointOnEdge (GEOMImpl_IHealing* theH
 }
 
 
+//=======================================================================
+//function :  ChangeOrientation
+//purpose  :
+//=======================================================================
+Standard_Boolean GEOMImpl_HealingDriver::ChangeOrientation (GEOMImpl_IHealing* theHI,
+                                                            const TopoDS_Shape& theOriginalShape,
+                                                            TopoDS_Shape& theOutShape) const
+{
+  ShHealOper_ChangeOrientation aHealer (theOriginalShape);
+
+  Standard_Boolean aResult = aHealer.Perform();
+
+  if (aResult)
+    theOutShape = aHealer.GetResultShape();
+  else
+    raiseNotDoneExeption( aHealer.GetErrorStatus() );
+
+  return aResult;
+}
+
+
 //=======================================================================
 //function :  GEOMImpl_HealingDriver_Type_
 //purpose  :
index aa1086b514bfa1e16d20161ac5bf5ef68de182d8..3bc27c1a86663e71fee62ff65bf352c08ef7c4d2 100644 (file)
@@ -163,7 +163,7 @@ Standard_Boolean RemoveIntWires( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS
 Standard_Boolean RemoveHoles   ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
 Standard_Boolean Sew           ( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
 Standard_Boolean AddPointOnEdge( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
-
+Standard_Boolean ChangeOrientation( GEOMImpl_IHealing*, const TopoDS_Shape&, TopoDS_Shape& ) const;
 
 
 };
index 1d3d9f4206f871f0bdafc5d54118b8089ff0498d..4f35762f908df6fc01552eeaa37e568ece7c32cc 100644 (file)
@@ -773,3 +773,111 @@ bool GEOMImpl_IHealingOperations::GetFreeBoundary (Handle(GEOM_Object) theObject
   SetErrorCode(OK);
   return true;
 }
+
+
+//=============================================================================
+/*!
+ *  ChangeOrientation
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IHealingOperations::ChangeOrientation (Handle(GEOM_Object) theObject)
+{
+  // set error code, check parameters
+  SetErrorCode(KO);
+
+  if (theObject.IsNull())
+    return NULL;
+
+  Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
+  if (aLastFunction.IsNull()) 
+    return NULL; //There is no function which creates an object to be processed
+
+  //Add the function
+  aFunction = theObject->AddFunction(GEOMImpl_HealingDriver::GetID(), CHANGE_ORIENTATION);
+
+  if (aFunction.IsNull())
+    return NULL;
+
+  //Check if the function is set correctly
+  if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL;
+
+  // prepare "data container" class IHealing
+  GEOMImpl_IHealing HI(aFunction);
+  HI.SetOriginal( aLastFunction );
+
+  //Compute the translation
+  try {
+    if (!GetSolver()->ComputeFunction(aFunction)) {
+      SetErrorCode("Healing driver failed");
+      return NULL;
+    }
+  }
+  catch (Standard_Failure) {
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+    SetErrorCode(aFail->GetMessageString());
+    return NULL;
+  }
+
+  //Make a Python command
+  GEOM::TPythonDump(aFunction) << "geompy.ChangeOrientation("
+                               << theObject << ")";
+
+  SetErrorCode(OK);
+  return theObject;
+}
+
+
+//=============================================================================
+/*!
+ *  ChangeOrientationCopy
+ */
+//=============================================================================
+Handle(GEOM_Object) GEOMImpl_IHealingOperations::ChangeOrientationCopy (Handle(GEOM_Object) theObject)
+{
+  // set error code, check parameters
+  SetErrorCode(KO);
+
+  if (theObject.IsNull())
+    return NULL;
+
+  Handle(GEOM_Function) aFunction, aLastFunction = theObject->GetLastFunction();
+  if (aLastFunction.IsNull())
+    return NULL; //There is no function which creates an object to be processed
+
+  // Add a new object
+  Handle(GEOM_Object) aNewObject = GetEngine()->AddObject( GetDocID(), GEOM_COPY );
+
+  //Add the function
+  aFunction = aNewObject->AddFunction(GEOMImpl_HealingDriver::GetID(), CHANGE_ORIENTATION);
+
+  if (aFunction.IsNull())
+    return NULL;
+
+  //Check if the function is set correctly
+  if (aFunction->GetDriverGUID() != GEOMImpl_HealingDriver::GetID()) return NULL;
+
+  // prepare "data container" class IHealing
+  GEOMImpl_IHealing HI(aFunction);
+  HI.SetOriginal( aLastFunction );
+
+  //Compute the translation
+  try {
+    if (!GetSolver()->ComputeFunction(aFunction)) {
+      SetErrorCode("Healing driver failed");
+      return NULL;
+    }
+  }
+  catch (Standard_Failure) {
+    Handle(Standard_Failure) aFail = Standard_Failure::Caught();
+    SetErrorCode(aFail->GetMessageString());
+    return NULL;
+  }
+
+  //Make a Python command
+  GEOM::TPythonDump(aFunction) << aNewObject << " = geompy.ChangeOrientationCopy("
+                               << theObject << ")";
+
+  SetErrorCode(OK);
+  return aNewObject;
+}
+
index 1a7359374bb26eba88c67be4dbf273e7e1b36301..3b36d040fb0bcf835e3cc18fc28eb9e3e0654cef 100644 (file)
@@ -81,6 +81,10 @@ class GEOMImpl_IHealingOperations : public GEOM_IOperations {
   Standard_EXPORT bool GetFreeBoundary ( Handle(GEOM_Object) theObject, 
                          Handle(TColStd_HSequenceOfTransient)& theOutClosedWires, 
                          Handle(TColStd_HSequenceOfTransient)& theOutOpenWires );
+
+  Standard_EXPORT Handle(GEOM_Object) ChangeOrientation( Handle(GEOM_Object) theObject);
+  Standard_EXPORT Handle(GEOM_Object) ChangeOrientationCopy( Handle(GEOM_Object) theObject);
+
 };
 
 #endif
index 4f679dd1679f5bd84f2d4a0b059e93ec729ca1e2..a1e340e298e5857c09b7debf95fabf7838c55376 100755 (executable)
 #define ARCHIMEDE_TYPE 1
 
 // Shape Healing operators
-#define SHAPE_PROCESS     1
-#define SUPPRESS_FACES    2
-#define CLOSE_CONTOUR     3
-#define REMOVE_INT_WIRES  4
-#define FILL_HOLES        5
-#define SEWING            6
-#define DIVIDE_EDGE       7
+#define SHAPE_PROCESS      1
+#define SUPPRESS_FACES     2
+#define CLOSE_CONTOUR      3
+#define REMOVE_INT_WIRES   4
+#define FILL_HOLES         5
+#define SEWING             6
+#define DIVIDE_EDGE        7
+#define CHANGE_ORIENTATION 8
 
 #define BASIC_FILLING 1
 
index 3c698b9190c10dfdc349e3ebc453e5353080e1a9..b5aec03e1116ae72e3ce16ad4401674c82cd1d16 100644 (file)
@@ -50,6 +50,7 @@ LIB_SRC =     RepairGUI.cxx \
                RepairGUI_DivideEdgeDlg.cxx \
                RepairGUI_FreeBoundDlg.cxx \
                RepairGUI_FreeFacesDlg.cxx \
+               RepairGUI_ChangeOrientationDlg.cxx \
                RepairGUI_GlueDlg.cxx
     
 LIB_MOC = \
@@ -62,6 +63,7 @@ LIB_MOC = \
                RepairGUI_DivideEdgeDlg.h  \
                RepairGUI_FreeBoundDlg.h \
                RepairGUI_FreeFacesDlg.h \
+               RepairGUI_ChangeOrientationDlg.h \
                RepairGUI_GlueDlg.h     
 
 LIB_CLIENT_IDL = SALOME_Exception.idl SALOME_GenericObj.idl SALOME_Component.idl
index 32853a771214fc432c7dbeb0e9926ddff6436f8f..3631415bcf0beac917a5dab48bb9319c28e4472a 100644 (file)
@@ -43,6 +43,7 @@
 #include "RepairGUI_FreeBoundDlg.h"     // Method FREE BOUNDARIES
 #include "RepairGUI_FreeFacesDlg.h"     // Method FREE FACES
 #include "RepairGUI_GlueDlg.h"          // Method GLUE FACES
+#include "RepairGUI_ChangeOrientationDlg.h" // Method CHANGE ORIENTATION
 
 #include "utilities.h"
 
@@ -86,8 +87,9 @@ bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
     case 606: aDlg = new RepairGUI_CloseContourDlg  (getGeometryGUI(), parent, ""); break;
     case 607: aDlg = new RepairGUI_RemoveIntWiresDlg(getGeometryGUI(), parent, ""); break;
     case 608: aDlg = new RepairGUI_DivideEdgeDlg    (getGeometryGUI(), parent, ""); break;
-    case 609: aDlg = new RepairGUI_FreeBoundDlg     (getGeometryGUI(), parent, ""); break;    
-    case 610: aDlg = new RepairGUI_FreeFacesDlg     (getGeometryGUI(), parent, ""); break;    
+    case 609: aDlg = new RepairGUI_FreeBoundDlg     (getGeometryGUI(), parent, ""); break;
+    case 610: aDlg = new RepairGUI_FreeFacesDlg     (getGeometryGUI(), parent, ""); break;
+    case 611: aDlg = new RepairGUI_ChangeOrientationDlg (getGeometryGUI(), parent, ""); break;
     default:
       app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
       break;
diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx
new file mode 100644 (file)
index 0000000..afb28f5
--- /dev/null
@@ -0,0 +1,301 @@
+//  GEOM GEOMGUI : GUI for Geometry component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  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. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : RepairGUI_ChangeOrientationDlg.cxx
+//  Author : Sergey KUUL
+//  Module : GEOM
+
+#include "RepairGUI_ChangeOrientationDlg.h"
+
+#include "SalomeApp_Application.h"
+#include "LightApp_SelectionMgr.h"
+#include "SUIT_Session.h"
+#include "SALOME_ListIteratorOfListIO.hxx"
+
+#include "GEOMImpl_Types.hxx"
+
+#include <TopAbs.hxx>
+
+#include <qlabel.h>
+
+using namespace std;
+
+//=================================================================================
+// class    : RepairGUI_ChangeOrientationDlg()
+// purpose  : Constructs a RepairGUI_ChangeOrientationDlg  which is a child of 'parent',
+//            with the name 'name' and widget flags set to 'f'.
+//            The dialog will by default be modeless, unless you set 'modal' to
+//            TRUE to construct a modal dialog.
+//=================================================================================
+RepairGUI_ChangeOrientationDlg::RepairGUI_ChangeOrientationDlg(GeometryGUI* theGeometryGUI,
+                                                               QWidget* parent, const char* name,
+                                                               bool modal, WFlags fl)
+  :GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize |
+                     WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
+{
+  //QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_FACE")));
+  QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_CHANGE_ORIENTATION")));
+  QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT")));
+    
+  setCaption(tr("GEOM_CHANGE_ORIENTATION_TITLE"));
+
+  /***************************************************************/
+  GroupConstructors->setTitle(tr("GEOM_CHANGE_ORIENTATION_TITLE"));
+  RadioButton1->setPixmap(image0);
+  RadioButton2->close(TRUE);
+  RadioButton3->close(TRUE);
+
+  GroupPoints = new DlgRef_1Sel1Check_QTD(this, "GroupPoints");
+  GroupPoints->GroupBox1->setTitle(tr("GEOM_CHANGE_ORIENTATION"));
+  GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE"));
+  GroupPoints->CheckButton1->setText(tr("GEOM_CREATE_COPY"));
+  GroupPoints->PushButton1->setPixmap(image1);
+//  GroupPoints->LineEdit1->setReadOnly( true );
+
+  Layout1->addWidget(GroupPoints, 2, 0);
+
+  setHelpFileName("change_orientation.htm");
+
+  Init();
+}
+
+
+//=================================================================================
+// function : ~RepairGUI_ChangeOrientationDlg()
+// purpose  : Destroys the object and frees any allocated resources
+//=================================================================================
+RepairGUI_ChangeOrientationDlg::~RepairGUI_ChangeOrientationDlg()
+{
+}
+
+
+//=================================================================================
+// function : Init()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::Init()
+{
+  /* init variables */
+  myEditCurrentArgument = GroupPoints->LineEdit1;
+
+  GroupPoints->CheckButton1->setChecked(true);
+
+  myOkObject = false;
+
+  /* signals and slots connections */
+  connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
+  connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
+
+  connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
+  connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
+
+  connect(GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool)));
+
+  connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 
+         SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+  initName( tr( "CHANGE_ORIENTATION_NEW_OBJ_NAME" ) );
+}
+
+
+//=================================================================================
+// function : ClickOnOk()
+// purpose  : Same than click on apply but close this dialog.
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::ClickOnOk()
+{
+  if ( ClickOnApply() )
+    ClickOnCancel();
+}
+
+
+//=================================================================================
+// function : ClickOnApply()
+// purpose  :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::ClickOnApply()
+{
+//  if ( !onAccept() )
+  if ( !onAccept(GroupPoints->CheckButton1->isChecked()) )
+    return false;
+
+  initName();
+
+  myEditCurrentArgument->setText("");
+  
+  return true;
+}
+
+
+//=================================================================================
+// function : SelectionIntoArgument()
+// purpose  : Called when selection as changed or other case
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::SelectionIntoArgument()
+{
+  myEditCurrentArgument->setText("");
+  QString aName;
+  
+  if(myEditCurrentArgument == GroupPoints->LineEdit1) {
+    if (IObjectCount() != 1) {
+      if (myEditCurrentArgument == GroupPoints->LineEdit1)
+        myOkObject = false;
+      return;
+    }
+  }
+
+  // nbSel == 1
+  Standard_Boolean testResult = Standard_False;
+  GEOM::GEOM_Object_ptr aSelectedObject =
+    GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult );
+
+  if (!testResult)
+    return;
+
+  if (myEditCurrentArgument == GroupPoints->LineEdit1) {
+    myObject = aSelectedObject;
+    myOkObject = true;
+  }
+
+  myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) );
+
+}
+
+
+//=================================================================================
+// function : SetEditCurrentArgument()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::SetEditCurrentArgument()
+{
+  QPushButton* send = (QPushButton*)sender();
+
+  if( send == GroupPoints->PushButton1 )
+  {
+    GroupPoints->LineEdit1->setFocus();
+    myEditCurrentArgument = GroupPoints->LineEdit1;
+  }
+  SelectionIntoArgument();
+}
+
+
+//=================================================================================
+// function : LineEditReturnPressed()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::LineEditReturnPressed()
+{
+  QLineEdit* send = (QLineEdit*)sender();
+  if( send == GroupPoints->LineEdit1 ) {
+    myEditCurrentArgument = GroupPoints->LineEdit1;
+    GEOMBase_Skeleton::LineEditReturnPressed();
+  }
+}
+
+
+//=================================================================================
+// function : ActivateThisDialog()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::ActivateThisDialog()
+{
+  GEOMBase_Skeleton::ActivateThisDialog();
+  connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 
+         SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
+
+}
+
+
+//=================================================================================
+// function : enterEvent()
+// purpose  : Mouse enter onto the dialog to activate it
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::enterEvent(QEvent* e)
+{
+  if ( !GroupConstructors->isEnabled() )
+    ActivateThisDialog();
+}
+
+
+//=================================================================================
+// function : closeEvent()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::closeEvent(QCloseEvent* e)
+{
+  //myGeomGUI->SetState( -1 );
+  GEOMBase_Skeleton::closeEvent( e );
+}
+
+
+//=================================================================================
+// function : createOperation
+// purpose  :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr RepairGUI_ChangeOrientationDlg::createOperation()
+{
+  return getGeomEngine()->GetIHealingOperations( getStudyId() );
+}
+
+
+//=================================================================================
+// function : isValid
+// purpose  :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::isValid( QString& msg )
+{
+  return myOkObject;
+}
+
+
+//=================================================================================
+// function : execute
+// purpose  :
+//=================================================================================
+bool RepairGUI_ChangeOrientationDlg::execute( ObjectList& objects )
+{
+  bool toCreateCopy = GroupPoints->CheckButton1->isChecked();
+
+  GEOM::GEOM_Object_var anObj;
+  if(toCreateCopy) {
+    anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->ChangeOrientationCopy(myObject);
+  }
+  else {
+    anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->ChangeOrientation(myObject);
+  }
+
+  if ( !anObj->_is_nil() )
+    objects.push_back( anObj._retn() );
+
+  return true;
+}
+
+
+//=================================================================================
+// function :  CreateCopyModeChanged()
+// purpose  :
+//=================================================================================
+void RepairGUI_ChangeOrientationDlg::CreateCopyModeChanged(bool isCreateCopy)
+{
+  GroupBoxName->setEnabled(isCreateCopy);
+}
diff --git a/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h b/src/RepairGUI/RepairGUI_ChangeOrientationDlg.h
new file mode 100644 (file)
index 0000000..19f5be3
--- /dev/null
@@ -0,0 +1,77 @@
+//  GEOM GEOMGUI : GUI for Geometry component
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  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. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//
+//
+//  File   : RepairGUI_ChangeOrientationDlg.h
+//  Author : Sergey KUUL
+//  Module : GEOM
+
+#ifndef DIALOGBOX_CHANGEORIENTATION_H
+#define DIALOGBOX_CHANGEORIENTATION_H
+
+#include "GEOMBase_Skeleton.h"
+#include "DlgRef_1Sel1Check_QTD.h"
+#include <qcheckbox.h>
+
+//#include <TColStd_IndexedMapOfInteger.hxx>
+
+//=================================================================================
+// class    : RepairGUI_ChangeOrientationDlg
+// purpose  :
+//=================================================================================
+class RepairGUI_ChangeOrientationDlg : public GEOMBase_Skeleton
+{ 
+    Q_OBJECT
+
+public:
+    RepairGUI_ChangeOrientationDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0,
+                                   const char* name = 0, bool modal = FALSE, WFlags fl = 0);
+    ~RepairGUI_ChangeOrientationDlg();
+
+protected:
+    // redefined from GEOMBase_Helper
+    virtual GEOM::GEOM_IOperations_ptr createOperation();
+    virtual bool isValid( QString& );
+    virtual bool execute( ObjectList& objects );    
+
+private :
+    void Init();
+    void enterEvent(QEvent* e);
+    void closeEvent(QCloseEvent* e);
+
+    GEOM::GEOM_Object_var myObject;
+    bool myOkObject;
+
+    DlgRef_1Sel1Check_QTD* GroupPoints;
+
+
+private slots:
+    void ClickOnOk();
+    bool ClickOnApply();
+    void ActivateThisDialog();
+    void LineEditReturnPressed();
+    void SelectionIntoArgument();
+    void SetEditCurrentArgument();
+    void CreateCopyModeChanged(bool isCreateCopy);
+};
+
+#endif // DIALOGBOX_SUPPRESSFACES_H