23562: EDF 17098 - problem with Extrusion 3D

+ fix computing "Min elem size" in Mesh Info dlg
This commit is contained in:
eap 2018-05-22 19:12:11 +03:00
parent 08fca6f5de
commit 24dd5df5f0
3 changed files with 14 additions and 4 deletions

View File

@ -4425,6 +4425,12 @@ bool ElementsOnShape::IsSatisfy (const SMDS_MeshElement* elem)
return isSatisfy; return isSatisfy;
} }
//================================================================================
/*!
* \brief Check and optionally return a satisfying shape
*/
//================================================================================
bool ElementsOnShape::IsSatisfy (const SMDS_MeshNode* node, bool ElementsOnShape::IsSatisfy (const SMDS_MeshNode* node,
TopoDS_Shape* okShape) TopoDS_Shape* okShape)
{ {

View File

@ -2083,7 +2083,9 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
afunctor->SetMesh( actor()->GetObject()->GetMesh() ); afunctor->SetMesh( actor()->GetObject()->GetMesh() );
QTreeWidgetItem* minEdgeItem = createItem( cntrItem, Bold ); QTreeWidgetItem* minEdgeItem = createItem( cntrItem, Bold );
minEdgeItem->setText( 0, tr( "MIN_ELEM_EDGE" )); minEdgeItem->setText( 0, tr( "MIN_ELEM_EDGE" ));
minEdgeItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( id )) ); SMESH::Controls::TSequenceOfXYZ points;
afunctor->GetPoints( e, points ); // "non-standard" way, to make it work for all elem types
minEdgeItem->setText( 1, QString( "%1" ).arg( afunctor->GetValue( points )) );
// gravity center // gravity center
XYZ gc = gravityCenter( e ); XYZ gc = gravityCenter( e );

View File

@ -1170,6 +1170,11 @@ bool StdMeshers_Prism_3D::compute(const Prism_3D::TPrismTopo& thePrism)
if ( !assocOrProjBottom2Top( bottomToTopTrsf, thePrism ) ) // it also fills myBotToColumnMap if ( !assocOrProjBottom2Top( bottomToTopTrsf, thePrism ) ) // it also fills myBotToColumnMap
return false; return false;
// If all "vertical" EDGEs are straight, then all nodes of an internal node column
// are located on a line connecting the top node and the bottom node.
bool isStrightColunm = allVerticalEdgesStraight( thePrism );
if ( isStrightColunm )
myUseBlock = false;
// Create nodes inside the block // Create nodes inside the block
@ -1208,9 +1213,6 @@ bool StdMeshers_Prism_3D::compute(const Prism_3D::TPrismTopo& thePrism)
myHelper->SetElementsOnShape( true ); myHelper->SetElementsOnShape( true );
// If all "vertical" EDGEs are straight, then all nodes of an internal node column
// are located on a line connecting the top node and the bottom node.
bool isStrightColunm = allVerticalEdgesStraight( thePrism );
if ( !isStrightColunm ) if ( !isStrightColunm )
{ {
double tol = getSweepTolerance( thePrism ); double tol = getSweepTolerance( thePrism );