diff --git a/doc/salome/examples/3dmesh.py b/doc/salome/examples/3dmesh.py
index 57a1440e0..665534d80 100644
--- a/doc/salome/examples/3dmesh.py
+++ b/doc/salome/examples/3dmesh.py
@@ -1,4 +1,4 @@
-# 3d mesh generation
+# 3d mesh generation and mesh exploration
import salome
salome.salome_init()
@@ -76,3 +76,20 @@ tetra.Compute()
# Create a mesh group of all triangles generated on geom faces present in faces_group
group = tetra.Group(faces_group)
+
+###
+# Explore the mesh
+###
+
+# Retrieve coordinates of nodes
+coordStr = ""
+for node in tetra.GetNodesId():
+ x,y,z = tetra.GetNodeXYZ( node )
+ coordStr += "%s (%s, %s, %s) " % ( node, x,y,z )
+ pass
+
+# Retrieve nodal connectivity of triangles
+triaStr = ""
+for tria in tetra.GetElementsByType( SMESH.FACE ):
+ nodes = tetra.GetElemNodes( tria )
+ triaStr += "%s (%s, %s, %s) " % ( tria, nodes[0], nodes[1], nodes[2] )
diff --git a/doc/salome/examples/filters_ex01.py b/doc/salome/examples/filters_ex01.py
index 7de1cd33a..812e94288 100644
--- a/doc/salome/examples/filters_ex01.py
+++ b/doc/salome/examples/filters_ex01.py
@@ -38,3 +38,7 @@ print "MESH: Min aspect = %s, Max aspect = %s" % ( aspects[0], aspects[1] )
# get max value of Aspect Ratio of faces in triaGroup
grAspects = mesh.GetMinMax( SMESH.FT_AspectRatio, triaGroup )
print "GROUP: Max aspect = %s" % grAspects[1]
+
+# get Aspect Ratio of an element
+aspect = mesh.FunctorValue( SMESH.FT_AspectRatio, ids[0] )
+print "Aspect ratio of the face %s = %s" % ( ids[0], aspect )
diff --git a/doc/salome/examples/grouping_elements_ex01.py b/doc/salome/examples/grouping_elements_ex01.py
index 9181e43df..4016a8359 100644
--- a/doc/salome/examples/grouping_elements_ex01.py
+++ b/doc/salome/examples/grouping_elements_ex01.py
@@ -40,7 +40,7 @@ print "size", aGroup.Size()
print "is empty", aGroup.IsEmpty()
# check of presence of an entity in the group
-aGroup.Add([1,2]) # method specific to the standalone group
+aGroup.Add([1,2]) # Add() method is specific to the standalone group
print "contains node 2", aGroup.Contains(2)
# get an entity by index
diff --git a/doc/salome/gui/SMESH/input/smeshpy_interface.doc b/doc/salome/gui/SMESH/input/smeshpy_interface.doc
index 92bd2f41d..bbb287f2f 100644
--- a/doc/salome/gui/SMESH/input/smeshpy_interface.doc
+++ b/doc/salome/gui/SMESH/input/smeshpy_interface.doc
@@ -18,7 +18,7 @@ in the \ref smeshBuilder and \ref StdMeshersBuilder Python packages.
Class \ref smeshBuilder.smeshBuilder "smeshBuilder" provides an interface to create and handle
meshes. It can be used to create an empty mesh or to import mesh from the data file.
-As soon as mesh is created, it is possible to manage it via its own
+As soon as a mesh is created, it is possible to manage it via its own
methods, described in class \ref smeshBuilder.Mesh "Mesh" documentation.
Class \ref smeshstudytools.SMeshStudyTools "SMeshStudyTools" provides several methods to manipulate mesh objects in Salome study.
@@ -57,7 +57,7 @@ A usual workflow to generate a mesh on geometry is following:
\ref Mesh.Compute "mesh.Compute"()
-
+
An easiest way to start with Python scripting is to do something in
@@ -68,7 +68,8 @@ by calling \a dir() Python built-in function.
All methods of the Mesh Group can be found in \ref tui_create_standalone_group sample script.
-An example below demonstrates usage of the Python API for 3d mesh generation.
+An example below demonstrates usage of the Python API for 3d mesh
+generation and for retrieving information on mesh nodes and elements.
\anchor example_3d_mesh
Example of 3d mesh generation:
diff --git a/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.doc b/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.doc
index 569d821a9..ddd1658a7 100644
--- a/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.doc
+++ b/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.doc
@@ -4,16 +4,23 @@
It is sometimes useful to work alternatively in the GUI of SALOME and in the Python Console. To fetch an object from the TUI simply type:
-\code
-myMesh_ref = salome.IDToObject("ID")
-// were ID is the string looking like "0:1:2:3" that appears in the object browser in the Entry column
-// ( If hidden show it by right clicking and checking the checkbox Entry)
+\code{.py}
+myMesh_ref = salome.IDToObject( ID )
+# were ID is a string looking like "0:1:2:3" that appears in the Object Browser in the Entry column.
+# ( If hidden, show it by right clicking and checking the checkbox Entry )
myMesh = smesh.Mesh(myMesh_ref)
\endcode
or
-\code
+\code{.py}
myMesh_ref = salome.myStudy.FindObjectByPath("/Mesh/myMesh").GetObject()
-// "/Mesh/myMesh" is the path to the desired object in the object browser
+#'/Mesh/myMesh' is a path to the desired object in the Object Browser
+myMesh = smesh.Mesh(myMesh_ref)
+\endcode
+or
+\code{.py}
+# get a selected mesh
+from salome.gui import helper
+myMesh_ref = helper.getSObjectSelected()[0].GetObject()
myMesh = smesh.Mesh(myMesh_ref)
\endcode
diff --git a/src/Controls/SMESH_Controls.cxx b/src/Controls/SMESH_Controls.cxx
index e4efffe41..f14444d58 100644
--- a/src/Controls/SMESH_Controls.cxx
+++ b/src/Controls/SMESH_Controls.cxx
@@ -1869,7 +1869,7 @@ void Length2D::GetValues(TValues& theValues)
}
else {
SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
- long aNodeId[2];
+ long aNodeId[2] = {0,0};
gp_Pnt P[3];
double aLength;
diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx
index e4f2bda00..5969649c0 100644
--- a/src/SMESH/SMESH_MeshEditor.cxx
+++ b/src/SMESH/SMESH_MeshEditor.cxx
@@ -2124,7 +2124,7 @@ namespace
// No adjacent prisms. Select a variant with a best aspect ratio.
- double badness[2] = { 0, 0 };
+ double badness[2] = { 0., 0. };
static SMESH::Controls::NumericalFunctorPtr aspectRatio( new SMESH::Controls::AspectRatio);
const SMDS_MeshNode** nodes = vol.GetNodes();
for ( int variant = 0; variant < nbVariants; ++variant )
diff --git a/src/SMESH/SMESH_Pattern.cxx b/src/SMESH/SMESH_Pattern.cxx
index f38622a34..c317869bc 100644
--- a/src/SMESH/SMESH_Pattern.cxx
+++ b/src/SMESH/SMESH_Pattern.cxx
@@ -660,7 +660,7 @@ bool SMESH_Pattern::Load (SMESH_Mesh* theMesh,
const TopoDS_Vertex v = TopoDS::Vertex( vExp.Current() );
gp_Pnt2d uv = BRep_Tool::Parameters( v, face );
double minDist = DBL_MAX;
- int index;
+ int index = 0;
vector< TPoint >::const_iterator pVecIt = myPoints.begin();
for ( iPoint = 0; pVecIt != myPoints.end(); pVecIt++, iPoint++ ) {
double dist = uv.SquareDistance( (*pVecIt).myInitUV );
diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.cxx b/src/SMESHGUI/SMESHGUI_MeshOp.cxx
index 33472f937..b6c534369 100644
--- a/src/SMESHGUI/SMESHGUI_MeshOp.cxx
+++ b/src/SMESHGUI/SMESHGUI_MeshOp.cxx
@@ -2726,7 +2726,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
}
else
{
- HypothesisData* anCurrentAlgo;
+ HypothesisData* anCurrentAlgo = 0;
bool isReqDisBound = true;
QString anCurrentCompareType = anCompareType;
isNone = currentHyp( aDim, Algo ) < 0;
diff --git a/src/StdMeshers/StdMeshers_Penta_3D.cxx b/src/StdMeshers/StdMeshers_Penta_3D.cxx
index 8a852edb9..6b4ca9b05 100644
--- a/src/StdMeshers/StdMeshers_Penta_3D.cxx
+++ b/src/StdMeshers/StdMeshers_Penta_3D.cxx
@@ -360,7 +360,7 @@ void StdMeshers_Penta_3D::MakeNodes()
// set XYZ on horizontal edges and get node columns of faces:
// 2 columns for each face, between which a base node is located
vector* nColumns[8];
- double ratio[ NB_WALL_FACES ]; // base node position between columns [0.-1.]
+ double ratio[ NB_WALL_FACES ] = {0,0,0,0}; // base node position between columns [0.-1.]
if ( createNode ) {
for ( k = 0; k < NB_WALL_FACES ; ++k ) {
ratio[ k ] = SetHorizEdgeXYZ (aBNXYZ, wallFaceID[ k ],
diff --git a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
index 955fc1147..e9e6ad827 100644
--- a/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
+++ b/src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
@@ -3300,7 +3300,7 @@ bool StdMeshers_Quadrangle_2D::computeReduced (SMESH_Mesh & aMesh,
UVPtStruct nullUVPtStruct;
nullUVPtStruct.node = 0;
- nullUVPtStruct.x = nullUVPtStruct.y = nullUVPtStruct.u = nullUVPtStruct.y = 0;
+ nullUVPtStruct.x = nullUVPtStruct.y = nullUVPtStruct.u = nullUVPtStruct.v = 0;
nullUVPtStruct.param = 0;
diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx
index 1b4e6ab04..9ee7df1c9 100644
--- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx
+++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx
@@ -94,7 +94,7 @@
#include
#ifdef _DEBUG_
-#define __myDEBUG
+//#define __myDEBUG
//#define __NOT_INVALIDATE_BAD_SMOOTH
#endif
diff --git a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx
index 4e78b7157..cd91c7391 100644
--- a/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx
+++ b/src/StdMeshers/StdMeshers_ViscousLayers2D.cxx
@@ -300,7 +300,7 @@ namespace VISCOUS_2D
double _D; // _vec1.Crossed( _vec2 )
double _param1, _param2; // intersection param on _seg1 and _seg2
- _SegmentIntersection(): _param1(0), _param2(0), _D(0) {}
+ _SegmentIntersection(): _D(0), _param1(0), _param2(0) {}
bool Compute(const _Segment& seg1, const _Segment& seg2, bool seg2IsRay = false )
{
@@ -562,7 +562,7 @@ void StdMeshers_ViscousLayers2D::SetProxyMeshOfEdge( const StdMeshers_FaceSide&
// --------------------------------------------------------------------------------
bool StdMeshers_ViscousLayers2D::HasProxyMesh( const TopoDS_Face& face, SMESH_Mesh& mesh )
{
- return VISCOUS_2D::_ProxyMeshHolder::FindProxyMeshOfFace( face, mesh );
+ return VISCOUS_2D::_ProxyMeshHolder::FindProxyMeshOfFace( face, mesh ).get();
}
// --------------------------------------------------------------------------------
SMESH_ComputeErrorPtr