From 04e48a49077a1dbdffb320370fd97927e935950b Mon Sep 17 00:00:00 2001 From: skl Date: Thu, 18 Mar 2010 13:18:15 +0000 Subject: [PATCH] Changes for 0020673 - Implementation of "Auto-correct edges orientation". --- doc/salome/gui/GEOM/images/filling.png | Bin 18488 -> 19595 bytes .../gui/GEOM/input/creating_filling.doc | 10 ++-- idl/GEOM_Gen.idl | 20 +++++++- idl/GEOM_Superv.idl | 3 +- src/DlgRef/DlgRef_1Sel5Spin1Check_QTD.ui | 24 +++++++--- src/GEOMGUI/GEOM_msg_en.ts | 14 +++++- src/GEOMImpl/GEOMImpl_FillingDriver.cxx | 30 +++++++++++- src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx | 4 +- src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx | 2 +- src/GEOMImpl/GEOMImpl_IFilling.hxx | 6 +-- src/GEOM_I/GEOM_I3DPrimOperations_i.cc | 43 ++++++++++++++---- src/GEOM_I/GEOM_I3DPrimOperations_i.hh | 3 +- src/GEOM_I_Superv/GEOM_Superv_i.cc | 4 +- src/GEOM_I_Superv/GEOM_Superv_i.hh | 3 +- .../GenerationGUI_FillingDlg.cxx | 31 +++++++++---- src/GenerationGUI/GenerationGUI_FillingDlg.h | 4 +- 16 files changed, 157 insertions(+), 44 deletions(-) diff --git a/doc/salome/gui/GEOM/images/filling.png b/doc/salome/gui/GEOM/images/filling.png index da4ad8d41ce3b3b4967c4aa68f613caaafb24a10..2b2f4fb10378374d2b0c25fd12b0ec47b1578522 100755 GIT binary patch literal 19595 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 literal 18488 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%0ALjQgN@Ve0|0ou{7V}mB1)de>kq{ifNu~WBBC^4 zupuI%)a!o=O~qhCL`0^Of#8z@0)mm}@y8#>%l~{iqlF?OqTF@!y??~PcU)nu85scV z77>5|PoEdh9#2!OlOg?Dy02ge~m5Q2#+0@N&mBmG%w zbLw-s%-dQbBFdNoo7_L7^v4+i5JI6R_;;EDpeX%~5KU|lpm~FU-6r)f8JaslQ2;?R zL7TFMv)2hCBFaC(7@^X%Kthuu#fk7VmHK0h+JphZn>7ec5ENmc-68<)qYvZ3haQAHcg|d4>(;GUym+xv zeBNE5#1-|QU~4JZdxn8v74}e@4>;*KY0g#>5m822dLI3~& diff --git a/doc/salome/gui/GEOM/input/creating_filling.doc b/doc/salome/gui/GEOM/input/creating_filling.doc index b096fd8e7..e082127ac 100644 --- a/doc/salome/gui/GEOM/input/creating_filling.doc +++ b/doc/salome/gui/GEOM/input/creating_filling.doc @@ -18,9 +18,13 @@ created surface and the reference edge; Iterations - defines the maximum number of iterations. The iterations are repeated until the required tolerance is reached. So, a greater number of iterations allows producing a better surface. -\n Use orientation - if checked, orientation of edges are used: -if edge is reversed curve from this edge is reversed before using in -filling algorithm. +\n Method - Kind of method to perform filling operation +1. Default - standard behaviour +2. Use edges orientation - orientation of edges are used: if edge is +reversed curve from this edge is reversed before using in filling +algorithm. +3. Auto-correct edges orientation - change orientation of curves using +minimization of sum of distances between ends points of edges. \n Approximation - if checked, BSpline curves are generated in the process of surface construction (using GeomAPI_PointsToBSplineSurface functionality). By default the surface diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 451d7e6d2..a93cdb751 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -114,6 +114,22 @@ module GEOM FSM_GetInPlaceByHistory }; + /*! + * Kind of method to perform filling operation + * Is used in functions GEOM_Gen.MakeFilling() + */ + enum filling_oper_method + { + /*! Default (standard behaviour) */ + FOM_Default, + + /*! Use edges orientation */ + FOM_UseOri, + + /*! Auto-correct edges orientation */ + FOM_AutoCorrect + }; + typedef sequence string_array; typedef sequence short_array; @@ -1180,12 +1196,14 @@ module GEOM * \param theTol2D a 2d tolerance to be reached * \param theTol3D a 3d tolerance to be reached * \param theNbIter a number of iteration of approximation algorithm + * \param theMethod Kind of method to perform filling operation. * \return New GEOM_Object, containing the created filling surface. */ GEOM_Object MakeFilling (in GEOM_Object theShape, in long theMinDeg, in long theMaxDeg, in double theTol2D, in double theTol3D, - in long theNbIter, in boolean theUseOri, + in long theNbIter, + in filling_oper_method theMethod, in boolean theApprox); /*! diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl index 8fdc7d1c0..1c7986bf8 100644 --- a/idl/GEOM_Superv.idl +++ b/idl/GEOM_Superv.idl @@ -200,7 +200,8 @@ module GEOM GEOM_Object MakeFilling (in GEOM_Object theShape, in long theMinDeg, in long theMaxDeg, in double theTol2D, in double theTol3D, - in long theNbIter, in boolean theUseOri, + in long theNbIter, + in filling_oper_method theMethod, in boolean theApprox) ; GEOM_Object MakeThruSections(in ListOfGO theSeqSections, in boolean theModeSolid, diff --git a/src/DlgRef/DlgRef_1Sel5Spin1Check_QTD.ui b/src/DlgRef/DlgRef_1Sel5Spin1Check_QTD.ui index cbb0de7d9..da4fd5062 100644 --- a/src/DlgRef/DlgRef_1Sel5Spin1Check_QTD.ui +++ b/src/DlgRef/DlgRef_1Sel5Spin1Check_QTD.ui @@ -7,13 +7,13 @@ 0 0 200 - 153 + 162 - + 0 @@ -59,13 +59,25 @@ - - + + + + + 0 + 0 + + - + TL7 + + + false + + + @@ -187,7 +199,7 @@ PushButton1 LineEdit1 - CheckBox2 + ComboBox1 SpinBox1 SpinBox2 SpinBox4 diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index 1f7fb0a0b..766fcc0cb 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -3787,9 +3787,21 @@ Please, select face, shell or solid and try again GEOM_FILLING_APPROX Approximation + + GEOM_FILLING_METHOD + Method + + + GEOM_FILLING_DEFAULT + Default (standard behaviour) + GEOM_FILLING_USEORI - Use orientation + Use edges orientation + + + GEOM_FILLING_AUTO + Auto-correct edges orientation GEOM_WRN_NO_APPROPRIATE_SELECTION diff --git a/src/GEOMImpl/GEOMImpl_FillingDriver.cxx b/src/GEOMImpl/GEOMImpl_FillingDriver.cxx index cf893cd46..a941a0f69 100644 --- a/src/GEOMImpl/GEOMImpl_FillingDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_FillingDriver.cxx @@ -110,7 +110,7 @@ Standard_Integer GEOMImpl_FillingDriver::Execute(TFunction_Logbook& log) const Standard_Real tol2d = IF.GetTol3D(); Standard_Integer nbiter = IF.GetNbIter(); Standard_Boolean isApprox = IF.GetApprox(); - Standard_Boolean isUseOri = IF.GetUseOri(); + Standard_Integer aMethod = IF.GetMethod(); if (mindeg > maxdeg) { Standard_RangeError::Raise("Minimal degree can not be more than maximal degree"); @@ -224,6 +224,8 @@ Standard_Integer GEOMImpl_FillingDriver::Execute(TFunction_Logbook& log) const // make filling as in old version of SALOME (before 4.1.1) GeomFill_SectionGenerator Section; Standard_Integer i = 0; + Handle(Geom_Curve) aLastC; + gp_Pnt PL1,PL2; for (Ex.Init(aShape, TopAbs_EDGE); Ex.More(); Ex.Next()) { Scurrent = Ex.Current(); if (Scurrent.IsNull() || Scurrent.ShapeType() != TopAbs_EDGE) return 0; @@ -235,9 +237,33 @@ Standard_Integer GEOMImpl_FillingDriver::Execute(TFunction_Logbook& log) const //else // C = new Geom_TrimmedCurve(C, First, Last); C = new Geom_TrimmedCurve(C, First, Last); - if( isUseOri && Scurrent.Orientation() == TopAbs_REVERSED ) { + gp_Pnt P1,P2; + C->D0(First,P1); + C->D0(Last,P2); + + if( aMethod==1 && Scurrent.Orientation() == TopAbs_REVERSED ) { C->Reverse(); } + else if( aMethod==2 ) { + if( i==0 ) { + PL1 = P1; + PL2 = P2; + } + else { + double d1 = PL1.Distance(P1) + PL2.Distance(P2); + double d2 = PL1.Distance(P2) + PL2.Distance(P1); + if(d2Reverse(); + PL1 = P2; + PL2 = P1; + } + else { + PL1 = P1; + PL2 = P2; + } + } + } + Section.AddCurve(C); i++; } diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx index 185f6bb72..6c03dd7fb 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx @@ -1454,7 +1454,7 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeRevolutionAxisAngle2Ways Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFilling (Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg, double theTol2D, double theTol3D, int theNbIter, - bool isUseOri, bool isApprox) + int theMethod, bool isApprox) { SetErrorCode(KO); @@ -1483,7 +1483,7 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeFilling aFI.SetTol3D(theTol3D); aFI.SetNbIter(theNbIter); aFI.SetApprox(isApprox); - aFI.SetUseOri(isUseOri); + aFI.SetMethod(theMethod); //Compute the Solid value try { diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx index f8652b3fa..87277ae71 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx @@ -100,7 +100,7 @@ class GEOMImpl_I3DPrimOperations : public GEOM_IOperations { Standard_EXPORT Handle(GEOM_Object) MakeFilling (Handle(GEOM_Object) theShape, int theMinDeg, int theMaxDeg, double theTol2D, double theTol3D, - int theNbIter, bool isUseOri, + int theNbIter, int theMethod, bool isApprox); Standard_EXPORT Handle(GEOM_Object) MakeThruSections diff --git a/src/GEOMImpl/GEOMImpl_IFilling.hxx b/src/GEOMImpl/GEOMImpl_IFilling.hxx index d5d875684..c24aa9692 100644 --- a/src/GEOMImpl/GEOMImpl_IFilling.hxx +++ b/src/GEOMImpl/GEOMImpl_IFilling.hxx @@ -30,7 +30,7 @@ #define FILL_ARG_SHAPE 5 #define FILL_ARG_NBITER 6 #define FILL_ARG_APPROX 7 -#define FILL_ARG_USEORI 8 +#define FILL_ARG_METHOD 8 class GEOMImpl_IFilling { @@ -53,8 +53,8 @@ class GEOMImpl_IFilling void SetApprox(bool theApprox) { _func->SetInteger(FILL_ARG_APPROX, theApprox); } bool GetApprox() { return _func->GetInteger(FILL_ARG_APPROX); } - void SetUseOri(bool theUseOri) { _func->SetInteger(FILL_ARG_USEORI, theUseOri); } - bool GetUseOri() { return _func->GetInteger(FILL_ARG_USEORI); } + void SetMethod(int theMethod) { _func->SetInteger(FILL_ARG_METHOD, theMethod); } + int GetMethod() { return _func->GetInteger(FILL_ARG_METHOD); } void SetShape(Handle(GEOM_Function) theShape) { _func->SetReference(FILL_ARG_SHAPE, theShape); } Handle(GEOM_Function) GetShape() { return _func->GetReference(FILL_ARG_SHAPE); } diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc index c1ae47314..b56c70e63 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc @@ -704,14 +704,15 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeRevolutionAxisAngle2Ways * MakeFilling */ //============================================================================= -GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_ptr theShape, - CORBA::Long theMinDeg, - CORBA::Long theMaxDeg, - CORBA::Double theTol2D, - CORBA::Double theTol3D, - CORBA::Long theNbIter, - CORBA::Boolean theUseOri, - CORBA::Boolean theApprox) +GEOM::GEOM_Object_ptr +GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_ptr theShape, + CORBA::Long theMinDeg, + CORBA::Long theMaxDeg, + CORBA::Double theTol2D, + CORBA::Double theTol3D, + CORBA::Long theNbIter, + GEOM::filling_oper_method theMethod, + CORBA::Boolean theApprox) { GEOM::GEOM_Object_var aGEOMObject; @@ -723,10 +724,34 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeFilling(GEOM::GEOM_Object_pt if (aShape.IsNull()) return aGEOMObject._retn(); + int aMethod = 0; + switch (theMethod) { + case GEOM::FOM_Default: + { + // Default (standard behaviour) + aMethod = 0; + } + break; + case GEOM::FOM_UseOri: + { + // Use edges orientation + aMethod = 1; + } + break; + case GEOM::FOM_AutoCorrect: + { + // Auto-correct edges orientation + aMethod = 2; + } + break; + default: + {} + } + //Create the Solid Handle(GEOM_Object) anObject = GetOperations()->MakeFilling (aShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter, - theUseOri, theApprox); + aMethod, theApprox); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh index a31221abb..cabae19a5 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh @@ -137,7 +137,8 @@ class GEOM_I_EXPORT GEOM_I3DPrimOperations_i : GEOM::GEOM_Object_ptr MakeFilling(GEOM::GEOM_Object_ptr theShape, CORBA::Long theMinDeg, CORBA::Long theMaxDeg, CORBA::Double theTol2D, CORBA::Double theTol3D, - CORBA::Long theNbIter, CORBA::Boolean theUseOri, + CORBA::Long theNbIter, + GEOM::filling_oper_method theMethod, CORBA::Boolean theApprox); GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections, diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 0ce3c9539..46d820c65 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -1247,7 +1247,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape CORBA::Double theTol2D, CORBA::Double theTol3D, CORBA::Long theNbIter, - CORBA::Boolean theUseOri, + GEOM::filling_oper_method theMethod, CORBA::Boolean theApprox) { beginService( " GEOM_Superv_i::MakeFilling" ); @@ -1255,7 +1255,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeFilling (GEOM::GEOM_Object_ptr theShape get3DPrimOp(); GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeFilling(theShape, theMinDeg, theMaxDeg, theTol2D, theTol3D, - theNbIter, theUseOri, theApprox); + theNbIter, theMethod, theApprox); endService( " GEOM_Superv_i::MakeFilling" ); return anObj; } diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh index a1d19e9fd..a5f4c9f04 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ b/src/GEOM_I_Superv/GEOM_Superv_i.hh @@ -288,7 +288,8 @@ public: GEOM::GEOM_Object_ptr MakeFilling (GEOM::GEOM_Object_ptr theShape, CORBA::Long theMinDeg, CORBA::Long theMaxDeg, CORBA::Double theTol2D, CORBA::Double theTol3D, - CORBA::Long theNbIter, CORBA::Boolean theUseOri, + CORBA::Long theNbIter, + GEOM::filling_oper_method theMethod, CORBA::Boolean theApprox); GEOM::GEOM_Object_ptr MakeThruSections(const GEOM::ListOfGO& theSeqSections, diff --git a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx b/src/GenerationGUI/GenerationGUI_FillingDlg.cxx index c43b3fd2c..38ccb0933 100644 --- a/src/GenerationGUI/GenerationGUI_FillingDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_FillingDlg.cxx @@ -70,7 +70,7 @@ GenerationGUI_FillingDlg::GenerationGUI_FillingDlg( GeometryGUI* theGeometryGUI, GroupPoints->TextLabel5->setText( tr( "GEOM_FILLING_MAX_DEG" ) ); GroupPoints->TextLabel6->setText( tr( "GEOM_FILLING_TOL_3D" ) ); GroupPoints->CheckBox1->setText( tr( "GEOM_FILLING_APPROX" ) ); - GroupPoints->CheckBox2->setText( tr( "GEOM_FILLING_USEORI" ) ); + GroupPoints->TextLabel7->setText( tr( "GEOM_FILLING_METHOD" ) ); GroupPoints->PushButton1->setIcon( image1 ); GroupPoints->LineEdit1->setReadOnly( true ); @@ -109,7 +109,7 @@ void GenerationGUI_FillingDlg::Init() myTol3D = 0.0001; myTol2D = 0.0001; myNbIter = 0; - myIsUseOri = false; + myMethod = 0; myIsApprox = false; myOkCompound = false; @@ -130,6 +130,10 @@ void GenerationGUI_FillingDlg::Init() GroupPoints->SpinBox4->setValue( myMaxDeg ); GroupPoints->SpinBox5->setValue( myTol3D ); + GroupPoints->ComboBox1->addItem(tr("GEOM_FILLING_DEFAULT")); + GroupPoints->ComboBox1->addItem(tr("GEOM_FILLING_USEORI")); + GroupPoints->ComboBox1->addItem(tr("GEOM_FILLING_AUTO")); + /* signals and slots connections */ connect( buttonOk(), SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) ); connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) ); @@ -137,6 +141,8 @@ void GenerationGUI_FillingDlg::Init() connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) ); connect( GroupPoints->LineEdit1, SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ); + connect( GroupPoints->ComboBox1, SIGNAL(activated(int)), this, SLOT(MethodChanged())); + connect( GroupPoints->SpinBox1, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) ); connect( GroupPoints->SpinBox2, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) ); connect( GroupPoints->SpinBox3, SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox( double ) ) ); @@ -146,9 +152,6 @@ void GenerationGUI_FillingDlg::Init() connect( GroupPoints->CheckBox1, SIGNAL( stateChanged( int ) ), this, SLOT( ApproxChanged() ) ); - connect( GroupPoints->CheckBox2, SIGNAL( stateChanged( int ) ), - this, SLOT( UseOriChanged() ) ); - connect( myGeomGUI, SIGNAL( SignalDefaultStepValueChanged( double ) ), this, SLOT( SetDoubleSpinBoxStep( double ) ) ); connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), @@ -322,12 +325,12 @@ void GenerationGUI_FillingDlg::ValueChangedInSpinBox( double newValue ) } //================================================================================= -// function : UseOriChanged() +// function : MethodChanged // purpose : //================================================================================= -void GenerationGUI_FillingDlg::UseOriChanged() +void GenerationGUI_FillingDlg::MethodChanged() { - myIsUseOri = GroupPoints->CheckBox2->isChecked(); + myMethod = GroupPoints->ComboBox1->currentIndex(); displayPreview(); } @@ -375,9 +378,19 @@ bool GenerationGUI_FillingDlg::execute( ObjectList& objects ) { GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation()); + + GEOM::filling_oper_method aMethod; + switch (GroupPoints->ComboBox1->currentIndex()) + { + case 0: aMethod = GEOM::FOM_Default; break; + case 1: aMethod = GEOM::FOM_UseOri; break; + case 2: aMethod = GEOM::FOM_AutoCorrect; break; + default: break; + } + GEOM::GEOM_Object_var anObj = anOper->MakeFilling( myCompound, myMinDeg, myMaxDeg, myTol2D, myTol3D, - myNbIter, myIsUseOri, myIsApprox ); + myNbIter, aMethod, myIsApprox ); if ( !anObj->_is_nil() ) { if ( !IsPreview() ) diff --git a/src/GenerationGUI/GenerationGUI_FillingDlg.h b/src/GenerationGUI/GenerationGUI_FillingDlg.h index f30dfa2bd..e7b8ac075 100644 --- a/src/GenerationGUI/GenerationGUI_FillingDlg.h +++ b/src/GenerationGUI/GenerationGUI_FillingDlg.h @@ -60,7 +60,7 @@ private: Standard_Real myTol2D; Standard_Integer myNbIter; bool myIsApprox; - bool myIsUseOri; + int myMethod; bool myOkCompound; /* to check when curv. compound is defined */ DlgRef_1Sel5Spin1Check* GroupPoints; @@ -73,7 +73,7 @@ private slots: void SelectionIntoArgument(); void SetEditCurrentArgument(); void ValueChangedInSpinBox( double ); - void UseOriChanged(); + void MethodChanged(); void ApproxChanged(); void SetDoubleSpinBoxStep( double ); }; -- 2.39.2