IPAL52980: Wire Discretization with Table density fails

(StdMeshers_Regular_1D.cxx)

+ Compilation warnings

+ WIN specific errors
   (StdMeshers_Adaptive1D.cxx)
This commit is contained in:
eap 2015-11-19 14:29:23 +03:00
parent 70e7642a8c
commit 831ca6c828
37 changed files with 1508 additions and 1474 deletions

View File

@ -1,13 +1,17 @@
# Combine filters with Criterion structures using of "criteria". # Combine several criteria into a filter
# create mesh # create mesh
from SMESH_mechanic import * from SMESH_mechanic import *
# get all the quadrangle faces ... # get all the quadrangle faces ...
criterion1 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE, SMESH.FT_LogicalAND) 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) 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)

View File

@ -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" <li>The main way is to \subpage constructing_meshes_page "construct the mesh"
on the basis of the geometrical shape produced in the Geometry on the basis of the geometrical shape produced in the Geometry
module. This way implies selection of 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 - <em>meshing parameters</em> (\ref
basic_meshing_algos_page "meshing algorithms" and basic_meshing_algos_page "meshing algorithms" and
characteristics (e.g. element size) of a 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" Construction of \subpage constructing_submeshes_page "sub-meshes"
allows to discretize some sub-shapes of the main shape, for example a face, 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 Meshing parameters of meshes and sub-meshes can be
\subpage editing_meshes_page "edited". (Upon edition only mesh entities \subpage editing_meshes_page "edited". (Upon edition only mesh entities
generated using changed meshing parameters are removed and will be 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 (and exported to) the file in MED, UNV, STL, CGNS, DAT, GMF and
SAUVE formats. SAUVE formats.
</li> </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 importing_exporting_meshes_page "imported" or manually created. To
setup the meshing parameters of a mesh not based on a geometry, just setup the meshing parameters of a mesh not based on a geometry, just
invoke \ref editing_meshes_page "Edit mesh / sub-mesh" command on invoke \ref editing_meshes_page "Edit mesh / sub-mesh" command on

View File

@ -10,7 +10,7 @@ or edit mesh groups, remove elements from the mesh object, control
mesh quality by different parameters, etc. mesh quality by different parameters, etc.
Several filtering criteria can be combined together by using logical 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. be reverted using logical operator \a NOT.
Mesh filters can use the functionality of mesh quality controls to filter Mesh filters can use the functionality of mesh quality controls to filter
@ -416,9 +416,9 @@ entity type.
\tui_script{filters_ex35.py} \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 : Example :

View File

@ -44,6 +44,7 @@
#include <Geom_CylindricalSurface.hxx> #include <Geom_CylindricalSurface.hxx>
#include <Geom_Plane.hxx> #include <Geom_Plane.hxx>
#include <Geom_Surface.hxx> #include <Geom_Surface.hxx>
#include <NCollection_Map.hxx>
#include <Precision.hxx> #include <Precision.hxx>
#include <TColStd_MapIteratorOfMapOfInteger.hxx> #include <TColStd_MapIteratorOfMapOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx> #include <TColStd_MapOfInteger.hxx>
@ -521,148 +522,164 @@ double MaxElementLength3D::GetValue( long theElementId )
if( GetPoints( theElementId, P ) ) { if( GetPoints( theElementId, P ) ) {
double aVal = 0; double aVal = 0;
const SMDS_MeshElement* aElem = myMesh->FindElement( theElementId ); const SMDS_MeshElement* aElem = myMesh->FindElement( theElementId );
SMDSAbs_ElementType aType = aElem->GetType(); SMDSAbs_EntityType aType = aElem->GetEntityType();
int len = P.size(); int len = P.size();
switch( aType ) { switch ( aType ) {
case SMDSAbs_Volume: case SMDSEntity_Tetra: { // tetras
if( len == 4 ) { // tetras double L1 = getDistance(P( 1 ),P( 2 ));
double L1 = getDistance(P( 1 ),P( 2 )); double L2 = getDistance(P( 2 ),P( 3 ));
double L2 = getDistance(P( 2 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 1 ));
double L3 = getDistance(P( 3 ),P( 1 )); double L4 = getDistance(P( 1 ),P( 4 ));
double L4 = getDistance(P( 1 ),P( 4 )); double L5 = getDistance(P( 2 ),P( 4 ));
double L5 = getDistance(P( 2 ),P( 4 )); double L6 = getDistance(P( 3 ),P( 4 ));
double L6 = getDistance(P( 3 ),P( 4 )); aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); break;
break; }
} case SMDSEntity_Pyramid: { // pyramids
else if( len == 5 ) { // pyramids double L1 = getDistance(P( 1 ),P( 2 ));
double L1 = getDistance(P( 1 ),P( 2 )); double L2 = getDistance(P( 2 ),P( 3 ));
double L2 = getDistance(P( 2 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 4 ));
double L3 = getDistance(P( 3 ),P( 4 )); double L4 = getDistance(P( 4 ),P( 1 ));
double L4 = getDistance(P( 4 ),P( 1 )); double L5 = getDistance(P( 1 ),P( 5 ));
double L5 = getDistance(P( 1 ),P( 5 )); double L6 = getDistance(P( 2 ),P( 5 ));
double L6 = getDistance(P( 2 ),P( 5 )); double L7 = getDistance(P( 3 ),P( 5 ));
double L7 = getDistance(P( 3 ),P( 5 )); double L8 = getDistance(P( 4 ),P( 5 ));
double L8 = getDistance(P( 4 ),P( 5 )); aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); aVal = Max(aVal,Max(L7,L8));
aVal = Max(aVal,Max(L7,L8)); break;
break; }
} case SMDSEntity_Penta: { // pentas
else if( len == 6 ) { // pentas double L1 = getDistance(P( 1 ),P( 2 ));
double L1 = getDistance(P( 1 ),P( 2 )); double L2 = getDistance(P( 2 ),P( 3 ));
double L2 = getDistance(P( 2 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 1 ));
double L3 = getDistance(P( 3 ),P( 1 )); double L4 = getDistance(P( 4 ),P( 5 ));
double L4 = getDistance(P( 4 ),P( 5 )); double L5 = getDistance(P( 5 ),P( 6 ));
double L5 = getDistance(P( 5 ),P( 6 )); double L6 = getDistance(P( 6 ),P( 4 ));
double L6 = getDistance(P( 6 ),P( 4 )); double L7 = getDistance(P( 1 ),P( 4 ));
double L7 = getDistance(P( 1 ),P( 4 )); double L8 = getDistance(P( 2 ),P( 5 ));
double L8 = getDistance(P( 2 ),P( 5 )); double L9 = getDistance(P( 3 ),P( 6 ));
double L9 = getDistance(P( 3 ),P( 6 )); aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); aVal = Max(aVal,Max(Max(L7,L8),L9));
aVal = Max(aVal,Max(Max(L7,L8),L9)); break;
break; }
} case SMDSEntity_Hexa: { // hexas
else if( len == 8 ) { // hexas double L1 = getDistance(P( 1 ),P( 2 ));
double L1 = getDistance(P( 1 ),P( 2 )); double L2 = getDistance(P( 2 ),P( 3 ));
double L2 = getDistance(P( 2 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 4 ));
double L3 = getDistance(P( 3 ),P( 4 )); double L4 = getDistance(P( 4 ),P( 1 ));
double L4 = getDistance(P( 4 ),P( 1 )); double L5 = getDistance(P( 5 ),P( 6 ));
double L5 = getDistance(P( 5 ),P( 6 )); double L6 = getDistance(P( 6 ),P( 7 ));
double L6 = getDistance(P( 6 ),P( 7 )); double L7 = getDistance(P( 7 ),P( 8 ));
double L7 = getDistance(P( 7 ),P( 8 )); double L8 = getDistance(P( 8 ),P( 5 ));
double L8 = getDistance(P( 8 ),P( 5 )); double L9 = getDistance(P( 1 ),P( 5 ));
double L9 = getDistance(P( 1 ),P( 5 )); double L10= getDistance(P( 2 ),P( 6 ));
double L10= getDistance(P( 2 ),P( 6 )); double L11= getDistance(P( 3 ),P( 7 ));
double L11= getDistance(P( 3 ),P( 7 )); double L12= getDistance(P( 4 ),P( 8 ));
double L12= getDistance(P( 4 ),P( 8 )); double D1 = getDistance(P( 1 ),P( 7 ));
double D1 = getDistance(P( 1 ),P( 7 )); double D2 = getDistance(P( 2 ),P( 8 ));
double D2 = getDistance(P( 2 ),P( 8 )); double D3 = getDistance(P( 3 ),P( 5 ));
double D3 = getDistance(P( 3 ),P( 5 )); double D4 = getDistance(P( 4 ),P( 6 ));
double D4 = getDistance(P( 4 ),P( 6 )); aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
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(Max(L7,L8),Max(L9,L10))); aVal = Max(aVal,Max(L11,L12));
aVal = Max(aVal,Max(L11,L12)); aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4))); break;
break; }
} case SMDSEntity_Hexagonal_Prism: { // hexagonal prism
else if( len == 12 ) { // hexagonal prism for ( int i1 = 1; i1 < 12; ++i1 )
for ( int i1 = 1; i1 < 12; ++i1 ) for ( int i2 = i1+1; i1 <= 12; ++i1 )
for ( int i2 = i1+1; i1 <= 12; ++i1 ) aVal = Max( aVal, getDistance(P( i1 ),P( i2 )));
aVal = Max( aVal, getDistance(P( i1 ),P( i2 ))); break;
break; }
} case SMDSEntity_Quad_Tetra: { // quadratic tetras
else if( len == 10 ) { // quadratic tetras double L1 = getDistance(P( 1 ),P( 5 )) + getDistance(P( 5 ),P( 2 ));
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 L2 = getDistance(P( 2 ),P( 6 )) + getDistance(P( 6 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 7 )) + getDistance(P( 7 ),P( 1 ));
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 L4 = getDistance(P( 1 ),P( 8 )) + getDistance(P( 8 ),P( 4 )); double L5 = getDistance(P( 2 ),P( 9 )) + getDistance(P( 9 ),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 ));
double L6 = getDistance(P( 3 ),P( 10 )) + getDistance(P( 10 ),P( 4 )); aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6));
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); break;
break; }
} case SMDSEntity_Quad_Pyramid: { // quadratic pyramids
else if( len == 13 ) { // quadratic pyramids double L1 = getDistance(P( 1 ),P( 6 )) + getDistance(P( 6 ),P( 2 ));
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 L2 = getDistance(P( 2 ),P( 7 )) + getDistance(P( 7 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 8 )) + getDistance(P( 8 ),P( 4 ));
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 L4 = getDistance(P( 4 ),P( 9 )) + getDistance(P( 9 ),P( 1 )); double L5 = getDistance(P( 1 ),P( 10 )) + getDistance(P( 10 ),P( 5 ));
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 L6 = getDistance(P( 2 ),P( 11 )) + getDistance(P( 11 ),P( 5 )); double L7 = getDistance(P( 3 ),P( 12 )) + getDistance(P( 12 ),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 ));
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(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); aVal = Max(aVal,Max(L7,L8));
aVal = Max(aVal,Max(L7,L8)); break;
break; }
} case SMDSEntity_Quad_Penta: { // quadratic pentas
else if( len == 15 ) { // quadratic pentas double L1 = getDistance(P( 1 ),P( 7 )) + getDistance(P( 7 ),P( 2 ));
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 L2 = getDistance(P( 2 ),P( 8 )) + getDistance(P( 8 ),P( 3 )); double L3 = getDistance(P( 3 ),P( 9 )) + getDistance(P( 9 ),P( 1 ));
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 L4 = getDistance(P( 4 ),P( 10 )) + getDistance(P( 10 ),P( 5 )); double L5 = getDistance(P( 5 ),P( 11 )) + getDistance(P( 11 ),P( 6 ));
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 L6 = getDistance(P( 6 ),P( 12 )) + getDistance(P( 12 ),P( 4 )); double L7 = getDistance(P( 1 ),P( 13 )) + getDistance(P( 13 ),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 L8 = getDistance(P( 2 ),P( 14 )) + getDistance(P( 14 ),P( 5 )); double L9 = getDistance(P( 3 ),P( 15 )) + getDistance(P( 15 ),P( 6 ));
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(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); aVal = Max(aVal,Max(Max(L7,L8),L9));
aVal = Max(aVal,Max(Max(L7,L8),L9)); break;
break; }
} case SMDSEntity_Quad_Hexa:
else if( len == 20 || len == 27 ) { // quadratic hexas case SMDSEntity_TriQuad_Hexa: { // quadratic hexas
double L1 = getDistance(P( 1 ),P( 9 )) + getDistance(P( 9 ),P( 2 )); 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 L2 = getDistance(P( 2 ),P( 10 )) + getDistance(P( 10 ),P( 3 ));
double L3 = getDistance(P( 3 ),P( 11 )) + getDistance(P( 11 ),P( 4 )); 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 L4 = getDistance(P( 4 ),P( 12 )) + getDistance(P( 12 ),P( 1 ));
double L5 = getDistance(P( 5 ),P( 13 )) + getDistance(P( 13 ),P( 6 )); 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 L6 = getDistance(P( 6 ),P( 14 )) + getDistance(P( 14 ),P( 7 ));
double L7 = getDistance(P( 7 ),P( 15 )) + getDistance(P( 15 ),P( 8 )); 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 L8 = getDistance(P( 8 ),P( 16 )) + getDistance(P( 16 ),P( 5 ));
double L9 = getDistance(P( 1 ),P( 17 )) + getDistance(P( 17 ),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 L10= getDistance(P( 2 ),P( 18 )) + getDistance(P( 18 ),P( 6 ));
double L11= getDistance(P( 3 ),P( 19 )) + getDistance(P( 19 ),P( 7 )); 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 L12= getDistance(P( 4 ),P( 20 )) + getDistance(P( 20 ),P( 8 ));
double D1 = getDistance(P( 1 ),P( 7 )); double D1 = getDistance(P( 1 ),P( 7 ));
double D2 = getDistance(P( 2 ),P( 8 )); double D2 = getDistance(P( 2 ),P( 8 ));
double D3 = getDistance(P( 3 ),P( 5 )); double D3 = getDistance(P( 3 ),P( 5 ));
double D4 = getDistance(P( 4 ),P( 6 )); double D4 = getDistance(P( 4 ),P( 6 ));
aVal = Max(Max(Max(L1,L2),Max(L3,L4)),Max(L5,L6)); 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(Max(L7,L8),Max(L9,L10)));
aVal = Max(aVal,Max(L11,L12)); aVal = Max(aVal,Max(L11,L12));
aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4))); aVal = Max(aVal,Max(Max(D1,D2),Max(D3,D4)));
break; break;
} }
else if( len > 1 && aElem->IsPoly() ) { // polys case SMDSEntity_Quad_Polyhedra:
// get the maximum distance between all pairs of nodes case SMDSEntity_Polyhedra: { // polys
for( int i = 1; i <= len; i++ ) { // get the maximum distance between all pairs of nodes
for( int j = 1; j <= len; j++ ) { for( int i = 1; i <= len; i++ ) {
if( j > i ) { // optimization of the loop for( int j = 1; j <= len; j++ ) {
double D = getDistance( P(i), P(j) ); if( j > i ) { // optimization of the loop
aVal = Max( aVal, D ); 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 ) if( myPrecision >= 0 )
{ {
@ -701,7 +718,7 @@ double MinimumAngle::GetValue( const TSequenceOfXYZ& P )
aMin = getAngle(P( P.size() ), P( 1 ), P( 2 )); aMin = getAngle(P( P.size() ), P( 1 ), P( 2 ));
aMin = Min(aMin,getAngle(P( P.size()-1 ), P( P.size() ), P( 1 ))); 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 ) ); double A0 = getAngle( P( i-1 ), P( i ), P( i+1 ) );
aMin = Min(aMin,A0); aMin = Min(aMin,A0);
@ -1476,10 +1493,10 @@ double Area::GetValue( const TSequenceOfXYZ& P )
gp_Vec aVec2( P(3) - P(1) ); gp_Vec aVec2( P(3) - P(1) );
gp_Vec SumVec = aVec1 ^ aVec2; 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 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; gp_Vec tmp = aVec1 ^ aVec2;
SumVec.Add(tmp); 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() CoplanarFaces::CoplanarFaces()
: myFaceID(0), myToler(0) : myFaceID(0), myToler(0)
{ {
@ -3005,7 +3032,7 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
{ {
// Build a set of coplanar face ids // Build a set of coplanar face ids
myCoplanarIDs.clear(); myCoplanarIDs.Clear();
if ( !myMeshModifTracer.GetMesh() || !myFaceID || !myToler ) if ( !myMeshModifTracer.GetMesh() || !myFaceID || !myToler )
return; return;
@ -3019,8 +3046,8 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
if (!normOK) if (!normOK)
return; return;
const double radianTol = myToler * M_PI / 180.; const double cosTol2 = Cos( myToler ) * Cos( myToler );
std::set< SMESH_TLink > checkedLinks; NCollection_Map< SMESH_TLink, SMESH_TLink > checkedLinks;
std::list< pair< const SMDS_MeshElement*, gp_Vec > > faceQueue; std::list< pair< const SMDS_MeshElement*, gp_Vec > > faceQueue;
faceQueue.push_back( make_pair( face, myNorm )); 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* n1 = face->GetNode( i );
const SMDS_MeshNode* n2 = face->GetNode(( i+1 )%nbN); 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; continue;
SMDS_ElemIteratorPtr fIt = n1->GetInverseElementIterator(SMDSAbs_Face); SMDS_ElemIteratorPtr fIt = n1->GetInverseElementIterator(SMDSAbs_Face);
while ( fIt->more() ) while ( fIt->more() )
@ -3043,9 +3070,9 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
if ( f->GetNodeIndex( n2 ) > -1 ) if ( f->GetNodeIndex( n2 ) > -1 )
{ {
gp_Vec norm = getNormale( static_cast<const SMDS_MeshFace*>(f), &normOK ); 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 )); faceQueue.push_back( make_pair( f, norm ));
} }
} }
@ -3056,7 +3083,7 @@ void CoplanarFaces::SetMesh( const SMDS_Mesh* theMesh )
} }
bool CoplanarFaces::IsSatisfy( long theElementId ) bool CoplanarFaces::IsSatisfy( long theElementId )
{ {
return myCoplanarIDs.count( theElementId ); return myCoplanarIDs.Contains( theElementId );
} }
/* /*
@ -3667,7 +3694,7 @@ bool ManifoldPart::process()
myMapIds.Add( aFaceId ); myMapIds.Add( aFaceId );
} }
if ( fi == ( myAllFacePtr.size() - 1 ) ) if ( fi == int( myAllFacePtr.size() - 1 ))
fi = 0; fi = 0;
} // end run on vector of faces } // end run on vector of faces
return !myMapIds.IsEmpty(); 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_FACE : return ( IsContains( myMeshDS,myShape,aNode,TopAbs_FACE ));
case SMDS_TOP_3DSPACE: return ( IsContains( myMeshDS,myShape,aNode,TopAbs_SOLID ) || case SMDS_TOP_3DSPACE: return ( IsContains( myMeshDS,myShape,aNode,TopAbs_SOLID ) ||
IsContains( myMeshDS,myShape,aNode,TopAbs_SHELL )); 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_Face : return ( IsContains( myMeshDS,myShape,anElem,TopAbs_FACE ));
case SMDSAbs_Volume: return ( IsContains( myMeshDS,myShape,anElem,TopAbs_SOLID )|| case SMDSAbs_Volume: return ( IsContains( myMeshDS,myShape,anElem,TopAbs_SOLID )||
IsContains( myMeshDS,myShape,anElem,TopAbs_SHELL )); IsContains( myMeshDS,myShape,anElem,TopAbs_SHELL ));
default:;
} }
} }
} }

View File

@ -1088,7 +1088,7 @@ namespace SMESH{
TMeshModifTracer myMeshModifTracer; TMeshModifTracer myMeshModifTracer;
long myFaceID; long myFaceID;
double myToler; double myToler;
std::set< long > myCoplanarIDs; TColStd_MapOfInteger myCoplanarIDs;
}; };
typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr; typedef boost::shared_ptr<CoplanarFaces> CoplanarFacesPtr;

View File

@ -407,7 +407,7 @@ Driver_Mesh::Status DriverGMF_Read::Perform()
{ {
// get ids of existing groups // get ids of existing groups
std::set< int > groupIDs; 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(); std::set<SMESHDS_GroupBase*>::const_iterator grIter = groups.begin();
for ( ; grIter != groups.end(); ++grIter ) for ( ; grIter != groups.end(); ++grIter )
groupIDs.insert( (*grIter)->GetID() ); groupIDs.insert( (*grIter)->GetID() );

View File

@ -296,19 +296,19 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
SMDSAbs_EntityType smdsEntity; SMDSAbs_EntityType smdsEntity;
std::string entity = groupName.substr( pos + strlen("_required_")); std::string entity = groupName.substr( pos + strlen("_required_"));
if ( entity == "Vertices" ) { if ( entity == "Vertices" ) {
gmfKwd = GmfRequiredVertices; gmfKwd = GmfRequiredVertices;
smdsEntity = SMDSEntity_Node; smdsEntity = SMDSEntity_Node;
} }
else if ( entity == "Edges" ) { else if ( entity == "Edges" ) {
gmfKwd = GmfRequiredEdges; gmfKwd = GmfRequiredEdges;
smdsEntity = SMDSEntity_Edge; smdsEntity = SMDSEntity_Edge;
} }
else if ( entity == "Triangles" ) { else if ( entity == "Triangles" ) {
gmfKwd = GmfRequiredTriangles; gmfKwd = GmfRequiredTriangles;
smdsEntity = SMDSEntity_Triangle; smdsEntity = SMDSEntity_Triangle;
} }
else if ( entity == "Quadrilaterals" ) { else if ( entity == "Quadrilaterals" ) {
gmfKwd = GmfRequiredQuadrilaterals; gmfKwd = GmfRequiredQuadrilaterals;
smdsEntity = SMDSEntity_Quadrangle; smdsEntity = SMDSEntity_Quadrangle;
} }
else { else {
@ -330,11 +330,11 @@ Driver_Mesh::Status DriverGMF_Write::Perform()
// choose a TElem2IDMap // choose a TElem2IDMap
TElem2IDMap* elem2IDMap = 0; TElem2IDMap* elem2IDMap = 0;
if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() ) if ( smdsEntity == SMDSEntity_Quadrangle && nbOkElems != myMesh->NbFaces() )
elem2IDMap = & quad2IDMap; elem2IDMap = & quad2IDMap;
else if ( smdsEntity == SMDSEntity_Triangle && nbOkElems != myMesh->NbFaces() ) else if ( smdsEntity == SMDSEntity_Triangle && nbOkElems != myMesh->NbFaces() )
elem2IDMap = & tria2IDMap; elem2IDMap = & tria2IDMap;
else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() ) else if ( smdsEntity == SMDSEntity_Edge && nbOkElems != myMesh->NbEdges() )
elem2IDMap = & edge2IDMap; elem2IDMap = & edge2IDMap;
// write the group // write the group

View File

@ -500,7 +500,8 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
default:; default:;
} }
vector<TInt> aNodeIds(aNbNodes); vector<TInt> aNodeIds(aNbNodes);
for(int iElem = 0; iElem < aNbElems; iElem++){ for ( int iElem = 0; iElem < aNbElems; iElem++ )
{
bool anIsValidConnect = false; bool anIsValidConnect = false;
TCConnSlice aConnSlice = aCellInfo->GetConnSlice(iElem); TCConnSlice aConnSlice = aCellInfo->GetConnSlice(iElem);
#ifndef _DEXCEPT_ #ifndef _DEXCEPT_
@ -950,17 +951,19 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
} }
break; break;
default:;
} // switch(aGeom) } // switch(aGeom)
#ifndef _DEXCEPT_ #ifndef _DEXCEPT_
}catch(const std::exception& exc){ } catch(const std::exception& exc) {
INFOS("The following exception was caught:\n\t"<<exc.what()); INFOS("The following exception was caught:\n\t"<<exc.what());
aResult = DRS_FAIL; aResult = DRS_FAIL;
}catch(...){ } catch(...) {
INFOS("Unknown exception was caught !!!"); INFOS("Unknown exception was caught !!!");
aResult = DRS_FAIL; aResult = DRS_FAIL;
} }
#endif #endif
if (!anElement) { if (!anElement) {
aResult = DRS_WARN_SKIP_ELEM; aResult = DRS_WARN_SKIP_ELEM;
} }
@ -977,11 +980,13 @@ Driver_Mesh::Status DriverMED_R_SMESHDS_Mesh::Perform()
myFamilies[aFamNum]->SetType(anElement->GetType()); myFamilies[aFamNum]->SetType(anElement->GetType());
} }
} }
} } // loop on aNbElems
}} }} // switch(aGeom)
} } // loop on aGeom2Size
} } // loop on aEntityInfo
if (aDescendingEntitiesMap.Extent()) isDescConn = true; // Mantis issue 0020483 if (aDescendingEntitiesMap.Extent()) isDescConn = true; // Mantis issue 0020483
} // for(int iMesh = 0; iMesh < aNbMeshes; iMesh++) } // for(int iMesh = 0; iMesh < aNbMeshes; iMesh++)
#ifndef _DEXCEPT_ #ifndef _DEXCEPT_
} }

View File

@ -1349,6 +1349,8 @@ bool SMESH_Mesh::HasModificationsToDiscard() const
hasNotComputed = true; hasNotComputed = true;
if ( hasComputed && hasNotComputed) if ( hasComputed && hasNotComputed)
return true; return true;
default:;
} }
} }
if ( NbNodes() < 1 ) if ( NbNodes() < 1 )

File diff suppressed because it is too large Load Diff

View File

@ -730,7 +730,7 @@ public:
void sweepElement(const SMDS_MeshElement* elem, void sweepElement(const SMDS_MeshElement* elem,
const std::vector<TNodeOfNodeListMapItr> & newNodesItVec, const std::vector<TNodeOfNodeListMapItr> & newNodesItVec,
std::list<const SMDS_MeshElement*>& newElems, std::list<const SMDS_MeshElement*>& newElems,
const int nbSteps, const size_t nbSteps,
SMESH_SequenceOfElemPtr& srcElements); SMESH_SequenceOfElemPtr& srcElements);
/*! /*!

View File

@ -139,7 +139,7 @@ bool SMESH_MesherHelper::IsQuadraticSubMesh(const TopoDS_Shape& aSh)
SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge ); SMDSAbs_ElementType elemType( subType==TopAbs_FACE ? SMDSAbs_Face : SMDSAbs_Edge );
int nbOldLinks = myTLinkNodeMap.size(); //int nbOldLinks = myTLinkNodeMap.size();
if ( !myMesh->HasShapeToMesh() ) 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 ); vector<const SMDS_MeshNode*> newNodes( nodes.size() * 2 );
newNodes = nodes; 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* n1 = nodes[i];
const SMDS_MeshNode* n2 = nodes[(i+1)%nodes.size()]; 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<const SMDS_MeshNode*> newNodes;
vector<int> newQuantities; 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]; int nbNodesInFace = quantities[iFace];
newQuantities.push_back(0); newQuantities.push_back(0);
@ -2402,10 +2402,10 @@ SMESH_MesherHelper::AddPolyhedralVolume (const std::vector<const SMDS_MeshNode*>
const SMDS_MeshNode* n1 = nodes[ iN + i ]; const SMDS_MeshNode* n1 = nodes[ iN + i ];
newNodes.push_back( n1 ); newNodes.push_back( n1 );
newQuantities.back()++; newQuantities.back()++;
const SMDS_MeshNode* n2 = nodes[ iN + ( i+1==nbNodesInFace ? 0 : i+1 )]; const SMDS_MeshNode* n2 = nodes[ iN + ( i+1==nbNodesInFace ? 0 : i+1 )];
// if ( n1->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE && // if ( n1->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE &&
// n2->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE ) // n2->GetPosition()->GetTypeOfPosition() != SMDS_TOP_3DSPACE )
{ {
const SMDS_MeshNode* n12 = GetMediumNode( n1, n2, force3d, TopAbs_SOLID ); const SMDS_MeshNode* n12 = GetMediumNode( n1, n2, force3d, TopAbs_SOLID );
newNodes.push_back( n12 ); newNodes.push_back( n12 );
@ -2606,8 +2606,8 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
} }
// nb rows of nodes // nb rows of nodes
int prevNbRows = theParam2ColumnMap.begin()->second.size(); // current, at least 1 here size_t prevNbRows = theParam2ColumnMap.begin()->second.size(); // current, at least 1 here
int expectedNbRows = faceSubMesh->NbElements() / ( theParam2ColumnMap.size()-1 ); // to be added size_t expectNbRows = faceSubMesh->NbElements() / ( theParam2ColumnMap.size()-1 ); // to be added
// fill theParam2ColumnMap column by column by passing from nodes on // fill theParam2ColumnMap column by column by passing from nodes on
// theBaseEdge up via mesh faces on theFace // 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*>& nCol1 = par_nVec_1->second;
vector<const SMDS_MeshNode*>& nCol2 = par_nVec_2->second; vector<const SMDS_MeshNode*>& nCol2 = par_nVec_2->second;
nCol1.resize( prevNbRows + expectedNbRows ); nCol1.resize( prevNbRows + expectNbRows );
nCol2.resize( prevNbRows + expectedNbRows ); 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 *n1 = nCol1[ prevNbRows-1 ];
const SMDS_MeshNode *n2 = nCol2[ prevNbRows-1 ]; const SMDS_MeshNode *n2 = nCol2[ prevNbRows-1 ];
// find face sharing node n1 and n2 and belonging to faceSubMesh // 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(); int nbNodes = face->NbCornerNodes();
if ( nbNodes != 4 ) if ( nbNodes != 4 )
return false; return false;
if ( foundNbRows + 1 > expectedNbRows ) if ( foundNbRows + 1 > expectNbRows )
return false; return false;
n1 = face->GetNode( (i2+2) % 4 ); // opposite corner of quadrangle face n1 = face->GetNode( (i2+2) % 4 ); // opposite corner of quadrangle face
n2 = face->GetNode( (i1+2) % 4 ); n2 = face->GetNode( (i1+2) % 4 );
@ -2645,12 +2645,12 @@ bool SMESH_MesherHelper::LoadNodeColumns(TParam2ColumnMap & theParam2
} }
avoidSet.insert( face ); avoidSet.insert( face );
} }
if ( foundNbRows != expectedNbRows ) if ((size_t) foundNbRows != expectNbRows )
return false; return false;
avoidSet.clear(); avoidSet.clear();
} }
return ( theParam2ColumnMap.size() > 1 && return ( theParam2ColumnMap.size() > 1 &&
theParam2ColumnMap.begin()->second.size() == prevNbRows + expectedNbRows ); theParam2ColumnMap.begin()->second.size() == prevNbRows + expectNbRows );
} }
namespace namespace
@ -3553,11 +3553,11 @@ namespace { // Structures used by FixQuadraticElements()
int NbVolumes() const { return !_volumes[0] ? 0 : !_volumes[1] ? 1 : 2; } int NbVolumes() const { return !_volumes[0] ? 0 : !_volumes[1] ? 1 : 2; }
void AddSelfToLinks() const { 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 ); _sides[i]->_faces.push_back( this );
} }
int LinkIndex( const QLink* side ) const { 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; return -1;
} }
bool GetLinkChain( int iSide, TChain& chain, SMDS_TypeOfPosition pos, int& err) const; 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* nodeToContain) const;
const SMDS_MeshNode* GetNodeInFace() 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; if ( _sides[iL]->MediumPos() == SMDS_TOP_FACE ) return _sides[iL]->_mediumNode;
return 0; return 0;
} }
@ -3642,7 +3642,7 @@ namespace { // Structures used by FixQuadraticElements()
_sides = links; _sides = links;
_sideIsAdded[0]=_sideIsAdded[1]=_sideIsAdded[2]=_sideIsAdded[3]=false; _sideIsAdded[0]=_sideIsAdded[1]=_sideIsAdded[2]=_sideIsAdded[3]=false;
_normal.SetCoord(0,0,0); _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]; const QLink *l1 = _sides[i-1], *l2 = _sides[i];
insert( l1->node1() ); insert( l1->node2() ); insert( l1->node1() ); insert( l1->node2() );
// compute normal // compute normal
@ -3676,7 +3676,7 @@ namespace { // Structures used by FixQuadraticElements()
bool QFace::GetLinkChain( int iSide, TChain& chain, SMDS_TypeOfPosition pos, int& error) const 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; return false;
if ( _sideIsAdded[ iSide ]) // already in chain if ( _sideIsAdded[ iSide ]) // already in chain
return true; return true;
@ -3687,7 +3687,7 @@ namespace { // Structures used by FixQuadraticElements()
list< const QFace* > faces( 1, this ); list< const QFace* > faces( 1, this );
while ( !faces.empty() ) { while ( !faces.empty() ) {
const QFace* face = faces.front(); 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] ) { if ( !face->_sideIsAdded[i] && face->_sides[i] ) {
face->_sideIsAdded[i] = true; face->_sideIsAdded[i] = true;
// find a face side in the chain // find a face side in the chain
@ -3770,7 +3770,7 @@ namespace { // Structures used by FixQuadraticElements()
typedef list< pair< const QFace*, TLinkInSet > > TFaceLinkList; typedef list< pair< const QFace*, TLinkInSet > > TFaceLinkList;
TFaceLinkList adjacentFaces; TFaceLinkList adjacentFaces;
for ( int iL = 0; iL < _sides.size(); ++iL ) for ( size_t iL = 0; iL < _sides.size(); ++iL )
{ {
if ( avoidLink._qlink == _sides[iL] ) if ( avoidLink._qlink == _sides[iL] )
continue; continue;
@ -3823,10 +3823,10 @@ namespace { // Structures used by FixQuadraticElements()
const TChainLink& avoidLink, const TChainLink& avoidLink,
const SMDS_MeshNode* nodeToContain) const 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] && if ( avoidLink._qlink != _sides[i] &&
(_sides[i]->node1() == nodeToContain || _sides[i]->node2() == nodeToContain )) (_sides[i]->node1() == nodeToContain || _sides[i]->node2() == nodeToContain ))
return links.find( _sides[ i ]); return links.find( _sides[i] );
return links.end(); return links.end();
} }
@ -3877,7 +3877,7 @@ namespace { // Structures used by FixQuadraticElements()
if ( !theStep ) if ( !theStep )
return thePrevLen; // propagation limit reached return thePrevLen; // propagation limit reached
int iL; // index of theLink size_t iL; // index of theLink
for ( iL = 0; iL < _sides.size(); ++iL ) for ( iL = 0; iL < _sides.size(); ++iL )
if ( theLink._qlink == _sides[ iL ]) if ( theLink._qlink == _sides[ iL ])
break; break;
@ -4017,7 +4017,7 @@ namespace { // Structures used by FixQuadraticElements()
int iFaceCont = -1, nbBoundary = 0, iBoundary[2]={-1,-1}; int iFaceCont = -1, nbBoundary = 0, iBoundary[2]={-1,-1};
if ( _faces[0]->IsBoundary() ) if ( _faces[0]->IsBoundary() )
iBoundary[ nbBoundary++ ] = 0; 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] // look for a face bounding none of volumes bound by _faces[0]
bool sameVol = false; bool sameVol = false;
@ -4059,10 +4059,10 @@ namespace { // Structures used by FixQuadraticElements()
const QFace* QLink::GetContinuesFace( const QFace* face ) const 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 ) { if ( _faces[i] == face ) {
int iF = i < 2 ? 1-i : 5-i; 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; return 0;
@ -4075,7 +4075,7 @@ namespace { // Structures used by FixQuadraticElements()
bool QLink::OnBoundary() const 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; if (_faces[i] && _faces[i]->IsBoundary()) return true;
return false; return false;
} }
@ -4144,7 +4144,7 @@ namespace { // Structures used by FixQuadraticElements()
for ( ; bnd != bndEnd; ++bnd ) for ( ; bnd != bndEnd; ++bnd )
{ {
const QLink* bndLink = *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 const QFace* face = bndLink->_faces[i]; // quadrange lateral face of a prism
if ( !face ) continue; 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 // put links in the set and evalute number of result chains by number of boundary links
TLinkSet linkSet; TLinkSet linkSet;
int nbBndLinks = 0; size_t nbBndLinks = 0;
for ( TChain::iterator lnk = allLinks.begin(); lnk != allLinks.end(); ++lnk ) { for ( TChain::iterator lnk = allLinks.begin(); lnk != allLinks.end(); ++lnk ) {
linkSet.insert( *lnk ); linkSet.insert( *lnk );
nbBndLinks += lnk->IsBoundary(); nbBndLinks += lnk->IsBoundary();
@ -4260,7 +4260,7 @@ namespace { // Structures used by FixQuadraticElements()
TLinkInSet botLink = startLink; // current horizontal link to go up from TLinkInSet botLink = startLink; // current horizontal link to go up from
corner = startCorner; // current corner the botLink ends at corner = startCorner; // current corner the botLink ends at
int iRow = 0; size_t iRow = 0;
while ( botLink != linksEnd ) // loop on rows while ( botLink != linksEnd ) // loop on rows
{ {
// add botLink to the columnChain // 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 // In the linkSet, there must remain the last links of rowChains; add them
if ( linkSet.size() != rowChains.size() ) if ( linkSet.size() != rowChains.size() )
return _BAD_SET_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 // find the link (startLink) ending at startCorner
corner = 0; corner = 0;
for ( startLink = linkSet.begin(); startLink != linksEnd; ++startLink ) { for ( startLink = linkSet.begin(); startLink != linksEnd; ++startLink ) {
@ -4449,6 +4449,7 @@ namespace { // Structures used by FixQuadraticElements()
{ {
continue; continue;
} }
default:;
} }
// get nodes shared by faces that may be distorted // get nodes shared by faces that may be distorted
SMDS_NodeIteratorPtr nodeIt; SMDS_NodeIteratorPtr nodeIt;
@ -4562,6 +4563,7 @@ namespace { // Structures used by FixQuadraticElements()
{ {
concaveFaces.push_back( face ); concaveFaces.push_back( face );
} }
default:;
} }
} }
if ( concaveFaces.empty() ) if ( concaveFaces.empty() )
@ -4627,7 +4629,7 @@ namespace { // Structures used by FixQuadraticElements()
while ( volIt->more() ) while ( volIt->more() )
{ {
const SMDS_MeshElement* vol = volIt->next(); const SMDS_MeshElement* vol = volIt->next();
int nbN = vol->NbCornerNodes(); size_t nbN = vol->NbCornerNodes();
if ( ( nbN != 4 && nbN != 5 ) || if ( ( nbN != 4 && nbN != 5 ) ||
!solidSM->Contains( vol ) || !solidSM->Contains( vol ) ||
!checkedVols.insert( vol ).second ) !checkedVols.insert( vol ).second )
@ -4957,7 +4959,7 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError,
else { else {
continue; continue;
} }
for ( int iC = 0; iC < chains.size(); ++iC ) for ( size_t iC = 0; iC < chains.size(); ++iC )
{ {
TChain& chain = chains[iC]; TChain& chain = chains[iC];
if ( chain.empty() ) continue; if ( chain.empty() ) continue;

View File

@ -792,7 +792,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
double u = epos->GetUParameter(); double u = epos->GetUParameter();
paramNodeMap.insert( make_pair( u, node )); paramNodeMap.insert( make_pair( u, node ));
} }
if ( paramNodeMap.size() != eSubMesh->NbNodes() ) { if ((int) paramNodeMap.size() != eSubMesh->NbNodes() ) {
// wrong U on edge, project // wrong U on edge, project
Extrema_ExtPC proj; Extrema_ExtPC proj;
BRepAdaptor_Curve aCurve( edge ); 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 //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); 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* 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* myBndNodes[4]; // order: (iDir=0,i=0), (1,0), (0,1), (1,1)
TIsoNode(double initU, double initV): 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; } { myNext[0] = myNext[1] = myNext[2] = myNext[3] = 0; }
bool IsUVComputed() const bool IsUVComputed() const
{ return myUV.X() != 1e100; } { return myUV.X() != 1e100; }
@ -2425,7 +2425,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace,
int nbVertices = loadVE( eList, myShapeIDMap ); int nbVertices = loadVE( eList, myShapeIDMap );
myShapeIDMap.Add( face ); myShapeIDMap.Add( face );
if ( myShapeIDToPointsMap.size() != myShapeIDMap.Extent() ) { if ((int) myShapeIDToPointsMap.size() != myShapeIDMap.Extent() ) {
MESSAGE( myShapeIDToPointsMap.size() <<" != " << myShapeIDMap.Extent()); MESSAGE( myShapeIDToPointsMap.size() <<" != " << myShapeIDMap.Extent());
return setErrorCode( ERR_APPLF_INTERNAL_EEROR ); return setErrorCode( ERR_APPLF_INTERNAL_EEROR );
} }
@ -2501,7 +2501,7 @@ bool SMESH_Pattern::Apply (const TopoDS_Face& theFace,
while ( wlIt != wireList.end() ) while ( wlIt != wireList.end() )
{ {
list< TopoDS_Edge >& wire = (*wlIt); list< TopoDS_Edge >& wire = (*wlIt);
int nbEdges = wire.size(); size_t nbEdges = wire.size();
wlIt++; wlIt++;
if ( wlIt != wireList.end() && (*wlIt).size() != nbEdges ) // a unique size wire 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(); wlIt = wireList.begin();
while ( wlIt != wireList.end() ) while ( wlIt != wireList.end() )
{ {
int nbSameSize = 0, nbEdges = (*wlIt).size(); size_t nbSameSize = 0, nbEdges = (*wlIt).size();
list< list< TopoDS_Edge > >::iterator wlIt2 = wlIt; list< list< TopoDS_Edge > >::iterator wlIt2 = wlIt;
wlIt2++; wlIt2++;
while ( wlIt2 != wireList.end() && (*wlIt2).size() == nbEdges ) { // a same size wire 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 // 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& uv1 = keyUV[ i ];
gp_XY& uv2 = ( i+1 < keyUV.size() ) ? keyUV[ i+1 ] : keyUV[ 0 ]; 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 // to find point index
map< TPoint*, int > pointIndex; 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 )); pointIndex.insert( make_pair( & myPoints[ i ], i ));
int ind1 = 0; // lowest point index for an element 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++ ) { for ( ; i_node != myXYZIdToNodeMap.end(); i_node++ ) {
nodesVector[ i_node->first ] = i_node->second; 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 ] ) ) if ( !nodesVector[ i ] && isDefined( myXYZ[ i ] ) )
nodesVector[ i ] = aMeshDS->AddNode (myXYZ[ i ].X(), nodesVector[ i ] = aMeshDS->AddNode (myXYZ[ i ].X(),
myXYZ[ i ].Y(), myXYZ[ i ].Y(),
@ -4184,7 +4184,7 @@ void SMESH_Pattern::createElements(SMESH_Mesh* theMes
groups.resize( theElements.size() ); groups.resize( theElements.size() );
const set<SMESHDS_GroupBase*>& allGroups = aMeshDS->GetGroups(); const set<SMESHDS_GroupBase*>& allGroups = aMeshDS->GetGroups();
set<SMESHDS_GroupBase*>::const_iterator grIt; 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 ] ); shapeIDs[ i ] = editor.FindShape( theElements[ i ] );
for ( grIt = allGroups.begin(); grIt != allGroups.end(); grIt++ ) { 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(); TElemDef::const_iterator id = elemNodeInd.begin();
int nbNodes; int nbNodes;
for ( nbNodes = 0; id != elemNodeInd.end(); id++ ) { for ( nbNodes = 0; id != elemNodeInd.end(); id++ ) {
if ( *id < theNodesVector.size() ) if ( *id < (int) theNodesVector.size() )
nodes[ nbNodes++ ] = theNodesVector[ *id ]; nodes[ nbNodes++ ] = theNodesVector[ *id ];
else else
nodes[ nbNodes++ ] = myXYZIdToNodeMap[ *id ]; nodes[ nbNodes++ ] = myXYZIdToNodeMap[ *id ];
@ -4325,7 +4325,7 @@ void SMESH_Pattern::createElements(SMESH_Mesh* theMes
} }
if ( onMeshElements ) { if ( onMeshElements ) {
list< int > elemIDs; 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 ] ); subMesh = theMesh->GetSubMeshContaining( shapeIDs[ i ] );
if ( subMesh ) if ( subMesh )
@ -4354,7 +4354,7 @@ bool SMESH_Pattern::isReversed(const SMDS_MeshNode* theFirstNode,
gp_Pnt P[2]; gp_Pnt P[2];
list<int>::const_iterator id = theIdsList.begin(); list<int>::const_iterator id = theIdsList.begin();
for ( int i = 0; i < 2; ++i, ++id ) { for ( int i = 0; i < 2; ++i, ++id ) {
if ( *id < myXYZ.size() ) if ( *id < (int) myXYZ.size() )
P[ i ] = myXYZ[ *id ]; P[ i ] = myXYZ[ *id ];
else { else {
map< int, const SMDS_MeshNode*>::const_iterator i_n; 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 // check nb of vertices
TopTools_IndexedMapOfShape vMap; TopTools_IndexedMapOfShape vMap;
TopExp::MapShapes( theShape, TopAbs_VERTEX, 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() ); MESSAGE( myKeyPointIDs.size() + nbNodeOnSeamEdge << " != " << vMap.Extent() );
return setErrorCode( ERR_APPL_BAD_NB_VERTICES ); return setErrorCode( ERR_APPL_BAD_NB_VERTICES );
} }

View File

@ -90,7 +90,7 @@ namespace
const SMESH::double_array& aCoords = theSeq[theId].coords; const SMESH::double_array& aCoords = theSeq[theId].coords;
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddNodesWithID - 3*aNbElems != aCoords.length()");
for(CORBA::Long aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){ for(CORBA::Long aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){
SMDS_MeshElement* anElem = theMesh->AddNodeWithID(aCoords[aCoordId], SMDS_MeshElement* anElem = theMesh->AddNodeWithID(aCoords[aCoordId],
@ -112,7 +112,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddEdgeWithID - 2*aNbElems != aCoords.length()");
CORBA::Long anIndexId = 0; CORBA::Long anIndexId = 0;
for (; anElemId < aNbElems; anElemId++, anIndexId+=2) for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
@ -135,9 +135,9 @@ namespace
const SMESH::double_array& aDiameter = theSeq[theId].coords; const SMESH::double_array& aDiameter = theSeq[theId].coords;
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); 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()"); EXCEPTION(runtime_error,"AddEdgeWithID - aNbElems != aDiameter.length()");
CORBA::Long anIndexId = 0; CORBA::Long anIndexId = 0;
for (; anElemId < aNbElems; anElemId++, anIndexId+=2) for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
@ -160,7 +160,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddEdgeWithID - 3*aNbElems != aCoords.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){
SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
@ -181,7 +181,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddTriasWithID - 4*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -203,7 +203,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadsWithID - 4*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -280,7 +280,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddTetrasWithID - 5*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -303,7 +303,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddPiramidsWithID - 6*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -327,7 +327,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddPrismsWithID - 7*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -352,7 +352,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddHexasWithID - 9*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -378,7 +378,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddHexPrismWithID - 13*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=13){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=13){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -443,7 +443,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadEdgeWithID - 4*aNbElems != aCoords.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
@ -465,7 +465,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadTriasWithID - 7*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=7){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -490,7 +490,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadQuadsWithID - 9*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=9){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -516,7 +516,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddBiQuadQuadsWithID - 10*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=10){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=10){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -543,7 +543,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddBiQuadTriasWithID - 8*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=8){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=8){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
@ -569,7 +569,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadTetrasWithID - 11*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=11){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=11){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -598,7 +598,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadPiramidsWithID - 14*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=14){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=14){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -630,7 +630,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadPentasWithID - 16*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=16){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=16){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -664,7 +664,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddQuadHexasWithID - 21*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=21){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=21){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
@ -702,7 +702,7 @@ namespace
{ {
const SMESH::long_array& anIndexes = theSeq[theId].indexes; const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number; 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()"); EXCEPTION(runtime_error,"AddTriQuadHexasWithID - 28*aNbElems != anIndexes.length()");
for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=28){ for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=28){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1], SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],

View File

@ -1268,7 +1268,7 @@ void SMESHGUI_SimpleElemInfo::information( const QList<long>& ids )
SMESH::ListOfGroups_var groups = aMesh->GetGroups(); SMESH::ListOfGroups_var groups = aMesh->GetGroups();
myInfo->append( "" ); // separator myInfo->append( "" ); // separator
bool top_created = false; 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]; SMESH::SMESH_GroupBase_var aGrp = groups[i];
if ( CORBA::is_nil( aGrp ) ) continue; if ( CORBA::is_nil( aGrp ) ) continue;
QString aName = aGrp->GetName(); QString aName = aGrp->GetName();
@ -1528,7 +1528,7 @@ void SMESHGUI_SimpleElemInfo::information( const QList<long>& ids )
SMESH::ListOfGroups_var groups = aMesh->GetGroups(); SMESH::ListOfGroups_var groups = aMesh->GetGroups();
myInfo->append( "" ); // separator myInfo->append( "" ); // separator
bool top_created = false; 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]; SMESH::SMESH_GroupBase_var aGrp = groups[i];
if ( CORBA::is_nil( aGrp ) ) continue; if ( CORBA::is_nil( aGrp ) ) continue;
QString aName = aGrp->GetName(); QString aName = aGrp->GetName();
@ -1788,7 +1788,7 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
if ( !CORBA::is_nil( aMesh ) ) { if ( !CORBA::is_nil( aMesh ) ) {
SMESH::ListOfGroups_var groups = aMesh->GetGroups(); SMESH::ListOfGroups_var groups = aMesh->GetGroups();
QTreeWidgetItem* groupsItem = 0; 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]; SMESH::SMESH_GroupBase_var aGrp = groups[i];
if ( CORBA::is_nil( aGrp ) ) continue; if ( CORBA::is_nil( aGrp ) ) continue;
QString aName = aGrp->GetName(); QString aName = aGrp->GetName();
@ -2086,7 +2086,7 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
if ( !CORBA::is_nil( aMesh ) ) { if ( !CORBA::is_nil( aMesh ) ) {
SMESH::ListOfGroups_var groups = aMesh->GetGroups(); SMESH::ListOfGroups_var groups = aMesh->GetGroups();
QTreeWidgetItem* groupsItem = 0; 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]; SMESH::SMESH_GroupBase_var aGrp = groups[i];
if ( CORBA::is_nil( aGrp ) ) continue; if ( CORBA::is_nil( aGrp ) ) continue;
QString aName = aGrp->GetName(); QString aName = aGrp->GetName();
@ -2643,7 +2643,7 @@ void SMESHGUI_AddInfo::showGroups()
itemGroups->setData( 0, Qt::UserRole, GROUPS_ID ); itemGroups->setData( 0, Qt::UserRole, GROUPS_ID );
// total number of groups > 10, show extra widgets for info browsing // 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 ); ExtraWidget* extra = new ExtraWidget( this, true );
connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousGroups() ) ); connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousGroups() ) );
connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextGroups() ) ); connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextGroups() ) );
@ -2704,7 +2704,7 @@ void SMESHGUI_AddInfo::showSubMeshes()
itemSubMeshes->setData( 0, Qt::UserRole, SUBMESHES_ID ); itemSubMeshes->setData( 0, Qt::UserRole, SUBMESHES_ID );
// total number of sub-meshes > 10, show extra widgets for info browsing // 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 ); ExtraWidget* extra = new ExtraWidget( this, true );
connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousSubMeshes() ) ); connect( extra->prev, SIGNAL( clicked() ), this, SLOT( showPreviousSubMeshes() ) );
connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextSubMeshes() ) ); connect( extra->next, SIGNAL( clicked() ), this, SLOT( showNextSubMeshes() ) );

View File

@ -166,7 +166,7 @@ void SMESH_Block::TFace::Set( const int faceID,
// pcurves // pcurves
vector< int > edgeIdVec; vector< int > edgeIdVec;
GetFaceEdgesIDs( faceID, 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 ] ); myCoordInd[ iE ] = GetCoordIndOnEdge( edgeIdVec[ iE ] );
if ( myC2d[ iE ]) delete myC2d[ iE ]; if ( myC2d[ iE ]) delete myC2d[ iE ];
@ -2083,7 +2083,7 @@ bool SMESH_Block::LoadFace(const TopoDS_Face& theFace,
bool isForward[4]; bool isForward[4];
vector< int > edgeIdVec; vector< int > edgeIdVec;
GetFaceEdgesIDs( theFaceID, 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() ) if ( edgeIdVec[ iE ] > theShapeIDMap.Extent() )
return false; return false;

View File

@ -344,19 +344,6 @@ namespace
} // 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. * Returns groups of TFreeBorder's coincident within the given tolerance.
@ -370,7 +357,7 @@ void SMESH_MeshAlgos::FindCoincidentFreeBorders(SMDS_Mesh& mesh,
CoincidentFreeBorders & foundFreeBordes) CoincidentFreeBorders & foundFreeBordes)
{ {
// find free links // 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; TLink2FaceMap linkMap;
int nbSharedLinks = 0; int nbSharedLinks = 0;
SMDS_FaceIteratorPtr faceIt = mesh.facesIterator(); SMDS_FaceIteratorPtr faceIt = mesh.facesIterator();

View File

@ -270,7 +270,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
ElementBndBoxTree::~ElementBndBoxTree() ElementBndBoxTree::~ElementBndBoxTree()
{ {
for ( int i = 0; i < _elements.size(); ++i ) for ( size_t i = 0; i < _elements.size(); ++i )
if ( --_elements[i]->_refCount <= 0 ) if ( --_elements[i]->_refCount <= 0 )
delete _elements[i]; delete _elements[i];
} }
@ -284,7 +284,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
Bnd_B3d* ElementBndBoxTree::buildRootBox() Bnd_B3d* ElementBndBoxTree::buildRootBox()
{ {
Bnd_B3d* box = new Bnd_B3d; 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] ); box->Add( *_elements[i] );
return box; return box;
} }
@ -297,7 +297,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
void ElementBndBoxTree::buildChildrenData() 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++) 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++) for (int j = 0; j < 8; j++)
{ {
ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j]); ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j]);
if ( child->_elements.size() <= MaxNbElemsInLeaf ) if ((int) child->_elements.size() <= MaxNbElemsInLeaf )
child->myIsLeaf = true; child->myIsLeaf = true;
if ( child->_elements.capacity() - child->_elements.size() > 1000 ) if ( child->_elements.capacity() - child->_elements.size() > 1000 )
@ -337,7 +337,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
if ( isLeaf() ) 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() )) if ( !_elements[i]->IsOut( point.XYZ() ))
foundElems.insert( _elements[i]->_element ); foundElems.insert( _elements[i]->_element );
} }
@ -362,7 +362,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
if ( isLeaf() ) if ( isLeaf() )
{ {
for ( int i = 0; i < _elements.size(); ++i ) for ( size_t i = 0; i < _elements.size(); ++i )
if ( !_elements[i]->IsOut( line )) if ( !_elements[i]->IsOut( line ))
foundElems.insert( _elements[i]->_element ); foundElems.insert( _elements[i]->_element );
} }
@ -388,7 +388,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
if ( isLeaf() ) 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 )) if ( !_elements[i]->IsOut( center, radius ))
foundElems.insert( _elements[i]->_element ); 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); return GetDistance( dynamic_cast<const SMDS_MeshEdge*>( elem ), point);
case SMDSAbs_Node: case SMDSAbs_Node:
return point.Distance( SMESH_TNodeXYZ( elem )); return point.Distance( SMESH_TNodeXYZ( elem ));
default:;
} }
return -1; return -1;
} }
@ -1421,6 +1422,7 @@ double SMESH_MeshAlgos::GetDistance( const SMDS_MeshFace* face,
// cout << distVec.Magnitude() << " VERTEX " << face->GetNode(pos._index)->GetID() << endl; // cout << distVec.Magnitude() << " VERTEX " << face->GetNode(pos._index)->GetID() << endl;
return distVec.Magnitude(); return distVec.Magnitude();
} }
default:;
} }
return badDistance; return badDistance;
} }

View File

@ -102,7 +102,7 @@ Bnd_B3d* SMESH_OctreeNode::buildRootBox()
gp_XYZ p1( n1->X(), n1->Y(), n1->Z() ); gp_XYZ p1( n1->X(), n1->Y(), n1->Z() );
box->Add(p1); box->Add(p1);
} }
if ( myNodes.size() <= getMaxNbNodes() ) if ((int) myNodes.size() <= getMaxNbNodes() )
myIsLeaf = true; myIsLeaf = true;
return box; return box;
@ -151,7 +151,7 @@ void SMESH_OctreeNode::buildChildrenData()
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
{ {
SMESH_OctreeNode* myChild = dynamic_cast<SMESH_OctreeNode*> (myChildren[i]); SMESH_OctreeNode* myChild = dynamic_cast<SMESH_OctreeNode*> (myChildren[i]);
if ( myChild->myNodes.size() <= getMaxNbNodes() ) if ((int) myChild->myNodes.size() <= getMaxNbNodes() )
myChild->myIsLeaf = true; myChild->myIsLeaf = true;
} }
} }

View File

@ -80,8 +80,11 @@ namespace SMESHUtils
struct Deleter struct Deleter
{ {
TOBJ* _obj; TOBJ* _obj;
Deleter( TOBJ* obj = (TOBJ*)NULL ): _obj( obj ) {} explicit Deleter( TOBJ* obj = (TOBJ*)NULL ): _obj( obj ) {}
~Deleter() { delete _obj; _obj = 0; } ~Deleter() { delete _obj; _obj = 0; }
TOBJ& operator*() const { return *_obj; }
TOBJ* operator->() const { return _obj; }
operator bool() const { return _obj; }
private: private:
Deleter( const Deleter& ); Deleter( const Deleter& );
}; };
@ -113,6 +116,16 @@ struct SMESH_TLink: public NLink
{ if ( first->GetID() < second->GetID() ) std::swap( first, second ); } { if ( first->GetID() < second->GetID() ) std::swap( first, second ); }
const SMDS_MeshNode* node1() const { return first; } const SMDS_MeshNode* node1() const { return first; }
const SMDS_MeshNode* node2() const { return second; } 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() );
}
}; };
//======================================================================= //=======================================================================

View File

@ -98,7 +98,7 @@ namespace SMESH
myStream << "[ "; myStream << "[ ";
for ( size_t i = 1; i <= theVarValue.myVals.size(); ++i ) 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(); myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
else else
myStream << theVarValue.myVals[i-1]; myStream << theVarValue.myVals[i-1];
@ -110,7 +110,7 @@ namespace SMESH
} }
else else
{ {
if ( myVarsCounter < varIDs.size() && varIDs[ myVarsCounter ] >= 0 ) if ( myVarsCounter < (int)varIDs.size() && varIDs[ myVarsCounter ] >= 0 )
myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote(); myStream << TVar::Quote() << varIDs[ myVarsCounter ] << TVar::Quote();
else else
myStream << theVarValue.myVals[0]; myStream << theVarValue.myVals[0];
@ -247,7 +247,7 @@ namespace SMESH
else else
{ {
theStream << "[ "; theStream << "[ ";
for (int i = 1; i <= theArray.length(); i++) { for (CORBA::ULong i = 1; i <= theArray.length(); i++) {
theStream << theArray[i-1]; theStream << theArray[i-1];
if ( i < theArray.length() ) if ( i < theArray.length() )
theStream << ", "; theStream << ", ";
@ -281,7 +281,7 @@ namespace SMESH
TPythonDump::operator<<(const SMESH::string_array& theArray) TPythonDump::operator<<(const SMESH::string_array& theArray)
{ {
myStream << "[ "; myStream << "[ ";
for (int i = 1; i <= theArray.length(); i++) { for ( CORBA::ULong i = 1; i <= theArray.length(); i++ ) {
myStream << "'" << theArray[i-1] << "'"; myStream << "'" << theArray[i-1] << "'";
if ( i < theArray.length() ) if ( i < theArray.length() )
myStream << ", "; myStream << ", ";
@ -564,7 +564,7 @@ namespace SMESH
for ( CORBA::ULong iP = 0; iP < aGRP.length(); ++iP ) for ( CORBA::ULong iP = 0; iP < aGRP.length(); ++iP )
{ {
const SMESH::FreeBorderPart& aPART = aGRP[ 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 << ", "; if ( iP ) myStream << ", ";
const SMESH::FreeBorder& aBRD = theCFB.borders[ aPART.border ]; const SMESH::FreeBorder& aBRD = theCFB.borders[ aPART.border ];

View File

@ -1204,7 +1204,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMEDorSAUV( const char* theFileNa
aPythonDump << "], status) = " << this << "." << theCommandNameForPython << "(r'" << theFileNameForPython << "')"; aPythonDump << "], status) = " << this << "." << theCommandNameForPython << "(r'" << theFileNameForPython << "')";
} }
// Dump creation of groups // 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(); SMESH::ListOfGroups_var groups = aResult[ i ]->GetGroups();
return aResult._retn(); return aResult._retn();
@ -1382,7 +1382,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName,
aPythonDump << "], status) = " << this << ".CreateMeshesFromCGNS(r'" << theFileName << "')"; aPythonDump << "], status) = " << this << ".CreateMeshesFromCGNS(r'" << theFileName << "')";
} }
// Dump creation of groups // 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(); SMESH::ListOfGroups_var groups = aResult[ i ]->GetGroups();
#else #else
THROW_SALOME_CORBA_EXCEPTION("CGNS library is unavailable", SALOME::INTERNAL_ERROR); 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, SMESH::long_array*
const SMESH::object_array& theListOfSubShapeObject ) SMESH_Gen_i::GetSubShapesId( GEOM::GEOM_Object_ptr theMainShapeObject,
throw ( SALOME::SALOME_Exception ) const SMESH::object_array& theListOfSubShapeObject )
throw ( SALOME::SALOME_Exception )
{ {
Unexpect aCatch(SALOME_SalomeException); Unexpect aCatch(SALOME_SalomeException);
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::GetSubShapesId" ); 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; set<int> setId;
if ( CORBA::is_nil( theMainShapeObject ) ) if ( CORBA::is_nil( theMainShapeObject ) )
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
SALOME::BAD_PARAM );
try 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); GEOM::GEOM_Object_var aShapeObject
TopTools_IndexedMapOfShape myIndexToShape; = GEOM::GEOM_Object::_narrow(theListOfSubShapeObject[i]);
TopExp::MapShapes(myMainShape,myIndexToShape); if ( CORBA::is_nil( aShapeObject ) )
THROW_SALOME_CORBA_EXCEPTION ("bad shape object reference", \
SALOME::BAD_PARAM );
for ( int i = 0; i < theListOfSubShapeObject.length(); i++ ) TopoDS_Shape locShape = GeomObjectToShape(aShapeObject);
{ for (TopExp_Explorer exp(locShape,TopAbs_FACE); exp.More(); exp.Next())
GEOM::GEOM_Object_var aShapeObject {
= GEOM::GEOM_Object::_narrow(theListOfSubShapeObject[i]); const TopoDS_Face& F = TopoDS::Face(exp.Current());
if ( CORBA::is_nil( aShapeObject ) ) setId.insert(myIndexToShape.FindIndex(F));
THROW_SALOME_CORBA_EXCEPTION ("bad shape object reference", \ if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(F));
SALOME::BAD_PARAM ); }
for (TopExp_Explorer exp(locShape,TopAbs_EDGE); exp.More(); exp.Next())
TopoDS_Shape locShape = GeomObjectToShape(aShapeObject); {
for (TopExp_Explorer exp(locShape,TopAbs_FACE); exp.More(); exp.Next()) const TopoDS_Edge& E = TopoDS::Edge(exp.Current());
{ setId.insert(myIndexToShape.FindIndex(E));
const TopoDS_Face& F = TopoDS::Face(exp.Current()); if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(E));
setId.insert(myIndexToShape.FindIndex(F)); }
if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(F)); for (TopExp_Explorer exp(locShape,TopAbs_VERTEX); exp.More(); exp.Next())
} {
for (TopExp_Explorer exp(locShape,TopAbs_EDGE); exp.More(); exp.Next()) const TopoDS_Vertex& V = TopoDS::Vertex(exp.Current());
{ setId.insert(myIndexToShape.FindIndex(V));
const TopoDS_Edge& E = TopoDS::Edge(exp.Current()); if(MYDEBUG) SCRUTE(myIndexToShape.FindIndex(V));
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++;
}
} }
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) 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(); return shapesId._retn();
} }
@ -2172,13 +2172,13 @@ SMESH::long_array* SMESH_Gen_i::Evaluate(SMESH::SMESH_Mesh_ptr theMesh,
MapShapeNbElemsItr anIt = aResMap.begin(); MapShapeNbElemsItr anIt = aResMap.begin();
for(; anIt!=aResMap.end(); anIt++) { for(; anIt!=aResMap.end(); anIt++) {
const vector<int>& aVec = (*anIt).second; 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]; int nbElem = aVec[i];
if ( nbElem < 0 ) // algo failed, check that it has reported a message 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(); SMESH_ComputeErrorPtr& error = sm->GetComputeError();
const SMESH_Algo* algo = sm->GetAlgo(); const SMESH_Algo* algo = sm->GetAlgo();
if ( (algo && !error.get()) || error->IsOK() ) if ( (algo && !error.get()) || error->IsOK() )
error.reset( new SMESH_ComputeError( COMPERR_ALGO_FAILED,"Failed to evaluate",algo)); 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; std::vector<const SMDS_MeshNode*> aNodesArray;
// loop on sub-meshes // 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; if ( CORBA::is_nil( theMeshesArray[i] )) continue;
SMESH::SMESH_Mesh_var anInitMesh = theMeshesArray[i]->GetMesh(); SMESH::SMESH_Mesh_var anInitMesh = theMeshesArray[i]->GetMesh();
@ -2443,8 +2443,8 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
if ( !anInitImpl ) continue; if ( !anInitImpl ) continue;
anInitImpl->Load(); anInitImpl->Load();
::SMESH_Mesh& aInitLocMesh = anInitImpl->GetImpl(); //::SMESH_Mesh& aInitLocMesh = anInitImpl->GetImpl();
SMESHDS_Mesh* anInitMeshDS = aInitLocMesh.GetMeshDS(); //SMESHDS_Mesh* anInitMeshDS = aInitLocMesh.GetMeshDS();
// remember nb of elements before filling in // remember nb of elements before filling in
SMESH::long_array_var prevState = aNewMesh->GetNbElementsByType(); 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" }; const char* typeNames[] = { "All","Nodes","Edges","Faces","Volumes","0DElems","Balls" };
{ // check of typeNames, compilation failure mains that NB_ELEMENT_TYPES changed: { // check of typeNames, compilation failure mains that NB_ELEMENT_TYPES changed:
const int nbNames = sizeof(typeNames) / sizeof(const char*); 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"; string groupName = "Gr";
SALOMEDS::SObject_wrap aMeshSObj = ObjectToSObject( myCurrentStudy, theMeshesArray[i] ); 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] )) if ( SMESH_Mesh_i* anSrcImpl = SMESH::DownCast<SMESH_Mesh_i*>( theMeshesArray[i] ))
{ {
// copy orphan nodes // copy orphan nodes
if ( anSrcImpl->NbNodes() > nodesMap.size() ) if ( anSrcImpl->NbNodes() > (int)nodesMap.size() )
{ {
SMDS_ElemIteratorPtr itNodes = anInitImpl->GetElements( theMeshesArray[i], SMESH::NODE ); SMDS_ElemIteratorPtr itNodes = anInitImpl->GetElements( theMeshesArray[i], SMESH::NODE );
while ( itNodes->more() ) while ( itNodes->more() )
@ -2580,12 +2580,12 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
// loop on groups of a source mesh // loop on groups of a source mesh
aListOfGroups = anSrcImpl->GetGroups(); aListOfGroups = anSrcImpl->GetGroups();
for (int iG = 0; iG < aListOfGroups->length(); iG++) for ( CORBA::ULong iG = 0; iG < aListOfGroups->length(); iG++ )
{ {
aGroup = aListOfGroups[iG]; aGroup = aListOfGroups[iG];
aGroupType = aGroup->GetType(); aGroupType = aGroup->GetType();
aGroupName = aGroup->GetName(); aGroupName = aGroup->GetName();
string aName = aGroupName.in(); string aName = aGroupName.in();
// convert a list of IDs // convert a list of IDs
anNewIDs->length( aGroup->Size() ); anNewIDs->length( aGroup->Size() );
@ -2632,7 +2632,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
aNewGroups.front()->SetName(aNewGroupName.c_str()); aNewGroups.front()->SetName(aNewGroupName.c_str());
} }
char aGroupNum[128]; char aGroupNum[128];
sprintf(aGroupNum, "%u", aNewGroups.size()+1); sprintf(aGroupNum, "%u", (unsigned int)aNewGroups.size()+1);
aNewGroupName = aName + "_" + string(aGroupNum); aNewGroupName = aName + "_" + string(aGroupNum);
aNewGroup->SetName(aNewGroupName.c_str()); aNewGroup->SetName(aNewGroupName.c_str());
aNewGroups.push_back(aNewGroup); aNewGroups.push_back(aNewGroup);
@ -2656,7 +2656,7 @@ SMESH_Gen_i::ConcatenateCommon(const SMESH::ListOfIDSources& theMeshesArray,
aPythonDump << aNewMesh << " = " << this << "." aPythonDump << aNewMesh << " = " << this << "."
<< ( theCommonGroups ? "ConcatenateWithGroups" : "Concatenate" ) << ( theCommonGroups ? "ConcatenateWithGroups" : "Concatenate" )
<< "(["; << "([";
for ( int i = 0; i < theMeshesArray.length(); i++) { for ( CORBA::ULong i = 0; i < theMeshesArray.length(); i++) {
if (i > 0) aPythonDump << ", "; if (i > 0) aPythonDump << ", ";
aPythonDump << theMeshesArray[i]; 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(); SMESH::long_array_var ids = meshPart->GetIDs();
if ( srcElemTypes->length() == 1 && srcElemTypes[0] == SMESH::NODE ) // group of nodes 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] )) if ( const SMDS_MeshElement * elem = srcMeshDS->FindNode( ids[i] ))
srcElems.insert( elem ); srcElems.insert( elem );
} }
else 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] )) if ( const SMDS_MeshElement * elem = srcMeshDS->FindElement( ids[i] ))
srcElems.insert( elem ); srcElems.insert( elem );
} }
@ -3044,7 +3044,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
TPythonDump pd; // not to dump GetGroups() TPythonDump pd; // not to dump GetGroups()
SMESH::ListOfGroups_var groups = myMesh->GetGroups(); SMESH::ListOfGroups_var groups = myMesh->GetGroups();
pd << ""; // to avoid optimizing pd out 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]); SMESH_GroupBase_i* grImpl = SMESH::DownCast<SMESH_GroupBase_i*>( groups[i]);
if ( grImpl ) if ( grImpl )
@ -5047,8 +5047,8 @@ char* SMESH_Gen_i::getVersion()
// Is used in the drag-n-drop functionality. // Is used in the drag-n-drop functionality.
//================================================================================= //=================================================================================
void SMESH_Gen_i::Move( const SMESH::sobject_list& what, void SMESH_Gen_i::Move( const SMESH::sobject_list& what,
SALOMEDS::SObject_ptr where, SALOMEDS::SObject_ptr where,
CORBA::Long row ) CORBA::Long row )
{ {
if ( CORBA::is_nil( where ) ) return; 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]; SALOMEDS::SObject_var sobj = what[i];
if ( CORBA::is_nil( sobj ) ) continue; // skip bad object if ( CORBA::is_nil( sobj ) ) continue; // skip bad object
// insert the object to the use case tree // 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 theX,
CORBA::Double theY, CORBA::Double theY,
CORBA::Double theZ, CORBA::Double theZ,
CORBA::Double theR) { CORBA::Double theR)
{
SMESH::long_array_var aResult = new SMESH::long_array(); SMESH::long_array_var aResult = new SMESH::long_array();
if(meshPart->_is_nil()) if ( meshPart->_is_nil() )
return aResult._retn(); return aResult._retn();
// 1. Create geometrical object // 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); std::vector<long> lst =_GetInside(meshPart, theElemType, aShape);
if( lst.size() > 0 ) { if ( lst.size() > 0 ) {
aResult->length( lst.size() ); 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]; aResult[i] = lst[i];
} }
} }
@ -5168,7 +5169,7 @@ SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart
if( lst.size() > 0 ) { if( lst.size() > 0 ) {
aResult->length( lst.size() ); 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]; aResult[i] = lst[i];
} }
} }
@ -5199,7 +5200,7 @@ SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr mes
if( lst.size() > 0 ) { if( lst.size() > 0 ) {
aResult->length( lst.size() ); 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]; aResult[i] = lst[i];
} }
} }
@ -5220,7 +5221,7 @@ SMESH::long_array* SMESH_Gen_i::GetInside( SMESH::SMESH_IDSource_ptr meshPart,
if( lst.size() > 0 ) { if( lst.size() > 0 ) {
aResult->length( lst.size() ); 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]; 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 ( !gsource->_is_nil() ) {
if(theElemType == SMESH::NODE) { if(theElemType == SMESH::NODE) {
SMESH::long_array_var nodes = gsource->GetNodeIDs(); SMESH::long_array_var nodes = gsource->GetNodeIDs();
for ( int i = 0; i < nodes->length(); ++i ) { for ( CORBA::ULong i = 0; i < nodes->length(); ++i ) {
if ( const SMDS_MeshNode* node = meshDS->FindNode( nodes[i] ) ) { if ( const SMDS_MeshNode* node = meshDS->FindNode( nodes[i] )) {
long anId = node->GetID(); long anId = node->GetID();
if ( anElementsOnShape->IsSatisfy( anId ) ) if ( anElementsOnShape->IsSatisfy( anId ) )
res.push_back( 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 ) { } else if (gsource->GetType() == theElemType || theElemType == SMESH::ALL ) {
SMESH::long_array_var elems = gsource->GetListOfID(); SMESH::long_array_var elems = gsource->GetListOfID();
for ( int i = 0; i < elems->length(); ++i ) { for ( CORBA::ULong i = 0; i < elems->length(); ++i ) {
if ( const SMDS_MeshElement* elem = meshDS->FindElement( elems[i] ) ) { if ( const SMDS_MeshElement* elem = meshDS->FindElement( elems[i] )) {
long anId = elem->GetID(); long anId = elem->GetID();
if ( anElementsOnShape->IsSatisfy( anId ) ) if ( anElementsOnShape->IsSatisfy( anId ) )
res.push_back( 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); SMESH::SMESH_subMesh_var smsource = SMESH::SMESH_subMesh::_narrow(meshPart);
if ( !smsource->_is_nil() ) { if ( !smsource->_is_nil() ) {
SMESH::long_array_var elems = smsource->GetElementsByType( theElemType ); 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] ); const SMDS_MeshElement* elem = ( theElemType == SMESH::NODE ) ? meshDS->FindNode( elems[i] ) : meshDS->FindElement( elems[i] );
if (elem) { if (elem) {
long anId = elem->GetID(); long anId = elem->GetID();

View File

@ -585,7 +585,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SALOMEDS::Study_ptr theStudy,
// Publish global hypotheses // Publish global hypotheses
SMESH::ListOfHypothesis_var hypList = theMesh->GetHypothesisList( aShapeObject ); 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 ]); SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( hypList[ i ]);
SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp ); SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp );
@ -710,7 +710,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SALOMEDS::Study_ptr theS
// Publish hypothesis // Publish hypothesis
SMESH::ListOfHypothesis_var hypList = theMesh->GetHypothesisList( theShapeObject ); 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 ]); SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( hypList[ i ]);
SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp ); SALOMEDS::SObject_wrap so = PublishHypothesis( theStudy, aHyp );
AddHypothesisToShape( theStudy, theMesh, theShapeObject, 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()) if ( aMeshSO->_is_nil())
return SALOMEDS::SObject::_nil(); return SALOMEDS::SObject::_nil();
} }
int aType = (int)theGroup->GetType(); size_t aType = (int)theGroup->GetType();
const char* aRootNames[] = { const char* aRootNames[] = {
"Compound Groups", "Groups of Nodes", "Groups of Edges", "Compound Groups", "Groups of Nodes", "Groups of Edges",
"Groups of Faces", "Groups of Volumes", "Groups of 0D Elements", "Groups of Faces", "Groups of Volumes", "Groups of 0D Elements",

View File

@ -62,6 +62,7 @@ SET(_link_LIBRARIES
${CAS_TKAdvTools} ${CAS_TKAdvTools}
${CAS_TKTopAlgo} ${CAS_TKTopAlgo}
${CAS_TKG3d} ${CAS_TKG3d}
${CAS_TKOffset}
${GEOM_GEOMUtils} ${GEOM_GEOMUtils}
SMESHimpl SMESHimpl
SMESHDS SMESHDS

View File

@ -703,7 +703,7 @@ namespace // internal utils
void ElementBndBoxTree::buildChildrenData() void ElementBndBoxTree::buildChildrenData()
{ {
ElemTreeData* data = GetElemData(); 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] ); const Bnd_B3d* elemBox = data->GetBox( _elementIDs[i] );
for (int j = 0; j < 8; j++) for (int j = 0; j < 8; j++)
@ -718,7 +718,7 @@ namespace // internal utils
{ {
ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j] ); ElementBndBoxTree* child = static_cast<ElementBndBoxTree*>( myChildren[j] );
child->_elementIDs = data->myWorkIDs[ j ]; child->_elementIDs = data->myWorkIDs[ j ];
if ( child->_elementIDs.size() <= theMaxNbElemsInLeaf ) if ((int) child->_elementIDs.size() <= theMaxNbElemsInLeaf )
child->myIsLeaf = true; child->myIsLeaf = true;
data->myWorkIDs[ j ].clear(); data->myWorkIDs[ j ].clear();
} }
@ -741,7 +741,7 @@ namespace // internal utils
if ( isLeaf() ) if ( isLeaf() )
{ {
ElemTreeData* data = GetElemData(); 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 )) if ( !data->GetBox( _elementIDs[i] )->IsOut( center, radius ))
foundElemIDs.push_back( _elementIDs[i] ); foundElemIDs.push_back( _elementIDs[i] );
} }
@ -1197,7 +1197,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
StdMeshers_Regular_1D::_value[ DEFLECTION_IND ] = myHyp->GetDeflection(); StdMeshers_Regular_1D::_value[ DEFLECTION_IND ] = myHyp->GetDeflection();
list< double > params; list< double > params;
for ( int iE = 0; iE < myEdges.size(); ++iE ) for ( size_t iE = 0; iE < myEdges.size(); ++iE )
{ {
EdgeData& eData = myEdges[ iE ]; EdgeData& eData = myEdges[ iE ];
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl; //cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
@ -1243,7 +1243,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
triaSearcher->SetSizeByTrias( sizeTree, myHyp->GetDeflection() ); 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 ]; EdgeData& eData = myEdges[ iE ];
@ -1260,7 +1260,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
double maxSegSize = 0; double maxSegSize = 0;
// get points to check distance to the face // 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 )); maxSegSize = pIt1->mySegSize = Min( pIt1->mySegSize, sizeTree.GetSize( pIt1->myP ));
for ( ; pIt2 != eData.myPoints.end(); ) for ( ; pIt2 != eData.myPoints.end(); )
{ {
@ -1290,7 +1290,7 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl; //cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
sizeDecreased = false; sizeDecreased = false;
const gp_Pnt* avoidPnt = & eData.First().myP; 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(); ) for ( pIt1 = eData.myPoints.begin(); pIt1 != eData.myPoints.end(); )
{ {
double distToFace = double distToFace =
@ -1308,19 +1308,16 @@ bool AdaptiveAlgo::Compute(SMESH_Mesh & theMesh,
// << "\t SetSize " << allowedSize << " at " // << "\t SetSize " << allowedSize << " at "
// << pIt1->myP.X() <<", "<< pIt1->myP.Y()<<", "<<pIt1->myP.Z() << endl; // << pIt1->myP.X() <<", "<< pIt1->myP.Y()<<", "<<pIt1->myP.Z() << endl;
pIt2 = pIt1; 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 ); sizeTree.SetSize( eData.myC3d.Value( 0.6*pIt2->myU + 0.4*pIt1->myU ), allowedSize );
pIt2 = pIt1; 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 ); sizeTree.SetSize( eData.myC3d.Value( 0.6*pIt2->myU + 0.4*pIt1->myU ), allowedSize );
} }
pIt1->mySegSize = allowedSize; pIt1->mySegSize = allowedSize;
} }
++pIt1; ++pIt1;
if ( pIt1 == pItLast ) avoidPnt = ( pIt1 == pItLast ) ? & eData.Last().myP : NULL;
avoidPnt = & eData.Last().myP;
else
avoidPnt = NULL;
if ( iLoop > 20 ) if ( iLoop > 20 )
{ {
@ -1357,7 +1354,7 @@ bool AdaptiveAlgo::makeSegments()
vector< double > nbSegs, params; 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 ]; EdgeData& eData = myEdges[ iE ];
@ -1368,13 +1365,13 @@ bool AdaptiveAlgo::makeSegments()
edgeMinSize = Min( edgeMinSize, edgeMinSize = Min( edgeMinSize,
Min( pIt1->mySegSize, mySizeTree->GetSize( pIt1->myP ))); 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 double parLen = l - f;
const int nbDivSeg = 5; 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 // compute nb of segments
bool toRecompute = true; bool toRecompute = true;
double maxSegSize = 0; double maxSegSize = 0;
size_t i = 1, segCount; size_t i = 1, segCount;
//cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl; //cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
@ -1432,7 +1429,7 @@ bool AdaptiveAlgo::makeSegments()
} }
// compute parameters of nodes // 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(); double fact = nbSegFinal / nbSegs.back();
if ( maxSegSize / fact > myHyp->GetMaxSize() ) if ( maxSegSize / fact > myHyp->GetMaxSize() )
fact = ++nbSegFinal / nbSegs.back(); fact = ++nbSegFinal / nbSegs.back();

View File

@ -240,6 +240,7 @@ bool StdMeshers_CartesianParameters3D::GetFixedPoint(double p[3]) const
if ( Precision::IsInfinite( _fixedPoint[0] )) if ( Precision::IsInfinite( _fixedPoint[0] ))
return false; return false;
std::copy( &_fixedPoint[0], &_fixedPoint[0]+3, &p[0] ); 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 // correct coords if a forced point is too close to a neighbor node
if ( forced ) if ( forced )
{ {
int iF = 0; size_t iF = 0;
double minLen = ( x1 - x0 ); double minLen = ( x1 - x0 );
for ( size_t i = 1; i < coords.size(); ++i ) for ( size_t i = 1; i < coords.size(); ++i )
{ {
@ -522,9 +523,8 @@ ComputeOptimalAxesDirs(const TopoDS_Shape& shape,
const TCooTriple* norm1 = 0; const TCooTriple* norm1 = 0;
double sumArea = 0; double sumArea = 0;
vector< const TCooTriple* > norms; 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 ( !norm1 || !sameDir( *norm1, norm2a->first ))
{ {
if ( !norms.empty() ) if ( !norms.empty() )

View File

@ -2731,7 +2731,7 @@ namespace
chn.back()->IsLinked( quad._eIntNodes[ iP ]->_intPoint )) chn.back()->IsLinked( quad._eIntNodes[ iP ]->_intPoint ))
{ {
chn.push_back( quad._eIntNodes[ iP ]); chn.push_back( quad._eIntNodes[ iP ]);
found = quad._eIntNodes[ iP ]->_usedInFace = &quad; found = ( quad._eIntNodes[ iP ]->_usedInFace = &quad );
break; break;
} }
} while ( found && ! chn.back()->IsLinked( n2->_intPoint ) ); } while ( found && ! chn.back()->IsLinked( n2->_intPoint ) );
@ -2823,7 +2823,7 @@ namespace
( !avoidFace || quad._eIntNodes[ iP ]->IsOnFace( avoidFace ))) ( !avoidFace || quad._eIntNodes[ iP ]->IsOnFace( avoidFace )))
{ {
chn.push_back( quad._eIntNodes[ iP ]); chn.push_back( quad._eIntNodes[ iP ]);
found = quad._eIntNodes[ iP ]->_usedInFace = &quad; found = ( quad._eIntNodes[ iP ]->_usedInFace = &quad );
break; break;
} }
} while ( found ); } while ( found );

View File

@ -62,9 +62,7 @@
#ifdef _DEBUG_ #ifdef _DEBUG_
// #define DEB_FACES // #define DEB_FACES
// #define DEB_GRID // #define DEB_GRID
// #define DUMP_VERT(msg,V) \ // #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; }
// { TopoDS_Vertex v = V; gp_Pnt p = BRep_Tool::Pnt(v); \
// cout << msg << "( "<< p.X()<<", "<<p.Y()<<", "<<p.Z()<<" )"<<endl;}
#endif #endif
#ifndef DUMP_VERT #ifndef DUMP_VERT
@ -1150,7 +1148,7 @@ bool _QuadFaceGrid::LoadGrid( SMESH_Mesh& mesh )
TIDSortedElemSet emptySet, avoidSet; TIDSortedElemSet emptySet, avoidSet;
const SMDS_MeshElement* firstQuad = 0; // most left face above the last row of found nodes 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() ) while ( nbFoundNodes != myGrid.size() )
{ {
// first and last nodes of the last filled row of nodes // first and last nodes of the last filled row of nodes

View File

@ -25,18 +25,18 @@
// Module : SMESH // Module : SMESH
// //
#include "StdMeshers_CompositeSegment_1D.hxx" #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_MeshElement.hxx"
#include "SMDS_MeshNode.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" #include "utilities.h"
@ -173,7 +173,7 @@ namespace {
// check if an edge is a part of a complex side // check if an edge is a part of a complex side
TopoDS_Face face; TopoDS_Face face;
TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() ); TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() );
auto_ptr< StdMeshers_FaceSide > side SMESHUtils::Deleter< StdMeshers_FaceSide > side
( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(), ( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(),
edge, face, false )); edge, face, false ));
if ( side->NbEdges() > 1 && side->NbSegments() ) 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 // check if an edge is a part of a complex side
TopoDS_Face face; TopoDS_Face face;
TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() ); 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 )); ( StdMeshers_CompositeSegment_1D::GetFaceSide( *subMesh->GetFather(), edge, face, false ));
if ( side->NbEdges() > 1 ) { // complex if ( side->NbEdges() > 1 ) { // complex
// set _alwaysComputed to vertices // set _alwaysComputed to vertices
for ( int iE = 1; iE < side->NbEdges(); ++iE ) 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 ); SMESH_subMesh* sm = side->GetMesh()->GetSubMesh( V );
sm->SetIsAlwaysComputed( true ); sm->SetIsAlwaysComputed( true );
} }
} }
} }
// set listener that will remove _alwaysComputed from submeshes at algorithm change // 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 ); 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 // Get edges to be discretized as a whole
TopoDS_Face nullFace; 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"); //side->dump("IN COMPOSITE SEG");
if ( side->NbEdges() < 2 ) if ( side->NbEdges() < 2 )
@ -384,7 +384,7 @@ bool StdMeshers_CompositeSegment_1D::Compute(SMESH_Mesh & aMesh,
} }
// Compute node parameters // Compute node parameters
auto_ptr< BRepAdaptor_CompCurve > C3d ( side->GetCurve3d() ); SMESHUtils::Deleter< BRepAdaptor_CompCurve > C3d ( side->GetCurve3d() );
double f = C3d->FirstParameter(), l = C3d->LastParameter(); double f = C3d->FirstParameter(), l = C3d->LastParameter();
list< double > params; list< double > params;
if ( !computeInternalParameters ( aMesh, *C3d, side->Length(), f, l, params, false )) if ( !computeInternalParameters ( aMesh, *C3d, side->Length(), f, l, params, false ))

View File

@ -504,8 +504,8 @@ bool StdMeshers_Hexa_3D::Compute(SMESH_Mesh & aMesh,
{ {
aCubeSide[i]._columns.resize( aCubeSide[i]._u2nodesMap.size() ); aCubeSide[i]._columns.resize( aCubeSide[i]._u2nodesMap.size() );
int iFwd = 0, iRev = aCubeSide[i]._columns.size()-1; size_t iFwd = 0, iRev = aCubeSide[i]._columns.size()-1;
int* pi = isReverse[i] ? &iRev : &iFwd; size_t* pi = isReverse[i] ? &iRev : &iFwd;
TParam2ColumnMap::iterator u2nn = aCubeSide[i]._u2nodesMap.begin(); TParam2ColumnMap::iterator u2nn = aCubeSide[i]._u2nodesMap.begin();
for ( ; iFwd < aCubeSide[i]._columns.size(); --iRev, ++iFwd, ++u2nn ) for ( ; iFwd < aCubeSide[i]._columns.size(); --iRev, ++iFwd, ++u2nn )
aCubeSide[i]._columns[ *pi ].swap( u2nn->second ); aCubeSide[i]._columns[ *pi ].swap( u2nn->second );

View File

@ -125,14 +125,14 @@ namespace
bool loaded=false) bool loaded=false)
{ {
vector<SMESH_Group*> okGroups; vector<SMESH_Group*> okGroups;
for ( int i = 0; i < groups.size(); ++i ) for ( size_t i = 0; i < groups.size(); ++i )
{ {
try try
{ {
// we expect SIGSEGV on a dead group // we expect SIGSEGV on a dead group
OCC_CATCH_SIGNALS; OCC_CATCH_SIGNALS;
SMESH_Group* okGroup = 0; 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++) for ( ; !okGroup && itm != studyContext->mapMesh.end(); itm++)
{ {
SMESH_Mesh::GroupIteratorPtr gIt = itm->second->GetGroups(); SMESH_Mesh::GroupIteratorPtr gIt = itm->second->GetGroups();
@ -174,7 +174,7 @@ namespace
{ {
int tgtID = resMapKey.second; int tgtID = resMapKey.second;
SMESH_Mesh* tgtMesh = 0; 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++) for ( ; !tgtMesh && itm != studyContext->mapMesh.end(); itm++)
{ {
tgtMesh = (*itm).second; tgtMesh = (*itm).second;
@ -250,7 +250,7 @@ std::vector<SMESH_Mesh*> StdMeshers_ImportSource1D::GetSourceMeshes() const
StudyContextStruct* studyContext = _gen->GetStudyContext(_studyId); StudyContextStruct* studyContext = _gen->GetStudyContext(_studyId);
for ( set<int>::iterator id = meshIDs.begin(); id != meshIDs.end(); ++id ) 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++) for ( ; itm != studyContext->mapMesh.end(); itm++)
{ {
SMESH_Mesh* mesh = (*itm).second; SMESH_Mesh* mesh = (*itm).second;
@ -394,7 +394,7 @@ void StdMeshers_ImportSource1D::RestoreGroups(const std::vector<SMESH_Group*>& g
_groups = groups; _groups = groups;
_resultGroups.clear(); _resultGroups.clear();
int i = 0; size_t i = 0;
while ( i < _resultGroupsStorage.size() ) while ( i < _resultGroupsStorage.size() )
{ {
int key1 = _resultGroupsStorage[i++]; int key1 = _resultGroupsStorage[i++];

View File

@ -79,23 +79,9 @@ using namespace std;
#define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; } #define RETURN_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); return false; }
#define CONT_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); continue; } #define CONT_BAD_RESULT(msg) { MESSAGE(")-: Error: " << msg); continue; }
#define SHOW_SHAPE(v,msg) \ #define SHOW_SHAPE(v,msg) \
// { \ // { 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;}\
// }
#define SHOW_LIST(msg,l) \ #define SHOW_LIST(msg,l) \
// { \ // { 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;\
// }
namespace HERE = StdMeshers_ProjectionUtils; namespace HERE = StdMeshers_ProjectionUtils;
@ -108,7 +94,24 @@ namespace {
return max(theMeshDS[0]->ShapeToIndex(S), theMeshDS[1]->ShapeToIndex(S) ); return max(theMeshDS[0]->ShapeToIndex(S), theMeshDS[1]->ShapeToIndex(S) );
return long(S.TShape().operator->()); 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 * \brief Write shape for debug purposes
@ -2180,7 +2183,7 @@ FindMatchingNodesOnFaces( const TopoDS_Face& face1,
static_cast<const SMDS_EdgePosition*>(node->GetPosition()); static_cast<const SMDS_EdgePosition*>(node->GetPosition());
pos2nodes.insert( make_pair( pos->GetUParameter(), node )); 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 " RETURN_BAD_RESULT("Equal params of nodes on edge "
<< smDS->ShapeToIndex( edge ) << " of face " << is2 ); << smDS->ShapeToIndex( edge ) << " of face " << is2 );
} }

View File

@ -423,15 +423,13 @@ namespace {
TAssocTool::TNodeNodeMap& src2tgtNodes, TAssocTool::TNodeNodeMap& src2tgtNodes,
bool& is1DComputed) bool& is1DComputed)
{ {
SMESHDS_Mesh* tgtMeshDS = tgtMesh->GetMeshDS();
SMESHDS_Mesh* srcMeshDS = srcMesh->GetMeshDS();
src2tgtNodes.clear(); src2tgtNodes.clear();
// get ordered src EDGEs // get ordered src EDGEs
TError err; TError err;
srcWires = StdMeshers_FaceSide::GetFaceWires( srcFace, *srcMesh,/*skipMediumNodes=*/0, err); srcWires = StdMeshers_FaceSide::GetFaceWires( srcFace, *srcMesh,/*skipMediumNodes=*/0, err);
if ( err && !err->IsOK() || srcWires.empty() ) if (( err && !err->IsOK() ) ||
( srcWires.empty() ))
return err; return err;
SMESH_MesherHelper srcHelper( *srcMesh ); SMESH_MesherHelper srcHelper( *srcMesh );
@ -591,7 +589,7 @@ namespace {
const double minSegLen = srcWires[iW]->Length() / totNbSeg; const double minSegLen = srcWires[iW]->Length() / totNbSeg;
for ( int iE = 0; iE < srcWires[iW]->NbEdges(); ++iE ) 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 srcU = srcWires[iW]->FirstParameter( iE );
double tgtU = tgtWires[iW]->FirstParameter( iE ); double tgtU = tgtWires[iW]->FirstParameter( iE );
double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg; double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg;
@ -830,7 +828,7 @@ namespace {
const double minSegLen = srcWires[iW]->Length() / totNbSeg; const double minSegLen = srcWires[iW]->Length() / totNbSeg;
for ( int iE = 0; iE < srcWires[iW]->NbEdges(); ++iE ) 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 srcU = srcWires[iW]->FirstParameter( iE );
double tgtU = tgtWires[iW]->FirstParameter( iE ); double tgtU = tgtWires[iW]->FirstParameter( iE );
double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg; double srcDu = ( srcWires[iW]->LastParameter( iE )- srcU ) / nbSeg;
@ -920,6 +918,7 @@ namespace {
tgtMeshDS->SetNodeOnVertex( n, TopoDS::Vertex( tgtV )); tgtMeshDS->SetNodeOnVertex( n, TopoDS::Vertex( tgtV ));
break; break;
} }
default:;
} }
srcN_tgtN->second = n; srcN_tgtN->second = n;
} }
@ -952,7 +951,7 @@ namespace {
{ {
SMESH_Mesh * tgtMesh = tgtWires[0]->GetMesh(); SMESH_Mesh * tgtMesh = tgtWires[0]->GetMesh();
SMESH_Mesh * srcMesh = srcWires[0]->GetMesh(); SMESH_Mesh * srcMesh = srcWires[0]->GetMesh();
SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS(); //SMESHDS_Mesh * tgtMeshDS = tgtMesh->GetMeshDS();
SMESHDS_Mesh * srcMeshDS = srcMesh->GetMeshDS(); SMESHDS_Mesh * srcMeshDS = srcMesh->GetMeshDS();
if ( srcWires[0]->NbEdges() != 4 ) if ( srcWires[0]->NbEdges() != 4 )

View File

@ -548,7 +548,7 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection (const gp_Pnt& P,
//SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); //SMESHDS_Mesh * meshDS = aMesh.GetMeshDS();
//cout<<" CheckIntersection: meshDS->NbFaces() = "<<meshDS->NbFaces()<<endl; //cout<<" CheckIntersection: meshDS->NbFaces() = "<<meshDS->NbFaces()<<endl;
bool res = false; bool res = false;
double dist = RealLast(); // find intersection closest to the segment double dist = RealLast(); // find intersection closest to the segment
gp_Pnt Pres; gp_Pnt Pres;
@ -556,9 +556,9 @@ bool StdMeshers_QuadToTriaAdaptor::CheckIntersection (const gp_Pnt& P,
vector< const SMDS_MeshElement* > suspectElems; vector< const SMDS_MeshElement* > suspectElems;
searcher->GetElementsNearLine( line, SMDSAbs_Face, 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; if ( face == NotCheckedFace ) continue;
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
for ( int i = 0; i < face->NbCornerNodes(); ++i ) 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) ) { if( HasIntersection(P, PC, Pres, aContour) ) {
res = true; res = true;
double tmp = PC.Distance(Pres); double tmp = PC.Distance(Pres);
if(tmp<dist) { if ( tmp < dist ) {
Pint = Pres; Pint = Pres;
dist = tmp; dist = tmp;
} }
@ -986,25 +986,25 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
vector< const SMDS_MeshElement* > suspectElems; vector< const SMDS_MeshElement* > suspectElems;
searcher->GetElementsNearLine( line, SMDSAbs_Face, 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]; const SMDS_MeshElement* F = suspectElems[iF];
if(F==face) continue; if ( F == face ) continue;
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
for ( int i = 0; i < 4; ++i ) for ( int i = 0; i < 4; ++i )
aContour->Append( SMESH_TNodeXYZ( F->GetNode(i) )); aContour->Append( SMESH_TNodeXYZ( F->GetNode(i) ));
gp_Pnt PPP; gp_Pnt PPP;
if( !volumes[0] && HasIntersection(Ptmp1, PC, PPP, aContour) ) { if ( !volumes[0] && HasIntersection( Ptmp1, PC, PPP, aContour )) {
IsOK1 = true; IsOK1 = true;
double tmp = PC.Distance(PPP); double tmp = PC.Distance(PPP);
if(tmp<dist1) { if ( tmp < dist1 ) {
Pres1 = PPP; Pres1 = PPP;
dist1 = tmp; dist1 = tmp;
} }
} }
if( !volumes[1] && HasIntersection(Ptmp2, PC, PPP, aContour) ) { if ( !volumes[1] && HasIntersection( Ptmp2, PC, PPP, aContour )) {
IsOK2 = true; IsOK2 = true;
double tmp = PC.Distance(PPP); double tmp = PC.Distance(PPP);
if(tmp<dist2) { if ( tmp < dist2 ) {
Pres2 = PPP; Pres2 = PPP;
dist2 = tmp; dist2 = tmp;
} }
@ -1044,7 +1044,7 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
gp_XYZ PCbest(0., 0., 0.); // pyramid peak gp_XYZ PCbest(0., 0., 0.); // pyramid peak
int i = 1; 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)); gp_Pnt Pbest = FindBestPoint(PN->Value(i), PN->Value(i+1), PC, VN->Value(i));
PCbest += Pbest.XYZ(); PCbest += Pbest.XYZ();
} }
@ -1074,10 +1074,10 @@ bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh)
vector< const SMDS_MeshElement* > suspectElems; vector< const SMDS_MeshElement* > suspectElems;
searcher->GetElementsNearLine( line, SMDSAbs_Face, 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]; const SMDS_MeshElement* F = suspectElems[iF];
if(F==face) continue; if ( F == face ) continue;
Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt;
int nbN = F->NbNodes() / ( F->IsQuadratic() ? 2 : 1 ); int nbN = F->NbNodes() / ( F->IsQuadratic() ? 2 : 1 );
for ( i = 0; i < nbN; ++i ) for ( i = 0; i < nbN; ++i )
@ -1162,7 +1162,8 @@ bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh&
return true; return true;
SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); 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; if ( myElemSearcher ) delete myElemSearcher;
myElemSearcher = SMESH_MeshAlgos::GetElementSearcher( *meshDS ); myElemSearcher = SMESH_MeshAlgos::GetElementSearcher( *meshDS );

View File

@ -598,7 +598,6 @@ bool StdMeshers_RadialPrism_3D::Evaluate(SMESH_Mesh& aMesh,
bool StdMeshers_RadialPrism_3D::IsApplicable( const TopoDS_Shape & aShape, bool toCheckAll ) bool StdMeshers_RadialPrism_3D::IsApplicable( const TopoDS_Shape & aShape, bool toCheckAll )
{ {
bool isCurShellApp;
int nbFoundSolids = 0; int nbFoundSolids = 0;
for (TopExp_Explorer exp( aShape, TopAbs_SOLID ); exp.More(); exp.Next(), ++nbFoundSolids ) for (TopExp_Explorer exp( aShape, TopAbs_SOLID ); exp.More(); exp.Next(), ++nbFoundSolids )
{ {

View File

@ -343,9 +343,9 @@ bool StdMeshers_Regular_1D::CheckHypothesis( SMESH_Mesh& aMesh,
return ( aStatus == SMESH_Hypothesis::HYP_OK ); return ( aStatus == SMESH_Hypothesis::HYP_OK );
} }
static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last, static bool computeParamByFunc(Adaptor3d_Curve& C3d,
double length, bool theReverse, double first, double last, double length,
int nbSeg, Function& func, bool theReverse, int nbSeg, Function& func,
list<double>& theParams) list<double>& theParams)
{ {
// never do this way // never do this way
@ -359,31 +359,23 @@ static bool computeParamByFunc(Adaptor3d_Curve& C3d, double first, double last,
int nbPnt = 1 + nbSeg; int nbPnt = 1 + nbSeg;
vector<double> x(nbPnt, 0.); 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; 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 // apply parameters in range [0,1] to the space of the curve
double prevU = first; double prevU = first;
double sign = 1.; double sign = 1.;
if (theReverse) if ( theReverse )
{ {
prevU = last; 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; 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() ) if ( !Discret.IsDone() )
return false; return false;
double U = Discret.Parameter(); double U = Discret.Parameter();

View File

@ -88,7 +88,7 @@ SMESH::double_array* StdMeshers_NumberOfSegments_i::BuildDistributionExpr( const
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()->BuildDistributionExpr( func, nbSeg, conv ); const std::vector<double>& res = this->GetImpl()->BuildDistributionExpr( func, nbSeg, conv );
aRes->length( res.size() ); 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]; aRes[i] = res[i];
return aRes._retn(); 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, SMESH::double_array*
CORBA::Long nbSeg, StdMeshers_NumberOfSegments_i::BuildDistributionTab( const SMESH::double_array& func,
CORBA::Long conv ) CORBA::Long nbSeg,
CORBA::Long conv )
throw ( SALOME::SALOME_Exception ) throw ( SALOME::SALOME_Exception )
{ {
ASSERT( myBaseImpl ); ASSERT( myBaseImpl );
std::vector<double> tbl( func.length() ); 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]; tbl[i] = func[i];
try 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 ); const std::vector<double>& res = this->GetImpl()->BuildDistributionTab( tbl, nbSeg, conv );
aRes->length( res.size() ); 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]; aRes[i] = res[i];
return aRes._retn(); return aRes._retn();
} }
@ -251,7 +252,7 @@ SMESH::long_array* StdMeshers_NumberOfSegments_i::GetReversedEdges()
SMESH::long_array_var anArray = new SMESH::long_array; SMESH::long_array_var anArray = new SMESH::long_array;
std::vector<int> ids = this->GetImpl()->GetReversedEdges(); std::vector<int> ids = this->GetImpl()->GetReversedEdges();
anArray->length( ids.size() ); 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 ]; anArray [ i ] = ids [ i ];
return anArray._retn(); return anArray._retn();
@ -348,7 +349,7 @@ void StdMeshers_NumberOfSegments_i::SetTableFunction(const SMESH::double_array&
{ {
ASSERT( myBaseImpl ); ASSERT( myBaseImpl );
std::vector<double> tbl( table.length() ); 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]; tbl[i] = table[i];
try { try {
this->GetImpl()->SetTableFunction( tbl ); this->GetImpl()->SetTableFunction( tbl );
@ -375,12 +376,11 @@ SMESH::double_array* StdMeshers_NumberOfSegments_i::GetTableFunction()
tbl = &this->GetImpl()->GetTableFunction(); tbl = &this->GetImpl()->GetTableFunction();
} }
catch ( SALOME_Exception& S_ex ) { catch ( SALOME_Exception& S_ex ) {
THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM );
SALOME::BAD_PARAM );
} }
SMESH::double_array_var aRes = new SMESH::double_array(); SMESH::double_array_var aRes = new SMESH::double_array();
aRes->length(tbl->size()); 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]; aRes[i] = (*tbl)[i];
return aRes._retn(); return aRes._retn();
} }