From 7c69e00bac6eb8b361a2dd2ba9d5f6f7aef9aa82 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 11 Aug 2016 20:13:30 +0300 Subject: [PATCH] IMP 23201: Harmonisation of "0D Element" and "0D Elements on Element Nodes" --- doc/salome/gui/SMESH/images/add0delement.png | Bin 15836 -> 12631 bytes .../gui/SMESH/images/dlg_0D_on_all_nodes.png | Bin 17237 -> 12097 bytes .../SMESH/input/adding_nodes_and_elements.doc | 5 ++- idl/SMESH_MeshEditor.idl | 11 +++--- src/SMESH/SMESH_MeshEditor.cxx | 20 +++++------ src/SMESH/SMESH_MeshEditor.hxx | 6 ++-- .../SMESHGUI_Add0DElemsOnAllNodesDlg.cxx | 8 +++-- .../SMESHGUI_Add0DElemsOnAllNodesDlg.h | 11 +++--- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx | 34 +++++++++++------- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h | 2 +- src/SMESHGUI/SMESH_msg_en.ts | 12 +++++++ src/SMESH_I/SMESH_MeshEditor_i.cxx | 18 ++++++---- src/SMESH_I/SMESH_MeshEditor_i.hxx | 6 ++-- src/SMESH_SWIG/smeshBuilder.py | 14 +++++--- 14 files changed, 93 insertions(+), 54 deletions(-) diff --git a/doc/salome/gui/SMESH/images/add0delement.png b/doc/salome/gui/SMESH/images/add0delement.png index ed27488c9a790a605a9d12ff2b47d45062f127a3..06621cc24cc6cf258d6f112e4e3a1ea01bcd82f5 100644 GIT binary patch literal 12631 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 Mq9(Ld-ZJ!m0eJ)>4FCWD literal 15836 zcmbWe1z41CwC+73D$;GxsnXpc-5@b^NOulMgCdQ9G(&@QN;jx<3?SVh-O>%`;lKAj zXYX^qeZIZVTyQb-^2RgIJnvff{ab57-YH69puR+fKp+@0(&8!*$b)k5%Y%XhwrFE$ zpMpP69i+8j5C~@b{qKV~dQ2j)k=|KC(^=dUX6$6?;B0Ac2hp&!GqHCi7qc;h!T89P zof%;+MurX!HkQVQ_x}%4mrw?W;ol#oX6bBW3K20eA!iXMm#{IlHMMhI**emMK*%97 z;v#BpDZ6v-ns^iQPyVvYap98Nh`uXFMJZ)KBBT!^LfYdWpP8Pfud5nIWhy~CEg56_ zGp)Ycyj#*-0^LTcQ7`c*(G>al=%*gG_$i5~G!nf3s_T8U8J;W>O6y?Th&c~z0M3qg zecCV2_7huF#Ml@c0&(_C7}#y|>+GDItam<^hCniwp&Dy3C={VqTN_aj$lE*!90dZg z`Wga(=($XxR;$p1H*=Hem=nrEluww;;K^}*s))*sY41$Iu(a8!d_ z?H2e4UM|da6d9H4dA3Q@mgM7!UkRDFY2rD3WqrCN_)x8(xT(#zHZvF5*WNc##nIH*~?>(_}XqDxETbJc+^4P~a& zU_@s`QBie0dECtAyjj8Mu0(%=dARtqjeuaa->H{u0UgUjuUa{$qQLlW(oRoK4VQ`V zI-+OwStws#aq&6PM2o4pb%$AuXNypp*G0UdDV~YZ;S_WD1SVu6Ug zVjxXEz;>oan6Z$iC-rH1NxGnCCx2L;B=eln&)VN4E0syQ{_n6}VVwk8h`+&)&9dBD z8PXc*I^LQRqm0sTa$fFh7M_sHM#=1Zb{md8eRT5sg{qVz&yJn}iBY8%tGz-Si_L^a zkm6lhud{K}MZ}!2L}2T1ZP`)Gb@biU`2tu{YDL(hmKv%!qGew$^WNx(mnu-r#g4Z4 zk~De>*J=!sHrAHZIUFP@uAU~o61ox_P7aavx2W}LKHUio*K1C8|BWMRSK3_b-OxWU zaJhG*8!qf-443|z{nPyq{lh~UBrS)pG?5ODe>7)8J$T$T#&9}1IyBhR%*-ZGgBwI5 z)Zqc%x~bF}WPf!kG%^@98JyI*S^S3zq1KpWLK}bn{FyRPQ(f@K_Sg=8VQ3tvp{AC0 zb2C~5qh&j>6jxP?iGn7jVjb^hyksXt=y4~obe zNE2*ZSSV}Z3TitUCRq<9=zBBmXX1!0I^%kiKlNFqAd!{Pxue22HV%4y7WDAp6A$^c z=QgG?#n+2+eipY2TkXLgXI%HfNl$tU3GVXqi|eDJIQg90Lrq~=WJ2w=_=q�k@-# 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 z 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 diff --git a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc b/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc index 173db3ce1..793525c02 100644 --- a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc +++ b/doc/salome/gui/SMESH/input/adding_nodes_and_elements.doc @@ -81,7 +81,8 @@ created: \image html add0delement.png In this dialog box specify nodes which will form your 0D elements by -selecting them in the 3D viewer and click the \b Apply or +selecting them in the 3D viewer. Activate Allow duplicate + elements to get several 0D elements on a node. Click the \b Apply or Apply and Close button. Your 0D elements will be created: \image html add_0delement.png @@ -109,6 +110,8 @@ In this dialog
  • Set Filter button allows selecting elements or nodes by filtering mesh elements or nodes with different criteria (see \ref filtering_elements "Filter usage").
  • +
  • Activate Allow duplicate elements to get several 0D + elements on a node.
  • Switching on Add to group check-box allows specifying the name of the group to which all created or found (existing) 0D elements will be added. You can either select an existing group from a drop-down diff --git a/idl/SMESH_MeshEditor.idl b/idl/SMESH_MeshEditor.idl index 120e41e49..7cbe67bff 100644 --- a/idl/SMESH_MeshEditor.idl +++ b/idl/SMESH_MeshEditor.idl @@ -136,8 +136,10 @@ module SMESH /*! * Create a 0D element on the given node. * \param IdOfNode Node IDs for creation of element. + * \param DuplicateElements to add one more 0D element to a node or not */ - long Add0DElement(in long IDOfNode) raises (SALOME::SALOME_Exception); + long Add0DElement(in long IDOfNode, + in boolean DuplicateElements) raises (SALOME::SALOME_Exception); /*! * Create a ball element on the given node. @@ -201,16 +203,17 @@ module SMESH long AddPolyhedralVolumeByFaces (in long_array IdsOfFaces) raises (SALOME::SALOME_Exception); /*! - * Create 0D elements on all nodes of the given object except those - * nodes on which a 0D element already exists. + * Create 0D elements on all nodes of the given object. * \param theObject object on whose nodes 0D elements will be created. * \param theGroupName optional name of a group to add 0D elements created * and/or found on nodes of \a theObject. + * \param theDuplicateElements to add one more 0D element to a node or not * \return an object (a new group or a temporary SMESH_IDSource) holding * ids of new and/or found 0D elements. */ SMESH_IDSource Create0DElementsOnAllNodes(in SMESH_IDSource theObject, - in string theGroupName) + in string theGroupName, + in boolean theDuplicateElements) raises (SALOME::SALOME_Exception); /*! diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index f7fcec03e..1f4f42891 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -474,27 +474,22 @@ int SMESH_MeshEditor::Remove (const list< int >& theIDs, //================================================================================ /*! - * \brief Create 0D elements on all nodes of the given object except those - * nodes on which a 0D element already exists. + * \brief Create 0D elements on all nodes of the given object. * \param elements - Elements on whose nodes to create 0D elements; if empty, * the all mesh is treated * \param all0DElems - returns all 0D elements found or created on nodes of \a elements + * \param duplicateElements - to add one more 0D element to a node or not */ //================================================================================ void SMESH_MeshEditor::Create0DElementsOnAllNodes( const TIDSortedElemSet& elements, - TIDSortedElemSet& all0DElems ) + TIDSortedElemSet& all0DElems, + const bool duplicateElements ) { SMDS_ElemIteratorPtr elemIt; - vector< const SMDS_MeshElement* > allNodes; if ( elements.empty() ) { - allNodes.reserve( GetMeshDS()->NbNodes() ); elemIt = GetMeshDS()->elementsIterator( SMDSAbs_Node ); - while ( elemIt->more() ) - allNodes.push_back( elemIt->next() ); - - elemIt = elemSetIterator( allNodes ); } else { @@ -509,12 +504,13 @@ void SMESH_MeshEditor::Create0DElementsOnAllNodes( const TIDSortedElemSet& eleme { const SMDS_MeshNode* n = cast2Node( nodeIt->next() ); SMDS_ElemIteratorPtr it0D = n->GetInverseElementIterator( SMDSAbs_0DElement ); - if ( it0D->more() ) - all0DElems.insert( it0D->next() ); - else { + if ( duplicateElements || !it0D->more() ) + { myLastCreatedElems.Append( GetMeshDS()->Add0DElement( n )); all0DElems.insert( myLastCreatedElems.Last() ); } + while ( it0D->more() ) + all0DElems.insert( it0D->next() ); } } } diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index 5dd53807a..103e4a417 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -129,9 +129,9 @@ public: // Modify a compute state of sub-meshes which become empty void Create0DElementsOnAllNodes( const TIDSortedElemSet& elements, - TIDSortedElemSet& all0DElems); - // Create 0D elements on all nodes of the given object except those - // nodes on which a 0D element already exists. \a all0DElems returns + TIDSortedElemSet& all0DElems, + const bool duplicateElements); + // Create 0D elements on all nodes of the given. \a all0DElems returns // all 0D elements found or created on nodes of \a elements bool InverseDiag (const SMDS_MeshElement * theTria1, diff --git a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx index 6afe2708b..105568581 100644 --- a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.cxx @@ -104,6 +104,8 @@ SMESHGUI_Add0DElemsOnAllNodesDlg::SMESHGUI_Add0DElemsOnAllNodesDlg() myFilterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), mainFrame() ); + myDuplicateElemsChkBox = new QCheckBox( tr( "SMESH_DUPLICATE_0D" ), mainFrame() ); + // List of groups myGroupBox = new QGroupBox( tr( "SMESH_ADD_TO_GROUP" ), mainFrame() ); @@ -132,8 +134,9 @@ SMESHGUI_Add0DElemsOnAllNodesDlg::SMESHGUI_Add0DElemsOnAllNodesDlg() aLay->addWidget( objectWg( 0, Btn ), 1, 1 ); aLay->addWidget( objectWg( 0, Control), 1, 2, 1, 2 ); aLay->addWidget( myFilterBtn, 1, 4 ); + aLay->addWidget( myDuplicateElemsChkBox,2, 0 ); // - aLay->addWidget( myGroupBox, 2, 0, 1, 5 ); + aLay->addWidget( myGroupBox, 3, 0, 1, 5 ); // Signals @@ -439,7 +442,8 @@ bool SMESHGUI_Add0DElemsOnAllNodesOp::onApply() QString groupName = myDlg->myGroupListCmBox->currentText(); SMESH::SMESH_IDSource_var newObj = - editor->Create0DElementsOnAllNodes( meshObject, groupName.toLatin1().data() ); + editor->Create0DElementsOnAllNodes( meshObject, groupName.toLatin1().data(), + myDlg->myDuplicateElemsChkBox->isChecked() ); int newNb0D = mesh->Nb0DElements() - prevNb0D; SUIT_MessageBox::information( myDlg, tr( "SMESH_INFORMATION" ), diff --git a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h index e4664bf3f..b65c8c5ca 100644 --- a/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h +++ b/src/SMESHGUI/SMESHGUI_Add0DElemsOnAllNodesDlg.h @@ -31,13 +31,14 @@ #include "SMESHGUI_Dialog.h" #include "SMESHGUI_IdValidator.h" -class SMESHGUI_FilterDlg; -class SMESHGUI_Add0DElemsOnAllNodesOp; class QButtonGroup; -class QPushButton; +class QCheckBox; +class QComboBox; class QGroupBox; class QLabel; -class QComboBox; +class QPushButton; +class SMESHGUI_Add0DElemsOnAllNodesOp; +class SMESHGUI_FilterDlg; //--------------------------------------------------------------------------------- /*! @@ -72,6 +73,7 @@ signals: QGroupBox* myGroupBox; QLabel* myGroupLabel; QComboBox* myGroupListCmBox; + QCheckBox* myDuplicateElemsChkBox; SMESHGUI_IdValidator myIDValidator; }; @@ -106,7 +108,6 @@ class SMESHGUI_EXPORT SMESHGUI_Add0DElemsOnAllNodesOp : public SMESHGUI_Selectio SMESHGUI_Add0DElemsOnAllNodesDlg* myDlg; SMESHGUI_FilterDlg* myFilterDlg; Handle(SALOME_InteractiveObject) myIO; - //SUIT_SelectionFilter* myObjectFilter; }; #endif diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx index 00f8467b2..3994a40b0 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx @@ -413,7 +413,9 @@ SMESHGUI_AddMeshElementDlg::SMESHGUI_AddMeshElementDlg( SMESHGUI* theMo LineEditC1A1->setValidator (new SMESHGUI_IdValidator(this, ( myIsPoly || myNbNodes == 1 ) ? 1000 : myNbNodes)); - Reverse = (myElementType == SMDSAbs_Face || myElementType == SMDSAbs_Volume ) ? new QCheckBox(tr("SMESH_REVERSE"), GroupC1) : 0; + ReverseOrDulicate = (myElementType == SMDSAbs_Face || myElementType == SMDSAbs_Volume ) ? new QCheckBox(tr("SMESH_REVERSE"), GroupC1) : 0; + if ( myElementType == SMDSAbs_0DElement ) + ReverseOrDulicate = new QCheckBox(tr("SMESH_DUPLICATE_0D"), GroupC1); DiameterSpinBox = ( myGeomType == SMDSEntity_Ball ) ? new SMESHGUI_SpinBox(GroupC1) : 0; QLabel* diameterLabel = DiameterSpinBox ? new QLabel( tr("BALL_DIAMETER"),GroupC1) : 0; @@ -421,8 +423,8 @@ SMESHGUI_AddMeshElementDlg::SMESHGUI_AddMeshElementDlg( SMESHGUI* theMo GroupC1Layout->addWidget(TextLabelC1A1, 0, 0); GroupC1Layout->addWidget(SelectButtonC1A1, 0, 1); GroupC1Layout->addWidget(LineEditC1A1, 0, 2); - if ( Reverse ) { - GroupC1Layout->addWidget(Reverse, 1, 0, 1, 3); + if ( ReverseOrDulicate ) { + GroupC1Layout->addWidget(ReverseOrDulicate, 1, 0, 1, 3); } if ( DiameterSpinBox ) { GroupC1Layout->addWidget(diameterLabel, 1, 0); @@ -524,8 +526,8 @@ void SMESHGUI_AddMeshElementDlg::Init() connect(mySMESHGUI, SIGNAL(SignalActivatedViewManager()), SLOT(onOpenView())); connect(mySMESHGUI, SIGNAL(SignalCloseView()), SLOT(onCloseView())); - if (Reverse) - connect(Reverse, SIGNAL(stateChanged(int)), SLOT(CheckBox(int))); + if (ReverseOrDulicate) + connect(ReverseOrDulicate, SIGNAL(stateChanged(int)), SLOT(CheckBox(int))); // set selection mode SMESH::SetPointRepresentation(true); @@ -553,10 +555,10 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() SMESH::long_array_var anArrayOfIndices = new SMESH::long_array; anArrayOfIndices->length(aListId.count()); const std::vector& revIndex = SMDS_MeshCell::reverseSmdsOrder( myGeomType ); - if ( Reverse && Reverse->isChecked() && !revIndex.empty() ) + if ( ReverseOrDulicate && ReverseOrDulicate->isChecked() && (int)revIndex.size() == aListId.count() ) for (int i = 0; i < aListId.count(); i++) anArrayOfIndices[i] = aListId[ revIndex[i] ].toInt(); - else if ( Reverse && Reverse->isChecked() && revIndex.empty() ) // polygon + else if ( ReverseOrDulicate && ReverseOrDulicate->isChecked() && revIndex.empty() ) // polygon for (int i = 0; i < aListId.count(); i++) anArrayOfIndices[i] = aListId[ aListId.count()-1 - i ].toInt(); else @@ -598,16 +600,23 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() SMESH::long_array_var anIdList = new SMESH::long_array; anIdList->length( 1 ); anIdList[0] = -1; - //const bool onlyNodesInMesh = ( myMesh->NbElements() == 0 ); int nbElemsBefore = 0; switch (myElementType) { - case SMDSAbs_0DElement: + case SMDSAbs_0DElement: { + bool duplicateElements = ReverseOrDulicate->isChecked(); nbElemsBefore = myMesh->Nb0DElements(); anIdList->length( anArrayOfIndices->length() ); for ( size_t i = 0; i < anArrayOfIndices->length(); ++i ) - anIdList[i] = aMeshEditor->Add0DElement(anArrayOfIndices[i]); + anIdList[i] = aMeshEditor->Add0DElement(anArrayOfIndices[i], duplicateElements); + + CORBA::ULong nbAdded = myMesh->Nb0DElements() - nbElemsBefore; + if ( !duplicateElements && nbAdded < anArrayOfIndices->length() ) + SUIT_MessageBox::information(SMESHGUI::desktop(), + tr("SMESH_INFORMATION"), + tr("NB_ADDED").arg( nbAdded )); break; + } case SMDSAbs_Ball: if ( myGeomType == SMDSEntity_Ball ) { nbElemsBefore = myMesh->NbBalls(); @@ -672,8 +681,7 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() mySelectionMgr->setSelectedObjects( aList, false ); mySimulation->SetVisibility(false); - // if ( onlyNodesInMesh ) - // myActor->SetRepresentation( SMESH_Actor::eEdge ); // wireframe + if ( nbElemsBefore == 0 ) { // 1st element of the type has been added, update actor to show this entity @@ -908,7 +916,7 @@ void SMESHGUI_AddMeshElementDlg::displaySimulation() for (int i = 0; i < aListId.count(); i++) anIds.push_back(myActor->GetObject()->GetNodeVTKId(aListId[ i ].toInt())); - if (Reverse && Reverse->isChecked()) + if (ReverseOrDulicate && ReverseOrDulicate->isChecked()) { const std::vector& i = SMDS_MeshCell::reverseSmdsOrder( myGeomType ); if ( i.empty() ) // polygon diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h index 5bf71e371..5325d267f 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h @@ -111,7 +111,7 @@ private: QLabel* TextLabelC1A1; QPushButton* SelectButtonC1A1; QLineEdit* LineEditC1A1; - QCheckBox* Reverse; + QCheckBox* ReverseOrDulicate; SMESHGUI_SpinBox* DiameterSpinBox; QString myHelpFileName; diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 55a8f48b0..ad18b5d33 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -1241,6 +1241,10 @@ Please enter correct values and try again SMESH_ADD_ELEM0D_TITLE Add 0D Element + + SMESH_DUPLICATE_0D + Allow duplicate elements + SMESH_ADD_BALL Add Ball Element @@ -4389,6 +4393,14 @@ It can't be deleted Export Fields + + SMESHGUI_AddMeshElementDlg + + NB_ADDED + %1 elements have been added since 0D +elements already present on the selected nodes. + + SMESHGUI_Dialog diff --git a/src/SMESH_I/SMESH_MeshEditor_i.cxx b/src/SMESH_I/SMESH_MeshEditor_i.cxx index f9fb06334..a99acd2f6 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.cxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.cxx @@ -903,14 +903,19 @@ CORBA::Long SMESH_MeshEditor_i::AddNode(CORBA::Double x,CORBA::Double y, CORBA:: */ //============================================================================= -CORBA::Long SMESH_MeshEditor_i::Add0DElement(CORBA::Long IDOfNode) +CORBA::Long SMESH_MeshEditor_i::Add0DElement(CORBA::Long IDOfNode, + CORBA::Boolean DuplicateElements) throw (SALOME::SALOME_Exception) { SMESH_TRY; initData(); const SMDS_MeshNode* aNode = getMeshDS()->FindNode(IDOfNode); - SMDS_MeshElement* elem = getMeshDS()->Add0DElement(aNode); + SMDS_ElemIteratorPtr it0D = aNode->GetInverseElementIterator( SMDSAbs_0DElement ); + + SMDS_MeshElement* elem = 0; + if ( DuplicateElements || !it0D->more() ) + elem = getMeshDS()->Add0DElement(aNode); // Update Python script TPythonDump() << "elem0d = " << this << ".Add0DElement( " << IDOfNode <<" )"; @@ -1243,11 +1248,11 @@ CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::long_ar //============================================================================= // -// \brief Create 0D elements on all nodes of the given object except those -// nodes on which a 0D element already exists. +// \brief Create 0D elements on all nodes of the given object. // \param theObject object on whose nodes 0D elements will be created. // \param theGroupName optional name of a group to add 0D elements created // and/or found on nodes of \a theObject. +// \param DuplicateElements to add one more 0D element to a node or not. // \return an object (a new group or a temporary SMESH_IDSource) holding // ids of new and/or found 0D elements. // @@ -1255,7 +1260,8 @@ CORBA::Long SMESH_MeshEditor_i::AddPolyhedralVolumeByFaces (const SMESH::long_ar SMESH::SMESH_IDSource_ptr SMESH_MeshEditor_i::Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObject, - const char* theGroupName) + const char* theGroupName, + CORBA::Boolean theDuplicateElements) throw (SALOME::SALOME_Exception) { SMESH_TRY; @@ -1266,7 +1272,7 @@ SMESH_MeshEditor_i::Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObje TIDSortedElemSet elements, elems0D; if ( idSourceToSet( theObject, getMeshDS(), elements, SMDSAbs_All, /*emptyIfIsMesh=*/1)) - getEditor().Create0DElementsOnAllNodes( elements, elems0D ); + getEditor().Create0DElementsOnAllNodes( elements, elems0D, theDuplicateElements ); SMESH::long_array_var newElems = new SMESH::long_array; newElems->length( elems0D.size() ); diff --git a/src/SMESH_I/SMESH_MeshEditor_i.hxx b/src/SMESH_I/SMESH_MeshEditor_i.hxx index ab953091e..dd1212d8c 100644 --- a/src/SMESH_I/SMESH_MeshEditor_i.hxx +++ b/src/SMESH_I/SMESH_MeshEditor_i.hxx @@ -108,7 +108,7 @@ public: */ CORBA::Long AddNode(CORBA::Double x, CORBA::Double y, CORBA::Double z) throw (SALOME::SALOME_Exception); - CORBA::Long Add0DElement(CORBA::Long IDOfNode) + CORBA::Long Add0DElement(CORBA::Long IDOfNode, CORBA::Boolean DuplicateElements) throw (SALOME::SALOME_Exception); CORBA::Long AddBall(CORBA::Long IDOfNodem, CORBA::Double diameter) throw (SALOME::SALOME_Exception); @@ -134,11 +134,13 @@ public: * \param theObject object on whose nodes 0D elements will be created. * \param theGroupName optional name of a group to add 0D elements created * and/or found on nodes of \a theObject. + * \param theDuplicateElements to add one more 0D element to a node or not * \return an object (a new group or a temporary SMESH_IDSource) holding * ids of new and/or found 0D elements. */ SMESH::SMESH_IDSource_ptr Create0DElementsOnAllNodes(SMESH::SMESH_IDSource_ptr theObject, - const char* theGroupName) + const char* theGroupName, + CORBA::Boolean theDuplicateElements) throw (SALOME::SALOME_Exception); /*! diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index e257a4d6b..b82bbf55d 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -2264,6 +2264,8 @@ class Mesh: # idSrc.UnRegister() # @ingroup l1_auxiliary def GetIDSource(self, ids, elemType = SMESH.ALL): + if isinstance( ids, int ): + ids = [ids] return self.editor.MakeIDSource(ids, elemType) @@ -2828,10 +2830,11 @@ class Mesh: ## Creates a 0D element on a node with given number. # @param IDOfNode the ID of node for creation of the element. + # @param DuplicateElements to add one more 0D element to a node or not # @return the Id of the new 0D element # @ingroup l2_modif_add - def Add0DElement(self, IDOfNode): - return self.editor.Add0DElement(IDOfNode) + def Add0DElement( self, IDOfNode, DuplicateElements=True ): + return self.editor.Add0DElement( IDOfNode, DuplicateElements ) ## Create 0D elements on all nodes of the given elements except those # nodes on which a 0D element already exists. @@ -2840,18 +2843,19 @@ class Mesh: # of nodes IDs created by calling mesh.GetIDSource( nodes, SMESH.NODE ) # @param theGroupName optional name of a group to add 0D elements created # and/or found on nodes of \a theObject. + # @param DuplicateElements to add one more 0D element to a node or not # @return an object (a new group or a temporary SMESH_IDSource) holding # IDs of new and/or found 0D elements. IDs of 0D elements # can be retrieved from the returned object by calling GetIDs() # @ingroup l2_modif_add - def Add0DElementsToAllNodes(self, theObject, theGroupName=""): + def Add0DElementsToAllNodes(self, theObject, theGroupName="", DuplicateElements=False): unRegister = genObjUnRegister() if isinstance( theObject, Mesh ): theObject = theObject.GetMesh() - if isinstance( theObject, list ): + elif isinstance( theObject, list ): theObject = self.GetIDSource( theObject, SMESH.ALL ) unRegister.set( theObject ) - return self.editor.Create0DElementsOnAllNodes( theObject, theGroupName ) + return self.editor.Create0DElementsOnAllNodes( theObject, theGroupName, DuplicateElements ) ## Creates a ball element on a node with given ID. # @param IDOfNode the ID of node for creation of the element. -- 2.30.2