From: skv Date: Wed, 26 Feb 2014 09:13:55 +0000 (+0400) Subject: 0022490: [CEA 1057] Default tick of "Detect self-intersections" in Partition X-Git-Tag: V7_4_0a1~20 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2153a32ecf6663444aa904558e546d40d8edcc3a;p=modules%2Fgeom.git 0022490: [CEA 1057] Default tick of "Detect self-intersections" in Partition --- diff --git a/doc/salome/gui/GEOM/images/partition1.png b/doc/salome/gui/GEOM/images/partition1.png old mode 100755 new mode 100644 index c36e8b1bd..f2213999e Binary files a/doc/salome/gui/GEOM/images/partition1.png and b/doc/salome/gui/GEOM/images/partition1.png differ diff --git a/doc/salome/gui/GEOM/images/partition2.png b/doc/salome/gui/GEOM/images/partition2.png old mode 100755 new mode 100644 index 0035cce7e..4ea865eb7 Binary files a/doc/salome/gui/GEOM/images/partition2.png and b/doc/salome/gui/GEOM/images/partition2.png differ diff --git a/doc/salome/gui/GEOM/input/partition.doc b/doc/salome/gui/GEOM/input/partition.doc old mode 100644 new mode 100755 index 30ac52bbe..48d56c036 --- a/doc/salome/gui/GEOM/input/partition.doc +++ b/doc/salome/gui/GEOM/input/partition.doc @@ -51,10 +51,11 @@ In this case the Partition algorithm will work faster, but the result might diff default behavior. Detect Self-intersections check box is used to check self-intersection of arguments. -- If this option is switched on (by default), each input shape is checked for self-intersection. +It is enabled only if No sub-shapes intersection (Compounds only) is checked. +- If this option is switched off (by default), the partition algorithm is +performed without self-intersection checks. +- If this option is switched on, each input shape is checked for self-intersection. If self-intersection is detected, the operation is aborted. -- If this option is switched off, the partition algorithm is performed without self-intersection -checks. \note This algorithm does not find all types of self-intersections. It is tuned to detect vertex/vertex, vertex/edge, edge/edge, vertex/face and edge/face @@ -75,7 +76,7 @@ checks. geompy.MakePartition(ListOfShapes, ListOfTools, ListOfKeepInside, ListOfRemoveInside, Limit, RemoveWebs, ListOfMaterials, -KeepNonlimitShapes, checkSelfInte) +KeepNonlimitShapes) TUI Command (without sub-shapes intersection): @@ -105,11 +106,9 @@ Activate \ref restore_presentation_parameters_page "Advanced options" if require TUI Command: -geompy.MakeHalfPartition(Shape, Plane, checkSelfInte), where: +geompy.MakeHalfPartition(Shape, Plane), where: - \em Shape is a source shape to be intersected by the \em Plane - \em Plane is a tool shape, to intersect the \em Shape. -- \em checkSelfInte is a flag that indicates if the arguments should -be checked for self-intersection prior to the operation. Examples: diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 630b66067..f7af6efcb 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -2968,8 +2968,6 @@ module GEOM * Each shape from theRemoveInside must belong to theShapes also. * \param theRemoveWebs If TRUE, perform Glue 3D algorithm. * \param theMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE. - * \param IsCheckSelfInte If TRUE, perform check self intersection - * of arguments before an operation. * * \return New GEOM_Object, containing the result shapes. */ @@ -2980,8 +2978,7 @@ module GEOM in short theLimit, in boolean theRemoveWebs, in ListOfLong theMaterials, - in short theKeepNonlimitShapes, - in boolean IsCheckSelfInte); + in short theKeepNonlimitShapes); /*! * \brief Perform partition operation. @@ -2990,7 +2987,10 @@ module GEOM * a compound containing nonintersected shapes. Performance will be better * since intersection between shapes from compound is not performed. * - * Description of all parameters as in previous method MakePartition() + * Description of all parameters as in previous method MakePartition(). + * One additional parameter is provided: + * \param IsCheckSelfInte If TRUE, perform check self intersection + * of arguments before an operation. * * \note Passed compounds (via ListShapes or via ListTools) * have to consist of nonintersecting shapes. @@ -3011,13 +3011,10 @@ module GEOM * \brief Perform partition of the Shape with the Plane * \param theShape Shape to be intersected. * \param thePlane Tool shape, to intersect theShape. - * \param IsCheckSelfInte If TRUE, perform check self intersection - * of arguments before an operation. * \return New GEOM_Object, containing the result shape. */ GEOM_Object MakeHalfPartition (in GEOM_Object theShape, - in GEOM_Object thePlane, - in boolean IsCheckSelfInte); + in GEOM_Object thePlane); }; // # GEOM_ICurvesOperations: diff --git a/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx b/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx index 8b2b2a1e9..a503e4c09 100644 --- a/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IBooleanOperations.cxx @@ -492,7 +492,7 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakePartition } pd << "], " << theKeepNonlimitShapes; - if (IsCheckSelfInte) { + if (IsCheckSelfInte && !thePerformSelfIntersections) { pd << ", True"; } @@ -508,8 +508,7 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakePartition */ //============================================================================= Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeHalfPartition - (Handle(GEOM_Object) theShape, Handle(GEOM_Object) thePlane, - const Standard_Boolean IsCheckSelfInte) + (Handle(GEOM_Object) theShape, Handle(GEOM_Object) thePlane) { SetErrorCode(KO); @@ -535,7 +534,6 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeHalfPartition aCI.SetShape(aRef1); aCI.SetPlane(aRef2); - aCI.SetCheckSelfIntersection(IsCheckSelfInte); //Compute the Partition value try { @@ -556,13 +554,7 @@ Handle(GEOM_Object) GEOMImpl_IBooleanOperations::MakeHalfPartition //Make a Python command GEOM::TPythonDump pd (aFunction); pd << aPart << " = geompy.MakeHalfPartition(" - << theShape << ", " << thePlane; - - if (IsCheckSelfInte) { - pd << ", True"; - } - - pd << ")"; + << theShape << ", " << thePlane << ")"; SetErrorCode(OK); return aPart; diff --git a/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx b/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx index 6fb712589..8db023a01 100644 --- a/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_IBooleanOperations.hxx @@ -68,8 +68,7 @@ class GEOMImpl_IBooleanOperations : public GEOM_IOperations { const Standard_Boolean IsCheckSelfInte); Standard_EXPORT Handle(GEOM_Object) MakeHalfPartition (Handle(GEOM_Object) theShape, - Handle(GEOM_Object) thePlane, - const Standard_Boolean IsCheckSelfInte); + Handle(GEOM_Object) thePlane); private: diff --git a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx index 97625c539..c50b0a86a 100644 --- a/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PartitionDriver.cxx @@ -174,7 +174,7 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const } // Check self-intersection. - if (isCheckSelfInte) { + if (isCheckSelfInte && aType == PARTITION_NO_SELF_INTERSECTIONS) { CheckSelfIntersection(aShape_i); } @@ -216,7 +216,7 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const } // Check self-intersection. - if (isCheckSelfInte) { + if (isCheckSelfInte && aType == PARTITION_NO_SELF_INTERSECTIONS) { CheckSelfIntersection(aShape_i); } @@ -359,12 +359,6 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const Standard_NullObject::Raise("In Half Partition a shape or a plane is null"); } - // Check self-intersection. - if (isCheckSelfInte) { - CheckSelfIntersection(aShapeArg); - CheckSelfIntersection(aPlaneArg); - } - TopoDS_Shape aShapeArg_copy; TopoDS_Shape aPlaneArg_copy; { @@ -405,8 +399,20 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(TFunction_Logbook& log) const } // add object shapes that are in ListShapes; - PS.AddArgument(aShapeArg_copy); - //PS.AddShape(aShapeArg); + TopTools_ListOfShape aSimpleShapes; + TopTools_MapOfShape aShapesMap; + + PrepareShapes(aShapeArg_copy, aType, aSimpleShapes); + + TopTools_ListIteratorOfListOfShape aSimpleIter (aSimpleShapes); + + for (; aSimpleIter.More(); aSimpleIter.Next()) { + const TopoDS_Shape& aSimpleSh = aSimpleIter.Value(); + + if (aShapesMap.Add(aSimpleSh)) { + PS.AddArgument(aSimpleSh); + } + } // add tool shapes that are in ListTools and not in ListShapes; PS.AddTool(aPlaneArg_copy); @@ -560,6 +566,10 @@ GetCreationInformation(std::string& theOperationName, AddParam( theParams, "Resulting type", (TopAbs_ShapeEnum) aCI.GetLimit()); AddParam( theParams, "Keep shapes of lower type", aCI.GetKeepNonlimitShapes()); AddParam( theParams, "No object intersections", ( aType == PARTITION_NO_SELF_INTERSECTIONS )); + + if (aType == PARTITION_NO_SELF_INTERSECTIONS) { + AddParam( theParams, "Check self-intersections", aCI.GetCheckSelfIntersection()); + } break; case PARTITION_HALF: AddParam( theParams, "Object", aCI.GetShape() ); diff --git a/src/GEOM_I/GEOM_IBooleanOperations_i.cc b/src/GEOM_I/GEOM_IBooleanOperations_i.cc index 2d56814e1..66dbcd625 100644 --- a/src/GEOM_I/GEOM_IBooleanOperations_i.cc +++ b/src/GEOM_I/GEOM_IBooleanOperations_i.cc @@ -200,8 +200,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition CORBA::Short theLimit, CORBA::Boolean theRemoveWebs, const GEOM::ListOfLong& theMaterials, - CORBA::Short theKeepNonlimitShapes, - CORBA::Boolean IsCheckSelfInte) + CORBA::Short theKeepNonlimitShapes) { GEOM::GEOM_Object_var aGEOMObject; @@ -235,7 +234,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartition theLimit, theRemoveWebs, aMaterials, theKeepNonlimitShapes, /*PerformSelfIntersections*/Standard_True, - IsCheckSelfInte); + /*IsCheckSelfInte*/Standard_False); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); @@ -304,8 +303,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakePartitionNonSelfIntersected //============================================================================= GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeHalfPartition (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane, - CORBA::Boolean IsCheckSelfInte) + GEOM::GEOM_Object_ptr thePlane) { GEOM::GEOM_Object_var aGEOMObject; @@ -320,7 +318,7 @@ GEOM::GEOM_Object_ptr GEOM_IBooleanOperations_i::MakeHalfPartition // Make Half Partition Handle(GEOM_Object) anObject = - GetOperations()->MakeHalfPartition(aSh, aPl, IsCheckSelfInte); + GetOperations()->MakeHalfPartition(aSh, aPl); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); diff --git a/src/GEOM_I/GEOM_IBooleanOperations_i.hh b/src/GEOM_I/GEOM_IBooleanOperations_i.hh index 5d1c3489b..dea57d833 100644 --- a/src/GEOM_I/GEOM_IBooleanOperations_i.hh +++ b/src/GEOM_I/GEOM_IBooleanOperations_i.hh @@ -64,8 +64,7 @@ class GEOM_I_EXPORT GEOM_IBooleanOperations_i : CORBA::Short theLimit, CORBA::Boolean theRemoveWebs, const GEOM::ListOfLong& theMaterials, - CORBA::Short theKeepNonlimitShapes, - CORBA::Boolean IsCheckSelfInte); + CORBA::Short theKeepNonlimitShapes); GEOM::GEOM_Object_ptr MakePartitionNonSelfIntersectedShape (const GEOM::ListOfGO& theShapes, const GEOM::ListOfGO& theTools, @@ -79,8 +78,7 @@ class GEOM_I_EXPORT GEOM_IBooleanOperations_i : GEOM::GEOM_Object_ptr MakeHalfPartition (GEOM::GEOM_Object_ptr theShape, - GEOM::GEOM_Object_ptr thePlane, - CORBA::Boolean IsCheckSelfInte); + GEOM::GEOM_Object_ptr thePlane); ::GEOMImpl_IBooleanOperations* GetOperations() { return (::GEOMImpl_IBooleanOperations*)GetImpl(); } diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 708f793dc..71e38f9d2 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -1528,7 +1528,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePartition (GEOM::GEOM_List_ptr theSha myBoolOp->MakePartition(aListImplS->GetList(), aListImplT->GetList(), aListImplKI->GetList(), aListImplRI->GetList(), theLimit, theRemoveWebs, aListImplM->GetList(), - theKeepNonlimitShapes, false); + theKeepNonlimitShapes); endService( " GEOM_Superv_i::MakePartition" ); return anObj; } @@ -1546,7 +1546,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeHalfPartition (GEOM::GEOM_Object_ptr th MESSAGE("GEOM_Superv_i::MakeHalfPartition"); getBoolOp(); GEOM::GEOM_Object_ptr anObj = - myBoolOp->MakeHalfPartition(theShape, thePlane, false); + myBoolOp->MakeHalfPartition(theShape, thePlane); endService( " GEOM_Superv_i::MakeHalfPartition" ); return anObj; } diff --git a/src/GEOM_SWIG/geomBuilder.py b/src/GEOM_SWIG/geomBuilder.py index 9b1a12a27..62bf941d0 100644 --- a/src/GEOM_SWIG/geomBuilder.py +++ b/src/GEOM_SWIG/geomBuilder.py @@ -7115,16 +7115,6 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # target type (equal to Limit) are kept in the result, # else standalone shapes of lower dimension # are kept also (if they exist). - # @param checkSelfInte The flag that tells if the arguments should - # be checked for self-intersection prior to the operation. - # - # @note This algorithm doesn't find all types of self-intersections. - # It is tuned to detect vertex/vertex, vertex/edge, edge/edge, - # vertex/face and edge/face intersections. Face/face - # intersections detection is switched off as it is a - # time-consuming operation that gives an impact on performance. - # To find all self-intersections please use - # CheckSelfIntersections() method. # # @param theName Object name; when specified, this parameter is used # for result publication in the study. Otherwise, if automatic @@ -7149,7 +7139,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # @ref tui_partition "Example" def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[], - KeepNonlimitShapes=0, checkSelfInte=False, theName=None): + KeepNonlimitShapes=0, theName=None): """ Perform partition operation. @@ -7163,18 +7153,6 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): target type (equal to Limit) are kept in the result, else standalone shapes of lower dimension are kept also (if they exist). - checkSelfInte The flag that tells if the arguments should - be checked for self-intersection prior to - the operation. - - Note: - This algorithm doesn't find all types of self-intersections. - It is tuned to detect vertex/vertex, vertex/edge, edge/edge, - vertex/face and edge/face intersections. Face/face - intersections detection is switched off as it is a - time-consuming operation that gives an impact on performance. - To find all self-intersections please use - CheckSelfIntersections() method. theName Object name; when specified, this parameter is used for result publication in the study. Otherwise, if automatic @@ -7209,7 +7187,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): anObj = self.BoolOp.MakePartition(ListShapes, ListTools, ListKeepInside, ListRemoveInside, Limit, RemoveWebs, ListMaterials, - KeepNonlimitShapes, checkSelfInte); + KeepNonlimitShapes); RaiseIfFailed("MakePartition", self.BoolOp) self._autoPublish(anObj, theName, "partition") return anObj @@ -7219,7 +7197,18 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # compound contains nonintersected shapes. Performance will be better # since intersection between shapes from compound is not performed. # - # Description of all parameters as in previous method MakePartition() + # Description of all parameters as in previous method MakePartition(). + # One additional parameter is provided: + # @param checkSelfInte The flag that tells if the arguments should + # be checked for self-intersection prior to the operation. + # + # @note This algorithm doesn't find all types of self-intersections. + # It is tuned to detect vertex/vertex, vertex/edge, edge/edge, + # vertex/face and edge/face intersections. Face/face + # intersections detection is switched off as it is a + # time-consuming operation that gives an impact on performance. + # To find all self-intersections please use + # CheckSelfIntersections() method. # # @note Passed compounds (via ListShapes or via ListTools) # have to consist of nonintersecting shapes. @@ -7239,7 +7228,20 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): since intersection between shapes from compound is not performed. Parameters: - Description of all parameters as in method geompy.MakePartition + Description of all parameters as in method geompy.MakePartition. + One additional parameter is provided: + checkSelfInte The flag that tells if the arguments should + be checked for self-intersection prior to + the operation. + + Note: + This algorithm doesn't find all types of self-intersections. + It is tuned to detect vertex/vertex, vertex/edge, edge/edge, + vertex/face and edge/face intersections. Face/face + intersections detection is switched off as it is a + time-consuming operation that gives an impact on performance. + To find all self-intersections please use + CheckSelfIntersections() method. NOTE: Passed compounds (via ListShapes or via ListTools) @@ -7268,7 +7270,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # \n @ref swig_Partition "Example 2" def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[], Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[], - KeepNonlimitShapes=0, checkSelfInte=False, theName=None): + KeepNonlimitShapes=0, theName=None): """ See method geompy.MakePartition for more information. """ @@ -7277,58 +7279,35 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): anObj = self.MakePartition(ListShapes, ListTools, ListKeepInside, ListRemoveInside, Limit, RemoveWebs, ListMaterials, - KeepNonlimitShapes, checkSelfInte, - theName); + KeepNonlimitShapes, theName); return anObj ## Perform partition of the Shape with the Plane # @param theShape Shape to be intersected. # @param thePlane Tool shape, to intersect theShape. - # @param checkSelfInte The flag that tells if the arguments should - # be checked for self-intersection prior to the operation. # @param theName Object name; when specified, this parameter is used # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @note This algorithm doesn't find all types of self-intersections. - # It is tuned to detect vertex/vertex, vertex/edge, edge/edge, - # vertex/face and edge/face intersections. Face/face - # intersections detection is switched off as it is a - # time-consuming operation that gives an impact on performance. - # To find all self-intersections please use - # CheckSelfIntersections() method. - # # @return New GEOM.GEOM_Object, containing the result shape. # # @ref tui_partition "Example" - def MakeHalfPartition(self, theShape, thePlane, checkSelfInte=False, theName=None): + def MakeHalfPartition(self, theShape, thePlane, theName=None): """ Perform partition of the Shape with the Plane Parameters: theShape Shape to be intersected. thePlane Tool shape, to intersect theShape. - checkSelfInte The flag that tells if the arguments should - be checked for self-intersection prior to - the operation. theName Object name; when specified, this parameter is used for result publication in the study. Otherwise, if automatic publication is switched on, default value is used for result name. - Note: - This algorithm doesn't find all types of self-intersections. - It is tuned to detect vertex/vertex, vertex/edge, edge/edge, - vertex/face and edge/face intersections. Face/face - intersections detection is switched off as it is a - time-consuming operation that gives an impact on performance. - To find all self-intersections please use - CheckSelfIntersections() method. - Returns: New GEOM.GEOM_Object, containing the result shape. """ # Example: see GEOM_TestAll.py - anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane, checkSelfInte) + anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane) RaiseIfFailed("MakeHalfPartition", self.BoolOp) self._autoPublish(anObj, theName, "partition") return anObj diff --git a/src/OperationGUI/OperationGUI_PartitionDlg.cxx b/src/OperationGUI/OperationGUI_PartitionDlg.cxx index b6f4cb9d0..07ea18eb4 100644 --- a/src/OperationGUI/OperationGUI_PartitionDlg.cxx +++ b/src/OperationGUI/OperationGUI_PartitionDlg.cxx @@ -144,7 +144,7 @@ void OperationGUI_PartitionDlg::Init() GroupPoints->ComboBox1->addItem( tr( "GEOM_RECONSTRUCTION_LIMIT_VERTEX" ) ); GroupPoints->ComboBox1->setItemData(GroupPoints->ComboBox1->count()-1, GEOM::VERTEX); GroupPoints->CheckButton1->setChecked( false ); - mySelfInte->setChecked(true); + mySelfInte->setChecked(false); mainFrame()->GroupBoxPublish->show(); @@ -167,8 +167,10 @@ void OperationGUI_PartitionDlg::Init() connect( GroupPoints->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(processPreview()) ); connect( GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(processPreview()) ); + connect( GroupPoints->CheckButton2, SIGNAL(toggled(bool)), mySelfInte, SLOT(setEnabled(bool)) ); connect( mySelfInte, SIGNAL(toggled(bool)), this, SLOT(processPreview()) ); + mySelfInte->setEnabled(GroupPoints->CheckButton2->isChecked()); initName( tr( "GEOM_PARTITION" ) ); ConstructorsClicked( 0 ); @@ -201,6 +203,7 @@ void OperationGUI_PartitionDlg::ConstructorsClicked( int constructorId ) GroupPoints->ComboBox1->setCurrentIndex( 0 ); GroupPoints->CheckButton1->show(); GroupPoints->CheckButton2->show(); + mySelfInte->show(); GroupPoints->PushButton1->setDown( true ); GroupPoints->PushButton2->setDown( false ); GroupPoints->LineEdit1->setEnabled(true); @@ -214,6 +217,7 @@ void OperationGUI_PartitionDlg::ConstructorsClicked( int constructorId ) GroupPoints->TextLabel2->setText( tr( "GEOM_PLANE" ) ); GroupPoints->CheckButton1->hide(); GroupPoints->CheckButton2->hide(); + mySelfInte->hide(); GroupPoints->PushButton1->setDown( true ); GroupPoints->LineEdit1->setEnabled(true); break; @@ -446,13 +450,13 @@ bool OperationGUI_PartitionDlg::execute (ObjectList& objects) { bool res = false; GEOM::GEOM_Object_var anObj; - bool isDetectSelfInte = mySelfInte->isChecked(); GEOM::GEOM_IBooleanOperations_var anOper = GEOM::GEOM_IBooleanOperations::_narrow(getOperation()); switch ( getConstructorId() ) { case 0: { + bool isDetectSelfInte = mySelfInte->isChecked(); int aLimit = GetLimit(); int aKeepNonlimitShapes = GroupPoints->CheckButton1->isChecked(); bool aNoSelfIntersection = GroupPoints->CheckButton2->isChecked(); @@ -464,15 +468,13 @@ bool OperationGUI_PartitionDlg::execute (ObjectList& objects) isDetectSelfInte) : anOper->MakePartition(myListShapes, myListTools, myListKeepInside, myListRemoveInside, - aLimit, false, myListMaterials, aKeepNonlimitShapes, - isDetectSelfInte); + aLimit, false, myListMaterials, aKeepNonlimitShapes); res = true; } break; case 1: { - anObj = anOper->MakeHalfPartition( myListShapes[0].in(), myListTools[0].in(), - isDetectSelfInte ); + anObj = anOper->MakeHalfPartition(myListShapes[0].in(), myListTools[0].in()); res = true; } break;