From b9cd395cc3b809c23349b26b31940dcaccc93a21 Mon Sep 17 00:00:00 2001 From: Florian BRUNET Date: Mon, 11 Aug 2014 11:54:38 +0200 Subject: [PATCH] Update of the implementation of an option to create portion of cylinders in the cylinder primitive --- doc/salome/examples/primitives_ex02.py | 13 ++ doc/salome/gui/GEOM/images/cylinder1.png | Bin 21875 -> 22429 bytes doc/salome/gui/GEOM/images/cylinder2.png | Bin 18499 -> 18985 bytes doc/salome/gui/GEOM/images/cylinders.png | Bin 17865 -> 11806 bytes .../gui/GEOM/input/creating_cylinder.doc | 19 +- idl/GEOM_Gen.idl | 33 +++- idl/GEOM_Superv.idl | 10 +- resources/GEOMCatalog.xml.in | 70 ++++++- src/DlgRef/CMakeLists.txt | 2 +- src/DlgRef/DlgRef_2Sel3Spin1Check_QTD.ui | 186 ++++++++++++++++++ src/GEOMImpl/GEOMImpl_CylinderDriver.cxx | 40 ++-- src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx | 119 ++++++++++- src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx | 8 +- src/GEOMImpl/GEOMImpl_ICylinder.hxx | 18 +- src/GEOMImpl/GEOMImpl_Types.hxx | 4 +- src/GEOM_I/GEOM_I3DPrimOperations_i.cc | 53 ++++- src/GEOM_I/GEOM_I3DPrimOperations_i.hh | 16 +- src/GEOM_I_Superv/GEOM_Superv_i.cc | 42 +++- src/GEOM_I_Superv/GEOM_Superv_i.hh | 10 +- src/GEOM_SWIG/GEOM_TestAll.py | 28 +-- src/GEOM_SWIG/geomBuilder.py | 116 +++++++++-- src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx | 82 +++++--- 22 files changed, 751 insertions(+), 118 deletions(-) create mode 100644 src/DlgRef/DlgRef_2Sel3Spin1Check_QTD.ui diff --git a/doc/salome/examples/primitives_ex02.py b/doc/salome/examples/primitives_ex02.py index d55d6510f..a0e73ff5f 100644 --- a/doc/salome/examples/primitives_ex02.py +++ b/doc/salome/examples/primitives_ex02.py @@ -6,6 +6,7 @@ import GEOM from salome.geom import geomBuilder geompy = geomBuilder.New(salome.myStudy) +import math gg = salome.ImportComponentGUI("GEOM") # create a vertex and a vector @@ -18,16 +19,28 @@ height = 40 radius1 = 15 cylinder1 = geompy.MakeCylinder(p1, v, radius1, height) +angle1 = 45.*math.pi / 180. +cylinder1a = geompy.MakeCylinderA(p1, v, radius1, height, angle1) +geompy.TranslateDXDYDZ(cylinder1a,80.,0.,0.) radius2 = 30 cylinder2 = geompy.MakeCylinderRH(radius2, height) +angle2 = 210.*math.pi / 180. +cylinder2a = geompy.MakeCylinderRHA(radius2, height, angle2) +geompy.TranslateDXDYDZ(cylinder2a,80.,0.,0.) # add objects in the study id_cylinder1 = geompy.addToStudy(cylinder1,"Cylinder1") id_cylinder2 = geompy.addToStudy(cylinder2,"Cylinder2") +id_cylinder1a = geompy.addToStudy(cylinder1a,"Cylinder1a") +id_cylinder2a = geompy.addToStudy(cylinder2a,"Cylinder2a") # display the cylinders gg.createAndDisplayGO(id_cylinder1) gg.setDisplayMode(id_cylinder1,1) gg.createAndDisplayGO(id_cylinder2) gg.setDisplayMode(id_cylinder2,1) +gg.createAndDisplayGO(id_cylinder1a) +gg.setDisplayMode(id_cylinder1a,1) +gg.createAndDisplayGO(id_cylinder2a) +gg.setDisplayMode(id_cylinder2a,1) diff --git a/doc/salome/gui/GEOM/images/cylinder1.png b/doc/salome/gui/GEOM/images/cylinder1.png index 696ea42341ad8da4be5a4fa537c7fc6d3a86c0ba..6dc21ce5146d7948c6ba3e7218ecc26b37d0d699 100755 GIT binary patch literal 22429 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 literal 21875 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 diff --git a/doc/salome/gui/GEOM/images/cylinder2.png b/doc/salome/gui/GEOM/images/cylinder2.png index 7522b2751381e9476fa7e5305a995ebaa24a779e..b9ed9cd82066f3c7a9aaf011042e65ab7802b86c 100755 GIT binary patch literal 18985 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 literal 18499 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 literal 17865 zcmch<2Q-{txGy{+BqAbu5RvH7MeicIsL^`}MliyRI$A>X5@is*k1iNSmx9DFY7oW{ zy%Rn9ef`fl_dDyJv+lj;`_B5-Vp%iZcfU{h?Pve?v!CaU)YVocyTxz|1Okz%t10P& zK-Z#yU-_HYfNwsGTxSLT5JDBz4Q}4NiJR5=4Sb}BDVxAvxH-VQUwYVs93gJ5_Iyw~ z4|{tE6zm4uChU*{fgXa?m7W^-WNzYpGhZ179PP}Mu06V&LLc^#fUU$`ilIQw!q)Zy zjZlHD#Zy6r>lBf}!ubT7?(7gftY$71gBbGb@&`k;wGLS-q8W;ppR8k}a-DRO<00rMo7zBYrBmUD%i-B?OWk*~2 zPq@j?bv*bxVRdxb5pZO-Q%87&FH(XW_gA-HguPG=0ET2F!L#UGE?)jcZ_Dp8x9_Fl z<NhtUfDLAz={=%3ylO17vvhD{>Kw~_|0EKZE%x=xmO^99UI%gUhPQNZ@w(V&Y1M`fth<^I6= z*tbh~;SD0tAG<;mbCKwU;?*|c(L}(Zu-qPFc)$F`XKDFMYn}TCfXQXl zRvLVEAI+?J`LXOa5^no%G`A$LXscfC=h0jqoyOn$w~PJ`;Zt?2J#i)R*Fd^-=l|jo z$opQg`(kU)K%o8bPzZ$w1E~Ave{f;5=D z_|JcIx_ML;7X>@E-z)XCFJA;t0+kLS>j
QUH$QT*u5#W(%4F-^+iXvK3z3I6&p+cJ4 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 diff --git a/doc/salome/gui/GEOM/input/creating_cylinder.doc b/doc/salome/gui/GEOM/input/creating_cylinder.doc index 74434e49b..49f19bf64 100644 --- a/doc/salome/gui/GEOM/input/creating_cylinder.doc +++ b/doc/salome/gui/GEOM/input/creating_cylinder.doc @@ -11,8 +11,12 @@ Entity - > Primitives - > Cylinder \n Firstly, you can define a \b Cylinder by the Base Point (the central point of the cylinder base), the \b Vector (the axis of the cylinder), and its dimensions: the Radius and the Height. -\n Angle checkbox and field allow defining an angle to build a portion of cylinder. -\n TUI Command: geompy.MakeCylinder(Point, Axis, Radius, Height, Angle=2*pi) +\n TUI Command: geompy.MakeCylinder(Point, Axis, Radius, Height) +\n Arguments: Name + 1 vertex + 1 vector + 2 values +(Dimensions: radius and height). + +\n \b Angle checkbox and field allow defining an angle to create a portion of cylinder. +\n TUI Command: geompy.MakeCylinderA(Point, Axis, Radius, Height, Angle) \n Arguments: Name + 1 vertex + 1 vector + 3 values (Dimensions: radius, height and angle). @@ -21,9 +25,14 @@ and its dimensions: the Radius and the Height. \n Secondly, you can define a \b Cylinder by the given radius and the height at the origin of coordinate system. The axis of the cylinder will be collinear to the OZ axis of the coordinate system. -Angle checkbox and field allow defining an angle to build a portion of cylinder. -\n TUI Command: geompy.MakeCylinderRH(Radius, Height, Angle=2*pi) -\n Arguments: Name + 2 values (Dimensions at origin: radius, height, angle). +\n TUI Command: geompy.MakeCylinderRH(Radius, Height) +\n Arguments: Name + 2 values (Dimensions at origin: radius and +height). + +\n \b Angle checkbox and field allow defining an angle to create a portion of cylinder at the origin of coordinate system. +\n TUI Command: geompy.MakeCylinderRHA(Radius, Height, Angle) +\n Arguments: Name + 3 values +(Dimensions at origin : radius, height and angle). \image html cylinder2.png diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 94fbc0acd..c1e4b2c5c 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// // Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -1471,7 +1471,18 @@ module GEOM GEOM_Object MakeDiskR (in double theR, in short theOrientation); /*! - * \brief Create a cylinder with given radius, height and angle (portion of cylinder) at + * \brief Create a cylinder with given radius and height at + * the origin of coordinate system. + * + * Axis of the cylinder will be collinear to the OZ axis of the coordinate system. + * \param theR Cylinder radius. + * \param theH Cylinder height. + * \return New GEOM_Object, containing the created cylinder. + */ + GEOM_Object MakeCylinderRH (in double theR, in double theH); + + /*! + * \brief Create a portion of cylinder with given radius, height and angle at * the origin of coordinate system. * * Axis of the cylinder will be collinear to the OZ axis of the coordinate system. @@ -1480,18 +1491,30 @@ module GEOM * \param theA Cylinder angle. * \return New GEOM_Object, containing the created cylinder. */ - GEOM_Object MakeCylinderRH (in double theR, in double theH, in double theA); + GEOM_Object MakeCylinderRHA (in double theR, in double theH, in double theA); /*! - * \brief Create a cylinder with given base point, axis, radius, height and angle (portion of cylinder). + * \brief Create a cylinder with given base point, axis, radius, height and angle. * \param thePnt Central point of cylinder base. * \param theAxis Cylinder axis. * \param theR Cylinder radius. * \param theH Cylinder height. - * \param theA Cylinder angle. * \return New GEOM_Object, containing the created cylinder. */ GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt, + in GEOM_Object theAxis, + in double theR, + in double theH); + /*! + * \brief Create a portion of cylinder with given base point, axis, radius, height and angle. + * \param thePnt Central point of cylinder base. + * \param theAxis Cylinder axis. + * \param theR Cylinder radius. + * \param theH Cylinder height. + * \param theA Cylinder angle. + * \return New GEOM_Object, containing the created cylinder. + */ + GEOM_Object MakeCylinderPntVecRHA (in GEOM_Object thePnt, in GEOM_Object theAxis, in double theR, in double theH, diff --git a/idl/GEOM_Superv.idl b/idl/GEOM_Superv.idl index c56f0ca57..3c5972437 100644 --- a/idl/GEOM_Superv.idl +++ b/idl/GEOM_Superv.idl @@ -158,9 +158,15 @@ module GEOM GEOM_Object MakeCylinderPntVecRH (in GEOM_Object thePnt, in GEOM_Object theAxis, in double theRadius, - in double theHeight, - in double theAngle) ; + in double theHeight) ; GEOM_Object MakeCylinderRH (in double theR, + in double theH) ; + GEOM_Object MakeCylinderPntVecRHA (in GEOM_Object thePnt, + in GEOM_Object theAxis, + in double theRadius, + in double theHeight, + in double theAngle) ; + GEOM_Object MakeCylinderRHA (in double theR, in double theH, in double theA) ; GEOM_Object MakeSphere (in double theX, diff --git a/resources/GEOMCatalog.xml.in b/resources/GEOMCatalog.xml.in index 43438b5bd..db3ec4288 100644 --- a/resources/GEOMCatalog.xml.in +++ b/resources/GEOMCatalog.xml.in @@ -1314,6 +1314,70 @@ unknown 0 + + + thePnt + GEOM_Object + unknown + + + theAxis + GEOM_Object + unknown + + + theRadius + double + unknown + + + theHeight + double + unknown + + + + + return + GEOM_Object + unknown + + + + + + MakeCylinderRH + + + unknown + 0 + + + theR + double + unknown + + + theH + double + unknown + + + + + return + GEOM_Object + unknown + + + + + + MakeCylinderPntVecRHA + + + unknown + 0 thePnt @@ -1339,7 +1403,7 @@ theAngle double unknown - + @@ -1351,7 +1415,7 @@ - MakeCylinderRH + MakeCylinderRHA unknown @@ -1368,7 +1432,7 @@ unknown - theAngle + theA double unknown diff --git a/src/DlgRef/CMakeLists.txt b/src/DlgRef/CMakeLists.txt index 632b2a328..61e6a2dfa 100755 --- a/src/DlgRef/CMakeLists.txt +++ b/src/DlgRef/CMakeLists.txt @@ -75,9 +75,9 @@ SET(_uic_files DlgRef_2Sel2Spin2Push_QTD.ui DlgRef_2Sel2Spin3Check_QTD.ui DlgRef_2Sel2Spin_QTD.ui - DlgRef_2Sel3Spin1Check_QTD.ui DlgRef_2Sel3Spin2Rb_QTD.ui DlgRef_2Sel3Spin_QTD.ui + DlgRef_2Sel3Spin1Check_QTD.ui DlgRef_2SelExt_QTD.ui DlgRef_2Sel_QTD.ui DlgRef_2Spin_QTD.ui diff --git a/src/DlgRef/DlgRef_2Sel3Spin1Check_QTD.ui b/src/DlgRef/DlgRef_2Sel3Spin1Check_QTD.ui new file mode 100644 index 000000000..d652b9a90 --- /dev/null +++ b/src/DlgRef/DlgRef_2Sel3Spin1Check_QTD.ui @@ -0,0 +1,186 @@ + + + DlgRef_2Sel3Spin1Check_QTD + + + + 0 + 0 + 323 + 223 + + + + + + + + 0 + + + 6 + + + + + + + + + 9 + + + 6 + + + + + + 0 + 0 + + + + TL4 + + + false + + + + + + + + 0 + 0 + + + + TL3 + + + false + + + + + + + + 0 + 0 + + + + TL1 + + + false + + + + + + + + + + + 0 + 0 + + + + TL2 + + + false + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + TL5 + + + false + + + + + + + CB + + + + + + + + + + qPixmapFromMimeSource + + + SalomeApp_DoubleSpinBox + QDoubleSpinBox +
SalomeApp_DoubleSpinBox.h
+
+
+ + PushButton1 + LineEdit1 + PushButton2 + LineEdit2 + SpinBox_DX + + + +
diff --git a/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx b/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx index 521d03678..42dd86b7c 100644 --- a/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_CylinderDriver.cxx @@ -75,14 +75,12 @@ Standard_Integer GEOMImpl_CylinderDriver::Execute(TFunction_Logbook& log) const gp_Pnt aP; gp_Vec aV; - - TopoDS_Shape aShape; - if (aType == CYLINDER_R_H) { + if (aType == CYLINDER_R_H || aType == CYLINDER_R_H_A) { aP = gp::Origin(); aV = gp::DZ(); } - else if (aType == CYLINDER_PNT_VEC_R_H) { + else if (aType == CYLINDER_PNT_VEC_R_H || aType == CYLINDER_PNT_VEC_R_H_A) { Handle(GEOM_Function) aRefPoint = aCI.GetPoint(); Handle(GEOM_Function) aRefVector = aCI.GetVector(); TopoDS_Shape aShapePnt = aRefPoint->GetValue(); @@ -111,21 +109,41 @@ Standard_Integer GEOMImpl_CylinderDriver::Execute(TFunction_Logbook& log) const if (aCI.GetH() < 0.0) aV.Reverse(); gp_Ax2 anAxes (aP, aV); - aShape = BRepPrimAPI_MakeCylinder(anAxes, aCI.GetR(), Abs(aCI.GetH())).Shape(); - if(aCI.GetA() < 360. && aCI.GetA()> 0.){ - BRepPrimAPI_MakeCylinder MC(anAxes, aCI.GetR(), Abs(aCI.GetH()), aCI.GetA()*M_PI/180.); + bool switchAngleVar; + if(aType == CYLINDER_R_H || aType == CYLINDER_PNT_VEC_R_H) switchAngleVar = false; + else if(aType == CYLINDER_R_H_A || aType == CYLINDER_PNT_VEC_R_H_A) switchAngleVar = true; + else return 0; + TopoDS_Shape aShape; + + switch (switchAngleVar) { + case false: + { + BRepPrimAPI_MakeCylinder MC (anAxes, aCI.GetR(), Abs(aCI.GetH())); MC.Build(); if (!MC.IsDone()) { StdFail_NotDone::Raise("Cylinder can't be computed from the given parameters"); } - aShape = MC.Shape(); - } + aShape = MC.Shape(); + break; + } + case true: + { + BRepPrimAPI_MakeCylinder MCA (anAxes, aCI.GetR(), Abs(aCI.GetH()), aCI.GetA()); + MCA.Build(); + if (!MCA.IsDone()) { + StdFail_NotDone::Raise("Cylinder can't be computed from the given parameters. Failure."); + return 0; + } + aShape = MCA.Shape(); + break; + } + default: + return 0; + } if (aShape.IsNull()) return 0; - aFunction->SetValue(aShape); log.SetTouched(Label()); - return 1; } diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx index f4139be06..f3f33f969 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.cxx @@ -488,7 +488,7 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeDiskR (double theR, int theO * MakeCylinderRH */ //============================================================================= -Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, double theH, double theA) +Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, double theH) { SetErrorCode(KO); @@ -506,7 +506,6 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, dou aCI.SetR(theR); aCI.SetH(theH); - aCI.SetA(theA); //Compute the Cylinder value try { @@ -526,12 +525,60 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, dou //Make a Python command GEOM::TPythonDump(aFunction) << aCylinder - << " = geompy.MakeCylinderRH(" << theR << ", " << theH << ", " << theA << ")"; + << " = geompy.MakeCylinderRH(" << theR << ", " << theH << ")"; SetErrorCode(OK); return aCylinder; } +//============================================================================= +/*! + * MakeCylinderRHA + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRHA (double theR, double theH, double theA) +{ + SetErrorCode(KO); + + //Add a new Cylinder object + Handle(GEOM_Object) aCylinder = GetEngine()->AddObject(GetDocID(), GEOM_CYLINDER); + + //Add a new Cylinder function with R and H parameters + Handle(GEOM_Function) aFunction = aCylinder->AddFunction(GEOMImpl_CylinderDriver::GetID(), CYLINDER_R_H_A); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_CylinderDriver::GetID()) return NULL; + + GEOMImpl_ICylinder aCI (aFunction); + + aCI.SetR(theR); + aCI.SetH(theH); + aCI.SetA(theA); + + //Compute the Cylinder value + try { +#if OCC_VERSION_LARGE > 0x06010000 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("Cylinder driver failed"); + return NULL; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << aCylinder + << " = geompy.MakeCylinderRHA(" << theR << ", " << theH << ", " << theA*180./M_PI << "*math.pi/180.)"; + + SetErrorCode(OK); + return aCylinder; +} //============================================================================= /*! @@ -540,7 +587,7 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderRH (double theR, dou //============================================================================= Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRH (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, - double theR, double theH, double theA) + double theR, double theH) { SetErrorCode(KO); @@ -568,7 +615,6 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRH (Handle(GEO aCI.SetVector(aRefVec); aCI.SetR(theR); aCI.SetH(theH); - aCI.SetA(theA); //Compute the Cylinder value try { @@ -588,7 +634,68 @@ Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRH (Handle(GEO //Make a Python command GEOM::TPythonDump(aFunction) << aCylinder << " = geompy.MakeCylinder(" - << thePnt << ", " << theVec << ", " << theR << ", " << theH << ", " << theA << ")"; + << thePnt << ", " << theVec << ", " << theR << ", " << theH << ")"; + + SetErrorCode(OK); + return aCylinder; +} + +//============================================================================= +/*! + * MakeCylinderPntVecRHA + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_I3DPrimOperations::MakeCylinderPntVecRHA (Handle(GEOM_Object) thePnt, + Handle(GEOM_Object) theVec, + double theR, double theH, double theA) +{ + SetErrorCode(KO); + + if (thePnt.IsNull() || theVec.IsNull()) return NULL; + + //Add a new Cylinder object + Handle(GEOM_Object) aCylinder = GetEngine()->AddObject(GetDocID(), GEOM_CYLINDER); + + //Add a new Cylinder function for creation a cylinder relatively to point and vector + Handle(GEOM_Function) aFunction = + aCylinder->AddFunction(GEOMImpl_CylinderDriver::GetID(), CYLINDER_PNT_VEC_R_H_A); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_CylinderDriver::GetID()) return NULL; + + GEOMImpl_ICylinder aCI (aFunction); + + Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); + Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); + + if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; + + aCI.SetPoint(aRefPnt); + aCI.SetVector(aRefVec); + aCI.SetR(theR); + aCI.SetH(theH); + aCI.SetA(theA); + + //Compute the Cylinder value + try { +#if OCC_VERSION_LARGE > 0x06010000 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("Cylinder driver failed"); + return NULL; + } + } + catch (Standard_Failure) { + Handle(Standard_Failure) aFail = Standard_Failure::Caught(); + SetErrorCode(aFail->GetMessageString()); + return NULL; + } + + //Make a Python command + GEOM::TPythonDump(aFunction) << aCylinder << " = geompy.MakeCylinderA(" + << thePnt << ", " << theVec << ", " << theR << ", " << theH << ", " << theA*180./M_PI << "*math.pi/180.)"; SetErrorCode(OK); return aCylinder; diff --git a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx index d0ae75588..84a643afc 100644 --- a/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_I3DPrimOperations.hxx @@ -48,10 +48,14 @@ class GEOMImpl_I3DPrimOperations : public GEOM_IOperations { Handle(GEOM_Object) theVec, double theR); Standard_EXPORT Handle(GEOM_Object) MakeDiskR (double theR, int theOrientation); - Standard_EXPORT Handle(GEOM_Object) MakeCylinderRH (double theR, double theH, double theA); + Standard_EXPORT Handle(GEOM_Object) MakeCylinderRH (double theR, double theH); Standard_EXPORT Handle(GEOM_Object) MakeCylinderPntVecRH (Handle(GEOM_Object) thePnt, Handle(GEOM_Object) theVec, - double theR, double theH, double theA); + double theR, double theH); + Standard_EXPORT Handle(GEOM_Object) MakeCylinderRHA (double theR, double theH, double theA); + Standard_EXPORT Handle(GEOM_Object) MakeCylinderPntVecRHA (Handle(GEOM_Object) thePnt, + Handle(GEOM_Object) theVec, + double theR, double theH, double theA); Standard_EXPORT Handle(GEOM_Object) MakeConeR1R2H (double theR1, double theR2, double theH); Standard_EXPORT Handle(GEOM_Object) MakeConePntVecR1R2H (Handle(GEOM_Object) thePnt, diff --git a/src/GEOMImpl/GEOMImpl_ICylinder.hxx b/src/GEOMImpl/GEOMImpl_ICylinder.hxx index 0955df29c..c092c950e 100644 --- a/src/GEOMImpl/GEOMImpl_ICylinder.hxx +++ b/src/GEOMImpl/GEOMImpl_ICylinder.hxx @@ -24,14 +24,12 @@ // #include "GEOM_Function.hxx" -#define CYL_ARG_PNT 1 -#define CYL_ARG_VEC 2 -#define CYL_ARG_R 3 -#define CYL_ARG_H 4 +#define CYL_ARG_R 1 +#define CYL_ARG_H 2 +#define CYL_ARG_PNT 3 +#define CYL_ARG_VEC 4 #define CYL_ARG_A 5 - - class GEOMImpl_ICylinder { public: @@ -45,10 +43,6 @@ class GEOMImpl_ICylinder void SetH(double theH) { _func->SetReal(CYL_ARG_H, theH); } double GetH() { return _func->GetReal(CYL_ARG_H); } - - void SetA(double theA) { _func->SetReal(CYL_ARG_A, theA); } - - double GetA() { return _func->GetReal(CYL_ARG_A); } void SetPoint(Handle(GEOM_Function) theRefPoint) { _func->SetReference(CYL_ARG_PNT, theRefPoint); } @@ -57,6 +51,10 @@ class GEOMImpl_ICylinder void SetVector(Handle(GEOM_Function) theRefVector) { _func->SetReference(CYL_ARG_VEC, theRefVector); } Handle(GEOM_Function) GetVector() { return _func->GetReference(CYL_ARG_VEC); } + + void SetA(double theA) { _func->SetReal(CYL_ARG_A, theA); } + + double GetA() { return _func->GetReal(CYL_ARG_A); } private: diff --git a/src/GEOMImpl/GEOMImpl_Types.hxx b/src/GEOMImpl/GEOMImpl_Types.hxx index 57093b4e6..b57080a9c 100755 --- a/src/GEOMImpl/GEOMImpl_Types.hxx +++ b/src/GEOMImpl/GEOMImpl_Types.hxx @@ -206,7 +206,9 @@ #define DISK_R 3 #define CYLINDER_R_H 1 -#define CYLINDER_PNT_VEC_R_H 2 +#define CYLINDER_PNT_VEC_R_H 2 +#define CYLINDER_R_H_A 3 +#define CYLINDER_PNT_VEC_R_H_A 4 #define CONE_R1_R2_H 1 #define CONE_PNT_VEC_R1_R2_H 2 diff --git a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc index 68dc79279..5f01b7c91 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.cc +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.cc @@ -246,6 +246,27 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeDiskR (CORBA::Double theR, */ //============================================================================= GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double theR, + CORBA::Double theH) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + //Create the Cylinder + Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderRH(theR, theH); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeCylinderRHA + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRHA (CORBA::Double theR, CORBA::Double theH, CORBA::Double theA) { @@ -255,7 +276,7 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double th GetOperations()->SetNotDone(); //Create the Cylinder - Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderRH(theR, theH, theA); + Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderRHA(theR, theH, theA); if (!GetOperations()->IsDone() || anObject.IsNull()) return aGEOMObject._retn(); @@ -268,6 +289,34 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderRH (CORBA::Double th */ //============================================================================= GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRH + (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, + CORBA::Double theR, CORBA::Double theH) +{ + GEOM::GEOM_Object_var aGEOMObject; + + //Set a not done flag + GetOperations()->SetNotDone(); + + //Get the reference points + Handle(GEOM_Object) aPnt = GetObjectImpl(thePnt); + Handle(GEOM_Object) aVec = GetObjectImpl(theVec); + + if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); + + //Create the Cylinder + Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderPntVecRH(aPnt, aVec, theR, theH); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + +//============================================================================= +/*! + * MakeCylinderPntVecRHA + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, CORBA::Double theR, CORBA::Double theH, CORBA::Double theA) { @@ -283,7 +332,7 @@ GEOM::GEOM_Object_ptr GEOM_I3DPrimOperations_i::MakeCylinderPntVecRH if (aPnt.IsNull() || aVec.IsNull()) return aGEOMObject._retn(); //Create the Cylinder - Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderPntVecRH(aPnt, aVec, theR, theH, theA); + Handle(GEOM_Object) anObject = GetOperations()->MakeCylinderPntVecRHA(aPnt, aVec, theR, theH, theA); 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 63d5fa4be..f78e1c089 100644 --- a/src/GEOM_I/GEOM_I3DPrimOperations_i.hh +++ b/src/GEOM_I/GEOM_I3DPrimOperations_i.hh @@ -69,15 +69,23 @@ class GEOM_I_EXPORT GEOM_I3DPrimOperations_i : CORBA::Short theOrientation); GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, + CORBA::Double theH); + + GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, + GEOM::GEOM_Object_ptr theVec, + CORBA::Double theR, + CORBA::Double theH); + + GEOM::GEOM_Object_ptr MakeCylinderRHA (CORBA::Double theR, CORBA::Double theH, CORBA::Double theA); - - GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, + + GEOM::GEOM_Object_ptr MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theVec, CORBA::Double theR, CORBA::Double theH, - CORBA::Double theA); - + CORBA::Double theA); + GEOM::GEOM_Object_ptr MakeConeR1R2H (CORBA::Double theR1, CORBA::Double theR2, CORBA::Double theH); diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.cc b/src/GEOM_I_Superv/GEOM_Superv_i.cc index d70656378..801ea5e70 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.cc +++ b/src/GEOM_I_Superv/GEOM_Superv_i.cc @@ -1049,13 +1049,12 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDiskR (CORBA::Double theR, GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theAxis, CORBA::Double theRadius, - CORBA::Double theHeight, - CORBA::Double theAngle) + CORBA::Double theHeight) { beginService( " GEOM_Superv_i::MakeCylinderPntVecRH" ); MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRH"); get3DPrimOp(); - GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight, theAngle); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRH(thePnt, theAxis, theRadius, theHeight); endService( " GEOM_Superv_i::MakeCylinderPntVecRH" ); return anObj; } @@ -1064,17 +1063,48 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr // MakeCylinderRH: //============================================================================= GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRH (CORBA::Double theR, - CORBA::Double theH, - CORBA::Double theA) + CORBA::Double theH) { beginService( " GEOM_Superv_i::MakeCylinderRH" ); MESSAGE("GEOM_Superv_i::MakeCylinderRH"); get3DPrimOp(); - GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH, theA); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRH(theR, theH); endService( " GEOM_Superv_i::MakeCylinderRH" ); return anObj; } +//============================================================================= +// MakeCylinderPntVecRHA: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt, + GEOM::GEOM_Object_ptr theAxis, + CORBA::Double theRadius, + CORBA::Double theHeight, + CORBA::Double theAngle) +{ + beginService( " GEOM_Superv_i::MakeCylinderPntVecRHA" ); + MESSAGE("GEOM_Superv_i::MakeCylinderPntVecRHA"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderPntVecRHA(thePnt, theAxis, theRadius, theHeight, theAngle); + endService( " GEOM_Superv_i::MakeCylinderPntVecRHA" ); + return anObj; +} + +//============================================================================= +// MakeCylinderRHA: +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeCylinderRHA (CORBA::Double theR, + CORBA::Double theH, + CORBA::Double theA) +{ + beginService( " GEOM_Superv_i::MakeCylinderRHA" ); + MESSAGE("GEOM_Superv_i::MakeCylinderRHA"); + get3DPrimOp(); + GEOM::GEOM_Object_ptr anObj = my3DPrimOp->MakeCylinderRHA(theR, theH, theA); + endService( " GEOM_Superv_i::MakeCylinderRHA" ); + return anObj; +} + //============================================================================= // MakeSphere: //============================================================================= diff --git a/src/GEOM_I_Superv/GEOM_Superv_i.hh b/src/GEOM_I_Superv/GEOM_Superv_i.hh index 627be4797..4d827589e 100644 --- a/src/GEOM_I_Superv/GEOM_Superv_i.hh +++ b/src/GEOM_I_Superv/GEOM_Superv_i.hh @@ -241,13 +241,19 @@ public: GEOM::GEOM_Object_ptr MakeDiskR (CORBA::Double theR, CORBA::Short theOrientation); GEOM::GEOM_Object_ptr MakeCylinderPntVecRH (GEOM::GEOM_Object_ptr thePnt, + GEOM::GEOM_Object_ptr theAxis, + CORBA::Double theRadius, + CORBA::Double theHeight); + GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, + CORBA::Double theH); + GEOM::GEOM_Object_ptr MakeCylinderPntVecRHA (GEOM::GEOM_Object_ptr thePnt, GEOM::GEOM_Object_ptr theAxis, CORBA::Double theRadius, CORBA::Double theHeight, CORBA::Double theAngle); - GEOM::GEOM_Object_ptr MakeCylinderRH (CORBA::Double theR, + GEOM::GEOM_Object_ptr MakeCylinderRHA (CORBA::Double theR, CORBA::Double theH, - CORBA::Double theA); + CORBA::Double theA); GEOM::GEOM_Object_ptr MakeSphere (CORBA::Double theX, CORBA::Double theY, CORBA::Double theZ, diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py index 28635865c..62eec35c8 100644 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ b/src/GEOM_SWIG/GEOM_TestAll.py @@ -147,18 +147,20 @@ def TestAll (geompy, math): tan_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150) #Create base geometry 3D - Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object)->GEOM_Object - Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object - Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object - Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object, 2 Doubles)->GEOM_Object - Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object - Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object, Double)->GEOM_Object - Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object - Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object - Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object - Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object - Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object, 2 Doubles)->GEOM_Object - Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object + Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object)->GEOM_Object + Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object + Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object + Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object, 2 Doubles)->GEOM_Object + Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object + Cylinder1= geompy.MakeCylinderA(p0, vz, radius1, height,angle1) #(2 GEOM_Object, 2 Doubles)->GEOM_Object + Cyl2 = geompy.MakeCylinderRHA(radius2, height,angle2) #(2 Doubles)->GEOM_Object + Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object, Double)->GEOM_Object + Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object + Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object + Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object + Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object + Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object, 2 Doubles)->GEOM_Object + Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object #Boolean (Common, Cut, Fuse, Section) Common = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object @@ -372,6 +374,8 @@ def TestAll (geompy, math): id_Box2 = geompy.addToStudy(Box2, "Box (10,20,30)-(15,25,35)") id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder") id_Cyl1 = geompy.addToStudy(Cyl1, "Cylinder RH") + id_Cylinder1= geompy.addToStudy(Cylinder1,"CylinderA") + id_Cyl2 = geompy.addToStudy(Cyl2, "Cylinder RHA") id_Sphere = geompy.addToStudy(Sphere, "Sphere Pnt R") id_Sphere1 = geompy.addToStudy(Sphere1, "Sphere R") id_Sphere2 = geompy.addToStudy(Sphere2, "Sphere") diff --git a/src/GEOM_SWIG/geomBuilder.py b/src/GEOM_SWIG/geomBuilder.py index 3f6c012d8..c64bd6f40 100644 --- a/src/GEOM_SWIG/geomBuilder.py +++ b/src/GEOM_SWIG/geomBuilder.py @@ -2969,12 +2969,11 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): self._autoPublish(anObj, theName, "disk") return anObj - ## Create a cylinder with given base point, axis, radius, height and angle (for a portion of cylinder). + ## Create a cylinder with given base point, axis, radius and height. # @param thePnt Central point of cylinder base. # @param theAxis Cylinder axis. # @param theR Cylinder radius. # @param theH Cylinder height. - # @param theA Cylinder angle in radian. # @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. @@ -2983,16 +2982,15 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # # @ref tui_creation_cylinder "Example" @ManageTransactions("PrimOp") - def MakeCylinder(self, thePnt, theAxis, theR, theH, theA=2*math.pi, theName=None): + def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None): """ - Create a cylinder with given base point, axis, radius, height and angle (for a portion of cylinder). + Create a cylinder with given base point, axis, radius and height. Parameters: thePnt Central point of cylinder base. theAxis Cylinder axis. theR Cylinder radius. theH Cylinder height. - theA Cylinder angle in radian. 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. @@ -3001,20 +2999,62 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): New GEOM.GEOM_Object, containing the created cylinder. """ # Example: see GEOM_TestAll.py - theR,theH,theA,Parameters = ParseParameters(theR, theH, theA) - anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH, theA) - + theR,theH,Parameters = ParseParameters(theR, theH) + anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH) RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp) anObj.SetParameters(Parameters) self._autoPublish(anObj, theName, "cylinder") return anObj + + ## Create a portion of cylinder with given base point, axis, radius, height and angle. + # @param thePnt Central point of cylinder base. + # @param theAxis Cylinder axis. + # @param theR Cylinder radius. + # @param theH Cylinder height. + # @param theA Cylinder angle in radians. + # @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. + # + # @return New GEOM.GEOM_Object, containing the created cylinder. + # + # @ref tui_creation_cylinder "Example" + @ManageTransactions("PrimOp") + def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None): + """ + Create a a portion of cylinder with given base point, axis, radius, height and angle. + + Parameters: + thePnt Central point of cylinder base. + theAxis Cylinder axis. + theR Cylinder radius. + theH Cylinder height. + theA Cylinder angle in radians. + 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. - ## Create a cylinder with given radius, height and angle (for a portion of cylinder) at + Returns: + New GEOM.GEOM_Object, containing the created cylinder. + """ + # Example: see GEOM_TestAll.py + flag = False + if isinstance(theA,str): + flag = True + theR,theH,theA,Parameters = ParseParameters(theR, theH, theA) + if flag: + theA = theA*math.pi/180. + anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA) + RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp) + anObj.SetParameters(Parameters) + self._autoPublish(anObj, theName, "cylinder") + return anObj + + ## Create a cylinder with given radius and height at # the origin of coordinate system. Axis of the cylinder # will be collinear to the OZ axis of the coordinate system. # @param theR Cylinder radius. # @param theH Cylinder height. - # @param theA Cylinder angle in radian. # @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. @@ -3023,16 +3063,15 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # # @ref tui_creation_cylinder "Example" @ManageTransactions("PrimOp") - def MakeCylinderRH(self, theR, theH, theA=2*math.pi, theName=None): + def MakeCylinderRH(self, theR, theH, theName=None): """ - Create a cylinder with given radius, height and angle (for a portion of cylinder)at + Create a cylinder with given radius and height at the origin of coordinate system. Axis of the cylinder will be collinear to the OZ axis of the coordinate system. Parameters: theR Cylinder radius. theH Cylinder height. - theA Cylinder angle in radian. 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. @@ -3041,13 +3080,56 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): New GEOM.GEOM_Object, containing the created cylinder. """ # Example: see GEOM_TestAll.py - theR,theH,theA,Parameters = ParseParameters(theR, theH, theA) - anObj = self.PrimOp.MakeCylinderRH(theR, theH, theA) - + theR,theH,Parameters = ParseParameters(theR, theH) + anObj = self.PrimOp.MakeCylinderRH(theR, theH) RaiseIfFailed("MakeCylinderRH", self.PrimOp) anObj.SetParameters(Parameters) self._autoPublish(anObj, theName, "cylinder") return anObj + + ## Create a portion of cylinder with given radius, height and angle at + # the origin of coordinate system. Axis of the cylinder + # will be collinear to the OZ axis of the coordinate system. + # @param theR Cylinder radius. + # @param theH Cylinder height. + # @param theA Cylinder angle in radians. + # @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. + # + # @return New GEOM.GEOM_Object, containing the created cylinder. + # + # @ref tui_creation_cylinder "Example" + @ManageTransactions("PrimOp") + def MakeCylinderRHA(self, theR, theH, theA, theName=None): + """ + Create a portion of cylinder with given radius, height and angle at + the origin of coordinate system. Axis of the cylinder + will be collinear to the OZ axis of the coordinate system. + + Parameters: + theR Cylinder radius. + theH Cylinder height. + theA Cylinder angle in radians. + 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. + + Returns: + New GEOM.GEOM_Object, containing the created cylinder. + """ + # Example: see GEOM_TestAll.py + flag = False + if isinstance(theA,str): + flag = True + theR,theH,theA,Parameters = ParseParameters(theR, theH, theA) + if flag: + theA = theA*math.pi/180. + anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA) + RaiseIfFailed("MakeCylinderRHA", self.PrimOp) + anObj.SetParameters(Parameters) + self._autoPublish(anObj, theName, "cylinder") + return anObj ## Create a sphere with given center and radius. # @param thePnt Sphere center. @@ -7831,7 +7913,7 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): return anObj ## Rotate the given object around the given axis - # on the given angle, creating its copy before the rotatation. + # on the given angle, creating its copy before the rotation. # @param theObject The object to be rotated. # @param theAxis Rotation axis. # @param theAngle Rotation angle in radians. diff --git a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx index e12b35a35..9f9ad7a6c 100644 --- a/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx +++ b/src/PrimitiveGUI/PrimitiveGUI_CylinderDlg.cxx @@ -89,7 +89,7 @@ PrimitiveGUI_CylinderDlg::PrimitiveGUI_CylinderDlg (GeometryGUI* theGeometryGUI, GroupDimensions->TextLabel3->setText(tr("GEOM_ANGLE")); GroupDimensions->checkBox->setText(tr("")); GroupDimensions->SpinBox_DZ->setDisabled(true); - + QVBoxLayout* layout = new QVBoxLayout(centralWidget()); layout->setMargin(0); layout->setSpacing(6); layout->addWidget(GroupPoints); @@ -121,13 +121,14 @@ void PrimitiveGUI_CylinderDlg::Init() double step = resMgr->doubleValue("Geometry", "SettingsGeomStep", 100); // min, max, step and decimals for spin boxes & initial values + double SpecificStep = 5; initSpinBox(GroupPoints->SpinBox_DX, 0.00001, COORD_MAX, step, "length_precision" ); initSpinBox(GroupPoints->SpinBox_DY, 0.00001, COORD_MAX, step, "length_precision" ); - initSpinBox(GroupPoints->SpinBox_DZ, 0.00001, 360., step, "length_precision" ); + initSpinBox(GroupPoints->SpinBox_DZ, 0.00001, 359.99999, SpecificStep, "angle_precision" ); + initSpinBox(GroupDimensions->SpinBox_DX, 0.00001, COORD_MAX, step, "length_precision" ); initSpinBox(GroupDimensions->SpinBox_DY, 0.00001, COORD_MAX, step, "length_precision" ); - initSpinBox(GroupDimensions->SpinBox_DZ, 0.00001, 360., step, "length_precision" ); - + initSpinBox(GroupDimensions->SpinBox_DZ, 0.00001, 359.99999, SpecificStep, "angle_precision" ); // init variables myEditCurrentArgument = GroupPoints->LineEdit1; @@ -139,7 +140,7 @@ void PrimitiveGUI_CylinderDlg::Init() myPoint.nullify(); myDir.nullify(); - double aRadius(100.0), aHeight(300.0), aAngle(360.); + double aRadius(100.0), aHeight(300.0), aAngle(270.); GroupPoints->SpinBox_DX->setValue(aRadius); GroupPoints->SpinBox_DY->setValue(aHeight); GroupPoints->SpinBox_DZ->setValue(aAngle); @@ -167,7 +168,7 @@ void PrimitiveGUI_CylinderDlg::Init() connect(GroupPoints->checkBox, SIGNAL(toggled(bool)), this, SLOT(ActivateAngle())); connect(GroupDimensions->checkBox, SIGNAL(toggled(bool)), this, SLOT(ActivateAngle())); - + initName(tr("GEOM_CYLINDER")); setConstructorId(1); // simplest constructor @@ -182,10 +183,8 @@ void PrimitiveGUI_CylinderDlg::SetDoubleSpinBoxStep (double step) { GroupPoints->SpinBox_DX->setSingleStep(step); GroupPoints->SpinBox_DY->setSingleStep(step); - GroupPoints->SpinBox_DZ->setSingleStep(step); GroupDimensions->SpinBox_DX->setSingleStep(step); GroupDimensions->SpinBox_DY->setSingleStep(step); - GroupDimensions->SpinBox_DZ->setSingleStep(step); } //================================================================================= @@ -418,6 +417,7 @@ bool PrimitiveGUI_CylinderDlg::execute (ObjectList& objects) { bool res = false; bool BAngle = false; + GEOM::GEOM_Object_var anObj; GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation()); @@ -426,32 +426,56 @@ bool PrimitiveGUI_CylinderDlg::execute (ObjectList& objects) case 0: BAngle = GroupPoints->checkBox->isChecked(); if ( myPoint && myDir ) { - if(!BAngle) anObj = anOper->MakeCylinderPntVecRH(myPoint.get(), myDir.get(), getRadius(), getHeight(), 360.); - else anObj = anOper->MakeCylinderPntVecRH(myPoint.get(), myDir.get(), getRadius(), getHeight(), getAngle()); - if (!anObj->_is_nil() && !IsPreview()) - { - QStringList aParameters; - aParameters << GroupPoints->SpinBox_DX->text(); - aParameters << GroupPoints->SpinBox_DY->text(); - aParameters << GroupPoints->SpinBox_DZ->text(); - anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + if(!BAngle){ + anObj = anOper->MakeCylinderPntVecRH(myPoint.get(), myDir.get(), getRadius(), getHeight()); + if (!anObj->_is_nil() && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupPoints->SpinBox_DX->text(); + aParameters << GroupPoints->SpinBox_DY->text(); + anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + res = true; + } + else if(BAngle){ + anObj = anOper->MakeCylinderPntVecRHA(myPoint.get(), myDir.get(), getRadius(), getHeight(), getAngle()*M_PI/180.); + if (!anObj->_is_nil() && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupPoints->SpinBox_DX->text(); + aParameters << GroupPoints->SpinBox_DY->text(); + aParameters << GroupPoints->SpinBox_DZ->text(); + anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + res = true; } - res = true; } break; case 1: BAngle = GroupDimensions->checkBox->isChecked(); - if(!BAngle)anObj = anOper->MakeCylinderRH(getRadius(), getHeight(), 360.); - else anObj = anOper->MakeCylinderRH(getRadius(), getHeight(), getAngle()); - if (!anObj->_is_nil() && !IsPreview()) - { - QStringList aParameters; - aParameters << GroupDimensions->SpinBox_DX->text(); - aParameters << GroupDimensions->SpinBox_DY->text(); - aParameters << GroupDimensions->SpinBox_DZ->text(); - anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + if(!BAngle){ + anObj = anOper->MakeCylinderRH(getRadius(), getHeight()); + if (!anObj->_is_nil() && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupDimensions->SpinBox_DX->text(); + aParameters << GroupDimensions->SpinBox_DY->text(); + anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + res = true; + } + else if(BAngle){ + anObj = anOper->MakeCylinderRHA(getRadius(), getHeight(), getAngle()*M_PI/180.); + if (!anObj->_is_nil() && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupDimensions->SpinBox_DX->text(); + aParameters << GroupDimensions->SpinBox_DY->text(); + aParameters << GroupDimensions->SpinBox_DZ->text(); + anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + res = true; } - res = true; break; } @@ -530,4 +554,4 @@ void PrimitiveGUI_CylinderDlg::ActivateAngle() GroupDimensions->SpinBox_DZ->setEnabled( GroupDimensions->checkBox->isChecked() ); processPreview(); } -} \ No newline at end of file +} -- 2.39.2