mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-12 09:40:35 +05:00
IPAL52980: Wire Discretization with Table density fails
(StdMeshers_Regular_1D.cxx) + Compilation warnings + WIN specific errors (StdMeshers_Adaptive1D.cxx)
This commit is contained in:
parent
70e7642a8c
commit
831ca6c828
@ -1,13 +1,17 @@
|
||||
# Combine filters with Criterion structures using of "criteria".
|
||||
# Combine several criteria into a filter
|
||||
|
||||
# create mesh
|
||||
from SMESH_mechanic import *
|
||||
|
||||
# get all the quadrangle faces ...
|
||||
criterion1 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE, SMESH.FT_LogicalAND)
|
||||
# ... AND do NOT get those from sub_face3
|
||||
# ... but those from sub_face3
|
||||
criterion2 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_BelongToGeom, sub_face3, SMESH.FT_LogicalNOT)
|
||||
filter = smesh.CreateFilterManager().CreateFilter()
|
||||
filter.SetCriteria([criterion1,criterion2])
|
||||
ids = mesh.GetIdsFromFilter(filter)
|
||||
|
||||
myGroup = mesh.MakeGroupByIds("Quads_on_cylindrical_faces",SMESH.FACE,ids)
|
||||
quadFilter = smesh.GetFilterFromCriteria([criterion1,criterion2])
|
||||
|
||||
# get faces satisfying the criteria
|
||||
ids = mesh.GetIdsFromFilter(quadFilter)
|
||||
|
||||
# create a group of faces satisfying the criteria
|
||||
myGroup = mesh.GroupOnFilter(SMESH.FACE,"Quads_on_cylindrical_faces",quadFilter)
|
||||
|
@ -10,7 +10,7 @@ Mesh module provides several ways to create the mesh:
|
||||
<li>The main way is to \subpage constructing_meshes_page "construct the mesh"
|
||||
on the basis of the geometrical shape produced in the Geometry
|
||||
module. This way implies selection of
|
||||
- a geometrical object (<em> main shape</em>) and
|
||||
- a geometrical object (<em>main shape</em>) and
|
||||
- <em>meshing parameters</em> (\ref
|
||||
basic_meshing_algos_page "meshing algorithms" and
|
||||
characteristics (e.g. element size) of a
|
||||
@ -19,7 +19,7 @@ Mesh module provides several ways to create the mesh:
|
||||
|
||||
Construction of \subpage constructing_submeshes_page "sub-meshes"
|
||||
allows to discretize some sub-shapes of the main shape, for example a face,
|
||||
using the meshing parameters that differ from those for other sub-shapes.<br>
|
||||
using the meshing parameters that differ from those used for other sub-shapes.<br>
|
||||
Meshing parameters of meshes and sub-meshes can be
|
||||
\subpage editing_meshes_page "edited". (Upon edition only mesh entities
|
||||
generated using changed meshing parameters are removed and will be
|
||||
@ -39,7 +39,7 @@ Mesh module provides several ways to create the mesh:
|
||||
(and exported to) the file in MED, UNV, STL, CGNS, DAT, GMF and
|
||||
SAUVE formats.
|
||||
</li>
|
||||
<li>The 3D mesh can be generated from the 2D mesh, \ref
|
||||
<li>The 3D mesh can be generated from the 2D mesh, which was \ref
|
||||
importing_exporting_meshes_page "imported" or manually created. To
|
||||
setup the meshing parameters of a mesh not based on a geometry, just
|
||||
invoke \ref editing_meshes_page "Edit mesh / sub-mesh" command on
|
||||
|
@ -10,7 +10,7 @@ or edit mesh groups, remove elements from the mesh object, control
|
||||
mesh quality by different parameters, etc.
|
||||
|
||||
Several filtering criteria can be combined together by using logical
|
||||
operators \a AND and \a OR. In addition, applied filter criterion can
|
||||
operators \a AND and \a OR. In addition, a filtering criterion can
|
||||
be reverted using logical operator \a NOT.
|
||||
|
||||
Mesh filters can use the functionality of mesh quality controls to filter
|
||||
@ -416,9 +416,9 @@ entity type.
|
||||
|
||||
\tui_script{filters_ex35.py}
|
||||
|
||||
\section combining_filters How to combine filters with Criterion structures?
|
||||
\section combining_filters How to combine several criteria into a filter?
|
||||
|
||||
Filters can be combined by making use of "criteria".
|
||||
Several criteria can be combined into a filter.
|
||||
|
||||
Example :
|
||||
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <Geom_CylindricalSurface.hxx>
|
||||
#include <Geom_Plane.hxx>
|
||||
#include <Geom_Surface.hxx>
|
||||
#include <NCollection_Map.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <TColStd_MapIteratorOfMapOfInteger.hxx>
|
||||
#include <TColStd_MapOfInteger.hxx>
|
||||
@ -521,148 +522,164 @@ double MaxElementLength3D::GetValue( long theElementId )
|
||||
if( GetPoints( theElementId, P ) ) {
|
||||
double aVal = 0;
|
||||
const SMDS_MeshElement* aElem = myMesh->FindElement( theElementId );
|
||||
SMDSAbs_ElementType aType = aElem->GetType();
|
||||
SMDSAbs_EntityType aType = aElem->GetEntityType();
|
||||
int len = P.size();
|
||||
switch( aType ) {
|
||||
case SMDSAbs_Volume:
|
||||
if( len == 4 ) { // tetras
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 1 ));
|
||||
double L4 = getDistance(P( 1 ),P( 4 ));
|
||||
double L5 = getDistance(P( 2 ),P( 4 ));
|
||||
double L6 = getDistance(P( 3 ),P( 4 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
break;
|
||||
}
|
||||
else if( len == 5 ) { // pyramids
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 1 ));
|
||||
double L5 = getDistance(P( 1 ),P( 5 ));
|
||||
double L6 = getDistance(P( 2 ),P( 5 ));
|
||||
double L7 = getDistance(P( 3 ),P( 5 ));
|
||||
double L8 = getDistance(P( 4 ),P( 5 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(L7,L8));
|
||||
break;
|
||||
}
|
||||
else if( len == 6 ) { // pentas
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 1 ));
|
||||
double L4 = getDistance(P( 4 ),P( 5 ));
|
||||
double L5 = getDistance(P( 5 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 4 ));
|
||||
double L7 = getDistance(P( 1 ),P( 4 ));
|
||||
double L8 = getDistance(P( 2 ),P( 5 ));
|
||||
double L9 = getDistance(P( 3 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),L9));
|
||||
break;
|
||||
}
|
||||
else if( len == 8 ) { // hexas
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 1 ));
|
||||
double L5 = getDistance(P( 5 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 7 ));
|
||||
double L7 = getDistance(P( 7 ),P( 8 ));
|
||||
double L8 = getDistance(P( 8 ),P( 5 ));
|
||||
double L9 = getDistance(P( 1 ),P( 5 ));
|
||||
double L10= getDistance(P( 2 ),P( 6 ));
|
||||
double L11= getDistance(P( 3 ),P( 7 ));
|
||||
double L12= getDistance(P( 4 ),P( 8 ));
|
||||
double D1 = getDistance(P( 1 ),P( 7 ));
|
||||
double D2 = getDistance(P( 2 ),P( 8 ));
|
||||
double D3 = getDistance(P( 3 ),P( 5 ));
|
||||
double D4 = getDistance(P( 4 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),Max(L9,L10)));
|
||||
aVal = Max(aVal,Max(L11,L12));
|
||||
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
|
||||
break;
|
||||
}
|
||||
else if( len == 12 ) { // hexagonal prism
|
||||
for ( int i1 = 1; i1 < 12; ++i1 )
|
||||
for ( int i2 = i1+1; i1 <= 12; ++i1 )
|
||||
aVal = Max( aVal, getDistance(P( i1 ),P( i2 )));
|
||||
break;
|
||||
}
|
||||
else if( len == 10 ) { // quadratic tetras
|
||||
double L1 = getDistance(P( 1 ),P( 5 )) + getDistance(P( 5 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 6 )) + getDistance(P( 6 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 7 )) + getDistance(P( 7 ),P( 1 ));
|
||||
double L4 = getDistance(P( 1 ),P( 8 )) + getDistance(P( 8 ),P( 4 ));
|
||||
double L5 = getDistance(P( 2 ),P( 9 )) + getDistance(P( 9 ),P( 4 ));
|
||||
double L6 = getDistance(P( 3 ),P( 10 )) + getDistance(P( 10 ),P( 4 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
break;
|
||||
}
|
||||
else if( len == 13 ) { // quadratic pyramids
|
||||
double L1 = getDistance(P( 1 ),P( 6 )) + getDistance(P( 6 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 7 )) + getDistance(P( 7 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 8 )) + getDistance(P( 8 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 9 )) + getDistance(P( 9 ),P( 1 ));
|
||||
double L5 = getDistance(P( 1 ),P( 10 )) + getDistance(P( 10 ),P( 5 ));
|
||||
double L6 = getDistance(P( 2 ),P( 11 )) + getDistance(P( 11 ),P( 5 ));
|
||||
double L7 = getDistance(P( 3 ),P( 12 )) + getDistance(P( 12 ),P( 5 ));
|
||||
double L8 = getDistance(P( 4 ),P( 13 )) + getDistance(P( 13 ),P( 5 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(L7,L8));
|
||||
break;
|
||||
}
|
||||
else if( len == 15 ) { // quadratic pentas
|
||||
double L1 = getDistance(P( 1 ),P( 7 )) + getDistance(P( 7 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 8 )) + getDistance(P( 8 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 9 )) + getDistance(P( 9 ),P( 1 ));
|
||||
double L4 = getDistance(P( 4 ),P( 10 )) + getDistance(P( 10 ),P( 5 ));
|
||||
double L5 = getDistance(P( 5 ),P( 11 )) + getDistance(P( 11 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 12 )) + getDistance(P( 12 ),P( 4 ));
|
||||
double L7 = getDistance(P( 1 ),P( 13 )) + getDistance(P( 13 ),P( 4 ));
|
||||
double L8 = getDistance(P( 2 ),P( 14 )) + getDistance(P( 14 ),P( 5 ));
|
||||
double L9 = getDistance(P( 3 ),P( 15 )) + getDistance(P( 15 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),L9));
|
||||
break;
|
||||
}
|
||||
else if( len == 20 || len == 27 ) { // quadratic hexas
|
||||
double L1 = getDistance(P( 1 ),P( 9 )) + getDistance(P( 9 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 10 )) + getDistance(P( 10 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 11 )) + getDistance(P( 11 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 12 )) + getDistance(P( 12 ),P( 1 ));
|
||||
double L5 = getDistance(P( 5 ),P( 13 )) + getDistance(P( 13 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 14 )) + getDistance(P( 14 ),P( 7 ));
|
||||
double L7 = getDistance(P( 7 ),P( 15 )) + getDistance(P( 15 ),P( 8 ));
|
||||
double L8 = getDistance(P( 8 ),P( 16 )) + getDistance(P( 16 ),P( 5 ));
|
||||
double L9 = getDistance(P( 1 ),P( 17 )) + getDistance(P( 17 ),P( 5 ));
|
||||
double L10= getDistance(P( 2 ),P( 18 )) + getDistance(P( 18 ),P( 6 ));
|
||||
double L11= getDistance(P( 3 ),P( 19 )) + getDistance(P( 19 ),P( 7 ));
|
||||
double L12= getDistance(P( 4 ),P( 20 )) + getDistance(P( 20 ),P( 8 ));
|
||||
double D1 = getDistance(P( 1 ),P( 7 ));
|
||||
double D2 = getDistance(P( 2 ),P( 8 ));
|
||||
double D3 = getDistance(P( 3 ),P( 5 ));
|
||||
double D4 = getDistance(P( 4 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),Max(L9,L10)));
|
||||
aVal = Max(aVal,Max(L11,L12));
|
||||
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
|
||||
break;
|
||||
}
|
||||
else if( len > 1 && aElem->IsPoly() ) { // polys
|
||||
// get the maximum distance between all pairs of nodes
|
||||
for( int i = 1; i <= len; i++ ) {
|
||||
for( int j = 1; j <= len; j++ ) {
|
||||
if( j > i ) { // optimization of the loop
|
||||
double D = getDistance( P(i), P(j) );
|
||||
aVal = Max( aVal, D );
|
||||
}
|
||||
switch ( aType ) {
|
||||
case SMDSEntity_Tetra: { // tetras
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 1 ));
|
||||
double L4 = getDistance(P( 1 ),P( 4 ));
|
||||
double L5 = getDistance(P( 2 ),P( 4 ));
|
||||
double L6 = getDistance(P( 3 ),P( 4 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Pyramid: { // pyramids
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 1 ));
|
||||
double L5 = getDistance(P( 1 ),P( 5 ));
|
||||
double L6 = getDistance(P( 2 ),P( 5 ));
|
||||
double L7 = getDistance(P( 3 ),P( 5 ));
|
||||
double L8 = getDistance(P( 4 ),P( 5 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(L7,L8));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Penta: { // pentas
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 1 ));
|
||||
double L4 = getDistance(P( 4 ),P( 5 ));
|
||||
double L5 = getDistance(P( 5 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 4 ));
|
||||
double L7 = getDistance(P( 1 ),P( 4 ));
|
||||
double L8 = getDistance(P( 2 ),P( 5 ));
|
||||
double L9 = getDistance(P( 3 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),L9));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Hexa: { // hexas
|
||||
double L1 = getDistance(P( 1 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 1 ));
|
||||
double L5 = getDistance(P( 5 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 7 ));
|
||||
double L7 = getDistance(P( 7 ),P( 8 ));
|
||||
double L8 = getDistance(P( 8 ),P( 5 ));
|
||||
double L9 = getDistance(P( 1 ),P( 5 ));
|
||||
double L10= getDistance(P( 2 ),P( 6 ));
|
||||
double L11= getDistance(P( 3 ),P( 7 ));
|
||||
double L12= getDistance(P( 4 ),P( 8 ));
|
||||
double D1 = getDistance(P( 1 ),P( 7 ));
|
||||
double D2 = getDistance(P( 2 ),P( 8 ));
|
||||
double D3 = getDistance(P( 3 ),P( 5 ));
|
||||
double D4 = getDistance(P( 4 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),Max(L9,L10)));
|
||||
aVal = Max(aVal,Max(L11,L12));
|
||||
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Hexagonal_Prism: { // hexagonal prism
|
||||
for ( int i1 = 1; i1 < 12; ++i1 )
|
||||
for ( int i2 = i1+1; i1 <= 12; ++i1 )
|
||||
aVal = Max( aVal, getDistance(P( i1 ),P( i2 )));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Quad_Tetra: { // quadratic tetras
|
||||
double L1 = getDistance(P( 1 ),P( 5 )) + getDistance(P( 5 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 6 )) + getDistance(P( 6 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 7 )) + getDistance(P( 7 ),P( 1 ));
|
||||
double L4 = getDistance(P( 1 ),P( 8 )) + getDistance(P( 8 ),P( 4 ));
|
||||
double L5 = getDistance(P( 2 ),P( 9 )) + getDistance(P( 9 ),P( 4 ));
|
||||
double L6 = getDistance(P( 3 ),P( 10 )) + getDistance(P( 10 ),P( 4 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Quad_Pyramid: { // quadratic pyramids
|
||||
double L1 = getDistance(P( 1 ),P( 6 )) + getDistance(P( 6 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 7 )) + getDistance(P( 7 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 8 )) + getDistance(P( 8 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 9 )) + getDistance(P( 9 ),P( 1 ));
|
||||
double L5 = getDistance(P( 1 ),P( 10 )) + getDistance(P( 10 ),P( 5 ));
|
||||
double L6 = getDistance(P( 2 ),P( 11 )) + getDistance(P( 11 ),P( 5 ));
|
||||
double L7 = getDistance(P( 3 ),P( 12 )) + getDistance(P( 12 ),P( 5 ));
|
||||
double L8 = getDistance(P( 4 ),P( 13 )) + getDistance(P( 13 ),P( 5 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(L7,L8));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Quad_Penta: { // quadratic pentas
|
||||
double L1 = getDistance(P( 1 ),P( 7 )) + getDistance(P( 7 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 8 )) + getDistance(P( 8 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 9 )) + getDistance(P( 9 ),P( 1 ));
|
||||
double L4 = getDistance(P( 4 ),P( 10 )) + getDistance(P( 10 ),P( 5 ));
|
||||
double L5 = getDistance(P( 5 ),P( 11 )) + getDistance(P( 11 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 12 )) + getDistance(P( 12 ),P( 4 ));
|
||||
double L7 = getDistance(P( 1 ),P( 13 )) + getDistance(P( 13 ),P( 4 ));
|
||||
double L8 = getDistance(P( 2 ),P( 14 )) + getDistance(P( 14 ),P( 5 ));
|
||||
double L9 = getDistance(P( 3 ),P( 15 )) + getDistance(P( 15 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),L9));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Quad_Hexa:
|
||||
case SMDSEntity_TriQuad_Hexa: { // quadratic hexas
|
||||
double L1 = getDistance(P( 1 ),P( 9 )) + getDistance(P( 9 ),P( 2 ));
|
||||
double L2 = getDistance(P( 2 ),P( 10 )) + getDistance(P( 10 ),P( 3 ));
|
||||
double L3 = getDistance(P( 3 ),P( 11 )) + getDistance(P( 11 ),P( 4 ));
|
||||
double L4 = getDistance(P( 4 ),P( 12 )) + getDistance(P( 12 ),P( 1 ));
|
||||
double L5 = getDistance(P( 5 ),P( 13 )) + getDistance(P( 13 ),P( 6 ));
|
||||
double L6 = getDistance(P( 6 ),P( 14 )) + getDistance(P( 14 ),P( 7 ));
|
||||
double L7 = getDistance(P( 7 ),P( 15 )) + getDistance(P( 15 ),P( 8 ));
|
||||
double L8 = getDistance(P( 8 ),P( 16 )) + getDistance(P( 16 ),P( 5 ));
|
||||
double L9 = getDistance(P( 1 ),P( 17 )) + getDistance(P( 17 ),P( 5 ));
|
||||
double L10= getDistance(P( 2 ),P( 18 )) + getDistance(P( 18 ),P( 6 ));
|
||||
double L11= getDistance(P( 3 ),P( 19 )) + getDistance(P( 19 ),P( 7 ));
|
||||
double L12= getDistance(P( 4 ),P( 20 )) + getDistance(P( 20 ),P( 8 ));
|
||||
double D1 = getDistance(P( 1 ),P( 7 ));
|
||||
double D2 = getDistance(P( 2 ),P( 8 ));
|
||||
double D3 = getDistance(P( 3 ),P( 5 ));
|
||||
double D4 = getDistance(P( 4 ),P( 6 ));
|
||||
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
|
||||
aVal = Max(aVal,Max(Max(L7,L8),Max(L9,L10)));
|
||||
aVal = Max(aVal,Max(L11,L12));
|
||||
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Quad_Polyhedra:
|
||||
case SMDSEntity_Polyhedra: { // polys
|
||||
// get the maximum distance between all pairs of nodes
|
||||
for( int i = 1; i <= len; i++ ) {
|
||||
for( int j = 1; j <= len; j++ ) {
|
||||
if( j > i ) { // optimization of the loop
|
||||
double D = getDistance( P(i), P(j) );
|
||||
aVal = Max( aVal, D );
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMDSEntity_Node:
|
||||
case SMDSEntity_0D:
|
||||
case SMDSEntity_Edge:
|
||||
case SMDSEntity_Quad_Edge:
|
||||
case SMDSEntity_Triangle:
|
||||
case SMDSEntity_Quad_Triangle:
|
||||
case SMDSEntity_BiQuad_Triangle:
|
||||
case SMDSEntity_Quadrangle:
|
||||
case SMDSEntity_Quad_Quadrangle:
|
||||
case SMDSEntity_BiQuad_Quadrangle:
|
||||
case SMDSEntity_Polygon:
|
||||
case SMDSEntity_Quad_Polygon:
|
||||
case SMDSEntity_Ball:
|
||||
case SMDSEntity_Last: return 0;
|
||||
} // switch ( aType )
|
||||
|
||||
if( myPrecision >= 0 )
|
||||
{
|
||||
@ -701,7 +718,7 @@ double MinimumAngle::GetValue( const TSequenceOfXYZ& P )
|
||||
aMin = getAngle(P( P.size() ), P( 1 ), P( 2 ));
|
||||
aMin = Min(aMin,getAngle(P( P.size()-1 ), P( P.size() ), P( 1 )));
|
||||
|
||||
for ( int i = 2; i < P.size(); i++ )
|
||||
for ( size_t i = 2; i < P.size(); i++ )
|
||||
{
|
||||
double A0 = getAngle( P( i-1 ), P( i ), P( i+1 ) );
|
||||
aMin = Min(aMin,A0);
|
||||
@ -1476,10 +1493,10 @@ double Area::GetValue( const TSequenceOfXYZ& P )
|
||||
gp_Vec aVec2( P(3) - P(1) );
|
||||
gp_Vec SumVec = aVec1 ^ aVec2;
|
||||
|
||||
for (int i=4; i<=P.size(); i++)
|
||||
for (size_t i=4; i<=P.size(); i++)
|
||||
{
|
||||
gp_Vec aVec1( P(i-1) - P(1) );
|
||||
gp_Vec aVec2( P(i) - P(1) );
|
||||
gp_Vec aVec2( P(i ) - P(1) );
|
||||
gp_Vec tmp = aVec1 ^ aVec2;
|
||||
SumVec.Add(tmp);
|
||||
}
|
||||
@ -2994,6 +3011,16 @@ bool ConnectedElements::IsSatisfy( long theElementId )
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
namespace
|
||||
{
|
||||
inline bool isLessAngle( const gp_Vec& v1, const gp_Vec& v2, const double cos2 )
|
||||
{
|
||||
double dot = v1 * v2; // cos * |v1| * |v2|
|
||||
double l1 = v1.SquareMagnitude();
|
||||
double l2 = v2.SquareMagnitude();
|
||||
return ( dot * dot ) / l1 / l2 >= cos2;
|
||||
}
|
||||
}
|
||||
CoplanarFaces::CoplanarFaces()
|
||||
: myFaceID(0), myToler(0)
|
||||
{
|
||||
@ -3005,7 +3032,7 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||
{
|
||||
// Build a set of coplanar face ids
|
||||
|
||||
myCoplanarIDs.clear();
|
||||
myCoplanarIDs.Clear();
|
||||
|
||||
if ( !myMeshModifTracer.GetMesh() || !myFaceID || !myToler )
|
||||
return;
|
||||
@ -3019,8 +3046,8 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||
if (!normOK)
|
||||
return;
|
||||
|
||||
const double radianTol = myToler * M_PI / 180.;
|
||||
std::set< SMESH_TLink > checkedLinks;
|
||||
const double cosTol2 = Cos( myToler ) * Cos( myToler );
|
||||
NCollection_Map< SMESH_TLink, SMESH_TLink > checkedLinks;
|
||||
|
||||
std::list< pair< const SMDS_MeshElement*, gp_Vec > > faceQueue;
|
||||
faceQueue.push_back( make_pair( face, myNorm ));
|
||||
@ -3034,7 +3061,7 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||
{
|
||||
const SMDS_MeshNode* n1 = face->GetNode( i );
|
||||
const SMDS_MeshNode* n2 = face->GetNode(( i+1 )%nbN);
|
||||
if ( !checkedLinks.insert( SMESH_TLink( n1, n2 )).second )
|
||||
if ( !checkedLinks.Add( SMESH_TLink( n1, n2 )))
|
||||
continue;
|
||||
SMDS_ElemIteratorPtr fIt = n1->GetInverseElementIterator(SMDSAbs_Face);
|
||||
while ( fIt->more() )
|
||||
@ -3043,9 +3070,9 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||
if ( f->GetNodeIndex( n2 ) > -1 )
|
||||
{
|
||||
gp_Vec norm = getNormale( static_cast<const SMDS_MeshFace*>(f), &normOK );
|
||||
if (!normOK || myNorm.Angle( norm ) <= radianTol)
|
||||
if (!normOK || isLessAngle( myNorm, norm, cosTol2))
|
||||
{
|
||||
myCoplanarIDs.insert( f->GetID() );
|
||||
myCoplanarIDs.Add( f->GetID() );
|
||||
faceQueue.push_back( make_pair( f, norm ));
|
||||
}
|
||||
}
|
||||
@ -3056,7 +3083,7 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||
}
|
||||
bool CoplanarFaces::IsSatisfy( long theElementId )
|
||||
{
|
||||
return myCoplanarIDs.count( theElementId );
|
||||
return myCoplanarIDs.Contains( theElementId );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -3667,7 +3694,7 @@ bool ManifoldPart::process()
|
||||
myMapIds.Add( aFaceId );
|
||||
}
|
||||
|
||||
if ( fi == ( myAllFacePtr.size() - 1 ) )
|
||||
if ( fi == int( myAllFacePtr.size() - 1 ))
|
||||
fi = 0;
|
||||
} // end run on vector of faces
|
||||
return !myMapIds.IsEmpty();
|
||||
@ -4458,6 +4485,7 @@ bool BelongToGeom::IsSatisfy (long theId)
|
||||
case SMDS_TOP_FACE : return ( IsContains( myMeshDS,myShape,aNode,TopAbs_FACE ));
|
||||
case SMDS_TOP_3DSPACE: return ( IsContains( myMeshDS,myShape,aNode,TopAbs_SOLID ) ||
|
||||
IsContains( myMeshDS,myShape,aNode,TopAbs_SHELL ));
|
||||
default:;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4483,6 +4511,7 @@ bool BelongToGeom::IsSatisfy (long theId)
|
||||
case SMDSAbs_Face : return ( IsContains( myMeshDS,myShape,anElem,TopAbs_FACE ));
|
||||
case SMDSAbs_Volume: return ( IsContains( myMeshDS,myShape,anElem,TopAbs_SOLID )||
|
||||
IsContains( myMeshDS,myShape,anElem,TopAbs_SHELL ));
|
||||
default:;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1088,7 +1088,7 @@ namespace SMESH{
|
||||
TMeshModifTracer myMeshModifTracer;
|
||||
long myFaceID;
|
||||
double myToler;
|
||||
std::set< long > myCoplanarIDs;
|
||||
TColStd_MapOfInteger myCoplanarIDs;
|
||||
};
|
||||
typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;
|
||||
|
||||
|
@ -407,7 +407,7 @@ Driver_Mesh::Status DriverGMF_Read::Perform()
|
||||
{
|
||||
// get ids of existing groups
|
||||
std::set< int > groupIDs;
|
||||
const std::set<SMESHDS_GroupBase*>& groups = myMesh->GetGroups();
|
||||
const std::set<SMESHDS_GroupBase*>& groups = myMesh->GetGroups();
|
||||
std::set<SMESHDS_GroupBase*>::const_iterator grIter = groups.begin();
|
||||
for ( ; grIter != groups.end(); ++grIter )
|
||||
groupIDs.insert( (*grIter)->GetID() );
|
||||
|
@ -296,19 +296,19 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
|
||||
SMDSAbs_EntityType smdsEntity;
|
||||
std::string entity = groupName.substr( pos + strlen("_required_"));
|
||||
if ( entity == "Vertices" ) {
|
||||
gmfKwd = GmfRequiredVertices;
|
||||
gmfKwd = GmfRequiredVertices;
|
||||
smdsEntity = SMDSEntity_Node;
|
||||
}
|
||||
else if ( entity == "Edges" ) {
|
||||
gmfKwd = GmfRequiredEdges;
|
||||
gmfKwd = GmfRequiredEdges;
|
||||
smdsEntity = SMDSEntity_Edge;
|
||||
}
|
||||
else if ( entity == "Triangles" ) {
|
||||
gmfKwd = GmfRequiredTriangles;
|
||||
gmfKwd = GmfRequiredTriangles;
|
||||
smdsEntity = SMDSEntity_Triangle;
|
||||
}
|
||||
else if ( entity == "Quadrilaterals" ) {
|
||||
gmfKwd = GmfRequiredQuadrilaterals;
|
||||
gmfKwd = GmfRequiredQuadrilaterals;
|
||||
smdsEntity = SMDSEntity_Quadrangle;
|
||||
}
|
||||
else {
|
||||
@ -330,11 +330,11 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
|
||||
|
||||
// choose a TElem2IDMap
|
||||
TElem2IDMap* elem2IDMap = 0;
|
||||
if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() )
|
||||
if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() )
|
||||
elem2IDMap = & quad2IDMap;
|
||||
else if ( smdsEntity == SMDSEntity_Triangle && nbOkElems != myMesh->NbFaces() )
|
||||
elem2IDMap = & tria2IDMap;
|
||||
else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() )
|
||||
else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() )
|
||||
elem2IDMap = & edge2IDMap;
|
||||
|
||||
// write the group
|
||||
|
@ -500,7 +500,8 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
|
||||
default:;
|
||||
}
|
||||
vector<TInt> aNodeIds(aNbNodes);
|
||||
for(int iElem = 0; iElem < aNbElems; iElem++){
|
||||
for ( int iElem = 0; iElem < aNbElems; iElem++ )
|
||||
{
|
||||
bool anIsValidConnect = false;
|
||||
TCConnSlice aConnSlice = aCellInfo->GetConnSlice(iElem);
|
||||
#ifndef _DEXCEPT_
|
||||
@ -950,17 +951,19 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
|
||||
}
|
||||
break;
|
||||
|
||||
default:;
|
||||
|
||||
} // switch(aGeom)
|
||||
|
||||
#ifndef _DEXCEPT_
|
||||
}catch(const std::exception& exc){
|
||||
} catch(const std::exception& exc) {
|
||||
INFOS("The following exception was caught:\n\t"<<exc.what());
|
||||
aResult = DRS_FAIL;
|
||||
}catch(...){
|
||||
} catch(...) {
|
||||
INFOS("Unknown exception was caught !!!");
|
||||
aResult = DRS_FAIL;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
if (!anElement) {
|
||||
aResult = DRS_WARN_SKIP_ELEM;
|
||||
}
|
||||
@ -977,11 +980,13 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
|
||||
myFamilies[aFamNum]->SetType(anElement->GetType());
|
||||
}
|
||||
}
|
||||
}
|
||||
}}
|
||||
}
|
||||
}
|
||||
} // loop on aNbElems
|
||||
}} // switch(aGeom)
|
||||
} // loop on aGeom2Size
|
||||
} // loop on aEntityInfo
|
||||
|
||||
if (aDescendingEntitiesMap.Extent()) isDescConn = true; // Mantis issue 0020483
|
||||
|
||||
} // for(int iMesh = 0; iMesh < aNbMeshes; iMesh++)
|
||||
#ifndef _DEXCEPT_
|
||||
}
|
||||
|
@ -1349,6 +1349,8 @@ bool SMESH_Mesh::HasModificationsToDiscard() const
|
||||
hasNotComputed = true;
|
||||
if ( hasComputed && hasNotComputed)
|
||||
return true;
|
||||
|
||||
default:;
|
||||
}
|
||||
}
|
||||
if ( NbNodes() < 1 )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -730,7 +730,7 @@ public:
|
||||
void sweepElement(const SMDS_MeshElement* elem,
|
||||
const std::vector<TNodeOfNodeListMapItr> & newNodesItVec,
|
||||
std::list<const SMDS_MeshElement*>& newElems,
|
||||
const int nbSteps,
|
||||
const size_t nbSteps,
|
||||
SMESH_SequenceOfElemPtr& srcElements);
|
||||
|
||||
/*!
|
||||
|
@ -139,7 +139,7 @@ bool SMESH_MesherHelper::IsQuadraticSubMesh(const TopoDS_Shape& aSh)
|
||||
SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge );
|
||||
|
||||
|
||||
int nbOldLinks = myTLinkNodeMap.size();
|
||||
//int nbOldLinks = myTLinkNodeMap.size();
|
||||
|
||||
if ( !myMesh->HasShapeToMesh() )
|
||||
{
|
||||
@ -2070,7 +2070,7 @@ SMDS_MeshFace* SMESH_MesherHelper::AddPolygonalFace (const vector<const SMDS_Mes
|
||||
{
|
||||
vector<const SMDS_MeshNode*> newNodes( nodes.size() * 2 );
|
||||
newNodes = nodes;
|
||||
for ( int i = 0; i < nodes.size(); ++i )
|
||||
for ( size_t i = 0; i < nodes.size(); ++i )
|
||||
{
|
||||
const SMDS_MeshNode* n1 = nodes[i];
|
||||
const SMDS_MeshNode* n2 = nodes[(i+1)%nodes.size()];
|
||||
@ -2393,7 +2393,7 @@ SMESH_MesherHelper::AddPolyhedralVolume (const std::vector<const SMDS_MeshNode*>
|
||||
{
|
||||
vector<const SMDS_MeshNode*> newNodes;
|
||||
vector<int> newQuantities;
|
||||
for ( int iFace=0, iN=0; iFace < quantities.size(); ++iFace)
|
||||
for ( size_t iFace = 0, iN = 0; iFace < quantities.size(); ++iFace )
|
||||
{
|
||||
int nbNodesInFace = quantities[iFace];
|
||||
newQuantities.push_back(0);
|
||||
@ -2402,10 +2402,10 @@ SMESH_MesherHelper::AddPolyhedralVolume (const std::vector<const SMDS_MeshNode*>
|
||||
const SMDS_MeshNode* n1 = nodes[ iN + i ];
|
||||
newNodes.push_back( n1 );
|
||||
newQuantities.back()++;
|
||||
|
||||
|
||||
const SMDS_MeshNode* n2 = nodes[ iN + ( i+1==nbNodesInFace ? 0 : i+1 )];
|
||||
// if ( n1->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE &&
|
||||
// n2->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE )
|
||||
// if ( n1->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE &&
|
||||
// n2->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE )
|
||||
{
|
||||
const SMDS_MeshNode* n12 = GetMediumNode( n1, n2, force3d, TopAbs_SOLID );
|
||||
newNodes.push_back( n12 );
|
||||
@ -2606,8 +2606,8 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
|
||||
}
|
||||
|
||||
// nb rows of nodes
|
||||
int prevNbRows = theParam2ColumnMap.begin()->second.size(); // current, at least 1 here
|
||||
int expectedNbRows = faceSubMesh->NbElements() / ( theParam2ColumnMap.size()-1 ); // to be added
|
||||
size_t prevNbRows = theParam2ColumnMap.begin()->second.size(); // current, at least 1 here
|
||||
size_t expectNbRows = faceSubMesh->NbElements() / ( theParam2ColumnMap.size()-1 ); // to be added
|
||||
|
||||
// fill theParam2ColumnMap column by column by passing from nodes on
|
||||
// theBaseEdge up via mesh faces on theFace
|
||||
@ -2620,10 +2620,10 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
|
||||
{
|
||||
vector<const SMDS_MeshNode*>& nCol1 = par_nVec_1->second;
|
||||
vector<const SMDS_MeshNode*>& nCol2 = par_nVec_2->second;
|
||||
nCol1.resize( prevNbRows + expectedNbRows );
|
||||
nCol2.resize( prevNbRows + expectedNbRows );
|
||||
nCol1.resize( prevNbRows + expectNbRows );
|
||||
nCol2.resize( prevNbRows + expectNbRows );
|
||||
|
||||
int i1, i2, foundNbRows = 0;
|
||||
int i1, i2; size_t foundNbRows = 0;
|
||||
const SMDS_MeshNode *n1 = nCol1[ prevNbRows-1 ];
|
||||
const SMDS_MeshNode *n2 = nCol2[ prevNbRows-1 ];
|
||||
// find face sharing node n1 and n2 and belonging to faceSubMesh
|
||||
@ -2635,7 +2635,7 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
|
||||
int nbNodes = face->NbCornerNodes();
|
||||
if ( nbNodes != 4 )
|
||||
return false;
|
||||
if ( foundNbRows + 1 > expectedNbRows )
|
||||
if ( foundNbRows + 1 > expectNbRows )
|
||||
return false;
|
||||
n1 = face->GetNode( (i2+2) % 4 ); // opposite corner of quadrangle face
|
||||
n2 = face->GetNode( (i1+2) % 4 );
|
||||
@ -2645,12 +2645,12 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
|
||||
}
|
||||
avoidSet.insert( face );
|
||||
}
|
||||
if ( foundNbRows != expectedNbRows )
|
||||
if ((size_t) foundNbRows != expectNbRows )
|
||||
return false;
|
||||
avoidSet.clear();
|
||||
}
|
||||
return ( theParam2ColumnMap.size() > 1 &&
|
||||
theParam2ColumnMap.begin()->second.size() == prevNbRows + expectedNbRows );
|
||||
theParam2ColumnMap.begin()->second.size() == prevNbRows + expectNbRows );
|
||||
}
|
||||
|
||||
namespace
|
||||
@ -3553,11 +3553,11 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
int NbVolumes() const { return !_volumes[0] ? 0 : !_volumes[1] ? 1 : 2; }
|
||||
|
||||
void AddSelfToLinks() const {
|
||||
for ( int i = 0; i < _sides.size(); ++i )
|
||||
for ( size_t i = 0; i < _sides.size(); ++i )
|
||||
_sides[i]->_faces.push_back( this );
|
||||
}
|
||||
int LinkIndex( const QLink* side ) const {
|
||||
for (int i=0; i<_sides.size(); ++i ) if ( _sides[i] == side ) return i;
|
||||
for (size_t i = 0; i<_sides.size(); ++i ) if ( _sides[i] == side ) return i;
|
||||
return -1;
|
||||
}
|
||||
bool GetLinkChain( int iSide, TChain& chain, SMDS_TypeOfPosition pos, int& err) const;
|
||||
@ -3589,7 +3589,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
const SMDS_MeshNode* nodeToContain) const;
|
||||
|
||||
const SMDS_MeshNode* GetNodeInFace() const {
|
||||
for ( int iL = 0; iL < _sides.size(); ++iL )
|
||||
for ( size_t iL = 0; iL < _sides.size(); ++iL )
|
||||
if ( _sides[iL]->MediumPos() == SMDS_TOP_FACE ) return _sides[iL]->_mediumNode;
|
||||
return 0;
|
||||
}
|
||||
@ -3642,7 +3642,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
_sides = links;
|
||||
_sideIsAdded[0]=_sideIsAdded[1]=_sideIsAdded[2]=_sideIsAdded[3]=false;
|
||||
_normal.SetCoord(0,0,0);
|
||||
for ( int i = 1; i < _sides.size(); ++i ) {
|
||||
for ( size_t i = 1; i < _sides.size(); ++i ) {
|
||||
const QLink *l1 = _sides[i-1], *l2 = _sides[i];
|
||||
insert( l1->node1() ); insert( l1->node2() );
|
||||
// compute normal
|
||||
@ -3676,7 +3676,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
|
||||
bool QFace::GetLinkChain( int iSide, TChain& chain, SMDS_TypeOfPosition pos, int& error) const
|
||||
{
|
||||
if ( iSide >= _sides.size() ) // wrong argument iSide
|
||||
if ( iSide >= (int)_sides.size() ) // wrong argument iSide
|
||||
return false;
|
||||
if ( _sideIsAdded[ iSide ]) // already in chain
|
||||
return true;
|
||||
@ -3687,7 +3687,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
list< const QFace* > faces( 1, this );
|
||||
while ( !faces.empty() ) {
|
||||
const QFace* face = faces.front();
|
||||
for ( int i = 0; i < face->_sides.size(); ++i ) {
|
||||
for ( size_t i = 0; i < face->_sides.size(); ++i ) {
|
||||
if ( !face->_sideIsAdded[i] && face->_sides[i] ) {
|
||||
face->_sideIsAdded[i] = true;
|
||||
// find a face side in the chain
|
||||
@ -3770,7 +3770,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
typedef list< pair< const QFace*, TLinkInSet > > TFaceLinkList;
|
||||
TFaceLinkList adjacentFaces;
|
||||
|
||||
for ( int iL = 0; iL < _sides.size(); ++iL )
|
||||
for ( size_t iL = 0; iL < _sides.size(); ++iL )
|
||||
{
|
||||
if ( avoidLink._qlink == _sides[iL] )
|
||||
continue;
|
||||
@ -3823,10 +3823,10 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
const TChainLink& avoidLink,
|
||||
const SMDS_MeshNode* nodeToContain) const
|
||||
{
|
||||
for ( int i = 0; i < _sides.size(); ++i )
|
||||
for ( size_t i = 0; i < _sides.size(); ++i )
|
||||
if ( avoidLink._qlink != _sides[i] &&
|
||||
(_sides[i]->node1() == nodeToContain || _sides[i]->node2() == nodeToContain ))
|
||||
return links.find( _sides[ i ]);
|
||||
return links.find( _sides[i] );
|
||||
return links.end();
|
||||
}
|
||||
|
||||
@ -3877,7 +3877,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
if ( !theStep )
|
||||
return thePrevLen; // propagation limit reached
|
||||
|
||||
int iL; // index of theLink
|
||||
size_t iL; // index of theLink
|
||||
for ( iL = 0; iL < _sides.size(); ++iL )
|
||||
if ( theLink._qlink == _sides[ iL ])
|
||||
break;
|
||||
@ -4017,7 +4017,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
int iFaceCont = -1, nbBoundary = 0, iBoundary[2]={-1,-1};
|
||||
if ( _faces[0]->IsBoundary() )
|
||||
iBoundary[ nbBoundary++ ] = 0;
|
||||
for ( int iF = 1; iFaceCont < 0 && iF < _faces.size(); ++iF )
|
||||
for ( size_t iF = 1; iFaceCont < 0 && iF < _faces.size(); ++iF )
|
||||
{
|
||||
// look for a face bounding none of volumes bound by _faces[0]
|
||||
bool sameVol = false;
|
||||
@ -4059,10 +4059,10 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
|
||||
const QFace* QLink::GetContinuesFace( const QFace* face ) const
|
||||
{
|
||||
for ( int i = 0; i < _faces.size(); ++i ) {
|
||||
for ( size_t i = 0; i < _faces.size(); ++i ) {
|
||||
if ( _faces[i] == face ) {
|
||||
int iF = i < 2 ? 1-i : 5-i;
|
||||
return iF < _faces.size() ? _faces[iF] : 0;
|
||||
return iF < (int)_faces.size() ? _faces[iF] : 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@ -4075,7 +4075,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
|
||||
bool QLink::OnBoundary() const
|
||||
{
|
||||
for ( int i = 0; i < _faces.size(); ++i )
|
||||
for ( size_t i = 0; i < _faces.size(); ++i )
|
||||
if (_faces[i] && _faces[i]->IsBoundary()) return true;
|
||||
return false;
|
||||
}
|
||||
@ -4144,7 +4144,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
for ( ; bnd != bndEnd; ++bnd )
|
||||
{
|
||||
const QLink* bndLink = *bnd;
|
||||
for ( int i = 0; i < bndLink->_faces.size(); ++i ) // loop on faces of bndLink
|
||||
for ( size_t i = 0; i < bndLink->_faces.size(); ++i ) // loop on faces of bndLink
|
||||
{
|
||||
const QFace* face = bndLink->_faces[i]; // quadrange lateral face of a prism
|
||||
if ( !face ) continue;
|
||||
@ -4211,7 +4211,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
{
|
||||
// put links in the set and evalute number of result chains by number of boundary links
|
||||
TLinkSet linkSet;
|
||||
int nbBndLinks = 0;
|
||||
size_t nbBndLinks = 0;
|
||||
for ( TChain::iterator lnk = allLinks.begin(); lnk != allLinks.end(); ++lnk ) {
|
||||
linkSet.insert( *lnk );
|
||||
nbBndLinks += lnk->IsBoundary();
|
||||
@ -4260,7 +4260,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
|
||||
TLinkInSet botLink = startLink; // current horizontal link to go up from
|
||||
corner = startCorner; // current corner the botLink ends at
|
||||
int iRow = 0;
|
||||
size_t iRow = 0;
|
||||
while ( botLink != linksEnd ) // loop on rows
|
||||
{
|
||||
// add botLink to the columnChain
|
||||
@ -4357,7 +4357,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
// In the linkSet, there must remain the last links of rowChains; add them
|
||||
if ( linkSet.size() != rowChains.size() )
|
||||
return _BAD_SET_SIZE;
|
||||
for ( int iRow = 0; iRow < rowChains.size(); ++iRow ) {
|
||||
for ( size_t iRow = 0; iRow < rowChains.size(); ++iRow ) {
|
||||
// find the link (startLink) ending at startCorner
|
||||
corner = 0;
|
||||
for ( startLink = linkSet.begin(); startLink != linksEnd; ++startLink ) {
|
||||
@ -4449,6 +4449,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
{
|
||||
continue;
|
||||
}
|
||||
default:;
|
||||
}
|
||||
// get nodes shared by faces that may be distorted
|
||||
SMDS_NodeIteratorPtr nodeIt;
|
||||
@ -4562,6 +4563,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
{
|
||||
concaveFaces.push_back( face );
|
||||
}
|
||||
default:;
|
||||
}
|
||||
}
|
||||
if ( concaveFaces.empty() )
|
||||
@ -4627,7 +4629,7 @@ namespace { // Structures used by FixQuadraticElements()
|
||||
while ( volIt->more() )
|
||||
{
|
||||
const SMDS_MeshElement* vol = volIt->next();
|
||||
int nbN = vol->NbCornerNodes();
|
||||
size_t nbN = vol->NbCornerNodes();
|
||||
if ( ( nbN != 4 && nbN != 5 ) ||
|
||||
!solidSM->Contains( vol ) ||
|
||||
!checkedVols.insert( vol ).second )
|
||||
@ -4957,7 +4959,7 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
for ( int iC = 0; iC < chains.size(); ++iC )
|
||||
for ( size_t iC = 0; iC < chains.size(); ++iC )
|
||||
{
|
||||
TChain& chain = chains[iC];
|
||||
if ( chain.empty() ) continue;
|
||||
|
@ -792,7 +792,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
|
||||
double u = epos->GetUParameter();
|
||||
paramNodeMap.insert( make_pair( u, node ));
|
||||
}
|
||||
if ( paramNodeMap.size() != eSubMesh->NbNodes() ) {
|
||||
if ((int) paramNodeMap.size() != eSubMesh->NbNodes() ) {
|
||||
// wrong U on edge, project
|
||||
Extrema_ExtPC proj;
|
||||
BRepAdaptor_Curve aCurve( edge );
|
||||
@ -818,7 +818,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
|
||||
}
|
||||
|
||||
//rnv : To fix the bug IPAL21999 Pattern Mapping - New - collapse of pattern mesh
|
||||
if ( paramNodeMap.size() != eSubMesh->NbNodes() - nbMeduimNodes )
|
||||
if ((int) paramNodeMap.size() != eSubMesh->NbNodes() - nbMeduimNodes )
|
||||
return setErrorCode(ERR_UNEXPECTED);
|
||||
}
|
||||
|
||||
@ -1206,7 +1206,7 @@ struct TIsoNode {
|
||||
TIsoNode* myNext[4]; // order: (iDir=0,isForward=0), (1,0), (0,1), (1,1)
|
||||
TIsoNode* myBndNodes[4]; // order: (iDir=0,i=0), (1,0), (0,1), (1,1)
|
||||
TIsoNode(double initU, double initV):
|
||||
myInitUV( initU, initV ), myUV( 1e100, 1e100 ), myIsMovable(true)
|
||||
myIsMovable(true), myInitUV( initU, initV ), myUV( 1e100, 1e100 )
|
||||
{ myNext[0] = myNext[1] = myNext[2] = myNext[3] = 0; }
|
||||
bool IsUVComputed() const
|
||||
{ return myUV.X() != 1e100; }
|
||||
@ -2425,7 +2425,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace,
|
||||
int nbVertices = loadVE( eList, myShapeIDMap );
|
||||
myShapeIDMap.Add( face );
|
||||
|
||||
if ( myShapeIDToPointsMap.size() != myShapeIDMap.Extent() ) {
|
||||
if ((int) myShapeIDToPointsMap.size() != myShapeIDMap.Extent() ) {
|
||||
MESSAGE( myShapeIDToPointsMap.size() <<" != " << myShapeIDMap.Extent());
|
||||
return setErrorCode( ERR_APPLF_INTERNAL_EEROR );
|
||||
}
|
||||
@ -2501,7 +2501,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace,
|
||||
while ( wlIt != wireList.end() )
|
||||
{
|
||||
list< TopoDS_Edge >& wire = (*wlIt);
|
||||
int nbEdges = wire.size();
|
||||
size_t nbEdges = wire.size();
|
||||
wlIt++;
|
||||
if ( wlIt != wireList.end() && (*wlIt).size() != nbEdges ) // a unique size wire
|
||||
{
|
||||
@ -2528,7 +2528,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace,
|
||||
wlIt = wireList.begin();
|
||||
while ( wlIt != wireList.end() )
|
||||
{
|
||||
int nbSameSize = 0, nbEdges = (*wlIt).size();
|
||||
size_t nbSameSize = 0, nbEdges = (*wlIt).size();
|
||||
list< list< TopoDS_Edge > >::iterator wlIt2 = wlIt;
|
||||
wlIt2++;
|
||||
while ( wlIt2 != wireList.end() && (*wlIt2).size() == nbEdges ) { // a same size wire
|
||||
@ -2867,7 +2867,7 @@ bool SMESH_Pattern::Apply (SMESH_Mesh* theMesh,
|
||||
|
||||
// compute UV and XYZ of points on edges
|
||||
|
||||
for ( int i = 0; i < myOrderedNodes.size(); ++i, ++iSub )
|
||||
for ( size_t i = 0; i < myOrderedNodes.size(); ++i, ++iSub )
|
||||
{
|
||||
gp_XY& uv1 = keyUV[ i ];
|
||||
gp_XY& uv2 = ( i+1 < keyUV.size() ) ? keyUV[ i+1 ] : keyUV[ 0 ];
|
||||
@ -3104,7 +3104,7 @@ bool SMESH_Pattern::Apply (std::set<const SMDS_MeshVolume*> & theVolumes,
|
||||
|
||||
// to find point index
|
||||
map< TPoint*, int > pointIndex;
|
||||
for ( int i = 0; i < myPoints.size(); i++ )
|
||||
for ( size_t i = 0; i < myPoints.size(); i++ )
|
||||
pointIndex.insert( make_pair( & myPoints[ i ], i ));
|
||||
|
||||
int ind1 = 0; // lowest point index for an element
|
||||
@ -4014,7 +4014,7 @@ bool SMESH_Pattern::MakeMesh(SMESH_Mesh* theMesh,
|
||||
for ( ; i_node != myXYZIdToNodeMap.end(); i_node++ ) {
|
||||
nodesVector[ i_node->first ] = i_node->second;
|
||||
}
|
||||
for ( int i = 0; i < myXYZ.size(); ++i ) {
|
||||
for ( size_t i = 0; i < myXYZ.size(); ++i ) {
|
||||
if ( !nodesVector[ i ] && isDefined( myXYZ[ i ] ) )
|
||||
nodesVector[ i ] = aMeshDS->AddNode (myXYZ[ i ].X(),
|
||||
myXYZ[ i ].Y(),
|
||||
@ -4184,7 +4184,7 @@ void SMESH_Pattern::createElements(SMESH_Mesh* theMes
|
||||
groups.resize( theElements.size() );
|
||||
const set<SMESHDS_GroupBase*>& allGroups = aMeshDS->GetGroups();
|
||||
set<SMESHDS_GroupBase*>::const_iterator grIt;
|
||||
for ( int i = 0; i < theElements.size(); i++ )
|
||||
for ( size_t i = 0; i < theElements.size(); i++ )
|
||||
{
|
||||
shapeIDs[ i ] = editor.FindShape( theElements[ i ] );
|
||||
for ( grIt = allGroups.begin(); grIt != allGroups.end(); grIt++ ) {
|
||||
@ -4226,7 +4226,7 @@ void SMESH_Pattern::createElements(SMESH_Mesh* theMes
|
||||
TElemDef::const_iterator id = elemNodeInd.begin();
|
||||
int nbNodes;
|
||||
for ( nbNodes = 0; id != elemNodeInd.end(); id++ ) {
|
||||
if ( *id < theNodesVector.size() )
|
||||
if ( *id < (int) theNodesVector.size() )
|
||||
nodes[ nbNodes++ ] = theNodesVector[ *id ];
|
||||
else
|
||||
nodes[ nbNodes++ ] = myXYZIdToNodeMap[ *id ];
|
||||
@ -4325,7 +4325,7 @@ void SMESH_Pattern::createElements(SMESH_Mesh* theMes
|
||||
}
|
||||
if ( onMeshElements ) {
|
||||
list< int > elemIDs;
|
||||
for ( int i = 0; i < theElements.size(); i++ )
|
||||
for ( size_t i = 0; i < theElements.size(); i++ )
|
||||
{
|
||||
subMesh = theMesh->GetSubMeshContaining( shapeIDs[ i ] );
|
||||
if ( subMesh )
|
||||
@ -4354,7 +4354,7 @@ bool SMESH_Pattern::isReversed(const SMDS_MeshNode* theFirstNode,
|
||||
gp_Pnt P[2];
|
||||
list<int>::const_iterator id = theIdsList.begin();
|
||||
for ( int i = 0; i < 2; ++i, ++id ) {
|
||||
if ( *id < myXYZ.size() )
|
||||
if ( *id < (int) myXYZ.size() )
|
||||
P[ i ] = myXYZ[ *id ];
|
||||
else {
|
||||
map< int, const SMDS_MeshNode*>::const_iterator i_n;
|
||||
@ -4790,7 +4790,7 @@ bool SMESH_Pattern::setShapeToMesh(const TopoDS_Shape& theShape)
|
||||
// check nb of vertices
|
||||
TopTools_IndexedMapOfShape vMap;
|
||||
TopExp::MapShapes( theShape, TopAbs_VERTEX, vMap );
|
||||
if ( vMap.Extent() + nbNodeOnSeamEdge != myKeyPointIDs.size() ) {
|
||||
if ( vMap.Extent() + nbNodeOnSeamEdge != (int)myKeyPointIDs.size() ) {
|
||||
MESSAGE( myKeyPointIDs.size() + nbNodeOnSeamEdge << " != " << vMap.Extent() );
|
||||
return setErrorCode( ERR_APPL_BAD_NB_VERTICES );
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ namespace
|
||||
const SMESH::double_array& aCoords = theSeq[theId].coords;
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(3*aNbElems != aCoords.length())
|
||||
if(3*aNbElems != (CORBA::Long) aCoords.length())
|
||||
EXCEPTION(runtime_error,"AddNodesWithID - 3*aNbElems != aCoords.length()");
|
||||
for(CORBA::Long aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){
|
||||
SMDS_MeshElement* anElem = theMesh->AddNodeWithID(aCoords[aCoordId],
|
||||
@ -112,7 +112,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if (2*aNbElems != anIndexes.length())
|
||||
if (2*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddEdgeWithID - 2*aNbElems != aCoords.length()");
|
||||
CORBA::Long anIndexId = 0;
|
||||
for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
|
||||
@ -135,9 +135,9 @@ namespace
|
||||
const SMESH::double_array& aDiameter = theSeq[theId].coords;
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if (2*aNbElems != anIndexes.length() )
|
||||
if (2*aNbElems != (CORBA::Long) anIndexes.length() )
|
||||
EXCEPTION(runtime_error,"AddEdgeWithID - 2*aNbElems != anIndexes.length()");
|
||||
if (aNbElems != aDiameter.length())
|
||||
if (aNbElems != (CORBA::Long) aDiameter.length())
|
||||
EXCEPTION(runtime_error,"AddEdgeWithID - aNbElems != aDiameter.length()");
|
||||
CORBA::Long anIndexId = 0;
|
||||
for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
|
||||
@ -160,7 +160,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(3*aNbElems != anIndexes.length())
|
||||
if(3*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddEdgeWithID - 3*aNbElems != aCoords.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){
|
||||
SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
|
||||
@ -181,7 +181,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(4*aNbElems != anIndexes.length())
|
||||
if(4*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddTriasWithID - 4*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -203,7 +203,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(5*aNbElems != anIndexes.length())
|
||||
if(5*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadsWithID - 4*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -280,7 +280,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(5*aNbElems != anIndexes.length())
|
||||
if(5*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddTetrasWithID - 5*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -303,7 +303,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(6*aNbElems != anIndexes.length())
|
||||
if(6*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddPiramidsWithID - 6*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -327,7 +327,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(7*aNbElems != anIndexes.length())
|
||||
if(7*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddPrismsWithID - 7*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -352,7 +352,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(9*aNbElems != anIndexes.length())
|
||||
if(9*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddHexasWithID - 9*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -378,7 +378,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(13*aNbElems != anIndexes.length())
|
||||
if(13*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddHexPrismWithID - 13*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=13){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -443,7 +443,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(4*aNbElems != anIndexes.length())
|
||||
if(4*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadEdgeWithID - 4*aNbElems != aCoords.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
|
||||
SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
|
||||
@ -465,7 +465,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(7*aNbElems != anIndexes.length())
|
||||
if(7*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadTriasWithID - 7*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -490,7 +490,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(9*aNbElems != anIndexes.length())
|
||||
if(9*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadQuadsWithID - 9*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -516,7 +516,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(10*aNbElems != anIndexes.length())
|
||||
if(10*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddBiQuadQuadsWithID - 10*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=10){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -543,7 +543,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(8*aNbElems != anIndexes.length())
|
||||
if(8*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddBiQuadTriasWithID - 8*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=8){
|
||||
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
|
||||
@ -569,7 +569,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(11*aNbElems != anIndexes.length())
|
||||
if(11*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadTetrasWithID - 11*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=11){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -598,7 +598,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(14*aNbElems != anIndexes.length())
|
||||
if(14*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadPiramidsWithID - 14*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=14){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -630,7 +630,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(16*aNbElems != anIndexes.length())
|
||||
if(16*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadPentasWithID - 16*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=16){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -664,7 +664,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(21*aNbElems != anIndexes.length())
|
||||
if(21*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddQuadHexasWithID - 21*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=21){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
@ -702,7 +702,7 @@ namespace
|
||||
{
|
||||
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
|
||||
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
|
||||
if(28*aNbElems != anIndexes.length())
|
||||
if(28*aNbElems != (CORBA::Long) anIndexes.length())
|
||||
EXCEPTION(runtime_error,"AddTriQuadHexasWithID - 28*aNbElems != anIndexes.length()");
|
||||
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=28){
|
||||
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
|
||||
|
@ -1268,7 +1268,7 @@ void SMESHGUI_SimpleElemInfo::information( const QList<long>& ids )
|
||||
SMESH::ListOfGroups_var groups = aMesh->GetGroups();
|
||||
myInfo->append( "" ); // separator
|
||||
bool top_created = false;
|
||||
for ( int i = 0; i < groups->length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < groups->length(); i++ ) {
|
||||
SMESH::SMESH_GroupBase_var aGrp = groups[i];
|
||||
if ( CORBA::is_nil( aGrp ) ) continue;
|
||||
QString aName = aGrp->GetName();
|
||||
@ -1528,7 +1528,7 @@ void SMESHGUI_SimpleElemInfo::information( const QList<long>& ids )
|
||||
SMESH::ListOfGroups_var groups = aMesh->GetGroups();
|
||||
myInfo->append( "" ); // separator
|
||||
bool top_created = false;
|
||||
for ( int i = 0; i < groups->length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < groups->length(); i++ ) {
|
||||
SMESH::SMESH_GroupBase_var aGrp = groups[i];
|
||||
if ( CORBA::is_nil( aGrp ) ) continue;
|
||||
QString aName = aGrp->GetName();
|
||||
@ -1788,7 +1788,7 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
|
||||
if ( !CORBA::is_nil( aMesh ) ) {
|
||||
SMESH::ListOfGroups_var groups = aMesh->GetGroups();
|
||||
QTreeWidgetItem* groupsItem = 0;
|
||||
for ( int i = 0; i < groups->length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < groups->length(); i++ ) {
|
||||
SMESH::SMESH_GroupBase_var aGrp = groups[i];
|
||||
if ( CORBA::is_nil( aGrp ) ) continue;
|
||||
QString aName = aGrp->GetName();
|
||||
@ -2086,7 +2086,7 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
|
||||
if ( !CORBA::is_nil( aMesh ) ) {
|
||||
SMESH::ListOfGroups_var groups = aMesh->GetGroups();
|
||||
QTreeWidgetItem* groupsItem = 0;
|
||||
for ( int i = 0; i < groups->length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < groups->length(); i++ ) {
|
||||
SMESH::SMESH_GroupBase_var aGrp = groups[i];
|
||||
if ( CORBA::is_nil( aGrp ) ) continue;
|
||||
QString aName = aGrp->GetName();
|
||||
@ -2643,7 +2643,7 @@ void SMESHGUI_AddInfo::showGroups()
|
||||
itemGroups->setData( 0, Qt::UserRole, GROUPS_ID );
|
||||
|
||||
// total number of groups > 10, show extra widgets for info browsing
|
||||
if ( myGroups->length() > MAXITEMS ) {
|
||||
if ((int) myGroups->length() > MAXITEMS ) {
|
||||
ExtraWidget* extra = new ExtraWidget( this, true );
|
||||
connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousGroups() ) );
|
||||
connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextGroups() ) );
|
||||
@ -2704,7 +2704,7 @@ void SMESHGUI_AddInfo::showSubMeshes()
|
||||
itemSubMeshes->setData( 0, Qt::UserRole, SUBMESHES_ID );
|
||||
|
||||
// total number of sub-meshes > 10, show extra widgets for info browsing
|
||||
if ( mySubMeshes->length() > MAXITEMS ) {
|
||||
if ((int) mySubMeshes->length() > MAXITEMS ) {
|
||||
ExtraWidget* extra = new ExtraWidget( this, true );
|
||||
connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousSubMeshes() ) );
|
||||
connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextSubMeshes() ) );
|
||||
|
@ -166,7 +166,7 @@ void SMESH_Block::TFace::Set( const int faceID,
|
||||
// pcurves
|
||||
vector< int > edgeIdVec;
|
||||
GetFaceEdgesIDs( faceID, edgeIdVec );
|
||||
for ( int iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
|
||||
for ( size_t iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
|
||||
{
|
||||
myCoordInd[ iE ] = GetCoordIndOnEdge( edgeIdVec[ iE ] );
|
||||
if ( myC2d[ iE ]) delete myC2d[ iE ];
|
||||
@ -2083,7 +2083,7 @@ bool SMESH_Block::LoadFace(const TopoDS_Face& theFace,
|
||||
bool isForward[4];
|
||||
vector< int > edgeIdVec;
|
||||
GetFaceEdgesIDs( theFaceID, edgeIdVec );
|
||||
for ( int iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
|
||||
for ( size_t iE = 0; iE < edgeIdVec.size(); iE++ ) // loop on 4 edges
|
||||
{
|
||||
if ( edgeIdVec[ iE ] > theShapeIDMap.Extent() )
|
||||
return false;
|
||||
|
@ -344,19 +344,6 @@ namespace
|
||||
|
||||
} // namespace
|
||||
|
||||
// struct needed for NCollection_Map
|
||||
struct TLinkHasher
|
||||
{
|
||||
static int HashCode(const SMESH_TLink& link, int aLimit)
|
||||
{
|
||||
return ::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit );
|
||||
}
|
||||
static Standard_Boolean IsEqual(const SMESH_TLink& l1, const SMESH_TLink& l2)
|
||||
{
|
||||
return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() );
|
||||
}
|
||||
};
|
||||
|
||||
//================================================================================
|
||||
/*
|
||||
* Returns groups of TFreeBorder's coincident within the given tolerance.
|
||||
@ -370,7 +357,7 @@ void SMESH_MeshAlgos::FindCoincidentFreeBorders(SMDS_Mesh& mesh,
|
||||
CoincidentFreeBorders & foundFreeBordes)
|
||||
{
|
||||
// find free links
|
||||
typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, TLinkHasher > TLink2FaceMap;
|
||||
typedef NCollection_DataMap<SMESH_TLink, const SMDS_MeshElement*, SMESH_TLink > TLink2FaceMap;
|
||||
TLink2FaceMap linkMap;
|
||||
int nbSharedLinks = 0;
|
||||
SMDS_FaceIteratorPtr faceIt = mesh.facesIterator();
|
||||
|
@ -270,7 +270,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
|
||||
ElementBndBoxTree::~ElementBndBoxTree()
|
||||
{
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
if ( --_elements[i]->_refCount <= 0 )
|
||||
delete _elements[i];
|
||||
}
|
||||
@ -284,7 +284,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
Bnd_B3d* ElementBndBoxTree::buildRootBox()
|
||||
{
|
||||
Bnd_B3d* box = new Bnd_B3d;
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
box->Add( *_elements[i] );
|
||||
return box;
|
||||
}
|
||||
@ -297,7 +297,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
|
||||
void ElementBndBoxTree::buildChildrenData()
|
||||
{
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
{
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
@ -315,7 +315,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j]);
|
||||
if ( child->_elements.size() <= MaxNbElemsInLeaf )
|
||||
if ((int) child->_elements.size() <= MaxNbElemsInLeaf )
|
||||
child->myIsLeaf = true;
|
||||
|
||||
if ( child->_elements.capacity() - child->_elements.size() > 1000 )
|
||||
@ -337,7 +337,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
|
||||
if ( isLeaf() )
|
||||
{
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
if ( !_elements[i]->IsOut( point.XYZ() ))
|
||||
foundElems.insert( _elements[i]->_element );
|
||||
}
|
||||
@ -362,7 +362,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
|
||||
if ( isLeaf() )
|
||||
{
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
if ( !_elements[i]->IsOut( line ))
|
||||
foundElems.insert( _elements[i]->_element );
|
||||
}
|
||||
@ -388,7 +388,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
|
||||
if ( isLeaf() )
|
||||
{
|
||||
for ( int i = 0; i < _elements.size(); ++i )
|
||||
for ( size_t i = 0; i < _elements.size(); ++i )
|
||||
if ( !_elements[i]->IsOut( center, radius ))
|
||||
foundElems.insert( _elements[i]->_element );
|
||||
}
|
||||
@ -1325,6 +1325,7 @@ double SMESH_MeshAlgos::GetDistance( const SMDS_MeshElement* elem,
|
||||
return GetDistance( dynamic_cast<const SMDS_MeshEdge*>( elem ), point);
|
||||
case SMDSAbs_Node:
|
||||
return point.Distance( SMESH_TNodeXYZ( elem ));
|
||||
default:;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@ -1421,6 +1422,7 @@ double SMESH_MeshAlgos::GetDistance( const SMDS_MeshFace* face,
|
||||
// cout << distVec.Magnitude() << " VERTEX " << face->GetNode(pos._index)->GetID() << endl;
|
||||
return distVec.Magnitude();
|
||||
}
|
||||
default:;
|
||||
}
|
||||
return badDistance;
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ Bnd_B3d* SMESH_OctreeNode::buildRootBox()
|
||||
gp_XYZ p1( n1->X(), n1->Y(), n1->Z() );
|
||||
box->Add(p1);
|
||||
}
|
||||
if ( myNodes.size() <= getMaxNbNodes() )
|
||||
if ((int) myNodes.size() <= getMaxNbNodes() )
|
||||
myIsLeaf = true;
|
||||
|
||||
return box;
|
||||
@ -151,7 +151,7 @@ void SMESH_OctreeNode::buildChildrenData()
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
SMESH_OctreeNode* myChild = dynamic_cast<SMESH_OctreeNode*> (myChildren[i]);
|
||||
if ( myChild->myNodes.size() <= getMaxNbNodes() )
|
||||
if ((int) myChild->myNodes.size() <= getMaxNbNodes() )
|
||||
myChild->myIsLeaf = true;
|
||||
}
|
||||
}
|
||||
|
@ -80,8 +80,11 @@ namespace SMESHUtils
|
||||
struct Deleter
|
||||
{
|
||||
TOBJ* _obj;
|
||||
Deleter( TOBJ* obj = (TOBJ*)NULL ): _obj( obj ) {}
|
||||
explicit Deleter( TOBJ* obj = (TOBJ*)NULL ): _obj( obj ) {}
|
||||
~Deleter() { delete _obj; _obj = 0; }
|
||||
TOBJ& operator*() const { return *_obj; }
|
||||
TOBJ* operator->() const { return _obj; }
|
||||
operator bool() const { return _obj; }
|
||||
private:
|
||||
Deleter( const Deleter& );
|
||||
};
|
||||
@ -113,6 +116,16 @@ struct SMESH_TLink: public NLink
|
||||
{ if ( first->GetID() < second->GetID() ) std::swap( first, second ); }
|
||||
const SMDS_MeshNode* node1() const { return first; }
|
||||
const SMDS_MeshNode* node2() const { return second; }
|
||||
|
||||
// methods for usage of SMESH_TLink as a hasher in NCollection maps
|
||||
static int HashCode(const SMESH_TLink& link, int aLimit)
|
||||
{
|
||||
return ::HashCode( link.node1()->GetID() + link.node2()->GetID(), aLimit );
|
||||
}
|
||||
static Standard_Boolean IsEqual(const SMESH_TLink& l1, const SMESH_TLink& l2)
|
||||
{
|
||||
return ( l1.node1() == l2.node1() && l1.node2() == l2.node2() );
|
||||
}
|
||||
};
|
||||
|
||||
//=======================================================================
|
||||
|
@ -98,7 +98,7 @@ namespace SMESH
|
||||
myStream << "[ ";
|
||||
for ( size_t i = 1; i <= theVarValue.myVals.size(); ++i )
|
||||
{
|
||||
if ( myVarsCounter < varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
|
||||
if ( myVarsCounter < (int)varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
|
||||
myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
|
||||
else
|
||||
myStream << theVarValue.myVals[i-1];
|
||||
@ -110,7 +110,7 @@ namespace SMESH
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( myVarsCounter < varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
|
||||
if ( myVarsCounter < (int)varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
|
||||
myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
|
||||
else
|
||||
myStream << theVarValue.myVals[0];
|
||||
@ -247,7 +247,7 @@ namespace SMESH
|
||||
else
|
||||
{
|
||||
theStream << "[ ";
|
||||
for (int i = 1; i <= theArray.length(); i++) {
|
||||
for (CORBA::ULong i = 1; i <= theArray.length(); i++) {
|
||||
theStream << theArray[i-1];
|
||||
if ( i < theArray.length() )
|
||||
theStream << ", ";
|
||||
@ -281,7 +281,7 @@ namespace SMESH
|
||||
TPythonDump::operator<<(const SMESH::string_array& theArray)
|
||||
{
|
||||
myStream << "[ ";
|
||||
for (int i = 1; i <= theArray.length(); i++) {
|
||||
for ( CORBA::ULong i = 1; i <= theArray.length(); i++ ) {
|
||||
myStream << "'" << theArray[i-1] << "'";
|
||||
if ( i < theArray.length() )
|
||||
myStream << ", ";
|
||||
@ -564,7 +564,7 @@ namespace SMESH
|
||||
for ( CORBA::ULong iP = 0; iP < aGRP.length(); ++iP )
|
||||
{
|
||||
const SMESH::FreeBorderPart& aPART = aGRP[ iP ];
|
||||
if ( 0 <= aPART.border && aPART.border < theCFB.borders.length() )
|
||||
if ( 0 <= aPART.border && aPART.border < (CORBA::Long)theCFB.borders.length() )
|
||||
{
|
||||
if ( iP ) myStream << ", ";
|
||||
const SMESH::FreeBorder& aBRD = theCFB.borders[ aPART.border ];
|
||||
|
@ -1204,7 +1204,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMEDorSAUV( const char* theFileNa
|
||||
aPythonDump << "], status) = " << this << "." << theCommandNameForPython << "(r'" << theFileNameForPython << "')";
|
||||
}
|
||||
// Dump creation of groups
|
||||
for ( int i = 0; i < aResult->length(); ++i )
|
||||
for ( CORBA::ULong i = 0; i < aResult->length(); ++i )
|
||||
SMESH::ListOfGroups_var groups = aResult[ i ]->GetGroups();
|
||||
|
||||
return aResult._retn();
|
||||
@ -1382,7 +1382,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName,
|
||||
aPythonDump << "], status) = " << this << ".CreateMeshesFromCGNS(r'" << theFileName << "')";
|
||||
}
|
||||
// Dump creation of groups
|
||||
for ( int i = 0; i < aResult->length(); ++i )
|
||||
for ( CORBA::ULong i = 0; i < aResult->length(); ++i )
|
||||
SMESH::ListOfGroups_var groups = aResult[ i ]->GetGroups();
|
||||
#else
|
||||
THROW_SALOME_CORBA_EXCEPTION("CGNS library is unavailable", SALOME::INTERNAL_ERROR);
|
||||
@ -1777,9 +1777,10 @@ SMESH::algo_error_array* SMESH_Gen_i::GetAlgoState( SMESH::SMESH_Mesh_ptr theMes
|
||||
*/
|
||||
//=============================================================================
|
||||
|
||||
SMESH::long_array* SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr theMainShapeObject,
|
||||
const SMESH::object_array& theListOfSubShapeObject )
|
||||
throw ( SALOME::SALOME_Exception )
|
||||
SMESH::long_array*
|
||||
SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr theMainShapeObject,
|
||||
const SMESH::object_array& theListOfSubShapeObject )
|
||||
throw ( SALOME::SALOME_Exception )
|
||||
{
|
||||
Unexpect aCatch(SALOME_SalomeException);
|
||||
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetSubShapesId" );
|
||||
@ -1788,58 +1789,57 @@ SMESH::long_array* SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr theMainSha
|
||||
set<int> setId;
|
||||
|
||||
if ( CORBA::is_nil( theMainShapeObject ) )
|
||||
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
|
||||
SALOME::BAD_PARAM );
|
||||
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
|
||||
|
||||
try
|
||||
{
|
||||
TopoDS_Shape myMainShape = GeomObjectToShape(theMainShapeObject);
|
||||
TopTools_IndexedMapOfShape myIndexToShape;
|
||||
TopExp::MapShapes(myMainShape,myIndexToShape);
|
||||
|
||||
for ( CORBA::ULong i = 0; i < theListOfSubShapeObject.length(); i++ )
|
||||
{
|
||||
TopoDS_Shape myMainShape = GeomObjectToShape(theMainShapeObject);
|
||||
TopTools_IndexedMapOfShape myIndexToShape;
|
||||
TopExp::MapShapes(myMainShape,myIndexToShape);
|
||||
GEOM::GEOM_Object_var aShapeObject
|
||||
= GEOM::GEOM_Object::_narrow(theListOfSubShapeObject[i]);
|
||||
if ( CORBA::is_nil( aShapeObject ) )
|
||||
THROW_SALOME_CORBA_EXCEPTION ("bad shape object reference", \
|
||||
SALOME::BAD_PARAM );
|
||||
|
||||
for ( int i = 0; i < theListOfSubShapeObject.length(); i++ )
|
||||
{
|
||||
GEOM::GEOM_Object_var aShapeObject
|
||||
= GEOM::GEOM_Object::_narrow(theListOfSubShapeObject[i]);
|
||||
if ( CORBA::is_nil( aShapeObject ) )
|
||||
THROW_SALOME_CORBA_EXCEPTION ("bad shape object reference", \
|
||||
SALOME::BAD_PARAM );
|
||||
|
||||
TopoDS_Shape locShape = GeomObjectToShape(aShapeObject);
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_FACE); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Face& F = TopoDS::Face(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(F));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(F));
|
||||
}
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_EDGE); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(E));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(E));
|
||||
}
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_VERTEX); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(V));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(V));
|
||||
}
|
||||
}
|
||||
shapesId->length(setId.size());
|
||||
set<int>::iterator iind;
|
||||
int i=0;
|
||||
for (iind = setId.begin(); iind != setId.end(); iind++)
|
||||
{
|
||||
if(MYDEBUG) SCRUTE((*iind));
|
||||
shapesId[i] = (*iind);
|
||||
if(MYDEBUG) SCRUTE(shapesId[i]);
|
||||
i++;
|
||||
}
|
||||
TopoDS_Shape locShape = GeomObjectToShape(aShapeObject);
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_FACE); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Face& F = TopoDS::Face(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(F));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(F));
|
||||
}
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_EDGE); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(E));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(E));
|
||||
}
|
||||
for (TopExp_Explorer exp(locShape,TopAbs_VERTEX); exp.More(); exp.Next())
|
||||
{
|
||||
const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current());
|
||||
setId.insert(myIndexToShape.FindIndex(V));
|
||||
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(V));
|
||||
}
|
||||
}
|
||||
shapesId->length(setId.size());
|
||||
set<int>::iterator iind;
|
||||
int i=0;
|
||||
for (iind = setId.begin(); iind != setId.end(); iind++)
|
||||
{
|
||||
if(MYDEBUG) SCRUTE((*iind));
|
||||
shapesId[i] = (*iind);
|
||||
if(MYDEBUG) SCRUTE(shapesId[i]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
catch (SALOME_Exception& S_ex)
|
||||
{
|
||||
THROW_SALOME_CORBA_EXCEPTION(S_ex.what(), SALOME::BAD_PARAM);
|
||||
}
|
||||
{
|
||||
THROW_SALOME_CORBA_EXCEPTION(S_ex.what(), SALOME::BAD_PARAM);
|
||||
}
|
||||
|
||||
return shapesId._retn();
|
||||
}
|
||||
@ -2172,13 +2172,13 @@ SMESH::long_array* SMESH_Gen_i::Evaluate(SMESH::SMESH_Mesh_ptr theMesh,
|
||||
MapShapeNbElemsItr anIt = aResMap.begin();
|
||||
for(; anIt!=aResMap.end(); anIt++) {
|
||||
const vector<int>& aVec = (*anIt).second;
|
||||
for(i = SMESH::Entity_Node; i < aVec.size(); i++) {
|
||||
for ( i = SMESH::Entity_Node; i < (int)aVec.size(); i++ ) {
|
||||
int nbElem = aVec[i];
|
||||
if ( nbElem < 0 ) // algo failed, check that it has reported a message
|
||||
{
|
||||
SMESH_subMesh* sm = anIt->first;
|
||||
SMESH_subMesh* sm = anIt->first;
|
||||
SMESH_ComputeErrorPtr& error = sm->GetComputeError();
|
||||
const SMESH_Algo* algo = sm->GetAlgo();
|
||||
const SMESH_Algo* algo = sm->GetAlgo();
|
||||
if ( (algo && !error.get()) || error->IsOK() )
|
||||
error.reset( new SMESH_ComputeError( COMPERR_ALGO_FAILED,"Failed to evaluate",algo));
|
||||
}
|
||||
@ -2434,7 +2434,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
std::vector<const SMDS_MeshNode*> aNodesArray;
|
||||
|
||||
// loop on sub-meshes
|
||||
for ( int i = 0; i < theMeshesArray.length(); i++)
|
||||
for ( CORBA::ULong i = 0; i < theMeshesArray.length(); i++)
|
||||
{
|
||||
if ( CORBA::is_nil( theMeshesArray[i] )) continue;
|
||||
SMESH::SMESH_Mesh_var anInitMesh = theMeshesArray[i]->GetMesh();
|
||||
@ -2443,8 +2443,8 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
if ( !anInitImpl ) continue;
|
||||
anInitImpl->Load();
|
||||
|
||||
::SMESH_Mesh& aInitLocMesh = anInitImpl->GetImpl();
|
||||
SMESHDS_Mesh* anInitMeshDS = aInitLocMesh.GetMeshDS();
|
||||
//::SMESH_Mesh& aInitLocMesh = anInitImpl->GetImpl();
|
||||
//SMESHDS_Mesh* anInitMeshDS = aInitLocMesh.GetMeshDS();
|
||||
|
||||
// remember nb of elements before filling in
|
||||
SMESH::long_array_var prevState = aNewMesh->GetNbElementsByType();
|
||||
@ -2517,7 +2517,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
const char* typeNames[] = { "All","Nodes","Edges","Faces","Volumes","0DElems","Balls" };
|
||||
{ // check of typeNames, compilation failure mains that NB_ELEMENT_TYPES changed:
|
||||
const int nbNames = sizeof(typeNames) / sizeof(const char*);
|
||||
int _assert[( nbNames == SMESH::NB_ELEMENT_TYPES ) ? 1 : -1 ];
|
||||
int _assert[( nbNames == SMESH::NB_ELEMENT_TYPES ) ? 1 : -1 ]; _assert[0]=0;
|
||||
}
|
||||
string groupName = "Gr";
|
||||
SALOMEDS::SObject_wrap aMeshSObj = ObjectToSObject( myCurrentStudy, theMeshesArray[i] );
|
||||
@ -2558,7 +2558,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
if ( SMESH_Mesh_i* anSrcImpl = SMESH::DownCast<SMESH_Mesh_i*>( theMeshesArray[i] ))
|
||||
{
|
||||
// copy orphan nodes
|
||||
if ( anSrcImpl->NbNodes() > nodesMap.size() )
|
||||
if ( anSrcImpl->NbNodes() > (int)nodesMap.size() )
|
||||
{
|
||||
SMDS_ElemIteratorPtr itNodes = anInitImpl->GetElements( theMeshesArray[i], SMESH::NODE );
|
||||
while ( itNodes->more() )
|
||||
@ -2580,12 +2580,12 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
|
||||
// loop on groups of a source mesh
|
||||
aListOfGroups = anSrcImpl->GetGroups();
|
||||
for (int iG = 0; iG < aListOfGroups->length(); iG++)
|
||||
for ( CORBA::ULong iG = 0; iG < aListOfGroups->length(); iG++ )
|
||||
{
|
||||
aGroup = aListOfGroups[iG];
|
||||
aGroupType = aGroup->GetType();
|
||||
aGroupName = aGroup->GetName();
|
||||
string aName = aGroupName.in();
|
||||
string aName = aGroupName.in();
|
||||
|
||||
// convert a list of IDs
|
||||
anNewIDs->length( aGroup->Size() );
|
||||
@ -2632,7 +2632,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
aNewGroups.front()->SetName(aNewGroupName.c_str());
|
||||
}
|
||||
char aGroupNum[128];
|
||||
sprintf(aGroupNum, "%u", aNewGroups.size()+1);
|
||||
sprintf(aGroupNum, "%u", (unsigned int)aNewGroups.size()+1);
|
||||
aNewGroupName = aName + "_" + string(aGroupNum);
|
||||
aNewGroup->SetName(aNewGroupName.c_str());
|
||||
aNewGroups.push_back(aNewGroup);
|
||||
@ -2656,7 +2656,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
|
||||
aPythonDump << aNewMesh << " = " << this << "."
|
||||
<< ( theCommonGroups ? "ConcatenateWithGroups" : "Concatenate" )
|
||||
<< "([";
|
||||
for ( int i = 0; i < theMeshesArray.length(); i++) {
|
||||
for ( CORBA::ULong i = 0; i < theMeshesArray.length(); i++) {
|
||||
if (i > 0) aPythonDump << ", ";
|
||||
aPythonDump << theMeshesArray[i];
|
||||
}
|
||||
@ -2747,13 +2747,13 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
|
||||
SMESH::long_array_var ids = meshPart->GetIDs();
|
||||
if ( srcElemTypes->length() == 1 && srcElemTypes[0] == SMESH::NODE ) // group of nodes
|
||||
{
|
||||
for (int i=0; i < ids->length(); i++)
|
||||
for ( CORBA::ULong i=0; i < ids->length(); i++ )
|
||||
if ( const SMDS_MeshElement * elem = srcMeshDS->FindNode( ids[i] ))
|
||||
srcElems.insert( elem );
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i=0; i < ids->length(); i++)
|
||||
for ( CORBA::ULong i = 0; i < ids->length(); i++ )
|
||||
if ( const SMDS_MeshElement * elem = srcMeshDS->FindElement( ids[i] ))
|
||||
srcElems.insert( elem );
|
||||
}
|
||||
@ -3044,7 +3044,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
|
||||
TPythonDump pd; // not to dump GetGroups()
|
||||
SMESH::ListOfGroups_var groups = myMesh->GetGroups();
|
||||
pd << ""; // to avoid optimizing pd out
|
||||
for ( int i = 0; i < groups->length(); ++i )
|
||||
for ( CORBA::ULong i = 0; i < groups->length(); ++i )
|
||||
{
|
||||
SMESH_GroupBase_i* grImpl = SMESH::DownCast<SMESH_GroupBase_i*>( groups[i]);
|
||||
if ( grImpl )
|
||||
@ -5047,8 +5047,8 @@ char* SMESH_Gen_i::getVersion()
|
||||
// Is used in the drag-n-drop functionality.
|
||||
//=================================================================================
|
||||
void SMESH_Gen_i::Move( const SMESH::sobject_list& what,
|
||||
SALOMEDS::SObject_ptr where,
|
||||
CORBA::Long row )
|
||||
SALOMEDS::SObject_ptr where,
|
||||
CORBA::Long row )
|
||||
{
|
||||
if ( CORBA::is_nil( where ) ) return;
|
||||
|
||||
@ -5070,7 +5070,7 @@ void SMESH_Gen_i::Move( const SMESH::sobject_list& what,
|
||||
}
|
||||
}
|
||||
|
||||
for ( int i = 0; i < what.length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < what.length(); i++ ) {
|
||||
SALOMEDS::SObject_var sobj = what[i];
|
||||
if ( CORBA::is_nil( sobj ) ) continue; // skip bad object
|
||||
// insert the object to the use case tree
|
||||
@ -5130,9 +5130,10 @@ SMESH::long_array* SMESH_Gen_i::GetInsideSphere( SMESH::SMESH_IDSource_ptr meshP
|
||||
CORBA::Double theX,
|
||||
CORBA::Double theY,
|
||||
CORBA::Double theZ,
|
||||
CORBA::Double theR) {
|
||||
CORBA::Double theR)
|
||||
{
|
||||
SMESH::long_array_var aResult = new SMESH::long_array();
|
||||
if(meshPart->_is_nil())
|
||||
if ( meshPart->_is_nil() )
|
||||
return aResult._retn();
|
||||
|
||||
// 1. Create geometrical object
|
||||
@ -5141,9 +5142,9 @@ SMESH::long_array* SMESH_Gen_i::GetInsideSphere( SMESH::SMESH_IDSource_ptr meshP
|
||||
|
||||
std::vector<long> lst =_GetInside(meshPart, theElemType, aShape);
|
||||
|
||||
if( lst.size() > 0 ) {
|
||||
if ( lst.size() > 0 ) {
|
||||
aResult->length( lst.size() );
|
||||
for ( long i = 0; i < lst.size(); i++ ) {
|
||||
for ( size_t i = 0; i < lst.size(); i++ ) {
|
||||
aResult[i] = lst[i];
|
||||
}
|
||||
}
|
||||
@ -5168,7 +5169,7 @@ SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart
|
||||
|
||||
if( lst.size() > 0 ) {
|
||||
aResult->length( lst.size() );
|
||||
for ( long i = 0; i < lst.size(); i++ ) {
|
||||
for ( size_t i = 0; i < lst.size(); i++ ) {
|
||||
aResult[i] = lst[i];
|
||||
}
|
||||
}
|
||||
@ -5199,7 +5200,7 @@ SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr mes
|
||||
|
||||
if( lst.size() > 0 ) {
|
||||
aResult->length( lst.size() );
|
||||
for ( long i = 0; i < lst.size(); i++ ) {
|
||||
for ( size_t i = 0; i < lst.size(); i++ ) {
|
||||
aResult[i] = lst[i];
|
||||
}
|
||||
}
|
||||
@ -5220,7 +5221,7 @@ SMESH::long_array* SMESH_Gen_i::GetInside( SMESH::SMESH_IDSource_ptr meshPart,
|
||||
|
||||
if( lst.size() > 0 ) {
|
||||
aResult->length( lst.size() );
|
||||
for ( long i = 0; i < lst.size(); i++ ) {
|
||||
for ( size_t i = 0; i < lst.size(); i++ ) {
|
||||
aResult[i] = lst[i];
|
||||
}
|
||||
}
|
||||
@ -5274,8 +5275,8 @@ std::vector<long> SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart,
|
||||
if ( !gsource->_is_nil() ) {
|
||||
if(theElemType == SMESH::NODE) {
|
||||
SMESH::long_array_var nodes = gsource->GetNodeIDs();
|
||||
for ( int i = 0; i < nodes->length(); ++i ) {
|
||||
if ( const SMDS_MeshNode* node = meshDS->FindNode( nodes[i] ) ) {
|
||||
for ( CORBA::ULong i = 0; i < nodes->length(); ++i ) {
|
||||
if ( const SMDS_MeshNode* node = meshDS->FindNode( nodes[i] )) {
|
||||
long anId = node->GetID();
|
||||
if ( anElementsOnShape->IsSatisfy( anId ) )
|
||||
res.push_back( anId );
|
||||
@ -5283,8 +5284,8 @@ std::vector<long> SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart,
|
||||
}
|
||||
} else if (gsource->GetType() == theElemType || theElemType == SMESH::ALL ) {
|
||||
SMESH::long_array_var elems = gsource->GetListOfID();
|
||||
for ( int i = 0; i < elems->length(); ++i ) {
|
||||
if ( const SMDS_MeshElement* elem = meshDS->FindElement( elems[i] ) ) {
|
||||
for ( CORBA::ULong i = 0; i < elems->length(); ++i ) {
|
||||
if ( const SMDS_MeshElement* elem = meshDS->FindElement( elems[i] )) {
|
||||
long anId = elem->GetID();
|
||||
if ( anElementsOnShape->IsSatisfy( anId ) )
|
||||
res.push_back( anId );
|
||||
@ -5295,7 +5296,7 @@ std::vector<long> SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart,
|
||||
SMESH::SMESH_subMesh_var smsource = SMESH::SMESH_subMesh::_narrow(meshPart);
|
||||
if ( !smsource->_is_nil() ) {
|
||||
SMESH::long_array_var elems = smsource->GetElementsByType( theElemType );
|
||||
for ( int i = 0; i < elems->length(); ++i ) {
|
||||
for ( CORBA::ULong i = 0; i < elems->length(); ++i ) {
|
||||
const SMDS_MeshElement* elem = ( theElemType == SMESH::NODE ) ? meshDS->FindNode( elems[i] ) : meshDS->FindElement( elems[i] );
|
||||
if (elem) {
|
||||
long anId = elem->GetID();
|
||||
|
@ -585,7 +585,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SALOMEDS::Study_ptr theStudy,
|
||||
// Publish global hypotheses
|
||||
|
||||
SMESH::ListOfHypothesis_var hypList = theMesh->GetHypothesisList( aShapeObject );
|
||||
for ( int i = 0; i < hypList->length(); i++ )
|
||||
for ( CORBA::ULong i = 0; i < hypList->length(); i++ )
|
||||
{
|
||||
SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( hypList[ i ]);
|
||||
SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp );
|
||||
@ -710,7 +710,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SALOMEDS::Study_ptr theS
|
||||
// Publish hypothesis
|
||||
|
||||
SMESH::ListOfHypothesis_var hypList = theMesh->GetHypothesisList( theShapeObject );
|
||||
for ( int i = 0; i < hypList->length(); i++ ) {
|
||||
for ( CORBA::ULong i = 0; i < hypList->length(); i++ ) {
|
||||
SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( hypList[ i ]);
|
||||
SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp );
|
||||
AddHypothesisToShape( theStudy, theMesh, theShapeObject, aHyp );
|
||||
@ -742,7 +742,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SALOMEDS::Study_ptr theStudy
|
||||
if ( aMeshSO->_is_nil())
|
||||
return SALOMEDS::SObject::_nil();
|
||||
}
|
||||
int aType = (int)theGroup->GetType();
|
||||
size_t aType = (int)theGroup->GetType();
|
||||
const char* aRootNames[] = {
|
||||
"Compound Groups", "Groups of Nodes", "Groups of Edges",
|
||||
"Groups of Faces", "Groups of Volumes", "Groups of 0D Elements",
|
||||
|
@ -62,6 +62,7 @@ SET(_link_LIBRARIES
|
||||
${CAS_TKAdvTools}
|
||||
${CAS_TKTopAlgo}
|
||||
${CAS_TKG3d}
|
||||
${CAS_TKOffset}
|
||||
${GEOM_GEOMUtils}
|
||||
SMESHimpl
|
||||
SMESHDS
|
||||
|
@ -703,7 +703,7 @@ namespace // internal utils
|
||||
void ElementBndBoxTree::buildChildrenData()
|
||||
{
|
||||
ElemTreeData* data = GetElemData();
|
||||
for ( int i = 0; i < _elementIDs.size(); ++i )
|
||||
for ( size_t i = 0; i < _elementIDs.size(); ++i )
|
||||
{
|
||||
const Bnd_B3d* elemBox = data->GetBox( _elementIDs[i] );
|
||||
for (int j = 0; j < 8; j++)
|
||||
@ -718,7 +718,7 @@ namespace // internal utils
|
||||
{
|
||||
ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j] );
|
||||
child->_elementIDs = data->myWorkIDs[ j ];
|
||||
if ( child->_elementIDs.size() <= theMaxNbElemsInLeaf )
|
||||
if ((int) child->_elementIDs.size() <= theMaxNbElemsInLeaf )
|
||||
child->myIsLeaf = true;
|
||||
data->myWorkIDs[ j ].clear();
|
||||
}
|
||||
@ -741,7 +741,7 @@ namespace // internal utils
|
||||
if ( isLeaf() )
|
||||
{
|
||||
ElemTreeData* data = GetElemData();
|
||||
for ( int i = 0; i < _elementIDs.size(); ++i )
|
||||
for ( size_t i = 0; i < _elementIDs.size(); ++i )
|
||||
if ( !data->GetBox( _elementIDs[i] )->IsOut( center, radius ))
|
||||
foundElemIDs.push_back( _elementIDs[i] );
|
||||
}
|
||||
@ -1197,7 +1197,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
|
||||
StdMeshers_Regular_1D::_value[ DEFLECTION_IND ] = myHyp->GetDeflection();
|
||||
|
||||
list< double > params;
|
||||
for ( int iE = 0; iE < myEdges.size(); ++iE )
|
||||
for ( size_t iE = 0; iE < myEdges.size(); ++iE )
|
||||
{
|
||||
EdgeData& eData = myEdges[ iE ];
|
||||
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
|
||||
@ -1243,7 +1243,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
|
||||
|
||||
triaSearcher->SetSizeByTrias( sizeTree, myHyp->GetDeflection() );
|
||||
|
||||
for ( int iE = 0; iE < myEdges.size(); ++iE )
|
||||
for ( size_t iE = 0; iE < myEdges.size(); ++iE )
|
||||
{
|
||||
EdgeData& eData = myEdges[ iE ];
|
||||
|
||||
@ -1260,7 +1260,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
|
||||
double maxSegSize = 0;
|
||||
|
||||
// get points to check distance to the face
|
||||
EdgeData::TPntIter pIt2 = eData.myPoints.begin(), pIt1 = pIt2++, pItLast;
|
||||
EdgeData::TPntIter pIt2 = eData.myPoints.begin(), pIt1 = pIt2++;
|
||||
maxSegSize = pIt1->mySegSize = Min( pIt1->mySegSize, sizeTree.GetSize( pIt1->myP ));
|
||||
for ( ; pIt2 != eData.myPoints.end(); )
|
||||
{
|
||||
@ -1290,7 +1290,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
|
||||
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
|
||||
sizeDecreased = false;
|
||||
const gp_Pnt* avoidPnt = & eData.First().myP;
|
||||
pItLast = --eData.myPoints.end();
|
||||
EdgeData::TPntIter pItLast = --eData.myPoints.end(), pItFirst = eData.myPoints.begin();
|
||||
for ( pIt1 = eData.myPoints.begin(); pIt1 != eData.myPoints.end(); )
|
||||
{
|
||||
double distToFace =
|
||||
@ -1308,19 +1308,16 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
|
||||
// << "\t SetSize " << allowedSize << " at "
|
||||
// << pIt1->myP.X() <<", "<< pIt1->myP.Y()<<", "<<pIt1->myP.Z() << endl;
|
||||
pIt2 = pIt1;
|
||||
if ( --pIt2 != eData.myPoints.end() && pIt2->mySegSize > allowedSize )
|
||||
if ( pIt1 != pItFirst && ( --pIt2 )->mySegSize > allowedSize )
|
||||
sizeTree.SetSize( eData.myC3d.Value( 0.6*pIt2->myU + 0.4*pIt1->myU ), allowedSize );
|
||||
pIt2 = pIt1;
|
||||
if ( ++pIt2 != eData.myPoints.end() && pIt2->mySegSize > allowedSize )
|
||||
if ( pIt1 != pItLast && ( ++pIt2 )->mySegSize > allowedSize )
|
||||
sizeTree.SetSize( eData.myC3d.Value( 0.6*pIt2->myU + 0.4*pIt1->myU ), allowedSize );
|
||||
}
|
||||
pIt1->mySegSize = allowedSize;
|
||||
}
|
||||
++pIt1;
|
||||
if ( pIt1 == pItLast )
|
||||
avoidPnt = & eData.Last().myP;
|
||||
else
|
||||
avoidPnt = NULL;
|
||||
avoidPnt = ( pIt1 == pItLast ) ? & eData.Last().myP : NULL;
|
||||
|
||||
if ( iLoop > 20 )
|
||||
{
|
||||
@ -1357,7 +1354,7 @@ bool AdaptiveAlgo::makeSegments()
|
||||
|
||||
vector< double > nbSegs, params;
|
||||
|
||||
for ( int iE = 0; iE < myEdges.size(); ++iE )
|
||||
for ( size_t iE = 0; iE < myEdges.size(); ++iE )
|
||||
{
|
||||
EdgeData& eData = myEdges[ iE ];
|
||||
|
||||
@ -1368,13 +1365,13 @@ bool AdaptiveAlgo::makeSegments()
|
||||
edgeMinSize = Min( edgeMinSize,
|
||||
Min( pIt1->mySegSize, mySizeTree->GetSize( pIt1->myP )));
|
||||
|
||||
const double f = eData.myC3d.FirstParameter(), l = eData.myC3d.LastParameter();
|
||||
const double f = eData.myC3d.FirstParameter(), l = eData.myC3d.LastParameter();
|
||||
const double parLen = l - f;
|
||||
const int nbDivSeg = 5;
|
||||
int nbDiv = Max( 1, int ( eData.myLength / edgeMinSize * nbDivSeg ));
|
||||
size_t nbDiv = Max( 1, int ( eData.myLength / edgeMinSize * nbDivSeg ));
|
||||
|
||||
// compute nb of segments
|
||||
bool toRecompute = true;
|
||||
bool toRecompute = true;
|
||||
double maxSegSize = 0;
|
||||
size_t i = 1, segCount;
|
||||
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
|
||||
@ -1432,7 +1429,7 @@ bool AdaptiveAlgo::makeSegments()
|
||||
}
|
||||
|
||||
// compute parameters of nodes
|
||||
int nbSegFinal = Max( 1, int(floor( nbSegs.back() + 0.5 )));
|
||||
size_t nbSegFinal = Max( 1, int(floor( nbSegs.back() + 0.5 )));
|
||||
double fact = nbSegFinal / nbSegs.back();
|
||||
if ( maxSegSize / fact > myHyp->GetMaxSize() )
|
||||
fact = ++nbSegFinal / nbSegs.back();
|
||||
|
@ -240,6 +240,7 @@ bool StdMeshers_CartesianParameters3D::GetFixedPoint(double p[3]) const
|
||||
if ( Precision::IsInfinite( _fixedPoint[0] ))
|
||||
return false;
|
||||
std::copy( &_fixedPoint[0], &_fixedPoint[0]+3, &p[0] );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -371,7 +372,7 @@ void StdMeshers_CartesianParameters3D::ComputeCoordinates(const double x0,
|
||||
// correct coords if a forced point is too close to a neighbor node
|
||||
if ( forced )
|
||||
{
|
||||
int iF = 0;
|
||||
size_t iF = 0;
|
||||
double minLen = ( x1 - x0 );
|
||||
for ( size_t i = 1; i < coords.size(); ++i )
|
||||
{
|
||||
@ -522,9 +523,8 @@ ComputeOptimalAxesDirs(const TopoDS_Shape& shape,
|
||||
const TCooTriple* norm1 = 0;
|
||||
double sumArea = 0;
|
||||
vector< const TCooTriple* > norms;
|
||||
for ( int iF = 1; norm2a != areasByNormal.end(); ++norm2a, ++iF )
|
||||
for ( size_t iF = 1; norm2a != areasByNormal.end(); ++norm2a, ++iF )
|
||||
{
|
||||
|
||||
if ( !norm1 || !sameDir( *norm1, norm2a->first ))
|
||||
{
|
||||
if ( !norms.empty() )
|
||||
|
@ -2731,7 +2731,7 @@ namespace
|
||||
chn.back()->IsLinked( quad._eIntNodes[ iP ]->_intPoint ))
|
||||
{
|
||||
chn.push_back( quad._eIntNodes[ iP ]);
|
||||
found = quad._eIntNodes[ iP ]->_usedInFace = &quad;
|
||||
found = ( quad._eIntNodes[ iP ]->_usedInFace = &quad );
|
||||
break;
|
||||
}
|
||||
} while ( found && ! chn.back()->IsLinked( n2->_intPoint ) );
|
||||
@ -2823,7 +2823,7 @@ namespace
|
||||
( !avoidFace || quad._eIntNodes[ iP ]->IsOnFace( avoidFace )))
|
||||
{
|
||||
chn.push_back( quad._eIntNodes[ iP ]);
|
||||
found = quad._eIntNodes[ iP ]->_usedInFace = &quad;
|
||||
found = ( quad._eIntNodes[ iP ]->_usedInFace = &quad );
|
||||
break;
|
||||
}
|
||||
} while ( found );
|
||||
|
@ -62,9 +62,7 @@
|
||||
#ifdef _DEBUG_
|
||||
// #define DEB_FACES
|
||||
// #define DEB_GRID
|
||||
// #define DUMP_VERT(msg,V) \
|
||||
// { TopoDS_Vertex v = V; gp_Pnt p = BRep_Tool::Pnt(v); \
|
||||
// cout << msg << "( "<< p.X()<<", "<<p.Y()<<", "<<p.Z()<<" )"<<endl;}
|
||||
// #define DUMP_VERT(msg,V) { TopoDS_Vertex v = V; gp_Pnt p = BRep_Tool::Pnt(v); cout << msg << "( "<< p.X()<<", "<<p.Y()<<", "<<p.Z()<<" )"<<endl; }
|
||||
#endif
|
||||
|
||||
#ifndef DUMP_VERT
|
||||
@ -1150,7 +1148,7 @@ bool _QuadFaceGrid::LoadGrid( SMESH_Mesh& mesh )
|
||||
TIDSortedElemSet emptySet, avoidSet;
|
||||
const SMDS_MeshElement* firstQuad = 0; // most left face above the last row of found nodes
|
||||
|
||||
int nbFoundNodes = myIndexer._xSize;
|
||||
size_t nbFoundNodes = myIndexer._xSize;
|
||||
while ( nbFoundNodes != myGrid.size() )
|
||||
{
|
||||
// first and last nodes of the last filled row of nodes
|
||||
|
@ -25,18 +25,18 @@
|
||||
// Module : SMESH
|
||||
//
|
||||
#include "StdMeshers_CompositeSegment_1D.hxx"
|
||||
#include "StdMeshers_FaceSide.hxx"
|
||||
#include "StdMeshers_AutomaticLength.hxx"
|
||||
|
||||
#include "SMESH_Gen.hxx"
|
||||
#include "SMESH_Mesh.hxx"
|
||||
#include "SMESH_HypoFilter.hxx"
|
||||
#include "SMESH_subMesh.hxx"
|
||||
#include "SMESH_subMeshEventListener.hxx"
|
||||
#include "SMESH_Comment.hxx"
|
||||
|
||||
#include "SMDS_MeshElement.hxx"
|
||||
#include "SMDS_MeshNode.hxx"
|
||||
#include "SMESH_Comment.hxx"
|
||||
#include "SMESH_Gen.hxx"
|
||||
#include "SMESH_HypoFilter.hxx"
|
||||
#include "SMESH_Mesh.hxx"
|
||||
#include "SMESH_TypeDefs.hxx"
|
||||
#include "SMESH_subMesh.hxx"
|
||||
#include "SMESH_subMeshEventListener.hxx"
|
||||
#include "StdMeshers_AutomaticLength.hxx"
|
||||
#include "StdMeshers_FaceSide.hxx"
|
||||
|
||||
#include "utilities.h"
|
||||
|
||||
@ -173,7 +173,7 @@ namespace {
|
||||
// check if an edge is a part of a complex side
|
||||
TopoDS_Face face;
|
||||
TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() );
|
||||
auto_ptr< StdMeshers_FaceSide > side
|
||||
SMESHUtils::Deleter< StdMeshers_FaceSide > side
|
||||
( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(),
|
||||
edge, face, false ));
|
||||
if ( side->NbEdges() > 1 && side->NbSegments() )
|
||||
@ -287,21 +287,21 @@ void StdMeshers_CompositeSegment_1D::SetEventListener(SMESH_subMesh* subMesh)
|
||||
// check if an edge is a part of a complex side
|
||||
TopoDS_Face face;
|
||||
TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() );
|
||||
auto_ptr< StdMeshers_FaceSide > side
|
||||
( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(),edge, face, false ));
|
||||
SMESHUtils::Deleter< StdMeshers_FaceSide > side
|
||||
( StdMeshers_CompositeSegment_1D::GetFaceSide( *subMesh->GetFather(), edge, face, false ));
|
||||
if ( side->NbEdges() > 1 ) { // complex
|
||||
|
||||
// set _alwaysComputed to vertices
|
||||
for ( int iE = 1; iE < side->NbEdges(); ++iE )
|
||||
{
|
||||
TopoDS_Vertex V = side->FirstVertex( iE );
|
||||
TopoDS_Vertex V = side->FirstVertex( iE );
|
||||
SMESH_subMesh* sm = side->GetMesh()->GetSubMesh( V );
|
||||
sm->SetIsAlwaysComputed( true );
|
||||
}
|
||||
}
|
||||
}
|
||||
// set listener that will remove _alwaysComputed from submeshes at algorithm change
|
||||
subMesh->SetEventListener( new VertexNodesRestoringListener(), 0, subMesh);
|
||||
subMesh->SetEventListener( new VertexNodesRestoringListener(), 0, subMesh );
|
||||
StdMeshers_Regular_1D::SetEventListener( subMesh );
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ bool StdMeshers_CompositeSegment_1D::Compute(SMESH_Mesh & aMesh,
|
||||
|
||||
// Get edges to be discretized as a whole
|
||||
TopoDS_Face nullFace;
|
||||
auto_ptr< StdMeshers_FaceSide > side( GetFaceSide(aMesh, edge, nullFace, true ));
|
||||
SMESHUtils::Deleter< StdMeshers_FaceSide > side( GetFaceSide(aMesh, edge, nullFace, true ));
|
||||
//side->dump("IN COMPOSITE SEG");
|
||||
|
||||
if ( side->NbEdges() < 2 )
|
||||
@ -384,7 +384,7 @@ bool StdMeshers_CompositeSegment_1D::Compute(SMESH_Mesh & aMesh,
|
||||
}
|
||||
|
||||
// Compute node parameters
|
||||
auto_ptr< BRepAdaptor_CompCurve > C3d ( side->GetCurve3d() );
|
||||
SMESHUtils::Deleter< BRepAdaptor_CompCurve > C3d ( side->GetCurve3d() );
|
||||
double f = C3d->FirstParameter(), l = C3d->LastParameter();
|
||||
list< double > params;
|
||||
if ( !computeInternalParameters ( aMesh, *C3d, side->Length(), f, l, params, false ))
|
||||
|
@ -504,8 +504,8 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
|
||||
{
|
||||
aCubeSide[i]._columns.resize( aCubeSide[i]._u2nodesMap.size() );
|
||||
|
||||
int iFwd = 0, iRev = aCubeSide[i]._columns.size()-1;
|
||||
int* pi = isReverse[i] ? &iRev : &iFwd;
|
||||
size_t iFwd = 0, iRev = aCubeSide[i]._columns.size()-1;
|
||||
size_t* pi = isReverse[i] ? &iRev : &iFwd;
|
||||
TParam2ColumnMap::iterator u2nn = aCubeSide[i]._u2nodesMap.begin();
|
||||
for ( ; iFwd < aCubeSide[i]._columns.size(); --iRev, ++iFwd, ++u2nn )
|
||||
aCubeSide[i]._columns[ *pi ].swap( u2nn->second );
|
||||
|
@ -125,14 +125,14 @@ namespace
|
||||
bool loaded=false)
|
||||
{
|
||||
vector<SMESH_Group*> okGroups;
|
||||
for ( int i = 0; i < groups.size(); ++i )
|
||||
for ( size_t i = 0; i < groups.size(); ++i )
|
||||
{
|
||||
try
|
||||
{
|
||||
// we expect SIGSEGV on a dead group
|
||||
OCC_CATCH_SIGNALS;
|
||||
SMESH_Group* okGroup = 0;
|
||||
map<int, SMESH_Mesh*>::iterator itm = itm = studyContext->mapMesh.begin();
|
||||
map<int, SMESH_Mesh*>::iterator itm = studyContext->mapMesh.begin();
|
||||
for ( ; !okGroup && itm != studyContext->mapMesh.end(); itm++)
|
||||
{
|
||||
SMESH_Mesh::GroupIteratorPtr gIt = itm->second->GetGroups();
|
||||
@ -174,7 +174,7 @@ namespace
|
||||
{
|
||||
int tgtID = resMapKey.second;
|
||||
SMESH_Mesh* tgtMesh = 0;
|
||||
map<int, SMESH_Mesh*>::iterator itm = itm = studyContext->mapMesh.begin();
|
||||
map<int, SMESH_Mesh*>::iterator itm = studyContext->mapMesh.begin();
|
||||
for ( ; !tgtMesh && itm != studyContext->mapMesh.end(); itm++)
|
||||
{
|
||||
tgtMesh = (*itm).second;
|
||||
@ -250,7 +250,7 @@ std::vector<SMESH_Mesh*> StdMeshers_ImportSource1D::GetSourceMeshes() const
|
||||
StudyContextStruct* studyContext = _gen->GetStudyContext(_studyId);
|
||||
for ( set<int>::iterator id = meshIDs.begin(); id != meshIDs.end(); ++id )
|
||||
{
|
||||
map<int, SMESH_Mesh*>::iterator itm = itm = studyContext->mapMesh.begin();
|
||||
map<int, SMESH_Mesh*>::iterator itm = studyContext->mapMesh.begin();
|
||||
for ( ; itm != studyContext->mapMesh.end(); itm++)
|
||||
{
|
||||
SMESH_Mesh* mesh = (*itm).second;
|
||||
@ -394,7 +394,7 @@ void StdMeshers_ImportSource1D::RestoreGroups(const std::vector<SMESH_Group*>& g
|
||||
_groups = groups;
|
||||
|
||||
_resultGroups.clear();
|
||||
int i = 0;
|
||||
size_t i = 0;
|
||||
while ( i < _resultGroupsStorage.size() )
|
||||
{
|
||||
int key1 = _resultGroupsStorage[i++];
|
||||
|
@ -79,23 +79,9 @@ using namespace std;
|
||||
#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
|
||||
#define CONT_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); continue; }
|
||||
#define SHOW_SHAPE(v,msg) \
|
||||
// { \
|
||||
// if ( (v).IsNull() ) cout << msg << " NULL SHAPE" << endl; \
|
||||
// else if ((v).ShapeType() == TopAbs_VERTEX) {\
|
||||
// gp_Pnt p = BRep_Tool::Pnt( TopoDS::Vertex( (v) ));\
|
||||
// cout<<msg<<" "<<shapeIndex((v))<<" ( "<<p.X()<<", "<<p.Y()<<", "<<p.Z()<<" )"<<endl;} \
|
||||
// else {\
|
||||
// cout << msg << " "; TopAbs::Print((v).ShapeType(),cout) <<" "<<shapeIndex((v))<<endl;}\
|
||||
// }
|
||||
// { show_shape((v),(msg)); }
|
||||
#define SHOW_LIST(msg,l) \
|
||||
// { \
|
||||
// cout << msg << " ";\
|
||||
// list< TopoDS_Edge >::const_iterator e = l.begin();\
|
||||
// for ( int i = 0; e != l.end(); ++e, ++i ) {\
|
||||
// cout << i << "V (" << TopExp::FirstVertex( *e, true ).TShape().operator->() << ") "\
|
||||
// << i << "E (" << e->TShape().operator->() << "); "; }\
|
||||
// cout << endl;\
|
||||
// }
|
||||
// { show_list((msg),(l)); }
|
||||
|
||||
namespace HERE = StdMeshers_ProjectionUtils;
|
||||
|
||||
@ -108,7 +94,24 @@ namespace {
|
||||
return max(theMeshDS[0]->ShapeToIndex(S), theMeshDS[1]->ShapeToIndex(S) );
|
||||
return long(S.TShape().operator->());
|
||||
}
|
||||
|
||||
void show_shape( TopoDS_Shape v, const char* msg ) // debug
|
||||
{
|
||||
if ( v.IsNull() ) cout << msg << " NULL SHAPE" << endl;
|
||||
else if (v.ShapeType() == TopAbs_VERTEX) {
|
||||
gp_Pnt p = BRep_Tool::Pnt( TopoDS::Vertex( v ));
|
||||
cout<<msg<<" "<<shapeIndex((v))<<" ( "<<p.X()<<", "<<p.Y()<<", "<<p.Z()<<" )"<<endl;}
|
||||
else {
|
||||
cout << msg << " "; TopAbs::Print((v).ShapeType(),cout) <<" "<<shapeIndex((v))<<endl;}
|
||||
}
|
||||
void show_list( const char* msg, const list< TopoDS_Edge >& l ) // debug
|
||||
{
|
||||
cout << msg << " ";
|
||||
list< TopoDS_Edge >::const_iterator e = l.begin();
|
||||
for ( int i = 0; e != l.end(); ++e, ++i ) {
|
||||
cout << i << "V (" << TopExp::FirstVertex( *e, true ).TShape().operator->() << ") "
|
||||
<< i << "E (" << e->TShape().operator->() << "); "; }
|
||||
cout << endl;
|
||||
}
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Write shape for debug purposes
|
||||
@ -2180,7 +2183,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face& face1,
|
||||
static_cast<const SMDS_EdgePosition*>(node->GetPosition());
|
||||
pos2nodes.insert( make_pair( pos->GetUParameter(), node ));
|
||||
}
|
||||
if ( pos2nodes.size() != edgeSM->NbNodes() )
|
||||
if ((int) pos2nodes.size() != edgeSM->NbNodes() )
|
||||
RETURN_BAD_RESULT("Equal params of nodes on edge "
|
||||
<< smDS->ShapeToIndex( edge ) << " of face " << is2 );
|
||||
}
|
||||
|
@ -423,15 +423,13 @@ namespace {
|
||||
TAssocTool::TNodeNodeMap& src2tgtNodes,
|
||||
bool& is1DComputed)
|
||||
{
|
||||
SMESHDS_Mesh* tgtMeshDS = tgtMesh->GetMeshDS();
|
||||
SMESHDS_Mesh* srcMeshDS = srcMesh->GetMeshDS();
|
||||
|
||||
src2tgtNodes.clear();
|
||||
|
||||
// get ordered src EDGEs
|
||||
TError err;
|
||||
srcWires = StdMeshers_FaceSide::GetFaceWires( srcFace, *srcMesh,/*skipMediumNodes=*/0, err);
|
||||
if ( err && !err->IsOK() || srcWires.empty() )
|
||||
if (( err && !err->IsOK() ) ||
|
||||
( srcWires.empty() ))
|
||||
return err;
|
||||
|
||||
SMESH_MesherHelper srcHelper( *srcMesh );
|
||||
@ -591,7 +589,7 @@ namespace {
|
||||
const double minSegLen = srcWires[iW]->Length() / totNbSeg;
|
||||
for ( int iE = 0; iE < srcWires[iW]->NbEdges(); ++iE )
|
||||
{
|
||||
int nbSeg = Max( 1, int( srcWires[iW]->EdgeLength( iE ) / minSegLen ));
|
||||
size_t nbSeg = Max( 1, int( srcWires[iW]->EdgeLength( iE ) / minSegLen ));
|
||||
double srcU = srcWires[iW]->FirstParameter( iE );
|
||||
double tgtU = tgtWires[iW]->FirstParameter( iE );
|
||||
double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg;
|
||||
@ -830,7 +828,7 @@ namespace {
|
||||
const double minSegLen = srcWires[iW]->Length() / totNbSeg;
|
||||
for ( int iE = 0; iE < srcWires[iW]->NbEdges(); ++iE )
|
||||
{
|
||||
int nbSeg = Max( 1, int( srcWires[iW]->EdgeLength( iE ) / minSegLen ));
|
||||
size_t nbSeg = Max( 1, int( srcWires[iW]->EdgeLength( iE ) / minSegLen ));
|
||||
double srcU = srcWires[iW]->FirstParameter( iE );
|
||||
double tgtU = tgtWires[iW]->FirstParameter( iE );
|
||||
double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg;
|
||||
@ -920,6 +918,7 @@ namespace {
|
||||
tgtMeshDS->SetNodeOnVertex( n, TopoDS::Vertex( tgtV ));
|
||||
break;
|
||||
}
|
||||
default:;
|
||||
}
|
||||
srcN_tgtN->second = n;
|
||||
}
|
||||
@ -952,7 +951,7 @@ namespace {
|
||||
{
|
||||
SMESH_Mesh * tgtMesh = tgtWires[0]->GetMesh();
|
||||
SMESH_Mesh * srcMesh = srcWires[0]->GetMesh();
|
||||
SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS();
|
||||
//SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS();
|
||||
SMESHDS_Mesh * srcMeshDS = srcMesh->GetMeshDS();
|
||||
|
||||
if ( srcWires[0]->NbEdges() != 4 )
|
||||
|
@ -548,7 +548,7 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection (const gp_Pnt& P,
|
||||
|
||||
//SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
|
||||
//cout<<" CheckIntersection: meshDS->NbFaces() = "<<meshDS->NbFaces()<<endl;
|
||||
bool res = false;
|
||||
bool res = false;
|
||||
double dist = RealLast(); // find intersection closest to the segment
|
||||
gp_Pnt Pres;
|
||||
|
||||
@ -556,9 +556,9 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection (const gp_Pnt& P,
|
||||
vector< const SMDS_MeshElement* > suspectElems;
|
||||
searcher->GetElementsNearLine( line, SMDSAbs_Face, suspectElems);
|
||||
|
||||
for ( int i = 0; i < suspectElems.size(); ++i )
|
||||
for ( size_t iF = 0; iF < suspectElems.size(); ++iF )
|
||||
{
|
||||
const SMDS_MeshElement* face = suspectElems[i];
|
||||
const SMDS_MeshElement* face = suspectElems[iF];
|
||||
if ( face == NotCheckedFace ) continue;
|
||||
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
|
||||
for ( int i = 0; i < face->NbCornerNodes(); ++i )
|
||||
@ -566,7 +566,7 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection (const gp_Pnt& P,
|
||||
if( HasIntersection(P, PC, Pres, aContour) ) {
|
||||
res = true;
|
||||
double tmp = PC.Distance(Pres);
|
||||
if(tmp<dist) {
|
||||
if ( tmp < dist ) {
|
||||
Pint = Pres;
|
||||
dist = tmp;
|
||||
}
|
||||
@ -986,25 +986,25 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
|
||||
vector< const SMDS_MeshElement* > suspectElems;
|
||||
searcher->GetElementsNearLine( line, SMDSAbs_Face, suspectElems);
|
||||
|
||||
for ( int iF = 0; iF < suspectElems.size(); ++iF ) {
|
||||
for ( size_t iF = 0; iF < suspectElems.size(); ++iF ) {
|
||||
const SMDS_MeshElement* F = suspectElems[iF];
|
||||
if(F==face) continue;
|
||||
if ( F == face ) continue;
|
||||
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
|
||||
for ( int i = 0; i < 4; ++i )
|
||||
aContour->Append( SMESH_TNodeXYZ( F->GetNode(i) ));
|
||||
gp_Pnt PPP;
|
||||
if( !volumes[0] && HasIntersection(Ptmp1, PC, PPP, aContour) ) {
|
||||
if ( !volumes[0] && HasIntersection( Ptmp1, PC, PPP, aContour )) {
|
||||
IsOK1 = true;
|
||||
double tmp = PC.Distance(PPP);
|
||||
if(tmp<dist1) {
|
||||
if ( tmp < dist1 ) {
|
||||
Pres1 = PPP;
|
||||
dist1 = tmp;
|
||||
}
|
||||
}
|
||||
if( !volumes[1] && HasIntersection(Ptmp2, PC, PPP, aContour) ) {
|
||||
if ( !volumes[1] && HasIntersection( Ptmp2, PC, PPP, aContour )) {
|
||||
IsOK2 = true;
|
||||
double tmp = PC.Distance(PPP);
|
||||
if(tmp<dist2) {
|
||||
if ( tmp < dist2 ) {
|
||||
Pres2 = PPP;
|
||||
dist2 = tmp;
|
||||
}
|
||||
@ -1044,7 +1044,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
|
||||
|
||||
gp_XYZ PCbest(0., 0., 0.); // pyramid peak
|
||||
int i = 1;
|
||||
for(; i<=4; i++) {
|
||||
for ( ; i <= 4; i++ ) {
|
||||
gp_Pnt Pbest = FindBestPoint(PN->Value(i), PN->Value(i+1), PC, VN->Value(i));
|
||||
PCbest += Pbest.XYZ();
|
||||
}
|
||||
@ -1074,10 +1074,10 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
|
||||
vector< const SMDS_MeshElement* > suspectElems;
|
||||
searcher->GetElementsNearLine( line, SMDSAbs_Face, suspectElems);
|
||||
|
||||
for ( int iF = 0; iF < suspectElems.size(); ++iF )
|
||||
for ( size_t iF = 0; iF < suspectElems.size(); ++iF )
|
||||
{
|
||||
const SMDS_MeshElement* F = suspectElems[iF];
|
||||
if(F==face) continue;
|
||||
if ( F == face ) continue;
|
||||
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
|
||||
int nbN = F->NbNodes() / ( F->IsQuadratic() ? 2 : 1 );
|
||||
for ( i = 0; i < nbN; ++i )
|
||||
@ -1162,7 +1162,8 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
|
||||
return true;
|
||||
|
||||
SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
|
||||
int i, j, k, myShapeID = myPyramids[0]->GetNode(4)->getshapeId();
|
||||
size_t i, j, k;
|
||||
int myShapeID = myPyramids[0]->GetNode(4)->getshapeId();
|
||||
|
||||
if ( myElemSearcher ) delete myElemSearcher;
|
||||
myElemSearcher = SMESH_MeshAlgos::GetElementSearcher( *meshDS );
|
||||
|
@ -598,7 +598,6 @@ bool StdMeshers_RadialPrism_3D::Evaluate(SMESH_Mesh& aMesh,
|
||||
|
||||
bool StdMeshers_RadialPrism_3D::IsApplicable( const TopoDS_Shape & aShape, bool toCheckAll )
|
||||
{
|
||||
bool isCurShellApp;
|
||||
int nbFoundSolids = 0;
|
||||
for (TopExp_Explorer exp( aShape, TopAbs_SOLID ); exp.More(); exp.Next(), ++nbFoundSolids )
|
||||
{
|
||||
|
@ -343,9 +343,9 @@ bool StdMeshers_Regular_1D::CheckHypothesis( SMESH_Mesh& aMesh,
|
||||
return ( aStatus == SMESH_Hypothesis::HYP_OK );
|
||||
}
|
||||
|
||||
static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last,
|
||||
double length, bool theReverse,
|
||||
int nbSeg, Function& func,
|
||||
static bool computeParamByFunc(Adaptor3d_Curve& C3d,
|
||||
double first, double last, double length,
|
||||
bool theReverse, int nbSeg, Function& func,
|
||||
list<double>& theParams)
|
||||
{
|
||||
// never do this way
|
||||
@ -359,31 +359,23 @@ static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last,
|
||||
int nbPnt = 1 + nbSeg;
|
||||
vector<double> x(nbPnt, 0.);
|
||||
|
||||
if (!buildDistribution(func, 0.0, 1.0, nbSeg, x, 1E-4))
|
||||
if ( !buildDistribution( func, 0.0, 1.0, nbSeg, x, 1E-4 ))
|
||||
return false;
|
||||
|
||||
MESSAGE( "Points:\n" );
|
||||
char buf[1024];
|
||||
for ( int i=0; i<=nbSeg; i++ )
|
||||
{
|
||||
sprintf( buf, "%f\n", float(x[i] ) );
|
||||
MESSAGE( buf );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// apply parameters in range [0,1] to the space of the curve
|
||||
double prevU = first;
|
||||
double sign = 1.;
|
||||
if (theReverse)
|
||||
double sign = 1.;
|
||||
if ( theReverse )
|
||||
{
|
||||
prevU = last;
|
||||
sign = -1.;
|
||||
sign = -1.;
|
||||
}
|
||||
for( int i = 1; i < nbSeg; i++ )
|
||||
|
||||
for ( int i = 1; i < nbSeg; i++ )
|
||||
{
|
||||
double curvLength = length * (x[i] - x[i-1]) * sign;
|
||||
GCPnts_AbscissaPoint Discret( C3d, curvLength, prevU );
|
||||
double tol = Min( Precision::Confusion(), curvLength / 100. );
|
||||
GCPnts_AbscissaPoint Discret( tol, C3d, curvLength, prevU );
|
||||
if ( !Discret.IsDone() )
|
||||
return false;
|
||||
double U = Discret.Parameter();
|
||||
|
@ -88,7 +88,7 @@ SMESH::double_array* StdMeshers_NumberOfSegments_i::BuildDistributionExpr( const
|
||||
SMESH::double_array_var aRes = new SMESH::double_array();
|
||||
const std::vector<double>& res = this->GetImpl()->BuildDistributionExpr( func, nbSeg, conv );
|
||||
aRes->length( res.size() );
|
||||
for (int i = 0; i < res.size(); i++)
|
||||
for (size_t i = 0; i < res.size(); i++)
|
||||
aRes[i] = res[i];
|
||||
return aRes._retn();
|
||||
}
|
||||
@ -98,23 +98,24 @@ SMESH::double_array* StdMeshers_NumberOfSegments_i::BuildDistributionExpr( const
|
||||
}
|
||||
}
|
||||
|
||||
SMESH::double_array* StdMeshers_NumberOfSegments_i::BuildDistributionTab( const SMESH::double_array& func,
|
||||
CORBA::Long nbSeg,
|
||||
CORBA::Long conv )
|
||||
SMESH::double_array*
|
||||
StdMeshers_NumberOfSegments_i::BuildDistributionTab( const SMESH::double_array& func,
|
||||
CORBA::Long nbSeg,
|
||||
CORBA::Long conv )
|
||||
throw ( SALOME::SALOME_Exception )
|
||||
{
|
||||
ASSERT( myBaseImpl );
|
||||
|
||||
std::vector<double> tbl( func.length() );
|
||||
for (int i = 0; i < func.length(); i++)
|
||||
for ( size_t i = 0; i < tbl.size(); i++ )
|
||||
tbl[i] = func[i];
|
||||
|
||||
try
|
||||
{
|
||||
SMESH::double_array_var aRes = new SMESH::double_array();
|
||||
SMESH::double_array_var aRes = new SMESH::double_array();
|
||||
const std::vector<double>& res = this->GetImpl()->BuildDistributionTab( tbl, nbSeg, conv );
|
||||
aRes->length( res.size() );
|
||||
for (int i = 0; i < res.size(); i++)
|
||||
for (size_t i = 0; i < res.size(); i++)
|
||||
aRes[i] = res[i];
|
||||
return aRes._retn();
|
||||
}
|
||||
@ -251,7 +252,7 @@ SMESH::long_array* StdMeshers_NumberOfSegments_i::GetReversedEdges()
|
||||
SMESH::long_array_var anArray = new SMESH::long_array;
|
||||
std::vector<int> ids = this->GetImpl()->GetReversedEdges();
|
||||
anArray->length( ids.size() );
|
||||
for ( CORBA::Long i = 0; i < ids.size(); i++)
|
||||
for ( size_t i = 0; i < ids.size(); i++)
|
||||
anArray [ i ] = ids [ i ];
|
||||
|
||||
return anArray._retn();
|
||||
@ -348,7 +349,7 @@ void StdMeshers_NumberOfSegments_i::SetTableFunction(const SMESH::double_array&
|
||||
{
|
||||
ASSERT( myBaseImpl );
|
||||
std::vector<double> tbl( table.length() );
|
||||
for (int i = 0; i < table.length(); i++)
|
||||
for ( CORBA::ULong i = 0; i < table.length(); i++)
|
||||
tbl[i] = table[i];
|
||||
try {
|
||||
this->GetImpl()->SetTableFunction( tbl );
|
||||
@ -375,12 +376,11 @@ SMESH::double_array* StdMeshers_NumberOfSegments_i::GetTableFunction()
|
||||
tbl = &this->GetImpl()->GetTableFunction();
|
||||
}
|
||||
catch ( SALOME_Exception& S_ex ) {
|
||||
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(),
|
||||
SALOME::BAD_PARAM );
|
||||
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
|
||||
}
|
||||
SMESH::double_array_var aRes = new SMESH::double_array();
|
||||
aRes->length(tbl->size());
|
||||
for (int i = 0; i < tbl->size(); i++)
|
||||
for ( size_t i = 0; i < tbl->size(); i++ )
|
||||
aRes[i] = (*tbl)[i];
|
||||
return aRes._retn();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user