From 449a8ffa1aabc756090229c5f4c2da677580745b Mon Sep 17 00:00:00 2001 From: rnc Date: Fri, 20 Jul 2012 09:47:00 +0000 Subject: [PATCH] EDF 2281 : Second constructor and final documentation for the divided disk --- doc/salome/gui/GEOM/images/divided_disk.png | Bin 20044 -> 16234 bytes .../GEOM/images/divided_disk_PntVecR_dlg.png | Bin 0 -> 23619 bytes .../gui/GEOM/images/divided_disk_dlg.png | Bin 0 -> 22648 bytes .../gui/GEOM/input/creating_divideddisk.doc | 27 +- idl/GEOM_Gen.idl | 14 + .../AdvancedGUI_DividedDiskDlg.cxx | 267 ++++++++++++++---- src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.h | 6 + src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx | 36 ++- src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx | 63 +++++ src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx | 6 + src/GEOMImpl/GEOMImpl_IDividedDisk.hxx | 9 + src/GEOM_I/GEOM_IAdvancedOperations_i.cc | 30 ++ src/GEOM_I/GEOM_IAdvancedOperations_i.hh | 11 +- src/GEOM_SWIG/geompyDC.py | 15 + 14 files changed, 415 insertions(+), 69 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/divided_disk_PntVecR_dlg.png create mode 100644 doc/salome/gui/GEOM/images/divided_disk_dlg.png diff --git a/doc/salome/gui/GEOM/images/divided_disk.png b/doc/salome/gui/GEOM/images/divided_disk.png index 8f0bb3ee46cfc591e262e70d40b499d93b564ce7..fe0868d9e63a535c0ab96f6aa22943efb3fe989b 100644 GIT binary patch literal 16234 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 EAHoJwV*mgE literal 20044 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 diff --git a/doc/salome/gui/GEOM/images/divided_disk_PntVecR_dlg.png b/doc/salome/gui/GEOM/images/divided_disk_PntVecR_dlg.png new file mode 100644 index 0000000000000000000000000000000000000000..c57f8f6b5f951eb89d4bb57e3deb80db155680a1 GIT binary patch literal 23619 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¥O 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 disk object is a disk divided into \b blocks. It means that it's a shape ready to be meshed with ruled hexaedra. -Moreover this shape can be used as a basis in an \ref create_extrusion_alongpath_page "Extrusion along a path operation" in order to obtain any tube shape prepared for hexaedral mesh +The Divided disk object is a disk divided into \b blocks. It means that it's a shape prepared for hexaedral meshing. + +\n Moreover this shape can be used as a basis in an \ref create_extrusion_alongpath_page "Extrusion along a path" operation in order to obtain any tube shape prepared for hexaedral meshing (see example below). Example: \image html divided_disk.png -To create a \b DividedDisk in the Main Menu select New Entity - > +To create a Divided Disk in the Main Menu select New Entity - > Advanced - > DividedDisk +\n Then there are 2 ways to create a Divided Disk in 3D space. +\n For both operations : Specify the parameters of the DividedDisk object creation in the opened dialog box and press "Apply" or "Apply & Close" button. Result of each operation will be a GEOM_Object. -TUI Command: geompy.MakeDividedDisk(R, Orientation) +\n First way : by radius and orientation (plane "OXY", "OYZ" or "OZX"). The resulting disk is located at the origin of coordinates + +TUI Command: geompy.MakeDividedDisk(Radius, Orientation) Arguments: -- \b R - Radius of the disk +- \b Radius - Radius of the disk - \b Orientation - Plane on wich the disk will be built \image html divided_disk_dlg.png +\n Second way : by giving its center, normal and radius. + +TUI Command: geompy.MakeDividedDiskPntVecR(Center, Vector, +Radius) + +Arguments: +- \b Center - Center of the disk +- \b Vector - Normal to the plane of the disk +- \b Radius - Radius of the disk + +\image html divided_disk_PntVecR_dlg.png + Our TUI Scripts provide you with useful examples of creation of \ref tui_creation_divideddisk "Advanced objects". diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 370e035a8..b5bfd5630 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -3763,10 +3763,24 @@ module GEOM * can be use to create divided pipes for later meshing in hexaedra. * \param theR Radius of the disk * \param theRatio Relative size of the central square diagonal against the disk diameter + * \param theOrientation Plane on which the disk will be built * \return New GEOM_Object, containing the created shape. */ GEOM_Object MakeDividedDisk (in double theR, in double theRatio, in short theOrientation); + /*! + * \brief Create a Disk prepared for hexa meshing with given center, normal vector and radius. + * \param thePnt disk center. + * \param theVec Vector, normal to the plane of the disk. + * \param theR Disk radius. + * \param theRatio Relative size of the central square diagonal against the disk diameter + * \return New GEOM_Object, containing the created disk. + */ + GEOM_Object MakeDividedDiskPntVecR ( in GEOM_Object thePnt, + in GEOM_Object theVec, + in double theR, + in double theRatio); + /*! * Builds a cylinder prepared for hexa meshes * \param theR Radius of the cylinder diff --git a/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.cxx b/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.cxx index 8b4fed3b7..5ac411273 100644 --- a/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.cxx +++ b/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.cxx @@ -45,16 +45,19 @@ AdvancedGUI_DividedDiskDlg::AdvancedGUI_DividedDiskDlg (GeometryGUI* theGeometryGUI, QWidget* parent) : GEOMBase_Skeleton(theGeometryGUI, parent, false) { - QPixmap imageOp (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_DIVIDEDDISK_R_RATIO"))); +// QPixmap imageOp (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_DIVIDEDDISK_R_RATIO"))); + QPixmap imageOp1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_DISK_R"))); + QPixmap imageOp2 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_DISK_PNT_VEC_R"))); QPixmap imageSel (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); setWindowTitle(tr("GEOM_DIVIDEDDISK_TITLE")); /***************************************************************/ mainFrame()->GroupConstructors->setTitle(tr("GEOM_DIVIDEDDISK")); - mainFrame()->RadioButton1->setIcon(imageOp); - mainFrame()->RadioButton2->setAttribute(Qt::WA_DeleteOnClose); - mainFrame()->RadioButton2->close(); + mainFrame()->RadioButton1->setIcon(imageOp1); + mainFrame()->RadioButton2->setIcon(imageOp2); +// mainFrame()->RadioButton2->setAttribute(Qt::WA_DeleteOnClose); +// mainFrame()->RadioButton2->close(); mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose); mainFrame()->RadioButton3->close(); @@ -67,12 +70,23 @@ AdvancedGUI_DividedDiskDlg::AdvancedGUI_DividedDiskDlg (GeometryGUI* theGeometry GroupOrientation->RadioButton1->setText(tr("GEOM_WPLANE_OXY")); GroupOrientation->RadioButton2->setText(tr("GEOM_WPLANE_OYZ")); GroupOrientation->RadioButton3->setText(tr("GEOM_WPLANE_OZX")); + + GroupPntVecR = new DlgRef_2Sel1Spin(centralWidget()); + GroupPntVecR->GroupBox1->setTitle(tr("GEOM_ARGUMENTS")); + GroupPntVecR->TextLabel1->setText(tr("GEOM_CENTER_POINT")); + GroupPntVecR->TextLabel2->setText(tr("GEOM_VECTOR")); + GroupPntVecR->TextLabel3->setText(tr("GEOM_RADIUS")); + GroupPntVecR->PushButton1->setIcon(imageSel); + GroupPntVecR->PushButton2->setIcon(imageSel); + GroupPntVecR->LineEdit1->setReadOnly(true); + GroupPntVecR->LineEdit2->setReadOnly(true); //@@ setup dialog box layout here @@// QVBoxLayout* layout = new QVBoxLayout(centralWidget()); layout->setMargin(0); layout->setSpacing(6); layout->addWidget(GroupParams); layout->addWidget(GroupOrientation); + layout->addWidget(GroupPntVecR); /***************************************************************/ setHelpFileName("create_divideddisk_page.html"); @@ -100,7 +114,8 @@ void AdvancedGUI_DividedDiskDlg::Init() // min, max, step and decimals for spin boxes & initial values initSpinBox(GroupParams->SpinBox_DX, 0.00001, COORD_MAX, step, "length_precision" ); - GroupParams->SpinBox_DX->setValue(100); + GroupParams ->SpinBox_DX->setValue(100); + GroupPntVecR->SpinBox_DX->setValue(100); GroupOrientation->RadioButton1->setChecked(true); myOrientation = 1; @@ -110,17 +125,22 @@ void AdvancedGUI_DividedDiskDlg::Init() connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply())); connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), this, SLOT(SetDoubleSpinBoxStep(double))); + + connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int))); + + connect(GroupPntVecR->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(GroupPntVecR->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(GroupParams->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); + connect(GroupParams->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); + connect(GroupPntVecR->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(GroupOrientation->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); - connect(GroupOrientation->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); - connect(GroupOrientation->RadioButton3, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); + connect(GroupOrientation->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); + connect(GroupOrientation->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); + connect(GroupOrientation->RadioButton3, SIGNAL(clicked()), this, SLOT(RadioButtonClicked())); initName(tr("GEOM_DIVIDEDDISK")); - resize(minimumSizeHint()); - displayPreview(true); + ConstructorsClicked(0); } //================================================================================= @@ -132,6 +152,60 @@ void AdvancedGUI_DividedDiskDlg::SetDoubleSpinBoxStep (double step) //@@ set double spin box step for all spin boxes here @@// } +//================================================================================= +// function : ConstructorsClicked() +// purpose : Radio button management +//================================================================================= +void AdvancedGUI_DividedDiskDlg::ConstructorsClicked (int constructorId) +{ + disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); + + switch (constructorId) { + case 0: + { + GroupPntVecR->hide(); + GroupParams->show(); + GroupOrientation->show(); + + disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); + globalSelection(); // close local contexts, if any + break; + } + case 1: + { + GroupParams->hide(); + GroupOrientation->hide(); + GroupPntVecR->show(); + + GroupPntVecR->PushButton1->click(); + break; + } + } + + qApp->processEvents(); + updateGeometry(); + resize(minimumSizeHint()); + SelectionIntoArgument(); + + displayPreview(true); +} + +//================================================================================= +// function : RadioButtonClicked() +// purpose : Radio button management +//================================================================================= +void AdvancedGUI_DividedDiskDlg::RadioButtonClicked() +{ + if (GroupOrientation->RadioButton1->isChecked()) + myOrientation = 1; + else if (GroupOrientation->RadioButton2->isChecked()) + myOrientation = 2; + else if (GroupOrientation->RadioButton3->isChecked()) + myOrientation = 3; + + displayPreview(true); +} + //================================================================================= // function : ClickOnOk() // purpose : @@ -156,6 +230,99 @@ bool AdvancedGUI_DividedDiskDlg::ClickOnApply() return true; } +//================================================================================= +// function : SelectionIntoArgument() +// purpose : Called when selection is changed or on dialog initialization or activation +//================================================================================= +void AdvancedGUI_DividedDiskDlg::SelectionIntoArgument() +{ + if (getConstructorId() == 0) + return; + + erasePreview(); + myEditCurrentArgument->setText(""); + + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); + + if (aSelList.Extent() != 1) { + if (myEditCurrentArgument == GroupPntVecR->LineEdit1) myPoint.nullify(); + else if (myEditCurrentArgument == GroupPntVecR->LineEdit2) myDir.nullify(); + return; + } + + TopAbs_ShapeEnum aNeedType = myEditCurrentArgument == GroupPntVecR->LineEdit2 ? TopAbs_EDGE : TopAbs_VERTEX; + GEOM::GeomObjPtr aSelectedObject = getSelected( aNeedType ); + TopoDS_Shape aShape; + if ( aSelectedObject && GEOMBase::GetShape( aSelectedObject.get(), aShape ) && !aShape.IsNull() ){ + QString aName = GEOMBase::GetName( aSelectedObject.get() ); + + myEditCurrentArgument->setText(aName); + + // clear selection + disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); + myGeomGUI->getApp()->selectionMgr()->clearSelected(); + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(SelectionIntoArgument())); + + if (myEditCurrentArgument == GroupPntVecR->LineEdit1) { + myPoint = aSelectedObject; + if (myPoint && !myDir) + GroupPntVecR->PushButton2->click(); + } + else if (myEditCurrentArgument == GroupPntVecR->LineEdit2) { + myDir = aSelectedObject; + if (myDir && !myPoint) + GroupPntVecR->PushButton1->click(); + } + } + displayPreview(true); +} + +//================================================================================= +// function : SetEditCurrentArgument() +// purpose : +//================================================================================= +void AdvancedGUI_DividedDiskDlg::SetEditCurrentArgument() +{ + QPushButton* send = (QPushButton*)sender(); + + if (send == GroupPntVecR->PushButton1) { + myEditCurrentArgument = GroupPntVecR->LineEdit1; + + GroupPntVecR->PushButton2->setDown(false); + GroupPntVecR->LineEdit2->setEnabled(false); + } + else if (send == GroupPntVecR->PushButton2) { + myEditCurrentArgument = GroupPntVecR->LineEdit2; + + GroupPntVecR->PushButton1->setDown(false); + GroupPntVecR->LineEdit1->setEnabled(false); + } + + disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); + if (myEditCurrentArgument == GroupPntVecR->LineEdit2) { + globalSelection(); // close local contexts, if any + localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE); + } + else { + globalSelection(); // close local contexts, if any + localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX); + } + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(SelectionIntoArgument())); + + // enable line edit + myEditCurrentArgument->setEnabled(true); + myEditCurrentArgument->setFocus(); + // after setFocus(), because it will be setDown(false) when loses focus + send->setDown(true); + + // seems we need it only to avoid preview disappearing, caused by selection mode change + displayPreview(true); +} + //================================================================================= // function : ActivateThisDialog() // purpose : @@ -163,7 +330,10 @@ bool AdvancedGUI_DividedDiskDlg::ClickOnApply() void AdvancedGUI_DividedDiskDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - displayPreview(true); + connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ), + this, SLOT( SelectionIntoArgument() ) ); + + ConstructorsClicked( getConstructorId() ); } //================================================================================= @@ -176,41 +346,12 @@ void AdvancedGUI_DividedDiskDlg::enterEvent (QEvent*) ActivateThisDialog(); } -//================================================================================= -// function : RadioBittonClicked() -// purpose : Radio button management -//================================================================================= -void AdvancedGUI_DividedDiskDlg::RadioButtonClicked() -{ - if (GroupOrientation->RadioButton1->isChecked()) - myOrientation = 1; - else if (GroupOrientation->RadioButton2->isChecked()) - myOrientation = 2; - else if (GroupOrientation->RadioButton3->isChecked()) - myOrientation = 3; - -// gp_Pnt theOrigin = gp::Origin(); -// gp_Dir DirZ = gp::DZ(); -// gp_Dir DirX = gp::DX(); -// gp_Dir DirY = gp::DY(); -// -// if (GroupOrientation->RadioButton1->isChecked()) -// myWPlane = gp_Ax3(theOrigin, DirZ, DirX); -// else if (GroupOrientation->RadioButton2->isChecked()) -// myWPlane = gp_Ax3(theOrigin, DirX, DirY); -// else if (GroupOrientation->RadioButton3->isChecked()) -// myWPlane = gp_Ax3(theOrigin, DirY, DirZ); - - displayPreview(true); -} - //================================================================================= // function : ValueChangedInSpinBox() // purpose : //================================================================================= void AdvancedGUI_DividedDiskDlg::ValueChangedInSpinBox() { - //@@ connect custom spin boxes or other widget to this slot in the Init() method for automatic preview update @@// displayPreview(true); } @@ -247,20 +388,38 @@ bool AdvancedGUI_DividedDiskDlg::execute (ObjectList& objects) GEOM::GEOM_Object_var anObj; GEOM::GEOM_IAdvancedOperations_var anOper = GEOM::GEOM_IAdvancedOperations::_narrow(getOperation()); - - //@@ retrieve input values from the widgets here @@// - CORBA::Double theR = GroupParams->SpinBox_DX->value(); //@@ init parameter value from dialog box @@; - CORBA::Double theRatio = 50; //@@ init parameter value from dialog box @@; - - // call engine function - anObj = anOper->MakeDividedDisk(theR, theRatio, myOrientation); - res = !anObj->_is_nil(); - if (res && !IsPreview()) - { - QStringList aParameters; - aParameters << GroupParams->SpinBox_DX->text(); - if ( aParameters.count() > 0 ) anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + CORBA::Double theRatio = 50; + CORBA::Double theR = 0; + + switch (getConstructorId()) { + case 0: + theR = GroupParams->SpinBox_DX->value(); // init parameter value from dialog box ; + + // call engine function + anObj = anOper->MakeDividedDisk(theR, theRatio, myOrientation); + res = !anObj->_is_nil(); + if (res && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupParams->SpinBox_DX->text(); + if ( aParameters.count() > 0 ) anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + break; + case 1: + theR = GroupPntVecR->SpinBox_DX->value(); + + // call engine function + anObj = anOper->MakeDividedDiskPntVecR(myPoint.get(), myDir.get(), theR, theRatio); + res = !anObj->_is_nil(); + if (res && !IsPreview()) + { + QStringList aParameters; + aParameters << GroupPntVecR->SpinBox_DX->text(); + if ( aParameters.count() > 0 ) anObj->SetParameters(aParameters.join(":").toLatin1().constData()); + } + break; } + if (res) objects.push_back(anObj._retn()); diff --git a/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.h b/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.h index 5d3ff0a02..b84b63a03 100644 --- a/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.h +++ b/src/AdvancedGUI/AdvancedGUI_DividedDiskDlg.h @@ -26,6 +26,7 @@ class DlgRef_1Spin; class DlgRef_3Radio; +class DlgRef_2Sel1Spin; //================================================================================= // class : AdvancedGUI_DividedDiskDlg @@ -50,13 +51,18 @@ private: void enterEvent( QEvent* ); private: + GEOM::GeomObjPtr myPoint, myDir; DlgRef_1Spin* GroupParams; DlgRef_3Radio* GroupOrientation; + DlgRef_2Sel1Spin* GroupPntVecR; int myOrientation; private slots: + void ConstructorsClicked ( int ); void ClickOnOk(); bool ClickOnApply(); + void SetEditCurrentArgument(); + void SelectionIntoArgument(); void ActivateThisDialog(); void ValueChangedInSpinBox(); void RadioButtonClicked(); diff --git a/src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx b/src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx index d14c6f6b7..e0cecd969 100644 --- a/src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_DividedDiskDriver.cxx @@ -50,8 +50,9 @@ #include #include -#include +#include +#include //@@ include required header files here @@// //======================================================================= @@ -91,17 +92,34 @@ Standard_Integer GEOMImpl_DividedDiskDriver::Execute(TFunction_Logbook& log) con double Ratio = aData.GetRatio(); // Build reference disk (in the global coordinate system) - TopoDS_Shell S = MakeDisk( R, Ratio ); + TopoDS_Shell aDisk = MakeDisk( R, Ratio ); - if (aType == DIVIDEDDISK_R_RATIO) { + if (aType == DIVIDEDDISK_R_RATIO) + { int theOrientation = aData.GetOrientation(); - aShape = TransformShape(S, theOrientation); + aShape = TransformShape(aDisk, theOrientation); } - else if (aType == DIVIDEDDISK_R_VECTOR_PNT){ - // other construction modes here - gp_Pnt P = gp::Origin(); - gp_Dir V = gp::DZ(); - aShape = TransformShape(S, P, V); + else if (aType == DIVIDEDDISK_R_VECTOR_PNT) + { + Handle(GEOM_Function) aRefPoint = aData.GetCenter(); + Handle(GEOM_Function) aRefVector = aData.GetVector(); + TopoDS_Shape aShapePnt = aRefPoint->GetValue(); + TopoDS_Shape aShapeVec = aRefVector->GetValue(); + + if (aShapePnt.ShapeType() == TopAbs_VERTEX && + aShapeVec.ShapeType() == TopAbs_EDGE) + { + gp_Pnt aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aShapePnt)); + TopoDS_Edge anE = TopoDS::Edge(aShapeVec); + TopoDS_Vertex V1, V2; + TopExp::Vertices(anE, V1, V2, Standard_True); + if (!V1.IsNull() && !V2.IsNull()) + { + gp_Vec aVec (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2)); + gp_Dir aDir(aVec); + aShape = TransformShape(aDisk, aPnt, aDir); + } + } } if (aShape.IsNull()) return 0; diff --git a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx index fc39655cf..703112c7c 100644 --- a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx @@ -2290,6 +2290,69 @@ Handle(GEOM_Object) GEOMImpl_IAdvancedOperations::MakeDividedDisk (double theR, return aShape; } +//============================================================================= +/*! + * This function allows to create a disk already divided into blocks. It can be + * used to create divided pipes for later meshing in hexaedra. + * \param theR Radius of the disk + * \param theRatio Relative size of the central square diagonal against the disk diameter + * \return New GEOM_Object, containing the created shape. + */ +//============================================================================= +Handle(GEOM_Object) GEOMImpl_IAdvancedOperations::MakeDividedDiskPntVecR (Handle(GEOM_Object) thePnt, + Handle(GEOM_Object) theVec, + double theR, + double theRatio) +{ + SetErrorCode(KO); + + //Add a new object + Handle(GEOM_Object) aShape = GetEngine()->AddObject(GetDocID(), GEOM_DIVIDEDDISK); + + //Add a new shape function with parameters + Handle(GEOM_Function) aFunction = aShape->AddFunction(GEOMImpl_DividedDiskDriver::GetID(), DIVIDEDDISK_R_VECTOR_PNT); + if (aFunction.IsNull()) return NULL; + + //Check if the function is set correctly + if (aFunction->GetDriverGUID() != GEOMImpl_DividedDiskDriver::GetID()) return NULL; + + GEOMImpl_IDividedDisk aData (aFunction); + + Handle(GEOM_Function) aRefPnt = thePnt->GetLastFunction(); + Handle(GEOM_Function) aRefVec = theVec->GetLastFunction(); + + if (aRefPnt.IsNull() || aRefVec.IsNull()) return NULL; + + aData.SetCenter(aRefPnt); + aData.SetVector(aRefVec); + + aData.SetR(theR); + aData.SetRatio(theRatio); + + //Compute the resulting value + try { +#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 + OCC_CATCH_SIGNALS; +#endif + if (!GetSolver()->ComputeFunction(aFunction)) { + SetErrorCode("DividedDisk 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) << aShape << " = geompy.MakeDividedDiskPntVecR(" << thePnt << ", " << theVec << ", " << theR << ")"; + + SetErrorCode(OK); + + return aShape; +} + //============================================================================= /*! * Builds a cylinder prepared for hexa meshes diff --git a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx index a687f35b7..c05575fb2 100644 --- a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx +++ b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.hxx @@ -109,7 +109,13 @@ public: Handle(GEOM_Object) P1 = 0, Handle(GEOM_Object) P2 = 0, Handle(GEOM_Object) P3 = 0); + Standard_EXPORT Handle(GEOM_Object) MakeDividedDisk (double theR, double theRatio, int theOrientation); + Standard_EXPORT Handle(GEOM_Object) MakeDividedDiskPntVecR (Handle(GEOM_Object) thePnt, + Handle(GEOM_Object) theVec, + double theR, + double theRatio); + Standard_EXPORT Handle(GEOM_Object) MakeDividedCylinder (double theR, double theH); /*@@ insert new functions before this line @@ do not remove this line @@*/ }; diff --git a/src/GEOMImpl/GEOMImpl_IDividedDisk.hxx b/src/GEOMImpl/GEOMImpl_IDividedDisk.hxx index 0f6b0205a..2c0a8f9b0 100644 --- a/src/GEOMImpl/GEOMImpl_IDividedDisk.hxx +++ b/src/GEOMImpl/GEOMImpl_IDividedDisk.hxx @@ -28,6 +28,9 @@ #define DIVIDEDDISK_ARG_RATIO 2 #define DIVIDEDDISK_ARG_ORIENT 3 +#define DIVIDEDDISK_ARG_CENTER 4 +#define DIVIDEDDISK_ARG_VECTOR 5 + class GEOMImpl_IDividedDisk { public: @@ -41,6 +44,12 @@ public: void SetOrientation(int theOrientation) { _func->SetInteger(DIVIDEDDISK_ARG_ORIENT, theOrientation); } double GetOrientation() { return _func->GetInteger(DIVIDEDDISK_ARG_ORIENT); } + + void SetCenter(Handle(GEOM_Function) theP) { _func->SetReference(DIVIDEDDISK_ARG_CENTER, theP); } + void SetVector(Handle(GEOM_Function) theV) { _func->SetReference(DIVIDEDDISK_ARG_VECTOR, theV); } + + Handle(GEOM_Function) GetCenter() { return _func->GetReference(DIVIDEDDISK_ARG_CENTER); } + Handle(GEOM_Function) GetVector() { return _func->GetReference(DIVIDEDDISK_ARG_VECTOR); } private: Handle(GEOM_Function) _func; diff --git a/src/GEOM_I/GEOM_IAdvancedOperations_i.cc b/src/GEOM_I/GEOM_IAdvancedOperations_i.cc index e007eefc4..900fcf544 100644 --- a/src/GEOM_I/GEOM_IAdvancedOperations_i.cc +++ b/src/GEOM_I/GEOM_IAdvancedOperations_i.cc @@ -345,6 +345,36 @@ GEOM::GEOM_Object_ptr GEOM_IAdvancedOperations_i::MakeDividedDisk (CORBA::Double return GetObject(anObject); } +//============================================================================= +/*! + * MakeDividedDiskPntVecR + */ +//============================================================================= +GEOM::GEOM_Object_ptr GEOM_IAdvancedOperations_i::MakeDividedDiskPntVecR (GEOM::GEOM_Object_ptr thePnt, + GEOM::GEOM_Object_ptr theVec, + CORBA::Double theR, + CORBA::Double theRatio) +{ + 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(); + + // Make DividedDisk + Handle(GEOM_Object) anObject = + GetOperations()->MakeDividedDiskPntVecR(aPnt, aVec, theR, theRatio); + if (!GetOperations()->IsDone() || anObject.IsNull()) + return aGEOMObject._retn(); + + return GetObject(anObject); +} + //============================================================================= /*! * Builds a cylinder prepared for hexa meshes diff --git a/src/GEOM_I/GEOM_IAdvancedOperations_i.hh b/src/GEOM_I/GEOM_IAdvancedOperations_i.hh index ec09a18f5..c692bc3cc 100644 --- a/src/GEOM_I/GEOM_IAdvancedOperations_i.hh +++ b/src/GEOM_I/GEOM_IAdvancedOperations_i.hh @@ -63,7 +63,16 @@ class GEOM_I_EXPORT GEOM_IAdvancedOperations_i : CORBA::Double theR2, CORBA::Double theW2, CORBA::Double theL2, CORBA::Double theRF, CORBA::Boolean theHexMesh, GEOM::GEOM_Object_ptr theP1, GEOM::GEOM_Object_ptr theP2, GEOM::GEOM_Object_ptr theP3); - GEOM::GEOM_Object_ptr MakeDividedDisk (CORBA::Double theR, CORBA::Double theRatio, CORBA::Short theOrientation); + + GEOM::GEOM_Object_ptr MakeDividedDisk (CORBA::Double theR, + CORBA::Double theRatio, + CORBA::Short theOrientation); + + GEOM::GEOM_Object_ptr MakeDividedDiskPntVecR (GEOM::GEOM_Object_ptr theCenter, + GEOM::GEOM_Object_ptr theVector, + CORBA::Double theR, + CORBA::Double theRatio); + GEOM::GEOM_Object_ptr MakeDividedCylinder (CORBA::Double theR, CORBA::Double theH); /*@@ insert new functions before this line @@ do not remove this line @@*/ diff --git a/src/GEOM_SWIG/geompyDC.py b/src/GEOM_SWIG/geompyDC.py index 4b23d4eab..d178b45a7 100644 --- a/src/GEOM_SWIG/geompyDC.py +++ b/src/GEOM_SWIG/geompyDC.py @@ -8562,6 +8562,21 @@ class geompyDC(GEOM._objref_GEOM_Gen): RaiseIfFailed("MakeDividedDisk", self.AdvOp) if Parameters: anObj.SetParameters(Parameters) return anObj + + ## This function allows creating a disk already divided into blocks. It + # can be used to create divided pipes for later meshing in hexaedra. + # @param theCenter Center of the disk + # @param theVector Normal vector to the plane of the created disk + # @param theRadius Radius of the disk + # @return New GEOM_Object, containing the created shape. + # + # @ref tui_creation_divideddisk "Example" + def MakeDividedDiskPntVecR(self, theCenter, theVector, theRadius): + theRadius, Parameters = ParseParameters(theRadius) + anObj = self.AdvOp.MakeDividedDiskPntVecR(theCenter, theVector, theRadius, 50.0) + RaiseIfFailed("MakeDividedDiskPntVecR", self.AdvOp) + if Parameters: anObj.SetParameters(Parameters) + return anObj ## Builds a cylinder prepared for hexa meshes # @param theR Radius of the cylinder -- 2.39.2