mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-03-25 22:37:55 +05:00
0022106: EDF 2464 SMESH : Split quadrangles in 4 triangles
+ void QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
This commit is contained in:
parent
b07f27826f
commit
ba9f67eab1
@ -571,10 +571,9 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
|
|||||||
|
|
||||||
while ( itMeshElems->more() ) {
|
while ( itMeshElems->more() ) {
|
||||||
const SMDS_MeshElement* aMeshElem = itMeshElems->next();
|
const SMDS_MeshElement* aMeshElem = itMeshElems->next();
|
||||||
SMDS_ElemIteratorPtr itElemNodes = aMeshElem->nodesIterator();
|
SMDS_NodeIteratorPtr itElemNodes = aMeshElem->nodeIterator();
|
||||||
while ( itElemNodes->more() ) {
|
while ( itElemNodes->more() ) {
|
||||||
const SMDS_MeshNode* aMeshNode =
|
const SMDS_MeshNode* aMeshNode = itElemNodes->next();
|
||||||
static_cast<const SMDS_MeshNode*>( itElemNodes->next() );
|
|
||||||
int aNodeID = aMeshNode->GetID();
|
int aNodeID = aMeshNode->GetID();
|
||||||
TNodesMap::iterator anIter = nodesMap.find(aNodeID);
|
TNodesMap::iterator anIter = nodesMap.find(aNodeID);
|
||||||
if ( anIter == nodesMap.end() ) {
|
if ( anIter == nodesMap.end() ) {
|
||||||
@ -591,12 +590,10 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
|
|||||||
// filling the elements types
|
// filling the elements types
|
||||||
SMDSAbs_ElementType aType = aMeshElem->GetType();
|
SMDSAbs_ElementType aType = aMeshElem->GetType();
|
||||||
bool isPoly = aMeshElem->IsPoly();
|
bool isPoly = aMeshElem->IsPoly();
|
||||||
|
|
||||||
myPreviewData->elementTypes[i].SMDS_ElementType = (SMESH::ElementType) aType;
|
myPreviewData->elementTypes[i].SMDS_ElementType = (SMESH::ElementType) aType;
|
||||||
myPreviewData->elementTypes[i].isPoly = isPoly;
|
myPreviewData->elementTypes[i].isPoly = isPoly;
|
||||||
myPreviewData->elementTypes[i].nbNodesInElement = aMeshElem->NbNodes();
|
myPreviewData->elementTypes[i].nbNodesInElement = aMeshElem->NbNodes();
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
}
|
}
|
||||||
myPreviewData->nodesXYZ.length( j );
|
myPreviewData->nodesXYZ.length( j );
|
||||||
|
|
||||||
@ -606,8 +603,8 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
|
|||||||
for( int i = 0; aConnIter != aNodesConnectivity.end(); aConnIter++, i++ )
|
for( int i = 0; aConnIter != aNodesConnectivity.end(); aConnIter++, i++ )
|
||||||
myPreviewData->elementConnectivities[i] = *aConnIter;
|
myPreviewData->elementConnectivities[i] = *aConnIter;
|
||||||
}
|
}
|
||||||
|
|
||||||
return myPreviewData._retn();
|
return myPreviewData._retn();
|
||||||
|
|
||||||
SMESH_CATCH( SMESH::throwCorbaException );
|
SMESH_CATCH( SMESH::throwCorbaException );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -673,6 +670,7 @@ void SMESH_MeshEditor_i::ClearLastCreated() throw (SALOME::SALOME_Exception)
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
/*
|
/*
|
||||||
* Returns description of an error/warning occured during the last operation
|
* Returns description of an error/warning occured during the last operation
|
||||||
|
* WARNING: ComputeError.code >= 100 and no corresponding enum in IDL API
|
||||||
*/
|
*/
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
@ -1663,7 +1661,7 @@ CORBA::Long SMESH_MeshEditor_i::Reorient2D(SMESH::SMESH_IDSource_ptr the2Dgroup,
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Fuse neighbour triangles into quadrangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
@ -1703,7 +1701,7 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuad (const SMESH::long_array & IDsOfE
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Fuse neighbour triangles into quadrangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
@ -1734,7 +1732,7 @@ CORBA::Boolean SMESH_MeshEditor_i::TriToQuadObject (SMESH::SMESH_IDSource_ptr
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Split quadrangles into triangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
@ -1770,12 +1768,12 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTri (const SMESH::long_array & IDsOfE
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Split quadrangles into triangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr theObject,
|
CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr theObject,
|
||||||
SMESH::NumericalFunctor_ptr Criterion)
|
SMESH::NumericalFunctor_ptr Criterion)
|
||||||
throw (SALOME::SALOME_Exception)
|
throw (SALOME::SALOME_Exception)
|
||||||
@ -1801,12 +1799,36 @@ CORBA::Boolean SMESH_MeshEditor_i::QuadToTriObject (SMESH::SMESH_IDSource_ptr
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Split each of quadrangles into 4 triangles.
|
||||||
|
* \param [in] theObject - theQuads Container of quadrangles to split.
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
void SMESH_MeshEditor_i::QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
|
||||||
|
throw (SALOME::SALOME_Exception)
|
||||||
|
{
|
||||||
|
SMESH_TRY;
|
||||||
|
initData();
|
||||||
|
|
||||||
|
TIDSortedElemSet faces;
|
||||||
|
if ( !idSourceToSet( theObject, getMeshDS(), faces, SMDSAbs_Face, /*emptyIfIsMesh=*/true ) &&
|
||||||
|
faces.empty() )
|
||||||
|
THROW_SALOME_CORBA_EXCEPTION("No faces given", SALOME::BAD_PARAM);
|
||||||
|
|
||||||
|
getEditor().QuadTo4Tri( faces );
|
||||||
|
TPythonDump() << this << ".QuadTo4Tri( " << theObject << " )";
|
||||||
|
|
||||||
|
SMESH_CATCH( SMESH::throwCorbaException );
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Split quadrangles into triangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfElements,
|
CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfElements,
|
||||||
CORBA::Boolean Diag13)
|
CORBA::Boolean Diag13)
|
||||||
throw (SALOME::SALOME_Exception)
|
throw (SALOME::SALOME_Exception)
|
||||||
@ -1831,12 +1853,12 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuad (const SMESH::long_array & IDsOfEle
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* \brief Split quadrangles into triangles.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr theObject,
|
CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr theObject,
|
||||||
CORBA::Boolean Diag13)
|
CORBA::Boolean Diag13)
|
||||||
throw (SALOME::SALOME_Exception)
|
throw (SALOME::SALOME_Exception)
|
||||||
@ -1863,7 +1885,11 @@ CORBA::Boolean SMESH_MeshEditor_i::SplitQuadObject (SMESH::SMESH_IDSource_ptr th
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* BestSplit
|
* Find better splitting of the given quadrangle.
|
||||||
|
* \param IDOfQuad ID of the quadrangle to be splitted.
|
||||||
|
* \param Criterion A criterion to choose a diagonal for splitting.
|
||||||
|
* \return 1 if 1-3 diagonal is better, 2 if 2-4
|
||||||
|
* diagonal is better, 0 if error occurs.
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
@ -2045,7 +2071,6 @@ SMESH_MeshEditor_i::smooth(const SMESH::long_array & IDsOfElements,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
@ -2085,7 +2110,6 @@ SMESH_MeshEditor_i::smoothObject(SMESH::SMESH_IDSource_ptr theObjec
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
|
@ -218,6 +218,8 @@ public:
|
|||||||
CORBA::Boolean QuadToTriObject (SMESH::SMESH_IDSource_ptr theObject,
|
CORBA::Boolean QuadToTriObject (SMESH::SMESH_IDSource_ptr theObject,
|
||||||
SMESH::NumericalFunctor_ptr Criterion)
|
SMESH::NumericalFunctor_ptr Criterion)
|
||||||
throw (SALOME::SALOME_Exception);
|
throw (SALOME::SALOME_Exception);
|
||||||
|
void QuadTo4Tri (SMESH::SMESH_IDSource_ptr theObject)
|
||||||
|
throw (SALOME::SALOME_Exception);
|
||||||
CORBA::Boolean SplitQuad (const SMESH::long_array & IDsOfElements,
|
CORBA::Boolean SplitQuad (const SMESH::long_array & IDsOfElements,
|
||||||
CORBA::Boolean Diag13)
|
CORBA::Boolean Diag13)
|
||||||
throw (SALOME::SALOME_Exception);
|
throw (SALOME::SALOME_Exception);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user