From 1839b501d4b7e21938af8af18c060fdf042302e0 Mon Sep 17 00:00:00 2001 From: skv Date: Thu, 11 Jun 2015 11:53:02 +0300 Subject: [PATCH] 0022782: [CEA 1315] GetFirstVertex does not return the edge's starting point --- doc/salome/gui/GEOM/images/point3.png | Bin 23917 -> 26808 bytes doc/salome/gui/GEOM/input/creating_point.doc | 5 +++-- idl/GEOM_Gen.idl | 5 ++++- src/BasicGUI/BasicGUI_PointDlg.cxx | 16 +++++++++++--- src/BasicGUI/BasicGUI_PointDlg.h | 6 +++--- src/GEOMGUI/GEOM_msg_en.ts | 4 ++++ src/GEOMImpl/GEOMImpl_IBasicOperations.cxx | 21 ++++++++++++------- src/GEOMImpl/GEOMImpl_IBasicOperations.hxx | 20 +++++++++++------- src/GEOMImpl/GEOMImpl_IPoint.hxx | 7 ++++--- src/GEOMImpl/GEOMImpl_PointDriver.cxx | 10 ++++++++- src/GEOM_I/GEOM_IBasicOperations_i.cc | 8 ++++--- src/GEOM_I/GEOM_IBasicOperations_i.hh | 6 ++++-- src/GEOM_I_Superv/GEOM_Superv_i.cc | 2 +- src/GEOM_SWIG/geomBuilder.py | 20 +++++++++++++++--- 14 files changed, 93 insertions(+), 37 deletions(-) mode change 100755 => 100644 doc/salome/gui/GEOM/images/point3.png mode change 100755 => 100644 src/GEOMImpl/GEOMImpl_IPoint.hxx diff --git a/doc/salome/gui/GEOM/images/point3.png b/doc/salome/gui/GEOM/images/point3.png old mode 100755 new mode 100644 index 8b4daecc19890f68633678bf9caa4e68b1ca4266..57cccab0abd4350a8befe9a5306bc0d4df26ad55 GIT binary patch literal 26808 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 literal 23917 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 Z>yLR((Y-}d1u#Y(p{H%Am7`&O?;r61=vn{( diff --git a/doc/salome/gui/GEOM/input/creating_point.doc b/doc/salome/gui/GEOM/input/creating_point.doc index cc8790624..5929a8fd1 100644 --- a/doc/salome/gui/GEOM/input/creating_point.doc +++ b/doc/salome/gui/GEOM/input/creating_point.doc @@ -28,9 +28,10 @@ the position of this point regarding the reference one. \n Thirdly, we can define a point by an \b Edge and a \b Parameter indicating its position on the Edge, ranging from 0.0 to 1.0. For example, 0.5 means that the point is located in the middle of the edge. -\n TUI Command: geompy.MakeVertexOnCurve(Edge,Parameter). +\n TUI Command: geompy.MakeVertexOnCurve(Edge,Parameter,takeOrientationIntoAccount). \n Arguments: Name + 1 edge + 1 Parameter defining the -position of the point on the given edge. +position of the point on the given edge + flag that tells if it is necessary +to take the edge orientation into account. \image html point3.png Alternatively, it is possible to define a point by an \b Edge and a \b Length. diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index c301b79ae..d7c643562 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -732,10 +732,13 @@ module GEOM * Create a point, corresponding to the given parameter on the given curve. * \param theRefCurve The referenced curve. * \param theParameter Value of parameter on the referenced curve. + * \param takeOrientationIntoAccount flag that tells if it is necessary + * to take the curve's orientation into account. * \return New GEOM_Object, containing the created point. */ GEOM_Object MakePointOnCurve (in GEOM_Object theRefCurve, - in double theParameter); + in double theParameter, + in boolean takeOrientationIntoAccount); /*! * \brief Create a point, corresponding to the given length on the given curve. diff --git a/src/BasicGUI/BasicGUI_PointDlg.cxx b/src/BasicGUI/BasicGUI_PointDlg.cxx index 983666d28..0a374c4d7 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.cxx +++ b/src/BasicGUI/BasicGUI_PointDlg.cxx @@ -125,13 +125,17 @@ BasicGUI_PointDlg::BasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* paren GroupXYZ->TextLabel2->setText(tr("GEOM_Y")); GroupXYZ->TextLabel3->setText(tr("GEOM_Z")); - GroupOnCurve = new DlgRef_2Sel1Spin(centralWidget()); + GroupOnCurve = new DlgRef_2Sel1Spin2Check(centralWidget()); GroupOnCurve->GroupBox1->setTitle(tr("GEOM_POINT_ON_EDGE")); GroupOnCurve->TextLabel1->setText(tr("GEOM_EDGE")); GroupOnCurve->TextLabel2->setText(tr("GEOM_START_POINT")); GroupOnCurve->TextLabel3->setText(tr("GEOM_PARAMETER")); GroupOnCurve->PushButton1->setIcon(image2); GroupOnCurve->PushButton2->setIcon(image2); + GroupOnCurve->TextLabel3->setText(tr("GEOM_PARAMETER")); + GroupOnCurve->CheckButton1->setText(tr("GEOM_TAKE_ORIENTATION_INTO_ACCOUNT")); + GroupOnCurve->CheckButton2->setAttribute( Qt::WA_DeleteOnClose ); + GroupOnCurve->CheckButton2->close(); GroupOnSurface = new DlgRef_1Sel2Spin(centralWidget()); GroupOnSurface->GroupBox1->setTitle(tr("GEOM_POINT_ON_FACE")); @@ -258,6 +262,7 @@ void BasicGUI_PointDlg::Init() initSpinBox(GroupOnCurve->SpinBox_DX, 0., 1., step, "parametric_precision"); GroupOnCurve->SpinBox_DX->setValue(0.5); + GroupOnCurve->CheckButton1->setChecked(true); initSpinBox(GroupOnSurface->SpinBox_DX, 0., 1., step, "parametric_precision"); GroupOnSurface->SpinBox_DX->setValue(0.5); @@ -275,6 +280,8 @@ void BasicGUI_PointDlg::Init() connect(myParamCoord, SIGNAL(buttonClicked(int)), this, SLOT(ClickParamCoord(int))); + connect(GroupOnCurve->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CheckBoxClicked())); + connect(GroupOnCurve->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(GroupOnCurve->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(GroupOnSurface->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); @@ -669,7 +676,7 @@ void BasicGUI_PointDlg::ValueChangedInSpinBox(double newValue) // function : CheckBoxClicked() // purpose : Check Boxes Management //================================================================================= -void BasicGUI_PointDlg::CheckBoxClicked(int State) +void BasicGUI_PointDlg::CheckBoxClicked() { displayPreview(true); } @@ -821,7 +828,9 @@ bool BasicGUI_PointDlg::execute(ObjectList& objects) case GEOM_POINT_EDGE : { if (myParamCoord->checkedId() == PARAM_VALUE) { - anObj = anOper->MakePointOnCurve(myEdge.get(), getParameter()); + bool isUseOrientation = GroupOnCurve->CheckButton1->isChecked(); + + anObj = anOper->MakePointOnCurve(myEdge.get(), getParameter(), isUseOrientation); aParameters<SpinBox_DX->text(); } else if (myParamCoord->checkedId() == LENGTH_VALUE) { @@ -973,6 +982,7 @@ void BasicGUI_PointDlg::updateParamCoord(bool theIsUpdate) GroupOnCurve->LineEdit2->setVisible(isLength); GroupOnCurve->TextLabel3->setVisible(isParam || isLength); GroupOnCurve->SpinBox_DX->setVisible(isParam || isLength); + GroupOnCurve->CheckButton1->setVisible(isParam); if (isParam){ initSpinBox(GroupOnCurve->SpinBox_DX, 0., 1., 0.1, "parametric_precision"); GroupOnCurve->SpinBox_DX->setValue(0.5); diff --git a/src/BasicGUI/BasicGUI_PointDlg.h b/src/BasicGUI/BasicGUI_PointDlg.h index 7002333db..ffc01a165 100644 --- a/src/BasicGUI/BasicGUI_PointDlg.h +++ b/src/BasicGUI/BasicGUI_PointDlg.h @@ -31,7 +31,7 @@ #include "GEOM_GenericObjPtr.h" #include -class DlgRef_2Sel1Spin; +class DlgRef_2Sel1Spin2Check; class DlgRef_3Spin; class DlgRef_2Sel; class DlgRef_1Sel3Spin; @@ -88,7 +88,7 @@ private: DlgRef_3Spin* GroupXYZ; DlgRef_1Sel3Spin* GroupRefPoint; - DlgRef_2Sel1Spin* GroupOnCurve; + DlgRef_2Sel1Spin2Check* GroupOnCurve; DlgRef_2Sel* GroupLineIntersection; DlgRef_1Sel2Spin* GroupOnSurface; @@ -115,7 +115,7 @@ private slots: void ValueChangedInSpinBox( double ); void SetDoubleSpinBoxStep( double ); void ClickParamCoord( int ); - void CheckBoxClicked( int ); + void CheckBoxClicked(); void updateSize(); }; diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index 9bed663c4..d9ce747c7 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -1352,6 +1352,10 @@ Please, select face, shell or solid and try again GEOM_LENGTH_VALUE By length + + GEOM_TAKE_ORIENTATION_INTO_ACCOUNT + Take edge orientation into account + GEOM_PARTITION Partition diff --git a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx b/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx index 576ba74af..8f282f2ae 100644 --- a/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IBasicOperations.cxx @@ -186,10 +186,11 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointWithReference //============================================================================= Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom (Handle(GEOM_Object) theGeomObj, - double theParam1, - double theParam2, - double theParam3, + double theParam1, + double theParam2, + double theParam3, const PointLocation theLocation, + const bool takeOrientationIntoAccount, Handle(GEOM_Object) theRefPoint) { SetErrorCode(KO); @@ -226,6 +227,7 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom case PointOn_CurveByParam: aPI.SetCurve(aRefFunction); aPI.SetParameter(theParam1); + aPI.SetTakeOrientationIntoAccount(takeOrientationIntoAccount); break; case PointOn_CurveByLength: aPI.SetCurve(aRefFunction); @@ -277,7 +279,8 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom { case PointOn_CurveByParam: GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnCurve(" - << theGeomObj << ", " << theParam1 << ")"; + << theGeomObj << ", " << theParam1 << ", " + << takeOrientationIntoAccount << ")"; break; case PointOn_CurveByLength: GEOM::TPythonDump(aFunction) << aPoint << " = geompy.MakeVertexOnCurveByLength(" @@ -315,9 +318,12 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::makePointOnGeom */ //============================================================================= Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurve - (Handle(GEOM_Object) theCurve, double theParameter) + (Handle(GEOM_Object) theCurve, + double theParameter, + bool takeOrientationIntoAccount) { - return makePointOnGeom(theCurve, theParameter, 0.0, 0.0, PointOn_CurveByParam); + return makePointOnGeom(theCurve, theParameter, 0.0, 0.0, PointOn_CurveByParam, + takeOrientationIntoAccount); } //============================================================================= @@ -344,7 +350,8 @@ Handle(GEOM_Object) GEOMImpl_IBasicOperations::MakePointOnCurveByLength double theLength, Handle(GEOM_Object) theStartPoint) { - return makePointOnGeom(theCurve, theLength, 0.0, 0.0, PointOn_CurveByLength, theStartPoint); + return makePointOnGeom(theCurve, theLength, 0.0, 0.0, PointOn_CurveByLength, + false, theStartPoint); } //============================================================================= diff --git a/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx b/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx index e3960f2f5..df8051ab6 100644 --- a/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_IBasicOperations.hxx @@ -40,8 +40,10 @@ class GEOMImpl_IBasicOperations : public GEOM_IOperations { Standard_EXPORT Handle(GEOM_Object) MakePointWithReference (Handle(GEOM_Object) theReference, double theX, double theY, double theZ); - Standard_EXPORT Handle(GEOM_Object) MakePointOnCurve (Handle(GEOM_Object) theCurve, - double theParameter); + Standard_EXPORT Handle(GEOM_Object) MakePointOnCurve + (Handle(GEOM_Object) theCurve, + double theParameter, + bool takeOrientationIntoAccount); Standard_EXPORT Handle(GEOM_Object) MakePointOnCurveByLength (Handle(GEOM_Object) theCurve, double theLength, @@ -134,12 +136,14 @@ class GEOMImpl_IBasicOperations : public GEOM_IOperations { PointOn_Face }; - Handle(GEOM_Object) makePointOnGeom (Handle(GEOM_Object) theGeomObj, - double theParam1, - double theParam2, - double theParam3, - const PointLocation theLocation, - Handle(GEOM_Object) theRefPoint = 0); + Handle(GEOM_Object) makePointOnGeom + (Handle(GEOM_Object) theGeomObj, + double theParam1, + double theParam2, + double theParam3, + const PointLocation theLocation, + const bool takeOrientationIntoAccount = false, + Handle(GEOM_Object) theRefPoint = 0); }; #endif diff --git a/src/GEOMImpl/GEOMImpl_IPoint.hxx b/src/GEOMImpl/GEOMImpl_IPoint.hxx old mode 100755 new mode 100644 index 650330272..07f81f000 --- a/src/GEOMImpl/GEOMImpl_IPoint.hxx +++ b/src/GEOMImpl/GEOMImpl_IPoint.hxx @@ -40,7 +40,7 @@ #define ARG_LENGTH 11 -//#define ARG_FLAG 12 +#define ARG_USE_ORIENTATION 12 class GEOMImpl_IPoint { @@ -73,12 +73,13 @@ class GEOMImpl_IPoint void SetParameter(double theParam) { _func->SetReal(ARG_PARAM, theParam); } void SetParameter2(double theParam) { _func->SetReal(ARG_PARAM2, theParam); } void SetLength(double theLength) { _func->SetReal(ARG_LENGTH, theLength); } - //void SetReversed(bool theReversed) { _func->SetInteger(ARG_FLAG, theReversed); } + void SetTakeOrientationIntoAccount(bool takeOrientationIntoAccount) + { _func->SetInteger(ARG_USE_ORIENTATION, takeOrientationIntoAccount); } double GetParameter() { return _func->GetReal(ARG_PARAM); } double GetParameter2() { return _func->GetReal(ARG_PARAM2); } double GetLength() { return _func->GetReal(ARG_LENGTH); } - //bool GetReversed() { return _func->GetInteger(ARG_FLAG); } + bool GetTakeOrientationIntoAccount() { return _func->GetInteger(ARG_USE_ORIENTATION); } private: diff --git a/src/GEOMImpl/GEOMImpl_PointDriver.cxx b/src/GEOMImpl/GEOMImpl_PointDriver.cxx index 03edfc4c1..f80ba42b9 100644 --- a/src/GEOMImpl/GEOMImpl_PointDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PointDriver.cxx @@ -145,7 +145,14 @@ Standard_Integer GEOMImpl_PointDriver::Execute(TFunction_Logbook& log) const Standard_Real aFP, aLP, aP; Handle(Geom_Curve) aCurve = BRep_Tool::Curve(TopoDS::Edge(aRefShape), aFP, aLP); if ( !aCurve.IsNull() ) { - aP = aFP + (aLP - aFP) * aPI.GetParameter(); + if (aPI.GetTakeOrientationIntoAccount() && + aRefShape.Orientation() == TopAbs_REVERSED) { + aP = 1. - aPI.GetParameter(); + } else { + aP = aPI.GetParameter(); + } + + aP = aFP + (aLP - aFP) * aP; aPnt = aCurve->Value(aP); } else { @@ -393,6 +400,7 @@ GetCreationInformation(std::string& theOperationName, case POINT_CURVE_PAR: AddParam( theParams, "Edge", aCI.GetCurve() ); AddParam( theParams, "Parameter", aCI.GetParameter() ); + AddParam( theParams, "Use Orientation", aCI.GetTakeOrientationIntoAccount() ); break; case POINT_CURVE_COORD: AddParam( theParams, "X", aCI.GetX() ); diff --git a/src/GEOM_I/GEOM_IBasicOperations_i.cc b/src/GEOM_I/GEOM_IBasicOperations_i.cc index 1dcf544f9..b48adfff4 100644 --- a/src/GEOM_I/GEOM_IBasicOperations_i.cc +++ b/src/GEOM_I/GEOM_IBasicOperations_i.cc @@ -135,7 +135,9 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnLinesIntersection */ //============================================================================= GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve - (GEOM::GEOM_Object_ptr theCurve, CORBA::Double theParameter) + (GEOM::GEOM_Object_ptr theCurve, + CORBA::Double theParameter, + CORBA::Boolean takeOrientationIntoAccount) { GEOM::GEOM_Object_var aGEOMObject; @@ -147,8 +149,8 @@ GEOM::GEOM_Object_ptr GEOM_IBasicOperations_i::MakePointOnCurve if (aReference.IsNull()) return aGEOMObject._retn(); //Create the point - Handle(GEOM_Object) anObject = - GetOperations()->MakePointOnCurve(aReference, theParameter); + Handle(GEOM_Object) anObject = GetOperations()->MakePointOnCurve + (aReference, theParameter, takeOrientationIntoAccount); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); diff --git a/src/GEOM_I/GEOM_IBasicOperations_i.hh b/src/GEOM_I/GEOM_IBasicOperations_i.hh index ec55aee27..c3e1fa3ff 100644 --- a/src/GEOM_I/GEOM_IBasicOperations_i.hh +++ b/src/GEOM_I/GEOM_IBasicOperations_i.hh @@ -52,8 +52,10 @@ class GEOM_I_EXPORT GEOM_IBasicOperations_i : CORBA::Double theY, CORBA::Double theZ); - GEOM::GEOM_Object_ptr MakePointOnCurve (GEOM::GEOM_Object_ptr theCurve, - CORBA::Double theParameter); + GEOM::GEOM_Object_ptr MakePointOnCurve + (GEOM::GEOM_Object_ptr theCurve, + CORBA::Double theParameter, + CORBA::Boolean takeOrientationIntoAccount); GEOM::GEOM_Object_ptr MakePointOnCurveByLength (GEOM::GEOM_Object_ptr theCurve, CORBA::Double theLength, diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 8501474d8..bfd598ad5 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -722,7 +722,7 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakePointOnCurve (GEOM::GEOM_Object_ptr the beginService( " GEOM_Superv_i::MakePointOnCurve" ); MESSAGE("GEOM_Superv_i::MakePointOnCurve"); getBasicOp(); - GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter); + GEOM::GEOM_Object_ptr anObj = myBasicOp->MakePointOnCurve(theRefCurve, theParameter, false); endService( " GEOM_Superv_i::MakePointOnCurve" ); return anObj; } diff --git a/src/GEOM_SWIG/geomBuilder.py b/src/GEOM_SWIG/geomBuilder.py index 0a3d2c832..0e8257dec 100644 --- a/src/GEOM_SWIG/geomBuilder.py +++ b/src/GEOM_SWIG/geomBuilder.py @@ -1148,6 +1148,11 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): ## Create a point, corresponding to the given parameter on the given curve. # @param theRefCurve The referenced curve. # @param theParameter Value of parameter on the referenced curve. + # @param takeOrientationIntoAccount flag that tells if it is necessary + # to take the curve's orientation into account for the + # operation. I.e. if this flag is set, the results for the same + # parameters (except the value 0.5) is different for forward + # and reversed curves. If it is not set the result is the same. # @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. @@ -1156,13 +1161,20 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # # @ref tui_creation_point "Example" @ManageTransactions("BasicOp") - def MakeVertexOnCurve(self, theRefCurve, theParameter, theName=None): + def MakeVertexOnCurve(self, theRefCurve, theParameter, + takeOrientationIntoAccount=False, theName=None): """ Create a point, corresponding to the given parameter on the given curve. Parameters: theRefCurve The referenced curve. theParameter Value of parameter on the referenced curve. + takeOrientationIntoAccount flag that tells if it is necessary + to take the curve's orientation into account for the + operation. I.e. if this flag is set, the results for + the same parameters (except the value 0.5) is different + for forward and reversed curves. If it is not set + the result is the same. 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. @@ -1174,8 +1186,10 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25) """ # Example: see GEOM_TestAll.py - theParameter, Parameters = ParseParameters(theParameter) - anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter) + theParameter, takeOrientationIntoAccount, Parameters = ParseParameters( + theParameter, takeOrientationIntoAccount) + anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter, + takeOrientationIntoAccount) RaiseIfFailed("MakePointOnCurve", self.BasicOp) anObj.SetParameters(Parameters) self._autoPublish(anObj, theName, "vertex") -- 2.39.2