From f3c5197b3c91cac93dbd56a2462943bf82e81b51 Mon Sep 17 00:00:00 2001 From: dmv Date: Tue, 18 Nov 2008 12:56:56 +0000 Subject: [PATCH] 0019827: EDF 736 GEOM : Duplication of a object along an elliptic path --- .../gui/GEOM/images/transformation12.png | Bin 0 -> 7522 bytes .../gui/GEOM/images/transformation13.png | Bin 0 -> 28287 bytes .../gui/GEOM/images/transformation14.png | Bin 0 -> 3544 bytes .../gui/GEOM/images/transformation5.png | Bin 26284 -> 22783 bytes .../gui/GEOM/images/transformation6.png | Bin 27561 -> 24458 bytes .../GEOM/input/modify_location_operation.doc | 19 +- .../input/tui_transformation_operations.doc | 8 + idl/GEOM_Gen.idl | 14 + idl/GEOM_Superv.idl | 4 + resources/Makefile.am | 1 + resources/position3.png | Bin 0 -> 891 bytes src/DlgRef/DlgRef_4Sel1Spin2Check_QTD.ui | 93 +++--- src/GEOMGUI/GEOM_images.ts | 4 + src/GEOMGUI/GEOM_msg_en.ts | 4 + src/GEOMImpl/GEOMImpl_IPosition.hxx | 14 +- .../GEOMImpl_ITransformOperations.cxx | 68 +++++ .../GEOMImpl_ITransformOperations.hxx | 5 + src/GEOMImpl/GEOMImpl_PositionDriver.cxx | 111 +++++++ src/GEOMImpl/GEOMImpl_Types.hxx | 1 + src/GEOM_I/GEOM_ITransformOperations_i.cc | 40 +++ src/GEOM_I/GEOM_ITransformOperations_i.hh | 5 + src/GEOM_I_Superv/GEOM_Superv_i.cc | 16 + src/GEOM_I_Superv/GEOM_Superv_i.hh | 4 + src/GEOM_SWIG/GEOM_TestAll.py | 2 + src/GEOM_SWIG/geompyDC.py | 13 + .../TransformationGUI_PositionDlg.cxx | 273 +++++++++++++++--- .../TransformationGUI_PositionDlg.h | 10 +- 27 files changed, 616 insertions(+), 93 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/transformation12.png create mode 100644 doc/salome/gui/GEOM/images/transformation13.png create mode 100644 doc/salome/gui/GEOM/images/transformation14.png create mode 100644 resources/position3.png diff --git a/doc/salome/gui/GEOM/images/transformation12.png b/doc/salome/gui/GEOM/images/transformation12.png new file mode 100644 index 0000000000000000000000000000000000000000..66ea9841552f7ce93a747c0e66a72b4ddd4790ff GIT binary patch literal 7522 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 Pv26ft?9ioFXJh^kermuS literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/transformation5.png b/doc/salome/gui/GEOM/images/transformation5.png index 9b405c8116a0544db882d4349e4c4324773aee93..48b632622bed3ce4a3c2f11ec6c7486a8fcb0ed7 100755 GIT binary patch literal 22783 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 literal 27561 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 V&5_T5uO=Z;eWs~c{?y{#zX2b!{Create a copy checkbox allows to keep the initial object, +otherwise it will be removed. +\n Select Unpublished edges checkbox allows to select subshape edges on +the other objects. +\n Arguments: Name + one or several objects + Translation path. +\n Advanced option: + \ref restore_presentation_parameters_page "Set presentation + parameters and subshapes from arguments". + +\image html transformation13.png + +\image html transformation14.png + +\image html transformation12.png + \n TUI Command: geompy.MakePosition(theObject, theStartLCS, theEndLCS), where \em theObject is a shape, location of which is modified, \em theStartLCS is a location to move the shape from, \em theEndLCS is a location to move the shape to. \n Our TUI Scripts provide you with useful examples of the use -of \ref tui_translation "Transformation Operations". +of \ref tui_modify_location "Transformation Operations". */ diff --git a/doc/salome/gui/GEOM/input/tui_transformation_operations.doc b/doc/salome/gui/GEOM/input/tui_transformation_operations.doc index a4863b537..73985a581 100644 --- a/doc/salome/gui/GEOM/input/tui_transformation_operations.doc +++ b/doc/salome/gui/GEOM/input/tui_transformation_operations.doc @@ -115,6 +115,7 @@ v = geompy.MakeVector(p1, p2) height = 35 radius1 = 20 cylinder = geompy.MakeCylinder(p1, v, radius1, height) +circle = geompy.MakeCircle(p2, v, radius1) # create local coordinate systems cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0) @@ -122,18 +123,25 @@ cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0) # modify the location of the given object position = geompy.MakePosition(cylinder, cs1, cs2) +position2 = geompy.PositionAlongPath(position, circle, 0.75, 1) # add objects in the study id_cs1 = geompy.addToStudy(cs1, "Coordinate system 1") id_cs2 = geompy.addToStudy(cs2, "Coordinate system 2") id_cylinder = geompy.addToStudy(cylinder, "Cylinder") +id_circle = geompy.addToStudy(circle, "Circle") id_position = geompy.addToStudy(position, "Position") +id_position2 = geompy.addToStudy(position2, "PositionAlongPath") # display the results gg.createAndDisplayGO(id_cylinder) gg.setDisplayMode(id_cylinder,1) gg.createAndDisplayGO(id_position) gg.setDisplayMode(id_position,1) +gg.createAndDisplayGO(id_circle) +gg.setDisplayMode(id_circle,1) +gg.createAndDisplayGO(id_position2) +gg.setDisplayMode(id_position2,1) \endcode \anchor tui_mirror diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index fd153f760..afbc705a5 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -793,6 +793,20 @@ module GEOM in GEOM_Object theStartLCS, in GEOM_Object theEndLCS); + /*! + * Modify the Location of the given object by Path, + * \param theObject The object to be displaced. + * \param thePath Wire or Edge along that the object will be translated. + * \param theDistance progress of Path (0 = actual location, 1 = end of path location). + * \param theCopy is a true or false parameter. true is to create a copy, false to move the object. + * \return New GEOM_Object, containing the displaced shape. + */ + + GEOM_Object PositionAlongPath (in GEOM_Object theObject, + in GEOM_Object thePath, + in double theDistance, + in boolean theCopy); + /*! * Recompute the shape from its arguments. * \param theObject The object to be recomputed. diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl index 725d36075..50c350166 100644 --- a/idl/GEOM_Superv.idl +++ b/idl/GEOM_Superv.idl @@ -343,6 +343,10 @@ module GEOM GEOM_Object PositionShapeCopy (in GEOM_Object theObject, in GEOM_Object theStartLCS, in GEOM_Object theEndLCS) ; + GEOM_Object PositionAlongPath (in GEOM_Object theObject, + in GEOM_Object thePath, + in double theDistance, + in boolean theCopy); //-----------------------------------------------------------// // ShapesOperations // diff --git a/resources/Makefile.am b/resources/Makefile.am index 9f8e9ecfd..3d4405ed0 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -184,6 +184,7 @@ marker2.png \ marker3.png \ position.png \ position2.png \ +position3.png \ free_bound.png \ point_coord.png \ point3.png \ diff --git a/resources/position3.png b/resources/position3.png new file mode 100644 index 0000000000000000000000000000000000000000..301a3bf093779a65d0982456b75c8d6642e76f4b GIT binary patch literal 891 zcmV->1BCpEP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;@kvBMRCwBA{Qv(y12q9a0I|RrE-o(rfBpK!0Kz9u zoM0r^K!5-O8|dcd_CF~piQ&(mKVSoum6iYByLXT0xQ)%1e}DfnF#P++z`)1|#*9F0 zdGshw3jqR%(bm@Xe`;zf!(X7r-@kt|{P^($jLXW(K=Kkm%mc-6aKzmF0?1&i^cw)GVJ^J?=X2AD2-yE&B>D?K$Y?Hk;6FpQ+} z1yJ!tlyG8X({SvjAS5I0MZD=cY(|cR!5K8 z9J8{z0JVStAb`N~=$M(A8OH7hVtr6r#f5=D`IwCjh+z%H+yDW@1P!MN3w3otk_SK- z7~=<^Y+}F*P>jQZ03d)s27UnrIy)pRUO*$@0ux3v3)GMuY!E@1 zA+T8e0+q)PK#3m;00M{w8r^rd8XLo1h#spT;N;}=pN)+T%mzgoD7n3V|DFMuqZt1I zGXx9(1Q0wg`o3EXAAcA=fBywaLjR!| zKn0`@Ab^;V^nBrfh6Oa8p#V^h`ttoZ!^f|`7~X&R3C5qlerK@BTgm`U{Gj0Z0uVsR z2EK4OecI-zg~bu%Gz9}6KYj!o_U`jfhPOcc_46l&Utiuc{QmY4#a@5_VnT^6prN4b z1Wc%RPB=KA6qK)Dzh-y`auq1=e}2pG^Xof?U*A43{Qmxh0hn$XpkC$y2p|^pGzE$j zt7FGJK(+y03r@QKfFvk4{rL2j;m@yc41a$D@$VlD|Ni`9xU#O90h(^XB@;jZF`}2) z(C|}%1v1o 0 0 - 131 - 196 + 225 + 306 - + 0 - - 0 - - - 0 - - - 0 - - - 6 - - + 6 @@ -37,44 +25,12 @@ - - 9 - - - 9 - - - 9 - - + 9 - - 6 - - + 6 - - - - - - - - - - - - 0 - 0 - - - - - - - @@ -229,7 +185,43 @@ + + + + + + + + + + + + 0 + 0 + + + + + + + + SpinBox_DX + TextLabel3 + TextLabel5 + TextLabel4 + TextLabel2 + TextLabel1 + PushButton2 + LineEdit5 + LineEdit1 + PushButton5 + PushButton4 + PushButton1 + LineEdit4 + LineEdit2 + CheckButton1 + CheckButton2 @@ -253,7 +245,6 @@ PushButton5 LineEdit5 SpinBox_DX - CheckButton2 CheckButton1 diff --git a/src/GEOMGUI/GEOM_images.ts b/src/GEOMGUI/GEOM_images.ts index c3f1d2083..5fcf863eb 100644 --- a/src/GEOMGUI/GEOM_images.ts +++ b/src/GEOMGUI/GEOM_images.ts @@ -362,6 +362,10 @@ ICON_DLG_POSITION2 position2.png + + ICON_DLG_POSITION3 + position3.png + ICON_DLG_PRISM prism.png diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index 56697113c..fc4d51282 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -1564,6 +1564,10 @@ Please, select face, shell or solid and try again GEOM_START_LCS Start LCS + + SELECT_UNPUBLISHED_EDGES + Select unpublished edges + GEOM_STEP Step : diff --git a/src/GEOMImpl/GEOMImpl_IPosition.hxx b/src/GEOMImpl/GEOMImpl_IPosition.hxx index 77a0e358a..b01b1115a 100644 --- a/src/GEOMImpl/GEOMImpl_IPosition.hxx +++ b/src/GEOMImpl/GEOMImpl_IPosition.hxx @@ -22,9 +22,11 @@ #include "GEOM_Function.hxx" -#define POSITION_ARG_SHAPE 1 +#define POSITION_ARG_SHAPE 1 #define POSITION_ARG_START_LCS 2 -#define POSITION_ARG_END_LCS 3 +#define POSITION_ARG_END_LCS 3 +#define POSITION_ARG_PATH 5 +#define POSITION_ARG_DISTANCE 6 class GEOMImpl_IPosition { @@ -46,6 +48,14 @@ class GEOMImpl_IPosition Handle(GEOM_Function) GetEndLCS() { return _func->GetReference(POSITION_ARG_END_LCS); } + void SetPath(Handle(GEOM_Function) thePath) { _func->SetReference(POSITION_ARG_PATH, thePath); } + + Handle(GEOM_Function) GetPath() { return _func->GetReference(POSITION_ARG_PATH); } + + void SetDistance(double theDistance) { _func->SetReal(POSITION_ARG_DISTANCE, theDistance); } + + double GetDistance() { return _func->GetReal(POSITION_ARG_DISTANCE); } + private: Handle(GEOM_Function) _func; diff --git a/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx b/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx index 957197365..84a0f4991 100644 --- a/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_ITransformOperations.cxx @@ -1334,6 +1334,74 @@ Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionShapeCopy return aCopy; } +//============================================================================= +/*! + * PositionAlongPath + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_ITransformOperations::PositionAlongPath + (Handle(GEOM_Object) theObject, Handle(GEOM_Object) thePath, + double theDistance, bool theCopy) +{ + SetErrorCode(KO); + + if (theObject.IsNull() || thePath.IsNull()) return NULL; + + Handle(GEOM_Function) anOriginal = theObject->GetLastFunction(); + if (anOriginal.IsNull()) return NULL; //There is no function which creates an object to be set in position + + //Add a position function + Handle(GEOM_Function) aFunction; + Handle(GEOM_Object) aCopy; + + if (theCopy) { + aCopy = GetEngine()->AddObject(GetDocID(), theObject->GetType()); + aFunction = aCopy->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_ALONG_PATH); + } + else + aFunction = theObject->AddFunction(GEOMImpl_PositionDriver::GetID(), POSITION_ALONG_PATH); + + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_PositionDriver::GetID()) return NULL; + + GEOMImpl_IPosition aTI (aFunction); + aTI.SetShape(anOriginal); + aTI.SetPath(thePath->GetLastFunction()); + aTI.SetDistance(theDistance); + + //Compute the position + try { +#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("Position driver failed"); + return NULL; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + if (theCopy) { + GEOM::TPythonDump(aFunction) << aCopy << " = geompy.PositionAlongPath(" + << theObject << ", " << thePath << ", " << theDistance << ", " << theCopy << ")"; + SetErrorCode(OK); + return aCopy; + } + + GEOM::TPythonDump(aFunction) << "geompy.TrsfOp.PositionAlongPath(" + << theObject << ", " << thePath << ", " << theDistance << ", " << theCopy << ")"; + + SetErrorCode(OK); + return theObject; +} + //============================================================================= /*! * Rotate diff --git a/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx b/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx index c949641aa..44830f68c 100644 --- a/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_ITransformOperations.hxx @@ -118,6 +118,11 @@ class GEOMImpl_ITransformOperations : public GEOM_IOperations Handle(GEOM_Object) theStartLCS, Handle(GEOM_Object) theEndLCS); + Standard_EXPORT Handle(GEOM_Object) PositionAlongPath (Handle(GEOM_Object) theObject, + Handle(GEOM_Object) thePath, + double theDistance, + bool theCopy); + Standard_EXPORT Handle(GEOM_Object) Rotate (Handle(GEOM_Object) theObject, Handle(GEOM_Object) theAxis, double theAngle); diff --git a/src/GEOMImpl/GEOMImpl_PositionDriver.cxx b/src/GEOMImpl/GEOMImpl_PositionDriver.cxx index 789575c79..c9ddc2097 100644 --- a/src/GEOMImpl/GEOMImpl_PositionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PositionDriver.cxx @@ -29,19 +29,30 @@ // OCCT Includes #include +#include +#include #include +#include #include #include #include +#include +#include #include #include +#include #include #include +#include #include #include +#include +#include #include #include +#include +#include //======================================================================= //function : GetID @@ -130,6 +141,106 @@ Standard_Integer GEOMImpl_PositionDriver::Execute(TFunction_Logbook& log) const BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False); aShape = aBRepTrsf.Shape(); } + else if (aType == POSITION_ALONG_PATH) { + Handle(GEOM_Function) aRefShape = aCI.GetShape(); + Handle(GEOM_Function) aPathShape = aCI.GetPath(); + double aValue = aCI.GetDistance(); + + TopoDS_Shape aShapeBase = aRefShape->GetValue(); + TopoDS_Shape aPath = aPathShape->GetValue(); + + if (aShapeBase.IsNull() || aPath.IsNull()) + return 0; + + TopoDS_Shape aTrimmedPath; + gp_Trsf aTrsf; + Handle(Geom_Curve) aCurve; + Standard_Real aFirst =0.,aLast=0.; + Standard_Real aParam = 0.; + Standard_Real aLength = 0.; + + if ( aPath.ShapeType() == TopAbs_EDGE ) { + TopoDS_Edge anEdge = TopoDS::Edge(aPath); + // Computation by Parameter + BRep_Tool::Range(anEdge,aFirst,aLast); + aCurve = BRep_Tool::Curve(anEdge,aFirst,aLast); + aParam = aFirst + aValue*(aLast - aFirst); + } else if ( aPath.ShapeType() == TopAbs_WIRE ) { + TopExp_Explorer ex; + TopTools_SequenceOfShape Edges; + Standard_Real nbEdges = 0.; + BRepTools_WireExplorer aWE (TopoDS::Wire(aPath)); + for (; aWE.More(); aWE.Next(), nbEdges++) + Edges.Append(aWE.Current()); + + Standard_Real aSummOfLen =0.; + Standard_Real aCurLen =0.; + GeomAdaptor_Curve aAdC; + for(int i=1; i<=Edges.Length(); i++) { + TopoDS_Edge anEdge = TopoDS::Edge(Edges.Value(i)); + BRep_Tool::Range(anEdge,aFirst,aLast); + aCurve = BRep_Tool::Curve(anEdge,aFirst,aLast); + aAdC.Load(aCurve,aFirst,aLast); + aCurLen = GCPnts_AbscissaPoint::Length(aAdC,aFirst,aLast); + aSummOfLen += aCurLen; + } + + Standard_Real aWireLen = aSummOfLen*aValue; + aSummOfLen = 0; + for(int i=1; i<=Edges.Length(); i++) { + TopoDS_Edge anEdge = TopoDS::Edge(Edges.Value(i)); + BRep_Tool::Range(anEdge,aFirst,aLast); + aCurve = BRep_Tool::Curve(anEdge,aFirst,aLast); + aAdC.Load(aCurve,aFirst,aLast); + aCurLen = GCPnts_AbscissaPoint::Length(aAdC,aFirst,aLast); + + if ( aWireLen > (aSummOfLen + aCurLen) ) { + aSummOfLen += aCurLen; // Transform a Base object along this Edge + gp_Pnt aP1, aP2; + gp_Vec aStartVec1, aStartVec2, aDestVec1, aDestVec2; + aCurve->D2(aFirst, aP1, aStartVec1, aStartVec2 ); + aCurve->D2(aLast, aP2, aDestVec1, aDestVec2 ); + gp_Trsf aCurTrsf; + if (aStartVec2.Magnitude() < gp::Resolution() || aDestVec2.Magnitude() < gp::Resolution()) // one of the second derivatives is null + aCurTrsf.SetTranslation(aP1, aP2); + else { + gp_Ax3 aStartAx3(aP1, aStartVec1, aStartVec2); + gp_Ax3 aDestAx3(aP2, aDestVec1, aDestVec2); + aCurTrsf.SetDisplacement(aStartAx3, aDestAx3); + } + aTrsf.PreMultiply(aCurTrsf); + } + else { + aLength = aWireLen - aSummOfLen; + GCPnts_AbscissaPoint anAbsc(aAdC,aLength,aFirst); + if(anAbsc.IsDone()) + aParam = anAbsc.Parameter(); + break; + } + } + } else + return 0; // Unknown Type + + gp_Pnt aP1, aP2; + gp_Vec aStartVec1, aStartVec2, aDestVec1, aDestVec2; + aCurve->D2(aFirst, aP1, aStartVec1, aStartVec2 ); + aCurve->D2(aParam, aP2, aDestVec1, aDestVec2 ); + gp_Trsf aCurTrsf; + + if (aStartVec2.Magnitude() < gp::Resolution() || aDestVec2.Magnitude() < gp::Resolution()) // one of the second derivatives is null + aCurTrsf.SetTranslation(aP1, aP2); + else { + gp_Ax3 aStartAx3(aP1, aStartVec1, aStartVec2); + gp_Ax3 aDestAx3(aP2, aDestVec1, aDestVec2); + aCurTrsf.SetDisplacement(aStartAx3, aDestAx3); + } + + aTrsf.PreMultiply(aCurTrsf); + + // Perform transformation + BRepBuilderAPI_Transform aBRepTrsf (aShapeBase, aTrsf, Standard_False); + aShape = aBRepTrsf.Shape(); + } else return 0; diff --git a/src/GEOMImpl/GEOMImpl_Types.hxx b/src/GEOMImpl/GEOMImpl_Types.hxx index d0cc19686..7b70e9b8b 100755 --- a/src/GEOMImpl/GEOMImpl_Types.hxx +++ b/src/GEOMImpl/GEOMImpl_Types.hxx @@ -153,6 +153,7 @@ #define POSITION_SHAPE_COPY 2 #define POSITION_SHAPE_FROM_GLOBAL 3 #define POSITION_SHAPE_FROM_GLOBAL_COPY 4 +#define POSITION_ALONG_PATH 5 #define TORUS_RR 1 #define TORUS_PNT_VEC_RR 2 diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.cc b/src/GEOM_I/GEOM_ITransformOperations_i.cc index 338e901eb..9715c0c4d 100644 --- a/src/GEOM_I/GEOM_ITransformOperations_i.cc +++ b/src/GEOM_I/GEOM_ITransformOperations_i.cc @@ -988,6 +988,46 @@ GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionShapeCopy return GetObject(anObject); } +//============================================================================= +/*! + * PositionAlongPath + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_ITransformOperations_i::PositionAlongPath + (GEOM::GEOM_Object_ptr theObject, + GEOM::GEOM_Object_ptr thePath, + CORBA::Double theDistance, + CORBA::Boolean theCopy) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + if (theObject == NULL || thePath == NULL) + return aGEOMObject._retn(); + + //Get the basic object + CORBA::String_var anEntry = theObject->GetEntry(); + Handle(GEOM_Object) aBasicObject = + GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), anEntry); + if (aBasicObject.IsNull()) return aGEOMObject._retn(); + + //Get the path object + CORBA::String_var aPathEntry = thePath->GetEntry(); + Handle(GEOM_Object) aPathObject = + GetOperations()->GetEngine()->GetObject(theObject->GetStudyID(), aPathEntry); + if (aPathObject.IsNull()) return aGEOMObject._retn(); + + //Perform the position + Handle(GEOM_Object) anObject = + GetOperations()->PositionAlongPath(aBasicObject, aPathObject, theDistance, theCopy); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * MultiTranslate1D diff --git a/src/GEOM_I/GEOM_ITransformOperations_i.hh b/src/GEOM_I/GEOM_ITransformOperations_i.hh index aed462a00..62dc08c9a 100644 --- a/src/GEOM_I/GEOM_ITransformOperations_i.hh +++ b/src/GEOM_I/GEOM_ITransformOperations_i.hh @@ -141,6 +141,11 @@ class GEOM_I_EXPORT GEOM_ITransformOperations_i : GEOM::GEOM_Object_ptr theStartLCS, GEOM::GEOM_Object_ptr theEndLCS); + GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject, + GEOM::GEOM_Object_ptr thePath, + CORBA::Double theDistance, + CORBA::Boolean theCopy); + GEOM::GEOM_Object_ptr RotateThreePoints (GEOM::GEOM_Object_ptr theObject, GEOM::GEOM_Object_ptr theCentPoint, GEOM::GEOM_Object_ptr thePoint1, diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index 7f4641c65..90ee3a838 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -1820,6 +1820,22 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionShapeCopy (GEOM::GEOM_Object_ptr th return anObj; } +//============================================================================= +// PositionAlongPath: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::PositionAlongPath (GEOM::GEOM_Object_ptr theObject, + GEOM::GEOM_Object_ptr thePath, + CORBA::Double theDistance, + CORBA::Boolean theCopy) +{ + beginService( " GEOM_Superv_i::PositionAlongPath" ); + MESSAGE("GEOM_Superv_i::PositionAlongPath"); + getTransfOp(); + GEOM::GEOM_Object_ptr anObj = myTransfOp->PositionAlongPath(theObject, thePath, theDistance, theCopy); + endService( " GEOM_Superv_i::PositionAlongPath" ); + return anObj; +} + //=============================== ShapesOperations ============================ //============================================================================= // Make: diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh index b081ff798..3d8425253 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ b/src/GEOM_I_Superv/GEOM_Superv_i.hh @@ -419,6 +419,10 @@ public: GEOM::GEOM_Object_ptr PositionShapeCopy (GEOM::GEOM_Object_ptr theObject, GEOM::GEOM_Object_ptr theStartLCS, GEOM::GEOM_Object_ptr theEndLCS); + GEOM::GEOM_Object_ptr PositionAlongPath (GEOM::GEOM_Object_ptr theObject, + GEOM::GEOM_Object_ptr thePath, + CORBA::Double theDistance, + CORBA::Boolean theCopy); //-----------------------------------------------------------// // ShapesOperations // diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py index d9a607048..a44d8bcfb 100644 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ b/src/GEOM_SWIG/GEOM_TestAll.py @@ -206,6 +206,7 @@ def TestAll (geompy, math): MirrorAxis = geompy.MakeMirrorByAxis(Box, Line1) # MirrorPnt = geompy.MakeMirrorByPoint(Box, p200) # Position = geompy.MakePosition(Box, cs1, cs2) #(3 GEOM_Object_ptr)->GEOM_Object_ptr + Position2 = geompy.PositionAlongPath(Box, Arc, 0.5, 1) #(2 GEOM_Object_ptr, 1 Double, 1 Bool)->GEOM_Object_ptr Offset = geompy.MakeOffset(Box, 10.) #(GEOM_Object_ptr, Double)->GEOM_Object_ptr Orientation = geompy.ChangeOrientation(Box) @@ -372,6 +373,7 @@ def TestAll (geompy, math): id_MirrorAxis = geompy.addToStudy(MirrorAxis, "Mirror by Axis") id_MirrorPnt = geompy.addToStudy(MirrorPnt, "Mirror by Point") id_Position = geompy.addToStudy(Position, "Positioned box") + id_Position2 = geompy.addToStudy(Position2, "Positioned box along path") id_Offset = geompy.addToStudy(Offset, "Offset") id_Orientation = geompy.addToStudy(Orientation, "Orientation") diff --git a/src/GEOM_SWIG/geompyDC.py b/src/GEOM_SWIG/geompyDC.py index 17baee494..18b06e9e1 100644 --- a/src/GEOM_SWIG/geompyDC.py +++ b/src/GEOM_SWIG/geompyDC.py @@ -2231,6 +2231,19 @@ class geompyDC(GEOM._objref_GEOM_Gen): RaiseIfFailed("PositionShapeCopy", self.TrsfOp) return anObj + ## Modify the Location of the given object by Path, + # @param theObject The object to be displaced. + # @param thePath Wire or Edge along that the object will be translated. + # @param theDistance progress of Path (0 = start location, 1 = end of path location). + # @return New GEOM_Object, containing the displaced shape. + # + # @ref tui_modify_location "Example" + def PositionAlongPath(self,theObject, thePath, theDistance, theCopy): + # Example: see GEOM_TestAll.py + anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy) + RaiseIfFailed("PositionAlongPath", self.TrsfOp) + return anObj + ## Create new object as offset of the given one. # @param theObject The base object for the offset. # @param theOffset Offset value. diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx index 7fcac82a4..5fb7891af 100644 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.cxx +++ b/src/TransformationGUI/TransformationGUI_PositionDlg.cxx @@ -33,6 +33,7 @@ #include #include #include +#include // OCCT Includes #include @@ -54,6 +55,7 @@ TransformationGUI_PositionDlg::TransformationGUI_PositionDlg SUIT_ResourceMgr* aResMgr = myGeomGUI->getApp()->resourceMgr(); QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_POSITION"))); QPixmap image1 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_POSITION2"))); + QPixmap image2 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_POSITION3"))); QPixmap imageselect (aResMgr->loadPixmap("GEOM", tr("ICON_SELECT"))); setWindowTitle(tr("GEOM_POSITION_TITLE")); @@ -62,24 +64,21 @@ TransformationGUI_PositionDlg::TransformationGUI_PositionDlg mainFrame()->GroupConstructors->setTitle(tr("GEOM_POSITION")); mainFrame()->RadioButton1->setIcon(image0); mainFrame()->RadioButton2->setIcon(image1); - mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose); - mainFrame()->RadioButton3->close(); - - Group1 = new DlgRef_3Sel3Spin1Check(centralWidget()); - Group1->SpinBox1->hide(); - Group1->SpinBox2->hide(); - Group1->SpinBox3->hide(); - Group1->TextLabel4->hide(); - Group1->TextLabel5->hide(); - Group1->TextLabel6->hide(); + mainFrame()->RadioButton3->setIcon(image2); + + Group1 = new DlgRef_4Sel1Spin2Check(centralWidget()); Group1->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); Group1->TextLabel1->setText(tr("GEOM_OBJECTS")); Group1->TextLabel2->setText(tr("GEOM_START_LCS")); - Group1->TextLabel3->setText(tr("GEOM_END_LCS")); + Group1->TextLabel3->setText(tr("GEOM_DISTANCE")); + Group1->TextLabel4->setText(tr("GEOM_END_LCS")); + Group1->TextLabel5->setText(tr("GEOM_PATH_OBJECT")); Group1->PushButton1->setIcon(imageselect); Group1->PushButton2->setIcon(imageselect); - Group1->PushButton3->setIcon(imageselect); - Group1->CheckBox1->setText(tr("GEOM_CREATE_COPY")); + Group1->PushButton4->setIcon(imageselect); + Group1->PushButton5->setIcon(imageselect); + Group1->CheckButton1->setText(tr("GEOM_CREATE_COPY")); + Group1->CheckButton2->setText(tr("SELECT_UNPUBLISHED_EDGES")); QVBoxLayout* layout = new QVBoxLayout(centralWidget()); layout->setMargin(0); layout->setSpacing(6); @@ -89,7 +88,8 @@ TransformationGUI_PositionDlg::TransformationGUI_PositionDlg setHelpFileName("modify_location_operation_page.html"); // Activate Create a Copy mode - Group1->CheckBox1->setChecked(true); + Group1->CheckButton1->setChecked(true); + Group1->CheckButton1->setChecked(false); CreateCopyModeChanged(true); Init(); @@ -113,11 +113,18 @@ void TransformationGUI_PositionDlg::Init() // init variables Group1->LineEdit1->setReadOnly(true); Group1->LineEdit2->setReadOnly(true); - Group1->LineEdit3->setReadOnly(true); + Group1->LineEdit4->setReadOnly(true); + Group1->LineEdit5->setReadOnly(true); Group1->LineEdit1->setText(""); Group1->LineEdit2->setText(""); - Group1->LineEdit3->setText(""); + Group1->LineEdit4->setText(""); + Group1->LineEdit5->setText(""); + + initSpinBox(Group1->SpinBox_DX, 0, 1, 0.05, 6); // VSR:TODO : DBL_DIGITS_DISPLAY + Group1->SpinBox_DX->setValue(1); + + Group1->CheckButton2->setEnabled(false); myStartLCS = myEndLCS = GEOM::GEOM_Object::_nil(); @@ -131,13 +138,18 @@ void TransformationGUI_PositionDlg::Init() connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(Group1->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(Group1->PushButton3, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(Group1->PushButton4, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(Group1->PushButton5, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(Group1->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); + connect(Group1->LineEdit4, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); + connect(Group1->LineEdit5, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(Group1->CheckBox1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); + connect(Group1->CheckButton1, SIGNAL(toggled(bool)), this, SLOT(CreateCopyModeChanged(bool))); + connect(Group1->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); + + connect(Group1->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(SelectionTypeButtonClicked())); initName(tr("GEOM_POSITION")); @@ -153,9 +165,11 @@ void TransformationGUI_PositionDlg::ConstructorsClicked (int constructorId) disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); Group1->LineEdit2->clear(); - Group1->LineEdit3->clear(); + Group1->LineEdit4->clear(); + Group1->LineEdit5->clear(); myStartLCS = GEOM::GEOM_Object::_nil(); myEndLCS = GEOM::GEOM_Object::_nil(); + myPath = GEOM::GEOM_Object::_nil(); switch (constructorId) { case 0: @@ -164,7 +178,20 @@ void TransformationGUI_PositionDlg::ConstructorsClicked (int constructorId) Group1->TextLabel2->hide(); Group1->PushButton2->hide(); + Group1->LineEdit5->hide(); + Group1->TextLabel5->hide(); + Group1->PushButton5->hide(); + + Group1->SpinBox_DX->hide(); + Group1->TextLabel3->hide(); + + Group1->LineEdit4->show(); + Group1->TextLabel4->show(); + Group1->PushButton4->show(); + Group1->PushButton1->click(); + + Group1->CheckButton2->hide(); } break; case 1: @@ -173,7 +200,38 @@ void TransformationGUI_PositionDlg::ConstructorsClicked (int constructorId) Group1->TextLabel2->show(); Group1->PushButton2->show(); + Group1->LineEdit5->hide(); + Group1->TextLabel5->hide(); + Group1->PushButton5->hide(); + + Group1->SpinBox_DX->hide(); + Group1->TextLabel3->hide(); + + Group1->PushButton1->click(); + + Group1->CheckButton2->hide(); + } + break; + case 2: + { + Group1->LineEdit4->hide(); + Group1->TextLabel4->hide(); + Group1->PushButton4->hide(); + + Group1->LineEdit2->hide(); + Group1->TextLabel2->hide(); + Group1->PushButton2->hide(); + + Group1->LineEdit5->show(); + Group1->TextLabel5->show(); + Group1->PushButton5->show(); + + Group1->SpinBox_DX->show(); + Group1->TextLabel3->show(); + Group1->PushButton1->click(); + + Group1->CheckButton2->show(); } break; } @@ -191,6 +249,31 @@ void TransformationGUI_PositionDlg::ConstructorsClicked (int constructorId) } } +//================================================================================= +// function : SelectionBittonClicked() +// purpose : Selection type Radio button management +//================================================================================= +void TransformationGUI_PositionDlg::SelectionTypeButtonClicked() +{ + if ( Group1->CheckButton2->isChecked() ) { + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); + } else { + TColStd_MapOfInteger aMap; + aMap.Add(GEOM_WIRE); + aMap.Add(GEOM_LINE); + globalSelection(aMap); + } +} + +//================================================================================= +// function : ValueChangedInSpinBox() +// purpose : +//================================================================================= +void TransformationGUI_PositionDlg::ValueChangedInSpinBox() +{ + displayPreview(); +} + //================================================================================= // function : ClickOnOk() // purpose : @@ -207,7 +290,7 @@ void TransformationGUI_PositionDlg::ClickOnOk() //================================================================================= bool TransformationGUI_PositionDlg::ClickOnApply() { - if (!onAccept(Group1->CheckBox1->isChecked())) + if (!onAccept(Group1->CheckButton1->isChecked())) return false; initName(); @@ -229,8 +312,10 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() myObjects.length(0); else if (myEditCurrentArgument == Group1->LineEdit2) myStartLCS = GEOM::GEOM_Object::_nil(); - else if (myEditCurrentArgument == Group1->LineEdit3) + else if (myEditCurrentArgument == Group1->LineEdit4) myEndLCS = GEOM::GEOM_Object::_nil(); + else if (myEditCurrentArgument == Group1->LineEdit5) + myPath = GEOM::GEOM_Object::_nil(); LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); SALOME_ListIO aSelList; @@ -263,9 +348,9 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() myEditCurrentArgument->setText(aName); if (!myStartLCS->_is_nil() && myEndLCS->_is_nil()) - Group1->PushButton3->click(); + Group1->PushButton4->click(); } - else if (myEditCurrentArgument == Group1->LineEdit3) { + else if (myEditCurrentArgument == Group1->LineEdit4) { myEndLCS = GEOM::GEOM_Object::_nil(); if (aSelList.Extent() != 1) return; @@ -278,8 +363,56 @@ void TransformationGUI_PositionDlg::SelectionIntoArgument() aName = GEOMBase::GetName(myEndLCS); myEditCurrentArgument->setText(aName); - if (!myEndLCS->_is_nil() && !myObjects.length()) + if (!myEndLCS->_is_nil() && !myObjects.length() && getConstructorId() != 2) Group1->PushButton1->click(); + else if (getConstructorId() == 2 && !myObjects.length()) + Group1->PushButton5->click(); + } + else if (myEditCurrentArgument == Group1->LineEdit5) { + myPath = GEOM::GEOM_Object::_nil(); + if (aSelList.Extent() != 1) + return; + + Standard_Boolean testResult = Standard_False; + GEOM::GEOM_Object_ptr aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult); + if (!testResult || aSelectedObject->_is_nil()) + return; + + aName = GEOMBase::GetName(myPath); + // Local Selection + TopoDS_Shape S; + if (!GEOMBase::GetShape(aSelectedObject, S)) + return; + + TColStd_IndexedMapOfInteger aMap; + aSelMgr->GetIndexes(aSelList.First(), aMap); + aName = GEOMBase::GetName(aSelectedObject); + if (aMap.Extent() == 1) { + int anIndex = aMap(1); + aName.append(":edge_" + QString::number(anIndex)); + + //Find SubShape Object in Father + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather(aSelectedObject, aName); + + if (aFindedObject == GEOM::GEOM_Object::_nil()) { // Object not found in study + GEOM::GEOM_IShapesOperations_var aShapesOp = + getGeomEngine()->GetIShapesOperations(getStudyId()); + aSelectedObject = aShapesOp->GetSubShape(aSelectedObject, anIndex); + } + else { // get Object from study + aSelectedObject = aFindedObject; + } + } + else { + if (S.ShapeType() != TopAbs_EDGE) { + aSelectedObject = GEOM::GEOM_Object::_nil(); + aName = ""; + return; + } + } + + myEditCurrentArgument->setText(aName); + myPath = aSelectedObject; } // clear selection @@ -306,9 +439,13 @@ void TransformationGUI_PositionDlg::SetEditCurrentArgument() globalSelection(); Group1->PushButton2->setDown(false); - Group1->PushButton3->setDown(false); + Group1->PushButton4->setDown(false); + Group1->PushButton5->setDown(false); Group1->LineEdit2->setEnabled(false); - Group1->LineEdit3->setEnabled(false); + Group1->LineEdit4->setEnabled(false); + Group1->LineEdit5->setEnabled(false); + + Group1->CheckButton2->setEnabled(false); } else if (send == Group1->PushButton2) { myEditCurrentArgument = Group1->LineEdit2; @@ -319,12 +456,16 @@ void TransformationGUI_PositionDlg::SetEditCurrentArgument() globalSelection(aMap); Group1->PushButton1->setDown(false); - Group1->PushButton3->setDown(false); + Group1->PushButton4->setDown(false); + Group1->PushButton5->setDown(false); Group1->LineEdit1->setEnabled(false); - Group1->LineEdit3->setEnabled(false); + Group1->LineEdit4->setEnabled(false); + Group1->LineEdit5->setEnabled(false); + + Group1->CheckButton2->setEnabled(false); } - else if (send == Group1->PushButton3) { - myEditCurrentArgument = Group1->LineEdit3; + else if (send == Group1->PushButton4) { + myEditCurrentArgument = Group1->LineEdit4; TColStd_MapOfInteger aMap; aMap.Add(GEOM_PLANE); @@ -333,8 +474,33 @@ void TransformationGUI_PositionDlg::SetEditCurrentArgument() Group1->PushButton1->setDown(false); Group1->PushButton2->setDown(false); + Group1->PushButton5->setDown(false); + Group1->LineEdit1->setEnabled(false); + Group1->LineEdit2->setEnabled(false); + Group1->LineEdit5->setEnabled(false); + + Group1->CheckButton2->setEnabled(false); + } + else if (send == Group1->PushButton5) { + myEditCurrentArgument = Group1->LineEdit5; + + Group1->CheckButton2->setEnabled(true); + + if ( Group1->CheckButton2->isChecked() ) { + localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); + } else { + TColStd_MapOfInteger aMap; + aMap.Add(GEOM_WIRE); + aMap.Add(GEOM_LINE); + globalSelection(aMap); + } + + Group1->PushButton1->setDown(false); + Group1->PushButton2->setDown(false); + Group1->PushButton4->setDown(false); Group1->LineEdit1->setEnabled(false); Group1->LineEdit2->setEnabled(false); + Group1->LineEdit4->setEnabled(false); } connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); @@ -358,10 +524,16 @@ void TransformationGUI_PositionDlg::LineEditReturnPressed() QLineEdit* send = (QLineEdit*)sender(); if (send == Group1->LineEdit1 || send == Group1->LineEdit2 || - send == Group1->LineEdit3) { + send == Group1->LineEdit4 || + send == Group1->LineEdit5 ) { myEditCurrentArgument = send; GEOMBase_Skeleton::LineEditReturnPressed(); } + + if (send == Group1->LineEdit5) + Group1->CheckButton2->setEnabled(true); + else + Group1->CheckButton2->setEnabled(false); } //================================================================================= @@ -372,8 +544,10 @@ void TransformationGUI_PositionDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - // reinit, because some selected objects could be removed - Init(); + connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), + this, SLOT( SelectionIntoArgument() ) ); + + ConstructorsClicked( getConstructorId() ); } //================================================================================= @@ -404,8 +578,10 @@ bool TransformationGUI_PositionDlg::isValid (QString& /*msg*/) bool res; if (getConstructorId() == 0) res = !(myObjects.length() == 0 || myEndLCS->_is_nil()); - else + else if ( getConstructorId() == 1 ) res = !(myObjects.length() == 0 || myStartLCS->_is_nil() || myEndLCS->_is_nil()); + else if ( getConstructorId() == 2 ) + res = !(myObjects.length() == 0 || myPath->_is_nil()); return res; } @@ -417,7 +593,7 @@ bool TransformationGUI_PositionDlg::isValid (QString& /*msg*/) bool TransformationGUI_PositionDlg::execute (ObjectList& objects) { bool res = false; - bool toCreateCopy = IsPreview() || Group1->CheckBox1->isChecked(); + bool toCreateCopy = IsPreview() || Group1->CheckButton1->isChecked(); GEOM::GEOM_Object_var anObj; switch (getConstructorId()) { @@ -452,6 +628,18 @@ bool TransformationGUI_PositionDlg::execute (ObjectList& objects) res = true; break; } + case 2: + { + double aDistance = Group1->SpinBox_DX->value(); + for (int i = 0; i < myObjects.length(); i++) { + anObj = GEOM::GEOM_ITransformOperations::_narrow(getOperation())-> + PositionAlongPath(myObjects[i], myPath, aDistance, toCreateCopy); + if (!anObj->_is_nil()) + objects.push_back(anObj._retn()); + } + res = true; + break; + } } return res; @@ -480,3 +668,16 @@ void TransformationGUI_PositionDlg::CreateCopyModeChanged (bool isCreateCopy) { mainFrame()->GroupBoxName->setEnabled(isCreateCopy); } + +//================================================================================= +// function : addSubshapeToStudy +// purpose : virtual method to add new SubObjects if local selection +//================================================================================= +void TransformationGUI_PositionDlg::addSubshapesToStudy() +{ + QMap objMap; + + objMap[Group1->LineEdit5->text()] = myPath; + + addSubshapesToFather(objMap); +} diff --git a/src/TransformationGUI/TransformationGUI_PositionDlg.h b/src/TransformationGUI/TransformationGUI_PositionDlg.h index 5da9dea72..9a18399d8 100644 --- a/src/TransformationGUI/TransformationGUI_PositionDlg.h +++ b/src/TransformationGUI/TransformationGUI_PositionDlg.h @@ -28,7 +28,7 @@ #include -class DlgRef_3Sel3Spin1Check; +class DlgRef_4Sel1Spin2Check; //================================================================================= // class : TransformationGUI_PositionDlg @@ -49,6 +49,7 @@ protected: virtual bool isValid( QString& ); virtual bool execute( ObjectList& ); virtual void restoreSubShapes( SALOMEDS::Study_ptr, SALOMEDS::SObject_ptr ); + virtual void addSubshapesToStudy(); private: void Init(); @@ -58,11 +59,12 @@ private: GEOM::GEOM_Object_var myStartLCS; GEOM::GEOM_Object_var myEndLCS; GEOM::ListOfGO myObjects; + GEOM::GEOM_Object_var myPath; // to initialize the first selection field with a selected object on the dialog creation bool myInitial; - - DlgRef_3Sel3Spin1Check* Group1; + + DlgRef_4Sel1Spin2Check* Group1; private slots: void ClickOnOk(); @@ -73,6 +75,8 @@ private slots: void SetEditCurrentArgument(); void ConstructorsClicked( int ); void CreateCopyModeChanged( bool ); + void ValueChangedInSpinBox(); + void SelectionTypeButtonClicked(); }; #endif // TRANSFORMATIONGUI_POSITIONDLG_H -- 2.39.2